code: func Encode(b []byte, v int32) int {
  	u := uint32(v)
  	switch {
  	case u < 0x80:
  		b[0] = byte(u)
  		return 1
  	case u < 0x4000:
  		_ = b[1]
  		b[0] = byte(u>>8)&0x3f | 0x80
  		b[1] = byte(u)
  		return 2
  	case u < 0x200000:
  		_ = b[2]
  		b[0] = byte(u>>16)&0x1f | 0xc0
  		b[1] = byte(u >> 8)
  		b[2] = byte(u)
  		return 3
  	case u < 0x10000000:
  		_ = b[3]
  		b[0] = byte(u>>24)&0x0f | 0xe0
  		b[1] = byte(u >> 16)
  		b[2] = byte(u >> 8)
  		b[3] = byte(u)
  		return 4
  	default:
  		_ = b[4]
  		b[0] = byte(u>>28) | 0xf0
  		b[1] = byte(u >> 20)
  		b[2] = byte(u >> 12)
  		b[3] = byte(u >> 2)
  		b[4] = byte(u)
  		return 5
  	}
  }
docs: // Encode encodes v as an ITF-8 into b, which must be large enough, and
  // and returns the number of bytes written.