public static Lst <PredList, C> SelectMany <PredList, A, B, C>(this Lst <PredList, A> self, Func <A, Lst <PredList, B> > bind, Func <A, B, C> project) where PredList : struct, Pred <ListInfo> => self.Bind(t => bind(t).Map(u => project(t, u)));
public static Lst <C> SelectMany <A, B, C>(this Lst <A> self, Func <A, Lst <B> > bind, Func <A, B, C> project) => self.Bind(t => bind(t).Map(u => project(t, u)));