internal override IEnumerable <String> ExtractNames() { if (First != null) { foreach (var n in First.ExtractNames()) { yield return(n); } } if (Second != null) { foreach (var n in Second.ExtractNames()) { yield return(n); } } if (Last != null) { foreach (var n in Last.ExtractNames()) { yield return(n); } } }