/**
  * Return the XmlElement that has been built.
  *
  * @return the XmlElement that has been built.
  */
 public XmlElement giveItUp() {
   final FatMutableXmlElement e = (FatMutableXmlElement) this.kid_stack.removeLast();
   assert this.kid_stack.isEmpty();
   assert this.open_stack.isEmpty();
   assert this.count_stack.isEmpty();
   return e.toCompactXmlElement();
 }
 public void endElement(final String nameSpace, final String localName, final String fullName)
     throws SAXException {
   final int n_kids = this.kid_stack.size() - this.count_stack.pop();
   final Object[] kids = new Object[n_kids];
   for (int i = n_kids - 1; i >= 0; i -= 1) {
     kids[i] = this.kid_stack.removeLast();
   }
   final FatMutableXmlElement e = (FatMutableXmlElement) this.open_stack.removeLast();
   e.addChildren(Arrays.asList(kids));
   this.kid_stack.addLast(e);
 }
 public void startElement(
     final String nameSpace,
     final String localName,
     final String fullName,
     final Attributes attributes)
     throws SAXException {
   this.count_stack.push(this.kid_stack.size());
   final FatMutableXmlElement e = FatMutableXmlElement.make(Symbol.make(fullName), attributes);
   e.putAttributes(XmlElement.attributesToMap(attributes));
   this.open_stack.addLast(e);
 }