Program: 108079
Project: 108079
Buggy source:
/** 
 * Creates all components required for making the table editable.
 */
private void createMenu(){
  this.menu=new Menu(hierarchy.getControl());
  itemInsertRow=new MenuItem(menu,SWT.NONE);
  itemInsertRow.setText(Resources.getMessage("String_Node_Str"));
  itemInsertRow.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent e){
      hierarchy.actionInsertRow();
    }
  }
);
  itemDeleteRow=new MenuItem(menu,SWT.NONE);
  itemDeleteRow.setText(Resources.getMessage("String_Node_Str"));
  itemDeleteRow.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent e){
      hierarchy.actionDeleteRow();
    }
  }
);
  new MenuItem(menu,SWT.SEPARATOR);
  itemInsertColumn=new MenuItem(menu,SWT.NONE);
  itemInsertColumn.setText(Resources.getMessage("String_Node_Str"));
  itemInsertColumn.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent e){
      hierarchy.actionInsertColumn();
    }
  }
);
  itemDeleteColumn=new MenuItem(menu,SWT.NONE);
  itemDeleteColumn.setText(Resources.getMessage("String_Node_Str"));
  itemDeleteColumn.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent e){
      hierarchy.actionDeleteColumn();
    }
  }
);
  new MenuItem(menu,SWT.SEPARATOR);
  itemMoveRowUp=new MenuItem(menu,SWT.NONE);
  itemMoveRowUp.setText(Resources.getMessage("String_Node_Str"));
  itemMoveRowUp.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent e){
      hierarchy.actionMoveRowUp();
    }
  }
);
  itemMoveRowDown=new MenuItem(menu,SWT.NONE);
  itemMoveRowDown.setText(Resources.getMessage("String_Node_Str"));
  itemMoveRowDown.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent e){
      hierarchy.actionMoveRowDown();
    }
  }
);
  new MenuItem(menu,SWT.SEPARATOR);
  itemEditItem=new MenuItem(menu,SWT.NONE);
  itemEditItem.setText(Resources.getMessage("String_Node_Str"));
  itemEditItem.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent e){
      String value=getUserValue();
      if (value != null) {
        hierarchy.actionEditItem(value);
      }
    }
  }
);
  itemRenameItem=new MenuItem(menu,SWT.NONE);
  itemRenameItem.setText(Resources.getMessage("String_Node_Str"));
  itemRenameItem.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent e){
      String value=getUserValue();
      if (value != null) {
        hierarchy.actionRenameItem(value);
      }
    }
  }
);
  new MenuItem(menu,SWT.SEPARATOR);
  itemClear=new MenuItem(menu,SWT.NONE);
  itemClear.setText(Resources.getMessage("String_Node_Str"));
  itemClear.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent e){
      hierarchy.actionClear();
    }
  }
);
  itemInitialize=new MenuItem(menu,SWT.NONE);
  itemInitialize.setText(Resources.getMessage("String_Node_Str"));
  itemInitialize.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent e){
      Hierarchy initial=getInitialHierarchy();
      if (initial != null) {
        hierarchy.setHierarchy(initial);
      }
    }
  }
);
}

Fixed version (ground truth):
/** 
 * Creates all components required for making the table editable.
 */
private void createMenu(){
  this.menu=new Menu(hierarchy.getControl());
  itemInsertRow=new MenuItem(menu,SWT.NONE);
  itemInsertRow.setText(Resources.getMessage("String_Node_Str"));
  itemInsertRow.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent e){
      hierarchy.actionInsertRow();
    }
  }
);
  itemDeleteRow=new MenuItem(menu,SWT.NONE);
  itemDeleteRow.setText(Resources.getMessage("String_Node_Str"));
  itemDeleteRow.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent e){
      hierarchy.actionDeleteRow();
    }
  }
);
  new MenuItem(menu,SWT.SEPARATOR);
  itemInsertColumn=new MenuItem(menu,SWT.NONE);
  itemInsertColumn.setText(Resources.getMessage("String_Node_Str"));
  itemInsertColumn.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent e){
      hierarchy.actionInsertColumn();
    }
  }
);
  itemDeleteColumn=new MenuItem(menu,SWT.NONE);
  itemDeleteColumn.setText(Resources.getMessage("String_Node_Str"));
  itemDeleteColumn.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent e){
      hierarchy.actionDeleteColumn();
    }
  }
);
  new MenuItem(menu,SWT.SEPARATOR);
  itemMoveRowUp=new MenuItem(menu,SWT.NONE);
  itemMoveRowUp.setText(Resources.getMessage("String_Node_Str"));
  itemMoveRowUp.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent e){
      hierarchy.actionMoveRowUp();
    }
  }
);
  itemMoveRowDown=new MenuItem(menu,SWT.NONE);
  itemMoveRowDown.setText(Resources.getMessage("String_Node_Str"));
  itemMoveRowDown.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent e){
      hierarchy.actionMoveRowDown();
    }
  }
);
  new MenuItem(menu,SWT.SEPARATOR);
  itemEditItem=new MenuItem(menu,SWT.NONE);
  itemEditItem.setText(Resources.getMessage("String_Node_Str"));
  itemEditItem.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent e){
      String value=getUserValue();
      if (value != null) {
        hierarchy.actionEditItem(value);
      }
    }
  }
);
  itemRenameItem=new MenuItem(menu,SWT.NONE);
  itemRenameItem.setText(Resources.getMessage("String_Node_Str"));
  itemRenameItem.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent e){
      String value=getUserValue();
      if (value != null) {
        hierarchy.actionRenameItem(value);
      }
    }
  }
);
  new MenuItem(menu,SWT.SEPARATOR);
  itemClear=new MenuItem(menu,SWT.NONE);
  itemClear.setText(Resources.getMessage("String_Node_Str"));
  itemClear.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent e){
      hierarchy.actionClear();
    }
  }
);
  itemInitialize=new MenuItem(menu,SWT.NONE);
  itemInitialize.setText(Resources.getMessage("String_Node_Str"));
  itemInitialize.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent e){
      if (hierarchy.isRowSelected() || hierarchy.isColumnSelected() || hierarchy.isCellSelected()|| model == null || model.getInputConfig() == null || model.getInputConfig().getInput() == null || model.getSelectedAttribute() == null) {
        return;
      }
      controller.actionInitializeHierarchy();
    }
  }
);
}