code: def get_instance(self, node, *args, **kwargs):
          
          # string is a ref to an existing plugin instance
          if isinstance(node, basestring):
              if node in self._instance:
                  return self._instance[node]
              # if not an instance, try for init with empty config
              return self.new_plugin({'type': node}, *args, **kwargs)
  
          if isinstance(node, collections.Mapping):
              if "type" in node:
                  # node was a plugin config passed directly
                  name = node.get("name", node.get("type"))
              elif len(node) == 1:
                  # node was a container with a single plugin config keyed
                  # to it
                  typ, config = list(node.items())[0]
                  name = config.get("name", config.get("type", typ))
  
              # retrieve existing instance if it exists
              if name in self._instance:
                  return self._instance[name]
  
              # otherwise spawn new plugin
              return self.new_plugin(node, *args, **kwargs)
  
          raise ValueError("unable to parse plugin for output %s" % str(node))
docs: get plugin instance from config node
          *NOTE* returns an uninitialized instance if one isn't there
          *NOTE* instantiated plugins without names remain anonymous
                 FIXME - why would instantiate() even process them