code: func (c *SSLConfig) Merge(o *SSLConfig) *SSLConfig {
  	if c == nil {
  		if o == nil {
  			return nil
  		}
  		return o.Copy()
  	}
  
  	if o == nil {
  		return c.Copy()
  	}
  
  	r := c.Copy()
  
  	if o.Cert != nil {
  		r.Cert = o.Cert
  	}
  
  	if o.CaCert != nil {
  		r.CaCert = o.CaCert
  	}
  
  	if o.CaPath != nil {
  		r.CaPath = o.CaPath
  	}
  
  	if o.Enabled != nil {
  		r.Enabled = o.Enabled
  	}
  
  	if o.Key != nil {
  		r.Key = o.Key
  	}
  
  	if o.ServerName != nil {
  		r.ServerName = o.ServerName
  	}
  
  	if o.Verify != nil {
  		r.Verify = o.Verify
  	}
  
  	return r
  }
docs: // Merge combines all values in this configuration with the values in the other
  // configuration, with values in the other configuration taking precedence.
  // Maps and slices are merged, most other values are overwritten. Complex
  // structs define their own merge functionality.