Program: 108433
Project: 108433
Buggy source:
/** 
 * Creates a new instance
 * @param parent
 * @param controller
 */
public ViewClipboard(final Composite parent,final Controller controller){
  controller.addListener(ModelPart.CLIPBOARD,this);
  controller.addListener(ModelPart.MODEL,this);
  controller.addListener(ModelPart.SELECTED_NODE,this);
  this.controller=controller;
  ComponentTitledBorder border=new ComponentTitledBorder(parent,controller,Resources.getMessage("String_Node_Str"),"String_Node_Str");
  root=new Composite(border.getControl(),SWT.NONE);
  border.setChild(root);
  border.setLayoutData(SWTUtil.createFillGridData());
  final GridLayout groupNodeGridLayout=new GridLayout();
  root.setLayout(groupNodeGridLayout);
  table=new Table(root,SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL| SWT.H_SCROLL);
  table.setLayoutData(SWTUtil.createFillGridData());
  table.setHeaderVisible(true);
  table.setLinesVisible(true);
  table.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent arg0){
      final TableItem[] s=table.getSelection();
      if (s.length > 0) {
        final ARXNode node=(ARXNode)s[0].getData();
        model.setSelectedNode(node);
        controller.update(new ModelEvent(ViewClipboard.this,ModelPart.SELECTED_NODE,node));
      }
    }
  }
);
  this.menu=new Menu(parent.getShell());
  MenuItem item1=new MenuItem(menu,SWT.NONE);
  item1.setText(Resources.getMessage("String_Node_Str"));
  item1.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent arg0){
      if (selectedTableItem != null) {
        ARXNode node=(ARXNode)selectedTableItem.getData();
        final String label=Arrays.toString(node.getTransformation());
        final String value=controller.actionShowInputDialog(controller.getResources().getShell(),Resources.getMessage("String_Node_Str"),Resources.getMessage("String_Node_Str") + label,selectedTableItem.getText(1));
        if (value != null) {
          selectedTableItem.setText(1,value);
          node.getAttributes().put(NODE_COMMENT,value);
        }
      }
    }
  }
);
  MenuItem item2=new MenuItem(menu,SWT.NONE);
  item2.setText(Resources.getMessage("String_Node_Str"));
  item2.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent arg0){
      if (selectedTableItem != null) {
        ARXNode node=(ARXNode)selectedTableItem.getData();
        model.getClipboard().remove(node);
        removeItem(selectedTableItem);
        controller.update(new ModelEvent(ViewClipboard.this,ModelPart.CLIPBOARD,null));
      }
    }
  }
);
  MenuItem item3=new MenuItem(menu,SWT.NONE);
  item3.setText(Resources.getMessage("String_Node_Str"));
  item3.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent arg0){
      controller.actionApplySelectedTransformation();
      controller.update(new ModelEvent(this,ModelPart.SELECTED_NODE,model.getSelectedNode()));
    }
  }
);
  table.addListener(SWT.MouseDown,new Listener(){
    @Override public void handleEvent(    final Event event){
      if (event.button == 3) {
        final TableItem i=getItemAt(event.x,event.y);
        if (i != null) {
          final ARXNode node=(ARXNode)i.getData();
          model.setSelectedNode(node);
          controller.update(new ModelEvent(ViewClipboard.this,ModelPart.SELECTED_NODE,node));
          selectedTableItem=i;
          Point point=table.toDisplay(event.x,event.y);
          Rectangle bounds=i.getBounds();
          bounds.x=table.toDisplay(bounds.x,bounds.y).x;
          bounds.y=table.toDisplay(bounds.x,bounds.y).y;
          menu.setLocation(point);
          menu.setVisible(true);
        }
      }
    }
  }
);
  final TableColumn c=new TableColumn(table,SWT.NONE);
  c.setText(Resources.getMessage("String_Node_Str"));
  columns.add(c);
  final TableColumn c2=new TableColumn(table,SWT.NONE);
  c2.setText(Resources.getMessage("String_Node_Str"));
  columns.add(c2);
  c.pack();
  c2.pack();
}

Fixed version (ground truth):
/** 
 * Creates a new instance
 * @param parent
 * @param controller
 */
public ViewClipboard(final Composite parent,final Controller controller){
  controller.addListener(ModelPart.CLIPBOARD,this);
  controller.addListener(ModelPart.MODEL,this);
  controller.addListener(ModelPart.SELECTED_NODE,this);
  this.controller=controller;
  ComponentTitledBorder border=new ComponentTitledBorder(parent,controller,Resources.getMessage("String_Node_Str"),"String_Node_Str");
  root=new Composite(border.getControl(),SWT.NONE);
  border.setChild(root);
  border.setLayoutData(SWTUtil.createFillGridData());
  final GridLayout groupNodeGridLayout=new GridLayout();
  root.setLayout(groupNodeGridLayout);
  table=new Table(root,SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL| SWT.H_SCROLL);
  table.setLayoutData(SWTUtil.createFillGridData());
  table.setHeaderVisible(true);
  table.setLinesVisible(true);
  table.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent arg0){
      final TableItem[] s=table.getSelection();
      if (s.length > 0) {
        final ARXNode node=(ARXNode)s[0].getData();
        model.setSelectedNode(node);
        controller.update(new ModelEvent(ViewClipboard.this,ModelPart.SELECTED_NODE,node));
      }
    }
  }
);
  this.menu=new Menu(parent.getShell());
  MenuItem item1=new MenuItem(menu,SWT.NONE);
  item1.setText(Resources.getMessage("String_Node_Str"));
  item1.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent arg0){
      if (selectedTableItem != null) {
        ARXNode node=(ARXNode)selectedTableItem.getData();
        final String label=Arrays.toString(node.getTransformation());
        final String value=controller.actionShowInputDialog(controller.getResources().getShell(),Resources.getMessage("String_Node_Str"),Resources.getMessage("String_Node_Str") + label,selectedTableItem.getText(1));
        if (value != null) {
          selectedTableItem.setText(1,value);
          node.getAttributes().put(NODE_COMMENT,value);
        }
      }
    }
  }
);
  MenuItem item2=new MenuItem(menu,SWT.NONE);
  item2.setText(Resources.getMessage("String_Node_Str"));
  item2.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent arg0){
      if (selectedTableItem != null) {
        ARXNode node=(ARXNode)selectedTableItem.getData();
        model.removeFromClipboard(node);
        removeItem(selectedTableItem);
        controller.update(new ModelEvent(ViewClipboard.this,ModelPart.CLIPBOARD,null));
      }
    }
  }
);
  MenuItem item3=new MenuItem(menu,SWT.NONE);
  item3.setText(Resources.getMessage("String_Node_Str"));
  item3.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    final SelectionEvent arg0){
      controller.actionApplySelectedTransformation();
      controller.update(new ModelEvent(this,ModelPart.SELECTED_NODE,model.getSelectedNode()));
    }
  }
);
  table.addListener(SWT.MouseDown,new Listener(){
    @Override public void handleEvent(    final Event event){
      if (event.button == 3) {
        final TableItem i=getItemAt(event.x,event.y);
        if (i != null) {
          final ARXNode node=(ARXNode)i.getData();
          model.setSelectedNode(node);
          controller.update(new ModelEvent(ViewClipboard.this,ModelPart.SELECTED_NODE,node));
          selectedTableItem=i;
          Point point=table.toDisplay(event.x,event.y);
          Rectangle bounds=i.getBounds();
          bounds.x=table.toDisplay(bounds.x,bounds.y).x;
          bounds.y=table.toDisplay(bounds.x,bounds.y).y;
          menu.setLocation(point);
          menu.setVisible(true);
        }
      }
    }
  }
);
  final TableColumn c=new TableColumn(table,SWT.NONE);
  c.setText(Resources.getMessage("String_Node_Str"));
  columns.add(c);
  final TableColumn c2=new TableColumn(table,SWT.NONE);
  c2.setText(Resources.getMessage("String_Node_Str"));
  columns.add(c2);
  c.pack();
  c2.pack();
}