class AeQa implements Qa<Float, StaticColor> {

    @Override
    public TransientOperation<Float, StaticColor> evaluate(final BufferedImage left, final BufferedImage right) {
        // Check size
        CheckEqualSizePreprocessor equalSize = new CheckEqualSizePreprocessor(left, right);
        equalSize.process();
        equalSize = null;

        // Run metric
        AEMetric metric;
        if (threshold == null) {
            metric = new AEMetric(new SRGBColorConverter(new ConvenientBufferedImageWrapper(left)),
                                  new SRGBColorConverter(new ConvenientBufferedImageWrapper(right)), new Point(0, 0),
                                  new Point(left.getWidth(), left.getHeight()));
        } else {
            metric = new AEMetric(new SRGBColorConverter(new ConvenientBufferedImageWrapper(left)),
                                  new SRGBColorConverter(new ConvenientBufferedImageWrapper(right)), threshold,
                                  new Point(0, 0), new Point(left.getWidth(), left.getHeight()));
        }

        // Evaluate
        return metric.execute();
    }

    public  AeQa();

}