public static Option <Game <T> > GetGame <T, U>(this MoveResult <T, U> result) { return(result.Fold(game => Option.Some(game), _ => Option.None <Game <T> >())); }
public static Option <Game <U> > GetWin <T, U>(this MoveResult <T, U> result) { return(result.Fold(_ => Option.None <Game <U> >(), win => Option.Some(win))); }