Program: 132065
Project: 132065
Buggy source:
@Override public void onDataChanged(final AsyncDataChangeEvent<InstanceIdentifier<?>,DataObject> change){
  Map<InstanceIdentifier<?>,DataObject> dataCreatedConfigurationObject=change.getCreatedData();
  for (  Map.Entry<InstanceIdentifier<?>,DataObject> entry : dataCreatedConfigurationObject.entrySet()) {
    if (entry.getValue() instanceof ServiceFunctionGroup) {
      LOG.info("String_Node_Str",((ServiceFunctionGroup)entry.getValue()).getName());
      ServiceFunctionGroup sfg=(ServiceFunctionGroup)entry.getValue();
      buildGroup(sfg,true);
    }
  }
  Map<InstanceIdentifier<?>,DataObject> dataUpdatedConfigurationObject=change.getUpdatedData();
  for (  Map.Entry<InstanceIdentifier<?>,DataObject> entry : dataUpdatedConfigurationObject.entrySet()) {
    if ((entry.getValue() instanceof ServiceFunctionGroup && (!(dataCreatedConfigurationObject.containsKey(entry.getKey()))))) {
      LOG.info("String_Node_Str",((ServiceFunctionGroup)entry.getValue()).getName());
      ServiceFunctionGroup sfg=(ServiceFunctionGroup)entry.getValue();
      buildGroup(sfg,true);
    }
  }
  Set<InstanceIdentifier<?>> dataRemovedConfigurationIID=change.getRemovedPaths();
  for (  InstanceIdentifier<?> instanceIdentifier : dataRemovedConfigurationIID) {
    DataObject dataObject=change.getOriginalData().get(instanceIdentifier);
    if (dataObject instanceof ServiceFunctionGroup) {
      LOG.info("String_Node_Str",((ServiceFunctionGroup)dataObject).getName());
      ServiceFunctionGroup sfg=(ServiceFunctionGroup)dataObject;
      buildGroup(sfg,false);
    }
  }
}

Fixed version (ground truth):
@Override public void onDataChanged(final AsyncDataChangeEvent<InstanceIdentifier<?>,DataObject> change){
  Map<InstanceIdentifier<?>,DataObject> dataCreatedConfigurationObject=change.getCreatedData();
  for (  Map.Entry<InstanceIdentifier<?>,DataObject> entry : dataCreatedConfigurationObject.entrySet()) {
    if (entry.getValue() instanceof ServiceFunctionGroup) {
      LOG.info("String_Node_Str",((ServiceFunctionGroup)entry.getValue()).getName());
      ServiceFunctionGroup sfg=(ServiceFunctionGroup)entry.getValue();
      buildGroup(sfg,true);
    }
  }
  Map<InstanceIdentifier<?>,DataObject> dataUpdatedConfigurationObject=change.getUpdatedData();
  for (  Map.Entry<InstanceIdentifier<?>,DataObject> entry : dataUpdatedConfigurationObject.entrySet()) {
    if (entry.getValue() instanceof ServiceFunctionGroup && !dataCreatedConfigurationObject.containsKey(entry.getKey())) {
      LOG.info("String_Node_Str",((ServiceFunctionGroup)entry.getValue()).getName());
      ServiceFunctionGroup sfg=(ServiceFunctionGroup)entry.getValue();
      buildGroup(sfg,true);
    }
  }
  Set<InstanceIdentifier<?>> dataRemovedConfigurationIID=change.getRemovedPaths();
  for (  InstanceIdentifier<?> instanceIdentifier : dataRemovedConfigurationIID) {
    DataObject dataObject=change.getOriginalData().get(instanceIdentifier);
    if (dataObject instanceof ServiceFunctionGroup) {
      LOG.info("String_Node_Str",((ServiceFunctionGroup)dataObject).getName());
      ServiceFunctionGroup sfg=(ServiceFunctionGroup)dataObject;
      buildGroup(sfg,false);
    }
  }
}