Program: 68046
Project: 68046
Buggy source:
private Chart getConvertedChart(Chart currentChart,String sNewSubType,String sNewDimension){
  Chart helperModel=(Chart)EcoreUtil.copy(currentChart);
  ChartCacheManager.getInstance().cacheSeries(ChartUIUtil.getAllOrthogonalSeriesDefinitions(helperModel));
  if (currentChart instanceof ChartWithAxes) {
    if (!ChartPreviewPainter.isLivePreviewActive()) {
      helperModel.setSampleData(getConvertedSampleData(helperModel.getSampleData(),(((ChartWithAxes)currentChart).getAxes().get(0)).getType(),AxisType.LINEAR_LITERAL));
    }
    currentChart=ChartWithoutAxesImpl.create();
    currentChart.setType(TYPE_LITERAL);
    currentChart.setSubType(sNewSubType);
    currentChart.setDimension(getDimensionFor(sNewDimension));
    currentChart.setBlock(helperModel.getBlock());
    currentChart.setDescription(helperModel.getDescription());
    currentChart.setGridColumnCount(helperModel.getGridColumnCount());
    if (helperModel.getInteractivity() != null) {
      currentChart.getInteractivity().setEnable(helperModel.getInteractivity().isEnable());
      currentChart.getInteractivity().setLegendBehavior(helperModel.getInteractivity().getLegendBehavior());
    }
    currentChart.setSampleData(helperModel.getSampleData());
    currentChart.setScript(helperModel.getScript());
    currentChart.setUnits(helperModel.getUnits());
    if (helperModel.getGridColumnCount() > 0) {
      currentChart.setGridColumnCount(helperModel.getGridColumnCount());
    }
 else {
      currentChart.setGridColumnCount(1);
    }
    ((ChartWithoutAxes)currentChart).getSeriesDefinitions().add((((ChartWithAxes)helperModel).getAxes().get(0)).getSeriesDefinitions().get(0));
    Vector<SeriesDefinition> vOSD=new Vector<SeriesDefinition>();
    Axis primaryOrthogonalAxis=((ChartWithAxes)helperModel).getAxes().get(0).getAssociatedAxes().get(0);
    EList<SeriesDefinition> osd=primaryOrthogonalAxis.getSeriesDefinitions();
    for (int j=0; j < osd.size(); j++) {
      SeriesDefinition sd=osd.get(j);
      Series series=sd.getDesignTimeSeries();
      sd.getSeries().clear();
      sd.getSeries().add(getConvertedSeries(series,j));
      vOSD.add(sd);
    }
    (((ChartWithoutAxes)currentChart).getSeriesDefinitions().get(0)).getSeriesDefinitions().clear();
    (((ChartWithoutAxes)currentChart).getSeriesDefinitions().get(0)).getSeriesDefinitions().addAll(vOSD);
    currentChart.getLegend().setItemType(LegendItemType.SERIES_LITERAL);
    currentChart.getTitle().getLabel().getCaption().setValue(CHART_TITLE);
  }
 else   if (currentChart instanceof ChartWithoutAxes) {
    if (currentChart.getType().equals(TYPE_LITERAL)) {
      currentChart.setSubType(sNewSubType);
      if (!currentChart.getDimension().equals(getDimensionFor(sNewDimension))) {
        currentChart.setDimension(getDimensionFor(sNewDimension));
      }
    }
 else {
      currentChart=ChartWithoutAxesImpl.create();
      currentChart.setType(TYPE_LITERAL);
      currentChart.setSubType(sNewSubType);
      currentChart.setDimension(getDimensionFor(sNewDimension));
      currentChart.setBlock(helperModel.getBlock());
      currentChart.setDescription(helperModel.getDescription());
      currentChart.setGridColumnCount(helperModel.getGridColumnCount());
      currentChart.setSampleData(helperModel.getSampleData());
      currentChart.setScript(helperModel.getScript());
      currentChart.setUnits(helperModel.getUnits());
      if (helperModel.getInteractivity() != null) {
        currentChart.getInteractivity().setEnable(helperModel.getInteractivity().isEnable());
        currentChart.getInteractivity().setLegendBehavior(helperModel.getInteractivity().getLegendBehavior());
      }
      ((ChartWithoutAxes)currentChart).getSeriesDefinitions().clear();
      ((ChartWithoutAxes)currentChart).getSeriesDefinitions().add(((ChartWithoutAxes)helperModel).getSeriesDefinitions().get(0));
      EList<SeriesDefinition> seriesdefinitions=(((ChartWithoutAxes)currentChart).getSeriesDefinitions().get(0)).getSeriesDefinitions();
      for (int j=0; j < seriesdefinitions.size(); j++) {
        Series series=seriesdefinitions.get(j).getDesignTimeSeries();
        series=getConvertedSeries(series,j);
        seriesdefinitions.get(j).getSeries().clear();
        seriesdefinitions.get(j).getSeries().add(series);
      }
      currentChart.getLegend().setItemType(LegendItemType.SERIES_LITERAL);
      currentChart.getTitle().getLabel().getCaption().setValue(CHART_TITLE);
    }
  }
 else {
    return null;
  }
  return currentChart;
}

Fixed version (ground truth):
private Chart getConvertedChart(Chart currentChart,String sNewSubType,String sNewDimension){
  Chart helperModel=(Chart)EcoreUtil.copy(currentChart);
  ChartCacheManager.getInstance().cacheSeries(ChartUIUtil.getAllOrthogonalSeriesDefinitions(helperModel));
  if (currentChart instanceof ChartWithAxes) {
    if (!ChartPreviewPainter.isLivePreviewActive()) {
      helperModel.setSampleData(getConvertedSampleData(helperModel.getSampleData(),(((ChartWithAxes)currentChart).getAxes().get(0)).getType(),AxisType.LINEAR_LITERAL));
    }
    currentChart=ChartWithoutAxesImpl.create();
    currentChart.setType(TYPE_LITERAL);
    currentChart.setSubType(sNewSubType);
    currentChart.setDimension(getDimensionFor(sNewDimension));
    currentChart.setBlock(helperModel.getBlock());
    currentChart.setDescription(helperModel.getDescription());
    currentChart.setGridColumnCount(helperModel.getGridColumnCount());
    if (helperModel.getInteractivity() != null) {
      currentChart.getInteractivity().setEnable(helperModel.getInteractivity().isEnable());
      currentChart.getInteractivity().setLegendBehavior(helperModel.getInteractivity().getLegendBehavior());
    }
    currentChart.setSampleData(helperModel.getSampleData());
    currentChart.setScript(helperModel.getScript());
    currentChart.setUnits(helperModel.getUnits());
    if (helperModel.getGridColumnCount() > 0) {
      currentChart.setGridColumnCount(helperModel.getGridColumnCount());
    }
 else {
      currentChart.setGridColumnCount(1);
    }
    ((ChartWithoutAxes)currentChart).getSeriesDefinitions().add((((ChartWithAxes)helperModel).getAxes().get(0)).getSeriesDefinitions().get(0));
    Vector<SeriesDefinition> vOSD=new Vector<SeriesDefinition>();
    Axis primaryOrthogonalAxis=((ChartWithAxes)helperModel).getAxes().get(0).getAssociatedAxes().get(0);
    EList<SeriesDefinition> osd=primaryOrthogonalAxis.getSeriesDefinitions();
    for (int j=0; j < osd.size(); j++) {
      SeriesDefinition sd=osd.get(j);
      Series series=sd.getDesignTimeSeries();
      sd.getSeries().clear();
      sd.getSeries().add(getConvertedSeries(series,j));
      vOSD.add(sd);
    }
    (((ChartWithoutAxes)currentChart).getSeriesDefinitions().get(0)).getSeriesDefinitions().clear();
    (((ChartWithoutAxes)currentChart).getSeriesDefinitions().get(0)).getSeriesDefinitions().addAll(vOSD);
    currentChart.getLegend().setItemType(LegendItemType.SERIES_LITERAL);
    currentChart.getTitle().getLabel().getCaption().setValue(getDefaultTitle());
  }
 else   if (currentChart instanceof ChartWithoutAxes) {
    if (currentChart.getType().equals(TYPE_LITERAL)) {
      currentChart.setSubType(sNewSubType);
      if (!currentChart.getDimension().equals(getDimensionFor(sNewDimension))) {
        currentChart.setDimension(getDimensionFor(sNewDimension));
      }
    }
 else {
      currentChart=ChartWithoutAxesImpl.create();
      currentChart.setType(TYPE_LITERAL);
      currentChart.setSubType(sNewSubType);
      currentChart.setDimension(getDimensionFor(sNewDimension));
      currentChart.setBlock(helperModel.getBlock());
      currentChart.setDescription(helperModel.getDescription());
      currentChart.setGridColumnCount(helperModel.getGridColumnCount());
      currentChart.setSampleData(helperModel.getSampleData());
      currentChart.setScript(helperModel.getScript());
      currentChart.setUnits(helperModel.getUnits());
      if (helperModel.getInteractivity() != null) {
        currentChart.getInteractivity().setEnable(helperModel.getInteractivity().isEnable());
        currentChart.getInteractivity().setLegendBehavior(helperModel.getInteractivity().getLegendBehavior());
      }
      ((ChartWithoutAxes)currentChart).getSeriesDefinitions().clear();
      ((ChartWithoutAxes)currentChart).getSeriesDefinitions().add(((ChartWithoutAxes)helperModel).getSeriesDefinitions().get(0));
      EList<SeriesDefinition> seriesdefinitions=(((ChartWithoutAxes)currentChart).getSeriesDefinitions().get(0)).getSeriesDefinitions();
      for (int j=0; j < seriesdefinitions.size(); j++) {
        Series series=seriesdefinitions.get(j).getDesignTimeSeries();
        series=getConvertedSeries(series,j);
        seriesdefinitions.get(j).getSeries().clear();
        seriesdefinitions.get(j).getSeries().add(series);
      }
      currentChart.getLegend().setItemType(LegendItemType.SERIES_LITERAL);
      currentChart.getTitle().getLabel().getCaption().setValue(getDefaultTitle());
    }
  }
 else {
    return null;
  }
  return currentChart;
}