Program: 123047
Project: 123047
Buggy source:
public boolean performFinish(){
  final List<ItemRecord> itemRecords=getCheckedElements();
  for (  ItemRecord itemRecord : itemRecords) {
    Item item=itemRecord.getProperty().getItem();
    if (item instanceof JobletProcessItem) {
      needToRefreshPalette=true;
    }
    if (item instanceof ProcessItem || item instanceof JobletProcessItem) {
      IDocumentationService service=(IDocumentationService)GlobalServiceRegister.getDefault().getService(IDocumentationService.class);
      try {
        service.createNodeDocumentationItemFromItem(item);
      }
 catch (      Exception e) {
        ExceptionHandler.process(e);
      }
    }
    IProxyRepositoryFactory factory=ProxyRepositoryFactory.getInstance();
    if (item.getState().isLocked()) {
      try {
        factory.unlock(item);
      }
 catch (      PersistenceException e) {
        ExceptionHandler.process(e);
      }
catch (      LoginException e) {
        ExceptionHandler.process(e);
      }
    }
    ERepositoryStatus status=factory.getStatus(item);
    if (status != null && status == ERepositoryStatus.LOCK_BY_USER) {
      try {
        factory.unlock(item);
      }
 catch (      PersistenceException e) {
        ExceptionHandler.process(e);
      }
catch (      LoginException e) {
        ExceptionHandler.process(e);
      }
    }
  }
  try {
    IRunnableWithProgress iRunnableWithProgress=new IRunnableWithProgress(){
      public void run(      IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
        IPath destinationPath=null;
        String contentType="String_Node_Str";
        if (rNode != null && rNode.getType().equals(ENodeType.SIMPLE_FOLDER)) {
          destinationPath=RepositoryNodeUtilities.getPath(rNode);
          contentType=rNode.getContentType().name();
        }
        repositoryUtil.setErrors(false);
        repositoryUtil.clear();
        repositoryUtil.importItemRecords(manager,itemRecords,monitor,overwrite,destinationPath,contentType);
        if (repositoryUtil.hasErrors()) {
          throw new InvocationTargetException(new CoreException(new Status(IStatus.ERROR,FrameworkUtil.getBundle(this.getClass()).getSymbolicName(),"String_Node_Str")));
        }
      }
    }
;
    new ProgressMonitorDialog(getShell()).run(true,true,iRunnableWithProgress);
  }
 catch (  InvocationTargetException e) {
    Throwable targetException=e.getTargetException();
    if (repositoryUtil.getRoutineExtModulesMap().isEmpty()) {
      if (targetException instanceof CoreException) {
        MessageDialog.openWarning(getShell(),Messages.getString("String_Node_Str"),Messages.getString("String_Node_Str"));
      }
    }
  }
catch (  InterruptedException e) {
  }
  ResourcesManager curManager=this.manager;
  if (curManager instanceof ProviderManager) {
    curManager.closeResource();
  }
  selectedItems=null;
  itemRecords.clear();
  return true;
}

Fixed version (ground truth):
public boolean performFinish(){
  final List<ItemRecord> itemRecords=getCheckedElements();
  for (  ItemRecord itemRecord : itemRecords) {
    Item item=itemRecord.getProperty().getItem();
    if (item instanceof JobletProcessItem) {
      needToRefreshPalette=true;
    }
    saveDocumentation(item);
    IProxyRepositoryFactory factory=ProxyRepositoryFactory.getInstance();
    if (item.getState().isLocked()) {
      try {
        factory.unlock(item);
      }
 catch (      PersistenceException e) {
        ExceptionHandler.process(e);
      }
catch (      LoginException e) {
        ExceptionHandler.process(e);
      }
    }
    ERepositoryStatus status=factory.getStatus(item);
    if (status != null && status == ERepositoryStatus.LOCK_BY_USER) {
      try {
        factory.unlock(item);
      }
 catch (      PersistenceException e) {
        ExceptionHandler.process(e);
      }
catch (      LoginException e) {
        ExceptionHandler.process(e);
      }
    }
  }
  try {
    IRunnableWithProgress iRunnableWithProgress=new IRunnableWithProgress(){
      public void run(      IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
        IPath destinationPath=null;
        String contentType="String_Node_Str";
        if (rNode != null && rNode.getType().equals(ENodeType.SIMPLE_FOLDER)) {
          destinationPath=RepositoryNodeUtilities.getPath(rNode);
          contentType=rNode.getContentType().name();
        }
        repositoryUtil.setErrors(false);
        repositoryUtil.clear();
        repositoryUtil.importItemRecords(manager,itemRecords,monitor,overwrite,destinationPath,contentType);
        if (repositoryUtil.hasErrors()) {
          throw new InvocationTargetException(new CoreException(new Status(IStatus.ERROR,FrameworkUtil.getBundle(this.getClass()).getSymbolicName(),"String_Node_Str")));
        }
      }
    }
;
    new ProgressMonitorDialog(getShell()).run(true,true,iRunnableWithProgress);
  }
 catch (  InvocationTargetException e) {
    Throwable targetException=e.getTargetException();
    if (repositoryUtil.getRoutineExtModulesMap().isEmpty()) {
      if (targetException instanceof CoreException) {
        MessageDialog.openWarning(getShell(),Messages.getString("String_Node_Str"),Messages.getString("String_Node_Str"));
      }
    }
  }
catch (  InterruptedException e) {
  }
  ResourcesManager curManager=this.manager;
  if (curManager instanceof ProviderManager) {
    curManager.closeResource();
  }
  selectedItems=null;
  itemRecords.clear();
  return true;
}