// Recurse!
addExpression(expr.getLeft(), qd);
addExpression(expr.getRight(), qd);
} else if (expr instanceof InvokeExpression) {
// InvokeExpression that return boolean
InvokeExpression invokeExpr = ((InvokeExpression) expr);
if (invokeExpr.getOperation().equals("contains") && invokeExpr.getArguments().size() == 1) {
handleContainsOperation(invokeExpr, qd);
}else if (invokeExpr.getOperation().equals("startsWith") && invokeExpr.getArguments().size() == 1) {
handleStartsWithOperation(invokeExpr, qd);
} else if (invokeExpr.getOperation().equals("matches")) {
handleMatchesOperation(invokeExpr, qd);
} else {
throw newUnsupportedQueryMethodException(invokeExpr);
}
} else if (expr instanceof VariableExpression) {