Program: 11515
Project: 11515
Buggy source:
@Override public GlimpseAxisLayout2D getLayout(){
  final Random r=new Random();
  ColorAxisPlot2D plot=new ColorAxisPlot2D();
  plot.setPlotBackgroundColor(GlimpseColor.getBlack());
  plot.setBackgroundColor(GlimpseColor.getBlack());
  plot.setAxisColor(GlimpseColor.getWhite());
  plot.setTitleColor(GlimpseColor.getWhite());
  plot.getCrosshairPainter().setCursorColor(GlimpseColor.getGreen(0.2f));
  plot.getCrosshairPainter().setShadeColor(GlimpseColor.getGreen(0.05f));
  plot.getCrosshairPainter().setShadeSelectionBox(true);
  plot.getCrosshairPainter().setLineWidth(1);
  plot.setAxisLabelX("String_Node_Str");
  plot.setAxisLabelY("String_Node_Str");
  plot.setAxisLabelZ("String_Node_Str");
  plot.setTitle("String_Node_Str");
  plot.setMinX(-3);
  plot.setMaxX(3);
  plot.setMinY(-3);
  plot.setMaxY(3);
  plot.setMinZ(0);
  plot.setMaxZ(10);
  plot.lockAspectRatioXY(1);
  plot.addPainter(new GLSimpleListenerPainter(new GLCapabilityLogger()));
  ShadedPointPainter dp;
  try {
    dp=new ShadedPointPainter(plot.getAxisZ(),plot.getAxisZ());
  }
 catch (  IOException e) {
    e.printStackTrace();
    throw new RuntimeException(e);
  }
  plot.addPainter(dp);
  ColorTexture1D colors=new ColorTexture1D(256);
  ColorGradientBuilder builder=new ColorGradientBuilder(ColorGradients.jet){
    @Override public void getColor(    int index,    int size,    float[] rgba){
      super.getColor(index,size,rgba);
      rgba[3]=0.2f + 0.5f * ((float)index) / (size - 1);
    }
  }
;
  colors.mutate(builder);
  dp.useColorScale(colors);
  plot.setColorScale(colors);
  FloatTexture1D sizes=new FloatTexture1D(256);
  final MutatorFloat1D sizeMutator=new MutatorFloat1D(){
    @Override public void mutate(    FloatBuffer data,    int n0){
      float minSize=1f;
      float maxSize=12f;
      float dSize=maxSize - minSize;
      data.clear();
      for (int i=0; i < data.capacity(); i++) {
        if (i == data.capacity() - 1) {
          data.put(maxSize * 2);
        }
 else {
          data.put((float)(minSize + dSize * sqrt(i / (n0 - 1f))));
        }
      }
    }
  }
;
  sizes.mutate(sizeMutator);
  dp.useSizeScale(sizes);
  final GLFloatBuffer2D positions=new GLFloatBuffer2D(NPOINTS);
  positions.mutate(new Mutator(){
    @Override public void mutate(    FloatBuffer data,    int length){
      data.clear();
      for (int i=0; i < NPOINTS; i++) {
        data.put((float)r.nextGaussian());
        data.put((float)r.nextGaussian());
      }
    }
  }
);
  final Mutator positionMutator=new Mutator(){
    @Override public void mutate(    FloatBuffer data,    int length){
      data.clear();
      for (int i=0; i < NPOINTS; i++) {
        data.put((float)(data.get(2 * i) + .001 * r.nextGaussian()));
        data.put((float)(data.get(2 * i + 1) + .001 * r.nextGaussian()));
      }
    }
  }
;
  dp.useVertexPositionData(positions);
  final GLFloatBuffer colorValues=new GLFloatBuffer(NPOINTS,1);
  final Mutator colorValueMutator=new Mutator(){
    @Override public void mutate(    FloatBuffer data,    int length){
      data.clear();
      for (int i=0; i < NPOINTS; i++) {
        if (r.nextDouble() > 0.999) {
          data.put((float)(10 * r.nextFloat()));
        }
 else {
          data.put((float)0.99 * data.get(i));
        }
      }
    }
  }
;
  colorValues.mutate(colorValueMutator);
  dp.useColorAttribData(colorValues);
  final GLFloatBuffer sizeValues=new GLFloatBuffer(NPOINTS,1);
  final Mutator sizeValueMutator=new Mutator(){
    @Override public void mutate(    FloatBuffer data,    int length){
      data.clear();
      for (int i=0; i < NPOINTS; i++) {
        if (r.nextDouble() > 0.999) {
          data.put((float)10 * r.nextFloat());
        }
 else {
          data.put((float)0.99 * data.get(i));
        }
      }
    }
  }
;
  sizeValues.mutate(sizeValueMutator);
  dp.useSizeAttribData(sizeValues);
  new Thread(new Runnable(){
    @Override public void run(){
      while (true) {
        try {
          positions.mutate(positionMutator);
          colorValues.mutate(colorValueMutator);
          sizeValues.mutate(sizeValueMutator);
          Thread.sleep(10);
        }
 catch (        InterruptedException e) {
        }
      }
    }
  }
).start();
  plot.addPainter(new BorderPainter());
  plot.addPainter(new FpsPainter());
  return plot;
}

Fixed version (ground truth):
@Override public GlimpseAxisLayout2D getLayout(){
  final Random r=new Random();
  ColorAxisPlot2D plot=new ColorAxisPlot2D();
  plot.setPlotBackgroundColor(GlimpseColor.getBlack());
  plot.setBackgroundColor(GlimpseColor.getBlack());
  plot.setAxisColor(GlimpseColor.getWhite());
  plot.setTitleColor(GlimpseColor.getWhite());
  plot.getCrosshairPainter().setCursorColor(GlimpseColor.getGreen(0.2f));
  plot.getCrosshairPainter().setShadeColor(GlimpseColor.getGreen(0.05f));
  plot.getCrosshairPainter().setShadeSelectionBox(true);
  plot.getCrosshairPainter().setLineWidth(1);
  plot.setAxisLabelX("String_Node_Str");
  plot.setAxisLabelY("String_Node_Str");
  plot.setAxisLabelZ("String_Node_Str");
  plot.setTitle("String_Node_Str");
  plot.setMinX(-3);
  plot.setMaxX(3);
  plot.setMinY(-3);
  plot.setMaxY(3);
  plot.setMinZ(0);
  plot.setMaxZ(10);
  plot.lockAspectRatioXY(1);
  ShadedPointPainter dp;
  try {
    dp=new ShadedPointPainter(plot.getAxisZ(),plot.getAxisZ());
  }
 catch (  IOException e) {
    e.printStackTrace();
    throw new RuntimeException(e);
  }
  plot.addPainter(dp);
  ColorTexture1D colors=new ColorTexture1D(256);
  ColorGradientBuilder builder=new ColorGradientBuilder(ColorGradients.jet){
    @Override public void getColor(    int index,    int size,    float[] rgba){
      super.getColor(index,size,rgba);
      rgba[3]=0.2f + 0.5f * ((float)index) / (size - 1);
    }
  }
;
  colors.mutate(builder);
  dp.useColorScale(colors);
  plot.setColorScale(colors);
  FloatTexture1D sizes=new FloatTexture1D(256);
  final MutatorFloat1D sizeMutator=new MutatorFloat1D(){
    @Override public void mutate(    FloatBuffer data,    int n0){
      float minSize=1f;
      float maxSize=12f;
      float dSize=maxSize - minSize;
      data.clear();
      for (int i=0; i < data.capacity(); i++) {
        if (i == data.capacity() - 1) {
          data.put(maxSize * 2);
        }
 else {
          data.put((float)(minSize + dSize * sqrt(i / (n0 - 1f))));
        }
      }
    }
  }
;
  sizes.mutate(sizeMutator);
  dp.useSizeScale(sizes);
  final GLFloatBuffer2D positions=new GLFloatBuffer2D(NPOINTS);
  positions.mutate(new Mutator(){
    @Override public void mutate(    FloatBuffer data,    int length){
      data.clear();
      for (int i=0; i < NPOINTS; i++) {
        data.put((float)r.nextGaussian());
        data.put((float)r.nextGaussian());
      }
    }
  }
);
  final Mutator positionMutator=new Mutator(){
    @Override public void mutate(    FloatBuffer data,    int length){
      data.clear();
      for (int i=0; i < NPOINTS; i++) {
        data.put((float)(data.get(2 * i) + .001 * r.nextGaussian()));
        data.put((float)(data.get(2 * i + 1) + .001 * r.nextGaussian()));
      }
    }
  }
;
  dp.useVertexPositionData(positions);
  final GLFloatBuffer colorValues=new GLFloatBuffer(NPOINTS,1);
  final Mutator colorValueMutator=new Mutator(){
    @Override public void mutate(    FloatBuffer data,    int length){
      data.clear();
      for (int i=0; i < NPOINTS; i++) {
        if (r.nextDouble() > 0.999) {
          data.put((float)(10 * r.nextFloat()));
        }
 else {
          data.put((float)0.99 * data.get(i));
        }
      }
    }
  }
;
  colorValues.mutate(colorValueMutator);
  dp.useColorAttribData(colorValues);
  final GLFloatBuffer sizeValues=new GLFloatBuffer(NPOINTS,1);
  final Mutator sizeValueMutator=new Mutator(){
    @Override public void mutate(    FloatBuffer data,    int length){
      data.clear();
      for (int i=0; i < NPOINTS; i++) {
        if (r.nextDouble() > 0.999) {
          data.put((float)10 * r.nextFloat());
        }
 else {
          data.put((float)0.99 * data.get(i));
        }
      }
    }
  }
;
  sizeValues.mutate(sizeValueMutator);
  dp.useSizeAttribData(sizeValues);
  new Thread(new Runnable(){
    @Override public void run(){
      while (true) {
        try {
          positions.mutate(positionMutator);
          colorValues.mutate(colorValueMutator);
          sizeValues.mutate(sizeValueMutator);
          Thread.sleep(10);
        }
 catch (        InterruptedException e) {
        }
      }
    }
  }
).start();
  plot.addPainter(new BorderPainter());
  plot.addPainter(new FpsPainter());
  return plot;
}