docs: public static void sleepFor(long sleepTime, TimeUnit unit) throws InterruptedException
    {
      if (Thread.interrupted()) {
        throw new InterruptedException();
      }
      if (sleepTime <= 0) {
        return;
      }
      long sleepTimeLimitNanos = System.nanoTime() + unit.toNanos(sleepTime);
      while (true) {
        long sleepTimeoutNanos = sleepTimeLimitNanos - System.nanoTime();
        if (sleepTimeoutNanos <= 0) {
          return;
        }
        LockSupport.parkNanos(sleepTimeoutNanos);
        if (Thread.interrupted()) {
          throw new InterruptedException();
        }
      }
    }