private static int readLengthBytes(ByteBuffer compressed, int[] bytes, int ix) {
    int byteCount = compressed.remaining();
    while (byteCount > 0 && ix < 3) {
      bytes[ix++] = compressed.get() & 0xff;
      --byteCount;
    }
    return ix;
  }
Reads one compression block from the source; handles compression blocks read from
multiple ranges (usually, that would only happen with zcr).
Adds stuff to cachedBuffers, toDecompress and toRelease (see below what each does).
@param current BufferChunk where compression block starts.
@param cacheBuffers The result buffer array to add pre-allocated target cache buffer.
@param toDecompress The list of work to decompress - pairs of compressed buffers and the
                    target buffers (same as the ones added to cacheBuffers).
@param toRelease The list of buffers to release to zcr because they are no longer in use.
@param badEstimates The list of bad estimates that cannot be decompressed.
@return The resulting cache chunk.
ql/src/java/org/apache/hadoop/hive/ql/io/orc/encoded/EncodedReaderImpl.java