code: func (r *Reader) readRune() (rune, error) {
  	r1, _, err := r.r.ReadRune()
  
  	// Handle \r\n here.  We make the simplifying assumption that
  	// anytime \r is followed by \n that it can be folded to \n.
  	// We will not detect files which contain both \r\n and bare \n.
  	if r1 == '\r' {
  		r1, _, err = r.r.ReadRune()
  		if err == nil {
  			if r1 != '\n' {
  				r.r.UnreadRune()
  				r1 = '\r'
  			}
  		}
  	}
  	r.column++
  	return r1, err
  }
docs: // readRune reads one rune from r, folding \r\n to \n and keeping track
  // of how far into the line we have read.  r.column will point to the start
  // of this rune, not the end of this rune.