public Task Add(PlayerMeritTable playerMeritTable, GameXPlayer playerGame, Team team, CompetitionEvent competitionEvent, MeritCalculationEngine config)
        {
            var line = playerMeritTable.GetOrCreateLine(team, playerGame.Player);
            var gameCalculationEngine = this._gameCalculationEngineFactory.Create(playerGame.Game.GameCalculationEngineID);

            line.Add(playerGame);
            var droppedChalks = gameCalculationEngine.CalculateDroppedChalks(playerGame);

            line.AddDroppedChalks(playerGame, droppedChalks);

            var opponentScoresInWonGames = ListHelper.ConvertToList(line.DataString1);
            var playerScoresInLostGames  = ListHelper.ConvertToList(line.DataString2);

            ListHelper.AddResultToLists(playerGame, opponentScoresInWonGames, playerScoresInLostGames);

            this.CalculateAdditionalData(line, playerGame, competitionEvent, config, gameCalculationEngine, opponentScoresInWonGames, playerScoresInLostGames);

            return(Task.CompletedTask);
        }