/** Creates and returns 'default' project wizard with pre-defined pages only. */
  private ImportWizard createDefaultWizard() {
    final ProjectConfigDto dataObject =
        dtoFactory
            .createDto(ProjectConfigDto.class)
            .withSource(dtoFactory.createDto(SourceStorageDto.class).withType("").withLocation(""));

    final ImportWizard importWizard = importWizardFactory.newWizard(dataObject);
    importWizard.setUpdateDelegate(this);
    // add pre-defined first page
    importWizard.addPage(mainPage);
    return importWizard;
  }
  /** 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;
  }