Program: 128702
Project: 128702
Buggy source:
private void addListeners(){
  installAllBtn.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    SelectionEvent e){
      installAllBtn.setEnabled(false);
      for (      Button button : installButtons) {
        button.setEnabled(false);
      }
      List<ModuleToInstall> inputList=tableViewerCreator.getInputList();
      List<ModuleToInstall> toInstall=new ArrayList<ModuleToInstall>();
      if (!jarsInstalledSuccuss.isEmpty()) {
        for (        ModuleToInstall module : inputList) {
          if (!jarsInstalledSuccuss.contains(module.getName())) {
            toInstall.add(module);
          }
        }
      }
 else {
        toInstall.addAll(inputList);
      }
      final DownloadModuleJob job=new DownloadModuleJob(toInstall);
      job.addJobChangeListener(new JobChangeAdapter(){
        @Override public void done(        final IJobChangeEvent event){
          Display.getDefault().asyncExec(new Runnable(){
            @Override public void run(){
              if (event.getJob() instanceof DownloadModuleJob) {
                DownloadModuleJob job=(DownloadModuleJob)event.getJob();
                Set<String> downloadFialed=job.downloadFialed;
                jarsInstalledSuccuss.addAll(job.installedModules);
                int installedModules=job.installedModules.size();
                String success=installedModules + Messages.getString("String_Node_Str");
                String message=success;
                if (!downloadFialed.isEmpty()) {
                  String fail=Messages.getString("String_Node_Str");
                  String names="String_Node_Str";
                  for (                  String name : downloadFialed) {
                    if (names.length() > 0) {
                      names="String_Node_Str" + name;
                    }
 else {
                      names=name;
                    }
                  }
                  message=message + fail + names;
                }
                MessageDialog.openInformation(getShell(),"String_Node_Str",message);
              }
            }
          }
);
        }
      }
);
      job.setUser(true);
      job.setPriority(Job.INTERACTIVE);
      job.schedule();
    }
  }
);
}

Fixed version (ground truth):
private void addListeners(){
  installAllBtn.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    SelectionEvent e){
      List<ModuleToInstall> inputList=tableViewerCreator.getInputList();
      List<ModuleToInstall> toInstall=new ArrayList<ModuleToInstall>();
      if (!jarsInstalledSuccuss.isEmpty()) {
        for (        ModuleToInstall module : inputList) {
          if (!jarsInstalledSuccuss.contains(module.getName())) {
            toInstall.add(module);
          }
        }
      }
 else {
        toInstall.addAll(inputList);
      }
      final DownloadModuleJob job=new DownloadModuleJob(toInstall);
      job.addJobChangeListener(new JobChangeAdapter(){
        @Override public void done(        final IJobChangeEvent event){
          Display.getDefault().asyncExec(new Runnable(){
            @Override public void run(){
              if (event.getJob() instanceof DownloadModuleJob) {
                DownloadModuleJob job=(DownloadModuleJob)event.getJob();
                Set<String> downloadFialed=job.downloadFialed;
                jarsInstalledSuccuss.addAll(job.installedModules);
                int installedModules=job.installedModules.size();
                String success=installedModules + Messages.getString("String_Node_Str");
                String message=success;
                if (!downloadFialed.isEmpty()) {
                  String fail=Messages.getString("String_Node_Str");
                  String names="String_Node_Str";
                  for (                  String name : downloadFialed) {
                    if (names.length() > 0) {
                      names+="String_Node_Str" + name;
                    }
 else {
                      names+=name;
                    }
                  }
                  message=message + fail + names;
                }
                MessageDialog.openInformation(getShell(),"String_Node_Str",message);
              }
            }
          }
);
        }
      }
);
      job.setUser(true);
      job.setPriority(Job.INTERACTIVE);
      job.schedule();
      close();
    }
  }
);
}