public IEnumerable<CssRule> Rewrite(CssRule rule) { var styleRule = rule as StyleRule; if (styleRule == null || rule.All(r => r.Kind == NodeKind.Declaration)) { yield return rule; yield break; } // Figure out how to eliminate this clone var clone = (StyleRule)rule.CloneNode(); // Expand includes foreach (var includeNode in clone.Children.OfType<IncludeNode>().ToArray()) { scope = ExpandInclude(includeNode, clone); clone.Children.Remove(includeNode); } var root = new List<CssRule>(); root.Add(clone); foreach (var nestedRule in clone.Children.OfType<StyleRule>().ToArray()) { foreach (var r in ExpandStyleRule(nestedRule, parent: clone)) { root.Add(r); } } foreach (var r in root) { if (r.HasChildren) yield return r; } }