code: private static boolean isResolvedTypeMatch(
  			Method genericMethod, Method candidateMethod, Class<?> declaringClass) {
  		Type[] genericParameters = genericMethod.getGenericParameterTypes();
  		Class<?>[] candidateParameters = candidateMethod.getParameterTypes();
  		if (genericParameters.length != candidateParameters.length) {
  			return false;
  		}
  		for (int i = 0; i < candidateParameters.length; i++) {
  			ResolvableType genericParameter = ResolvableType.forMethodParameter(genericMethod, i, declaringClass);
  			Class<?> candidateParameter = candidateParameters[i];
  			if (candidateParameter.isArray()) {
  				// An array type: compare the component type.
  				if (!candidateParameter.getComponentType().equals(genericParameter.getComponentType().resolve(Object.class))) {
  					return false;
  				}
  			}
  			// A non-array type: compare the type itself.
  			if (!candidateParameter.equals(genericParameter.resolve(Object.class))) {
  				return false;
  			}
  		}
  		return true;
  	}
docs: Returns {@code true} if the {@link Type} signature of both the supplied
  {@link Method#getGenericParameterTypes() generic Method} and concrete {@link Method}
  are equal after resolving all types against the declaringType, otherwise
  returns {@code false}.