Program: 70020
Project: 70020
Buggy source:
/** 
 * This method renders the bar graphic elements superimposed over the plot background and any previously rendered series' graphic elements.
 */
public void renderPlot(IPrimitiveRenderer ipr,Plot p) throws ChartException {
  if (!p.isVisible()) {
    return;
  }
  final boolean bFirstInSequence=(iSeriesIndex == 0);
  final boolean bLastInSequence=(iSeriesIndex == iSeriesCount - 1);
  final PlotWithAxes pwa=(PlotWithAxes)getComputations();
  if (bFirstInSequence) {
    renderBackground(ipr,p);
    renderAxesStructure(ipr,p);
  }
  if (getSeries() != null) {
    ScriptHandler.callFunction(getRunTimeContext().getScriptHandler(),ScriptHandler.BEFORE_DRAW_SERIES,getSeries(),this,getRunTimeContext().getScriptContext());
    getRunTimeContext().notifyStructureChange(IStructureDefinitionListener.BEFORE_DRAW_SERIES,getSeries());
    if (p.getClientArea().isVisible()) {
      renderSeries(ipr,p,srh);
    }
    ScriptHandler.callFunction(getRunTimeContext().getScriptHandler(),ScriptHandler.AFTER_DRAW_SERIES,getSeries(),this,getRunTimeContext().getScriptContext());
    getRunTimeContext().notifyStructureChange(IStructureDefinitionListener.AFTER_DRAW_SERIES,getSeries());
    renderAxesDecoration(ipr,srh);
  }
  if (bLastInSequence) {
    final Location panningOffset=getPanningOffset();
    try {
      if (isDimension3D()) {
        fDeferredCacheManager.process3DEvent(null,get3DEngine(),panningOffset.getX(),panningOffset.getY());
      }
      fDeferredCacheManager.flushAll();
    }
 catch (    ChartException ex) {
      throw new ChartException(ChartEnginePlugin.ID,ChartException.RENDERING,ex);
    }
    final AllAxes aax=pwa.getAxes();
    final OneAxis[] oaxa=new OneAxis[2 + aax.getOverlayCount() + (aax.getAncillaryBase() != null ? 1 : 0)];
    oaxa[0]=aax.getPrimaryBase();
    oaxa[1]=aax.getPrimaryOrthogonal();
    for (int i=0; i < aax.getOverlayCount(); i++) {
      oaxa[2 + i]=aax.getOverlay(i);
    }
    if (aax.getAncillaryBase() != null) {
      oaxa[2 + aax.getOverlayCount()]=aax.getAncillaryBase();
    }
    renderAxesLabels(ipr,p,oaxa);
    try {
      if (isDimension3D()) {
        getDeferredCache().process3DEvent(get3DEngine(),panningOffset.getX(),panningOffset.getY());
      }
      getDeferredCache().flush();
    }
 catch (    ChartException ex) {
      throw new ChartException(ChartEnginePlugin.ID,ChartException.RENDERING,ex);
    }
  }
}

Fixed version (ground truth):
/** 
 * This method renders the bar graphic elements superimposed over the plot background and any previously rendered series' graphic elements.
 */
public void renderPlot(IPrimitiveRenderer ipr,Plot p) throws ChartException {
  if (!p.isVisible()) {
    return;
  }
  final boolean bFirstInSequence=(iSeriesIndex == 0);
  final boolean bLastInSequence=(iSeriesIndex == iSeriesCount - 1);
  final PlotWithAxes pwa=(PlotWithAxes)getComputations();
  if (bFirstInSequence) {
    renderBackground(ipr,p);
    renderAxesStructure(ipr,p);
  }
  if (getSeries() != null || ChartUtil.isDataEmpty(rtc)) {
    ScriptHandler.callFunction(getRunTimeContext().getScriptHandler(),ScriptHandler.BEFORE_DRAW_SERIES,getSeries(),this,getRunTimeContext().getScriptContext());
    getRunTimeContext().notifyStructureChange(IStructureDefinitionListener.BEFORE_DRAW_SERIES,getSeries());
    if (p.getClientArea().isVisible()) {
      renderSeries(ipr,p,srh);
    }
    ScriptHandler.callFunction(getRunTimeContext().getScriptHandler(),ScriptHandler.AFTER_DRAW_SERIES,getSeries(),this,getRunTimeContext().getScriptContext());
    getRunTimeContext().notifyStructureChange(IStructureDefinitionListener.AFTER_DRAW_SERIES,getSeries());
    renderAxesDecoration(ipr,srh);
  }
  if (bLastInSequence) {
    final Location panningOffset=getPanningOffset();
    try {
      if (isDimension3D()) {
        fDeferredCacheManager.process3DEvent(null,get3DEngine(),panningOffset.getX(),panningOffset.getY());
      }
      fDeferredCacheManager.flushAll();
    }
 catch (    ChartException ex) {
      throw new ChartException(ChartEnginePlugin.ID,ChartException.RENDERING,ex);
    }
    final AllAxes aax=pwa.getAxes();
    final OneAxis[] oaxa=new OneAxis[2 + aax.getOverlayCount() + (aax.getAncillaryBase() != null ? 1 : 0)];
    oaxa[0]=aax.getPrimaryBase();
    oaxa[1]=aax.getPrimaryOrthogonal();
    for (int i=0; i < aax.getOverlayCount(); i++) {
      oaxa[2 + i]=aax.getOverlay(i);
    }
    if (aax.getAncillaryBase() != null) {
      oaxa[2 + aax.getOverlayCount()]=aax.getAncillaryBase();
    }
    renderAxesLabels(ipr,p,oaxa);
    try {
      if (isDimension3D()) {
        getDeferredCache().process3DEvent(get3DEngine(),panningOffset.getX(),panningOffset.getY());
      }
      getDeferredCache().flush();
    }
 catch (    ChartException ex) {
      throw new ChartException(ChartEnginePlugin.ID,ChartException.RENDERING,ex);
    }
  }
}