Program: 91709
Project: 91709
Buggy source:
protected void scanProjects(){
  final AbstractProjectScanner<MavenProjectInfo> projectScanner=getProjectScanner();
  try {
    getWizard().getContainer().run(true,true,new IRunnableWithProgress(){
      public void run(      IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
        projectScanner.run(monitor);
        ((MavenImportWizard)getWizard()).scanProjects(getProjects(projectScanner.getProjects()),monitor);
      }
      List<MavenProjectInfo> getProjects(      Collection<MavenProjectInfo> input){
        List<MavenProjectInfo> toRet=new ArrayList<MavenProjectInfo>();
        for (        MavenProjectInfo info : input) {
          toRet.add(info);
          toRet.addAll(getProjects(info.getProjects()));
        }
        return toRet;
      }
    }
);
    projectTreeViewer.setInput(projectScanner.getProjects());
    projectTreeViewer.expandAll();
    setAllChecked(true);
    Object[] checkedElements=projectTreeViewer.getCheckedElements();
    setPageComplete(checkedElements != null && checkedElements.length > 0);
    setErrorMessage(null);
    setMessage(null);
    List<Throwable> errors=projectScanner.getErrors();
    if (!errors.isEmpty()) {
      StringBuffer sb=new StringBuffer(NLS.bind(Messages.wizardImportPageScanningErrors,errors.size()));
      int n=1;
      for (      Throwable ex : errors) {
        if (ex instanceof CoreException) {
          String msg=((CoreException)ex).getStatus().getMessage();
          sb.append("String_Node_Str").append(n).append("String_Node_Str").append(msg.trim());
        }
 else {
          String msg=ex.getMessage() == null ? ex.toString() : ex.getMessage();
          sb.append("String_Node_Str").append(n).append("String_Node_Str").append(msg.trim());
        }
        n++;
      }
      setMessage(sb.toString(),IMessageProvider.WARNING);
    }
  }
 catch (  InterruptedException ex) {
  }
catch (  InvocationTargetException ex) {
    Throwable e=ex.getTargetException() == null ? ex : ex.getTargetException();
    String msg;
    if (e instanceof CoreException) {
      msg=e.getMessage();
      log.error(msg,e);
    }
 else {
      msg="String_Node_Str" + projectScanner.getDescription() + "String_Node_Str"+ e.toString();
      log.error(msg,e);
    }
    projectTreeViewer.setInput(null);
    setPageComplete(false);
    setErrorMessage(msg);
  }
}

Fixed version (ground truth):
protected void scanProjects(){
  final AbstractProjectScanner<MavenProjectInfo> projectScanner=getProjectScanner();
  final InvocationTargetException[] analyzingExc=new InvocationTargetException[1];
  try {
    getWizard().getContainer().run(true,true,new IRunnableWithProgress(){
      public void run(      IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
        projectScanner.run(monitor);
        try {
          ((MavenImportWizard)getWizard()).scanProjects(getProjects(projectScanner.getProjects()),monitor);
        }
 catch (        InvocationTargetException x) {
          analyzingExc[0]=x;
        }
      }
      List<MavenProjectInfo> getProjects(      Collection<MavenProjectInfo> input){
        List<MavenProjectInfo> toRet=new ArrayList<MavenProjectInfo>();
        for (        MavenProjectInfo info : input) {
          toRet.add(info);
          toRet.addAll(getProjects(info.getProjects()));
        }
        return toRet;
      }
    }
);
    projectTreeViewer.setInput(projectScanner.getProjects());
    projectTreeViewer.expandAll();
    setAllChecked(true);
    Object[] checkedElements=projectTreeViewer.getCheckedElements();
    setPageComplete(checkedElements != null && checkedElements.length > 0);
    setErrorMessage(null);
    setMessage(null);
    List<Throwable> errors=projectScanner.getErrors();
    if (!errors.isEmpty() || analyzingExc[0] != null) {
      StringBuffer sb=new StringBuffer(NLS.bind(Messages.wizardImportPageScanningErrors,errors.size()));
      int n=1;
      for (      Throwable ex : errors) {
        if (ex instanceof CoreException) {
          String msg=((CoreException)ex).getStatus().getMessage();
          sb.append("String_Node_Str").append(n).append("String_Node_Str").append(msg.trim());
        }
 else {
          String msg=ex.getMessage() == null ? ex.toString() : ex.getMessage();
          sb.append("String_Node_Str").append(n).append("String_Node_Str").append(msg.trim());
        }
        n++;
      }
      if (analyzingExc[0] != null) {
        sb.append("String_Node_Str").append(analyzingExc[0].getCause().getMessage());
      }
      setMessage(sb.toString(),IMessageProvider.WARNING);
    }
  }
 catch (  InterruptedException ex) {
  }
catch (  InvocationTargetException ex) {
    Throwable e=ex.getCause() == null ? ex : ex.getCause();
    String msg;
    if (e instanceof CoreException) {
      msg=e.getMessage();
      log.error(msg,e);
    }
 else {
      msg="String_Node_Str" + projectScanner.getDescription() + "String_Node_Str"+ e.toString();
      log.error(msg,e);
    }
    projectTreeViewer.setInput(null);
    setPageComplete(false);
    setErrorMessage(msg);
  }
}