code: final ElemContext push(
          final String uri,
          final String localName,
          final String qName)
      {
          ElemContext frame = this.m_next;
          if (frame == null)
          {
              /* We have never been at this depth yet, and there is no
               * stack frame to re-use, so we now make a new one.
               */
              frame = new ElemContext(this);
              this.m_next = frame;
          }
  
          // Initialize, or reset values in the new or re-used stack frame.
          frame.m_elementName = qName;
          frame.m_elementLocalName = localName;
          frame.m_elementURI = uri;
          frame.m_isCdataSection = false;
          frame.m_startTagOpen = true;
  
          // is_Raw is already set in the HTML startElement() method
          // frame.m_isRaw = false; 
          return frame;
      }
docs: Push an element context on the stack. This context keeps track of
  information gathered about the element.
  @param uri The URI for the namespace for the element name,
  can be null if it is not yet known.
  @param localName The local name of the element (no prefix),
  can be null.
  @param qName The qualified name (with prefix, if any)
  of the element, this parameter is required.