code: func NewUploadPackRequestFromCapabilities(adv *capability.List) *UploadPackRequest {
  	ur := NewUploadRequestFromCapabilities(adv)
  	return &UploadPackRequest{
  		UploadHaves:   UploadHaves{},
  		UploadRequest: *ur,
  	}
  }
docs: // NewUploadPackRequestFromCapabilities creates a new UploadPackRequest and
  // returns a pointer. The request capabilities are filled with the most optiomal
  // ones, based on the adv value (advertaised capabilities), the UploadPackRequest
  // it has no wants, haves or shallows and an infinite depth