code: func (bd *BinaryDecoder) ReadBytes() ([]byte, error) {
  	//TODO make something with these if's!!
  	if err := checkEOF(bd.buf, bd.pos, 1); err != nil {
  		return nil, EOF
  	}
  	length, err := bd.ReadLong()
  	if err != nil {
  		return nil, err
  	}
  	if length < 0 {
  		return nil, NegativeBytesLength
  	}
  	if err = checkEOF(bd.buf, bd.pos, int(length)); err != nil {
  		return nil, EOF
  	}
  
  	bytes := make([]byte, length)
  	copy(bytes[:], bd.buf[bd.pos:bd.pos+length])
  	bd.pos += length
  	return bytes, err
  }
docs: // ReadBytes reads a bytes value. Returns a decoded value and an error if it occurs.