Program: 103311
Project: 103311
Buggy source:
/** 
 * Event when an entry is updated. Something for the entry data or have been added to a new group or removed from one
 * @param addresses Collection
 */
public void entriesUpdated(Collection<String> addresses){
  if (logger.isTraceEnabled())   logger.trace("String_Node_Str" + addresses);
  for (  String contactID : addresses) {
    RosterEntry entry=roster.getEntry(contactID);
    ContactJabberImpl contact=findContactById(contactID);
    if (contact == null && isEntryDisplayable(entry)) {
      contact=addEntryToContactList(contactID);
    }
    for (    RosterGroup gr : entry.getGroups()) {
      if (findContactGroup(gr.getName()) == null) {
        ContactGroupJabberImpl group=findContactGroupByNameCopy(gr.getName());
        if (group != null) {
          group.setSourceGroup(gr);
          fireGroupEvent(group,ServerStoredGroupEvent.GROUP_RENAMED_EVENT);
        }
 else {
        }
      }
 else {
        ContactGroup contactGroup=contact.getParentContactGroup();
        if (!gr.getName().equals(contactGroup.getGroupName())) {
          if (contactGroup instanceof ContactGroupJabberImpl)           ((ContactGroupJabberImpl)contactGroup).removeContact(contact);
 else           if (contactGroup instanceof RootContactGroupJabberImpl)           ((RootContactGroupJabberImpl)contactGroup).removeContact(contact);
          ContactGroupJabberImpl newParentGroup=findContactGroup(gr.getName());
          newParentGroup.addContact(contact);
          fireContactMoved(contactGroup,newParentGroup,contact);
        }
      }
    }
  }
}

Fixed version (ground truth):
/** 
 * Event when an entry is updated. Something for the entry data or have been added to a new group or removed from one
 * @param addresses Collection
 */
public void entriesUpdated(Collection<String> addresses){
  if (logger.isTraceEnabled())   logger.trace("String_Node_Str" + addresses);
  for (  String contactID : addresses) {
    RosterEntry entry=roster.getEntry(contactID);
    ContactJabberImpl contact=findContactById(contactID);
    if (contact != null && (contact instanceof VolatileContactJabberImpl)) {
      contact=null;
    }
    if (contact == null && isEntryDisplayable(entry)) {
      contact=addEntryToContactList(contactID);
    }
    for (    RosterGroup gr : entry.getGroups()) {
      if (findContactGroup(gr.getName()) == null) {
        ContactGroupJabberImpl group=findContactGroupByNameCopy(gr.getName());
        if (group != null) {
          group.setSourceGroup(gr);
          fireGroupEvent(group,ServerStoredGroupEvent.GROUP_RENAMED_EVENT);
        }
 else {
        }
      }
 else {
        ContactGroup contactGroup=contact.getParentContactGroup();
        if (!gr.getName().equals(contactGroup.getGroupName())) {
          if (contactGroup instanceof ContactGroupJabberImpl)           ((ContactGroupJabberImpl)contactGroup).removeContact(contact);
 else           if (contactGroup instanceof RootContactGroupJabberImpl)           ((RootContactGroupJabberImpl)contactGroup).removeContact(contact);
          ContactGroupJabberImpl newParentGroup=findContactGroup(gr.getName());
          newParentGroup.addContact(contact);
          fireContactMoved(contactGroup,newParentGroup,contact);
        }
      }
    }
  }
}