public TextChainCombined(IStringBuilderProvider left, IStringBuilderProvider right)
 {
     Left  = left ?? throw new ArgumentNullException(nameof(left));
     Right = right ?? throw new ArgumentNullException(nameof(right));
 }
 public static TextChainEx Insert(IStringBuilderProvider stringBuilder, string text, int index) => new TextChainEx(stringBuilder, new Operations.Insert(index, text));
 public static TextChainEx ReplaceString(IStringBuilderProvider stringBuilder, string oldValue, string newValue) => new TextChainEx(stringBuilder, new Operations.ReplaceString(oldValue, newValue));
 public static TextChainEx AppendLine(IStringBuilderProvider stringBuilder, string text) => new TextChainEx(stringBuilder, new Operations.AppendLine(text));