@Override public boolean canEvaluate(FunctionExpression input, List<Expression> parameters) { for (LessFunction function : functions) { if (function.canEvaluate(input, parameters)) return true; } return false; }
@Override public Expression evaluate(FunctionExpression input, List<Expression> parameters, Expression evaluatedParameter) { for (LessFunction function : functions) { if (function.canEvaluate(input, parameters)) { FunctionExpression inputClone = input.clone(); List<Expression> parametersClone = ArraysUtils.deeplyClonedList(parameters); Expression evaluatedParameterClone = evaluatedParameter.clone(); return fixResult(function.evaluate(inputClone, parametersClone, evaluatedParameterClone, new SafeLessProblem(problemsHandler, inputClone)), input); } } return new FaultyExpression(input); }