Program: 108716
Project: 108716
Buggy source:
/** 
 * Creates a new instance
 * @param parent
 * @param controller
 */
public ViewLattice(final Composite parent,final Controller controller){
  controller.addListener(ModelPart.SELECTED_NODE,this);
  controller.addListener(ModelPart.FILTER,this);
  controller.addListener(ModelPart.MODEL,this);
  this.controller=controller;
  parent.setLayout(new GridLayout());
  bridge=new Composite(parent,SWT.BORDER | SWT.NO_BACKGROUND | SWT.EMBEDDED);
  bridge.setLayoutData(SWTUtil.createFillGridData());
  frame=SWT_AWT.new_Frame(bridge);
  frame.setLayout(new BorderLayout());
  frame.add(this,BorderLayout.CENTER);
  frame.setBackground(Color.WHITE);
  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){
      model.getClipboard().add(selectedNode);
      controller.update(new ModelEvent(ViewLattice.this,ModelPart.CLIPBOARD,selectedNode));
      model.setSelectedNode(selectedNode);
      controller.update(new ModelEvent(ViewLattice.this,ModelPart.SELECTED_NODE,selectedNode));
      repaint();
    }
  }
);
  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){
      controller.actionApplySelectedTransformation();
      model.setSelectedNode(selectedNode);
      controller.update(new ModelEvent(ViewLattice.this,ModelPart.SELECTED_NODE,selectedNode));
      repaint();
    }
  }
);
  this.tooltipTimer=new Timer(TOOLTIP_WAIT,new ActionListener(){
    @Override public void actionPerformed(    ActionEvent arg0){
      if (tooltipX != -1 && tooltipY != -1) {
        final ARXNode node=getNode(tooltipX,tooltipY);
        if (node != null) {
          controller.getToolTip().show(createTooltipText(node));
        }
 else {
          controller.getToolTip().unshow();
        }
      }
 else {
        controller.getToolTip().unshow();
      }
    }
  }
);
  this.tooltipTimer.setRepeats(false);
  resetBuffer();
  initializeListeners();
}

Fixed version (ground truth):
/** 
 * Creates a new instance
 * @param parent
 * @param controller
 */
public ViewLattice(final Composite parent,final Controller controller){
  controller.addListener(ModelPart.SELECTED_NODE,this);
  controller.addListener(ModelPart.FILTER,this);
  controller.addListener(ModelPart.MODEL,this);
  controller.addListener(ModelPart.RESULT,this);
  this.controller=controller;
  parent.setLayout(new GridLayout());
  bridge=new Composite(parent,SWT.BORDER | SWT.NO_BACKGROUND | SWT.EMBEDDED);
  bridge.setLayoutData(SWTUtil.createFillGridData());
  frame=SWT_AWT.new_Frame(bridge);
  frame.setLayout(new BorderLayout());
  frame.add(this,BorderLayout.CENTER);
  frame.setBackground(Color.WHITE);
  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){
      model.getClipboard().add(selectedNode);
      controller.update(new ModelEvent(ViewLattice.this,ModelPart.CLIPBOARD,selectedNode));
      model.setSelectedNode(selectedNode);
      controller.update(new ModelEvent(ViewLattice.this,ModelPart.SELECTED_NODE,selectedNode));
      repaint();
    }
  }
);
  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){
      controller.actionApplySelectedTransformation();
      model.setSelectedNode(selectedNode);
      controller.update(new ModelEvent(ViewLattice.this,ModelPart.SELECTED_NODE,selectedNode));
      repaint();
    }
  }
);
  this.tooltipTimer=new Timer(TOOLTIP_WAIT,new ActionListener(){
    @Override public void actionPerformed(    ActionEvent arg0){
      if (tooltipX != -1 && tooltipY != -1) {
        final ARXNode node=getNode(tooltipX,tooltipY);
        if (node != null) {
          controller.getToolTip().show(createTooltipText(node));
        }
 else {
          controller.getToolTip().unshow();
        }
      }
 else {
        controller.getToolTip().unshow();
      }
    }
  }
);
  this.tooltipTimer.setRepeats(false);
  resetBuffer();
  initializeListeners();
}