/// <summary>
        /// Recycles a NetIncomingMessage instance for reuse; taking pressure off the garbage collector
        /// </summary>
        public void Recycle(NetIncomingMessage msg)
        {
            if (m_incomingMessagesPool == null || msg == null)
                return;

            NetException.Assert(m_incomingMessagesPool.Contains(msg) == false, "Recyling already recycled incoming message! Thread race?");

            byte[] storage = msg.m_data;
            msg.m_data = null;
            Recycle(storage);
            msg.Reset();

            if (m_incomingMessagesPool.Count < m_maxCacheCount)
                m_incomingMessagesPool.Enqueue(msg);
        }