docs: def _check_intersection(self, other):
          """Check that intersection of two objects has the same information."""
          # pylint: disable=C0123
          props = ["_callables_db", "_reverse_callables_db", "_modules_dict"]
          for prop in props:
              self_dict = getattr(self, prop)
              other_dict = getattr(other, prop)
              keys_self = set(self_dict.keys())
              keys_other = set(other_dict.keys())
              for key in keys_self & keys_other:
                  svalue = self_dict[key]
                  ovalue = other_dict[key]
                  same_type = type(svalue) == type(ovalue)
                  if same_type:
                      list_comp = isinstance(svalue, list) and any(
                          [item not in svalue for item in ovalue]
                      )
                      str_comp = isinstance(svalue, str) and svalue != ovalue
                      dict_comp = isinstance(svalue, dict) and svalue != ovalue
                      comp = any([list_comp, str_comp, dict_comp])
                  if (not same_type) or (same_type and comp):
                      emsg = "Conflicting information between objects"
                      raise RuntimeError(emsg)