code: def test_flatten_basic(self):
      obj = [3, ([5, 6], {"name": [7, 9], "name2": 3})]
      res, schema = flatten_to_tuple(obj)
      self.assertEqual(res, (3, 5, 6, 7, 9, 3))
      new_obj = schema(res)
      self.assertEqual(new_obj, obj)
  
      _, new_schema = flatten_to_tuple(new_obj)
      self.assertEqual(schema, new_schema)  # test __eq__
      self._check_schema(schema)
  
imports: import copy
  import glob
  import json
  import os
  import random
  import tempfile
  import unittest
  import zipfile
  import torch
  from torch import Tensor, nn
  from detectron2 import model_zoo
  from detectron2.config import get_cfg
  from detectron2.config.instantiate import dump_dataclass, instantiate
  from detectron2.export import dump_torchscript_IR, scripting_with_instances
  from detectron2.export.flatten import TracingAdapter, flatten_to_tuple
  from detectron2.export.torchscript_patch import patch_builtin_len
  from detectron2.layers import ShapeSpec
  from detectron2.modeling import build_backbone
  from detectron2.modeling.postprocessing import detector_postprocess
  from detectron2.modeling.roi_heads import KRCNNConvDeconvUpsampleHead
  from detectron2.structures import Boxes, Instances
  from detectron2.utils.env import TORCH_VERSION
  from detectron2.utils.testing import assert_instances_allclose, convert_scripted_instances, get_sample_coco_image, random_boxes, reload_script_model, skipIfOnCPUCI
label_desc: Use image node_id 3 for calling the TestTorchscriptUtils obj's underlying member method code with example usage: obj.test_flatten_basic() without return types