def mergeMapping(self, map1, map2):
        """
        Merge two mappings recursively. The second mapping is unchanged,
        and the first is changed to reflect the results of the merge.

        @param map1: The mapping to merge into.
        @type map1: L{Mapping}.
        @param map2: The mapping to merge.
        @type map2: L{Mapping}.
        """
        keys = map1.keys()
        for key in map2.keys():
            if key not in keys:
                map1[key] = map2[key]
            else:
                obj1 = map1[key]
                obj2 = map2[key]
                decision = self.resolver(map1, map2, key)
                if decision == "merge":
                    self.mergeMapping(obj1, obj2)
                elif decision == "append":
                    self.mergeSequence(obj1, obj2)
                elif decision == "overwrite":
                    map1[key] = obj2
                elif decision == "mismatch":
                    self.handleMismatch(obj1, obj2)
                else:
                    msg = "unable to merge: don't know how to implement %r"
                    raise ValueError(msg % decision)
dataset/ETHPy150Open twitterdev/twitter-for-bigquery/libs/config.py/ConfigMerger.mergeMapping/original