Program: 58638
Project: 58638
Buggy source:
@Override public void draw(float fXCenter,float fYCenter,GL gl,GLU glu,double dTimePassed){
  PartialDisc pdCurrentSelectedElement=radialHierarchy.getCurrentSelectedElement();
  if (!bAnimationStarted) {
    initAnimation(fXCenter,fYCenter,pdCurrentSelectedElement);
    bAnimationStarted=true;
    radialHierarchy.setAnimationActive(true);
  }
  moveValues(dTimePassed);
  gl.glLoadIdentity();
  gl.glTranslatef(fXCenter,fYCenter,0);
  dsFixedColor.setFillColor(mvCurrentSelectedColorR.getMovementValue(),mvCurrentSelectedColorG.getMovementValue(),mvCurrentSelectedColorB.getMovementValue(),1);
  pdCurrentSelectedElement.drawHierarchyAngular(gl,glu,mvCurrentWidth.getMovementValue(),iTargetDepth,mvCurrentStartAngle.getMovementValue(),mvCurrentAngle.getMovementValue(),mvCurrentInnerRadius.getMovementValue());
  if (haveMovementValuesReachedTargets()) {
    bAnimationStarted=false;
  }
  if (!bAnimationStarted) {
    ADrawingState dsNext=drawingController.getDrawingState(EDrawingStateType.DRAWING_STATE_FULL_HIERARCHY);
    drawingController.setDrawingState(dsNext);
    radialHierarchy.setAnimationActive(false);
    PartialDisc pdNewRootElement=pdCurrentSelectedElement.getParent();
    radialHierarchy.setCurrentRootElement(pdNewRootElement);
    radialHierarchy.setCurrentSelectedElement(pdNewRootElement);
    navigationHistory.addNewHistoryEntry(dsNext,pdNewRootElement,pdNewRootElement,radialHierarchy.getMaxDisplayedHierarchyDepth());
    radialHierarchy.setNewSelection(ESelectionType.SELECTION,pdNewRootElement,pdNewRootElement);
    radialHierarchy.setDisplayListDirty();
  }
}

Fixed version (ground truth):
@Override public void draw(float fXCenter,float fYCenter,GL gl,GLU glu,double dTimePassed){
  PartialDisc pdCurrentSelectedElement=radialHierarchy.getCurrentSelectedElement();
  if (!bAnimationStarted) {
    initAnimation(fXCenter,fYCenter,pdCurrentSelectedElement);
    bAnimationStarted=true;
    radialHierarchy.setAnimationActive(true);
  }
  moveValues(dTimePassed);
  gl.glPushMatrix();
  gl.glLoadIdentity();
  gl.glTranslatef(fXCenter,fYCenter,0);
  dsFixedColor.setFillColor(mvCurrentSelectedColorR.getMovementValue(),mvCurrentSelectedColorG.getMovementValue(),mvCurrentSelectedColorB.getMovementValue(),1);
  pdCurrentSelectedElement.drawHierarchyAngular(gl,glu,mvCurrentWidth.getMovementValue(),iTargetDepth,mvCurrentStartAngle.getMovementValue(),mvCurrentAngle.getMovementValue(),mvCurrentInnerRadius.getMovementValue());
  if (haveMovementValuesReachedTargets()) {
    bAnimationStarted=false;
  }
  if (!bAnimationStarted) {
    ADrawingState dsNext=drawingController.getDrawingState(EDrawingStateType.DRAWING_STATE_FULL_HIERARCHY);
    drawingController.setDrawingState(dsNext);
    radialHierarchy.setAnimationActive(false);
    PartialDisc pdNewRootElement=pdCurrentSelectedElement.getParent();
    radialHierarchy.setCurrentRootElement(pdNewRootElement);
    radialHierarchy.setCurrentSelectedElement(pdNewRootElement);
    navigationHistory.addNewHistoryEntry(dsNext,pdNewRootElement,pdNewRootElement,radialHierarchy.getMaxDisplayedHierarchyDepth());
    radialHierarchy.setNewSelection(ESelectionType.SELECTION,pdNewRootElement,pdNewRootElement);
    radialHierarchy.setDisplayListDirty();
  }
  gl.glPopMatrix();
}