Program: 123213
Project: 123213
Buggy source:
@Override protected void doRun(){
  ISelection selection=getSelection();
  Object obj=((IStructuredSelection)selection).getFirstElement();
  if (obj == null) {
    return;
  }
  RepositoryNode node=(RepositoryNode)obj;
  boolean readonly=false;
  IRepositoryService service=DesignerPlugin.getDefault().getRepositoryService();
  IProxyRepositoryFactory repFactory=service.getProxyRepositoryFactory();
  ERepositoryStatus status=repFactory.getStatus(node.getObject());
  if (!repFactory.isPotentiallyEditable(node.getObject()) || status == ERepositoryStatus.LOCK_BY_OTHER || status == ERepositoryStatus.LOCK_BY_USER) {
    readonly=true;
  }
  Item item=node.getObject().getProperty().getItem();
  if (item instanceof ProcessItem) {
    ProcessItem processItem=(ProcessItem)item;
    ProcessType process=processItem.getProcess();
    SetupProcessDependenciesRoutinesDialog dialog=new SetupProcessDependenciesRoutinesDialog(PlatformUI.getWorkbench().getDisplay().getActiveShell(),process,readonly);
    if (dialog.open() == Window.OK && !readonly) {
      process.getParameters().getRoutinesParameter().clear();
      createRoutinesDependencies(process,dialog.getSystemRoutines());
      createRoutinesDependencies(process,dialog.getUserRoutines());
      try {
        CorePlugin.getDefault().getRepositoryService().getProxyRepositoryFactory().save(processItem);
        RelationshipItemBuilder.getInstance().addOrUpdateItem(processItem);
      }
 catch (      PersistenceException e) {
        ExceptionHandler.process(e);
      }
    }
  }
 else   if (item instanceof JobletProcessItem) {
    JobletProcessItem jobProcessItem=(JobletProcessItem)item;
    ProcessType process=jobProcessItem.getJobletProcess();
    SetupProcessDependenciesRoutinesDialog dialog=new SetupProcessDependenciesRoutinesDialog(PlatformUI.getWorkbench().getDisplay().getActiveShell(),process,readonly);
    if (dialog.open() == Window.OK && !readonly) {
      process.getParameters().getRoutinesParameter().clear();
      createRoutinesDependencies(process,dialog.getSystemRoutines());
      createRoutinesDependencies(process,dialog.getUserRoutines());
      try {
        CorePlugin.getDefault().getRepositoryService().getProxyRepositoryFactory().save(jobProcessItem);
        RelationshipItemBuilder.getInstance().addOrUpdateItem(jobProcessItem);
      }
 catch (      PersistenceException e) {
        ExceptionHandler.process(e);
      }
    }
  }
}

Fixed version (ground truth):
@Override protected void doRun(){
  ISelection selection=getSelection();
  Object obj=((IStructuredSelection)selection).getFirstElement();
  if (obj == null) {
    return;
  }
  RepositoryNode node=(RepositoryNode)obj;
  boolean readonly=false;
  IRepositoryService service=DesignerPlugin.getDefault().getRepositoryService();
  IProxyRepositoryFactory repFactory=service.getProxyRepositoryFactory();
  ERepositoryStatus status=repFactory.getStatus(node.getObject());
  if (!repFactory.isPotentiallyEditable(node.getObject()) || status == ERepositoryStatus.LOCK_BY_OTHER || status == ERepositoryStatus.LOCK_BY_USER) {
    readonly=true;
  }
  Item item=node.getObject().getProperty().getItem();
  if (item instanceof ProcessItem) {
    ProcessItem processItem=(ProcessItem)item;
    ProcessType process=processItem.getProcess();
    SetupProcessDependenciesRoutinesDialog dialog=new SetupProcessDependenciesRoutinesDialog(PlatformUI.getWorkbench().getDisplay().getActiveShell(),process,readonly);
    if (dialog.open() == Window.OK && !readonly) {
      process.getParameters().getRoutinesParameter().clear();
      createRoutinesDependencies(process,dialog.getSystemRoutines());
      createRoutinesDependencies(process,dialog.getUserRoutines());
      try {
        CorePlugin.getDefault().getRepositoryService().getProxyRepositoryFactory().save(processItem);
        RelationshipItemBuilder.getInstance().addOrUpdateItem(processItem);
      }
 catch (      PersistenceException e) {
        ExceptionHandler.process(e);
      }
    }
  }
 else   if (item instanceof JobletProcessItem) {
    JobletProcessItem jobProcessItem=(JobletProcessItem)item;
    ProcessType process=jobProcessItem.getJobletProcess();
    SetupProcessDependenciesRoutinesDialog dialog=new SetupProcessDependenciesRoutinesDialog(PlatformUI.getWorkbench().getDisplay().getActiveShell(),process,readonly);
    if (dialog.open() == Window.OK && !readonly) {
      process.getParameters().getRoutinesParameter().clear();
      createRoutinesDependencies(process,dialog.getSystemRoutines());
      createRoutinesDependencies(process,dialog.getUserRoutines());
      try {
        CorePlugin.getDefault().getRepositoryService().getProxyRepositoryFactory().save(jobProcessItem);
        IJobletProviderService jobletService=(IJobletProviderService)GlobalServiceRegister.getDefault().getService(IJobletProviderService.class);
        if (jobletService != null) {
          jobletService.loadComponentsFromProviders();
        }
        RelationshipItemBuilder.getInstance().addOrUpdateItem(jobProcessItem);
      }
 catch (      PersistenceException e) {
        ExceptionHandler.process(e);
      }
    }
  }
}