Program: 96684
Project: 96684
Buggy source:
@Override protected void doWork(IProgressMonitor monitor) throws OseeCoreException {
  logf("String_Node_Str",getClass().getSimpleName(),workflows.size());
  sortWorkflows();
  Set<String> skippedTypes=new HashSet<String>();
  CompareDataCollector collector=new CompareDataCollector(){
    @Override public void onCompare(    CompareData data) throws OseeCoreException {
      String filePath=data.getOutputPath();
      String modifiedPath=filePath.substring(0,filePath.lastIndexOf(File.separator));
      try {
        if (resultFolder.toString().isEmpty()) {
          resultFolder.append(modifiedPath);
        }
      }
 catch (      IOException ex) {
        OseeCoreException.wrapAndThrow(ex);
      }
    }
  }
;
  for (  TeamWorkFlowArtifact workflow : workflows) {
    Set<ArtifactId> artIds=new HashSet<>();
    Collection<Change> changes=computeChanges(workflow,monitor,artIds);
    if (!changes.isEmpty() && changes.size() < 4000) {
      logf("String_Node_Str",workflow.toString(),workflow.getAtsId());
      String id=workflow.getSoleAttributeValueAsString(AtsAttributeTypes.LegacyPcrId,workflow.getAtsId());
      String prefix="String_Node_Str" + id;
      if (writeChangeReports) {
        Collection<ArtifactDelta> artifactDeltas=ChangeManager.getCompareArtifacts(changes);
        Iterator<ArtifactDelta> it=artifactDeltas.iterator();
        while (it.hasNext()) {
          ArtifactDelta next=it.next();
          Artifact endArtifact=next.getEndArtifact();
          ArtifactType artifactType=endArtifact.getArtifactType();
          if (artifactType.inheritsFrom(DISALLOW_TYPES) || !artifactType.inheritsFrom(ALLOW_TYPES)) {
            it.remove();
            artIds.remove(endArtifact.getArtId());
            logf("String_Node_Str" + endArtifact.getName() + "String_Node_Str"+ endArtifact.getArtifactTypeName()+ "String_Node_Str"+ endArtifact.getBranch().getIdString()+ "String_Node_Str"+ endArtifact.getArtId()+ "String_Node_Str");
            skippedTypes.add(endArtifact.getArtifactTypeName());
          }
        }
        if (artifactDeltas.isEmpty()) {
          logf("String_Node_Str",id);
          continue;
        }
        RendererManager.diff(collector,artifactDeltas,prefix,NO_DISPLAY,true,SKIP_DIALOGS,true,OVERRIDE_DATA_RIGHTS_OPTION,overrideDataRightsClassification);
      }
      String artIdsAsString=org.eclipse.osee.framework.jdk.core.util.Collections.toString("String_Node_Str",artIds);
      try {
        if (resultFolder.toString().isEmpty()) {
          IFolder folder=OseeData.getFolder("String_Node_Str");
          File idsFolder=new File(folder.getLocationURI());
          resultFolder.append(idsFolder.getAbsolutePath());
        }
        Lib.writeStringToFile(artIdsAsString,new File(resultFolder + prefix + "String_Node_Str"));
      }
 catch (      IOException ex) {
        OseeCoreException.wrapAndThrow(ex);
      }
    }
    monitor.worked(calculateWork(0.50));
  }
  logf("String_Node_Str");
  for (  String skipped : skippedTypes) {
    logf(skipped);
  }
}

Fixed version (ground truth):
@Override protected void doWork(IProgressMonitor monitor) throws OseeCoreException {
  logf("String_Node_Str",getClass().getSimpleName(),workflows.size());
  sortWorkflows();
  Set<String> skippedTypes=new HashSet<String>();
  CompareDataCollector collector=new CompareDataCollector(){
    @Override public void onCompare(    CompareData data) throws OseeCoreException {
      String filePath=data.getOutputPath();
      String modifiedPath=filePath.substring(0,filePath.lastIndexOf(File.separator));
      try {
        if (resultFolder.toString().isEmpty()) {
          resultFolder.append(modifiedPath);
        }
      }
 catch (      IOException ex) {
        OseeCoreException.wrapAndThrow(ex);
      }
    }
  }
;
  for (  TeamWorkFlowArtifact workflow : workflows) {
    Set<ArtifactId> artIds=new HashSet<>();
    Collection<Change> changes=computeChanges(workflow,monitor,artIds);
    if (!changes.isEmpty() && changes.size() < 4000) {
      logf("String_Node_Str",workflow.toString(),workflow.getAtsId());
      String id=workflow.getSoleAttributeValueAsString(AtsAttributeTypes.LegacyPcrId,workflow.getAtsId());
      String prefix="String_Node_Str" + id;
      if (writeChangeReports) {
        Collection<ArtifactDelta> artifactDeltas=ChangeManager.getCompareArtifacts(changes);
        Iterator<ArtifactDelta> it=artifactDeltas.iterator();
        while (it.hasNext()) {
          ArtifactDelta next=it.next();
          Artifact endArtifact=next.getEndArtifact();
          ArtifactType artifactType=endArtifact.getArtifactType();
          if (artifactType.inheritsFrom(DISALLOW_TYPES) || !artifactType.inheritsFrom(ALLOW_TYPES)) {
            it.remove();
            artIds.remove(endArtifact.getArtId());
            logf("String_Node_Str" + endArtifact.getName().replaceAll("String_Node_Str","String_Node_Str") + "String_Node_Str"+ endArtifact.getArtifactTypeName()+ "String_Node_Str"+ endArtifact.getBranch().getIdString()+ "String_Node_Str"+ endArtifact.getArtId()+ "String_Node_Str");
            skippedTypes.add(endArtifact.getArtifactTypeName());
          }
        }
        if (artifactDeltas.isEmpty()) {
          logf("String_Node_Str",id);
          continue;
        }
        RendererManager.diff(collector,artifactDeltas,prefix,NO_DISPLAY,true,SKIP_DIALOGS,true,OVERRIDE_DATA_RIGHTS_OPTION,overrideDataRightsClassification);
      }
      String artIdsAsString=org.eclipse.osee.framework.jdk.core.util.Collections.toString("String_Node_Str",artIds);
      try {
        if (resultFolder.toString().isEmpty()) {
          IFolder folder=OseeData.getFolder("String_Node_Str");
          File idsFolder=new File(folder.getLocationURI());
          resultFolder.append(idsFolder.getAbsolutePath());
        }
        Lib.writeStringToFile(artIdsAsString,new File(resultFolder + prefix + "String_Node_Str"));
      }
 catch (      IOException ex) {
        OseeCoreException.wrapAndThrow(ex);
      }
    }
    monitor.worked(calculateWork(0.50));
  }
  logf("String_Node_Str");
  for (  String skipped : skippedTypes) {
    logf(skipped);
  }
}