PredicateMatcher might be a better name (functional is pretty vague)