internal override unsafe Channel.OfferParameters DeserializeOfferParameters(ReadOnlySequence <byte> payload)
            {
                ReadOnlySpan <byte> nameSlice = payload.IsSingleSegment ? payload.First.Span : payload.ToArray();

                fixed(byte *pName = nameSlice)
                {
                    return(new Channel.OfferParameters(
                               pName != null ? ControlFrameEncoding.GetString(pName, nameSlice.Length) : string.Empty,
                               null));
                }
            }
            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);
            }