private XmlSerializer CreateBindingCompliantSerializer()
        {
            var overrides = new XmlAttributeOverrides();

            overrides.Add <Document>(new XmlAttributes {
                XmlType = new XmlTypeAttribute("Root")
            });
            overrides.Ignore <Document>(d => d.Description);
            overrides.Ignore <Document>(d => d.MajorVersion);
            overrides.Ignore <Document>(d => d.MinorVersion);
            overrides.Ignore <Document>(d => d.PolicyFilePath);

            overrides.Add <Stage>(s => s.Components, new XmlAttributes {
                XmlArrayItems = { new XmlArrayItemAttribute("Component", typeof(ComponentBinding)) }
            });

            overrides.Add <ComponentInfo>(ci => ci.QualifiedNameOrClassId, new XmlAttributes {
                XmlAttribute = new XmlAttributeAttribute("Name")
            });
            overrides.Ignore <ComponentInfo>(ci => ci.CachedDisplayName);
            overrides.Ignore <ComponentInfo>(ci => ci.CachedIsManaged);
            overrides.Ignore <ComponentInfo>(ci => ci.ComponentName);
            overrides.Ignore <ComponentInfo>(ci => ci.ComponentProperties);
            overrides.Ignore <ComponentInfo>(ci => ci.Description);
            overrides.Ignore <ComponentInfo>(ci => ci.Version);

            return(Stateless.Xml.Serialization.XmlSerializerFactory.Create(typeof(Document), overrides));
        }
        protected override XmlSerializer CreateXmlSerializer()
        {
            var overrides = new XmlAttributeOverrides();

            overrides.Ignore <Document>(d => d.PolicyFilePath);
            overrides.Add <Document>(d => d.CategoryId, new XmlAttributes {
                XmlElements = { new XmlElementAttribute(nameof(Document.CategoryId), typeof(string)) }
            });
            overrides.Add <Document>(d => d.FriendlyName, new XmlAttributes {
                XmlElements = { new XmlElementAttribute(nameof(Document.FriendlyName), typeof(string)) }
            });
            overrides.Ignore <PolicyFileStage>(s => s.CategoryId);
            overrides.Add <PolicyFileStage>(
                s => s.PolicyFileStage,
                new XmlAttributes {
                XmlElements = { new XmlElementAttribute(nameof(PolicyFileStage.PolicyFileStage), typeof(Microsoft.BizTalk.PipelineEditor.PolicyFile.Stage)) }
            });
            return(CachingXmlSerializerFactory.Create(typeof(Document), overrides));
        }