/// <summary> /// Calculates the specified values. /// </summary> /// <param name="values">The values.</param> public override IEnumerable <Object> Calculate(IEnumerable <Object> values) { Selector.ApplyAttributes(Attributes); var filteredElements = values.GetOrEmpty().SelectMany(node => Selector.SelectElement(node)); foreach (var filteredElement in filteredElements) { if (Modifiers.Any()) { foreach (var modifier in Modifiers) { foreach (var element in modifier.ModifySelection(filteredElement)) { yield return(element); } } } else { yield return(filteredElement); } } }