Program: 129478
Project: 129478
Buggy source:
@Override protected void doRun(){
  ISelection selection=getSelection();
  Object obj=((IStructuredSelection)selection).getFirstElement();
  final RepositoryNode node=(RepositoryNode)obj;
  final String title=Messages.getString("String_Node_Str");
  String message=null;
  List<IRepositoryNode> originalChildren=node.getChildren();
  final List<IRepositoryNode> children=new ArrayList<IRepositoryNode>(originalChildren);
  if (children.size() == 0) {
    return;
  }
 else   if (children.size() > 1) {
    message=Messages.getString("String_Node_Str") + "String_Node_Str" + Messages.getString("String_Node_Str");
  }
 else {
    message=Messages.getString("String_Node_Str") + "String_Node_Str" + Messages.getString("String_Node_Str");
  }
  final Shell shell=getShell();
  if (!(MessageDialog.openQuestion(shell,title,message))) {
    return;
  }
  final IWorkspaceRunnable op=new IWorkspaceRunnable(){
    public void run(    IProgressMonitor monitor){
      IProxyRepositoryFactory factory=ProxyRepositoryFactory.getInstance();
      for (      IRepositoryNode child : children) {
        if (GlobalServiceRegister.getDefault().isServiceRegistered(ITDQRepositoryService.class)) {
          ITDQRepositoryService tdqRepService=(ITDQRepositoryService)GlobalServiceRegister.getDefault().getService(ITDQRepositoryService.class);
          if (!tdqRepService.removeAliasInSQLExplorer(child)) {
            MessageDialog.openWarning(shell,title,Messages.getString("String_Node_Str"));
            try {
              factory.saveProject(ProjectManager.getInstance().getCurrentProject());
            }
 catch (            PersistenceException e) {
              ExceptionHandler.process(e);
            }
            return;
          }
        }
        try {
          deleteElements(factory,(RepositoryNode)child);
        }
 catch (        Exception e) {
          MessageBoxExceptionHandler.process(e);
        }
      }
      try {
        factory.saveProject(ProjectManager.getInstance().getCurrentProject());
      }
 catch (      PersistenceException e) {
        ExceptionHandler.process(e);
      }
    }
  }
;
  IRunnableWithProgress iRunnableWithProgress=new IRunnableWithProgress(){
    public void run(    IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
      IWorkspace workspace=ResourcesPlugin.getWorkspace();
      try {
        ISchedulingRule schedulingRule=workspace.getRoot();
        workspace.run(op,schedulingRule,IWorkspace.AVOID_UPDATE,monitor);
      }
 catch (      CoreException e) {
        throw new InvocationTargetException(e);
      }
    }
  }
;
  try {
    PlatformUI.getWorkbench().getProgressService().run(true,true,iRunnableWithProgress);
  }
 catch (  Exception e) {
    ExceptionHandler.process(e);
  }
}

Fixed version (ground truth):
@Override protected void doRun(){
  ISelection selection=getSelection();
  Object obj=((IStructuredSelection)selection).getFirstElement();
  final RepositoryNode node=(RepositoryNode)obj;
  final String title=Messages.getString("String_Node_Str");
  String message=null;
  List<IRepositoryNode> originalChildren=node.getChildren();
  final List<IRepositoryNode> children=new ArrayList<IRepositoryNode>(originalChildren);
  if (children.size() == 0) {
    return;
  }
 else   if (children.size() > 1) {
    message=Messages.getString("String_Node_Str") + "String_Node_Str" + Messages.getString("String_Node_Str");
  }
 else {
    message=Messages.getString("String_Node_Str") + "String_Node_Str" + Messages.getString("String_Node_Str");
  }
  final Shell shell=getShell();
  if (!(MessageDialog.openQuestion(shell,title,message))) {
    return;
  }
  for (  IRepositoryNode child : children) {
    if (GlobalServiceRegister.getDefault().isServiceRegistered(ITDQRepositoryService.class)) {
      ITDQRepositoryService tdqRepService=(ITDQRepositoryService)GlobalServiceRegister.getDefault().getService(ITDQRepositoryService.class);
      if (!tdqRepService.removeAliasInSQLExplorer(child)) {
        MessageDialog.openWarning(shell,title,Messages.getString("String_Node_Str"));
        try {
          IProxyRepositoryFactory factory=ProxyRepositoryFactory.getInstance();
          factory.saveProject(ProjectManager.getInstance().getCurrentProject());
        }
 catch (        PersistenceException e) {
          ExceptionHandler.process(e);
        }
        return;
      }
    }
  }
  final IWorkspaceRunnable op=new IWorkspaceRunnable(){
    public void run(    IProgressMonitor monitor){
      IProxyRepositoryFactory factory=ProxyRepositoryFactory.getInstance();
      for (      IRepositoryNode child : children) {
        try {
          deleteElements(factory,(RepositoryNode)child);
        }
 catch (        Exception e) {
          MessageBoxExceptionHandler.process(e);
        }
      }
      try {
        factory.saveProject(ProjectManager.getInstance().getCurrentProject());
      }
 catch (      PersistenceException e) {
        ExceptionHandler.process(e);
      }
    }
  }
;
  IRunnableWithProgress iRunnableWithProgress=new IRunnableWithProgress(){
    public void run(    IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
      IWorkspace workspace=ResourcesPlugin.getWorkspace();
      try {
        ISchedulingRule schedulingRule=workspace.getRoot();
        workspace.run(op,schedulingRule,IWorkspace.AVOID_UPDATE,monitor);
      }
 catch (      CoreException e) {
        throw new InvocationTargetException(e);
      }
    }
  }
;
  try {
    PlatformUI.getWorkbench().getProgressService().run(true,true,iRunnableWithProgress);
  }
 catch (  Exception e) {
    ExceptionHandler.process(e);
  }
}