com_baeldung_springbootmvc_SpringBootMvcApplicationIntegrationTest_java
org.springframework.boot.autoconfigure.ImportAutoConfigurationImportSelector
private void collectAnnotations(Class<?> source, MultiValueMap<Class<?>, Annotation> annotations, HashSet<Class<?>> seen) {
        if (source != null && seen.add(source)) {
            for (Annotation annotation : source.getDeclaredAnnotations()) {
                if (AnnotationUtils.isInJavaLangAnnotationPackage(annotation)) continue;
                if (ANNOTATION_NAMES.contains(annotation.annotationType().getName())) {
                    annotations.add(source, annotation);
                }
                this.collectAnnotations(annotation.annotationType(), annotations, seen);
            }
            this.collectAnnotations(source.getSuperclass(), annotations, seen);
        }
    }
 -> java.util.HashSet.add(java.lang.Object): boolean -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.lang.Class.getName(): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.util.HashSet.add(java.lang.Object): boolean -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.Class.getSuperclass(): java.lang.Class -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.lang.Class.getName(): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.util.HashSet.add(java.lang.Object): boolean -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.lang.Class.getName(): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.util.HashSet.add(java.lang.Object): boolean -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.Class.getSuperclass(): java.lang.Class -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.lang.Class.getName(): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.util.HashSet.add(java.lang.Object): boolean -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.lang.Class.getName(): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.util.HashSet.add(java.lang.Object): boolean -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.Class.getSuperclass(): java.lang.Class -> java.lang.Class.getSuperclass(): java.lang.Class -> java.lang.Class.getSuperclass(): java.lang.Class -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.lang.Class.getName(): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.util.HashSet.add(java.lang.Object): boolean -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.lang.Class.getName(): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean -> java.util.Map.computeIfAbsent(java.lang.Object,java.util.function.Function): java.lang.Object -> java.util.List.add(java.lang.Object): boolean -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.util.HashSet.add(java.lang.Object): boolean -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.lang.Class.getName(): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.util.HashSet.add(java.lang.Object): boolean -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.Class.getSuperclass(): java.lang.Class -> java.lang.Class.getSuperclass(): java.lang.Class -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.lang.Class.getName(): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.util.HashSet.add(java.lang.Object): boolean -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.Class.getSuperclass(): java.lang.Class -> java.lang.Class.getSuperclass(): java.lang.Class -> java.lang.Class.getSuperclass(): java.lang.Class -> java.util.HashSet.add(java.lang.Object): boolean -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] -> java.lang.Class.getSuperclass(): java.lang.Class
 [CALL] -> java.util.HashSet.add(java.lang.Object): boolean -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.lang.Class.getName(): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean -> java.lang.annotation.Annotation.annotationType(): java.lang.Class [CALL] -> java.util.HashSet.add(java.lang.Object): boolean -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] -> java.lang.Class.getSuperclass(): java.lang.Class [CALL] [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.lang.Class.getName(): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean -> java.lang.annotation.Annotation.annotationType(): java.lang.Class [CALL] -> java.util.HashSet.add(java.lang.Object): boolean -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.lang.Class.getName(): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean -> java.lang.annotation.Annotation.annotationType(): java.lang.Class [CALL] -> java.util.HashSet.add(java.lang.Object): boolean -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] -> java.lang.Class.getSuperclass(): java.lang.Class [CALL] [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.lang.Class.getName(): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean -> java.lang.annotation.Annotation.annotationType(): java.lang.Class [CALL] -> java.util.HashSet.add(java.lang.Object): boolean -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.lang.Class.getName(): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean -> java.lang.annotation.Annotation.annotationType(): java.lang.Class [CALL] -> java.util.HashSet.add(java.lang.Object): boolean -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] -> java.lang.Class.getSuperclass(): java.lang.Class [CALL] [EXIT] [EXIT] -> java.lang.Class.getSuperclass(): java.lang.Class [CALL] [EXIT] [EXIT] -> java.lang.Class.getSuperclass(): java.lang.Class [CALL] [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.lang.Class.getName(): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean -> java.lang.annotation.Annotation.annotationType(): java.lang.Class [CALL] -> java.util.HashSet.add(java.lang.Object): boolean -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.lang.Class.getName(): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean [CALL] -> java.util.Map.computeIfAbsent(java.lang.Object,java.util.function.Function): java.lang.Object [CALL] [EXIT] -> java.util.List.add(java.lang.Object): boolean [EXIT] -> java.lang.annotation.Annotation.annotationType(): java.lang.Class [CALL] -> java.util.HashSet.add(java.lang.Object): boolean -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.lang.Class.getName(): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean -> java.lang.annotation.Annotation.annotationType(): java.lang.Class [CALL] -> java.util.HashSet.add(java.lang.Object): boolean -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] -> java.lang.Class.getSuperclass(): java.lang.Class [CALL] [EXIT] [EXIT] -> java.lang.Class.getSuperclass(): java.lang.Class [CALL] [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] -> java.lang.annotation.Annotation.annotationType(): java.lang.Class -> java.lang.Class.getName(): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean -> java.lang.annotation.Annotation.annotationType(): java.lang.Class [CALL] -> java.util.HashSet.add(java.lang.Object): boolean -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean [EXIT] [EXIT] -> java.lang.Class.getSuperclass(): java.lang.Class [CALL] [EXIT] [EXIT] -> java.lang.Class.getSuperclass(): java.lang.Class [CALL] [EXIT] [EXIT] -> java.lang.Class.getSuperclass(): java.lang.Class [CALL] -> java.util.HashSet.add(java.lang.Object): boolean -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] -> java.lang.Class.getSuperclass(): java.lang.Class [CALL] [EXIT] [EXIT] [EXIT]