code: func (c *Config) Finalize() {
  	if c.Consul == nil {
  		c.Consul = DefaultConsulConfig()
  	}
  	c.Consul.Finalize()
  
  	if c.Dedup == nil {
  		c.Dedup = DefaultDedupConfig()
  	}
  	c.Dedup.Finalize()
  
  	if c.Exec == nil {
  		c.Exec = DefaultExecConfig()
  	}
  	c.Exec.Finalize()
  
  	if c.KillSignal == nil {
  		c.KillSignal = Signal(DefaultKillSignal)
  	}
  
  	if c.LogLevel == nil {
  		c.LogLevel = stringFromEnv([]string{
  			"CT_LOG",
  			"CONSUL_TEMPLATE_LOG",
  		}, DefaultLogLevel)
  	}
  
  	if c.MaxStale == nil {
  		c.MaxStale = TimeDuration(DefaultMaxStale)
  	}
  
  	if c.PidFile == nil {
  		c.PidFile = String("")
  	}
  
  	if c.ReloadSignal == nil {
  		c.ReloadSignal = Signal(DefaultReloadSignal)
  	}
  
  	if c.Syslog == nil {
  		c.Syslog = DefaultSyslogConfig()
  	}
  	c.Syslog.Finalize()
  
  	if c.Templates == nil {
  		c.Templates = DefaultTemplateConfigs()
  	}
  	c.Templates.Finalize()
  
  	if c.Vault == nil {
  		c.Vault = DefaultVaultConfig()
  	}
  	c.Vault.Finalize()
  
  	if c.Wait == nil {
  		c.Wait = DefaultWaitConfig()
  	}
  	c.Wait.Finalize()
  }
docs: // Finalize ensures all configuration options have the default values, so it
  // is safe to dereference the pointers later down the line. It also
  // intelligently tries to activate stanzas that should be "enabled" because
  // data was given, but the user did not explicitly add "Enabled: true" to the
  // configuration.