@Override
  public void merge(ColumnStatisticsObj aggregateColStats, ColumnStatisticsObj newColStats) {
    LOG.debug("Merging statistics: [aggregateColStats:{}, newColStats: {}]", aggregateColStats, newColStats);

    BooleanColumnStatsData aggregateData = aggregateColStats.getStatsData().getBooleanStats();
    BooleanColumnStatsData newData = newColStats.getStatsData().getBooleanStats();

    aggregateData.setNumTrues(aggregateData.getNumTrues() + newData.getNumTrues());
    aggregateData.setNumFalses(aggregateData.getNumFalses() + newData.getNumFalses());
    aggregateData.setNumNulls(mergeNumNulls(aggregateData.getNumNulls(), newData.getNumNulls()));
  }
@Test
  public void testMergeNonNullValues() {
    ColumnStatisticsObj aggrObj = createColumnStatisticsObj(new ColStatsBuilder<>(Boolean.class)
        .numFalses(1)
        .numTrues(2)
        .numNulls(2)
        .build());
    ColumnStatisticsObj newObj = createColumnStatisticsObj(new ColStatsBuilder<>(Boolean.class)
        .numFalses(1)
        .numTrues(2)
        .numNulls(3)
        .build());
    MERGER.merge(aggrObj, newObj);

    newObj = createColumnStatisticsObj(new ColStatsBuilder<>(Boolean.class)
        .numFalses(1)
        .numTrues(1)
        .numNulls(1)
        .build());
    MERGER.merge(aggrObj, newObj);

    ColumnStatisticsData expectedColumnStatisticsData = new ColStatsBuilder<>(Boolean.class)
        .numFalses(3)
        .numTrues(5)
        .numNulls(6)
        .build();
    assertEquals(expectedColumnStatisticsData, aggrObj.getStatsData());
  }