public static IEnumerable <Builder.Node> AllAncestors(this Builder.Node node, int start, int end) => node.AllAncestors(start).TakeWhile(a => a.end >= end);
public static Builder.Node OldestAncestor(this Builder.Node node, int start, int end) => node.AllAncestors(start, end).FirstOrDefault();
public static Builder.Node YongestAncestor(this Builder.Node node, int position) => node.AllAncestors(position).LastOrDefault();