docs: protected OptionalThing<RunnerResult> stopConcurrentJobIfNeeds(Cron4jJob job) { // in preparing lock
          synchronized (runningState) {
              final OptionalThing<RunnerResult> concurrentResult = createConcurrentJobStopper().stopIfNeeds(job, () -> {
                  return runningState.getBeginTime().get().toString(); // locked so can get safely
              });
              if (concurrentResult.isPresent()) {
                  return concurrentResult;
              }
              // will wait for previous job by synchronization later
          }
          return OptionalThing.empty();
      }