protected OptionalThing<CrossVMState> crossVMBeginning(Cron4jJob job) {
        return jobRunner.getCrossVMHook().map(hook -> {
            final Method hookMethod = findHookMethod(hook, "hookBeginning");
            arrangeHookThreadCacheContext();
            jobRunner.getAccessContextArranger().ifPresent(arranger -> { // for DB control
                arrangeHookPreparedAccessContext(arranger, hook, hookMethod, job);
            });
            arrangeHookCallbackContext(hook, hookMethod, job);
            try {
                showCrossVMBeginning(job, hook);
                return hook.hookBeginning(job, runningState.getBeginTime().get()); // already begun here
            } finally {
                clearHookCallbackContext();
                clearHookPreparedAccessContext();
                clearHookThreadCacheContext();
            }
        });
    }
protected OptionalThing < CrossVMState > crossVMBeginning ( Cron4jJob job ) { return jobRunner . getCrossVMHook ( ) . map ( hook -> { final Method hookMethod = findHookMethod ( hook , "hookBeginning" ) ; arrangeHookThreadCacheContext ( ) ; jobRunner . getAccessContextArranger ( ) . ifPresent ( arranger -> { arrangeHookPreparedAccessContext ( arranger , hook , hookMethod , job ) ; } ) ; arrangeHookCallbackContext ( hook , hookMethod , job ) ; try { showCrossVMBeginning ( job , hook ) ; return hook . hookBeginning ( job , runningState . getBeginTime ( ) . get ( ) ) ; } finally { clearHookCallbackContext ( ) ; clearHookPreparedAccessContext ( ) ; clearHookThreadCacheContext ( ) ; } } ) ; }
-------