/** Creates or returns import wizard for the specified importer. */
  private ImportWizard getWizardForImporter(@NotNull ProjectImporterDescriptor importer) {
    if (wizardsCache.containsKey(importer)) {
      return wizardsCache.get(importer);
    }

    final ImportWizardRegistrar wizardRegistrar =
        wizardRegistry.getWizardRegistrar(importer.getId());
    if (wizardRegistrar == null) {
      // should never occur
      throw new IllegalStateException(
          "WizardRegistrar for the importer " + importer.getId() + " isn't registered.");
    }

    List<Provider<? extends WizardPage<ProjectConfigDto>>> pageProviders =
        wizardRegistrar.getWizardPages();
    final ImportWizard importWizard = createDefaultWizard();
    for (Provider<? extends WizardPage<ProjectConfigDto>> provider : pageProviders) {
      importWizard.addPage(provider.get(), 1, false);
    }

    wizardsCache.put(importer, importWizard);
    return importWizard;
  }
  @Override
  public void onImporterSelected(ProjectImporterDescriptor importer) {
    final ProjectConfigDto prevData = wizard.getDataObject();
    wizard = getWizardForImporter(importer);
    final ProjectConfigDto dataObject = wizard.getDataObject();

    dataObject.getSource().setType(importer.getId());

    // some values should be shared between wizards for different project types
    dataObject.setName(prevData.getName());
    dataObject.setDescription(prevData.getDescription());

    WizardPage<ProjectConfigDto> firstPage = wizard.navigateToFirst();
    if (firstPage != null) {
      firstPage.init(dataObject);
    }

    WizardPage<ProjectConfigDto> importerPage = wizard.navigateToNext();
    importerPage.go(mainPage.getImporterPanel());
  }