code: func NewDecbufAt(bs ByteSlice, off int, castagnoliTable *crc32.Table) Decbuf {
  	if bs.Len() < off+4 {
  		return Decbuf{E: ErrInvalidSize}
  	}
  	b := bs.Range(off, off+4)
  	l := int(binary.BigEndian.Uint32(b))
  
  	if bs.Len() < off+4+l+4 {
  		return Decbuf{E: ErrInvalidSize}
  	}
  
  	// Load bytes holding the contents plus a CRC32 checksum.
  	b = bs.Range(off+4, off+4+l+4)
  	dec := Decbuf{B: b[:len(b)-4]}
  
  	if exp := binary.BigEndian.Uint32(b[len(b)-4:]); dec.Crc32(castagnoliTable) != exp {
  		return Decbuf{E: ErrInvalidChecksum}
  	}
  	return dec
  }
docs: // NewDecbufAt returns a new decoding buffer. It expects the first 4 bytes
  // after offset to hold the big endian encoded content length, followed by the contents and the expected
  // checksum.