class VarCountingBloomFilter implements IFilter<String> {

    public void merge(VarCountingBloomFilter cbf) {
        assert cbf != null;
        assert buckets.length == cbf.buckets.length;
        assert hashCount == cbf.hashCount;
        
        for ( int i = 0; i < buckets(); ++i )
        {
            Bucket b = new Bucket(i);
            Bucket b2 = cbf.getBucket(i);
            long merged = b.value + b2.value;
            b.set(merged > maxCount ? maxCount : merged);
        }
    }

    public  VarCountingBloomFilter(int numElements, int bucketsPerElement, int exp);

}