Program: 58453
Project: 58453
Buggy source:
@Override public void displayLocal(GL gl){
  processEvents();
  textRenderer.setColor(0,0,0,1);
  renderNumber(gl,"String_Node_Str",0,0);
  if (!isVisible())   return;
  if (set == null)   return;
  if (detailLevel == EDetailLevel.HIGH) {
    GLMouseListener glMouseListener=getParentGLCanvas().getGLMouseListener();
    if (bMainViewZoomDragged) {
      if (bClearSomeDisplayLists) {
        gl.glNewList(iGLDisplayListIndexCoord,GL.GL_COMPILE);
        gl.glEndList();
        gl.glNewList(iGLDisplayListIndexLocal,GL.GL_COMPILE);
        gl.glEndList();
        gl.glNewList(iGLDisplayListIndexSelection,GL.GL_COMPILE);
        gl.glEndList();
        gl.glNewList(iGLDisplayListIndexMouseOver,GL.GL_COMPILE);
        gl.glEndList();
        bClearSomeDisplayLists=false;
      }
      Point pCurrentMousePoint=glMouseListener.getPickedPoint();
      float[] fCurrentMousePoint=GLCoordinateUtils.convertWindowCoordinatesToWorldCoordinates(gl,pCurrentMousePoint.x,pCurrentMousePoint.y);
      float x=(fCurrentMousePoint[0] - XYAXISDISTANCE);
      float y=(fCurrentMousePoint[1] - XYAXISDISTANCE);
      if (bRenderMatrix) {
        x-=renderStyle.getCenterXOffset();
        y-=renderStyle.getCenterYOffset();
      }
      x=x / renderStyle.getAxisWidth();
      y=y / renderStyle.getAxisHeight();
      handleMainZoomAxes(x,y);
      if (glMouseListener.wasLeftMouseButtonPressed()) {
        bMainViewZoomDragged=false;
        iCurrentDragZoom=-1;
        setDisplayListDirty();
        bUpdateMainView=true;
      }
    }
    if (glMouseListener.wasMouseDragged() && (!bRender2Axis)) {
      bRectangleSelection=true;
      Point pDragEndPoint=glMouseListener.getPickedPoint();
      Point pDragStartPoint=glMouseListener.getPickedPointDragStart();
      fRectangleDragStartPoint=GLCoordinateUtils.convertWindowCoordinatesToWorldCoordinates(gl,pDragStartPoint.x,pDragStartPoint.y);
      fRectangleDragEndPoint=GLCoordinateUtils.convertWindowCoordinatesToWorldCoordinates(gl,pDragEndPoint.x,pDragEndPoint.y);
      float[] fArMappingColor=new float[]{0.0f,1.0f,0.0f};
      renderRectangularSelection(gl,fRectangleDragStartPoint[0],fRectangleDragStartPoint[1],ScatterPlotRenderStyle.SELECTION_RECTANGLE_Z,fRectangleDragEndPoint[0] - fRectangleDragStartPoint[0],fRectangleDragEndPoint[1] - fRectangleDragStartPoint[1],fArMappingColor);
    }
    if (glMouseListener.wasMouseReleased() && bRectangleSelection) {
      bRectangleSelection=false;
      setDisplayListDirty();
      if (bRenderMatrix)       gl.glTranslatef(renderStyle.getCenterXOffset(),renderStyle.getCenterYOffset(),0);
      updateSelection();
      if (bRenderMatrix)       gl.glTranslatef(-renderStyle.getCenterXOffset(),-renderStyle.getCenterYOffset(),0);
      bUpdateSelection=true;
      bUpdateSelectionTexures=true;
    }
    pickingManager.handlePicking(this,gl);
  }
  if (bIsDisplayListDirtyLocal) {
    buildDisplayList(gl,iGLDisplayListIndexLocal);
    bIsDisplayListDirtyLocal=false;
  }
  iGLDisplayListToCall=iGLDisplayListIndexLocal;
  display(gl);
  checkForHits(gl);
  if (eBusyModeState != EBusyModeState.OFF)   renderBusyMode(gl);
}

Fixed version (ground truth):
@Override public void displayLocal(GL gl){
  processEvents();
  if (!isVisible())   return;
  if (set == null)   return;
  if (detailLevel == EDetailLevel.HIGH) {
    GLMouseListener glMouseListener=getParentGLCanvas().getGLMouseListener();
    if (bMainViewZoomDragged) {
      if (bClearSomeDisplayLists) {
        gl.glNewList(iGLDisplayListIndexCoord,GL.GL_COMPILE);
        gl.glEndList();
        gl.glNewList(iGLDisplayListIndexLocal,GL.GL_COMPILE);
        gl.glEndList();
        gl.glNewList(iGLDisplayListIndexSelection,GL.GL_COMPILE);
        gl.glEndList();
        gl.glNewList(iGLDisplayListIndexMouseOver,GL.GL_COMPILE);
        gl.glEndList();
        bClearSomeDisplayLists=false;
      }
      Point pCurrentMousePoint=glMouseListener.getPickedPoint();
      float[] fCurrentMousePoint=GLCoordinateUtils.convertWindowCoordinatesToWorldCoordinates(gl,pCurrentMousePoint.x,pCurrentMousePoint.y);
      float x=(fCurrentMousePoint[0] - XYAXISDISTANCE);
      float y=(fCurrentMousePoint[1] - XYAXISDISTANCE);
      if (bRenderMatrix) {
        x-=renderStyle.getCenterXOffset();
        y-=renderStyle.getCenterYOffset();
      }
      x=x / renderStyle.getAxisWidth();
      y=y / renderStyle.getAxisHeight();
      handleMainZoomAxes(x,y);
      if (glMouseListener.wasLeftMouseButtonPressed()) {
        bMainViewZoomDragged=false;
        iCurrentDragZoom=-1;
        setDisplayListDirty();
        bUpdateMainView=true;
      }
    }
    if (glMouseListener.wasMouseDragged() && (!bRender2Axis)) {
      bRectangleSelection=true;
      Point pDragEndPoint=glMouseListener.getPickedPoint();
      Point pDragStartPoint=glMouseListener.getPickedPointDragStart();
      fRectangleDragStartPoint=GLCoordinateUtils.convertWindowCoordinatesToWorldCoordinates(gl,pDragStartPoint.x,pDragStartPoint.y);
      fRectangleDragEndPoint=GLCoordinateUtils.convertWindowCoordinatesToWorldCoordinates(gl,pDragEndPoint.x,pDragEndPoint.y);
      float[] fArMappingColor=new float[]{0.0f,1.0f,0.0f};
      renderRectangularSelection(gl,fRectangleDragStartPoint[0],fRectangleDragStartPoint[1],ScatterPlotRenderStyle.SELECTION_RECTANGLE_Z,fRectangleDragEndPoint[0] - fRectangleDragStartPoint[0],fRectangleDragEndPoint[1] - fRectangleDragStartPoint[1],fArMappingColor);
    }
    if (glMouseListener.wasMouseReleased() && bRectangleSelection) {
      bRectangleSelection=false;
      setDisplayListDirty();
      if (bRenderMatrix)       gl.glTranslatef(renderStyle.getCenterXOffset(),renderStyle.getCenterYOffset(),0);
      updateSelection();
      if (bRenderMatrix)       gl.glTranslatef(-renderStyle.getCenterXOffset(),-renderStyle.getCenterYOffset(),0);
      bUpdateSelection=true;
      bUpdateSelectionTexures=true;
    }
    pickingManager.handlePicking(this,gl);
  }
  if (bIsDisplayListDirtyLocal) {
    buildDisplayList(gl,iGLDisplayListIndexLocal);
    bIsDisplayListDirtyLocal=false;
  }
  iGLDisplayListToCall=iGLDisplayListIndexLocal;
  display(gl);
  checkForHits(gl);
  if (eBusyModeState != EBusyModeState.OFF)   renderBusyMode(gl);
}