public ItemAndWeight(KllQuantileEstimator <T> kllQuantileEstimator, T item, int weight)
            {
                _kllQuantileEstimator = kllQuantileEstimator;

                this.item   = item;
                this.weight = weight;
            }
        protected virtual void Merge(KllQuantileEstimator <T> other)
        {
            while (_h < other._h)
            {
                Grow();
            }

            for (int i = 0; i < other._h; i++)
            {
                _compactors[i].AddRange(other._compactors[i]);
            }

            int size = 0;

            for (int i = 0; i < _compactors.Count; i++)
            {
                size += _compactors[i].Count;
            }
            _size = size;

            while (_size >= _maxSize)
            {
                Compress();
            }
        }
 public Compactor(KllQuantileEstimator <T> kllQuantileEstimator)
 {
     _kllQuantileEstimator = kllQuantileEstimator;
 }