class HistogramIterationValue {
    private long valueIteratedTo;
    private long valueIteratedFrom;
    private long countAtValueIteratedTo;
    private long countAddedInThisIterationStep;
    private long totalCountToThisValue;
    private long totalValueToThisValue;
    private double percentile;
    private double percentileLevelIteratedTo;
    private double integerToDoubleValueConversionRatio;

    // Set is all-or-nothing to avoid the potential for accidental omission of some values...
    void set(final long valueIteratedTo, final long valueIteratedFrom, final long countAtValueIteratedTo,
             final long countInThisIterationStep, final long totalCountToThisValue, final long totalValueToThisValue,
             final double percentile, final double percentileLevelIteratedTo, double integerToDoubleValueConversionRatio) {<FILL_FUNCTION_BODY>}

    void reset() {
        this.valueIteratedTo = 0;
        this.valueIteratedFrom = 0;
        this.countAtValueIteratedTo = 0;
        this.countAddedInThisIterationStep = 0;
        this.totalCountToThisValue = 0;
        this.totalValueToThisValue = 0;
        this.percentile = 0.0;
        this.percentileLevelIteratedTo = 0.0;
    }

    HistogramIterationValue() {
    }

    public String toString() {
        return  "valueIteratedTo:" + valueIteratedTo +
                ", prevValueIteratedTo:" + valueIteratedFrom +
                ", countAtValueIteratedTo:" + countAtValueIteratedTo +
                ", countAddedInThisIterationStep:" + countAddedInThisIterationStep +
                ", totalCountToThisValue:" + totalCountToThisValue +
                ", totalValueToThisValue:" + totalValueToThisValue +
                ", percentile:" + percentile +
                ", percentileLevelIteratedTo:" + percentileLevelIteratedTo;
    }

    public long getValueIteratedTo() {
        return valueIteratedTo;
    }

    public double getDoubleValueIteratedTo() {
        return valueIteratedTo * integerToDoubleValueConversionRatio;
    }

    public long getValueIteratedFrom() {
        return valueIteratedFrom;
    }

    public double getDoubleValueIteratedFrom() {
        return valueIteratedFrom * integerToDoubleValueConversionRatio;
    }

    public long getCountAtValueIteratedTo() {
        return countAtValueIteratedTo;
    }

    public long getCountAddedInThisIterationStep() {
        return countAddedInThisIterationStep;
    }

    public long getTotalCountToThisValue() {
        return totalCountToThisValue;
    }

    public long getTotalValueToThisValue() {
        return totalValueToThisValue;
    }

    public double getPercentile() {
        return percentile;
    }

    public double getPercentileLevelIteratedTo() {
        return percentileLevelIteratedTo;
    }

    public double getIntegerToDoubleValueConversionRatio() { return integerToDoubleValueConversionRatio; }
}

        this.valueIteratedTo = valueIteratedTo;
        this.valueIteratedFrom = valueIteratedFrom;
        this.countAtValueIteratedTo = countAtValueIteratedTo;
        this.countAddedInThisIterationStep = countInThisIterationStep;
        this.totalCountToThisValue = totalCountToThisValue;
        this.totalValueToThisValue = totalValueToThisValue;
        this.percentile = percentile;
        this.percentileLevelIteratedTo = percentileLevelIteratedTo;
        this.integerToDoubleValueConversionRatio = integerToDoubleValueConversionRatio;
    
<no_super_class>