org_apache_dubbo_spring_boot_env_DubboDefaultPropertiesEnvironmentPostProcessorTest_java
org.springframework.core.annotation.AnnotationUtils
private static <A extends Annotation> A findAnnotation(Class<?> clazz, Class<A> annotationType, Set<Annotation> visited) {
        try {
            Annotation[] anns;
            for (Annotation ann : anns = clazz.getDeclaredAnnotations()) {
                if (ann.annotationType() != annotationType) continue;
                return (A)ann;
            }
            Annotation[] annotationArray = anns;
            int n = annotationArray.length;
            for (int i = 0; i < n; ++i) {
                A annotation;
                Annotation ann;
                ann = annotationArray[i];
                if (AnnotationUtils.isInJavaLangAnnotationPackage(ann) || !visited.add(ann) || (annotation = AnnotationUtils.findAnnotation(ann.annotationType(), annotationType, visited)) == null) continue;
                return annotation;
            }
        }
        catch (Throwable ex) {
            AnnotationUtils.handleIntrospectionFailure(clazz, ex);
            return null;
        }
        for (Class<?> ifc : clazz.getInterfaces()) {
            A annotation = AnnotationUtils.findAnnotation(ifc, annotationType, visited);
            if (annotation == null) continue;
            return annotation;
        }
        Class<?> superclass = clazz.getSuperclass();
        if (superclass == null || Object.class == superclass) {
            return null;
        }
        return AnnotationUtils.findAnnotation(superclass, annotationType, visited);
    }
 -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] -> java.lang.Class.getInterfaces(): java.lang.Class[] -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] -> java.lang.Class.getInterfaces(): java.lang.Class[] -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] -> java.lang.Class.getInterfaces(): java.lang.Class[] -> java.lang.Class.getSuperclass(): java.lang.Class -> java.lang.Class.getSuperclass(): java.lang.Class -> java.lang.Class.getSuperclass(): java.lang.Class
 [CALL] -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] -> java.lang.Class.getInterfaces(): java.lang.Class[] [CALL] -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] -> java.lang.Class.getInterfaces(): java.lang.Class[] [CALL] -> java.lang.Class.getDeclaredAnnotations(): java.lang.annotation.Annotation[] -> java.lang.Class.getInterfaces(): java.lang.Class[] -> java.lang.Class.getSuperclass(): java.lang.Class [EXIT] -> java.lang.Class.getSuperclass(): java.lang.Class [EXIT] -> java.lang.Class.getSuperclass(): java.lang.Class [EXIT]