/// <summary>
        /// Creates a new chart or adds data to an existing one.
        /// </summary>
        /// <param name="allDatasetMetricCharts">All results calculated so far.</param>
        /// <param name="dataset">The dataset name.</param>
        /// <param name="metric">The metric data.</param>
        /// <param name="technique">The technique name.</param>
        private static void StoreTechnique(SortedDictionary<string, Dictionary<string, Chart>> allDatasetMetricCharts,
                                            string dataset, Metric metric, string technique)
        {
            // Does this dataset have already been added?
            Dictionary<string, Chart> charts;
            bool newDataset = (allDatasetMetricCharts.TryGetValue(dataset, out charts) == false);
            if (newDataset)
            {
                charts = new Dictionary<string, Chart>();
            }

            // Does this dataset have already been added?
            Chart chart = null;
            charts.TryGetValue(metric.MetricName, out chart);
            if (metric is BoxSummaryData)
            {
                BoxPlot bp = null;
                if (chart is BoxPlot)
                {
                    bp = (BoxPlot)chart;
                }
                else
                {
                    bp = new BoxPlot(metric.MetricName, metric.Description);
                }

                bool boxAdded = bp.AddBox((BoxSummaryData)metric, technique);
                if (chart == null && boxAdded)
                {
                    charts.Add(metric.MetricName, bp);
                }
            }
            else if (metric is LineSeries)
            {
                LineChart lc = null;
                if (chart is LineChart)
                {
                    lc = (LineChart)chart;
                }
                else
                {
                    lc = new LineChart(metric.MetricName, metric.Description);
                }

                bool lineAdded = lc.AddLine((LineSeries)metric, technique);
                if (chart == null && lineAdded)
                {
                    charts.Add(metric.MetricName, lc);
                }
            }

            if (newDataset && charts.Count > 0)
            {
                allDatasetMetricCharts.Add(dataset, charts);
            }
        }
        /// <summary>
        /// Adds the metric.
        /// </summary>
        /// <param name="metric">The metric.</param>
        /// <exception cref="ArgumentException">throws if provided is not LineSeries or BoxSummaryData, the only types currently supported</exception>
        public void AddMetric(Metric metric)
        {
            if (metric is LineSeries || metric is BoxSummaryData)
            {
                m_metrics.Add(metric);
            }
            else
            {
                throw new ArgumentException("The only accepted metric s_metricTypes are either LineSeries or BoxSummaryData currently. ");
            }

        }