func (cb *Buffer) Bytes() []byte {
	return cb.buf[cb.index:]
}
Bytes returns the slice of bytes remaining in the buffer. Note that
this does not perform a copy: if the contents of the returned slice
are modified, the modifications will be visible to subsequent reads
via the buffer.
package codec
import (
	"fmt"
	"io"
)
type Buffer struct {
	buf   []byte
	index int
	len   int
}
func NewBuffer(buf []byte) *Buffer {
	return &Buffer{buf: buf, index: 0, len: len(buf)}
}
func (cb *Buffer) Reset(buf []byte) {
	cb.buf = buf
	cb.index = 0
	cb.len = len(buf)
}