docs: private boolean waitForPermission(final long nanosToWait) {
          waitingThreads.incrementAndGet();
          long deadline = currentNanoTime() + nanosToWait;
          boolean wasInterrupted = false;
          while (currentNanoTime() < deadline && !wasInterrupted) {
              long sleepBlockDuration = deadline - currentNanoTime();
              parkNanos(sleepBlockDuration);
              wasInterrupted = Thread.interrupted();
          }
          waitingThreads.decrementAndGet();
          if (wasInterrupted) {
              currentThread().interrupt();
          }
          return !wasInterrupted;
      }