code: func (i *Client) Push(c context.Context, state *PushState, source Source) (err error) {
  	// This push operation may be a retry after failed finalization call below,
  	// no need to reupload contents in that case.
  	if !state.uploaded {
  		// PUT file to uploadURL.
  		if err = i.doPush(c, state, source); err != nil {
  			log.Printf("doPush(%s) failed: %s\n%#v", state.digest, err, state)
  			return
  		}
  		state.uploaded = true
  	}
  
  	// Optionally notify the server that it's done.
  	if state.status.GsUploadUrl != "" {
  		end := tracer.Span(i, "finalize", nil)
  		defer func() { end(tracer.Args{"err": err}) }()
  		// TODO(vadimsh): Calculate MD5 or CRC32C sum while uploading a file and
  		// send it to isolated server. That way isolate server can verify that
  		// the data safely reached Google Storage (GS provides MD5 and CRC32C of
  		// stored files).
  		in := isolateservice.HandlersEndpointsV1FinalizeRequest{UploadTicket: state.status.UploadTicket}
  		headers := map[string]string{"Cache-Control": "public, max-age=31536000"}
  		if err = i.postJSON(c, "/_ah/api/isolateservice/v1/finalize_gs_upload", headers, in, nil); err != nil {
  			log.Printf("Push(%s) (finalize) failed: %s\n%#v", state.digest, err, state)
  			return
  		}
  	}
  	state.finalized = true
  	return
  }
docs: // Push pushed a missing item, as reported by Contains(), to the server.