private static void ValidateMatchTable(HtmlAgilityPack.HtmlNodeCollection tableRows)
        {
            for (int i = 0; i < tableRows.ToList<HtmlAgilityPack.HtmlNode>().Count; i++)
            {
                if (tableRows[i].FirstChild.Name == "th" && tableRows[i].InnerText == "Totals")
                {
                    game.CalculateAndCommitGame(match);
                    break;
                }
                else if (tableRows[i].FirstChild.Name == "th")
                {
                    gameType = Game.GetGameTypeFromString(tableRows[i].InnerText);
                }
                else
                {
                    var x = tableRows[i].ChildNodes;
                    List<string> rowValues = new List<string>();

                    for (int j = 0; j < x.ToList<HtmlAgilityPack.HtmlNode>().Count; j++)
                    {
                        if (tableRows[i].ChildNodes[j].Name == "td")
                        {
                            rowValues.Add(tableRows[i].ChildNodes[j].InnerText);
                        }
                    }
                    //match.AwaySquad.DartsPlayers.Add("Paul Cedrone", DartsPlayer.GetPlayer(10408));
                    switch (rowValues.Count)
                    {
                        case 2:
                            if (rowValues[0] != "&nbsp;" && rowValues[0].Trim() != "")
                            {
                                if (!match.AwaySquad.DartsPlayers.ContainsKey(rowValues[0].ToString()))
                                {
                                    int n = DartsPlayer.CreateDummyPlayer(rowValues[0].ToString(), match.AwaySquad.SquadId);
                                    match.AwaySquad.DartsPlayers.Add(DartsPlayer.GetPlayer(n).Name, DartsPlayer.GetPlayer(n));
                                }
                                if (!game.AwayDartsPlayers.Contains(match.AwaySquad.DartsPlayers[rowValues[0].ToString()]))
                                    game.AwayDartsPlayers.Add(match.AwaySquad.DartsPlayers[rowValues[0].ToString()]);
                            }
                            if (rowValues[1] != "&nbsp;" && rowValues[1].Trim() != "")
                            {
                                if (!match.HomeSquad.DartsPlayers.ContainsKey(rowValues[1].ToString()))
                                {
                                    int n = DartsPlayer.CreateDummyPlayer(rowValues[1].ToString(), match.HomeSquad.SquadId);
                                    match.HomeSquad.DartsPlayers.Add(DartsPlayer.GetPlayer(n).Name, DartsPlayer.GetPlayer(n));
                                }
                                if (!game.HomeDartsPlayers.Contains(match.HomeSquad.DartsPlayers[rowValues[1].ToString()]))
                                    game.HomeDartsPlayers.Add(match.HomeSquad.DartsPlayers[rowValues[1].ToString()]);
                            }
                            break;
                        case 5:
                            if (game.GameNumber != 0)
                            {
                                game.CalculateAndCommitGame(match); // john -
                            }

                            game = new Game();

                            game._GameType = gameType;
                            game.GameNumber = gameNumber; gameNumber++;
                            if (rowValues[1] != "&nbsp;" && rowValues[1].Trim() != "")
                            {
                                if (!match.AwaySquad.DartsPlayers.ContainsKey(rowValues[1].ToString()))
                                {
                                    int n = DartsPlayer.CreateDummyPlayer(rowValues[1].ToString(), match.AwaySquad.SquadId);
                                    match.AwaySquad.DartsPlayers.Add(DartsPlayer.GetPlayer(n).Name, DartsPlayer.GetPlayer(n));
                                }
                                if (!game.AwayDartsPlayers.Contains(match.AwaySquad.DartsPlayers[rowValues[1].ToString()]))
                                    game.AwayDartsPlayers.Add(match.AwaySquad.DartsPlayers[rowValues[1].ToString()]);
                            }
                            game.IsHomeWin = (0 == Convert.ToInt32(rowValues[2]));
                            if (rowValues[3] != "&nbsp;" && rowValues[3].Trim() != "")
                            {
                                if (!match.HomeSquad.DartsPlayers.ContainsKey(rowValues[3].ToString()))
                                {
                                    int n = DartsPlayer.CreateDummyPlayer(rowValues[3].ToString(), match.HomeSquad.SquadId);
                                    match.HomeSquad.DartsPlayers.Add(DartsPlayer.GetPlayer(n).Name, DartsPlayer.GetPlayer(n));
                                }
                                if (!game.HomeDartsPlayers.Contains(match.HomeSquad.DartsPlayers[rowValues[3].ToString()]))
                                    game.HomeDartsPlayers.Add(match.HomeSquad.DartsPlayers[rowValues[3].ToString()]);
                            }
                            //Game.InsertNew
                            break;
                        default:
                            throw (new InvalidOperationException("weird table structure man"));
                    }
                }
            }
        }