code: func WriteFileChunks(ctx context.Context, bs blobserver.StatReceiver, file *Builder, r io.Reader) error {
  	size, spans, err := writeFileChunks(ctx, bs, file, r)
  	if err != nil {
  		return err
  	}
  	parts := []BytesPart{}
  	future := newUploadBytesFuture()
  	addBytesParts(ctx, bs, &parts, spans, future)
  	future.errc <- nil // Get will still block on addBytesParts' children
  	if _, err := future.Get(); err != nil {
  		return err
  	}
  	return file.PopulateParts(size, parts)
  }
docs: // WriteFileChunks uploads chunks of r to bs while populating file.
  // It does not upload file.