private static List <SelectionItem> GetSelectionItems(List <XmlNode> originalNodes, List <XmlNode> nodes, List <string> breadcrumbs)
        {
            var changeIds      = GetChangedIds(originalNodes, nodes);
            var selectionItems = new List <SelectionItem>();

            if (originalNodes.Count != 0)
            {
                var originalNode = originalNodes[originalNodes.Count - 1];
                selectionItems.Add(new SelectionItem()
                {
                    Name = "Original", Description = XmlTools.GetOuterXml(originalNode), Value = originalNode
                });
            }
            foreach (List <int> l in changeIds)
            {
                var item = new SelectionItem()
                {
                    Name = breadcrumbs[l[0]], Description = XmlTools.GetOuterXml(nodes[l[0]]), Value = nodes[l[0]]
                };
                for (var i = 1; i < l.Count; i++)
                {
                    item.Name += "\n" + breadcrumbs[l[i]];
                }
                selectionItems.Add(item);
            }
            return(selectionItems);
        }
        public static void Combine(XmlDocument result, List <XmlDocument> originalDocs, List <XmlDocument> docs, List <string> breadcrumbs)
        {
            notifyCollissions = false;

            var docElems         = new List <XmlNode>(docs.Count);
            var originalDocElems = new List <XmlNode>(originalDocs.Count);

            foreach (XmlDocument file in docs)
            {
                docElems.Add(file.DocumentElement);
            }
            foreach (XmlDocument file in originalDocs)
            {
                originalDocElems.Add(file.DocumentElement);
            }

            RecursiveCombine(result.DocumentElement, originalDocElems, docElems, breadcrumbs);
            System.Diagnostics.Debug.WriteLine(XmlTools.GetOuterXml(result.DocumentElement));
        }