protected override async Task SerializeToStreamAsync(Stream stream, TransportContext context)
            {
                const int       maxChars        = 128; //it is empiric value measured using Console.WriteLine(builder.Length)
                EncodingContext encodingContext = DefaultHttpEncoding;

                using (var encodingBuffer = new ArrayRental <byte>(DefaultHttpEncoding.GetMaxByteCount(maxChars)))
                {
                    //write start boundary
                    await stream.WriteStringAsync(DoubleDash + boundary + CrLf, encodingContext, (byte[])encodingBuffer).ConfigureAwait(false);

                    encodingContext.Reset();
                    var builder = new StringBuilder(maxChars);
                    //write each nested content
                    var writeDivider = false;
                    foreach (var entry in entries)
                    {
                        await EncodeHeadersToStreamAsync(stream, builder, entry, writeDivider, boundary, encodingContext, (byte[])encodingBuffer).ConfigureAwait(false);

                        encodingContext.Reset();
                        Debug.Assert(builder.Length <= maxChars);
                        writeDivider = true;
                        await entry.CopyToAsync(stream).ConfigureAwait(false);
                    }
                    //write footer
                    await stream.WriteStringAsync(CrLf + DoubleDash + boundary + DoubleDash + CrLf, encodingContext, (byte[])encodingBuffer).ConfigureAwait(false);
                }
                encodingContext.Reset();
            }