Program: 103245
Project: 103245
Buggy source:
/** 
 * Performs needed operations, when a <tt>MetaContact</tt> has been moved in the <tt>MetaContactListService</tt> from one group to another.
 * @param evt the <tt>MetaContactMovedEvent</tt> that notified us
 */
public void metaContactMoved(final MetaContactMovedEvent evt){
  final MetaContact metaContact=evt.getSourceMetaContact();
  final MetaContactGroup oldParent=evt.getOldParent();
  final MetaContactGroup newParent=evt.getNewParent();
synchronized (metaContact) {
    UIContact uiContact=MetaContactListSource.getUIContact(metaContact);
    if (uiContact == null)     return;
    UIGroup oldUIGroup;
    if (MetaContactListSource.isRootGroup(oldParent))     oldUIGroup=GuiActivator.getContactList().getTreeModel().getRoot().getGroupDescriptor();
 else synchronized (oldParent) {
      oldUIGroup=MetaContactListSource.getUIGroup(oldParent);
    }
    if (oldUIGroup != null)     GuiActivator.getContactList().removeContact(uiContact);
    uiContact=MetaContactListSource.createUIContact(evt.getSourceMetaContact());
    UIGroup newUIGroup=null;
    if (!MetaContactListSource.isRootGroup(newParent)) {
synchronized (newParent) {
        newUIGroup=MetaContactListSource.getUIGroup(newParent);
        if (newUIGroup == null)         newUIGroup=MetaContactListSource.createUIGroup(newParent);
      }
    }
    ContactListFilter currentFilter=GuiActivator.getContactList().getCurrentFilter();
    if (currentFilter.isMatching(uiContact))     GuiActivator.getContactList().addContact(uiContact,newUIGroup,true,true);
 else     MetaContactListSource.removeUIContact(metaContact);
  }
}

Fixed version (ground truth):
/** 
 * Performs needed operations, when a <tt>MetaContact</tt> has been moved in the <tt>MetaContactListService</tt> from one group to another.
 * @param evt the <tt>MetaContactMovedEvent</tt> that notified us
 */
public void metaContactMoved(final MetaContactMovedEvent evt){
  if (!SwingUtilities.isEventDispatchThread()) {
    SwingUtilities.invokeLater(new Runnable(){
      public void run(){
        metaContactMoved(evt);
      }
    }
);
    return;
  }
  final MetaContact metaContact=evt.getSourceMetaContact();
  final MetaContactGroup oldParent=evt.getOldParent();
  final MetaContactGroup newParent=evt.getNewParent();
synchronized (metaContact) {
    UIContact uiContact=MetaContactListSource.getUIContact(metaContact);
    if (uiContact == null)     return;
    UIGroup oldUIGroup;
    if (MetaContactListSource.isRootGroup(oldParent))     oldUIGroup=GuiActivator.getContactList().getTreeModel().getRoot().getGroupDescriptor();
 else synchronized (oldParent) {
      oldUIGroup=MetaContactListSource.getUIGroup(oldParent);
    }
    if (oldUIGroup != null)     GuiActivator.getContactList().removeContact(uiContact);
    uiContact=MetaContactListSource.createUIContact(metaContact);
    UIGroup newUIGroup=null;
    if (!MetaContactListSource.isRootGroup(newParent)) {
synchronized (newParent) {
        newUIGroup=MetaContactListSource.getUIGroup(newParent);
        if (newUIGroup == null)         newUIGroup=MetaContactListSource.createUIGroup(newParent);
      }
    }
    ContactListFilter currentFilter=GuiActivator.getContactList().getCurrentFilter();
    if (currentFilter.isMatching(uiContact))     GuiActivator.getContactList().addContact(uiContact,newUIGroup,true,true);
 else     MetaContactListSource.removeUIContact(metaContact);
  }
}