code: func (c *EnvConfig) Merge(o *EnvConfig) *EnvConfig {
  	if c == nil {
  		if o == nil {
  			return nil
  		}
  		return o.Copy()
  	}
  
  	if o == nil {
  		return c.Copy()
  	}
  
  	r := c.Copy()
  
  	if o.Blacklist != nil {
  		r.Blacklist = append(r.Blacklist, o.Blacklist...)
  	}
  
  	if o.Custom != nil {
  		r.Custom = append(r.Custom, o.Custom...)
  	}
  
  	if o.Pristine != nil {
  		r.Pristine = o.Pristine
  	}
  
  	if o.Whitelist != nil {
  		r.Whitelist = append(r.Whitelist, o.Whitelist...)
  	}
  
  	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.