/// <summary>
        /// The stream is out of scope for the HTTP message flow and will no longer be tracked
        /// </summary>
        /// <param name="stream">The stream to remove associated state with</param>
        /// <param name="release"><c>true</c> to call release on the value if it is present. <c>false</c> to not call release.</param>
        protected void RemoveMessage(IHttp2Stream stream, bool release)
        {
            IFullHttpMessage msg = stream.RemoveProperty <IFullHttpMessage>(_messageKey);

            if (release && msg is object)
            {
                _ = msg.Release();
            }
        }
 /// <summary>
 /// Release remaining content from <see cref="EmbeddedChannel"/> and remove the compressor from the <see cref="IHttp2Stream"/>.
 /// </summary>
 /// <param name="stream">The stream for which <paramref name="compressor"/> is the compressor for</param>
 /// <param name="compressor">The compressor for <paramref name="stream"/></param>
 void Cleanup(IHttp2Stream stream, EmbeddedChannel compressor)
 {
     _ = compressor.FinishAndReleaseAll();
     _ = stream.RemoveProperty(_propertyKey);
 }