code: def add(self, factory, component, properties=None):
          # type: (str, str, dict) -> None
          
          with self.__lock:
              if component in self.__names:
                  raise ValueError(
                      "Component name already queued: {0}".format(component)
                  )
  
              # Normalize properties
              if properties is None:
                  properties = {}
  
              # Store component description
              self.__names[component] = factory
              self.__queue.setdefault(factory, {})[component] = properties
  
              try:
                  with use_ipopo(self.__context) as ipopo:
                      # Try to instantiate the component right now
                      self._try_instantiate(ipopo, factory, component)
              except BundleException:
                  # iPOPO not yet started
                  pass
docs: Enqueues the instantiation of the given component
  
          :param factory: Factory name
          :param component: Component name
          :param properties: Component properties
          :raise ValueError: Component name already reserved in the queue
          :raise Exception: Error instantiating the component