@wburns and then we'd load all classes by reflection? Not following what you're proposing :-)

mind you a circular dependency is only troublesome at source level, don't confuse it with runtime.
What this essentially gets you is that both modules have full visibility on each other: as they where a single module.

The difference with having indeed a single module is that Query is optional and could be left out, other than that you could think of it as being a single jar.
Also, Query adds additional dependencies if activated.