I found the following comparison on your Examples page :
Use the DSL API when:
* You want your code to look like SQL
* You want your IDE to help you with auto-completion (you will not
be able to write select .. order by .. where .. join or any of that
stuff)
Use the regular API when:
* You want to create your query step-by-step, creating query parts
one-by-one
* You need to assemble your query from various places, passing the
query around, adding new conditions and joins on the way
Why do you restrict the DSL API to a builder approach? It could easily
work also in incremental fashion.
The separation adds some unnecessary complexity.
I am just throwing some suggestions, because I have come across
similar design decisions.