Program: 79335
Project: 79335
Buggy source:
private Chart getConvertedChart(Chart currentChart,String sNewSubType,Orientation newOrientation,String sNewDimension){
  Chart helperModel=(Chart)EcoreUtil.copy(currentChart);
  if ((currentChart instanceof ChartWithAxes)) {
    if (currentChart.getType().equals(sType)) {
      if (!currentChart.getSubType().equals(sNewSubType)) {
        currentChart.setSubType(sNewSubType);
        EList axes=((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).getAssociatedAxes();
        for (int i=0; i < axes.size(); i++) {
          if (sNewSubType.equalsIgnoreCase("String_Node_Str")) {
            ((Axis)axes.get(i)).setPercent(true);
          }
 else {
            ((Axis)axes.get(i)).setPercent(false);
          }
          EList seriesdefinitions=((Axis)axes.get(i)).getSeriesDefinitions();
          for (int j=0; j < seriesdefinitions.size(); j++) {
            Series series=((SeriesDefinition)seriesdefinitions.get(j)).getDesignTimeSeries();
            if ((sNewSubType.equalsIgnoreCase("String_Node_Str") || sNewSubType.equalsIgnoreCase("String_Node_Str"))) {
              series.setStacked(true);
            }
 else {
              series.setStacked(false);
            }
          }
        }
      }
    }
 else     if (currentChart.getType().equals("String_Node_Str") || currentChart.getType().equals("String_Node_Str") || currentChart.getType().equals("String_Node_Str")) {
      if (!currentChart.getType().equals("String_Node_Str")) {
        currentChart.setSampleData(getConvertedSampleData(currentChart.getSampleData()));
      }
      currentChart.setType(sType);
      ((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).setType(AxisType.TEXT_LITERAL);
      if (!currentChart.getSubType().equals(sNewSubType)) {
        currentChart.setSubType(sNewSubType);
        EList axes=((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).getAssociatedAxes();
        for (int i=0; i < axes.size(); i++) {
          if (sNewSubType.equalsIgnoreCase("String_Node_Str")) {
            ((Axis)axes.get(i)).setPercent(true);
          }
 else {
            ((Axis)axes.get(i)).setPercent(false);
          }
          EList seriesdefinitions=((Axis)axes.get(i)).getSeriesDefinitions();
          for (int j=0; j < seriesdefinitions.size(); j++) {
            Series series=((SeriesDefinition)seriesdefinitions.get(j)).getDesignTimeSeries();
            series=getConvertedSeries(series);
            if ((sNewSubType.equalsIgnoreCase("String_Node_Str") || sNewSubType.equalsIgnoreCase("String_Node_Str"))) {
              series.setStacked(true);
            }
 else {
              series.setStacked(false);
            }
            ((SeriesDefinition)seriesdefinitions.get(j)).getSeries().set(j,series);
          }
        }
      }
    }
 else {
      return null;
    }
  }
 else {
    currentChart=ChartWithAxesImpl.create();
    currentChart.setType(sType);
    currentChart.setSubType(sNewSubType);
    ((ChartWithAxes)currentChart).setOrientation(newOrientation);
    currentChart.setDimension(getDimensionFor(sNewDimension));
    ((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).setOrientation(Orientation.HORIZONTAL_LITERAL);
    ((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).setType(AxisType.TEXT_LITERAL);
    ((Axis)((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).getAssociatedAxes().get(0)).setOrientation(Orientation.VERTICAL_LITERAL);
    ((Axis)((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).getAssociatedAxes().get(0)).setType(AxisType.LINEAR_LITERAL);
    currentChart.setBlock(helperModel.getBlock());
    currentChart.setDescription(helperModel.getDescription());
    currentChart.setGridColumnCount(helperModel.getGridColumnCount());
    currentChart.setSampleData(helperModel.getSampleData());
    currentChart.setScript(helperModel.getScript());
    currentChart.setSeriesThickness(helperModel.getSeriesThickness());
    currentChart.setUnits(helperModel.getUnits());
    if (helperModel.getType().equals("String_Node_Str")) {
      ((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).getSeriesDefinitions().clear();
      ((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).getSeriesDefinitions().add(((ChartWithoutAxes)helperModel).getSeriesDefinitions().get(0));
      ((Axis)((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).getAssociatedAxes().get(0)).getSeriesDefinitions().clear();
      ((Axis)((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).getAssociatedAxes().get(0)).getSeriesDefinitions().addAll(((SeriesDefinition)((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).getSeriesDefinitions().get(0)).getSeriesDefinitions());
      Series series=((SeriesDefinition)((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).getSeriesDefinitions().get(0)).getDesignTimeSeries();
      series=getConvertedSeries(series);
      ((SeriesDefinition)((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).getSeriesDefinitions().get(0)).getSeries().clear();
      ((SeriesDefinition)((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).getSeriesDefinitions().get(0)).getSeries().add(series);
      EList seriesdefinitions=((Axis)((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).getAssociatedAxes().get(0)).getSeriesDefinitions();
      for (int j=0; j < seriesdefinitions.size(); j++) {
        series=((SeriesDefinition)seriesdefinitions.get(j)).getDesignTimeSeries();
        series=getConvertedSeries(series);
        if ((sNewSubType.equalsIgnoreCase("String_Node_Str") || sNewSubType.equalsIgnoreCase("String_Node_Str"))) {
          series.setStacked(true);
        }
 else {
          series.setStacked(false);
        }
        ((SeriesDefinition)seriesdefinitions.get(j)).getSeries().clear();
        ((SeriesDefinition)seriesdefinitions.get(j)).getSeries().add(series);
      }
    }
 else {
      return null;
    }
  }
  if (currentChart instanceof ChartWithAxes && !((ChartWithAxes)currentChart).getOrientation().equals(newOrientation)) {
    ((ChartWithAxes)currentChart).setOrientation(newOrientation);
  }
  if (!currentChart.getDimension().equals(getDimensionFor(sNewDimension))) {
    currentChart.setDimension(getDimensionFor(sNewDimension));
  }
  return currentChart;
}

Fixed version (ground truth):
private Chart getConvertedChart(Chart currentChart,String sNewSubType,Orientation newOrientation,String sNewDimension){
  Chart helperModel=(Chart)EcoreUtil.copy(currentChart);
  if ((currentChart instanceof ChartWithAxes)) {
    if (currentChart.getType().equals(sType)) {
      if (!currentChart.getSubType().equals(sNewSubType)) {
        currentChart.setSubType(sNewSubType);
        EList axes=((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).getAssociatedAxes();
        for (int i=0; i < axes.size(); i++) {
          if (sNewSubType.equalsIgnoreCase("String_Node_Str")) {
            ((Axis)axes.get(i)).setPercent(true);
          }
 else {
            ((Axis)axes.get(i)).setPercent(false);
          }
          EList seriesdefinitions=((Axis)axes.get(i)).getSeriesDefinitions();
          for (int j=0; j < seriesdefinitions.size(); j++) {
            Series series=((SeriesDefinition)seriesdefinitions.get(j)).getDesignTimeSeries();
            if ((sNewSubType.equalsIgnoreCase("String_Node_Str") || sNewSubType.equalsIgnoreCase("String_Node_Str"))) {
              series.setStacked(true);
            }
 else {
              series.setStacked(false);
            }
          }
        }
      }
    }
 else     if (currentChart.getType().equals("String_Node_Str") || currentChart.getType().equals("String_Node_Str") || currentChart.getType().equals("String_Node_Str")) {
      if (!currentChart.getType().equals("String_Node_Str")) {
        currentChart.setSampleData(getConvertedSampleData(currentChart.getSampleData()));
      }
      currentChart.setType(sType);
      ((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).setType(AxisType.TEXT_LITERAL);
      currentChart.setSubType(sNewSubType);
      EList axes=((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).getAssociatedAxes();
      for (int i=0; i < axes.size(); i++) {
        if (sNewSubType.equalsIgnoreCase("String_Node_Str")) {
          ((Axis)axes.get(i)).setPercent(true);
        }
 else {
          ((Axis)axes.get(i)).setPercent(false);
        }
        EList seriesdefinitions=((Axis)axes.get(i)).getSeriesDefinitions();
        for (int j=0; j < seriesdefinitions.size(); j++) {
          Series series=((SeriesDefinition)seriesdefinitions.get(j)).getDesignTimeSeries();
          series=getConvertedSeries(series);
          if ((sNewSubType.equalsIgnoreCase("String_Node_Str") || sNewSubType.equalsIgnoreCase("String_Node_Str"))) {
            series.setStacked(true);
          }
 else {
            series.setStacked(false);
          }
          ((SeriesDefinition)seriesdefinitions.get(j)).getSeries().set(j,series);
        }
      }
    }
 else {
      return null;
    }
  }
 else {
    currentChart=ChartWithAxesImpl.create();
    currentChart.setType(sType);
    currentChart.setSubType(sNewSubType);
    ((ChartWithAxes)currentChart).setOrientation(newOrientation);
    currentChart.setDimension(getDimensionFor(sNewDimension));
    ((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).setOrientation(Orientation.HORIZONTAL_LITERAL);
    ((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).setType(AxisType.TEXT_LITERAL);
    ((Axis)((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).getAssociatedAxes().get(0)).setOrientation(Orientation.VERTICAL_LITERAL);
    ((Axis)((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).getAssociatedAxes().get(0)).setType(AxisType.LINEAR_LITERAL);
    currentChart.setBlock(helperModel.getBlock());
    currentChart.setDescription(helperModel.getDescription());
    currentChart.setGridColumnCount(helperModel.getGridColumnCount());
    currentChart.setSampleData(helperModel.getSampleData());
    currentChart.setScript(helperModel.getScript());
    currentChart.setSeriesThickness(helperModel.getSeriesThickness());
    currentChart.setUnits(helperModel.getUnits());
    if (helperModel.getType().equals("String_Node_Str")) {
      ((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).getSeriesDefinitions().clear();
      ((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).getSeriesDefinitions().add(((ChartWithoutAxes)helperModel).getSeriesDefinitions().get(0));
      ((Axis)((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).getAssociatedAxes().get(0)).getSeriesDefinitions().clear();
      ((Axis)((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).getAssociatedAxes().get(0)).getSeriesDefinitions().addAll(((SeriesDefinition)((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).getSeriesDefinitions().get(0)).getSeriesDefinitions());
      Series series=((SeriesDefinition)((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).getSeriesDefinitions().get(0)).getDesignTimeSeries();
      series=getConvertedSeries(series);
      ((SeriesDefinition)((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).getSeriesDefinitions().get(0)).getSeries().clear();
      ((SeriesDefinition)((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).getSeriesDefinitions().get(0)).getSeries().add(series);
      EList seriesdefinitions=((Axis)((Axis)((ChartWithAxes)currentChart).getAxes().get(0)).getAssociatedAxes().get(0)).getSeriesDefinitions();
      for (int j=0; j < seriesdefinitions.size(); j++) {
        series=((SeriesDefinition)seriesdefinitions.get(j)).getDesignTimeSeries();
        series=getConvertedSeries(series);
        if ((sNewSubType.equalsIgnoreCase("String_Node_Str") || sNewSubType.equalsIgnoreCase("String_Node_Str"))) {
          series.setStacked(true);
        }
 else {
          series.setStacked(false);
        }
        ((SeriesDefinition)seriesdefinitions.get(j)).getSeries().clear();
        ((SeriesDefinition)seriesdefinitions.get(j)).getSeries().add(series);
      }
    }
 else {
      return null;
    }
  }
  if (currentChart instanceof ChartWithAxes && !((ChartWithAxes)currentChart).getOrientation().equals(newOrientation)) {
    ((ChartWithAxes)currentChart).setOrientation(newOrientation);
  }
  if (!currentChart.getDimension().equals(getDimensionFor(sNewDimension))) {
    currentChart.setDimension(getDimensionFor(sNewDimension));
  }
  return currentChart;
}