private XmlElement GetChangesElementFor(PropertyListCompareResult targetPropertyDiff)
        {
            var changesElement = xmlDoc.CreateElement("all-property-changes");

            if (!targetPropertyDiff.AreEqual)
            {
                if (targetPropertyDiff.PropertiesChanged.Count > 0)
                {
                    // changed properties
                    var changedPropsElement = xmlDoc.CreateElement("modified-properties");
                    changesElement.AppendChild(changedPropsElement);

                    foreach (var prop in targetPropertyDiff.PropertiesChanged)
                    {
                        changedPropsElement.AppendChild(CreateElementFor(prop));
                    }
                }

                if (targetPropertyDiff.PropertiesOnlyInRight.Count > 0)
                {
                    // added properties
                    var newPropsElement = xmlDoc.CreateElement("new-properties");
                    changesElement.AppendChild(newPropsElement);

                    foreach (var prop in targetPropertyDiff.PropertiesOnlyInRight)
                    {
                        newPropsElement.AppendChild(CreateElementFor(prop));
                    }
                }

                if (targetPropertyDiff.PropertiesOnlyInLeft.Count > 0)
                {
                    var removedPropsElement = xmlDoc.CreateElement("removed-properties");
                    changesElement.AppendChild(removedPropsElement);

                    // removed properties
                    foreach (var prop in targetPropertyDiff.PropertiesOnlyInLeft)
                    {
                        removedPropsElement.AppendChild(CreateElementFor(prop));
                    }
                }
            }

            return(changesElement);
        }
        private XmlElement GetChangesElementFor(PropertyListCompareResult targetPropertyDiff)
        {
            var changesElement = xmlDoc.CreateElement("all-property-changes");
            if (!targetPropertyDiff.AreEqual) {
                if (targetPropertyDiff.PropertiesChanged.Count > 0) {
                    // changed properties
                    var changedPropsElement = xmlDoc.CreateElement("modified-properties");
                    changesElement.AppendChild(changedPropsElement);

                    foreach (var prop in targetPropertyDiff.PropertiesChanged) {
                        changedPropsElement.AppendChild(CreateElementFor(prop));
                    }
                }

                if (targetPropertyDiff.PropertiesOnlyInRight.Count > 0) {
                    // added properties
                    var newPropsElement = xmlDoc.CreateElement("new-properties");
                    changesElement.AppendChild(newPropsElement);

                    foreach (var prop in targetPropertyDiff.PropertiesOnlyInRight) {
                        newPropsElement.AppendChild(CreateElementFor(prop));
                    }
                }

                if (targetPropertyDiff.PropertiesOnlyInLeft.Count > 0) {
                    var removedPropsElement = xmlDoc.CreateElement("removed-properties");
                    changesElement.AppendChild(removedPropsElement);

                    // removed properties
                    foreach (var prop in targetPropertyDiff.PropertiesOnlyInLeft) {
                        removedPropsElement.AppendChild(CreateElementFor(prop));
                    }
                }
            }

            return changesElement;
        }