public static IDataflow <Either <TLeft, TRightOutput> > SelectSafe
 <TLeft, TRightInput, TRightMedium, TRightOutput>(
     this IDataflow <Either <TLeft, TRightInput> > source,
     Func <TRightInput, Either <TLeft, TRightMedium> > mediumSelector,
     Func <TRightInput, TRightMedium, TRightOutput> resultSelector)
 {
     return(source.Select(item => item.SelectSafe(mediumSelector, resultSelector)));
 }
 public static IDataflow <Either <TLeft, TRightOutput> > SelectSafe <TLeft, TRightInput, TRightOutput>(
     this IDataflow <Either <TLeft, TRightInput> > source,
     Func <TRightInput, Either <TLeft, TRightOutput> > selector)
 {
     return(source.Select(item => item.SelectSafe(selector)));
 }
 public static IDataflow <TLeft> Lefts <TLeft, TRight>(this IDataflow <Either <TLeft, TRight> > source)
 {
     return(source.Select(item => item.GetLeftSafe()));
 }