public ComponentManager createComponentManager(
      ComponentDescriptor descriptor, MutablePlexusContainer container)
      throws UndefinedComponentManagerException, UndefinedLifecycleHandlerException {
    String componentManagerId = descriptor.getInstantiationStrategy();

    ComponentManager componentManager;

    if (componentManagerId == null) {
      componentManagerId = defaultComponentManagerId;
    }

    componentManager = copyComponentManager(componentManagerId);

    componentManager.setup(container, findLifecycleHandler(descriptor), descriptor);

    componentManager.initialize();

    activeComponentManagers.put(descriptor.getComponentKey(), componentManager);

    return componentManager;
  }