protected boolean doesMatch(RuleEvaluation evaluation) {
        Object left=null;
        Object right=null;
        boolean matches=false;
        Choicepoint  choicepoint=evaluation.getChoicepoint(this,true);
        try {
            matches=getLeftCondition().matches(evaluation);
            if (!matches) return false;

            left=evaluation.getValue();
            evaluation.setValue(null);

            choicepoint.backtrackPosition();
            matches=getRightCondition().matches(evaluation);
            if (!matches) return false;

            right=evaluation.getValue();
            evaluation.setValue(right);
            matches=operator.compare(left,right);
            return matches;
        }
        finally {
            if (!matches)
                choicepoint.backtrack();
            traceResult(matches,evaluation,left,right);
        }
    }
A condition which is true of the <i>values</i> of its two subconditions are true
and both have the same value

@author bratseth
container-search/src/main/java/com/yahoo/prelude/semantics/rule/ComparisonCondition.java