docs: public boolean waitFor(Condition condition, long timeout, TimeUnit unit) {
          boolean    intr=false;
          final long timeout_ns=TimeUnit.NANOSECONDS.convert(timeout, unit);
          lock.lock();
          try {
              for(long wait_time=timeout_ns, start=System.nanoTime(); wait_time > 0 && !condition.isMet();) {
                  try {
                      wait_time=cond.awaitNanos(wait_time);
                  }
                  catch(InterruptedException e) {
                      wait_time=timeout_ns - (System.nanoTime() - start);
                      intr=true;
                  }
              }
              return condition.isMet();
          }
          finally {
              lock.unlock();
              if(intr) Thread.currentThread().interrupt();
          }
      }