Program: 57403
Project: 57403
Buggy source:
protected void renderPathwayBorders(GL2 gl){
  float topPathwayTitleLimit=y - pixelGLConverter.getGLHeightForPixelHeight(TOP_SPACING_PIXELS);
  int segmentIndex=0;
  for (int i=0; i < pathNodes.size(); i++) {
    ALinearizableNode node=pathNodes.get(i);
    if (node.getVertexReps().size() > 1) {
      float nodePositionY=node.getPosition().y();
      gl.glColor3f(0.95f,0.95f,0.95f);
      gl.glBegin(GL2.GL_QUADS);
      gl.glVertex3f(0,nodePositionY - pixelGLConverter.getGLHeightForPixelHeight(5),0);
      gl.glVertex3f(x,nodePositionY - pixelGLConverter.getGLHeightForPixelHeight(5),0);
      gl.glVertex3f(x,nodePositionY + pixelGLConverter.getGLHeightForPixelHeight(5),0);
      gl.glVertex3f(0,nodePositionY + pixelGLConverter.getGLHeightForPixelHeight(5),0);
      gl.glEnd();
      gl.glColor3f(0.5f,0.5f,0.5f);
      gl.glBegin(GL.GL_LINES);
      gl.glVertex3f(x,nodePositionY + pixelGLConverter.getGLHeightForPixelHeight(5),0);
      gl.glVertex3f(0,nodePositionY + pixelGLConverter.getGLHeightForPixelHeight(5),0);
      gl.glVertex3f(x,nodePositionY - pixelGLConverter.getGLHeightForPixelHeight(5),0);
      gl.glVertex3f(0,nodePositionY - pixelGLConverter.getGLHeightForPixelHeight(5),0);
      gl.glEnd();
      renderPathwayTitle(gl,segmentIndex,topPathwayTitleLimit,nodePositionY);
      gl.glPopMatrix();
      topPathwayTitleLimit=nodePositionY;
      segmentIndex++;
    }
    if (segmentIndex == pathSegments.size() - 1) {
      renderPathwayTitle(gl,segmentIndex,topPathwayTitleLimit,y - pixelGLConverter.getGLHeightForPixelHeight(minHeightPixels));
      segmentIndex++;
    }
  }
}

Fixed version (ground truth):
protected void renderPathwayBorders(GL2 gl){
  float topPathwayTitleLimit=y - pixelGLConverter.getGLHeightForPixelHeight(TOP_SPACING_PIXELS);
  int segmentIndex=0;
  for (int i=0; i < pathNodes.size(); i++) {
    ALinearizableNode node=pathNodes.get(i);
    if (node.getVertexReps().size() > 1) {
      float nodePositionY=node.getPosition().y();
      gl.glColor3f(0.95f,0.95f,0.95f);
      gl.glBegin(GL2.GL_QUADS);
      gl.glVertex3f(0,nodePositionY - pixelGLConverter.getGLHeightForPixelHeight(5),0);
      gl.glVertex3f(x,nodePositionY - pixelGLConverter.getGLHeightForPixelHeight(5),0);
      gl.glVertex3f(x,nodePositionY + pixelGLConverter.getGLHeightForPixelHeight(5),0);
      gl.glVertex3f(0,nodePositionY + pixelGLConverter.getGLHeightForPixelHeight(5),0);
      gl.glEnd();
      gl.glColor3f(0.5f,0.5f,0.5f);
      gl.glBegin(GL.GL_LINES);
      gl.glVertex3f(x,nodePositionY + pixelGLConverter.getGLHeightForPixelHeight(5),0);
      gl.glVertex3f(0,nodePositionY + pixelGLConverter.getGLHeightForPixelHeight(5),0);
      gl.glVertex3f(x,nodePositionY - pixelGLConverter.getGLHeightForPixelHeight(5),0);
      gl.glVertex3f(0,nodePositionY - pixelGLConverter.getGLHeightForPixelHeight(5),0);
      gl.glEnd();
      renderPathwayTitle(gl,segmentIndex,topPathwayTitleLimit,nodePositionY);
      topPathwayTitleLimit=nodePositionY;
      segmentIndex++;
    }
    if (segmentIndex == pathSegments.size() - 1) {
      renderPathwayTitle(gl,segmentIndex,topPathwayTitleLimit,y - pixelGLConverter.getGLHeightForPixelHeight(minHeightPixels));
      segmentIndex++;
    }
  }
}