private void UpdateTimeFrameAndCheckpointIndex(TimeFrameAndCheckpointIndex index, CheckpointTimeRegistration reg)
        {
            if (reg.StartTimeFrame != null && reg.EndTimeFrame != null)
              {
            for (int d1=reg.StartTimeFrame.Value; d1<reg.EndTimeFrame.Value; ++d1)
            {
              int d = Configuration.TrimTimeFrameToOutputSample(d1);
              if (!index.ContainsKey(d))
            index[d] = new Dictionary<string, List<CheckpointTimeRegistration>>();

              if (!index[d].ContainsKey(reg.Checkpoint))
            index[d][reg.Checkpoint] = new List<CheckpointTimeRegistration>();

              if (!index[d][reg.Checkpoint].Contains(reg))
            index[d][reg.Checkpoint].Add(reg);
            }
              }
        }
        private void UpdateTeamAndTimeIndex(TeamAndTimeFrameIndex index, CheckpointTimeRegistration reg)
        {
            if (reg.StartTimeFrame != null && reg.EndTimeFrame != null)
              {
            if (!index.ContainsKey(reg.Team))
              index[reg.Team] = new Dictionary<int, CheckpointTimeRegistration>();

            Dictionary<int, CheckpointTimeRegistration> teamMinutes = index[reg.Team];

            for (int d1 = reg.StartTimeFrame.Value; d1 <= reg.EndTimeFrame.Value; ++d1)
            {
              int d = Configuration.TrimTimeFrameToOutputSample(d1);
              teamMinutes[d] = reg;
            }
              }
        }
        private void UpdateTeamAndTimeIntervalIndex(TeamAndTimeIntervalIndex index, CheckpointTimeRegistration reg)
        {
            if (reg.StartTimeFrame != null && reg.EndTimeFrame != null)
              {
            if (!index.ContainsKey(reg.Team))
              index[reg.Team] = new List<CheckpointTimeRegistration>();

            index[reg.Team].Add(reg);
              }
        }
        private void UpdateCheckpointAndTimeIndex(CheckpointAndTimeFrameIndex index, CheckpointTimeRegistration reg)
        {
            if (reg.StartTimeFrame != null && reg.EndTimeFrame != null)
              {
            if (!index.ContainsKey(reg.Checkpoint))
              index[reg.Checkpoint] = new Dictionary<int, List<CheckpointTimeRegistration>>();

            Dictionary<int, List<CheckpointTimeRegistration>> checkpointMinutes = index[reg.Checkpoint];

            for (int d1 = reg.StartTimeFrame.Value; d1 <= reg.EndTimeFrame.Value; ++d1)
            {
              int d = Configuration.TrimTimeFrameToOutputSample(d1);
              if (!checkpointMinutes.ContainsKey(d))
            checkpointMinutes[d] = new List<CheckpointTimeRegistration>();

              if (!checkpointMinutes[d].Contains(reg))
            checkpointMinutes[d].Add(reg);
            }
              }
        }