anchor.diff:                nodeData = '';
               }
               obj[nodeName] = nodeData;
  +          } else if (obj[nodeName] is Map) {
  +            var jsonCopy = json.decode(json.encode(obj[nodeName]));
  +            obj[nodeName] = <dynamic>[jsonCopy, <dynamic, dynamic>{}];
  +            obj = obj[nodeName].last;
  +          } else if (obj[nodeName] is List) {
  +            obj[nodeName].add(<dynamic, dynamic>{});
  +            obj = obj[nodeName].last;
             } else {
               obj[nodeName] = <dynamic, dynamic>{};
               obj = obj[nodeName];
  +          }
  +          if (node.attributes.isNotEmpty) {
  +            _parseAttrs(node, obj);
             }
           } else {
             /* No children, empty element */
  
positive.code:     Map<dynamic, dynamic>? obj = objin;
      if (node is XmlElement) {
        final nodeName = '"${node.name.qualified}"';
        if (obj![nodeName] is List && !obj.keys.contains(nodeName)) {
          obj[nodeName].add(<dynamic, dynamic>{});
          obj = obj[nodeName].last;
  
negative.code:       } else {
          if (node.children.isNotEmpty) {
            if (node.children[0] is XmlText) {
              _parseXmlTextNode(node, obj, nodeName);
            } else if (node.children[0] is XmlCDATA) {
              final sanitisedNodeData =
                  _Xml2JsonUtils.escapeTextForJson(node.children[0].text);
  