public StyleDocument Merge()
{
var doc = MemberwiseClone() as StyleDocument;
var newRules = new List<StyleRule>();
foreach (var selectorGroup in doc.Rules.GroupBy(r => r.GetSelector()))
{
var rule = new StyleRule();
rule.Selectors.Add(new StyleSelector { Name = selectorGroup.Key });
rule.Properties.AddRange(selectorGroup.SelectMany(r => r.Properties).Distinct());
if(rule.Properties.Count > 0)
newRules.Add(rule);
}
doc.Rules = GroupRules(newRules).ToList();
return doc;
}