public byte[] serialize() {
BufferSerializer out = new BufferSerializer(new GrowableByteBuffer());
out.putInt(null, distributionBits);
out.putLong(null, bucketCursor);
out.putLong(null, finishedBucketCount);
out.putLong(null, totalBucketCount);
out.putInt(null, buckets.size());
for (Map.Entry<BucketKeyWrapper, ProgressToken.BucketEntry> entry : buckets.entrySet()) {
out.putLong(null, keyToBucketId(entry.getKey().getKey()));
out.putLong(null, entry.getValue().getProgress().getRawId());
}
byte[] ret = new byte[out.getBuf().position()];
out.getBuf().rewind();
out.getBuf().get(ret);
return ret;
}