code: public synchronized DTMIterator getInstance()
    {
      // Check if the pool is empty.
      if (m_freeStack.isEmpty())
      {
  
        // Create a new object if so.
        try
        {
          return (DTMIterator)m_orig.clone();
        }
        catch (Exception ex)
        {
          throw new WrappedRuntimeException(ex);
        }
      }
      else
      {
        // Remove object from end of free pool.
        DTMIterator result = (DTMIterator)m_freeStack.remove(m_freeStack.size() - 1);
        return result;
      }
    }
docs: Get an instance of the given object in this pool
  
  @return An instance of the given object