code: func (c *Config) ProviderConfigsByFullName() map[string]*ProviderConfig {
  	ret := make(map[string]*ProviderConfig, len(c.ProviderConfigs))
  
  	for _, pc := range c.ProviderConfigs {
  		ret[pc.FullName()] = pc
  	}
  
  	return ret
  }
docs: // ProviderConfigsByFullName returns a map from provider full names (as
  // returned by ProviderConfig.FullName()) to the corresponding provider
  // configs.
  //
  // This function returns no new information than what's already in
  // c.ProviderConfigs, but returns it in a more convenient shape. If there
  // is more than one provider config with the same full name then the result
  // is undefined, but that is guaranteed not to happen for any config that
  // has passed validation.