code: func Reference(t design.DataType) {
  	switch def := dslengine.CurrentDefinition().(type) {
  	case *design.MediaTypeDefinition:
  		def.Reference = t
  	case *design.AttributeDefinition:
  		def.Reference = t
  	default:
  		dslengine.IncompatibleDSL()
  	}
  }
docs: // Reference can be used in: MediaType, Type
  //
  // Reference sets a type or media type reference. The value itself can be a type or a media type.
  // The reference type attributes define the default properties for attributes with the same name in
  // the type using the reference. So for example if a type is defined as such:
  //
  //	var Bottle = Type("bottle", func() {
  //		Attribute("name", func() {
  //			MinLength(3)
  //		})
  //		Attribute("vintage", Integer, func() {
  //			Minimum(1970)
  //		})
  //		Attribute("somethingelse")
  //	})
  //
  // Declaring the following media type:
  //
  //	var BottleMedia = MediaType("vnd.goa.bottle", func() {
  //		Reference(Bottle)
  //		Attributes(func() {
  //			Attribute("id", Integer)
  //			Attribute("name")
  //			Attribute("vintage")
  //		})
  //	})
  //
  // defines the "name" and "vintage" attributes with the same type and validations as defined in
  // the Bottle type.