/// <summary>
        /// Returns segment sizes that are preferred to use when densities are calculated for the current bucket container.
        /// These segment sizes guaratee maximum perfomance gain.
        /// </summary>
        /// <param name="segmentsCount">Count of segments that need to be displayed</param>
        /// <returns>All the events that were found</returns>
        public SegmentSize[] GetPreferredSegmentSizes(ushort segmentsCount)
        {
            var lastBucket = GetLastBucket();

            if (lastBucket == null)
            {
                return(Array.Empty <SegmentSize>());
            }

            var endTime   = lastBucket.GetAbsoluteTimeForEvent(lastBucket.GetLastEvent());
            var startTime = FirstTimestamp;

            return(SegmentSizeHelper.GetPreferredSegmentSizes(startTime, endTime, segmentsCount));
        }
 /// <summary>
 /// Returns segment sizes that are preferred to use when densities are calculated. These segment sizes guaratee maximum perfomance gain.
 /// </summary>
 /// <param name="start">Start time (inclusive)</param>
 /// <param name="end">End time (exclusive)</param>
 /// <param name="segmentsCount">Count of segments that need to be displayed</param>
 /// <returns>Preferred segment sizes</returns>
 public SegmentSize[] GetPreferredSegmentSizes(long start, long end, ushort segmentsCount)
 {
     return(SegmentSizeHelper.GetPreferredSegmentSizes(start, end, segmentsCount));
 }