/// <summary>
        /// Returns the column state information for the current object (used for rendering).
        /// Includes max width of column, alignment and index
        /// </summary>
        /// <returns></returns>
        public ColumnState[] GetColumnState()
        {
            if (ColumnsExpected < 1)
            {
                return(new ColumnState[0]);
            }

            var columns = new ColumnState[ColumnsExpected];

            for (var i = 0; i < ColumnsExpected; ++i)
            {
                Alignment align;
                if (!Alignments.TryGetValue(i, out align))
                {
                    align = Alignment.Left;
                }

                columns[i] = new ColumnState
                {
                    Index = i,
                    Width = maxColumnLengths[i],
                    Align = align
                };
            }
            return(columns);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="writer"></param>
        /// <param name="index"></param>
        /// <param name="count"></param>
        /// <param name="text"></param>
        /// <param name="column"></param>
        void render_cell_text(TextWriter writer, int index, int count, string text, ColumnState column)
        {
            if (index > 0)
            {
                writer.Write(ColumnSeparator);
            }

            bool   mustHaveRightPadding = !TrimTrailingWhitespace || index < count - 1;
            string padded = Pad(text, column.Width, column.Align, mustHaveRightPadding);

            writer.Write(padded);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="writer"></param>
        /// <param name="index"></param>
        /// <param name="count"></param>
        /// <param name="divider"></param>
        /// <param name="column"></param>
        void render_cell_divider(TextWriter writer, int index, int count, Divider divider, ColumnState column)
        {
            int padding = 0;

            if (index > 0 && !string.IsNullOrEmpty(ColumnSeparator))
            {
                if (divider.UseColumnSeparator)
                {
                    writer.Write(ColumnSeparator);
                }
                else
                {
                    padding = ColumnSeparator.Length;
                }
            }

            writer.Write(new string(divider.Char, column.Width + padding));
        }