private static void findNestedClasses()

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