docs: protected final boolean checkRequiredAnnotations(Class<?> controllerClazz, Method actionMethod) {
          List<Class<? extends Annotation>> requiredAnnotations = getRequiredAnnotationClasses();
          if (requiredAnnotations == null || requiredAnnotations.size() == 0) {
              return true;
          }
          for (Class<? extends Annotation> requiredAnnotation : requiredAnnotations) {
              if (requiredAnnotation == null) {
                  continue;
              }
              BitSet scopeSet = getAnnotationScope(requiredAnnotation);
              if (scopeSet.get(AnnotationScope.METHOD.ordinal())) {
                  if (actionMethod.isAnnotationPresent(requiredAnnotation)) {
                      return checkAnnotation(actionMethod.getAnnotation(requiredAnnotation));
                  }
              }
              if (scopeSet.get(AnnotationScope.CLASS.ordinal())) {
                  if (controllerClazz.isAnnotationPresent(requiredAnnotation)) {
                      return checkAnnotation(actionMethod.getAnnotation(requiredAnnotation));
                  }
              }
              if (scopeSet.get(AnnotationScope.ANNOTATION.ordinal())) {
                  for (Annotation annotation : actionMethod.getAnnotations()) {
                      if (annotation.annotationType().isAnnotationPresent(requiredAnnotation)) {
                          return checkAnnotation(actionMethod.getAnnotation(requiredAnnotation));
                      }
                  }
                  for (Annotation annotation : controllerClazz.getAnnotations()) {
                      if (annotation.annotationType().isAnnotationPresent(requiredAnnotation)) {
                          return checkAnnotation(actionMethod.getAnnotation(requiredAnnotation));
                      }
                  }
              }
          }
          return false;
      }