QueryBuilder has generics, but those are never used: all call sites use `QueryBuilder<?>`. Only `AbstractQueryBuilder` needs generics so that the base class can contain a default implementation for setters that returns `this`.