public static Option <ValueTuple <T1, T2> > If <T1, T2>(this ValueTuple <T1, T2> value, Func <T1, T2, bool> predicate) => predicate(value.Item1, value.Item2) ? value.Some() : Option.None <ValueTuple <T1, T2> >();