private void decompressViaByteBuff(ByteBuff blockBufferWithoutHeader, ByteBuff onDiskBlock,
    int onDiskSizeWithoutHeader) throws IOException {
    Compression.Algorithm compression = fileContext.getCompression();
    ByteBuffDecompressor decompressor = compression.getByteBuffDecompressor();
    try {
      decompressor.reinit(fileContext.getDecompressionContext());
      decompressor.decompress(blockBufferWithoutHeader, onDiskBlock, onDiskSizeWithoutHeader);
    } finally {
      compression.returnByteBuffDecompressor(decompressor);
    }
  }
When only decompression is needed (not decryption), and the input and output buffers are
SingleByteBuffs, and the decompression algorithm supports it, we can do decompression without
any intermediate heap buffers. Do not call unless you've checked
{@link #canDecompressViaByteBuff} first.
hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/HFileBlockDefaultDecodingContext.java