public Game FromSavedGame(SavedGame savedGame)
        {
            if (savedGame == null)
            {
                throw new ArgumentException(nameof(savedGame));
            }

            _boardLength     = savedGame.Board.Length;
            _emptySymbolChar = FindEmptySymbolChar(savedGame);
            _symbolLookup    = CreateSymbolLookup(savedGame);

            if (!IsValidSaveGame(savedGame))
            {
                throw new ArgumentException("Invalid Save Game");
            }

            return(CreateGame(savedGame));
        }
 private static char FindEmptySymbolChar(SavedGame savedGame)
 {
     return(savedGame.Board.SelectMany(r => r).FirstOrDefault(s => s != savedGame.Player1Symbol && s != savedGame.Player2Symbol));
 }