code: func NewReader(in io.Reader) (*Reader, error) {
  	r := new(Reader)
  	r.r.source = in
  	r.r.seeker, _ = in.(io.Seeker)
  	if err := r.init(); err != nil {
  		return nil, err
  	}
  	return r, nil
  }
docs: // NewReader creates a new Reader.
  // Some of the returned reader's methods will only work if in also implements
  // io.Seeker