code: public void waitForUninterruptibly(Guard guard) {
      if (!((guard.monitor == this) & lock.isHeldByCurrentThread())) {
        throw new IllegalMonitorStateException();
      }
      if (!guard.isSatisfied()) {
        awaitUninterruptibly(guard, true);
      }
    }
docs: Waits for the guard to be satisfied. Waits indefinitely. May be called only by a thread
  currently occupying this monitor.