Usually memoization uses a variable name that matches the method name -- mind using `@predicate_matches` here?