code: def test_types(self):
      # Non-integer objects *equal* to any of the range's items are supposed
      # to be contained in the range.
      self.assertIn(1.0, range(3))
      self.assertIn(True, range(3))
      self.assertIn(1 + 0j, range(3))
  
      self.assertIn(ALWAYS_EQ, range(3))
  
      # Objects are never coerced into other types for comparison.
      class C2:
          def __int__(self):
              return 1
  
          def __index__(self):
              return 1
  
      self.assertNotIn(C2(), range(3))
      # ..except if explicitly told so.
      self.assertIn(int(C2()), range(3))
  
      # Check that the range.__contains__ optimization is only
      # used for ints, not for instances of subclasses of int.
      class C3(int):
          def __eq__(self, other):
              return True
  
      self.assertIn(C3(11), range(10))
      self.assertIn(C3(11), list(range(10)))
  
imports: import unittest
  import sys
  import pickle
  import itertools
  from test.support import ALWAYS_EQ
label_desc: Use image node_id 19 for calling the RangeTest obj's underlying member method code with example usage: obj.test_types() and returns: int, int, True