Program: 57995
Project: 57995
Buggy source:
/** 
 * Render the data previously set
 * @param gl
 * @param bFirstTime this has to be true only the first time you render it and can never be true after that
 */
public void renderInfoArea(GL2 gl,Vec3f vecLowerLeft,boolean bFirstTime,float fZValue){
  String sCurrent;
  float fXLowerLeft=vecLowerLeft.x();
  float fYLowerLeft=vecLowerLeft.y();
  int iCount=0;
  while (iCount < 2) {
    if (iCount == 0) {
      gl.glColor4fv(InfoAreaRenderStyle.INFO_AREA_COLOR,0);
      gl.glBegin(GL2.GL_POLYGON);
    }
 else {
      gl.glColor4fv(InfoAreaRenderStyle.INFO_AREA_BORDER_COLOR,0);
      gl.glLineWidth(InfoAreaRenderStyle.INFO_AREA_BORDER_WIDTH);
      gl.glBegin(GL2.GL_LINE_STRIP);
    }
    gl.glVertex3f(fXLowerLeft,fYLowerLeft,fZValue);
    gl.glVertex3f(fXLowerLeft + fWidth,fYLowerLeft,fZValue);
    gl.glVertex3f(fXLowerLeft + fWidth,fYLowerLeft + fHeight,fZValue);
    gl.glVertex3f(fXLowerLeft,fYLowerLeft + fHeight,fZValue);
    if (iCount == 1) {
      gl.glVertex3f(fXLowerLeft,fYLowerLeft,fZValue);
    }
    gl.glEnd();
    iCount++;
  }
  textRenderer.setColor(1f,1f,1f,1);
  float fYUpperLeft=fYLowerLeft + fHeight;
  float fNextLineHeight=fYUpperLeft;
  textRenderer.begin3DRendering();
  Iterator<String> contentIterator=sContent.iterator();
  iCount=0;
  float fFontScaling=renderStyle.getHeadingFontScalingFactor();
  while (contentIterator.hasNext()) {
    if (iCount == 1) {
      fFontScaling=renderStyle.getSmallFontScalingFactor();
    }
    sCurrent=contentIterator.next();
    fNextLineHeight-=(float)textRenderer.getBounds(sCurrent).getHeight() * fFontScaling + fSpacing;
    textRenderer.draw3D(sCurrent,fXLowerLeft + fSpacing,fNextLineHeight,fZValue + 0.001f,fFontScaling);
    iCount++;
  }
  textRenderer.end3DRendering();
  if (miniView != null) {
    miniView.render(gl,fXLowerLeft + fTextWidth + fSpacing,fYLowerLeft + fSpacing,0);
  }
}

Fixed version (ground truth):
/** 
 * Render the data previously set
 * @param gl
 * @param bFirstTime this has to be true only the first time you render it and can never be true after that
 */
public void renderInfoArea(GL2 gl,Vec3f vecLowerLeft,boolean bFirstTime,float fZValue){
  String sCurrent;
  float fXLowerLeft=vecLowerLeft.x();
  float fYLowerLeft=vecLowerLeft.y();
  int iCount=0;
  while (iCount < 2) {
    if (iCount == 0) {
      gl.glColor4fv(InfoAreaRenderStyle.INFO_AREA_COLOR,0);
      gl.glBegin(GL2.GL_POLYGON);
    }
 else {
      gl.glColor4fv(InfoAreaRenderStyle.INFO_AREA_BORDER_COLOR,0);
      gl.glLineWidth(InfoAreaRenderStyle.INFO_AREA_BORDER_WIDTH);
      gl.glBegin(GL2.GL_LINE_STRIP);
    }
    gl.glVertex3f(fXLowerLeft,fYLowerLeft,fZValue);
    gl.glVertex3f(fXLowerLeft + fWidth,fYLowerLeft,fZValue);
    gl.glVertex3f(fXLowerLeft + fWidth,fYLowerLeft + fHeight,fZValue);
    gl.glVertex3f(fXLowerLeft,fYLowerLeft + fHeight,fZValue);
    if (iCount == 1) {
      gl.glVertex3f(fXLowerLeft,fYLowerLeft,fZValue);
    }
    gl.glEnd();
    iCount++;
  }
  textRenderer.setColor(1f,1f,1f,1);
  float fYUpperLeft=fYLowerLeft + fHeight;
  float fNextLineHeight=fYUpperLeft;
  textRenderer.begin3DRendering();
  Iterator<String> contentIterator=sContent.iterator();
  iCount=0;
  float fFontScaling=0.01f;
  while (contentIterator.hasNext()) {
    if (iCount == 1) {
      fFontScaling=0.005f;
    }
    sCurrent=contentIterator.next();
    fNextLineHeight-=(float)textRenderer.getBounds(sCurrent).getHeight() * fFontScaling + fSpacing;
    textRenderer.draw3D(sCurrent,fXLowerLeft + fSpacing,fNextLineHeight,fZValue + 0.001f,fFontScaling);
    iCount++;
  }
  textRenderer.end3DRendering();
  if (miniView != null) {
    miniView.render(gl,fXLowerLeft + fTextWidth + fSpacing,fYLowerLeft + fSpacing,0);
  }
}