Program: 70842
Project: 70842
Buggy source:
@Override public void drawLines(RenderObject robj,int gidx,LineStyle style,double rad){
  GL3RenderObjectLines gro=myRenderObjectManager.getLines(gl,robj);
  maybeUpdateState(gl);
switch (style) {
case LINE:
{
      float fold=getLineWidth();
      float frad=(float)rad;
      boolean changed=false;
      if (fold != frad) {
        setLineWidth(frad);
        changed=true;
      }
      updateProgram(gl,RenderingMode.DEFAULT,robj.hasNormals(),robj.hasColors(),robj.hasTextureCoords());
      gro.drawLineGroup(gl,GL.GL_LINES,gidx);
      if (changed) {
        setLineWidth(fold);
      }
      break;
    }
default :
{
    myProgramInfo.setLineScaleOffsetEnabled(true);
    updateProgram(gl,RenderingMode.INSTANCED_LINES,false,robj.hasColors(),false);
    myProgramInfo.setLineScaleOffsetEnabled(false);
switch (style) {
case CYLINDER:
{
        GL3Object primitive=myPrimitiveManager.getCylinder(gl,mySurfaceResolution,true);
        gro.setRadius(gl,(float)rad);
        gro.drawInstancedLineGroup(gl,primitive,gidx);
        break;
      }
case SOLID_ARROW:
{
      gro.setRadius(gl,(float)rad);
      GL3Object cylinder=myPrimitiveManager.getCylinder(gl,mySurfaceResolution,true);
      GL3Object cone=myPrimitiveManager.getCone(gl,mySurfaceResolution,true);
      float arrowRad=3 * (float)rad;
      float arrowLen=2 * arrowRad;
      float[] coneBoundary={1,0,-arrowLen,1};
      gro.setRadiusOffsets(gl,(float)rad,null,coneBoundary);
      gro.drawInstancedLineGroup(gl,cylinder,gidx);
      gro.setRadiusOffsets(gl,arrowRad,coneBoundary,null);
      gro.drawInstancedLineGroup(gl,cone,gidx);
      break;
    }
case SPINDLE:
{
    gro.setRadius(gl,(float)rad);
    GL3Object spindle=myPrimitiveManager.getSpindle(gl,mySurfaceResolution,mySurfaceResolution / 2);
    gro.drawInstancedLineGroup(gl,spindle,gidx);
    break;
  }
default :
break;
}
break;
}
}
}

Fixed version (ground truth):
@Override public void drawLines(RenderObject robj,int gidx,LineStyle style,double rad){
  GL3RenderObjectLines gro=myRenderObjectManager.getLines(gl,robj);
  maybeUpdateState(gl);
switch (style) {
case LINE:
{
      float fold=getLineWidth(gl);
      float frad=(float)rad;
      boolean changed=false;
      if (fold != frad) {
        setLineWidth(gl,frad);
        changed=true;
      }
      updateProgram(gl,RenderingMode.DEFAULT,robj.hasNormals(),robj.hasColors(),robj.hasTextureCoords());
      gro.drawLineGroup(gl,GL.GL_LINES,gidx);
      if (changed) {
        setLineWidth(gl,fold);
      }
      break;
    }
default :
{
    myProgramInfo.setLineScaleOffsetEnabled(true);
    updateProgram(gl,RenderingMode.INSTANCED_LINES,false,robj.hasColors(),false);
    myProgramInfo.setLineScaleOffsetEnabled(false);
switch (style) {
case CYLINDER:
{
        GL3Object primitive=myPrimitiveManager.getCylinder(gl,mySurfaceResolution,true);
        gro.setRadius(gl,(float)rad);
        gro.drawInstancedLineGroup(gl,primitive,gidx);
        break;
      }
case SOLID_ARROW:
{
      gro.setRadius(gl,(float)rad);
      GL3Object cylinder=myPrimitiveManager.getCylinder(gl,mySurfaceResolution,true);
      GL3Object cone=myPrimitiveManager.getCone(gl,mySurfaceResolution,true);
      float arrowRad=3 * (float)rad;
      float arrowLen=2 * arrowRad;
      float[] coneBoundary={1,0,-arrowLen,1};
      gro.setRadiusOffsets(gl,(float)rad,null,coneBoundary);
      gro.drawInstancedLineGroup(gl,cylinder,gidx);
      gro.setRadiusOffsets(gl,arrowRad,coneBoundary,null);
      gro.drawInstancedLineGroup(gl,cone,gidx);
      break;
    }
case SPINDLE:
{
    gro.setRadius(gl,(float)rad);
    GL3Object spindle=myPrimitiveManager.getSpindle(gl,mySurfaceResolution,mySurfaceResolution / 2);
    gro.drawInstancedLineGroup(gl,spindle,gidx);
    break;
  }
default :
break;
}
break;
}
}
}