/// <summary>
        /// Deflate the token
        /// </summary>
        /// <param name="destination">Stream to deflate token to</param>
        public override void Deflate(Stream destination)
        {
            // Write option identifier
            destination.WriteByte((byte)FeatureID);

            // Deflate the token into the memory cache to calculate the length
            MemoryStream cache = new MemoryStream();

            // Check if we have an initial state
            if (Initial != null)
            {
                // Deflate initial state
                Initial.Deflate(cache);
            }

            // Check if we have a delta state
            if (Current != null)
            {
                // Deflate initial state
                Current.Deflate(cache);
            }

            // Write the cache length into the destination
            TDSUtilities.WriteUInt(destination, (uint)cache.Length);

            // Write cache itself
            cache.WriteTo(destination);
        }