m_reservableMutex.wait();
m_reservableMutex.wait(1000);
  public List reserveAll() {    final List result;    final List reserveList;    synchronized (m_reservableListMutex) {      purgeZombieResources();      result = new ArrayList(m_reservables.size());      reserveList = new ArrayList(m_reservables);    }    while (reserveList.size() > 0) {      // Iterate backwards so remove is cheap.      final ListIterator iterator =        reserveList.listIterator(reserveList.size());      while (iterator.hasPrevious()) {        final Reservable reservable = (Reservable)iterator.previous();        if (reservable.isSentinel()) {          iterator.remove();        }        else if (reservable.reserve()) {          result.add(reservable);          iterator.remove();        }        else if (reservable.isClosed()) {          iterator.remove();        }      }      if (reserveList.size() > 0) {        // Block until more resources are freed.        synchronized (m_reservableMutex) {          try {            m_reservableMutex.wait();          }          catch (InterruptedException e) {            throw new UncheckedInterruptedException(e);          }        }      }    }    return result;  }