def __add__(self, other):
self._check_intersection(other)<EOL>robj = Callables()<EOL>robj._callables_db = copy.deepcopy(self._callables_db)<EOL>robj._callables_db.update(copy.deepcopy(other._callables_db))<EOL>robj._reverse_callables_db = copy.deepcopy(self._reverse_callables_db)<EOL>robj._reverse_callables_db.update(copy.deepcopy(other._reverse_callables_db))<EOL>robj._modules_dict = copy.deepcopy(self._modules_dict)<EOL>robj._modules_dict.update(copy.deepcopy(other._modules_dict))<EOL>robj._module_names = list(set(self._module_names[:] + other._module_names[:]))<EOL>robj._class_names = list(set(self._class_names[:] + other._class_names[:]))<EOL>robj._fnames = copy.deepcopy(self._fnames)<EOL>robj._fnames.update(copy.deepcopy(other._fnames))<EOL>return robj<EOL>
Merge two objects.

:raises: RuntimeError (Conflicting information between objects)

For example:

    >>> import pexdoc.pcontracts, pexdoc.exh, pexdoc.pinspect, sys
    >>> obj1 = pexdoc.pinspect.Callables(
    ...     [sys.modules['pexdoc.exh'].__file__]
    ... )
    >>> obj2 = pexdoc.pinspect.Callables(
    ...     [sys.modules['pexdoc.pcontracts'].__file__]
    ... )
    >>> obj3 = pexdoc.pinspect.Callables([
    ... sys.modules['pexdoc.exh'].__file__,
    ... sys.modules['pexdoc.pcontracts'].__file__,
    ... ])
    >>> obj1 == obj3
    False
    >>> obj1 == obj2
    False
    >>> obj1+obj2 == obj3
    True