private IEnumerable <(Player, TimeSpan)> GetCampCaptures(TimeSpan start, TimeSpan end, Replay replay, bool bossCamp = false)
        {
            foreach (TrackerEvent capture in replayHelper.GetCampCaptureEvents(replay.TrackerEvents, start, end))
            {
                int teamId = (int)capture.Data.dictionary[3].optionalData.array[0].dictionary[1].vInt.Value - 1;

                IEnumerable <Unit> campUnit = replay.Units.Where(unit => bossCamp ? replayHelper.IsBossCamp(unit) : replayHelper.IsCamp(unit))
                                              .Where(unit => unit.TimeSpanDied.HasValue &&
                                                     unit.TimeSpanDied.Value <capture.TimeSpan &&
                                                                              unit.TimeSpanDied.Value> capture.TimeSpan.Subtract(TimeSpan.FromSeconds(10)) &&
                                                     unit.PlayerKilledBy != null && unit.PlayerKilledBy.Team == teamId);

                foreach ((Player player, string name) in campUnit.Select(unit => (unit.PlayerKilledBy, unit.Name)).Distinct())
                {
                    logger.LogDebug($"GetCampCaptures: {player.HeroId}:{name}");

                    yield return(player, capture.TimeSpan);
                }
            }
        }