code: func (p *Lexer) Rune() (rune, error) {
  
  	p.fill()
  
  	r, size := rune(p.buf[p.r]), 1
  	if r >= utf8.RuneSelf {
  		r, size = utf8.DecodeRune(p.buf[p.r:p.lastByte])
  	}
  	p.r += size
  	p.lastRuneSize = append(p.lastRuneSize, size)
  	return r, nil
  }
docs: // Rune reads a single UTF-8 encoded Unicode character and returns the
  // rune. If the encoded rune is invalid, it consumes one byte
  // and returns unicode.ReplacementChar (U+FFFD) with a size of 1.