code: def test_insert_after_index(self):
      self.assertEqual(
          [1, 0, 2, 3, 4], insert_after_index([1, 2, 3, 4], 0, [0])
      )
      self.assertEqual(
          [1, 0, 2, 3, 4], insert_after_index([1, 2, 3, 4], 0, 0)
      )
      self.assertEqual(
          [1, 2, 3, 4, 0, 1, 2],
          insert_after_index([1, 2, 3, 4], 3, [0, 1, 2]),
      )
      self.assertEqual(
          [1, 2, 3, 4, 5], insert_after_index([1, 2, 3, 4], 3, [5])
      )
  
      # Test successive replacement of individual elements
      # TODO merge
      num = random.randint(200, 1000)
      n = random.randint(20, 99)
      pos = random.sample(list(range(1, num - 1)), n)
      pos += [0, num]
      n += 2
      pos.sort()
  
      if n % 2 == 0:
          pos = pos[:-1]
          n -= 1
          pos[n - 1] = num
      test_pos = [
          [pos[i * 2 + 1], pos[i * 2 + 2]] for i in range(int(n / 2))
      ]
      test_list = []
      origin = list(range(num))
  
      for i in range(int(n / 2)):
          test_list += origin[pos[2 * i] : pos[2 * i + 1]]
      random.shuffle(test_pos)
      for i in range(len(test_pos) - 1):
          test_list = insert_after_index(
              test_list,
              test_list.index(test_pos[i][0] - 1),
              list(range(test_pos[i][0], test_pos[i][1])),
          )
      self.assertEqual(
          origin,
          insert_after_index(
              test_list,
              test_list.index(test_pos[len(test_pos) - 1][0] - 1),
              list(
                  range(
                      test_pos[len(test_pos) - 1][0],
                      test_pos[len(test_pos) - 1][1],
                  )
              ),
          ),
      )
  
imports: import unittest
  from textflint.common.utils.list_op import *
label_desc: Use image node_id 9 for calling the TestListOp obj's underlying member method code with example usage: obj.test_insert_after_index() without return types