public IReadOnlyCollection <IChartData <int> > ProvideChartData(DateTime startDate, DateTime endDate, int countOfBins) { if (startDate >= endDate) { throw new ArgumentException(); } if (startDate < _startDate || endDate > _endDate) { throw new ArgumentException(); } var bins = _binProvider.CreateBins(LowerBound, UpperBound, countOfBins); List <IChartData <int> > chartDataList = CreateEmptyChartDataList(); var filteredHistogramEntries = FilterHistogramEntries(startDate, endDate); FillChartDataList(bins, filteredHistogramEntries, chartDataList); return(chartDataList); }