protected @NotNull ObjectProducer createProducer() {
    try {
      if (providerClass != null) {
        ConfigurableProvider provider = instantiateConfigurableProvider();
        return provider == null ? new ObjectProducer() : new ProviderProducer(provider);
      }
      else if (instanceClass != null) {
        return new ClassProducer(componentManager, instanceClass, pluginDescriptor);
      }
      else if (implementationClass != null) {
        return new ClassProducer(componentManager, implementationClass, pluginDescriptor);
      }
      else {
        throw new PluginException("configurable class name is not set", pluginDescriptor == null ? null : pluginDescriptor.getPluginId());
      }
    }
    catch (ProcessCanceledException e) {
      throw e;
    }
    catch (AssertionError | Exception | LinkageError error) {
      LOG.error(new PluginException(error, pluginDescriptor == null ? null : pluginDescriptor.getPluginId()));
    }
    return new ObjectProducer();
  }
protected @NotNull ObjectProducer createProducer()