in junit-platform-commons/src/main/java/org/junit/platform/commons/util/ReflectionUtils.java [1013:1042]
private static void findNestedClasses(Class<?> clazz, Predicate<Class<?>> predicate, Set<Class<?>> candidates) {
if (!isSearchable(clazz)) {
return;
}
if (isInnerClass(clazz) && predicate.test(clazz)) {
detectInnerClassCycle(clazz);
}
try {
// Candidates in current class
for (Class<?> nestedClass : clazz.getDeclaredClasses()) {
if (predicate.test(nestedClass)) {
detectInnerClassCycle(nestedClass);
candidates.add(nestedClass);
}
}
}
catch (NoClassDefFoundError error) {
logger.debug(error, () -> "Failed to retrieve declared classes for " + clazz.getName());
}
// Search class hierarchy
findNestedClasses(clazz.getSuperclass(), predicate, candidates);
// Search interface hierarchy
for (Class<?> ifc : clazz.getInterfaces()) {
findNestedClasses(ifc, predicate, candidates);
}
}