public static void invokeMethod(Object object, Method method, String errorDescription) {
        log.debug("Executing method %s of class %s", method, object.getClass());

        makeAccessible(method, errorDescription);

        try {
            method.invoke(object);
        } catch ( IllegalArgumentException e ) {
            log.debug("Caught exception:", e);
            throw new JGivenExecutionException("Could not execute " + toReadableString(method) + errorDescription +
                    ", because it requires parameters. " + "Remove the parameters and try again.", e);
        } catch ( IllegalAccessException e ) {
            log.debug("Caught exception:", e);
            throw new JGivenExecutionException("Could not execute " + toReadableString(method) + errorDescription +
                    ", because of insuffient access rights. "
                    + "Either make the method public or disable your security manager while executing JGiven tests.", e);
        } catch ( InvocationTargetException e ) {
            throw new JGivenUserException(method, errorDescription, e.getCause());
        }
    }
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