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());