private static void addSteps(
    @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));
    }
  }
private static void addSteps(
    @NotNull StepSequence sequence,
    @NotNull String specific,
    @NotNull ProjectFromSourcesBuilderImpl projectBuilder
  )