code: func NewAppc(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 != TypeAppc {
  		return nil, fmt.Errorf("wrong distribution type: %q", c.Type)
  	}
  
  	appcStr := c.Data
  	for n, v := range u.Query() {
  		appcStr += fmt.Sprintf(",%s=%s", n, v[0])
  	}
  	app, err := discovery.NewAppFromString(appcStr)
  	if err != nil {
  		return nil, fmt.Errorf("wrong appc image string %q: %v", u.String(), err)
  	}
  
  	return NewAppcFromApp(app), nil
  }
docs: // NewAppc returns an Appc distribution from an Appc distribution URI