code: func recurseConfig(result map[string]comparable, path []string, group *cb.ConfigGroup) error {
  	if err := addToMap(comparable{key: path[len(path)-1], path: path[:len(path)-1], ConfigGroup: group}, result); err != nil {
  		return err
  	}
  
  	for key, group := range group.Groups {
  		nextPath := make([]string, len(path)+1)
  		copy(nextPath, path)
  		nextPath[len(nextPath)-1] = key
  		if err := recurseConfig(result, nextPath, group); err != nil {
  			return err
  		}
  	}
  
  	for key, value := range group.Values {
  		if err := addToMap(comparable{key: key, path: path, ConfigValue: value}, result); err != nil {
  			return err
  		}
  	}
  
  	for key, policy := range group.Policies {
  		if err := addToMap(comparable{key: key, path: path, ConfigPolicy: policy}, result); err != nil {
  			return err
  		}
  	}
  
  	return nil
  }
docs: // recurseConfig is used only internally by mapConfig