code: public void pushRewindMark()
    {
      if(m_indexing || m_elemIndexes!=null)
        throw new java.lang.NullPointerException("Coding error; Don't try to mark/rewind an indexed DTM");
  
      // Values from DTMDefaultBase
      // %REVIEW% Can the namespace stack sizes ever differ? If not, save space!
      mark_size.push(m_size);
      mark_nsdeclset_size.push((m_namespaceDeclSets==null)
                                     ? 0
                                     : m_namespaceDeclSets.size());
      mark_nsdeclelem_size.push((m_namespaceDeclSetElements==null)
                                     ? 0
                                     : m_namespaceDeclSetElements.size());
     
      // Values from SAX2DTM
      mark_data_size.push(m_data.size());
      mark_char_size.push(m_chars.size());
      mark_doq_size.push(m_dataOrQName.size());
    }
docs: "Tail-pruning" support for RTFs.
  
  This function pushes information about the current size of the
  DTM's data structures onto a stack, for use by popRewindMark()
  (which see).
  
  %REVIEW% I have no idea how to rewind m_elemIndexes. However,
  RTFs will not be indexed, so I can simply panic if that case
  arises. Hey, it works...