code: public static Method getMethod(String methodName, Class<?> clazz, Class<?>... parameterTypes) {
          if (clazz == null) {
              return null;
          }
          Method m = getDeclaredMethod(methodName, clazz, parameterTypes);
          if (m == null) {
              List<Class<?>> interfacesAndSuperClasses = new LinkedList<>();
              interfacesAndSuperClasses.add(clazz.getSuperclass());
              for (Class<?> cl : clazz.getInterfaces()) {
                  interfacesAndSuperClasses.add(cl);
              }
              for (Class<?> cl : interfacesAndSuperClasses) {
                  m = getMethod(methodName, cl, parameterTypes);
                  if (m != null) {
                      return m;
                  }
              }
              return null;
          } else {
              return m;
          }
      }
docs: Get a class' method by name. Return {@code null} if no such method found.
  
  <p>
  This method can get private and protected methods.
  </p>
  
  <p>
  This method can get methods from super classes/interfaces.
  </p>
  
  @param methodName
  @param clazz
  @param parameterTypes
  @return
  @since 0.9.1.4