added AbstractPatternMatcher