public override void SetPropertyValues(SettingsContext context, SettingsPropertyValueCollection collection)
        {
            var sectionName   = GetSectionName(context);
            var dirtySettings = collection
                                .OfType <SettingsPropertyValue>()
                                .Where(i => i.IsDirty)
                                .Select(i => {
                var element = new SettingElement(i.Name, i.Property.SerializeAs)
                {
                    Value =
                    {
                        ValueXml = SerializeToXmlElement(i)
                    }
                };
                i.IsDirty = false;
                return(element);
            })
                                .ToList();

            if (dirtySettings.Count > 0)
            {
                WriteSettings(sectionName, dirtySettings);
            }
        }