code: func readPrefixOrFile(prefix []byte, fetcher blob.Fetcher, b *schema.Blob, fn func(filePrefixReader) error) (err error) {
  	pr := bytes.NewReader(prefix)
  	err = fn(pr)
  	if err == io.EOF || err == io.ErrUnexpectedEOF {
  		var fr *schema.FileReader
  		fr, err = b.NewFileReader(fetcher)
  		if err == nil {
  			err = fn(fr)
  			fr.Close()
  		}
  	}
  	return err
  }
docs: // readPrefixOrFile executes a given func with a reader on the passed prefix and
  // falls back to passing a reader on the whole file if the func returns an error.