code: func DecodeRune(p []byte) (rune, int) {
  	high, n1, _ := decodeRune(p)
  	if !utf16.IsSurrogate(high) {
  		return high, n1
  	}
  	low, n2, _ := decodeRune(p[n1:])
  	if low == utf8.RuneError {
  		return low, n1 + n2
  	}
  	return utf16.DecodeRune(high, low), n1 + n2
  }
docs: // DecodeRune unpacks the first CESU-8 encoding in p and returns the rune and its width in bytes.