Ensure predicates are applied during matching

Currently null checks are done separately, which is inconsistent.
Normalizing this behaviour for 2.0