code: @GuardedBy("lock")
    private boolean isSatisfied(Guard guard) {
      try {
        return guard.isSatisfied();
      } catch (Throwable throwable) {
        signalAllWaiters();
        throw throwable;
      }
    }
docs: Exactly like guard.isSatisfied(), but in addition signals all waiting threads in the (hopefully
  unlikely) event that isSatisfied() throws.