Merge other (dict or OrderedSet) into this environment.

        Only works for basic types: str, list, tuple, dict and OrderedSet.

def merge(self, other):
        """Merge other (dict or OrderedSet) into this environment.

        Only works for basic types: str, list, tuple, dict and OrderedSet.
        """
        for key, value in other.items():
            if not key in self:
                self[key] = value
            elif isinstance(value, (list, tuple)):
                self[key] += value
            elif isinstance(value, OrderedSet):
                if isinstance(self[key], str):
                    self[key] = OrderedSet([self[key]])
                elif not isinstance(self[key], OrderedSet):
                    self[key] = OrderedSet(self[key])
                self[key] |= value
            else:
                self[key] = value
        return self