public static void WriteLengthEncodedStringNew(this ByteBufferWriter writer, StringBuilder builder)
        {
#if !NET45 && !NET461 && !NET471 && !NETSTANDARD1_3 && !NETSTANDARD2_0 && !NETSTANDARD2_1 && !NETCOREAPP2_1
            m_slicedEncoder ??= new SlicedEncoder();

            var totalLength = 0;

            foreach (var chunk in builder.GetChunks())
            {
                totalLength += m_slicedEncoder.GetUtf8ByteCount(chunk.Span);
            }

            writer.WriteLengthEncodedInteger((ulong)totalLength);

            string?previousUtf16          = null;
            ReadOnlySpan <char> utf16Span = null;
            foreach (var chunk in builder.GetChunks())
            {
                m_slicedEncoder.PrepareUtf16Span(chunk, out previousUtf16, out utf16Span);

                if (previousUtf16 != null)
                {
                    writer.Write(previousUtf16);
                }

                writer.Write(utf16Span);
            }
#else
            writer.WriteLengthEncodedString(builder.ToString());
#endif
        }
        public static void WriteLengthEncodedString(this ByteBufferWriter writer, ReadOnlySpan <char> value)
        {
            var byteCount = Encoding.UTF8.GetByteCount(value);

            writer.WriteLengthEncodedInteger((ulong)byteCount);
            writer.Write(value);
        }