byte[] getBytes() {
    if (!hasRemaining()) throw new IllegalAccessError();
    byte[] bytes = new byte[this.remaining];
    int offset = 0;
    for (ByteBuffer bb : this.buffers) {
      int length = bb.remaining();
      bb.get(bytes, offset, length);
      offset += length;
    }
    return bytes;
  }
Expensive. Makes a new buffer to hold a copy of what is in contained ByteBuffers. This call
drains this instance; it cannot be used subsequent to the call.
@return A new byte buffer with the content of all contained ByteBuffers.
hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/BufferChain.java