docs: public boolean tryAcquire(int permits, long timeout, TimeUnit unit) {
      long timeoutMicros = unit.toMicros(timeout);
      checkPermits(permits);
      long microsToWait;
      long nowMicros = readSafeMicros();
      if (nextFreeTicketMicros > nowMicros + timeoutMicros) {
        return false;
      } else {
        microsToWait = reserveNextTicket(permits, nowMicros);
      }
      ticker.sleepMicrosUninterruptibly(microsToWait);
      return true;
    }