A) No-go from me, since it adds so much complection
B2) No-go from me since it violates the immutability-property
B1) The only sensible alternative IMO, if possible we should move up isCompact and compact on the Bytes level and introduce a canMergeWith and mergeWith on Bytes so we can have compaction. This means removing ByteStrings.