code: func (i *Client) Contains(c context.Context, items []*isolateservice.HandlersEndpointsV1Digest) (out []*PushState, err error) {
  	end := tracer.Span(i, "contains", tracer.Args{"number": len(items)})
  	defer func() { end(tracer.Args{"err": err}) }()
  	in := isolateservice.HandlersEndpointsV1DigestCollection{Items: items, Namespace: &isolateservice.HandlersEndpointsV1Namespace{}}
  	in.Namespace.Namespace = i.namespace
  	data := &isolateservice.HandlersEndpointsV1UrlCollection{}
  	if err = i.postJSON(c, "/_ah/api/isolateservice/v1/preupload", nil, in, data); err != nil {
  		return nil, err
  	}
  	out = make([]*PushState, len(items))
  	for _, e := range data.Items {
  		index := int(e.Index)
  		out[index] = &PushState{
  			status: *e,
  			digest: isolated.HexDigest(items[index].Digest),
  			size:   items[index].Size,
  		}
  	}
  	return out, nil
  }
docs: // Contains looks up cache presence on the server of multiple items.
  //
  // The returned list is in the same order as 'items', with entries nil for
  // items that were present.