private static boolean matchesPage(SmartImportJob job, SmartImportRootWizardPage page) {
   File jobRoot = job.getRoot().getAbsoluteFile();
   File pageRoot = page.getSelectedRoot().getAbsoluteFile();
   boolean sameSource =
       jobRoot.equals(pageRoot)
           || (isValidArchive(pageRoot)
               && getExpandDirectory(pageRoot).getAbsoluteFile().equals(jobRoot));
   return sameSource
       && job.isDetectNestedProjects() == page.isDetectNestedProject()
       && job.isConfigureProjects() == page.isConfigureProjects();
 }
 @Override
 public boolean performFinish() {
   String[] previousProposals =
       getDialogSettings().getArray(SmartImportRootWizardPage.IMPORTED_SOURCES);
   if (previousProposals == null) {
     previousProposals = new String[0];
   }
   if (!Arrays.asList(previousProposals)
       .contains(this.projectRootPage.getSelectedRoot().getAbsolutePath())) {
     String[] newProposals = new String[previousProposals.length + 1];
     newProposals[0] = this.projectRootPage.getSelectedRoot().getAbsolutePath();
     System.arraycopy(previousProposals, 0, newProposals, 1, previousProposals.length);
     getDialogSettings().put(SmartImportRootWizardPage.IMPORTED_SOURCES, newProposals);
   }
   SmartImportJob job = getImportJob();
   if (projectRootPage.isDetectNestedProject() || projectRootPage.isConfigureProjects()) {
     SmartImportJobReportDialog dialog = new SmartImportJobReportDialog(null);
     dialog.setBlockOnOpen(false);
     getContainer().getShell().setEnabled(false);
     dialog.show(job, getShell());
   }
   job.schedule();
   return true;
 }