code: func Decode(dst, src []byte) (int, error) {
  	dLen := DecodedLen(len(src))
  	if EncodedLen(dLen) != len(src) {
  		return 0, ErrLength
  	}
  	if len(dst) < dLen {
  		panic("dst has insufficient length")
  	}
  	dst = dst[:0]
  	whichByte := uint(1)
  	bufByte := byte(0)
  	for _, v := range src {
  		if (v & 0x80) != 0 {
  			return len(dst), ErrBit
  		}
  		if whichByte > 1 {
  			dst = append(dst, bufByte|(v>>(8-whichByte)))
  		}
  		bufByte = v << whichByte
  		if whichByte == 8 {
  			whichByte = 0
  		}
  		whichByte++
  	}
  	return len(dst), nil
  }
docs: // Decode decodes src into DecodedLen(len(src)) bytes, returning the actual
  // number of bytes written to dst.
  //
  // If Decode encounters invalid input, it returns an error describing the
  // failure.