<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_container_create_kwargs(self, action, container_name, kwargs=None):
 """ Generates keyword arguments for the Docker client to create a container. :param action: Action configuration. :type action: ActionConfig :param container_name: Container name. :type container_name: unicode | str :param kwargs: Additional keyword arguments to complement or override the configuration-based values. :type kwargs: dict | NoneType :return: Resulting keyword arguments. :rtype: dict """

        policy = self._policy
        client_config = action.client_config
        container_map = action.container_map
        container_config = action.config
        image_tag = container_map.get_image(container_config.image or action.config_id.config_name)
        default_paths = policy.default_volume_paths[action.config_id.map_name]
        c_kwargs = dict(
            name=container_name,
            image=format_image_tag(image_tag),
            volumes=get_volumes(container_map, container_config, default_paths,
                                client_config.features['volumes']),
            user=extract_user(container_config.user),
            ports=[resolve_value(port_binding.exposed_port)
                   for port_binding in container_config.exposes if port_binding.exposed_port],
            hostname=policy.get_hostname(container_name, action.client_name) if container_map.set_hostname else None,
            domainname=resolve_value(client_config.get('domainname', container_map.default_domain)) or None,
        )
        if container_config.network_mode == 'none':
            c_kwargs['network_disabled'] = True
        elif client_config.features['networks'] and container_config.networks:
            first_network = container_config.networks[0]
            c_kwargs['networking_config'] = NetworkingConfig({
                policy.nname(action.config_id.map_name, first_network.network_name): EndpointConfig(
                    client_config.version, **self.get_network_create_endpoint_kwargs(action, first_network)
                )
            })
        if client_config.features['stop_signal'] and container_config.stop_signal:
            c_kwargs['stop_signal'] = container_config.stop_signal
        hc_extra_kwargs = kwargs.pop('host_config', None) if kwargs else None
        use_host_config = client_config.features['host_config']
        if use_host_config:
            hc_kwargs = self.get_container_host_config_kwargs(action, None, kwargs=hc_extra_kwargs)
            if hc_kwargs:
                if use_host_config == USE_HC_MERGE:
                    c_kwargs.update(hc_kwargs)
                else:
                    c_kwargs['host_config'] = HostConfig(version=client_config.version, **hc_kwargs)
        if client_config.features['stop_timeout'] and container_config.stop_timeout:
            c_kwargs['stop_timeout'] = container_config.stop_timeout
        if client_config.features['healthcheck'] and container_config.healthcheck:
            c_kwargs['healthcheck'] = container_config.healthcheck._asdict()
        update_kwargs(c_kwargs, init_options(container_config.create_options), kwargs)
        return c_kwargs