private static List findAllFieldsInHierarchy()

in junit-platform-commons/src/main/java/org/junit/platform/commons/util/ReflectionUtils.java [1158:1185]


	private static List<Field> findAllFieldsInHierarchy(Class<?> clazz, HierarchyTraversalMode traversalMode) {
		Preconditions.notNull(clazz, "Class must not be null");
		Preconditions.notNull(traversalMode, "HierarchyTraversalMode must not be null");

		// @formatter:off
		List<Field> localFields = getDeclaredFields(clazz).stream()
				.filter(field -> !field.isSynthetic())
				.collect(toList());
		List<Field> superclassFields = getSuperclassFields(clazz, traversalMode).stream()
				.filter(field -> !isFieldShadowedByLocalFields(field, localFields))
				.collect(toList());
		List<Field> interfaceFields = getInterfaceFields(clazz, traversalMode).stream()
				.filter(field -> !isFieldShadowedByLocalFields(field, localFields))
				.collect(toList());
		// @formatter:on

		List<Field> fields = new ArrayList<>();
		if (traversalMode == TOP_DOWN) {
			fields.addAll(superclassFields);
			fields.addAll(interfaceFields);
		}
		fields.addAll(localFields);
		if (traversalMode == BOTTOM_UP) {
			fields.addAll(interfaceFields);
			fields.addAll(superclassFields);
		}
		return fields;
	}