Complete refactoring of the method that decides pushing predicates