void ( @NotNull StepSequence sequence, @NotNull String specific, @NotNull ProjectFromSourcesBuilderImpl projectBuilder ) { var context = projectBuilder.getContext(); var icon = context.getStepIcon(); if (context.isCreatingNewProject()) { sequence.addSpecificStep(specific, new ProjectNameStep(context)); } sequence.addSpecificStep(specific, new RootsDetectionStep(projectBuilder, context, sequence, icon, "reference.dialogs.new.project.fromCode.source")); var detectorTypes = new HashSet<>(); for (ProjectStructureDetector detector : ProjectStructureDetector.EP_NAME.getExtensions()) { detectorTypes.add(detector.getDetectorId()); for (ModuleWizardStep step : detector.createWizardSteps(projectBuilder, projectBuilder.getProjectDescriptor(detector), icon)) { sequence.addSpecificStep(detector.getDetectorId(), step); } } if (FrameworkDetectionStep.isEnabled()) { FrameworkDetectionStep frameworkDetectionStep = new FrameworkDetectionStep(icon, projectBuilder) { @Override public List<ModuleDescriptor> getModuleDescriptors() { final List<ModuleDescriptor> moduleDescriptors = new ArrayList<>(); for (ProjectDescriptor descriptor : projectBuilder.getSelectedDescriptors()) { moduleDescriptors.addAll(descriptor.getModules()); } return moduleDescriptors; } }; projectBuilder.addConfigurationUpdater(frameworkDetectionStep); sequence.addCommonFinishingStep(frameworkDetectionStep, types -> ContainerUtil.intersects(types, detectorTypes)); } }