public IEnumerable <TimeInterval> FindCriticalMoments(IEnumerable <StateRecord> states)
        {
            var statesByMembers = states
                                  .OrderBy(state => state.CreateTime)
                                  .GroupBy(state => state.TeamMemberId);

            TimeInterval[] trainingMoments = new TimeInterval[0];

            foreach (var statesOfPerson in statesByMembers)
            {
                var abnormalHeartRateIntervals = GetStressfulSpansForHealthIndicator(
                    statesOfPerson,
                    state => state.HeartRate,
                    heartRateParameters)
                                                 .ToArray();

                var abnormalTemperatureIntervs = GetStressfulSpansForHealthIndicator(
                    statesOfPerson,
                    state => state.Temperature,
                    temperatureParameters)
                                                 .ToArray();

                var criticalMoments = new[]
                {
                    abnormalHeartRateIntervals,
                    abnormalTemperatureIntervs
                }.SelectMany(intervals => intervals);

                trainingMoments = TimeInterval.MergeIntervals(trainingMoments.Concat(criticalMoments)).ToArray();
            }

            return(trainingMoments);
        }