code: func variablesStr(vs []*Variable) string {
  	result := ""
  	ks := make([]string, 0, len(vs))
  	m := make(map[string]*Variable)
  	for _, v := range vs {
  		ks = append(ks, v.Name)
  		m[v.Name] = v
  	}
  	sort.Strings(ks)
  
  	for _, k := range ks {
  		v := m[k]
  
  		required := ""
  		if v.Required() {
  			required = " (required)"
  		}
  
  		declaredType := ""
  		if v.DeclaredType != "" {
  			declaredType = fmt.Sprintf(" (%s)", v.DeclaredType)
  		}
  
  		if v.Default == nil || v.Default == "" {
  			v.Default = "<>"
  		}
  		if v.Description == "" {
  			v.Description = "<>"
  		}
  
  		result += fmt.Sprintf(
  			"%s%s%s\n  %v\n  %s\n",
  			k,
  			required,
  			declaredType,
  			v.Default,
  			v.Description)
  	}
  
  	return strings.TrimSpace(result)
  }
docs: // This helper turns a variables field into a deterministic
  // string value for comparison in tests.