in junit-platform-commons/src/main/java/org/junit/platform/commons/util/ReflectionUtils.java [1059:1078]
private static void detectInnerClassCycle(Class<?> clazz) {
Preconditions.notNull(clazz, "Class must not be null");
String className = clazz.getName();
if (noCyclesDetectedCache.contains(className)) {
return;
}
Class<?> superclass = clazz.getSuperclass();
if (isInnerClass(clazz) && isSearchable(superclass)) {
for (Class<?> enclosing = clazz.getEnclosingClass(); enclosing != null; enclosing = enclosing.getEnclosingClass()) {
if (superclass.equals(enclosing)) {
throw new JUnitException(String.format("Detected cycle in inner class hierarchy between %s and %s",
className, enclosing.getName()));
}
}
}
noCyclesDetectedCache.add(className);
}