code: func EncodeRune(p []byte, r rune) int {
  	if r <= rune3Max {
  		return encodeRune(p, r)
  	}
  	high, low := utf16.EncodeRune(r)
  	n := encodeRune(p, high)
  	n += encodeRune(p[n:], low)
  	return n
  }
docs: // EncodeRune writes into p (which must be large enough) the CESU-8 encoding of the rune. It returns the number of bytes written.