Code example for BufferUnderflowException

     * @param size The limit of the buffer to obtain. 
     * @return The sliced byte buffer. 
    public ByteBuffer bufferBlock(int size) {
        if (size > mBuffer.remaining()) {
            throw new BufferUnderflowException();
        ByteBuffer buffer = mBuffer.slice();
        return buffer;
     * Retrieves a block of data at the current position from the underlying byte buffer. 
     * @param size The size of the data block to allocate. 
     * @return The allocated data block. 
    public byte[] dataBlock(int size) {
        byte[] block = new byte[size];