anchor.diff:  void assertNameInvariant(XmlNode xml) {
     for (var node in xml.descendants) {
       if (node is XmlElement) {
  -      var element = node;
  -      assertQualifiedInvariant(element.name);
  -    }
  -    if (node is XmlAttribute) {
  -      var attribute = node;
  -      assertQualifiedInvariant(attribute.name);
  +      assertQualifiedInvariant(node.name);
  +    } else if (node is XmlAttribute) {
  +      assertQualifiedInvariant(node.name);
       }
     }
   }
  
positive.code:       expect(node.text, isNull);
      } else {
        expect(node.text, (text) => text is String);
      }
    }
  }
  
negative.code: void main() {
    group('parsing', () {
      test('comment', () {
        assetParseInvariants('<?xml version="1.0" encoding="UTF-8"?>' '<schema><!-- comment --></schema>');
      });
      test('comment with xml', () {
        assetParseInvariants('<?xml version="1.0" encoding="UTF-8"?>' '<schema><!-- <foo></foo> --></schema>');
      });
      test('complicated', () {
        assetParseInvariants('<?xml foo?>\n' '<!DOCTYPE [ something ]>\n'
            '<ns:foo attr="not namespaced" n1:ans="namespaced 1" n2:ans="namespace 2" >\n' '  <element/>\n'
            '  <ns:element/>\n' '  <!-- comment -->\n' '  <![CDATA[cdata]]>\n' '  <?processing instruction?>\n'
            '</ns:foo>');
      });
      test('doctype', () {
        assetParseInvariants('<!DOCTYPE with <schema> [ <!-- schema --> ]>\n<schema />');
      });
      test('empty element', () {
        assetParseInvariants('<schema/>');
      });
      test('namespace', () {
        assetParseInvariants('<xs:schema xs:attr="1"></xs:schema>');
      });
      test('simple', () {
        assetParseInvariants('<schema></schema>');
      });
      test('simple double quote attribute', () {
        assetParseInvariants('<schema foo="bar"></schema>');
      });
      test('simple single quote attribute', () {
        assetParseInvariants('<schema foo=\'bar\'></schema>');
      });
      test('short cdata section', () {
        assetParseInvariants('<data><![CDATA[]]></data>');
      });
      test('short cdata section', () {
        assetParseInvariants('<data><![CDATA[<data></data>]]></data>');
      });
      test('short processing instruction', () {
        assetParseInvariants('<?xml?><data />');
      });
      test('long processing instruction', () {
        assetParseInvariants('<?xml version="1.0"?><data />');
      });
      test('whitespace after prolog', () {
        assetParseInvariants('<?xml version="1.0" encoding="UTF-8"?>\n\t<schema></schema>\t\n');
      });
    });
    group('nodes', () {
  