((Axis) ((ChartWithAxes) currentChart).getAxes().get(0)).setCategoryAxis(true);
    private Chart getConvertedChart(Chart currentChart, String sNewSubType, Orientation newOrientation, String sNewDimension)    {        Chart helperModel = (Chart) EcoreUtil.copy(currentChart);        if((currentChart instanceof ChartWithAxes))	// Chart is ChartWithAxes        {            if(currentChart.getType().equals(sType))	// Original chart is of this type (BarChart)            {                if(!currentChart.getSubType().equals(sNewSubType))	// Original chart is of the required subtype                {                    currentChart.setSubType(sNewSubType);                    EList axes = ((Axis) ((ChartWithAxes) currentChart).getAxes().get(0)).getAssociatedAxes();                    for(int i = 0; i < axes.size(); i++)                    {                        if(sNewSubType.equalsIgnoreCase("Percent Stacked"))                        {                            ((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("Stacked") || sNewSubType.equalsIgnoreCase("Percent Stacked")))                            {                                series.setStacked(true);                            }                            else                            {                                series.setStacked(false);                            }                        }                    }                }            }            else if(currentChart.getType().equals("Line Chart") || currentChart.getType().equals("Stock Chart") || currentChart.getType().equals("Scatter Chart"))            {                if(!currentChart.getType().equals("Line Chart"))                {                    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("Percent Stacked"))                    {                        ((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("Stacked") || sNewSubType.equalsIgnoreCase("Percent Stacked")))                        {                            series.setStacked(true);                        }                        else                        {                            series.setStacked(false);                        }                        ((SeriesDefinition) seriesdefinitions.get(j)).getSeries().set(j, series);                    }                }            }            else            {                return null;            }        }        else        {            // Create a new instance of the correct type and set initial properties            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);                        // Copy generic chart properties from the old chart            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("Pie Chart"))            {                // Clear existing series definitions                ((Axis) ((ChartWithAxes) currentChart).getAxes().get(0)).getSeriesDefinitions().clear();                                // Copy base series definitions                ((Axis) ((ChartWithAxes) currentChart).getAxes().get(0)).getSeriesDefinitions().add(((ChartWithoutAxes) helperModel).getSeriesDefinitions().get(0));                                // Clear existing series definitions                ((Axis) ((Axis) ((ChartWithAxes) currentChart).getAxes().get(0)).getAssociatedAxes().get(0)).getSeriesDefinitions().clear();                                // Copy orthogonal series definitions                ((Axis) ((Axis) ((ChartWithAxes) currentChart).getAxes().get(0)).getAssociatedAxes().get(0)).getSeriesDefinitions().addAll(((SeriesDefinition) ((Axis) ((ChartWithAxes) currentChart).getAxes().get(0)).getSeriesDefinitions().get(0)).getSeriesDefinitions());                // Update the base series                Series series = ((SeriesDefinition) ((Axis) ((ChartWithAxes) currentChart).getAxes().get(0)).getSeriesDefinitions().get(0)).getDesignTimeSeries();                series = getConvertedSeries(series);                                // Clear existing series                ((SeriesDefinition) ((Axis) ((ChartWithAxes) currentChart).getAxes().get(0)).getSeriesDefinitions().get(0)).getSeries().clear();                                // Add converted series                ((SeriesDefinition) ((Axis) ((ChartWithAxes) currentChart).getAxes().get(0)).getSeriesDefinitions().get(0)).getSeries().add(series);                                // Update the orthogonal 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("Stacked") || sNewSubType.equalsIgnoreCase("Percent Stacked")))                    {                        series.setStacked(true);                    }                    else                    {                        series.setStacked(false);                    }                    // Clear any existing series                    ((SeriesDefinition) seriesdefinitions.get(j)).getSeries().clear();                    // Add the new series                    ((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;    }