code: def test_make_tree_info_with_cache(self):
      task = _DoubleLoadSubTask(
          sub1=_Task(param=1, sub=_SubTask(param=2)),
          sub2=_Task(param=1, sub=_SubTask(param=2)),
      )
  
      # check child task_info is the same object
      tree = make_task_info_tree(task)
      self.assertTrue(
          tree.children_task_infos[0] is tree.children_task_infos[1]
      )
  
imports: import unittest
  from unittest.mock import patch
  import luigi
  import luigi.mock
  from luigi.mock import MockFileSystem, MockTarget
  import gokart
  from gokart.tree.task_info import dump_task_info_table, dump_task_info_tree, make_task_info_as_tree_str, make_task_info_tree
label_desc: Use image node_id 8 for calling the TestInfo obj's underlying member method code with example usage: obj.test_make_tree_info_with_cache() without return types