code: public Collection<Lease> acquire(int qty) throws Exception
      {
          Preconditions.checkArgument(qty > 0, "qty cannot be 0");
  
          ImmutableList.Builder<Lease>    builder = ImmutableList.builder();
          try
          {
              while ( qty-- > 0 )
              {
                  String      path = internals.attemptLock(-1, null, null);
                  builder.add(makeLease(path));
              }
          }
          catch ( Exception e )
          {
              ThreadUtils.checkInterrupted(e);
              returnAll(builder.build());
              throw e;
          }
          return builder.build();
      }
docs: <p>Acquire <code>qty</code> leases. If there are not enough leases available, this method
  blocks until either the maximum number of leases is increased enough or other clients/processes
  close enough leases.</p>
  
  <p>The client must close the leases when it is done with them. You should do this in a
  <code>finally</code> block. NOTE: You can use {@link #returnAll(Collection)} for this.</p>
  
  @param qty number of leases to acquire
  @return the new leases
  @throws Exception ZK errors, interruptions, etc.