code: func (r *UploadRequest) Validate() error {
  	if len(r.Wants) == 0 {
  		return fmt.Errorf("want can't be empty")
  	}
  
  	if err := r.validateRequiredCapabilities(); err != nil {
  		return err
  	}
  
  	if err := r.validateConflictCapabilities(); err != nil {
  		return err
  	}
  
  	return nil
  }
docs: // Validate validates the content of UploadRequest, following the next rules:
  //   - Wants MUST have at least one reference
  //   - capability.Shallow MUST be present if Shallows is not empty
  //   - is a non-zero DepthCommits is given capability.Shallow MUST be present
  //   - is a DepthSince is given capability.Shallow MUST be present
  //   - is a DepthReference is given capability.DeepenNot MUST be present
  //   - MUST contain only maximum of one of capability.Sideband and capability.Sideband64k
  //   - MUST contain only maximum of one of capability.MultiACK and capability.MultiACKDetailed