code: func CompressBytes(data []byte) []byte {
  	if out := bitsetEncodeBytes(data); len(out) < len(data) {
  		return out
  	}
  	cpy := make([]byte, len(data))
  	copy(cpy, data)
  	return cpy
  }
docs: // The compression algorithm implemented by CompressBytes and DecompressBytes is
  // optimized for sparse input data which contains a lot of zero bytes. Decompression
  // requires knowledge of the decompressed data length.
  //
  // Compression works as follows:
  //
  //   if data only contains zeroes,
  //       CompressBytes(data) == nil
  //   otherwise if len(data) <= 1,
  //       CompressBytes(data) == data
  //   otherwise:
  //       CompressBytes(data) == append(CompressBytes(nonZeroBitset(data)), nonZeroBytes(data)...)
  //       where
  //         nonZeroBitset(data) is a bit vector with len(data) bits (MSB first):
  //             nonZeroBitset(data)[i/8] && (1 << (7-i%8)) != 0  if data[i] != 0
  //             len(nonZeroBitset(data)) == (len(data)+7)/8
  //         nonZeroBytes(data) contains the non-zero bytes of data in the same order
  // CompressBytes compresses the input byte slice according to the sparse bitset
  // representation algorithm. If the result is bigger than the original input, no
  // compression is done.