code: void appendStartElement(int namespaceIndex,int localNameIndex, int prefixIndex)
    {
                  // do document root node creation here on the first element, create nodes for
                  // this element and its attributes, store the element, namespace, and attritute
                  // name indexes to the nodes array, keep track of the current node and parent
                  // element used
  
                  // W0  High:  Namespace  Low:  Node Type
                  int w0 = (namespaceIndex << 16) | ELEMENT_NODE;
                  // W1: Parent
                  int w1 = currentParent;
                  // W2: Next  (initialized as 0)
                  int w2 = 0;
                  // W3: Tagname high: prefix Low: local name
                  int w3 = localNameIndex | prefixIndex<<16;
                  /**/System.out.println("set w3="+w3+" "+(w3>>16)+"/"+(w3&0xffff));
  
                  //int ourslot = nodes.appendSlot(w0, w1, w2, w3);
                  int ourslot = appendNode(w0, w1, w2, w3);
                  currentParent = ourslot;
                  previousSibling = 0;
  
                  // set the root element pointer when creating the first element node
                  if (m_docElement == NULL)
                          m_docElement = ourslot;
    }
docs: Append an Element child at the current insertion point. This
  Element then _becomes_ the insertion point; subsequent appends
  become its lastChild until an appendEndElement() call is made.
  
  Assumes that the symbols (local name, namespace URI and prefix)
  have already been added to the pools
  
  Note that this _only_ handles the Element node itself. Attrs and
  namespace nodes are unbundled in the ContentHandler layer
  and appended separately.
  
  @param namespaceIndex: Index within the namespaceURI string pool
  @param localNameIndex Index within the local name string pool
  @param prefixIndex: Index within the prefix string pool