code: func UseTrait(names ...string) {
  	var def dslengine.Definition
  
  	switch typedDef := dslengine.CurrentDefinition().(type) {
  	case *design.ResourceDefinition:
  		def = typedDef
  	case *design.ActionDefinition:
  		def = typedDef
  	case *design.AttributeDefinition:
  		def = typedDef
  	case *design.MediaTypeDefinition:
  		def = typedDef
  	default:
  		dslengine.IncompatibleDSL()
  	}
  
  	if def != nil {
  		for _, name := range names {
  			if trait, ok := design.Design.Traits[name]; ok {
  				dslengine.Execute(trait.DSLFunc, def)
  			} else {
  				dslengine.ReportError("unknown trait %s", name)
  			}
  		}
  	}
  }
docs: // UseTrait can be used in: Resource, Action, Type, MediaType, Attribute
  //
  // UseTrait executes the API trait with the given name. An API level DSL trait must be
  // defined first. UseTrait takes a variable number of trait names.