Program: 57716
Project: 57716
Buggy source:
private void updateBubbleSetsTexture(GL2 gl){
  int groupID=bubblesetCanvas.getGroupCount() - 1;
  while (bubblesetCanvas.getGroupCount() > 0) {
    bubblesetCanvas.setCurrentGroup(groupID);
    bubblesetCanvas.removeCurrentGroup();
    groupID--;
  }
  int bbGroupID=-1;
  HashSet<PathwayVertexRep> visitedNodes=new HashSet();
  for (  GraphPath<PathwayVertexRep,DefaultEdge> path : allPaths) {
    if (path == null)     return;
    double bbItemW=10;
    double bbItemH=10;
    gl.glPushName(generalManager.getViewManager().getPickingManager().getPickingID(uniqueID,PickingType.PATHWAY_PATH_SELECTION.name(),allPaths.indexOf(path)));
    float[] colorValues=new float[3];
    Integer outlineThickness;
    bbGroupID++;
    if (path == selectedPath) {
      colorValues=SelectionType.SELECTION.getColor();
      outlineThickness=3;
      bubblesetCanvas.addGroup(new Color(colorValues[0],colorValues[1],colorValues[2]),outlineThickness,true);
    }
 else {
      List<org.caleydo.core.util.color.Color> colorTable=(ColorManager.get()).getColorList("String_Node_Str");
      int colorID;
      if (bbGroupID < colorTable.size() - 2)       colorID=bbGroupID;
 else       colorID=colorTable.size() - 1;
      org.caleydo.core.util.color.Color c=colorTable.get(colorID);
      outlineThickness=1;
      bubblesetCanvas.addGroup(new Color(c.r,c.g,c.b),outlineThickness,true);
    }
    DefaultEdge lastEdge=null;
    for (    DefaultEdge edge : path.getEdgeList()) {
      PathwayVertexRep sourceVertexRep=pathway.getEdgeSource(edge);
      PathwayVertexRep targetVertexRep=pathway.getEdgeTarget(edge);
      bbItemW=sourceVertexRep.getWidth();
      bbItemH=sourceVertexRep.getHeight();
      double posX=sourceVertexRep.getLowerLeftCornerX();
      double posY=sourceVertexRep.getLowerLeftCornerY();
      double tX=targetVertexRep.getLowerLeftCornerX();
      double tY=targetVertexRep.getLowerLeftCornerY();
      bubblesetCanvas.addItem(bbGroupID,posX,posY,bbItemW,bbItemH);
      bubblesetCanvas.addEdge(bbGroupID,posX,posY,tX,tY);
      lastEdge=edge;
      visitedNodes.add(sourceVertexRep);
    }
    if (lastEdge != null) {
      PathwayVertexRep targetVertexRep=pathway.getEdgeTarget(lastEdge);
      double posX=targetVertexRep.getLowerLeftCornerX();
      double posY=targetVertexRep.getLowerLeftCornerY();
      bbItemW=targetVertexRep.getWidth();
      bbItemH=targetVertexRep.getHeight();
      bubblesetCanvas.addItem(bbGroupID,posX,posY,bbItemW,bbItemH);
      visitedNodes.add(targetVertexRep);
    }
    gl.glPopName();
  }
  bubblesetCanvas.setSelection(selectedPathID);
  texRenderer.setSize(pathway.getWidth(),pathway.getHeight());
  Graphics2D g2d=texRenderer.createGraphics();
  bubblesetCanvas.paint(g2d);
  g2d.dispose();
}

Fixed version (ground truth):
private void updateBubbleSetsTexture(GL2 gl){
  int groupID=bubblesetCanvas.getGroupCount() - 1;
  while (bubblesetCanvas.getGroupCount() > 0) {
    bubblesetCanvas.setCurrentGroup(groupID);
    bubblesetCanvas.removeCurrentGroup();
    groupID--;
  }
  int bbGroupID=-1;
  HashSet<PathwayVertexRep> visitedNodes=new HashSet();
  for (  GraphPath<PathwayVertexRep,DefaultEdge> path : allPaths) {
    if (path == null)     return;
    double bbItemW=10;
    double bbItemH=10;
    gl.glPushName(generalManager.getViewManager().getPickingManager().getPickingID(uniqueID,PickingType.PATHWAY_PATH_SELECTION.name(),allPaths.indexOf(path)));
    float[] colorValues=new float[3];
    Integer outlineThickness;
    bbGroupID++;
    if (path == selectedPath) {
      colorValues=SelectionType.SELECTION.getColor();
      outlineThickness=3;
      bubblesetCanvas.addGroup(new Color(colorValues[0],colorValues[1],colorValues[2]),outlineThickness,true);
    }
 else {
      List<org.caleydo.core.util.color.Color> colorTable=(ColorManager.get()).getColorList("String_Node_Str");
      int colorID;
      if (bbGroupID < colorTable.size() - 2)       colorID=bbGroupID;
 else       colorID=colorTable.size() - 1;
      org.caleydo.core.util.color.Color c=colorTable.get(colorID);
      outlineThickness=1;
      bubblesetCanvas.addGroup(new Color(c.r,c.g,c.b),outlineThickness,true);
    }
    DefaultEdge lastEdge=null;
    for (    DefaultEdge edge : path.getEdgeList()) {
      PathwayVertexRep sourceVertexRep=pathway.getEdgeSource(edge);
      PathwayVertexRep targetVertexRep=pathway.getEdgeTarget(edge);
      bbItemW=sourceVertexRep.getWidth();
      bbItemH=sourceVertexRep.getHeight();
      double posX=sourceVertexRep.getLowerLeftCornerX();
      double posY=sourceVertexRep.getLowerLeftCornerY();
      double tX=targetVertexRep.getLowerLeftCornerX();
      double tY=targetVertexRep.getLowerLeftCornerY();
      bubblesetCanvas.addItem(bbGroupID,posX,posY,bbItemW,bbItemH);
      bubblesetCanvas.addEdge(bbGroupID,posX,posY,tX,tY);
      lastEdge=edge;
      visitedNodes.add(sourceVertexRep);
    }
    if (lastEdge != null) {
      PathwayVertexRep targetVertexRep=pathway.getEdgeTarget(lastEdge);
      double posX=targetVertexRep.getLowerLeftCornerX();
      double posY=targetVertexRep.getLowerLeftCornerY();
      bbItemW=targetVertexRep.getWidth();
      bbItemH=targetVertexRep.getHeight();
      bubblesetCanvas.addItem(bbGroupID,posX,posY,bbItemW,bbItemH);
      visitedNodes.add(targetVertexRep);
    }
    gl.glPopName();
  }
  if (allPaths.size() <= selectedPathID)   selectedPathID=0;
  bubblesetCanvas.setSelection(selectedPathID);
  texRenderer.setSize(pathway.getWidth(),pathway.getHeight());
  Graphics2D g2d=texRenderer.createGraphics();
  bubblesetCanvas.paint(g2d);
  g2d.dispose();
}