internal static IEnumerable <ParsedStatenode> GetDescendants(
     this ParsedStatenode stateNode)
 => stateNode.CataFold(
     atomic => atomic.Yield() as IEnumerable <ParsedStatenode>,
     final => final.Yield() as IEnumerable <ParsedStatenode>,
     (compound, subStates) =>
     compound.Append(subStates.SelectMany(a => a)),
     (orthogonal, subStates) =>
     orthogonal.Append(subStates.SelectMany(a => a))).Except(stateNode.Yield());