private static void detectInnerClassCycle()

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);
	}