code: func ReversedReadlines(r io.ReadSeeker) (lines chan []byte) {
  	lines = make(chan []byte)
  	go func() {
  		defer close(lines)
  
  		var c [1]byte
  		rr := NewReverseReader(r)
  		line := make([]byte, 0, 4096)
  		for n, err := rr.Read(c[:]); err != io.EOF && n != 0; n, err = rr.Read(c[:]) {
  			if c[0] == '\n' {
  				cpLine := make([]byte, len(line))
  				reversedCopy(cpLine, line)
  				lines <- cpLine
  				line = make([]byte, 0, 4096)
  			} else {
  				// don't append newline
  				line = append(line, c[0])
  			}
  		}
  		// process the last line
  		cpLine := make([]byte, len(line))
  		reversedCopy(cpLine, line)
  		lines <- cpLine
  	}()
  	return
  }
docs: // ReversedReadlines returns the lines found in a reader in reversed order