code: public static Method getAccessibleMethod(Class<?> clazz, String methodName, Class<?>[] paramTypes) {
          MethodDescriptor md = new MethodDescriptor(clazz, methodName, paramTypes, true);
          Method[] result = cache.get(md);
          if (result == null) {
              try {
                  Method method = getAccessibleMethod(clazz.getMethod(methodName, paramTypes));
                  result = new Method[] { method };
              } catch (NoSuchMethodException e) {
                  result = NO_METHODS;
              }
              cache.put(md, result);
          }
          return (result.length > 0 ? result[0] : null);
      }
docs: <p>Return an accessible method (that is, one that can be invoked via
  reflection) with given name and parameters.  If no such method
  can be found, return {@code null}.
  This is just a convenient wrapper for
  {@link #getAccessibleMethod(Method method)}.</p>
  
  @param clazz get method from this class
  @param methodName get method with this name
  @param paramTypes with these parameters types
  @return the accessible method