2 main problems - The "what to do when absent matching" is hard-coded in the base class - the matching is not reifyable, and hence given a set of matchers, you cannot determine if there are input that is not covered by the matchers.