protected static Map<String, EvaluatorWrapper> buildOperators(RuleBuildContext context, Pattern pattern, PredicateDescr predicateDescr, Map<String, OperatorDescr> aliases) { Map<String, EvaluatorWrapper> operators = new HashMap<String, EvaluatorWrapper>(); for ( Map.Entry<String, OperatorDescr> entry : aliases.entrySet() ) { OperatorDescr op = entry.getValue(); Declaration leftDecl = createDeclarationForOperator(context, pattern, op.getLeftString()); Declaration rightDecl = createDeclarationForOperator(context, pattern, op.getRightString()); Target left = leftDecl != null && leftDecl.isPatternDeclaration() ? Target.HANDLE : Target.FACT; Target right = rightDecl != null && rightDecl.isPatternDeclaration() ? Target.HANDLE : Target.FACT; op.setLeftIsHandle( left == Target.HANDLE ); op.setRightIsHandle( right == Target.HANDLE ); Evaluator evaluator = getConstraintBuilder( context ).getEvaluator( context, predicateDescr, ValueType.OBJECT_TYPE, op.getOperator(), false, // the rewrite takes care of negation op.getParametersText(), left, right); EvaluatorWrapper wrapper = getConstraintBuilder( context ).wrapEvaluator( evaluator, leftDecl, rightDecl ); operators.put( entry.getKey(), wrapper ); } return operators; }