docs: private static void inspectRecursively(Class<?> c, List<Method> s, Class<? extends Annotation> annotationType) {
  
        for (Method m : c.getDeclaredMethods()) {
           // don't bother if this method has already been overridden by a subclass
           if (notFound(m, s) && m.isAnnotationPresent(annotationType)) {
              s.add(m);
           }
        }
  
        if (!c.equals(Object.class)) {
           if (!c.isInterface()) {
              inspectRecursively(c.getSuperclass(), s, annotationType);
           }
           for (Class<?> ifc : c.getInterfaces()) inspectRecursively(ifc, s, annotationType);
        }
     }