docs: public Collection<Lease> acquire(int qty, long time, TimeUnit unit) throws Exception
      {
          long                startMs = System.currentTimeMillis();
          long                waitMs = TimeUnit.MILLISECONDS.convert(time, unit);
  
          Preconditions.checkArgument(qty > 0, "qty cannot be 0");
  
          ImmutableList.Builder<Lease>    builder = ImmutableList.builder();
          try
          {
              while ( qty-- > 0 )
              {
                  long        elapsedMs = System.currentTimeMillis() - startMs;
                  long        thisWaitMs = waitMs - elapsedMs;
  
                  String      path = (thisWaitMs > 0) ? internals.attemptLock(thisWaitMs, TimeUnit.MILLISECONDS, null) : null;
                  if ( path == null )
                  {
                      returnAll(builder.build());
                      return null;
                  }
                  builder.add(makeLease(path));
              }
          }
          catch ( Exception e )
          {
              ThreadUtils.checkInterrupted(e);
              returnAll(builder.build());
              throw e;
          }
  
          return builder.build();
      }