mvvmfx/src/main/java/de/saxsys/mvvmfx/internal/viewloader/ReflectionUtils.java
public static List<Field> getFieldsFromClassHierarchy(Class<?> type) {
		
		final List<Field> classFields = new ArrayList<>();
		classFields.addAll(Arrays.asList(type.getDeclaredFields()));
		final Class<?> parentClass = type.getSuperclass();
		
		if (parentClass != null && !(parentClass.equals(Object.class))) {
			List<Field> parentClassFields = getFieldsFromClassHierarchy(parentClass);
			classFields.addAll(parentClassFields);
		}
		
		return classFields;
	}
public static List<Field> getFieldsFromClassHierarchy(Class<?> type) {
		
		final List<Field> classFields = new ArrayList<>();
		classFields.addAll(Arrays.asList(type.getDeclaredFields()));
		final Class<?> parentClass = type.getSuperclass();
		
		if (parentClass != null && !(parentClass.equals(Object.class))) {
			List<Field> parentClassFields = getFieldsFromClassHierarchy(parentClass);
			classFields.addAll(parentClassFields);
		}
		
		return classFields;
	}
Returns all fields of the given type and all parent types (except Object).
<br>
The difference to {@link Class#getFields()} is that getFields only returns public fields while this method will
return all fields whatever the access modifier is.
<br>

The difference to {@link Class#getDeclaredFields()} is that getDeclaredFields returns all fields (with all
modifiers) from the given class but not from super classes. This method instead will return all fields of all
modifiers from all super classes up in the class hierarchy, except from Object itself.

@param type the type whose fields will be searched.
@return a list of field instances.