What about saving some copies when the buffers are full?
````scala
if (buffer.readableBytes() == buffer.capacity()) {
  // Use entire backing array
  buffer.array()
} else {
  // Copy relevant bytes only
  val bytes = new Array[Byte](buffer.readableBytes())
  buffer.readBytes(bytes)
  bytes
}
````