docs: @Override
      public void stop() throws UnsupportedOperationException {
          if (!canBeStopped()) {
              throw new UnsupportedOperationException("Stop not supported");
          }
          setupLinkedLockIfNeeds();
          synchronized (linkedLock) {
              if (linkedThread != null && !isStopped()) {
                  registerStoppedAsTrue();
                  if (isPaused()) {
                      resume();
                  }
                  invokeNotifyExecutionStopping();
                  linkedThread.interrupt();
              }
          }
          // no wait to avoid deadlock of LaScheduledJob's lock between stopNow() thread and job thread
          // in the first place, no need to wait thread ending here because stop is only request (no guarantee of stop)
          //if (joinit) {
          //    do {
          //        try {
          //            thread.join();
          //            break;
          //        } catch (InterruptedException e) {
          //            continue;
          //        }
          //    } while (true);
          //    thread = null;
          //}
      }