// single group
return doCreateOperatorExpression(expression, matcher.group(2), matcher.group(3), matcher.group(4));
} else {
// dual group with an and/or operator between the two groups
final Expression first = doCreateOperatorExpression(expression, matcher.group(2), matcher.group(3), matcher.group(4));
final SimpleLangaugeOperator operator = asOperator(operatorText);
final Expression last = doCreateOperatorExpression(expression, matcher.group(8), matcher.group(9), matcher.group(10));
// create a compound predicate to combine the two groups with the operator
final Predicate compoundPredicate;
if (operator == AND) {