@Override
 public InternalAggregation buildAggregation(long owningBucketOrdinal) {
   if (counts == null
       || owningBucketOrdinal >= counts.maxBucket()
       || counts.cardinality(owningBucketOrdinal) == 0) {
     return buildEmptyAggregation();
   }
   // We need to build a copy because the returned Aggregation needs remain usable after
   // this Aggregator (and its HLL++ counters) is released.
   HyperLogLogPlusPlus copy =
       new HyperLogLogPlusPlus(precision, BigArrays.NON_RECYCLING_INSTANCE, 1);
   copy.merge(0, counts, owningBucketOrdinal);
   return new InternalCardinality(name, copy, formatter);
 }
 @Override
 public double metric(long owningBucketOrd) {
   return counts == null ? 0 : counts.cardinality(owningBucketOrd);
 }