code: private static Method getAccessibleMethodFromInterfaceNest
              (Class<?> clazz, String methodName, Class<?>[] parameterTypes) {
  
          Method method = null;
  
          // Search up the superclass chain
          for (; clazz != null; clazz = clazz.getSuperclass()) {
  
              // Check the implemented interfaces of the parent class
              Class<?>[] interfaces = clazz.getInterfaces();
              for (int i = 0; i < interfaces.length; i++) {
  
                  // Is this interface public?
                  if (!Modifier.isPublic(interfaces[i].getModifiers())) {
                      continue;
                  }
  
                  // Does the method exist on this interface?
                  try {
                      method = interfaces[i].getDeclaredMethod(methodName,
                              parameterTypes);
                  } catch (NoSuchMethodException e) {
                      /* Swallow, if no method is found after the loop then this
                       * method returns null.
                       */
                  }
                  if (method != null) {
                      return method;
                  }
  
                  // Recursively check our parent interfaces
                  method =
                          getAccessibleMethodFromInterfaceNest(interfaces[i],
                                  methodName,
                                  parameterTypes);
                  if (method != null) {
                      return method;
                  }
  
              }
  
          }
  
          // We did not find anything
          return (null);
      }
docs: <p>Return an accessible method (that is, one that can be invoked via
  reflection) that implements the specified method, by scanning through
  all implemented interfaces and subinterfaces.  If no such method
  can be found, return <code>null</code>.</p>
  
  <p> There isn't any good reason why this method must be private.
  It is because there doesn't seem any reason why other classes should
  call this rather than the higher level methods.</p>
  
  @param clazz Parent class for the interfaces to be checked
  @param methodName Method name of the method we wish to call
  @param parameterTypes The parameter type signatures