code: public int getCurrentNode()
    {
  
      if (!m_cacheNodes)
        throw new RuntimeException(
          "This NodeSetDTM can not do indexing or counting functions!");
  
      int saved = m_next;
      // because nextNode always increments
      // But watch out for copy29, where the root iterator didn't
      // have nextNode called on it.
      int current = (m_next > 0) ? m_next-1 : m_next; 
      int n = (current < m_firstFree) ? elementAt(current) : DTM.NULL;
      m_next = saved; // HACK: I think this is a bit of a hack.  -sb
      return n;
    }
docs: Return the last fetched node.  Needed to support the UnionPathIterator.
  
  @return the last fetched node.
  @throws RuntimeException thrown if this NodeSetDTM is not of
  a cached type, and thus doesn't permit indexed access.