Performs deep-merge of :attr:`values` onto the :class:`Mapping` object
        named :attr:`dict_name`.

        If :attr:`dict_name` does not yet exist, then a deep copy of
        :attr:`values` is assigned as the initial mapping object for the given
        name.

        :param str dict_name:  The name of the dict onto which the values
            should be merged.

def merge(self, dict_name, values):
        """
        Performs deep-merge of :attr:`values` onto the :class:`Mapping` object
        named :attr:`dict_name`.

        If :attr:`dict_name` does not yet exist, then a deep copy of
        :attr:`values` is assigned as the initial mapping object for the given
        name.

        :param str dict_name:  The name of the dict onto which the values
            should be merged.

        """

        with self.lock:
            d = self.dicts.get(dict_name)
            if d:
                deep_merge_dicts(d, values)
            else:
                d = copy.deepcopy(values)
            self.dicts[dict_name] = d