private static void disallowedListAnnotation(Class<? extends Annotation> annotationType) {
        if (!knownCyclicAnnotationTypes.add(annotationType)) {
            return;
        }

        if (logger.isDebugEnabled()) {
            final String typeName = annotationType.getName();
            final Class<?>[] ifaces = annotationType.getInterfaces();
            final List<String> ifaceNames;
            if (ifaces.length != 0) {
                ifaceNames = Arrays.stream(ifaces)
                                   .filter(Class::isAnnotation)
                                   .map(Class::getName)
                                   .collect(toImmutableList());
            } else {
                ifaceNames = ImmutableList.of();
            }

            if (ifaceNames.isEmpty()) {
                logger.debug("Disallowed listing an annotation with a cyclic reference: {}", typeName);
            } else {
                logger.debug("Disallowed listing an annotation with a cyclic reference: {}{}",
                             typeName, ifaceNames);
            }
        }
    }
Returns all annotations searching from the specified {@code element}. The search range depends on
the specified {@link FindOption}s and the specified {@code collectingFilter} decides whether
an annotation is collected or not.

@param element the {@link AnnotatedElement} to find annotations
@param findOptions the options to be applied when retrieving annotations
@param collectingFilter the predicate which decides whether the annotation is to be collected or not
core/src/main/java/com/linecorp/armeria/internal/server/annotation/AnnotationUtil.java