class_docstr: Metaclass to support subtyping with parameters for pattern matching, e.g. ``Number[int, int]``.
class_docstr_tok: ["Metaclass","to","support","subtyping","with","parameters","for","pattern","matching",",","e.g",".","``","Number","[","int",",","int","]","``","."]
code: def __subclasscheck__(cls, subcls):  # issubclass(subcls, cls)
      if cls is subcls:
          return True
  
      cls_origin = get_origin(cls)
      if not isinstance(subcls, GenericTypeMeta):
          return super(GenericTypeMeta, cls_origin).__subclasscheck__(
              subcls
          )
  
      if not super(GenericTypeMeta, cls_origin).__subclasscheck__(
          get_origin(subcls)
      ):
          return False
  
      cls_args, subcls_args = get_args(cls), get_args(subcls)
      if len(cls_args) != len(subcls_args):
          return len(cls_args) == 0
  
      return all(
          deep_issubclass(_type_to_typing(ps), _type_to_typing(pc))
          for ps, pc in zip(subcls_args, cls_args)
      )
  
imports: import functools
  import sys
  import typing
  import weakref
  import typing_extensions
  from multipledispatch.variadic import Variadic
  from multipledispatch.variadic import isvariadic
label_desc: Use image node_id 3 for calling the GenericTypeMeta obj's underlying member method code with example usage: obj.__subclasscheck__(cls, subcls) and returns: all, True, super, False, unknown