code: func (m *Macro) Valid() error {
  	if m.Name == "" {
  		return fmt.Errorf("name empty")
  	}
  
  	validTypes := map[string]bool{
  		"constant": true,
  		"map":      true,
  		"query":    true,
  	}
  
  	if _, prs := validTypes[m.Arguments.Type]; !prs {
  		return fmt.Errorf("invalid arguments type")
  	}
  
  	if len(m.Selected) == 0 {
  		return fmt.Errorf("no selected values")
  	}
  
  	return nil
  }
docs: // Valid returns an error if a Macro contains invalid data