Program: 140588
Project: 140588
Buggy source:
/** 
 * DOC qzhang Comment method "createOneUnit".
 * @param treeItem
 * @param indicatorUnit
 */
public void createOneUnit(final TreeItem treeItem,IndicatorUnit indicatorUnit){
  final TreeItem indicatorItem=new TreeItem(treeItem,SWT.NONE);
  final IndicatorUnit unit=indicatorUnit;
  IndicatorEnum type=indicatorUnit.getType();
  final IndicatorEnum indicatorEnum=type;
  indicatorItem.setData(COLUMN_INDICATOR_KEY,treeItem.getData(COLUMN_INDICATOR_KEY));
  indicatorItem.setData(INDICATOR_UNIT_KEY,unit);
  indicatorItem.setData(VIEWER_KEY,this);
  String label=indicatorUnit.getIndicatorName();
  if (IndicatorEnum.RegexpMatchingIndicatorEnum.compareTo(type) == 0 || IndicatorEnum.SqlPatternMatchingIndicatorEnum.compareTo(type) == 0) {
    indicatorItem.setImage(0,ImageLib.getImage(ImageLib.PATTERN_REG));
  }
  indicatorItem.setText(0,label);
  TreeEditor optionEditor;
  optionEditor=new TreeEditor(tree);
  Label optionLabel=new Label(tree,SWT.NONE);
  optionLabel.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));
  optionLabel.setImage(ImageLib.getImage(ImageLib.INDICATOR_OPTION));
  optionLabel.setToolTipText("String_Node_Str");
  optionLabel.pack();
  optionLabel.setData(indicatorUnit);
  optionLabel.addMouseListener(new MouseAdapter(){
    @Override public void mouseDown(    MouseEvent e){
      final IndicatorUnit indicator=(IndicatorUnit)((Label)e.getSource()).getData();
      final IndicatorOptionsWizard wizard=new IndicatorOptionsWizard(indicator,analysis);
      String helpID=HelpPlugin.PLUGIN_ID + HelpPlugin.INDICATOR_OPTION_HELP_ID;
      WizardDialog dialog=new WizardDialog(null,wizard);
      WizardDialog dialogWithHelp=HelpUtils.injectHelp(dialog,wizard,helpID,indicator);
      if (dialogWithHelp != null) {
        if (Window.OK == dialogWithHelp.open()) {
          setDirty(wizard.isDirty());
        }
      }
    }
  }
);
  optionEditor.minimumWidth=WIDTH1_CELL;
  optionEditor.horizontalAlignment=SWT.CENTER;
  optionEditor.setEditor(optionLabel,indicatorItem,1);
  TreeEditor delEditor=new TreeEditor(tree);
  Label delLabel=new Label(tree,SWT.NONE);
  delLabel.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));
  delLabel.setImage(ImageLib.getImage(ImageLib.DELETE_ACTION));
  delLabel.setToolTipText("String_Node_Str");
  delLabel.pack();
  delLabel.addMouseListener(new MouseAdapter(){
    @Override public void mouseDown(    MouseEvent e){
      ColumnIndicator columnIndicator=(ColumnIndicator)treeItem.getData(COLUMN_INDICATOR_KEY);
      deleteIndicatorItems(columnIndicator,unit);
      if (indicatorItem.getParentItem() != null && indicatorItem.getParentItem().getData(INDICATOR_UNIT_KEY) != null) {
        setElements(columnIndicators);
      }
 else {
        removeItemBranch(indicatorItem);
      }
    }
  }
);
  delEditor.minimumWidth=WIDTH1_CELL;
  delEditor.horizontalAlignment=SWT.CENTER;
  delEditor.setEditor(delLabel,indicatorItem,3);
  indicatorItem.setData(ITEM_EDITOR_KEY,new TreeEditor[]{optionEditor,delEditor});
  if (indicatorEnum.hasChildren()) {
    indicatorItem.setData(treeItem.getData(COLUMN_INDICATOR_KEY));
    createIndicatorItems(indicatorItem,indicatorUnit.getChildren());
  }
  IndicatorParameters parameters=indicatorUnit.getIndicator().getParameters();
  if (parameters != null) {
    indicatorItem.setData(treeItem.getData(COLUMN_INDICATOR_KEY));
    createIndicatorParameters(indicatorItem,parameters);
  }
}

Fixed version (ground truth):
/** 
 * DOC qzhang Comment method "createOneUnit".
 * @param treeItem
 * @param indicatorUnit
 */
public void createOneUnit(final TreeItem treeItem,IndicatorUnit indicatorUnit){
  final TreeItem indicatorItem=new TreeItem(treeItem,SWT.NONE);
  final IndicatorUnit unit=indicatorUnit;
  IndicatorEnum type=indicatorUnit.getType();
  final IndicatorEnum indicatorEnum=type;
  indicatorItem.setData(COLUMN_INDICATOR_KEY,treeItem.getData(COLUMN_INDICATOR_KEY));
  indicatorItem.setData(INDICATOR_UNIT_KEY,unit);
  indicatorItem.setData(VIEWER_KEY,this);
  String label=indicatorUnit.getIndicatorName();
  if (IndicatorEnum.RegexpMatchingIndicatorEnum.compareTo(type) == 0 || IndicatorEnum.SqlPatternMatchingIndicatorEnum.compareTo(type) == 0) {
    indicatorItem.setImage(0,ImageLib.getImage(ImageLib.PATTERN_REG));
  }
  indicatorItem.setText(0,label);
  TreeEditor optionEditor;
  optionEditor=new TreeEditor(tree);
  Label optionLabel=new Label(tree,SWT.NONE);
  optionLabel.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));
  optionLabel.setImage(ImageLib.getImage(ImageLib.INDICATOR_OPTION));
  optionLabel.setToolTipText("String_Node_Str");
  optionLabel.pack();
  optionLabel.setData(indicatorUnit);
  optionLabel.addMouseListener(new MouseAdapter(){
    @Override public void mouseDown(    MouseEvent e){
      final IndicatorUnit indicator=(IndicatorUnit)((Label)e.getSource()).getData();
      final IndicatorOptionsWizard wizard=new IndicatorOptionsWizard(indicator,analysis);
      String helpID=HelpPlugin.PLUGIN_ID + HelpPlugin.INDICATOR_OPTION_HELP_ID;
      WizardDialog dialog=new WizardDialog(null,wizard);
      WizardDialog dialogWithHelp=HelpUtils.injectHelp(dialog,wizard,helpID,indicator);
      if (dialogWithHelp != null) {
        if (Window.OK == dialogWithHelp.open()) {
          setDirty(wizard.isDirty());
          createIndicatorParameters(indicatorItem,indicator);
        }
      }
    }
  }
);
  optionEditor.minimumWidth=WIDTH1_CELL;
  optionEditor.horizontalAlignment=SWT.CENTER;
  optionEditor.setEditor(optionLabel,indicatorItem,1);
  TreeEditor delEditor=new TreeEditor(tree);
  Label delLabel=new Label(tree,SWT.NONE);
  delLabel.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));
  delLabel.setImage(ImageLib.getImage(ImageLib.DELETE_ACTION));
  delLabel.setToolTipText("String_Node_Str");
  delLabel.pack();
  delLabel.addMouseListener(new MouseAdapter(){
    @Override public void mouseDown(    MouseEvent e){
      ColumnIndicator columnIndicator=(ColumnIndicator)treeItem.getData(COLUMN_INDICATOR_KEY);
      deleteIndicatorItems(columnIndicator,unit);
      if (indicatorItem.getParentItem() != null && indicatorItem.getParentItem().getData(INDICATOR_UNIT_KEY) != null) {
        setElements(columnIndicators);
      }
 else {
        removeItemBranch(indicatorItem);
      }
    }
  }
);
  delEditor.minimumWidth=WIDTH1_CELL;
  delEditor.horizontalAlignment=SWT.CENTER;
  delEditor.setEditor(delLabel,indicatorItem,3);
  indicatorItem.setData(ITEM_EDITOR_KEY,new TreeEditor[]{optionEditor,delEditor});
  if (indicatorEnum.hasChildren()) {
    indicatorItem.setData(treeItem.getData(COLUMN_INDICATOR_KEY));
    createIndicatorItems(indicatorItem,indicatorUnit.getChildren());
  }
  createIndicatorParameters(indicatorItem,indicatorUnit);
}