code: public static List<Method> getAnnotatedMethods(final Class<?> cls, final Class<? extends Annotation> annotationClass) {
          final List<Method> methodList = new ArrayList<>();
  
          // Retrieve annotation even when they are wrapped into OnWaves
          for (final Method m : cls.getDeclaredMethods()) {
              if (m.getAnnotationsByType(annotationClass).length > 0) {
                  methodList.add(m);
              }
          }
  
          // Add implemented interfaces methods
          for (final Class<?> i : cls.getInterfaces()) {
              methodList.addAll(getAnnotatedMethods(i, annotationClass));
          }
  
          // Add super class methods
          if (cls.getSuperclass() != null) {
              methodList.addAll(getAnnotatedMethods(cls.getSuperclass(), annotationClass));
          }
  
          return methodList;
      }
docs: Retrieve all annotation of the given type from the given class.
  
  @param cls the class that we want to inspect
  @param annotationClass the type of Annotation to find
  
  @return the list of annotated method