Program: 149586
Project: 149586
Buggy source:
public void run(String arg){
  if (MemoryPeakResults.countMemorySize() == 0) {
    IJ.error(TITLE,"String_Node_Str");
    return;
  }
  altKeyDown=Utils.isExtraOptions();
  Trace[] traces=null;
  int totalFiltered=0;
  if ("String_Node_Str".equals(arg)) {
    outputName="String_Node_Str";
    if (!showClusterDialog())     return;
    if (settings.splitPulses) {
      if (timeInFrames(settings.timeThreshold) > settings.pulseInterval) {
        settings.timeThreshold=settings.pulseInterval * exposureTime;
      }
    }
    ClusteringEngine engine=new ClusteringEngine(Prefs.getThreads(),settings.getClusteringAlgorithm(),new IJTrackProgress());
    ArrayList<Cluster> clusters=engine.findClusters(convertToClusterPoints(),settings.distanceThreshold / results.getCalibration().nmPerPixel,timeInFrames(settings.timeThreshold));
    if (clusters == null) {
      Utils.log("String_Node_Str");
      return;
    }
    traces=convertToTraces(clusters);
  }
 else {
    outputName="String_Node_Str";
    if (!showDialog())     return;
    TraceManager manager=new TraceManager(results);
    manager.setTraceMode(settings.getTraceMode());
    manager.setActivationFrameInterval(settings.pulseInterval);
    manager.setActivationFrameWindow(settings.pulseWindow);
    manager.setDistanceExclusion(settings.distanceExclusion / results.getCalibration().nmPerPixel);
    if (settings.optimise) {
      runOptimiser(manager);
    }
    if (settings.splitPulses) {
      manager.setPulseInterval(settings.pulseInterval);
      if (timeInFrames(settings.timeThreshold) > settings.pulseInterval) {
        settings.timeThreshold=settings.pulseInterval * exposureTime;
      }
    }
    manager.setTracker(new IJTrackProgress());
    manager.traceMolecules(settings.distanceThreshold / results.getCalibration().nmPerPixel,timeInFrames(settings.timeThreshold));
    traces=manager.getTraces();
    totalFiltered=manager.getTotalFiltered();
  }
  MemoryPeakResults tracedResults=saveResults(results,traces,outputName + (outputName.endsWith("String_Node_Str") ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str");
  saveResults(results,getSingles(traces),outputName + "String_Node_Str");
  saveResults(results,getTraces(traces),outputName + "String_Node_Str");
  sortByTime(traces);
  if (settings.saveTraces)   saveTraces(traces);
  summarise(traces,totalFiltered,settings.distanceThreshold,settings.timeThreshold);
  IJ.showStatus(String.format("String_Node_Str",results.size(),tracedResults.size(),totalFiltered));
  if (settings.refitOption)   fitTraces(results,traces);
}

Fixed version (ground truth):
public void run(String arg){
  if (MemoryPeakResults.countMemorySize() == 0) {
    IJ.error(TITLE,"String_Node_Str");
    return;
  }
  altKeyDown=Utils.isExtraOptions();
  Trace[] traces=null;
  int totalFiltered=0;
  if ("String_Node_Str".equals(arg)) {
    outputName="String_Node_Str";
    if (!showClusterDialog())     return;
    ClusteringEngine engine=new ClusteringEngine(Prefs.getThreads(),settings.getClusteringAlgorithm(),new IJTrackProgress());
    if (settings.splitPulses) {
      engine.setPulseInterval(settings.pulseInterval);
      if (timeInFrames(settings.timeThreshold) > settings.pulseInterval) {
        settings.timeThreshold=settings.pulseInterval * exposureTime;
      }
    }
    ArrayList<Cluster> clusters=engine.findClusters(convertToClusterPoints(),settings.distanceThreshold / results.getCalibration().nmPerPixel,timeInFrames(settings.timeThreshold));
    if (clusters == null) {
      Utils.log("String_Node_Str");
      return;
    }
    traces=convertToTraces(clusters);
  }
 else {
    outputName="String_Node_Str";
    if (!showDialog())     return;
    TraceManager manager=new TraceManager(results);
    manager.setTraceMode(settings.getTraceMode());
    manager.setActivationFrameInterval(settings.pulseInterval);
    manager.setActivationFrameWindow(settings.pulseWindow);
    manager.setDistanceExclusion(settings.distanceExclusion / results.getCalibration().nmPerPixel);
    if (settings.optimise) {
      runOptimiser(manager);
    }
    if (settings.splitPulses) {
      manager.setPulseInterval(settings.pulseInterval);
      if (timeInFrames(settings.timeThreshold) > settings.pulseInterval) {
        settings.timeThreshold=settings.pulseInterval * exposureTime;
      }
    }
    manager.setTracker(new IJTrackProgress());
    manager.traceMolecules(settings.distanceThreshold / results.getCalibration().nmPerPixel,timeInFrames(settings.timeThreshold));
    traces=manager.getTraces();
    totalFiltered=manager.getTotalFiltered();
  }
  MemoryPeakResults tracedResults=saveResults(results,traces,outputName + (outputName.endsWith("String_Node_Str") ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str");
  saveResults(results,getSingles(traces),outputName + "String_Node_Str");
  saveResults(results,getTraces(traces),outputName + "String_Node_Str");
  sortByTime(traces);
  if (settings.saveTraces)   saveTraces(traces);
  summarise(traces,totalFiltered,settings.distanceThreshold,settings.timeThreshold);
  IJ.showStatus(String.format("String_Node_Str",results.size(),tracedResults.size(),totalFiltered));
  if (settings.refitOption)   fitTraces(results,traces);
}