code: boolean lockInterruptibly(final Integer permit, final long timeout, final TimeUnit unit) throws InterruptedException {
          if (permit == null) {
              throw new IllegalArgumentException();
          }
          return sync.tryAcquireNanos(permit, unit.toNanos(timeout));
      }
docs: Acquire the exclusive lock, with a max wait timeout to acquire.
  @param permit - the permit Integer for this operation. May not be {@code null}.
  @param timeout - the timeout scalar quantity.
  @param unit - see {@code TimeUnit} for quantities.
  @return {@code boolean} true on successful acquire.
  @throws InterruptedException - if the acquiring thread was interrupted.
  @throws IllegalArgumentException if {@code permit} is null.