code: def test_simple_replacement(self):
      struct = get_default_args(MainTest)
      struct.n_ids = 9780
      struct.the_fruit_Pear_args.n_pips = 3
      struct.the_fruit_class_type = "Pear"
      struct.the_second_fruit_class_type = "Pear"
  
      main = MainTest(**struct)
      self.assertIsInstance(main.the_fruit, Pear)
      self.assertEqual(main.n_reps, 8)
      self.assertEqual(main.n_ids, 9780)
      self.assertEqual(main.the_fruit.n_pips, 3)
      self.assertIsInstance(main.the_second_fruit, Pineapple)
  
      struct2 = get_default_args(MainTest)
      self.assertEqual(struct2.the_fruit_Pear_args.n_pips, 13)
  
      self.assertEqual(
          MainTest._creation_functions,
          ("create_the_fruit", "create_the_second_fruit"),
      )
  
imports: import pickle
  import textwrap
  import unittest
  from dataclasses import dataclass, field, is_dataclass
  from enum import Enum
  from typing import Any, Dict, List, Optional, Tuple
  from unittest.mock import Mock
  from omegaconf import DictConfig, ListConfig, OmegaConf, ValidationError
  from pytorch3d.implicitron.tools.config import _get_type_to_process, _is_actually_dataclass, _ProcessType, _Registry, Configurable, enable_get_default_args, expand_args_fields, get_default_args, get_default_args_field, registry, remove_unused_components, ReplaceableBase, run_auto_creation
label_desc: Use image node_id 3 for calling the TestConfig obj's underlying member method code with example usage: obj.test_simple_replacement() without return types