@Override
  public UltraLogLog applyAggregatedValue(UltraLogLog value, UltraLogLog aggregatedValue) {
    value.add(aggregatedValue);
    return value;
  }
@Test
  public void applyAggregatedValueShouldUnion() {
    UltraLogLog input1 = UltraLogLog.create(12);
    IntStream.range(0, 1000).mapToObj(UltraLogLogUtils::hashObject).forEach(h -> h.ifPresent(input1::add));
    UltraLogLog input2 = UltraLogLog.create(12);
    IntStream.range(0, 1000).mapToObj(UltraLogLogUtils::hashObject).forEach(h -> h.ifPresent(input2::add));
    DistinctCountULLValueAggregator agg = new DistinctCountULLValueAggregator(Collections.emptyList());
    UltraLogLog result = agg.applyAggregatedValue(input1, input2);

    UltraLogLog union = UltraLogLog.create(12).add(input1).add(input2);

    assertEquals(result.getDistinctCountEstimate(), union.getDistinctCountEstimate());
  }