code: func (x ContainerConfig) Merge(y ContainerConfig) ContainerConfig {
  	x.TTY = x.TTY || y.TTY
  	x.Stdin = x.Stdin || y.Stdin
  	x.Data = x.Data || y.Data
  	if y.Args != nil {
  		x.Args = y.Args
  	}
  	env := make(map[string]string, len(x.Env)+len(y.Env))
  	for k, v := range x.Env {
  		env[k] = v
  	}
  	for k, v := range y.Env {
  		env[k] = v
  	}
  	x.Env = env
  	mounts := make([]Mount, 0, len(x.Mounts)+len(y.Mounts))
  	mounts = append(mounts, x.Mounts...)
  	mounts = append(mounts, y.Mounts...)
  	x.Mounts = mounts
  	volumes := make([]VolumeBinding, 0, len(x.Volumes)+len(y.Volumes))
  	volumes = append(volumes, x.Volumes...)
  	volumes = append(volumes, y.Volumes...)
  	x.Volumes = volumes
  	ports := make([]Port, 0, len(x.Ports)+len(y.Ports))
  	ports = append(ports, x.Ports...)
  	ports = append(ports, y.Ports...)
  	x.Ports = ports
  	if y.WorkingDir != "" {
  		x.WorkingDir = y.WorkingDir
  	}
  	if y.Uid != nil {
  		x.Uid = y.Uid
  	}
  	if y.Gid != nil {
  		x.Gid = y.Gid
  	}
  	x.HostNetwork = x.HostNetwork || y.HostNetwork
  	x.HostPIDNamespace = x.HostPIDNamespace || y.HostPIDNamespace
  	return x
  }
docs: // Apply 'y' to 'x', returning a new structure.  'y' trumps.