/// <summary>
        /// Creates a grid configuration based on the property values of this instance.
        /// </summary>
        /// <returns>The grid configuration</returns>
        public IGrid Create()
        {
            var cellMatrix  = CellMatrix.Create(this);
            var subSections = CreateSubSections(cellMatrix.start);

            return(Grid.Create(cellMatrix, subSections));
        }
        /// <summary>
        /// Creates a grid configuration based on the prebaked data
        /// </summary>
        /// <param name="data">The data.</param>
        /// <returns>The grid.</returns>
        public IGrid Create(CellMatrixData data)
        {
            Ensure.ArgumentNotNull(data, "data");

            var cellMatrix  = CellMatrix.Create(this, data);
            var subSections = CreateSubSections(cellMatrix.start);

            return(Grid.Create(cellMatrix, subSections));
        }