code: static Method findMethod(Class<?> clazz, String methodName,
              Class<?>[] paramTypes, Object[] paramValues) {
  
          if (clazz == null || methodName == null) {
              throw new MethodNotFoundException(
                      message(null, "util.method.notfound", clazz, methodName,
                      paramString(paramTypes)));
          }
  
          if (paramTypes == null) {
              paramTypes = getTypesFromValues(paramValues);
          }
  
          Method[] methods = clazz.getMethods();
  
          List<Wrapper> wrappers = Wrapper.wrap(clazz, methods, methodName);
  
          Wrapper result = findWrapper(
                  clazz, wrappers, methodName, paramTypes, paramValues);
  
          if (result == null) {
              return null;
          }
          return getMethod(clazz, (Method) result.unWrap());
      }
docs: /*
  This method duplicates code in org.apache.el.util.ReflectionUtil. When
  making changes keep the code in sync.