List<Class<?>> allClasses = resolveAllClasses(clazz);
for (Class<?> c : allClasses) {
Field[] fields = c.getDeclaredFields();
for (Field field : fields) {
try {
fieldCallback.doWith(field);
} catch (IllegalAccessException ex) {
throw new IllegalStateException(
"Shouldn't be illegal to access field '"
+ field.getName() + "': " + ex);
}