code: public final String getNodeNameX(int nodeHandle)
    {
  
      int nodeID = makeNodeIdentity(nodeHandle);
      int eType = _exptype2(nodeID);
  
      if (eType == DTM.PROCESSING_INSTRUCTION_NODE)
      {
        int dataIndex = _dataOrQName(nodeID);
        dataIndex = m_data.elementAt(-dataIndex);
        return m_valuesOrPrefixes.indexToString(dataIndex);
      }
  
      final ExtendedType extType = m_extendedTypes[eType];
  
      if (extType.getNamespace().length() == 0)
      {
        return extType.getLocalName();
      }
      else
      {
        int qnameIndex = m_dataOrQName.elementAt(nodeID);
  
        if (qnameIndex == 0)
          return extType.getLocalName();
  
        if (qnameIndex < 0)
        {
  	qnameIndex = -qnameIndex;
  	qnameIndex = m_data.elementAt(qnameIndex);
        }
  
        return m_valuesOrPrefixes.indexToString(qnameIndex);
      }
    }
docs: The optimized version of SAX2DTM.getNodeNameX().
  <p>
  Given a node handle, return the XPath node name. This should be the name
  as described by the XPath data model, NOT the DOM- style name.
  
  @param nodeHandle the id of the node.
  @return String Name of this node, which may be an empty string.