public static void forEachField(final Object object, Class<?> clazz, final FieldPredicate predicate, final FieldAction action) {
        forEachSuperClass(clazz, clazzAction -> {
            for ( Field field : clazzAction.getDeclaredFields() ) {
                if ( predicate.isTrue(field) ) {
                    action.act(object, field);
                }
            }
        });
    }
Iterates over all fields of the given class and all its super classes
and calls action.act() for the fields that are annotated with the given annotation.
jgiven-core/src/main/java/com/tngtech/jgiven/impl/util/ReflectionUtil.java