code: private Object findAndGetFieldValueInHierarchy(Object instance) {
  		Class<?> clazz = instance.getClass();
  		String fieldname = theField.getName();
  		String searchName = typeDescriptor.getName().replace('/', '.');
  		while (clazz != null && !clazz.getName().equals(searchName)) {
  			clazz = clazz.getSuperclass();
  		}
  		if (clazz == null) {
  			throw new IllegalStateException("Failed to find " + searchName + " in hierarchy of " + instance.getClass());
  		}
  		try {
  			Field f = clazz.getDeclaredField(fieldname);
  			f.setAccessible(true);
  			return f.get(instance);
  		}
  		catch (Exception e) {
  			throw new IllegalStateException("Unexpectedly could not access field named " + fieldname + " on class "
  					+ clazz.getName());
  		}
  	}
docs: Walk up the instance hierarchy looking for the field, and when it is found access it and return the result. Will
  exit via exception if it cannot find the field or something goes wrong when accessing it.
  
  @param instance the object instance upon which the field is being accessed
  @return the value of the field