public static TryOptionAsync <Func <B, C> > apply <A, B, C>(TryOptionAsync <Func <A, B, C> > fabc, TryOptionAsync <A> fa) =>
 fabc.Bind(f => ApplTryOptionAsync <A, B, C> .Inst.Apply(MTryOptionAsync <Func <A, Func <B, C> > > .Inst.ReturnAsync(curry(f).AsTask()), fa));
 public static TryOptionAsync <R> bind <T, R>(TryOptionAsync <T> tryDel, Func <T, TryOptionAsync <R> > binder) =>
 tryDel.Bind(binder);
 public static TryOptionAsync <C> apply <A, B, C>(TryOptionAsync <Func <A, B, C> > fabc, TryOptionAsync <A> fa, TryOptionAsync <B> fb) =>
 fabc.Bind(f => ApplTryOptionAsync <A, B, C> .Inst.Apply(MTryOptionAsync <Func <A, Func <B, C> > > .Inst.Return(curry(f)), fa, fb));