Source:
<code>private static <C, R> R processClassHierarchy(C context, int[] aggregateIndex, Class<?> source, AnnotationsProcessor<C, R> processor, @Nullable BiPredicate<C, Class<?>> classFilter, boolean includeInterfaces, boolean includeEnclosing) { R result = processor.doWithAggregate(context, aggregateIndex[0]); if (result != null) { return result; } if (hasPlainJavaAnnotationsOnly(source)) { return null; } Annotation[] annotations = getDeclaredAnnotations(context, source, classFilter, false); result = processor.doWithAnnotations(context, aggregateIndex[0], source, annotations); if (result != null) { return result; } aggregateIndex[0]++; if (includeInterfaces) { for (Class<?> interfaceType : source.getInterfaces()) { R interfacesResult = processClassHierarchy(context, aggregateIndex, interfaceType, processor, classFilter, true, includeEnclosing); if (interfacesResult != null) { return interfacesResult; } } } Class<?> superclass = source.getSuperclass(); if (superclass != Object.class && superclass != null) { R superclassResult = processClassHierarchy(context, aggregateIndex, superclass, processor, classFilter, includeInterfaces, includeEnclosing); if (superclassResult != null) { return superclassResult; } } Class<?> enclosingClass = source.getEnclosingClass(); if (includeEnclosing && enclosingClass != null) { R enclosingResult = processClassHierarchy(context, aggregateIndex, enclosingClass, processor, classFilter, includeInterfaces, true); <START> return enclosingResult; <END> } return null; }</code><technical_language>this technically equivalent, breaks structure of rest of method. such, I do change is warranted. So, please revert this change</technical_language>

Target:
private static <C, R> R processClassHierarchy(C context, int[] aggregateIndex, Class<?> source, AnnotationsProcessor<C, R> processor, @Nullable BiPredicate<C, Class<?>> classFilter, boolean includeInterfaces, boolean includeEnclosing) { R result = processor.doWithAggregate(context, aggregateIndex[0]); if (result != null) { return result; } if (hasPlainJavaAnnotationsOnly(source)) { return null; } Annotation[] annotations = getDeclaredAnnotations(context, source, classFilter, false); result = processor.doWithAnnotations(context, aggregateIndex[0], source, annotations); if (result != null) { return result; } aggregateIndex[0]++; if (includeInterfaces) { for (Class<?> interfaceType : source.getInterfaces()) { R interfacesResult = processClassHierarchy(context, aggregateIndex, interfaceType, processor, classFilter, true, includeEnclosing); if (interfacesResult != null) { return interfacesResult; } } } Class<?> superclass = source.getSuperclass(); if (superclass != Object.class && superclass != null) { R superclassResult = processClassHierarchy(context, aggregateIndex, superclass, processor, classFilter, includeInterfaces, includeEnclosing); if (superclassResult != null) { return superclassResult; } } Class<?> enclosingClass = source.getEnclosingClass(); if (includeEnclosing && enclosingClass != null) { R enclosingResult = processClassHierarchy(context, aggregateIndex, enclosingClass, processor, classFilter, includeInterfaces, true); if (enclosingResult != null) { return enclosingResult; } } return null; }