/// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            List <string>            headers = new List <string>();
            GH_Structure <GH_String> values;

            D3jsLib.Domain domain = null;

            if (!DA.GetDataList <string>(0, headers))
            {
                return;
            }
            if (!DA.GetDataTree(1, out values))
            {
                return;
            }
            DA.GetData <D3jsLib.Domain>(2, ref domain);

            List <DataPoint2> dataPoints = Mandrill_Grasshopper.Utilities.Utilities.Data2FromTree(headers, values);

            GroupedBarChartData data = new GroupedBarChartData();

            data.Data   = dataPoints;
            data.Domain = domain;

            DA.SetData(0, data);
        }
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            List <string>            headers = new List <string>();
            GH_Structure <GH_String> values;

            D3jsLib.Domain domain = null;

            if (!DA.GetDataList <string>(0, headers))
            {
                return;
            }
            if (!DA.GetDataTree(1, out values))
            {
                return;
            }
            DA.GetData <D3jsLib.Domain>(2, ref domain);

            StackedBarChartData data = new StackedBarChartData();

            data.Data   = ChartsUtilities.DataToJsonString(Utilities.Utilities.Data2FromTree(headers, values));
            data.Domain = domain;

            DA.SetData(0, data);
        }