Program: 96070
Project: 96070
Buggy source:
/** 
 * @param event the execution event
 * @throws PMSaveException in case of DB storage problem
 * @throws PMAlreadyLockedException in case of locked catParentPO
 * @throws PMException in case of rollback failed
 * @throws ProjectDeletedException if the project was deleted in another instance
 */
private void createNewCategory(ExecutionEvent event) throws PMSaveException, PMAlreadyLockedException, PMException, ProjectDeletedException {
  final INodePO categoryParent=getParentNode(event);
  InputDialog dialog=new InputDialog(getActiveShell(),Messages.CreateNewCategoryActionCatTitle,InitialValueConstants.DEFAULT_CATEGORY_NAME,Messages.CreateNewCategoryActionCatMessage,Messages.CreateNewCategoryActionCatLabel,Messages.CreateNewCategoryActionCatError,Messages.CreateNewCategoryActionDoubleCatName,IconConstants.NEW_CAT_DIALOG_STRING,Messages.CreateNewCategoryActionNewCategory,false){
    /** 
 * @return False, if the input name already exists.
 */
    protected boolean isInputAllowed(){
      return !existCategory(categoryParent,getInputFieldText());
    }
  }
;
  dialog.setHelpAvailable(true);
  dialog.create();
  DialogUtils.setWidgetNameForModalDialog(dialog);
  Plugin.getHelpSystem().setHelp(dialog.getShell(),ContextHelpIds.DIALOG_NEW_CATEGORY);
  dialog.open();
  if (Window.OK == dialog.getReturnCode()) {
    String categoryName=dialog.getName();
    ICategoryPO category=NodeMaker.createCategoryPO(categoryName);
    NodePM.addAndPersistChildNode(categoryParent,category,null,NodePM.getCmdHandleChild(categoryParent,category));
    DataEventDispatcher.getInstance().fireDataChangedListener(category,DataState.Added,UpdateState.all);
  }
  dialog.close();
}

Fixed version (ground truth):
/** 
 * @param event the execution event
 * @throws PMSaveException in case of DB storage problem
 * @throws PMAlreadyLockedException in case of locked catParentPO
 * @throws PMException in case of rollback failed
 * @throws ProjectDeletedException if the project was deleted in another instance
 */
private void createNewCategory(ExecutionEvent event) throws PMSaveException, PMAlreadyLockedException, PMException, ProjectDeletedException {
  final INodePO categoryParent=getParentNode(event);
  IWorkbenchPart activePart=HandlerUtil.getActivePart(event);
  InputDialog dialog=new InputDialog(getActiveShell(),Messages.CreateNewCategoryActionCatTitle,InitialValueConstants.DEFAULT_CATEGORY_NAME,Messages.CreateNewCategoryActionCatMessage,Messages.CreateNewCategoryActionCatLabel,Messages.CreateNewCategoryActionCatError,Messages.CreateNewCategoryActionDoubleCatName,IconConstants.NEW_CAT_DIALOG_STRING,Messages.CreateNewCategoryActionNewCategory,false){
    /** 
 * @return False, if the input name already exists.
 */
    protected boolean isInputAllowed(){
      return !existCategory(categoryParent,getInputFieldText());
    }
  }
;
  dialog.setHelpAvailable(true);
  dialog.create();
  DialogUtils.setWidgetNameForModalDialog(dialog);
  Plugin.getHelpSystem().setHelp(dialog.getShell(),ContextHelpIds.DIALOG_NEW_CATEGORY);
  dialog.open();
  if (Window.OK == dialog.getReturnCode()) {
    String categoryName=dialog.getName();
    ICategoryPO category=NodeMaker.createCategoryPO(categoryName);
    NodePM.addAndPersistChildNode(categoryParent,category,null,NodePM.getCmdHandleChild(categoryParent,category));
    DataEventDispatcher.getInstance().fireDataChangedListener(category,DataState.Added,UpdateState.all);
    if (activePart instanceof TestCaseBrowser) {
      TestCaseBrowser tcb=(TestCaseBrowser)activePart;
      tcb.getTreeViewer().setSelection(new StructuredSelection(category),true);
    }
  }
  dialog.close();
}