Since this interface represents a kind of algorithm, rather than its result, let's call it MatchingAlgorithm?