code: def is_type_sub_type_of(schema, maybe_subtype, super_type):
      if maybe_subtype is super_type:
          return True
  
      if isinstance(super_type, GraphQLNonNull):
          if isinstance(maybe_subtype, GraphQLNonNull):
              return is_type_sub_type_of(
                  schema, maybe_subtype.of_type, super_type.of_type
              )
          return False
      elif isinstance(maybe_subtype, GraphQLNonNull):
          return is_type_sub_type_of(
              schema, maybe_subtype.of_type, super_type
          )
  
      if isinstance(super_type, GraphQLList):
          if isinstance(maybe_subtype, GraphQLList):
              return is_type_sub_type_of(
                  schema, maybe_subtype.of_type, super_type.of_type
              )
          return False
      elif isinstance(maybe_subtype, GraphQLList):
          return False
  
      if (
          is_abstract_type(super_type)
          and isinstance(maybe_subtype, GraphQLObjectType)
          and schema.is_possible_type(super_type, maybe_subtype)
      ):
          return True
  
      return False
  
imports: from ..type.definition import GraphQLInterfaceType, GraphQLList, GraphQLNonNull, GraphQLObjectType, GraphQLUnionType, is_abstract_type
label_desc: Use image node_id 2 for calling a global function with example usage: is_type_sub_type_of(schema, maybe_subtype, super_type) and returns: False, True, False, False, True, is_type_sub_type_of, is_type_sub_type_of, is_type_sub_type_of, False