internal static IEnumerable <ParsedStatenode> AncestorsUntil( this ParsedStatenode stateNode, ParsedStatenode until) => stateNode.GetParents().TakeWhile(parentStateNode => !parentStateNode.Equals(until));
internal static ParsedStatenode OneBeneath( this ParsedStatenode statenode, ParsedStatenode beneath) => statenode.Append(statenode.GetParents()) .FirstOrDefault(parentStateNode => parentStateNode.Parent.Equals(beneath.ToOption()));