At the moment the only way to define a predicate targeting a nested field is using a NestedPredicateFieldStep.
Hence we need to wrap the predicate on the target field with a:
for each nested object we reach traversing the very targeting path.
We could instead allowing users to define such a query without worrying about the fact that a field may or may not be contained in a nested object. As we already do for nested sort and nested projection.
We won't remove the nested API, leaving to the user the chance to use the old/explicit syntax.
Because the explicit syntax could be useful for supporting advanced stuff, such as local filtering on child/parent join and so on and so forth...