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