internal override ReadOnlySequence <byte> Serialize(Channel.OfferParameters offerParameters)
            {
                var sequence = new Sequence <byte>();
                var writer   = new MessagePackWriter(sequence);

                writer.WriteArrayHeader(offerParameters.RemoteWindowSize is null ? 1 : 2);
                writer.Write(offerParameters.Name);
                if (offerParameters.RemoteWindowSize is long remoteWindowSize)
                {
                    writer.Write(remoteWindowSize);
                }

                writer.Flush();
                return(sequence);
            }
            internal override unsafe ReadOnlySequence <byte> Serialize(Channel.OfferParameters offerParameters)
            {
                var sequence = new Sequence <byte>();
                var buffer   = sequence.GetSpan(ControlFrameEncoding.GetMaxByteCount(offerParameters.Name.Length));

                fixed(byte *pBuffer = buffer)
                {
                    fixed(char *pName = offerParameters.Name)
                    {
                        int byteLength = ControlFrameEncoding.GetBytes(pName, offerParameters.Name.Length, pBuffer, buffer.Length);

                        sequence.Advance(byteLength);
                    }
                }

                return(sequence);
            }
 internal abstract ReadOnlySequence <byte> Serialize(Channel.OfferParameters offerParameters);