code: public static Method findMethod(Class<?> clazz, String name, Class<?>... paramTypes) {
          AssertUtils.notNull(clazz, "Class must not be null");
          AssertUtils.notNull(name, "Method name must not be null");
          Class<?> searchType = clazz;
          while (searchType != null) {
              Method[] methods = (searchType.isInterface() ? searchType.getMethods() : searchType.getDeclaredMethods());
              for (Method method : methods) {
                  if (name.equals(method.getName()) &&
                          (paramTypes == null || Arrays.equals(paramTypes, method.getParameterTypes()))) {
                      return method;
                  }
              }
              searchType = searchType.getSuperclass();
          }
          return null;
      }
docs: Attempt to find a {@link Method} on the supplied class with the supplied name
  and parameter types. Searches all superclasses up to {@code Object}.
  <p>Returns {@code null} if no {@link Method} can be found.
  
  @param clazz      the class to introspect
  @param name       the name of the method
  @param paramTypes the parameter types of the method
  (may be {@code null} to indicate any signature)
  @return the Method object, or {@code null} if none found