code: func (fst fileTorrentImplIO) ReadAt(b []byte, off int64) (n int, err error) {
  	for _, fi := range fst.fts.info.UpvertedFiles() {
  		for off < fi.Length {
  			n1, err1 := fst.readFileAt(fi, b, off)
  			n += n1
  			off += int64(n1)
  			b = b[n1:]
  			if len(b) == 0 {
  				// Got what we need.
  				return
  			}
  			if n1 != 0 {
  				// Made progress.
  				continue
  			}
  			err = err1
  			if err == io.EOF {
  				// Lies.
  				err = io.ErrUnexpectedEOF
  			}
  			return
  		}
  		off -= fi.Length
  	}
  	err = io.EOF
  	return
  }
docs: // Only returns EOF at the end of the torrent. Premature EOF is ErrUnexpectedEOF.