code: public void start(final long waitTime) throws CouldNotPerformException {
          try {
              internal_start(waitTime);
          } catch (CouldNotPerformException | RejectedExecutionException ex) {
              if (ex instanceof RejectedExecutionException && GlobalScheduledExecutorService.getInstance().getExecutorService().isShutdown()) {
                  throw new ShutdownInProgressException("GlobalScheduledExecutorService");
              }
              throw new CouldNotPerformException("Could not start " + this, ex);
          }
      }
docs: Start the timeout with the given wait time. The default wait time is not modified and still the same as before.
  
  @param waitTime The time to wait until the timeout is reached.
  
  @throws CouldNotPerformException is thrown in case the timeout could not be started.
  @throws ShutdownInProgressException is thrown in case the the system is currently shutting down.