}
  public int nextNode()  {    // If the cache is on, and the node has already been found, then     // just return from the list.    // If the cache is on, and the node has already been found, then     // just return from the list.    if ((null != m_cachedNodes)            && (m_next < m_cachedNodes.size()))    {      int next = m_cachedNodes.elementAt(m_next);          incrementNextPosition();      m_currentContextNode = next;      return next;    }    if (m_foundLast)      return DTM.NULL;    int next;    DTM dtm = m_cdtm;    m_lastFetched = next = (DTM.NULL == m_lastFetched)                           ? m_context                           : DTM.NULL;    // m_lastFetched = next;    if (DTM.NULL != next)    {      if (null != m_cachedNodes)        m_cachedNodes.addElement(m_lastFetched);      m_next++;      return next;    }    else    {      m_foundLast = true;      return DTM.NULL;    }  }