Program: 22787
Project: 22787
Buggy source:
/** 
 * Update features with current list
 */
public void updateFeatures(){
  wholeStack=new ImageStack(width,height);
  wholeStack.addSlice("String_Node_Str",originalImage.getProcessor().duplicate());
  int counter=1;
  for (float i=1.0f; i <= FeatureStack.MAX_SIGMA; i*=2) {
    if (enableFeatures[GAUSSIAN]) {
      IJ.showStatus("String_Node_Str" + counter);
      this.addGaussianBlur(i);
      counter++;
    }
    if (enableFeatures[SOBEL]) {
      IJ.showStatus("String_Node_Str" + counter);
      this.addGradient(i);
      counter++;
    }
    if (enableFeatures[HESSIAN]) {
      IJ.showStatus("String_Node_Str" + counter);
      this.addHessian(i);
      counter++;
    }
    if (enableFeatures[DOG]) {
      for (float j=1.0f; j < i; j*=2) {
        IJ.showStatus("String_Node_Str" + counter);
        this.addDoG(i,j);
        counter++;
      }
    }
    if (enableFeatures[VARIANCE]) {
      IJ.showStatus("String_Node_Str" + counter);
      this.addVariance(i);
      counter++;
    }
    if (enableFeatures[MEAN]) {
      IJ.showStatus("String_Node_Str" + counter);
      this.addMean(i);
      counter++;
    }
    if (enableFeatures[MINIMUM]) {
      IJ.showStatus("String_Node_Str" + counter);
      this.addMin(i);
      counter++;
    }
    if (enableFeatures[MAXIMUM]) {
      IJ.showStatus("String_Node_Str" + counter);
      this.addMax(i);
      counter++;
    }
    if (enableFeatures[MEDIAN]) {
      IJ.showStatus("String_Node_Str" + counter);
      this.addMedian(i);
      counter++;
    }
  }
  if (enableFeatures[MEMBRANE])   this.addMembraneFeatures(19,1);
  if (normalize) {
    IJ.showStatus("String_Node_Str");
    final ImagePlus imp=new ImagePlus("String_Node_Str",this.wholeStack);
    IJ.run(imp,"String_Node_Str","String_Node_Str");
  }
  IJ.showProgress(1.0);
  IJ.showStatus("String_Node_Str");
}

Fixed version (ground truth):
/** 
 * Update features with current list
 */
public void updateFeatures(){
  wholeStack=new ImageStack(width,height);
  wholeStack.addSlice("String_Node_Str",originalImage.getProcessor().duplicate());
  int counter=1;
  for (float i=1.0f; i < FeatureStack.MAX_SIGMA; i*=2) {
    if (enableFeatures[GAUSSIAN]) {
      IJ.showStatus("String_Node_Str" + counter);
      this.addGaussianBlur(i);
      counter++;
    }
    if (enableFeatures[SOBEL]) {
      IJ.showStatus("String_Node_Str" + counter);
      this.addGradient(i);
      counter++;
    }
    if (enableFeatures[HESSIAN]) {
      IJ.showStatus("String_Node_Str" + counter);
      this.addHessian(i);
      counter++;
    }
    if (enableFeatures[DOG]) {
      for (float j=1.0f; j < i; j*=2) {
        IJ.showStatus("String_Node_Str" + counter);
        this.addDoG(i,j);
        counter++;
      }
    }
    if (enableFeatures[VARIANCE]) {
      IJ.showStatus("String_Node_Str" + counter);
      this.addVariance(i);
      counter++;
    }
    if (enableFeatures[MEAN]) {
      IJ.showStatus("String_Node_Str" + counter);
      this.addMean(i);
      counter++;
    }
    if (enableFeatures[MINIMUM]) {
      IJ.showStatus("String_Node_Str" + counter);
      this.addMin(i);
      counter++;
    }
    if (enableFeatures[MAXIMUM]) {
      IJ.showStatus("String_Node_Str" + counter);
      this.addMax(i);
      counter++;
    }
    if (enableFeatures[MEDIAN]) {
      IJ.showStatus("String_Node_Str" + counter);
      this.addMedian(i);
      counter++;
    }
  }
  if (enableFeatures[MEMBRANE])   this.addMembraneFeatures(19,1);
  if (normalize) {
    IJ.showStatus("String_Node_Str");
    final ImagePlus imp=new ImagePlus("String_Node_Str",this.wholeStack);
    IJ.run(imp,"String_Node_Str","String_Node_Str");
  }
  IJ.showProgress(1.0);
  IJ.showStatus("String_Node_Str");
}