public Histogram build() {
SparseHistogram sparseMetric=metricValue.getHistogram();
Histogram metricHistogram=sparseMetric.getFullHistogram(definition);
List<Bin> rawBins = growTo(metricHistogram.getBins(), end, binsCount);
List<Bin> histBins = new ArrayList<Bin>();
int binCount = this.binsCount;
double startHistory = definition.getBinDefinition(definition.getBinForValue(this.start)).getStart();
double endHistory = definition.getBinDefinition(definition.getBinForValue(this.end)).getEnd();
if (lowOutliers) {
binCount--;
histBins.add(new Bin(collapse(collect(rawBins, Double.NEGATIVE_INFINITY, startHistory)).getCount(), Double.NEGATIVE_INFINITY, startHistory));
}
if (highOutliers) {
binCount--;
histBins.add(new Bin(collapse(collect(rawBins, endHistory, Double.POSITIVE_INFINITY)).getCount(), endHistory, Double.POSITIVE_INFINITY));
}
histBins.addAll(toSize(collect(rawBins, startHistory, endHistory), binCount));
Collections.sort(histBins);
return new Histogram(histBins);
}