public static <T> T newInstance(Class<T> type, Class<?>[] parameterTypes, Object... parameterValues) {
        try {
            Constructor<T> constructor = type.getDeclaredConstructor(parameterTypes);
            constructor.setAccessible(true);
            return constructor.newInstance(parameterValues);
        } catch ( InstantiationException| IllegalAccessException | NoSuchMethodException | InvocationTargetException e ) {
            throw new RuntimeException(e);
        }
    }
Iterates over all super classes of the given class (including the class itself)
and calls action.act() for these classes.
jgiven-core/src/main/java/com/tngtech/jgiven/impl/util/ReflectionUtil.java