docs: public void schedule(SimpleTimerTask task, final long time) {
      if (time < 0) {
        throw new IllegalArgumentException("Illegal execution time.");
      }
      if (!task.schedule()) {
        throw new IllegalStateException("Task already scheduled or cancelled");
      }
      task.executionTime = time;
      lock.lock();
      try {
        if (!thread.newTasksMayBeScheduled)
          throw new IllegalStateException("Timer already cancelled.");
        queue.add(task);
        if (queue.getMin() == task) {
          condition.signal();
          if (reachedJob != null) {
            clock.schedule(reachedJob, time);
          }
        }
      } finally {
        lock.unlock();
      }
    }