public static ReadOnlyCollection <IImmutableHierarchy2> Family2(this IImmutableHierarchy2 node) { if (node == null) { return(Seq.Empty <IImmutableHierarchy2>().ToReadOnly()); } return(node.Concat(node.ChildrenRecursive2()).ToReadOnly()); }
public static ReadOnlyCollection <IImmutableHierarchy2> ChildrenRecursive2(this IImmutableHierarchy2 node) { if (node == null) { return(Seq.Empty <IImmutableHierarchy2>().ToReadOnly()); } return(node.Children.Flatten(n => n == null ? Seq.Empty <IImmutableHierarchy2>() : n.Children).ToReadOnly()); }
public static ReadOnlyCollection <IImmutableHierarchy2> Hierarchy2(this IImmutableHierarchy2 node) { if (node == null) { return(Seq.Empty <IImmutableHierarchy2>().ToReadOnly()); } return(node.Unfoldi(n => n.Parent, n => n != null).ToReadOnly()); }
public static IEnumerable <IImmutableHierarchy2> Children2(this IImmutableHierarchy2 node) { return(node.Children); }
public static ReadOnlyCollection <T> Family2 <T>(this IImmutableHierarchy2 <T> node) where T : class, IImmutableHierarchy2 <T> { return(((IImmutableHierarchy2)node).Family2().AssertCast <T>().ToReadOnly()); }
public static ReadOnlyCollection <T> ChildrenRecursive2 <T>(this IImmutableHierarchy2 <T> node) where T : class, IImmutableHierarchy2 <T> { return(((IImmutableHierarchy2)node).ChildrenRecursive2().AssertCast <T>().ToReadOnly()); }
public static IEnumerable <T> Children2 <T>(this IImmutableHierarchy2 <T> node) where T : class, IImmutableHierarchy2 <T> { return(node.Children); }