code: private void writeBlockData(ByteBuf out) {
          final Bzip2BitWriter writer = this.writer;
          final int[][] huffmanMergedCodeSymbols = this.huffmanMergedCodeSymbols;
          final byte[] selectors = this.selectors;
          final char[] mtf = mtfBlock;
          final int mtfLength = this.mtfLength;
  
          int selectorIndex = 0;
          for (int mtfIndex = 0; mtfIndex < mtfLength;) {
              final int groupEnd = Math.min(mtfIndex + HUFFMAN_GROUP_RUN_LENGTH, mtfLength) - 1;
              final int[] tableMergedCodeSymbols = huffmanMergedCodeSymbols[selectors[selectorIndex++]];
  
              while (mtfIndex <= groupEnd) {
                  final int mergedCodeSymbol = tableMergedCodeSymbols[mtf[mtfIndex++]];
                  writer.writeBits(out, mergedCodeSymbol >>> 24, mergedCodeSymbol);
              }
          }
      }
docs: Writes out the encoded block data.