public IEnumerable <Tuple <IStyle, IVisualElement> > GetStyles(ITextNode node) { //if (node.Attributes.TryGetValue(nameof(Style), out var styleName)) if (node.TryGetAttribute(nameof(Style), false, out var styleName)) { switch (node.Value) { case IVisualElement visualElement: if (TryGetElementStyle(visualElement, styleName.Value, out var found)) { yield return(new Tuple <IStyle, IVisualElement>(found, visualElement)); } break; default: throw new NotImplementedException(); } } foreach (var kvp in node.Children.Values) { foreach (var style in GetStyles(kvp)) { yield return(style); } } }