Program: 102915
Project: 102915
Buggy source:
/** 
 * Dispatches the given mouse <tt>event</tt> to the underlying buttons.
 * @param event the <tt>MouseEvent</tt> to dispatch
 */
private void dispatchEventToButtons(MouseEvent event){
  TreePath mousePath=getPathForLocation(event.getX(),event.getY());
  if (mousePath == null)   return;
  ContactListTreeCellRenderer renderer=(ContactListTreeCellRenderer)getCellRenderer().getTreeCellRendererComponent(this,mousePath.getLastPathComponent(),true,true,true,getRowForPath(mousePath),true);
  if (!mousePath.equals(getSelectionPath())) {
    renderer.resetRolloverState();
    this.repaint();
    return;
  }
  Rectangle r=this.getPathBounds(mousePath);
  int translatedX=event.getX() - r.x;
  int translatedY=event.getY() - r.y;
  Component mouseComponent=renderer.findComponentAt(translatedX,translatedY);
  if (logger.isDebugEnabled() && mouseComponent != null)   logger.debug("String_Node_Str" + mouseComponent.getClass().getName() + "String_Node_Str"+ mouseComponent.getBounds()+ "String_Node_Str"+ translatedX+ "String_Node_Str"+ translatedY);
  if (mouseComponent instanceof SIPCommButton) {
    MouseEvent evt=new MouseEvent(mouseComponent,event.getID(),event.getWhen(),event.getModifiers(),5,5,event.getClickCount(),event.isPopupTrigger());
    ((SIPCommButton)mouseComponent).getModel().setRollover(event.getID() == MouseEvent.MOUSE_MOVED);
    if (event.getID() == MouseEvent.MOUSE_RELEASED && event.getClickCount() < 2 && previouslySelectedNode instanceof GroupNode) {
      previouslySelectedNode=null;
    }
    renderer.resetRolloverState(mouseComponent);
    mouseComponent.dispatchEvent(evt);
  }
 else {
    renderer.resetRolloverState();
  }
  this.repaint();
}

Fixed version (ground truth):
/** 
 * Dispatches the given mouse <tt>event</tt> to the underlying buttons.
 * @param event the <tt>MouseEvent</tt> to dispatch
 */
private void dispatchEventToButtons(MouseEvent event){
  TreePath mousePath=getPathForLocation(event.getX(),event.getY());
  if (mousePath == null)   return;
  ContactListTreeCellRenderer renderer=(ContactListTreeCellRenderer)getCellRenderer().getTreeCellRendererComponent(this,mousePath.getLastPathComponent(),getLastSelectedPathComponent() == mousePath.getLastPathComponent(),true,true,getRowForPath(mousePath),true);
  if (!mousePath.equals(getSelectionPath())) {
    renderer.resetRolloverState();
    this.repaint();
    return;
  }
  Rectangle r=this.getPathBounds(mousePath);
  int translatedX=event.getX() - r.x;
  int translatedY=event.getY() - r.y;
  Component mouseComponent=renderer.findComponentAt(translatedX,translatedY);
  if (logger.isDebugEnabled() && mouseComponent != null)   logger.debug("String_Node_Str" + mouseComponent.getClass().getName() + "String_Node_Str"+ mouseComponent.getBounds()+ "String_Node_Str"+ translatedX+ "String_Node_Str"+ translatedY);
  if (mouseComponent instanceof SIPCommButton) {
    MouseEvent evt=new MouseEvent(mouseComponent,event.getID(),event.getWhen(),event.getModifiers(),5,5,event.getClickCount(),event.isPopupTrigger());
    ((SIPCommButton)mouseComponent).getModel().setRollover(event.getID() == MouseEvent.MOUSE_MOVED);
    if (event.getID() == MouseEvent.MOUSE_RELEASED && event.getClickCount() < 2 && previouslySelectedNode instanceof GroupNode) {
      previouslySelectedNode=null;
    }
    renderer.resetRolloverState(mouseComponent);
    mouseComponent.dispatchEvent(evt);
  }
 else {
    renderer.resetRolloverState();
  }
  this.repaint();
}