code: def is_compatible(self, typevar, its_type):
          
          result = True
          binding = self.binding_of(typevar)  # may or may not exist
          if binding is None:
              self.bind(typevar, its_type)  # initial binding, OK
          elif issubclass(binding, its_type):
              self.bind(typevar, its_type)  # rebind to supertype, OK
          elif not issubclass(its_type, binding):  # accept like TypeChecker
              return False
          binding = self.binding_of(typevar)  # will now exist
          if (typevar.__bound__ and
                  not issubclass(binding, typevar.__bound__)):
              return False  # bound violation
          if (len(typevar.__constraints__) > 0 and
                  not issubclass(binding, tg.Union[typevar.__constraints__])):
              return False  # constraint violation
          return True
docs: Checks whether its_type conforms to typevar.
          If the typevar is not yet bound, it will be bound to its_type.
          The covariance/contravariance checking described in the respective section
          of PEP484 applies to declared types, but here we have actual types;
          therefore, (1) subtypes are always compatible, (2) we may have to
          rebind the type variable to supertypes of the current binding several
          times until the required most general binding is found.