code: private final Result lockForUpgradeInterruptibly_(L locker) throws InterruptedException {
          if (Thread.interrupted()) {
              throw new InterruptedException();
          }
          Result result;
          if ((result = tryLockForUpgrade_(locker)) == Result.FAILED) {
              result = lockForUpgradeQueuedInterruptibly(locker, addUpgradeWaiter());
          }
          return result;
      }
docs: Acquire an upgrade lock, possibly blocking until interrupted.
  
  @param locker object trying to become lock owner
  @return ACQUIRED or OWNED