class DefaultComponentFactory implements ComponentFactory {

    @Override
    public <T> T getComponent(final Class<T> type, final Conf conf) {
       var optional = findDescriptorByClass(type, new ConfigConditionalContext(conf));
        if (optional.isEmpty())
            throw new NoSuchComponentException("No component registered for type '" + type.getName() + "'");

        ComponentDescriptor<T> descriptor = optional.get();
        return getComponentProvider(descriptor).get(conf);
    }

    public  DefaultComponentFactory(final ComponentDescriptorFactory descriptorFactory);

}