Program: 160512
Project: 160512
Buggy source:
@Override public void register(SInternalServicePluginConfiguration internalServicePluginConfiguration,final 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.setReadRevision(true);
  serviceDescriptor.setNotificationProtocol(AccessMethod.INTERNAL);
  serviceDescriptor.setTrigger(Trigger.NEW_REVISION);
  registerNewRevisionHandler(serviceDescriptor,new NewRevisionHandler(){
    @Override public void newRevision(    BimServerClientInterface bimServerClientInterface,    long poid,    long roid,    String userToken,    long soid,    SObjectType settings) throws ServerException, UserException {
      Date startDate=new Date();
      Long topicId=null;
      try {
        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);
        bimServerClientInterface.getRegistry().updateProgressTopic(topicId,state);
        SSerializerPluginConfiguration stepSerializerRemote=bimServerClientInterface.getBimsie1ServiceInterface().getSerializerByContentType("String_Node_Str");
        ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
        bimServerClientInterface.download(roid,stepSerializerRemote.getOid(),outputStream);
        BimServerClientInterface localClient=getLocalBimServerClientInterface(new UserTokenAuthentication(userToken));
        PluginConfiguration pluginConfiguration=new org.bimserver.plugins.PluginConfiguration(settings);
        String localProjectName=pluginConfiguration.getString("String_Node_Str");
        List<SProject> projectsByName=localClient.getBimsie1ServiceInterface().getProjectsByName(localProjectName);
        if (projectsByName.isEmpty()) {
          throw new UserException("String_Node_Str" + localProjectName + "String_Node_Str");
        }
        SProject localProject=projectsByName.get(0);
        SDeserializerPluginConfiguration localDeserializer=localClient.getBimsie1ServiceInterface().getDeserializerByName("String_Node_Str");
        localClient.getBimsie1ServiceInterface().checkin(localProject.getOid(),"String_Node_Str",localDeserializer.getOid(),(long)outputStream.size(),"String_Node_Str",new DataHandler(new InputStreamDataSource(new ByteArrayInputStream(outputStream.toByteArray()))),true);
      }
 catch (      PublicInterfaceNotFoundException e) {
        LOGGER.error("String_Node_Str",e);
      }
catch (      ServiceException e) {
        LOGGER.error("String_Node_Str",e);
      }
catch (      ChannelConnectionException e) {
        LOGGER.error("String_Node_Str",e);
      }
 finally {
        SLongActionState state=new SLongActionState();
        state.setProgress(100);
        state.setTitle("String_Node_Str");
        state.setState(SActionState.FINISHED);
        state.setStart(startDate);
        state.setEnd(new Date());
        try {
          bimServerClientInterface.getRegistry().updateProgressTopic(topicId,state);
          bimServerClientInterface.getRegistry().unregisterProgressTopic(topicId);
        }
 catch (        PublicInterfaceNotFoundException e) {
          LOGGER.error("String_Node_Str",e);
        }
      }
    }
  }
);
}

Fixed version (ground truth):
@Override public void register(SInternalServicePluginConfiguration internalServicePluginConfiguration,final 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.setReadRevision(true);
  serviceDescriptor.setNotificationProtocol(AccessMethod.INTERNAL);
  serviceDescriptor.setTrigger(Trigger.NEW_REVISION);
  registerNewRevisionHandler(serviceDescriptor,new NewRevisionHandler(){
    @Override public void newRevision(    BimServerClientInterface bimServerClientInterface,    long poid,    long roid,    String userToken,    long soid,    SObjectType settings) throws ServerException, UserException {
      Date startDate=new Date();
      Long topicId=null;
      try {
        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);
        bimServerClientInterface.getRegistry().updateProgressTopic(topicId,state);
        SSerializerPluginConfiguration stepSerializerRemote=bimServerClientInterface.getBimsie1ServiceInterface().getSerializerByContentType("String_Node_Str");
        ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
        bimServerClientInterface.download(roid,stepSerializerRemote.getOid(),outputStream);
        BimServerClientInterface localClient=getLocalBimServerClientInterface(new UserTokenAuthentication(userToken));
        PluginConfiguration pluginConfiguration=new org.bimserver.plugins.PluginConfiguration(settings);
        String localProjectName=pluginConfiguration.getString("String_Node_Str");
        List<SProject> projectsByName=localClient.getBimsie1ServiceInterface().getProjectsByName(localProjectName);
        if (projectsByName.isEmpty()) {
          throw new UserException("String_Node_Str" + localProjectName + "String_Node_Str");
        }
        SProject localProject=projectsByName.get(0);
        SDeserializerPluginConfiguration localDeserializer=localClient.getBimsie1ServiceInterface().getDeserializerByName("String_Node_Str");
        localClient.getBimsie1ServiceInterface().checkin(localProject.getOid(),"String_Node_Str",localDeserializer.getOid(),(long)outputStream.size(),"String_Node_Str",new DataHandler(new InputStreamDataSource(new ByteArrayInputStream(outputStream.toByteArray()))),true);
      }
 catch (      PublicInterfaceNotFoundException e) {
        LOGGER.error("String_Node_Str",e);
      }
catch (      ServiceException e) {
        LOGGER.error("String_Node_Str",e);
      }
catch (      ChannelConnectionException e) {
        LOGGER.error("String_Node_Str",e);
      }
 finally {
        SLongActionState state=new SLongActionState();
        state.setProgress(100);
        state.setTitle("String_Node_Str");
        state.setState(SActionState.FINISHED);
        state.setStart(startDate);
        state.setEnd(new Date());
        try {
          bimServerClientInterface.getRegistry().updateProgressTopic(topicId,state);
          bimServerClientInterface.getRegistry().unregisterProgressTopic(topicId);
        }
 catch (        PublicInterfaceNotFoundException e) {
          LOGGER.error("String_Node_Str",e);
        }
      }
    }
  }
);
}