Program: 58299
Project: 58299
Buggy source:
private void buildDisplayList(final GL gl,int iGLDisplayListIndex){
  gl.glNewList(iGLDisplayListIndex,GL.GL_COMPILE);
  gl.glPushMatrix();
  if (isMirrored) {
    gl.glTranslatef(viewFrustum.getWidth(),0,0);
    gl.glScalef(-1.0f,1.0f,1.0f);
  }
  if (tree == null) {
    iAlClusterNodes.clear();
    if (bRenderContentTree == true) {
      if (set.getContentTree() != null) {
        tree=set.getContentTree();
        groupList=(GroupType)new ContentGroupList();
        rootNode=tree.getRoot();
      }
 else       renderSymbol(gl);
    }
 else {
      if (set.getStorageTree() != null) {
        tree=set.getStorageTree();
        groupList=(GroupType)new StorageGroupList();
        rootNode=set.getStorageTreeRoot();
      }
 else       renderSymbol(gl);
    }
  }
  if (tree != null) {
    if (bHasFrustumChanged || bRedrawDendrogram) {
      if (bRenderContentTree) {
        xGlobalMax=viewFrustum.getWidth();
        fSampleHeight=viewFrustum.getHeight() / rootNode.getNrLeaves();
        fLevelWidth=(viewFrustum.getWidth() - 0.1f) / rootNode.getDepth();
        yPosInit=viewFrustum.getHeight();
      }
 else {
        yGlobalMin=0.0f;
        fSampleWidth=viewFrustum.getWidth() / rootNode.getNrLeaves();
        fLevelHeight=(viewFrustum.getHeight() - 0.1f) / rootNode.getDepth();
        xPosInit=0.0f;
      }
      determinePositions();
      bRedrawDendrogram=false;
      bHasFrustumChanged=false;
    }
    gl.glLineWidth(renderStyle.getDendrogramLineWidth());
    if (bRenderContentTree) {
      gl.glTranslatef(0,-fSampleHeight / 2,0);
      renderDendrogramGenes(gl,rootNode,1);
    }
 else {
      gl.glTranslatef(fSampleWidth / 2,0,0);
      renderDendrogramExperiments(gl,rootNode,1);
    }
    if (bRenderUntilCut == false)     renderSelections(gl,rootNode);
    if (bRenderContentTree)     gl.glTranslatef(0,+fSampleHeight / 2,0);
 else     gl.glTranslatef(-fSampleWidth / 2,0,0);
  }
  gl.glEndList();
  gl.glNewList(iGLDisplayListCutOffValue,GL.GL_COMPILE);
  if (tree != null && bRenderUntilCut == false)   renderCut(gl);
  gl.glPopMatrix();
  gl.glEndList();
}

Fixed version (ground truth):
private void buildDisplayList(final GL gl,int iGLDisplayListIndex){
  gl.glNewList(iGLDisplayListIndex,GL.GL_COMPILE);
  gl.glPushMatrix();
  if (isMirrored) {
    gl.glTranslatef(viewFrustum.getWidth(),0,0);
    gl.glScalef(-1.0f,1.0f,1.0f);
  }
  if (tree == null) {
    iAlClusterNodes.clear();
    if (bRenderContentTree == true) {
      if (set.getContentTree() != null) {
        tree=set.getContentTree();
        groupList=(GroupType)new ContentGroupList();
        rootNode=tree.getRoot();
      }
 else       renderSymbol(gl);
    }
 else {
      if (!set.getStorageData(StorageVAType.STORAGE).isDefaultTree() && set.getStorageData(StorageVAType.STORAGE).getStorageTree() != null) {
        tree=set.getStorageTree();
        groupList=(GroupType)new StorageGroupList();
        rootNode=set.getStorageTreeRoot();
      }
 else       renderSymbol(gl);
    }
  }
  if (tree != null) {
    if (bHasFrustumChanged || bRedrawDendrogram) {
      if (bRenderContentTree) {
        xGlobalMax=viewFrustum.getWidth();
        fSampleHeight=viewFrustum.getHeight() / rootNode.getNrLeaves();
        fLevelWidth=(viewFrustum.getWidth() - 0.1f) / rootNode.getDepth();
        yPosInit=viewFrustum.getHeight();
      }
 else {
        yGlobalMin=0.0f;
        fSampleWidth=viewFrustum.getWidth() / rootNode.getNrLeaves();
        fLevelHeight=(viewFrustum.getHeight() - 0.1f) / rootNode.getDepth();
        xPosInit=0.0f;
      }
      determinePositions();
      bRedrawDendrogram=false;
      bHasFrustumChanged=false;
    }
    gl.glLineWidth(renderStyle.getDendrogramLineWidth());
    if (bRenderContentTree) {
      gl.glTranslatef(0,-fSampleHeight / 2,0);
      renderDendrogramGenes(gl,rootNode,1);
    }
 else {
      gl.glTranslatef(fSampleWidth / 2,0,0);
      renderDendrogramExperiments(gl,rootNode,1);
    }
    if (bRenderUntilCut == false)     renderSelections(gl,rootNode);
    if (bRenderContentTree)     gl.glTranslatef(0,+fSampleHeight / 2,0);
 else     gl.glTranslatef(-fSampleWidth / 2,0,0);
  }
  gl.glEndList();
  gl.glNewList(iGLDisplayListCutOffValue,GL.GL_COMPILE);
  if (tree != null && bRenderUntilCut == false)   renderCut(gl);
  gl.glPopMatrix();
  gl.glEndList();
}