code: func (ss *superset) NewFileReader(fetcher blob.Fetcher) (*FileReader, error) {
  	if ss.Type != "file" && ss.Type != "bytes" {
  		return nil, fmt.Errorf("schema/filereader: Superset not of type \"file\" or \"bytes\"")
  	}
  	size := int64(ss.SumPartsSize())
  	fr := &FileReader{
  		fetcher: fetcher,
  		ss:      ss,
  		size:    size,
  		ssm:     make(map[blob.Ref]*superset),
  	}
  	fr.SectionReader = io.NewSectionReader(fr, 0, size)
  	return fr, nil
  }
docs: // NewFileReader returns a new FileReader, reading bytes and blobs
  // from the provided fetcher.
  //
  // NewFileReader does no fetch operation on the fetcher itself.  The
  // fetcher is only used in subsequent read operations.
  //
  // An error is only returned if the type of the superset is not either
  // "file" or "bytes".