code: def test_unsubstituted_param(self):
      experiment = {
          "bar": "foo",
          "item": {"_name": "DemoWithStr", "strval": "$bar"},
      }
      e = ExperimentConfig(experiment)
      self.assertEqual(e["item"].strval, "foo")
  
      #########
  
      experiment = {"item": {"_name": "DemoWithStr", "strval": "$bar"}}
  
      with self.assertRaises(UnknownReferenceError) as cm:
          ExperimentConfig(experiment)
  
      self.assertEqual("item.strval", cm.exception.obj_name)
      self.assertEqual("$bar", cm.exception.reference_name)
  
      #########
  
      experiment = {
          "demo": {
              "_name": "DemoWithDict",
              "simple_int": 22,
              "children": {"child0": "$demo3"},
          }
      }
  
      with self.assertRaises(UnknownReferenceError) as cm:
          ExperimentConfig(experiment)
  
      self.assertEqual("demo.children.child0", cm.exception.obj_name)
      self.assertEqual("$demo3", cm.exception.reference_name)
  
      #########
  
      experiment = {
          "demo": {
              "_name": "DemoWithList",
              "simple_int": 22,
              "children": ["$demo3"],
          }
      }
  
      with self.assertRaises(UnknownReferenceError) as cm:
          ExperimentConfig(experiment)
  
      self.assertEqual("demo.children.0", cm.exception.obj_name)
      self.assertEqual("$demo3", cm.exception.reference_name)
  
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 16 for calling the RegistryTest obj's underlying member method code with example usage: obj.test_unsubstituted_param() without return types