public Game Parse(string[] lines, ref int lineIndex) { var game = _gameInfoBaseParser.Parse(lines, ref lineIndex); if (lineIndex >= lines.Length - 1) { return(null); } game.PlayerGameSnapshots = _playersBaseParser.Parse(lines, ref lineIndex, game.PlayersCount); UpdatePlayersOnParsedEarly(game.PlayerGameSnapshots); game.Players = game.PlayerGameSnapshots.Select(ps => ps.Player).ToList(); var blindPlayers = _playerBlindsBaseParser.Parse(game, lines, ref lineIndex); if (blindPlayers.Count != 2) { return(null); } game.Rounds = _roundsBaseParser.Parse(game, lines, ref lineIndex); var cards = game.Rounds.SelectMany(r => r.Cards).ToList(); if (cards.Any()) { game.Board = new Board { Cards = cards }; } return(game); }