code: def test_recursive_dict(self):
      experiment = {
          "demo": {
              "_name": "DemoWithDict",
              "simple_int": 22,
              "children": {
                  "child0": {"_name": "DemoWithStr", "strval": "foo"},
                  "child1": "$demo3",
              },
          },
          "demo3": {"_name": "DemoWithInt", "intval": 2},
      }
  
      e = ExperimentConfig(experiment)
      demo: DemoWithDict = e.experiment["demo"]
      self.assertEqual(22, demo.simple_int)
  
      self.assertIsInstance(demo.children["child0"], DemoWithStr)
      self.assertEqual(demo.children["child0"].strval, "foo")
  
      self.assertIsInstance(demo.children["child1"], DemoWithInt)
      self.assertEqual(demo.children["child1"].intval, 2)
  
imports: import unittest
  from pathlib import Path
  from typing import Any, Dict, List
  from transfer_nlp.plugins.config import CallableInstantiationError, ExperimentConfig, LoopInConfigError, UnknownPluginException, UnknownReferenceError, register_plugin
label_desc: Use image node_id 20 for calling the RegistryTest obj's underlying member method code with example usage: obj.test_recursive_dict() without return types