code: def _isinstance(obj, cls, bound_Generic=None, bound_typevars=None,
              bound_typevars_readonly=False, follow_fwd_refs=True, _recursion_check=None):
      if bound_typevars is None:
          bound_typevars = {}
      if is_Generic(cls) and cls.__origin__ is typing.Iterable:
          if not is_iterable(obj):
              return False
          itp = get_iterable_itemtype(obj)
          if itp is None:
              return not pytypes.check_iterables
          else:
              return _issubclass(itp, cls.__args__[0], bound_Generic, bound_typevars,
                      bound_typevars_readonly, follow_fwd_refs, _recursion_check)
      if is_Callable(cls):
          return _isinstance_Callable(obj, cls, bound_Generic, bound_typevars,
                  bound_typevars_readonly, follow_fwd_refs, _recursion_check)
      return _issubclass(deep_type(obj), cls, bound_Generic, bound_typevars,
              bound_typevars_readonly, follow_fwd_refs, _recursion_check)