/// <summary>
        /// Creates a 'TextArea' to be displayed. You can specify 
        /// <see cref="withRoundedCorners"/> to make the text area border rounded.
        /// </summary>
        /// <param name="parentColumnWidths">parentColumnWidths</param>
        /// <param name="title">title</param>
        /// <param name="textAreaText">textAreaText</param>
        /// <param name="defaultColumnWidth">defaultColumnWidth</param>
        /// <param name="textAreaPadding">textAreaPadding</param>
        /// <param name="withInternalBlankRow">withInternalBlankRow</param>
        /// <param name="withRoundedCorners">withRoundedCorners</param>
        public void CreateTextAreaCell(
            string parentColumnWidths,
            string title,
            string textAreaText,
            string defaultColumnWidth = DefaultTextAreaColumnWidth,
            Generator.MarginInfo textAreaPadding = null,
            bool withInternalBlankRow = false,
            bool withRoundedCorners = false)
        {
            // parent housing table
            var textAreaTable = CreateOuterTable(
                parentColumnWidths,
                Properties.Resources.ArialFont,
                DefaultHeadingTwoFontSize,
                DefaultOuterPadding,
                keepContentTogether: true);
            
            // nested table to correlate label & text area.
            var nestedTable = AddNestedTable(
                textAreaTable, 
                defaultColumnWidth, 
                Properties.Resources.ArialFont,
                DefaultHeadingTwoFontSize, 
                isKeptTogether: true, 
                isKeptWithNext: true);

            // Label Area formatting
            var parentTableLabelRow = nestedTable.Rows.Add();
            parentTableLabelRow.IsBroken = false;
            var inputColor = new Generator.Color(Properties.Resources.GreyColor);
            parentTableLabelRow.DefaultCellTextInfo.IsTrueTypeFontBold = true;
            parentTableLabelRow.DefaultCellTextInfo.Color = inputColor;
            parentTableLabelRow.DefaultCellTextInfo.LineSpacing = TextAreaLineSpacing;
            var labelCell = parentTableLabelRow.Cells.Add(title);
            labelCell.Padding = textAreaPadding ?? DefaultTextAreaLabelPadding;
            
            // Text Area formatting
            var textAreaInnerTable = CreateInnerTable(
                Properties.Resources.DefaultFullWidth,
                fontSize: DefaultHeadingTwoFontSize,
                parentTable: textAreaTable,
                keepContentTogether: true,
                // in some circumstances, a blank row has to be created like this, in order to separate elements.
                padding: withInternalBlankRow ? HeadingWithNoSubHeadingPadding : null);
            textAreaInnerTable.BackgroundColor = new Generator.Color(Properties.Resources.InnerTableColor);
            var textAreaInnerTableRow = textAreaInnerTable.Rows.Add();
            var textAreaCell = textAreaInnerTableRow.Cells.Add(textAreaText);
            textAreaCell.Padding = textAreaPadding ?? DefaultTextAreaDescriptionPadding;
            CreateStandardOrRoundedCornersBorder(withRoundedCorners, textAreaInnerTable);
        }
        /// <summary>
        /// Creates an 'Outer Table Row'. You can optionally specify a <see cref="columnSpan"/>.
        /// Everything else must be supplied.
        /// </summary>
        /// <param name="row">row</param>
        /// <param name="title">title</param>
        /// <param name="fullDescription">fullDescription</param>
        /// <param name="columnSpan">columnSpan</param>
        /// <param name="padding">padding</param>
        /// <param name="descriptionAlignment">descriptionAlignment</param>
        /// <param name="useSpacing">useSpacing</param>
        public void CreateOuterTableRowCells(
            Generator.Row row,
            string title,
            string fullDescription,
            int columnSpan = DefaultHeaderColumnSpan,
            Generator.MarginInfo padding = null,
            AlignmentType descriptionAlignment = AlignmentType.Left,
            bool useSpacing = false)
        {
            var labelCell = row.Cells.Add(title);
            var descriptionColor = new Generator.Color(Properties.Resources.GreyColor);
            labelCell.DefaultCellTextInfo.Color = descriptionColor;
            labelCell.DefaultCellTextInfo.FontSize = DefaultHeadingTwoFontSize;
            labelCell.DefaultCellTextInfo.IsTrueTypeFontBold = true;

            var descriptionCell = row.Cells.Add(fullDescription);
            descriptionCell.DefaultCellTextInfo.FontName = Properties.Resources.ArialFont;
            descriptionCell.DefaultCellTextInfo.FontSize = DefaultHeadingTwoFontSize;
            descriptionCell.DefaultCellTextInfo.Color = descriptionColor;
            descriptionCell.Alignment = descriptionAlignment;

            if (useSpacing)
            {
                labelCell.DefaultCellTextInfo.LineSpacing = DefaultLineSpacing;
                descriptionCell.DefaultCellTextInfo.LineSpacing = DefaultLineSpacing;
            }
            if (padding != null)
            {
                labelCell.Padding = padding;
                descriptionCell.Padding = padding;
            }
        }