private XmlElement GetChangesElementFor(ItemListCollectionCompareResult compareResult)
        {
            var changesElement = xmlDoc.CreateElement("all-item-changes");

            if (compareResult.ItemsChanged.Count > 0)
            {
                var changedItemsElement = xmlDoc.CreateElement("modified-items");
                changesElement.AppendChild(changedItemsElement);

                foreach (var item in compareResult.ItemsChanged)
                {
                    var itemElement = xmlDoc.CreateElement(XmlEscape(GetNameFor(item.Item1)));
                    changedItemsElement.AppendChild(itemElement);

                    var prevElement = xmlDoc.CreateElement("previous");
                    prevElement.AppendChild(GetElementFor(item.Item1));
                    itemElement.AppendChild(prevElement);

                    var currentElement = xmlDoc.CreateElement("current");
                    currentElement.AppendChild(GetElementFor(item.Item2));
                    itemElement.AppendChild(currentElement);
                }
            }
            if (compareResult.ItemsOnlyInRight.Count > 0)
            {
                var itemsAddedElement = xmlDoc.CreateElement("new-items");
                changesElement.AppendChild(itemsAddedElement);

                foreach (var item in compareResult.ItemsOnlyInRight)
                {
                    itemsAddedElement.AppendChild(GetElementFor(item));
                }
            }
            if (compareResult.ItemsOnlyInLeft.Count > 0)
            {
                var itemsRemovedElement = xmlDoc.CreateElement("removed-items");
                changesElement.AppendChild(itemsRemovedElement);

                foreach (var item in compareResult.ItemsOnlyInLeft)
                {
                    itemsRemovedElement.AppendChild(GetElementFor(item));
                }
            }

            return(changesElement);
        }
        private XmlElement GetChangesElementFor(ItemListCollectionCompareResult compareResult)
        {
            var changesElement = xmlDoc.CreateElement("all-item-changes");

            if (compareResult.ItemsChanged.Count > 0) {
                var changedItemsElement = xmlDoc.CreateElement("modified-items");
                changesElement.AppendChild(changedItemsElement);

                foreach (var item in compareResult.ItemsChanged) {
                    var itemElement = xmlDoc.CreateElement(XmlEscape(GetNameFor(item.Item1)));
                    changedItemsElement.AppendChild(itemElement);

                    var prevElement = xmlDoc.CreateElement("previous");
                    prevElement.AppendChild(GetElementFor(item.Item1));
                    itemElement.AppendChild(prevElement);

                    var currentElement = xmlDoc.CreateElement("current");
                    currentElement.AppendChild(GetElementFor(item.Item2));
                    itemElement.AppendChild(currentElement);
                }
            }
            if (compareResult.ItemsOnlyInRight.Count > 0) {
                var itemsAddedElement = xmlDoc.CreateElement("new-items");
                changesElement.AppendChild(itemsAddedElement);

                foreach (var item in compareResult.ItemsOnlyInRight) {
                    itemsAddedElement.AppendChild(GetElementFor(item));
                }
            }
            if (compareResult.ItemsOnlyInLeft.Count > 0) {
                var itemsRemovedElement = xmlDoc.CreateElement("removed-items");
                changesElement.AppendChild(itemsRemovedElement);

                foreach (var item in compareResult.ItemsOnlyInLeft) {
                    itemsRemovedElement.AppendChild(GetElementFor(item));
                }
            }

            return changesElement;
        }