Program: 59172
Project: 59172
Buggy source:
private void drawPickedObjectInfoSingle(final GL gl,final PathwayVertex pickedVertex,final boolean bDrawDisplaced){
  if (fArWorldCoordinatePosition == null)   return;
  gl.glPushMatrix();
  float fHalfWidth=0.5f;
  float fHalfHeight=0.2f;
  float fOffsetX=1.0f;
  float fOffsetY=-0.5f;
  gl.glTranslatef(fArWorldCoordinatePosition[0],fArWorldCoordinatePosition[1],fZValue);
  if (bDrawDisplaced) {
    gl.glScalef(fScaleFactor,fScaleFactor,fScaleFactor);
    gl.glLineWidth(2);
    gl.glColor4f(0.5f,0.5f,0.5f,0.8f);
    gl.glBegin(GL.GL_TRIANGLES);
    gl.glVertex3f(0,0,-fZValue);
    gl.glVertex3f(fOffsetX - fHalfWidth,fOffsetY + fHalfHeight,0);
    gl.glVertex3f(fOffsetX - fHalfWidth,fOffsetY - fHalfHeight,0);
    gl.glEnd();
    gl.glColor3f(0.2f,0.2f,0.2f);
    gl.glBegin(GL.GL_LINE_LOOP);
    gl.glVertex3f(0,0,-fZValue);
    gl.glVertex3f(fOffsetX - fHalfWidth,fOffsetY + fHalfHeight,0);
    gl.glVertex3f(fOffsetX - fHalfWidth,fOffsetY - fHalfHeight,0);
    gl.glEnd();
    gl.glTranslatef(fOffsetX,fOffsetY,0.0f);
  }
  gl.glColor4f(0.5f,0.5f,0.5f,0.8f);
  gl.glBegin(GL.GL_POLYGON);
  gl.glVertex3f(-fHalfWidth,-fHalfHeight,0);
  gl.glVertex3f(fHalfWidth,-fHalfHeight,0);
  gl.glVertex3f(fHalfWidth,fHalfHeight,0);
  gl.glVertex3f(-fHalfWidth,fHalfHeight,0);
  gl.glEnd();
  gl.glColor3f(0.2f,0.2f,0.2f);
  gl.glBegin(GL.GL_LINE_LOOP);
  gl.glVertex3f(-fHalfWidth,-fHalfHeight,0);
  gl.glVertex3f(fHalfWidth,-fHalfHeight,0);
  gl.glVertex3f(fHalfWidth,fHalfHeight,0);
  gl.glVertex3f(-fHalfWidth,fHalfHeight,0);
  gl.glEnd();
  if (fScaleFactor < 0.8f) {
    gl.glPopMatrix();
    return;
  }
  gl.glColor3f(1,1,1);
  GLTextUtils.renderText(gl,"String_Node_Str" + pickedVertex.getElementTitle(),12,-fHalfWidth + 0.05f,-fHalfHeight + 0.09f,-0.01f);
  float fLineHeight=0.1f;
  gl.glTranslatef(0.0f,fLineHeight,0.0f);
  GLTextUtils.renderText(gl,"String_Node_Str" + pickedVertex.getVertexRepByIndex(0).getName(),12,-fHalfWidth + 0.05f,-fHalfHeight + 0.09f,-0.01f);
  gl.glScalef(3.0f,3.0f,3.0f);
  float fNodeWidth=pickedVertex.getVertexRepByIndex(0).getWidth() / 2.0f * GLPathwayManager.SCALING_FACTOR_X;
  if (pickedVertex.getVertexType().equals(PathwayVertexType.gene)) {
    refGLPathwayManager.mapExpressionByGeneId(gl,sLLMultipleGeneMappingID.removeFirst(),fNodeWidth);
  }
 else {
    refGLPathwayManager.mapExpression(gl,pickedVertex,fNodeWidth);
  }
  gl.glPopMatrix();
}

Fixed version (ground truth):
private void drawPickedObjectInfoSingle(final GL gl,final PathwayVertex pickedVertex,final boolean bDrawDisplaced){
  if (fArWorldCoordinatePosition == null)   return;
  gl.glPushMatrix();
  float fHalfWidth=0.5f;
  float fHalfHeight=0.2f;
  float fOffsetX=1.0f;
  float fOffsetY=-0.5f;
  gl.glTranslatef(fArWorldCoordinatePosition[0],fArWorldCoordinatePosition[1],fZValue);
  if (bDrawDisplaced) {
    gl.glScalef(fScaleFactor,fScaleFactor,fScaleFactor);
    gl.glLineWidth(2);
    gl.glColor4f(0.5f,0.5f,0.5f,0.8f);
    gl.glBegin(GL.GL_TRIANGLES);
    gl.glVertex3f(0,0,-fZValue);
    gl.glVertex3f(fOffsetX - fHalfWidth,fOffsetY + fHalfHeight,0);
    gl.glVertex3f(fOffsetX - fHalfWidth,fOffsetY - fHalfHeight,0);
    gl.glEnd();
    gl.glColor3f(0.2f,0.2f,0.2f);
    gl.glBegin(GL.GL_LINE_LOOP);
    gl.glVertex3f(0,0,-fZValue);
    gl.glVertex3f(fOffsetX - fHalfWidth,fOffsetY + fHalfHeight,0);
    gl.glVertex3f(fOffsetX - fHalfWidth,fOffsetY - fHalfHeight,0);
    gl.glEnd();
    gl.glTranslatef(fOffsetX,fOffsetY,0.0f);
  }
  gl.glColor4f(0.5f,0.5f,0.5f,0.8f);
  gl.glBegin(GL.GL_POLYGON);
  gl.glVertex3f(-fHalfWidth,-fHalfHeight,0);
  gl.glVertex3f(fHalfWidth,-fHalfHeight,0);
  gl.glVertex3f(fHalfWidth,fHalfHeight,0);
  gl.glVertex3f(-fHalfWidth,fHalfHeight,0);
  gl.glEnd();
  gl.glColor3f(0.2f,0.2f,0.2f);
  gl.glBegin(GL.GL_LINE_LOOP);
  gl.glVertex3f(-fHalfWidth,-fHalfHeight,0);
  gl.glVertex3f(fHalfWidth,-fHalfHeight,0);
  gl.glVertex3f(fHalfWidth,fHalfHeight,0);
  gl.glVertex3f(-fHalfWidth,fHalfHeight,0);
  gl.glEnd();
  if (fScaleFactor < 0.8f) {
    gl.glPopMatrix();
    return;
  }
  float fNodeWidth=pickedVertex.getVertexRepByIndex(0).getWidth() / 2.0f * GLPathwayManager.SCALING_FACTOR_X;
  String sElementId;
  gl.glScalef(3.0f,3.0f,3.0f);
  if (pickedVertex.getVertexType().equals(PathwayVertexType.gene)) {
    sElementId=sLLMultipleGeneMappingID.getFirst();
    refGLPathwayManager.mapExpressionByGeneId(gl,sLLMultipleGeneMappingID.removeFirst(),fNodeWidth);
  }
 else {
    sElementId=pickedVertex.getElementTitle();
    refGLPathwayManager.mapExpression(gl,pickedVertex,fNodeWidth);
  }
  gl.glScalef(1 / 3.0f,1 / 3.0f,1 / 3.0f);
  gl.glColor3f(1,1,1);
  GLTextUtils.renderText(gl,"String_Node_Str" + sElementId,12,-fHalfWidth + 0.05f,-fHalfHeight + 0.09f,-0.01f);
  gl.glPopMatrix();
}