code: def test_literals(self):
      a = QN("a")
      a_sub_str_b = QN(a, subscript=QN(qual_names.Literal("b")))
      a_sub_b = QN(a, subscript=QN("b"))
  
      self.assertNotEqual(a_sub_str_b, a_sub_b)
      self.assertNotEqual(hash(a_sub_str_b), hash(a_sub_b))
      self.assertEqual(a_sub_str_b.ast().slice.value, "b")
      self.assertEqual(str(a_sub_str_b), "a['b']")
  
      a_sub_three = QN(a, subscript=QN(qual_names.Literal(3)))
      self.assertEqual(a_sub_three.ast().slice.value, 3)
      self.assertEqual(str(a_sub_three), "a[3]")
  
imports: import textwrap
  from tensorflow.python.autograph.pyct import anno
  from tensorflow.python.autograph.pyct import parser
  from tensorflow.python.autograph.pyct import qual_names
  from tensorflow.python.autograph.pyct.qual_names import QN
  from tensorflow.python.autograph.pyct.qual_names import resolve
  from tensorflow.python.platform import test
label_desc: Use image node_id 7 for calling the QNTest obj's underlying member method code with example usage: obj.test_literals() without return types