protected override IEnumerable <LessNode> EvaluateCore(EvaluationContext context) { IEnumerable <MediaQuery> CombineQueries(IEnumerable <MediaQuery> outer, IEnumerable <MediaQuery> inner) { foreach (var innerQuery in inner) { foreach (var outerQuery in outer) { yield return(new MediaQuery(outerQuery.FeatureQueries.Concat(innerQuery.FeatureQueries))); } } } var evaluatedQueries = mediaQueries.Select(q => q.EvaluateSingle <MediaQuery>(context)).ToArray(); using (context.BeginExtenderScope()) { (var mediaBlocks, var statements) = Block.Evaluate(context).Split <MediaBlock, Statement>(); yield return(new MediaBlock(evaluatedQueries, new RuleBlock(statements), context.Extensions)); foreach (var mediaBlock in mediaBlocks) { yield return(new MediaBlock(CombineQueries(evaluatedQueries, mediaBlock.mediaQueries), mediaBlock.Block, context.Extensions)); } } }