/// <summary>
        /// Generate the given template text from the supplied parameters values and add its output to
        /// the given text builder at the given index
        /// </summary>
        /// <param name="textBuilder"></param>
        /// <param name="index"></param>
        /// <param name="template"></param>
        /// <param name="paramsValues"></param>
        public static void Insert(this ListTextComposer textBuilder, int index, ParametricTextComposer template, IParametricTextComposerValueSource paramsValues)
        {
            template.SetParametersValues(paramsValues);

            var text = template.GenerateText();

            textBuilder.Insert(index, new StructuredTextItem(text));
        }
        /// <summary>
        /// Generate the given template text from the supplied parameters values and add its output to
        /// the given text builder
        /// </summary>
        /// <param name="textBuilder"></param>
        /// <param name="template"></param>
        /// <param name="paramsValues"></param>
        public static void Add(this ListTextComposer textBuilder, ParametricTextComposer template, IParametricTextComposerValueSource paramsValues)
        {
            template.SetParametersValues(paramsValues);

            var text = template.GenerateText();

            textBuilder.Add(text);
        }
        /// <summary>
        /// Generate the given template text from the supplied parameters values and add its output to
        /// the given text builder
        /// </summary>
        /// <param name="textBuilder"></param>
        /// <param name="template"></param>
        /// <param name="paramsValues"></param>
        public static void Add(this ListTextComposer textBuilder, ParametricTextComposer template, IDictionary <string, string> paramsValues)
        {
            template.SetParametersValues(paramsValues);

            var text = template.GenerateText();

            textBuilder.Add(text);
        }
        public static LinearTextComposer AppendAtNewLine(this LinearTextComposer textBuilder, ParametricTextComposer template, params string[] parametersValues)
        {
            var text = template.GenerateText(parametersValues);

            return(textBuilder.AppendAtNewLine(text));
        }
        public static LinearTextComposer AppendNewLine(this LinearTextComposer textBuilder, ParametricTextComposer template, IParametricTextComposerValueSource parametersValues)
        {
            var text = template.GenerateText(parametersValues);

            return(textBuilder.AppendNewLine(text));
        }
        public static LinearTextComposer AppendNewLine(this LinearTextComposer textBuilder, ParametricTextComposer template, IDictionary <string, string> parametersValues)
        {
            var text = template.GenerateText(parametersValues);

            return(textBuilder.AppendNewLine(text));
        }