code: def test_bad_plugin(self):
      experiment = {
          "item": {
              "_name": "NoConfig",
          }
      }
  
      with self.assertRaises(UnknownPluginException) as cm:
          ExperimentConfig(experiment)
  
      self.assertEqual("NoConfig", cm.exception.registrable)
      self.assertEqual("item", cm.exception.obj_name)
  
      #########
  
      experiment = {
          "item": {
              "_name": "DemoWithDict",
              "children": {"child": {"_name": "NoConfig"}},
          }
      }
  
      with self.assertRaises(UnknownPluginException) as cm:
          ExperimentConfig(experiment)
  
      self.assertEqual("NoConfig", cm.exception.registrable)
      self.assertEqual("item.children.child", cm.exception.obj_name)
  
      #########
  
      experiment = {
          "item": {
              "_name": "DemoWithList",
              "children": [{"_name": "NoConfig"}],
          }
      }
  
      with self.assertRaises(UnknownPluginException) as cm:
          ExperimentConfig(experiment)
  
      self.assertEqual("NoConfig", cm.exception.registrable)
      self.assertEqual("item.children.0", cm.exception.obj_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 18 for calling the RegistryTest obj's underlying member method code with example usage: obj.test_bad_plugin() without return types