code: public String getStringValue()
    {
      int child = _firstch2(ROOTNODE);
      if (child == DTM.NULL) return EMPTY_STR;
  
      // optimization: only create StringBuffer if > 1 child
      if ((_exptype2(child) == DTM.TEXT_NODE) && (_nextsib2(child) == DTM.NULL))
      {
        int dataIndex = m_dataOrQName.elementAt(child);
        if (dataIndex >= 0)
          return m_chars.getString(dataIndex >>> TEXT_LENGTH_BITS, dataIndex & TEXT_LENGTH_MAX);
        else
          return m_chars.getString(m_data.elementAt(-dataIndex),
                                    m_data.elementAt(-dataIndex + 1));
      }
      else
        return getStringValueX(getDocument());
  
    }
docs: Returns the string value of the entire tree