/// <summary> /// Enumerates an <see cref="ILogical"/> and its descendants in the logical tree. /// </summary> /// <param name="logical">The logical.</param> /// <returns>The logical and its ancestors.</returns> public static IEnumerable <ILogical> GetSelfAndLogicalDescendants(this ILogical logical) { yield return(logical); foreach (var descendent in logical.GetLogicalDescendants()) { yield return(descendent); } }