anchor.diff:        Map<String, String> namespaces: const {},
         Map<String, String> attributes: const {},
         Object nest: null}) {
  -    var builder = new _XmlElementBuilder(_current);
  -    _current = builder;
  +    var element = new _XmlElementBuilder();
  +    _stack.add(element);
       namespaces.forEach(this.namespace);
       attributes.forEach(this.attribute);
       if (nest != null) {
         _insert(nest);
       }
  -    builder.name = _buildName(name, namespace);
  -    _current = builder.parent;
  -    _current.children.add(builder.build());
  +    element.name = _buildName(name, namespace);
  +    _stack.removeLast();
  +    _stack.last.children.add(element.build());
     }
   
     /**
      * Adds a [XmlAttribute] node with the provided `name` and `value`.
      */
     void attribute(String name, String value, {String namespace}) {
  -    _current.attributes.add(new XmlAttribute(_buildName(name, namespace), value));
  +    _stack.last.attributes.add(new XmlAttribute(_buildName(name, namespace), value));
     }
   
     /**
  
positive.code:  */
  class XmlBuilder {
  
    _XmlNodeBuilder _current = new _XmlDocumentBuilder();
  
    /**
     * Adds a [XmlText] node with the provided `text`.
     */
    void text(String text) {
      _current.children.add(new XmlText(text));
    }
  
    /**
     * Adds a [XmlCDATA] node with the provided `text`.
     */
    void cdata(String text) {
      _current.children.add(new XmlCDATA(text));
    }
  
    /**
     * Adds a [XmlProcessing] node with the provided `target` and `text`.
     */
    void processing(String target, String text) {
      _current.children.add(new XmlProcessing(target, text));
    }
  
    /**
     * Adds a [XmlComment] node with the provided `text`.
     */
    void comment(String text) {
      _current.children.add(new XmlComment(text));
    }
  
    /**
  
negative.code:    * If a map of `attributes` is provided the name-value pairs are added to the
     * element declaration, see also [XmlBuilder#attribute].
     *
     * Finally, `nest` is used to further customize the element and to add its
     * children. Typically this is a [Function] that defines elements using the
     * same builder object. For convenience `nest` can also be a string or another
     * common object that will be converted to a string and added as a text node.
  