Program: 57164
Project: 57164
Buggy source:
@Override protected void renderContent(GL2 gl){
  if (layoutDisplayListIndex == -1)   layoutDisplayListIndex=gl.glGenLists(1);
  gl.glEnable(GL.GL_BLEND);
  gl.glBlendFunc(GL.GL_ONE,GL.GL_ONE_MINUS_SRC_ALPHA);
  gl.glEnable(GL.GL_LINE_SMOOTH);
  GLU glu=null;
  gl.glNewList(layoutDisplayListIndex,GL2.GL_COMPILE);
  glu=new GLU();
  renderPathwayBorders(gl);
  for (  ALinearizableNode node : pathNodes) {
    node.render(gl,glu);
    renderBranchNodes(gl,glu,node);
  }
  if (expandedBranchSummaryNode != null) {
    renderBranchSummaryNode(gl,glu,expandedBranchSummaryNode);
  }
  renderEdges(gl,pathNodes);
  gl.glEndList();
  setLayoutDirty(false);
  if (!isBubbleSetInitialized) {
    System.out.println("String_Node_Str" + isBubbleSetInitialized);
    bubbleSetRenderer.init(gl);
    isBubbleSetInitialized=true;
  }
  int sizeX=Math.round(this.x);
  int sizeY=Math.round(this.y);
  if (updateStrategy != null && this.updateStrategy instanceof FixedPathUpdateStrategy && sizeX > 0 && sizeY > 0) {
    int i=0;
    this.bubbleSetRenderer.setSize(sizeX,sizeY);
    this.bubbleSetRenderer.clearBubbleSet();
    bubbleSetItems.clear();
    bubbleSetEdges.clear();
    for (    List<PathwayVertexRep> segment : ((FixedPathUpdateStrategy)this.updateStrategy).getSelectedPathSegments()) {
      Rectangle2D prevRect=new Rectangle2D.Double(0f,0f,0f,0f);
      for (      PathwayVertexRep node : segment) {
        Rectangle2D nodeRect=getVertexRepBounds(node);
        if (nodeRect != null) {
          float posx=(float)nodeRect.getCenterX();
          float posy=-(float)nodeRect.getCenterY() + this.y;
          bubbleSetItems.add(new Rectangle2D.Double(posx,posy,nodeRect.getWidth(),nodeRect.getHeight()));
          if (i > 0) {
            bubbleSetEdges.add(new Line2D.Double(posx,posy,prevRect.getCenterX(),prevRect.getCenterY()));
          }
          prevRect.setRect(posx,posy,nodeRect.getWidth(),nodeRect.getHeight());
          i++;
        }
      }
    }
    this.bubbleSetRenderer.addGroup(bubbleSetItems,bubbleSetEdges,bubbleSetColor);
    ((BubbleSet)this.bubbleSetRenderer.setOutline).useVirtualEdges(false);
    this.bubbleSetRenderer.update(gl,null,0);
    this.bubbleSetRenderer.renderPxl(gl,this.x,this.y);
  }
  if (glu == null)   glu=new GLU();
  for (  ALinearizableNode node : pathNodes) {
    node.renderHighlight(gl,glu);
  }
  if (expandedBranchSummaryNode != null) {
    for (    ALinearizableNode node : expandedBranchSummaryNode.getBranchNodes()) {
      node.renderHighlight(gl,glu);
    }
  }
  gl.glCallList(layoutDisplayListIndex);
}

Fixed version (ground truth):
@Override protected void renderContent(GL2 gl){
  if (layoutDisplayListIndex == -1)   layoutDisplayListIndex=gl.glGenLists(1);
  gl.glEnable(GL.GL_BLEND);
  gl.glBlendFunc(GL.GL_ONE,GL.GL_ONE_MINUS_SRC_ALPHA);
  gl.glEnable(GL.GL_LINE_SMOOTH);
  GLU glu=null;
  if (isLayoutDirty()) {
    gl.glNewList(layoutDisplayListIndex,GL2.GL_COMPILE);
    glu=new GLU();
    renderPathwayBorders(gl);
    for (    ALinearizableNode node : pathNodes) {
      node.render(gl,glu);
      renderBranchNodes(gl,glu,node);
    }
    if (expandedBranchSummaryNode != null) {
      renderBranchSummaryNode(gl,glu,expandedBranchSummaryNode);
    }
    renderEdges(gl,pathNodes);
    gl.glEndList();
    setLayoutDirty(false);
  }
  if (!isBubbleSetInitialized) {
    System.out.println("String_Node_Str" + isBubbleSetInitialized);
    bubbleSetRenderer.init(gl);
    isBubbleSetInitialized=true;
  }
  int sizeX=Math.round(this.x);
  int sizeY=Math.round(this.y);
  if (updateStrategy != null && this.updateStrategy instanceof FixedPathUpdateStrategy && sizeX > 0 && sizeY > 0) {
    int i=0;
    this.bubbleSetRenderer.setSize(sizeX,sizeY);
    this.bubbleSetRenderer.clearBubbleSet();
    bubbleSetItems.clear();
    bubbleSetEdges.clear();
    for (    List<PathwayVertexRep> segment : ((FixedPathUpdateStrategy)this.updateStrategy).getSelectedPathSegments()) {
      Rectangle2D prevRect=new Rectangle2D.Double(0f,0f,0f,0f);
      for (      PathwayVertexRep node : segment) {
        Rectangle2D nodeRect=getVertexRepBounds(node);
        if (nodeRect != null) {
          float posx=(float)nodeRect.getCenterX();
          float posy=-(float)nodeRect.getCenterY() + this.y;
          bubbleSetItems.add(new Rectangle2D.Double(posx,posy,nodeRect.getWidth(),nodeRect.getHeight()));
          if (i > 0) {
            bubbleSetEdges.add(new Line2D.Double(posx,posy,prevRect.getCenterX(),prevRect.getCenterY()));
          }
          prevRect.setRect(posx,posy,nodeRect.getWidth(),nodeRect.getHeight());
          i++;
        }
      }
    }
    this.bubbleSetRenderer.addGroup(bubbleSetItems,bubbleSetEdges,bubbleSetColor);
    ((BubbleSet)this.bubbleSetRenderer.setOutline).useVirtualEdges(false);
    this.bubbleSetRenderer.update(gl,null,0);
    this.bubbleSetRenderer.renderPxl(gl,this.x,this.y);
  }
  if (glu == null)   glu=new GLU();
  for (  ALinearizableNode node : pathNodes) {
    node.renderHighlight(gl,glu);
  }
  if (expandedBranchSummaryNode != null) {
    for (    ALinearizableNode node : expandedBranchSummaryNode.getBranchNodes()) {
      node.renderHighlight(gl,glu);
    }
  }
  gl.glCallList(layoutDisplayListIndex);
}