Program: 30103
Project: 30103
Buggy source:
public void transactionCommited(final List<PropertyChangeEvent> changes){
  for (  PropertyChangeEvent event : changes) {
    if (event.getSource() instanceof Application || event.getSource() instanceof ApplicationRef) {
      Object oldValue=event.getOldValue();
      Object newValue=event.getNewValue();
      if (oldValue != null && newValue != null && oldValue instanceof String && newValue instanceof String && !((String)oldValue).equals((String)newValue)) {
        Object parent=event.getSource();
        String appName=null;
        if (parent instanceof Application) {
          appName=((Application)parent).getName();
        }
 else         if (parent instanceof ApplicationRef) {
          appName=((ApplicationRef)parent).getRef();
        }
        if (applications.getApplication(appName) == null) {
          return;
        }
        if (event.getPropertyName().equals(ServerTags.ENABLED)) {
          handleAppEnableChange(event.getSource(),appName,Boolean.valueOf((String)newValue));
        }
 else         if (event.getPropertyName().equals(ServerTags.CONTEXT_ROOT) || event.getPropertyName().equals(ServerTags.VIRTUAL_SERVERS) || event.getPropertyName().equals(ServerTags.AVAILABILITY_ENABLED)) {
          handleOtherAppConfigChanges(event.getSource(),appName);
        }
      }
    }
  }
}

Fixed version (ground truth):
public void transactionCommited(final List<PropertyChangeEvent> changes){
  boolean isUpdatingAttribute=true;
  for (  PropertyChangeEvent event : changes) {
    Object oldValue=event.getOldValue();
    Object newValue=event.getNewValue();
    if (event.getSource() instanceof Applications) {
      if (event.getPropertyName().equals(ServerTags.APPLICATION)) {
        if (oldValue == null || newValue == null) {
          isUpdatingAttribute=false;
          break;
        }
      }
    }
 else     if (event.getSource() instanceof Server || event.getSource() instanceof Cluster) {
      if (event.getPropertyName().equals(ServerTags.APPLICATION_REF)) {
        if (oldValue == null || newValue == null) {
          isUpdatingAttribute=false;
          break;
        }
      }
    }
  }
  if (!isUpdatingAttribute) {
    return;
  }
  for (  PropertyChangeEvent event : changes) {
    if (event.getSource() instanceof Application || event.getSource() instanceof ApplicationRef) {
      Object oldValue=event.getOldValue();
      Object newValue=event.getNewValue();
      if (oldValue != null && newValue != null && oldValue instanceof String && newValue instanceof String && !((String)oldValue).equals((String)newValue)) {
        Object parent=event.getSource();
        String appName=null;
        if (parent instanceof Application) {
          appName=((Application)parent).getName();
        }
 else         if (parent instanceof ApplicationRef) {
          appName=((ApplicationRef)parent).getRef();
        }
        if (applications.getApplication(appName) == null) {
          return;
        }
        if (event.getPropertyName().equals(ServerTags.ENABLED)) {
          handleAppEnableChange(event.getSource(),appName,Boolean.valueOf((String)newValue));
        }
 else         if (event.getPropertyName().equals(ServerTags.CONTEXT_ROOT) || event.getPropertyName().equals(ServerTags.VIRTUAL_SERVERS) || event.getPropertyName().equals(ServerTags.AVAILABILITY_ENABLED)) {
          handleOtherAppConfigChanges(event.getSource(),appName);
        }
      }
    }
  }
}