Transfers the specified source buffer's data to this buffer starting at
the current writerIndex until the source buffer's position
reaches its limit, and increases the writerIndex by the
number of the transferred bytes.

Returns a slice of this buffer's readable bytes. Modifying the content
of the returned buffer or this buffer affects each other's content
while they maintain separate indexes and marks. This method is
identical to buf.slice(buf.readerIndex(), buf.readableBytes()).
This method does not modify readerIndex or writerIndex of
this buffer.

Converts this buffer's readable bytes into a NIO buffer. The returned
buffer might or might not share the content with this buffer, while
they have separate indexes and marks. This method is identical to
buf.toByteBuffer(buf.readerIndex(), buf.readableBytes()).
This method does not modify readerIndex or writerIndex of
this buffer.

Decodes this buffer's readable bytes into a string with the specified
character set name. This method is identical to
buf.toString(buf.readerIndex(), buf.readableBytes(), charsetName).
This method does not modify readerIndex or writerIndex of
this buffer.