Program: 160517
Project: 160517
Buggy source:
@Override public void register(SInternalServicePluginConfiguration internalServicePluginConfiguration,PluginConfiguration pluginConfiguration){
  ServiceDescriptor serviceDescriptor=StoreFactory.eINSTANCE.createServiceDescriptor();
  serviceDescriptor.setProviderName("String_Node_Str");
  serviceDescriptor.setIdentifier(getClass().getName());
  serviceDescriptor.setName("String_Node_Str");
  serviceDescriptor.setDescription("String_Node_Str");
  serviceDescriptor.setNotificationProtocol(AccessMethod.INTERNAL);
  serviceDescriptor.setTrigger(Trigger.NEW_REVISION);
  serviceDescriptor.setReadRevision(true);
  serviceDescriptor.setWriteRevision(true);
  registerNewRevisionHandler(serviceDescriptor,new NewRevisionHandler(){
    @Override public void newRevision(    BimServerClientInterface bimServerClientInterface,    long poid,    long roid,    String userToken,    long soid,    SObjectType settings) throws ServerException, UserException {
      try {
        Date startDate=new Date();
        Long topicId=bimServerClientInterface.getRegistry().registerProgressOnRevisionTopic(SProgressTopicType.RUNNING_SERVICE,poid,roid,"String_Node_Str");
        SLongActionState state=new SLongActionState();
        state.setTitle("String_Node_Str");
        state.setState(SActionState.STARTED);
        state.setProgress(-1);
        state.setStart(startDate);
        IfcModelInterface model=bimServerClientInterface.getModel(poid,roid,false);
        Map<String,List<IfcRoot>> guids=new HashMap<String,List<IfcRoot>>();
        int fixed=0;
        for (        IfcRoot ifcRoot : model.getAllWithSubTypes(IfcRoot.class)) {
          if (ifcRoot.getGlobalId() != null) {
            if (!guids.containsKey(ifcRoot.getGlobalId())) {
              guids.put(ifcRoot.getGlobalId(),new ArrayList<IfcRoot>());
            }
            guids.get(ifcRoot.getGlobalId()).add(ifcRoot);
          }
        }
        for (        String guid : guids.keySet()) {
          List<IfcRoot> list=guids.get(guid);
          if (list.size() > 1) {
            int c=1;
            for (int i=1; i < list.size(); i++) {
              String newGuid=guid + "String_Node_Str" + c;
              while (guids.containsKey(newGuid)) {
                c++;
                newGuid=guid + "String_Node_Str" + c;
              }
              fixed++;
              list.get(i).setGlobalId(newGuid);
            }
          }
        }
        if (fixed > 0) {
          model.commit("String_Node_Str" + fixed + "String_Node_Str");
        }
        state=new SLongActionState();
        state.setProgress(100);
        state.setTitle("String_Node_Str");
        state.setState(SActionState.FINISHED);
        state.setStart(startDate);
        state.setEnd(new Date());
        bimServerClientInterface.getRegistry().updateProgressTopic(topicId,state);
        bimServerClientInterface.getRegistry().unregisterProgressTopic(topicId);
      }
 catch (      PublicInterfaceNotFoundException e) {
        LoggerFactory.getLogger(GuidFixerService.class).error("String_Node_Str",e);
      }
catch (      BimServerClientException e) {
        LoggerFactory.getLogger(GuidFixerService.class).error("String_Node_Str",e);
      }
    }
  }
);
}

Fixed version (ground truth):
@Override public void register(SInternalServicePluginConfiguration internalServicePluginConfiguration,PluginConfiguration pluginConfiguration){
  ServiceDescriptor serviceDescriptor=StoreFactory.eINSTANCE.createServiceDescriptor();
  serviceDescriptor.setProviderName("String_Node_Str");
  serviceDescriptor.setIdentifier("String_Node_Str" + internalServicePluginConfiguration.getOid());
  serviceDescriptor.setName("String_Node_Str");
  serviceDescriptor.setDescription("String_Node_Str");
  serviceDescriptor.setNotificationProtocol(AccessMethod.INTERNAL);
  serviceDescriptor.setTrigger(Trigger.NEW_REVISION);
  serviceDescriptor.setReadRevision(true);
  serviceDescriptor.setWriteRevision(true);
  registerNewRevisionHandler(serviceDescriptor,new NewRevisionHandler(){
    @Override public void newRevision(    BimServerClientInterface bimServerClientInterface,    long poid,    long roid,    String userToken,    long soid,    SObjectType settings) throws ServerException, UserException {
      try {
        Date startDate=new Date();
        Long topicId=bimServerClientInterface.getRegistry().registerProgressOnRevisionTopic(SProgressTopicType.RUNNING_SERVICE,poid,roid,"String_Node_Str");
        SLongActionState state=new SLongActionState();
        state.setTitle("String_Node_Str");
        state.setState(SActionState.STARTED);
        state.setProgress(-1);
        state.setStart(startDate);
        IfcModelInterface model=bimServerClientInterface.getModel(poid,roid,false);
        Map<String,List<IfcRoot>> guids=new HashMap<String,List<IfcRoot>>();
        int fixed=0;
        for (        IfcRoot ifcRoot : model.getAllWithSubTypes(IfcRoot.class)) {
          if (ifcRoot.getGlobalId() != null) {
            if (!guids.containsKey(ifcRoot.getGlobalId())) {
              guids.put(ifcRoot.getGlobalId(),new ArrayList<IfcRoot>());
            }
            guids.get(ifcRoot.getGlobalId()).add(ifcRoot);
          }
        }
        for (        String guid : guids.keySet()) {
          List<IfcRoot> list=guids.get(guid);
          if (list.size() > 1) {
            int c=1;
            for (int i=1; i < list.size(); i++) {
              String newGuid=guid + "String_Node_Str" + c;
              while (guids.containsKey(newGuid)) {
                c++;
                newGuid=guid + "String_Node_Str" + c;
              }
              fixed++;
              list.get(i).setGlobalId(newGuid);
            }
          }
        }
        if (fixed > 0) {
          model.commit("String_Node_Str" + fixed + "String_Node_Str");
        }
        state=new SLongActionState();
        state.setProgress(100);
        state.setTitle("String_Node_Str");
        state.setState(SActionState.FINISHED);
        state.setStart(startDate);
        state.setEnd(new Date());
        bimServerClientInterface.getRegistry().updateProgressTopic(topicId,state);
        bimServerClientInterface.getRegistry().unregisterProgressTopic(topicId);
      }
 catch (      PublicInterfaceNotFoundException e) {
        LoggerFactory.getLogger(GuidFixerService.class).error("String_Node_Str",e);
      }
catch (      BimServerClientException e) {
        LoggerFactory.getLogger(GuidFixerService.class).error("String_Node_Str",e);
      }
    }
  }
);
}