public static MethodMatcher of(String methodMatcher) { final Matcher matcher = METHOD_MATCHER_PATTERN.matcher(methodMatcher); if (!matcher.matches()) { throw new IllegalArgumentException("'" + methodMatcher + "'" + " is not a valid method matcher"); } final String modifier = matcher.group(2); final WildcardMatcher clazz = caseSensitiveMatcher(matcher.group(3)); final WildcardMatcher method = matcher.group(5) != null ? caseSensitiveMatcher(matcher.group(5)) : WildcardMatcher.matchAll(); final List<WildcardMatcher> args = getArgumentMatchers(matcher.group(6)); return new MethodMatcher(methodMatcher, getModifier(modifier), clazz, method, args); }