Program: 66022
Project: 66022
Buggy source:
/** 
 * This method populates the subtype panel (creating its components if necessary). It gets called when the type selection changes or when the dimension selection changes (since not all sub types are supported for all dimension selections).
 * @param sSelectedType Type from Type List
 */
protected void createAndDisplayTypesSheet(String sSelectedType){
  IChartType chartType=ChartUIUtil.getChartType(sSelectedType);
  if (cbOrientation != null) {
    lblOrientation.setEnabled(chartType.supportsTransposition() && !is3D());
    cbOrientation.setEnabled(chartType.supportsTransposition() && !is3D());
  }
  updateDimensionCombo(sSelectedType);
  Vector<IChartSubType> vSubTypes=new Vector<IChartSubType>(chartType.getChartSubtypes(getAvailableDimension(chartType,sDimension),getAvailableOrientation(chartType,sDimension,this.orientation)));
  if (vSubTypes.size() == 0) {
    vSubTypes=new Vector<IChartSubType>(chartType.getChartSubtypes(chartType.getDefaultDimension(),chartType.getDefaultOrientation()));
    this.sDimension=null;
    this.orientation=null;
  }
  if (cbOrientation == null || !cbOrientation.isEnabled()) {
    this.orientation=null;
  }
  ChartCacheManager.getInstance().cacheOrientation(sType,orientation);
  if (chartModel == null) {
    ChartCacheManager.getInstance().cacheCategory(sType,true);
  }
 else   if (chartModel instanceof ChartWithAxes) {
    ChartCacheManager.getInstance().cacheCategory(sType,(((ChartWithAxes)chartModel).getAxes().get(0)).isCategoryAxis());
  }
  createSubtypeBtnGroups(vSubTypes);
  updateOrientationUIState();
  cmpRight.layout();
}

Fixed version (ground truth):
/** 
 * This method populates the subtype panel (creating its components if necessary). It gets called when the type selection changes or when the dimension selection changes (since not all sub types are supported for all dimension selections).
 * @param sSelectedType Type from Type List
 */
protected void createAndDisplayTypesSheet(String sSelectedType){
  IChartType chartType=ChartUIUtil.getChartType(sSelectedType);
  if (cbOrientation != null) {
    lblOrientation.setEnabled(chartType.supportsTransposition() && !is3D());
    cbOrientation.setEnabled(chartType.supportsTransposition() && !is3D());
  }
  updateDimensionCombo(sSelectedType);
  String availDim=getAvailableDimension(chartType,sDimension);
  Vector<IChartSubType> vSubTypes=new Vector<IChartSubType>(chartType.getChartSubtypes(availDim,getAvailableOrientation(chartType,availDim,this.orientation)));
  if (vSubTypes.size() == 0) {
    vSubTypes=new Vector<IChartSubType>(chartType.getChartSubtypes(chartType.getDefaultDimension(),chartType.getDefaultOrientation()));
    this.sDimension=null;
    this.orientation=null;
  }
  if (cbOrientation == null || !cbOrientation.isEnabled()) {
    this.orientation=null;
  }
  ChartCacheManager.getInstance().cacheOrientation(sType,orientation);
  if (chartModel == null) {
    ChartCacheManager.getInstance().cacheCategory(sType,true);
  }
 else   if (chartModel instanceof ChartWithAxes) {
    ChartCacheManager.getInstance().cacheCategory(sType,(((ChartWithAxes)chartModel).getAxes().get(0)).isCategoryAxis());
  }
  createSubtypeBtnGroups(vSubTypes);
  updateOrientationUIState();
  cmpRight.layout();
}