code: func (a *AttributeDefinition) AllRequired() (required []string) {
  	if a == nil || a.Validation == nil {
  		return
  	}
  	required = a.Validation.Required
  	if ds, ok := a.Type.(DataStructure); ok {
  		required = append(required, ds.Definition().AllRequired()...)
  	}
  	return
  }
docs: // AllRequired returns the list of all required fields from the underlying object.
  // An attribute type can be itself an attribute (e.g. a MediaTypeDefinition or a UserTypeDefinition)
  // This happens when the DSL uses references for example. So traverse the hierarchy and collect
  // all the required validations.