/// <summary>
        /// Pulls an object from the pool.
        /// </summary>
        /// <returns></returns>
        public new static AttributeMessageOld Allocate()
        {
            // Grab the next available object
            AttributeMessageOld lInstance = sPool.Allocate();

            if (lInstance == null)
            {
                lInstance = new AttributeMessageOld();
            }

            // Reset the sent flags. We do this so messages are flagged as 'completed'
            // by default.
            lInstance.IsSent    = false;
            lInstance.IsHandled = false;

            // For this type, guarentee we have something
            // to hand back tot he caller
            return(lInstance);
        }
        /// <summary>
        /// Returns an element back to the pool.
        /// </summary>
        /// <param name="rEdge"></param>
        public static void Release(AttributeMessageOld rInstance)
        {
            if (rInstance == null)
            {
                return;
            }

            // We should never release an instance unless we're
            // sure we're done with it. So clearing here is fine
            rInstance.Clear();

            // Reset the sent flags. We do this so messages are flagged as 'completed'
            // and removed by default.
            rInstance.IsSent    = true;
            rInstance.IsHandled = true;

            // Make it available to others.
            sPool.Release(rInstance);
        }