/// <summary>
        /// Adds the style for provided heading type if it's not already added.
        /// </summary>
        /// <param name="headingType"></param>
        public static void AddHeadingStyle(Model.HeadingType headingType)
        {
            if (IsStylePresent(StyleIds.GetStyleId(headingType))) {
                return;
            }

            int outlineLevel;

            switch (headingType)
            {
                case DocGen.ObjectModel.HeadingType.H1:
                    outlineLevel = 0;
                    break;
                case DocGen.ObjectModel.HeadingType.H2:
                    outlineLevel = 1;
                    break;
                case DocGen.ObjectModel.HeadingType.H3:
                    outlineLevel = 2;
                    break;
                case DocGen.ObjectModel.HeadingType.H4:
                    outlineLevel = 3;
                    break;
                case DocGen.ObjectModel.HeadingType.H5:
                    outlineLevel = 4;
                    break;
                case DocGen.ObjectModel.HeadingType.H6:
                    outlineLevel = 5;
                    break;
                default:
                    throw new NotImplementedException(headingType + ": Enum value not added");
            }

            Word.Styles styles =  DocumentPackager.GetInstance().GetStylePart().Styles;

            Word.Style style1 = new Word.Style() { Type = Word.StyleValues.Paragraph, StyleId = StyleIds.GetStyleId(headingType) };
            Word.BasedOn basedOn1 = new Word.BasedOn() { Val = "Normal" };

            Word.StyleParagraphProperties styleParagraphProperties1 = new Word.StyleParagraphProperties();
            Word.KeepNext keepNext1 = new Word.KeepNext();
            Word.KeepLines keepLines1 = new Word.KeepLines();
            Word.SpacingBetweenLines spacingBetweenLines1 = new Word.SpacingBetweenLines() { Before = "480", After = "0" };
            Word.OutlineLevel outlineLevel1 = new Word.OutlineLevel() { Val = outlineLevel };

            styleParagraphProperties1.Append(keepNext1);
            styleParagraphProperties1.Append(keepLines1);
            styleParagraphProperties1.Append(spacingBetweenLines1);
            styleParagraphProperties1.Append(outlineLevel1);

            style1.Append(basedOn1);
            style1.Append(styleParagraphProperties1);

            // Add the style to the styles part.
            styles.Append(style1);
        }
        private static void AddNewStyle(StyleDefinitionsPart styleDefinitionsPart, string styleid, string stylename)
        {
            // Get access to the root element of the styles part.
            Word.Styles styles = styleDefinitionsPart.Styles;

            Word.Style style1 = new Word.Style() { Type = Word.StyleValues.Paragraph, StyleId = "Heading1" };
            Word.StyleName styleName1 = new Word.StyleName() { Val = "heading 1" };
            Word.BasedOn basedOn1 = new Word.BasedOn() { Val = "Normal" };

            Word.StyleParagraphProperties styleParagraphProperties1 = new Word.StyleParagraphProperties();
            Word.KeepNext keepNext1 = new Word.KeepNext();
            Word.KeepLines keepLines1 = new Word.KeepLines();
            Word.SpacingBetweenLines spacingBetweenLines1 = new Word.SpacingBetweenLines() { Before = "480", After = "0" };
            Word.OutlineLevel outlineLevel1 = new Word.OutlineLevel() { Val = 0 };

            styleParagraphProperties1.Append(keepNext1);
            styleParagraphProperties1.Append(keepLines1);
            styleParagraphProperties1.Append(spacingBetweenLines1);
            styleParagraphProperties1.Append(outlineLevel1);

            style1.Append(styleName1);
            style1.Append(basedOn1);
            style1.Append(styleParagraphProperties1);

            // Add the style to the styles part.
            styles.Append(style1);
        }