docs: public synchronized Lease acquire(@Nonnull FilePath p, boolean quick, Object context) throws InterruptedException {
          Entry e;
  
          Thread t = Thread.currentThread();
          String oldName = t.getName();
          t.setName("Waiting to acquire "+p+" : "+t.getName());
          try {
              while (true) {
                  e = inUse.get(p.getRemote());
                  if (e==null || e.context==context)
                      break;
                  wait();
              }
          } finally {
              t.setName(oldName);
          }
          if (LOGGER.isLoggable(Level.FINE)) {
              LOGGER.log(Level.FINE, "acquired " + p + (e == null ? "" : " with lock count " + e.lockCount), new Throwable("from " + this));
          }
          
          if (e!=null)    e.lockCount++;
          else            inUse.put(p.getRemote(), new Entry(p,quick,context));
          return lease(p);
      }