// skip null values
if (!values.isNull() && (masks == null || masks.getBoolean())) {
long groupId = groupIdsBlock.getGroupId(position);
HyperLogLog hll = estimators.get(groupId);
if (hll == null) {
hll = HyperLogLog.newInstance(NUMBER_OF_BUCKETS);
estimators.set(groupId, hll);
sizeOfValues += hll.estimatedInMemorySize();
}
sizeOfValues -= hll.estimatedInMemorySize();
add(values, parameterType, hll);
sizeOfValues += hll.estimatedInMemorySize();
}
}
checkState(!values.advanceNextPosition(), "group id and value blocks have different number of entries");
}