Program: 11489
Project: 11489
Buggy source:
public MapPlot2D getLayout(GeoProjection projection){
  MapPlot2D plot=new MapPlot2D(projection){
    @Override protected Axis1D createAxisZ(){
      return new TaggedAxis1D();
    }
    @Override protected AxisMouseListener createAxisMouseListenerZ(){
      return new TaggedAxisMouseListener1D();
    }
    @Override protected NumericAxisPainter createAxisPainterZ(    AxisLabelHandler tickHandler){
      return new TaggedPartialColorYAxisPainter(tickHandler);
    }
  }
;
  TaggedAxis1D axisZ=(TaggedAxis1D)plot.getAxisZ();
  final Tag maxTag=axisZ.addTag("String_Node_Str",10000.0).setAttribute(TEX_COORD_ATTR,1.0f);
  final Tag seaLevelTag=axisZ.addTag("String_Node_Str",0.0).setAttribute(TEX_COORD_ATTR,0.5f);
  final Tag minTag=axisZ.addTag("String_Node_Str",-8000.0).setAttribute(TEX_COORD_ATTR,0.0f);
  axisZ.addConstraint(new NamedConstraint("String_Node_Str"){
    protected double buffer=200;
    @Override public void applyConstraint(    TaggedAxis1D axis){
      if (seaLevelTag.getValue() > maxTag.getValue() - buffer)       seaLevelTag.setValue(maxTag.getValue() - buffer);
      if (minTag.getValue() > seaLevelTag.getValue() - buffer)       minTag.setValue(seaLevelTag.getValue() - buffer);
    }
  }
);
  BathymetryData bathymetryData;
  try {
    bathymetryData=new BathymetryData(StreamOpener.fileThenResource.openForRead("String_Node_Str"),projection);
  }
 catch (  IOException e) {
    e.printStackTrace();
    throw new RuntimeException(e);
  }
  FloatTextureProjected2D texture=bathymetryData.getTexture();
  ColorTexture1D elevationColors=new ColorTexture1D(1024);
  elevationColors.mutate(new ColorGradientConcatenator(ColorGradients.bathymetry,ColorGradients.topography));
  bathymetryPainter=new TaggedHeatMapPainter(axisZ);
  bathymetryPainter.setData(texture);
  bathymetryPainter.setColorScale(elevationColors);
  ((ColorYAxisPainter)plot.getAxisPainterZ()).setColorScale(elevationColors);
  double[] contourLevels=new double[]{-4000,-3000,-2000,-1000,-900,-800,-700,-600,-500,-400,-300,-200,-100,-50,-10};
  ContourData contourData=new ContourData(bathymetryData,projection,contourLevels);
  contourPainter=new ContourPainter(contourData);
  contourPainter.setLineColor(1.0f,1.0f,1.0f,0.5f);
  contourPainter.setLineWidth(1.6f);
  bathymetryData.setAxisBounds(plot.getAxis());
  plot.setAxisSizeZ(60);
  plot.setMinZ(-5000);
  plot.setMaxZ(2000);
  plot.setShowMinorTicksX(true);
  plot.setShowMinorTicksY(true);
  plot.setShowMinorTicksZ(true);
  plot.addPainter(bathymetryPainter);
  plot.addPainter(contourPainter);
  CursorTextZPainter cursorPainter=new CursorTextZPainter();
  plot.addPainter(cursorPainter);
  cursorPainter.setTexture(texture);
  annotationPainter=new AnnotationPainter();
  plot.addPainter(annotationPainter);
  LatLonTrackPainter dotPainter=new LatLonTrackPainter(projection);
  plot.addPainter(dotPainter);
  dotPainter.setShowLines(1,false);
  dotPainter.setPointSize(1,5.0f);
  dotPainter.setPointColor(1,GlimpseColor.getBlack());
  Vector2d pos=projection.project(LatLonGeo.fromDeg(19.14,-80.23));
  annotationPainter.addAnnotation("String_Node_Str",(float)pos.getX(),(float)pos.getY(),5,0,false,true,AnnotationFont.Helvetical_12,GlimpseColor.getGreen());
  dotPainter.addPointGeo(1,1,19.14,-80.23,0);
  pos=projection.project(LatLonGeo.fromDeg(18.88,-80.83));
  annotationPainter.addAnnotation("String_Node_Str",(float)pos.getX(),(float)pos.getY(),5,0,false,true,AnnotationFont.Helvetical_12,GlimpseColor.getGreen());
  dotPainter.addPointGeo(1,1,18.88,-80.83,0);
  pos=projection.project(LatLonGeo.fromDeg(19.64,-79.50));
  annotationPainter.addAnnotation("String_Node_Str",(float)pos.getX(),(float)pos.getY(),5,0,false,true,AnnotationFont.Helvetical_12,GlimpseColor.getRed());
  dotPainter.addPointGeo(1,1,19.64,-79.50,0);
  pos=projection.project(LatLonGeo.fromDeg(19.80,-79.08));
  annotationPainter.addAnnotation("String_Node_Str",(float)pos.getX(),(float)pos.getY(),5,0,false,true,AnnotationFont.Helvetical_12,GlimpseColor.getGreen());
  dotPainter.addPointGeo(1,1,19.80,-79.08,0);
  ScalePainter scale=new ScalePainter();
  scale.setPixelBufferX(8);
  scale.setPixelBufferY(8);
  plot.addPainter(scale);
  return plot;
}

Fixed version (ground truth):
public MapPlot2D getLayout(GeoProjection projection){
  MapPlot2D plot=new MapPlot2D(projection){
    @Override protected Axis1D createAxisZ(){
      return new TaggedAxis1D();
    }
    @Override protected AxisMouseListener createAxisMouseListenerZ(){
      return new TaggedAxisMouseListener1D();
    }
    @Override protected NumericAxisPainter createAxisPainterZ(    AxisLabelHandler tickHandler){
      return new TaggedPartialColorYAxisPainter(tickHandler);
    }
  }
;
  TaggedAxis1D axisZ=(TaggedAxis1D)plot.getAxisZ();
  axisZ.addTag("String_Node_Str",10000.0).setAttribute(TEX_COORD_ATTR,1.0f);
  axisZ.addTag("String_Node_Str",0.0).setAttribute(TEX_COORD_ATTR,0.5f);
  axisZ.addTag("String_Node_Str",-8000.0).setAttribute(TEX_COORD_ATTR,0.0f);
  List<String> constraints=new ArrayList<String>();
  for (  Tag tag : axisZ.getSortedTags())   constraints.add(tag.getName());
  axisZ.addConstraint(new OrderedConstraint("String_Node_Str",200,constraints));
  BathymetryData bathymetryData;
  try {
    bathymetryData=new BathymetryData(StreamOpener.fileThenResource.openForRead("String_Node_Str"),projection);
  }
 catch (  IOException e) {
    e.printStackTrace();
    throw new RuntimeException(e);
  }
  FloatTextureProjected2D texture=bathymetryData.getTexture();
  ColorTexture1D elevationColors=new ColorTexture1D(1024);
  elevationColors.mutate(new ColorGradientConcatenator(ColorGradients.bathymetry,ColorGradients.topography));
  bathymetryPainter=new TaggedHeatMapPainter(axisZ);
  bathymetryPainter.setData(texture);
  bathymetryPainter.setColorScale(elevationColors);
  ((ColorYAxisPainter)plot.getAxisPainterZ()).setColorScale(elevationColors);
  double[] contourLevels=new double[]{-4000,-3000,-2000,-1000,-900,-800,-700,-600,-500,-400,-300,-200,-100,-50,-10};
  ContourData contourData=new ContourData(bathymetryData,projection,contourLevels);
  contourPainter=new ContourPainter(contourData);
  contourPainter.setLineColor(1.0f,1.0f,1.0f,0.5f);
  contourPainter.setLineWidth(1.6f);
  bathymetryData.setAxisBounds(plot.getAxis());
  plot.setAxisSizeZ(60);
  plot.setMinZ(-5000);
  plot.setMaxZ(2000);
  plot.setShowMinorTicksX(true);
  plot.setShowMinorTicksY(true);
  plot.setShowMinorTicksZ(true);
  plot.addPainter(bathymetryPainter);
  plot.addPainter(contourPainter);
  CursorTextZPainter cursorPainter=new CursorTextZPainter();
  plot.addPainter(cursorPainter);
  cursorPainter.setTexture(texture);
  annotationPainter=new AnnotationPainter();
  plot.addPainter(annotationPainter);
  LatLonTrackPainter dotPainter=new LatLonTrackPainter(projection);
  plot.addPainter(dotPainter);
  dotPainter.setShowLines(1,false);
  dotPainter.setPointSize(1,5.0f);
  dotPainter.setPointColor(1,GlimpseColor.getBlack());
  Vector2d pos=projection.project(LatLonGeo.fromDeg(19.14,-80.23));
  annotationPainter.addAnnotation("String_Node_Str",(float)pos.getX(),(float)pos.getY(),5,0,false,true,AnnotationFont.Helvetical_12,GlimpseColor.getGreen());
  dotPainter.addPointGeo(1,1,19.14,-80.23,0);
  pos=projection.project(LatLonGeo.fromDeg(18.88,-80.83));
  annotationPainter.addAnnotation("String_Node_Str",(float)pos.getX(),(float)pos.getY(),5,0,false,true,AnnotationFont.Helvetical_12,GlimpseColor.getGreen());
  dotPainter.addPointGeo(1,1,18.88,-80.83,0);
  pos=projection.project(LatLonGeo.fromDeg(19.64,-79.50));
  annotationPainter.addAnnotation("String_Node_Str",(float)pos.getX(),(float)pos.getY(),5,0,false,true,AnnotationFont.Helvetical_12,GlimpseColor.getRed());
  dotPainter.addPointGeo(1,1,19.64,-79.50,0);
  pos=projection.project(LatLonGeo.fromDeg(19.80,-79.08));
  annotationPainter.addAnnotation("String_Node_Str",(float)pos.getX(),(float)pos.getY(),5,0,false,true,AnnotationFont.Helvetical_12,GlimpseColor.getGreen());
  dotPainter.addPointGeo(1,1,19.80,-79.08,0);
  ScalePainter scale=new ScalePainter();
  scale.setPixelBufferX(8);
  scale.setPixelBufferY(8);
  plot.addPainter(scale);
  return plot;
}