code: def do_types_overlap(schema, t1, t2):
      # print 'do_types_overlap', t1, t2
      if t1 == t2:
          # print '1'
          return True
  
      if isinstance(t1, (GraphQLInterfaceType, GraphQLUnionType)):
          if isinstance(t2, (GraphQLInterfaceType, GraphQLUnionType)):
              # If both types are abstract, then determine if there is any intersection
              # between possible concrete types of each.
              s = any(
                  [
                      schema.is_possible_type(t2, type)
                      for type in schema.get_possible_types(t1)
                  ]
              )
              # print '2',s
              return s
          # Determine if the latter type is a possible concrete type of the former.
          r = schema.is_possible_type(t1, t2)
          # print '3', r
          return r
  
      if isinstance(t2, (GraphQLInterfaceType, GraphQLUnionType)):
          t = schema.is_possible_type(t2, t1)
          # print '4', t
          return t
  
      # print '5'
      return False
  
imports: from ..type.definition import GraphQLInterfaceType, GraphQLList, GraphQLNonNull, GraphQLObjectType, GraphQLUnionType, is_abstract_type
label_desc: Use image node_id 3 for calling a global function with example usage: do_types_overlap(schema, t1, t2) and returns: False, True, r, t, s