/**
  * Acquires the lock unless the current thread is {@link Thread#interrupt interrupted}.
  *
  * <p>Acquires the lock if it is not held by another thread and returns immediately, setting the
  * lock hold count to one.
  *
  * <p>If the current thread already holds this lock then the hold count is incremented by one and
  * the method returns immediately.
  *
  * <p>If the lock is held by another thread then the current thread becomes disabled for thread
  * scheduling purposes and lies dormant until one of two things happens:
  *
  * <ul>
  *   <li>The lock is acquired by the current thread; or
  *   <li>Some other thread {@link Thread#interrupt interrupts} the current thread.
  * </ul>
  *
  * <p>If the lock is acquired by the current thread then the lock hold count is set to one.
  *
  * <p>If the current thread:
  *
  * <ul>
  *   <li>has its interrupted status set on entry to this method; or
  *   <li>is {@link Thread#interrupt interrupted} while acquiring the lock,
  * </ul>
  *
  * then {@link InterruptedException} is thrown and the current thread's interrupted status is
  * cleared.
  *
  * <p>In this implementation, as this method is an explicit interruption point, preference is
  * given to responding to the interrupt over normal or reentrant acquisition of the lock.
  *
  * @throws InterruptedException if the current thread is interrupted
  */
 public void lockInterruptibly() throws InterruptedException {
   sync.lockInterruptibly();
 }