In Java, I would do this:
new Search().equal(Search.NAME,"Joe")
.between(Search.AGE,18,25)
.go();
Just as concise with less voodoo. And it's a single statement.With the existing method, you can still ditch the empty parens by using public final fields. You just have to pre-populate them all with respective grammar objects.