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