code: def test_attrs(self):
      try:
          self.raiser()
      except Exception as exc:
          tb = exc.__traceback__
  
      self.assertIsInstance(tb.tb_next, types.TracebackType)
      self.assertIs(tb.tb_frame, sys._getframe())
      self.assertIsInstance(tb.tb_lasti, int)
      self.assertIsInstance(tb.tb_lineno, int)
  
      self.assertIs(tb.tb_next.tb_next, None)
  
      # Invalid assignments
      with self.assertRaises(TypeError):
          del tb.tb_next
  
      with self.assertRaises(TypeError):
          tb.tb_next = "asdf"
  
      # Loops
      with self.assertRaises(ValueError):
          tb.tb_next = tb
  
      with self.assertRaises(ValueError):
          tb.tb_next.tb_next = tb
  
      # Valid assignments
      tb.tb_next = None
      self.assertIs(tb.tb_next, None)
  
      new_tb = get_tb()
      tb.tb_next = new_tb
      self.assertIs(tb.tb_next, new_tb)
  
imports: from test import support
  import sys
  import types
  import unittest
label_desc: Use image node_id 2 for calling the TestTracebackType obj's underlying member method code with example usage: obj.test_attrs() without return types