code: func NewACIArchive(u *url.URL) (Distribution, error) {
  	c, err := parseCIMD(u)
  	if err != nil {
  		return nil, fmt.Errorf("cannot parse URI: %q: %v", u.String(), err)
  	}
  	if c.Type != TypeACIArchive {
  		return nil, fmt.Errorf("illegal ACI archive distribution type: %q", c.Type)
  	}
  
  	// This should be a valid URL
  	data, err := url.QueryUnescape(c.Data)
  	if err != nil {
  		return nil, errwrap.Wrap(fmt.Errorf("error unescaping url %q", c.Data), err)
  	}
  	aciu, err := url.Parse(data)
  	if err != nil {
  		return nil, errwrap.Wrap(fmt.Errorf("error parsing url %q", c.Data), err)
  	}
  
  	// save the URI as sorted to make it ready for comparison
  	purell.NormalizeURL(u, purell.FlagSortQuery)
  
  	str := u.String()
  	if path := aciu.String(); filepath.Ext(path) == schema.ACIExtension {
  		str = path
  	}
  
  	return &ACIArchive{
  		cimdURL:      u,
  		transportURL: aciu,
  		str:          str,
  	}, nil
  }
docs: // NewACIArchive creates a new aci-archive distribution from the provided distribution uri.