code: @SuppressWarnings("GoodTime") // should accept a java.time.Duration
    public boolean waitForUninterruptibly(Guard guard, long time, TimeUnit unit) {
      final long timeoutNanos = toSafeNanos(time, unit);
      if (!((guard.monitor == this) & lock.isHeldByCurrentThread())) {
        throw new IllegalMonitorStateException();
      }
      if (guard.isSatisfied()) {
        return true;
      }
      boolean signalBeforeWaiting = true;
      final long startTime = initNanoTime(timeoutNanos);
      boolean interrupted = Thread.interrupted();
      try {
        for (long remainingNanos = timeoutNanos; ; ) {
          try {
            return awaitNanos(guard, remainingNanos, signalBeforeWaiting);
          } catch (InterruptedException interrupt) {
            interrupted = true;
            if (guard.isSatisfied()) {
              return true;
            }
            signalBeforeWaiting = false;
            remainingNanos = remainingNanos(startTime, timeoutNanos);
          }
        }
      } finally {
        if (interrupted) {
          Thread.currentThread().interrupt();
        }
      }
    }
docs: Waits for the guard to be satisfied. Waits at most the given time. May be called only by a
  thread currently occupying this monitor.
  
  @return whether the guard is now satisfied