public static Method getWholeMethodFlexibly(Class<?> clazz, String methodName, Class<?>[] argTypes) {
        assertObjectNotNull("clazz", clazz);
        assertStringNotNullAndNotTrimmedEmpty("methodName", methodName);
        return findMethod(clazz, methodName, argTypes, VisibilityType.WHOLE, true);
    }
public static Method getWholeMethodFlexibly ( Class < ? > clazz , String methodName , Class < ? > [ ] argTypes ) { assertObjectNotNull ( "clazz" , clazz ) ; assertStringNotNullAndNotTrimmedEmpty ( "methodName" , methodName ) ; return findMethod ( clazz , methodName , argTypes , VisibilityType . WHOLE , true ) ; }
Get the method in whole methods that means as follows:
<pre>
o target class's methods = all
o superclass's methods   = all (also contains private)
</pre>
And it has the flexibly searching so you can specify types of sub-class to argTypes. <br>
But if overload methods exist, it returns the first-found method. <br>
And no cache so you should cache it yourself if you call several times.
@param clazz The type of class that defines the method. (NotNull)
@param methodName The name of method. (NotNull)
@param argTypes The type of argument. (NotNull)
@return The instance of method. (NullAllowed: if null, not found)