/// <summary>Encode an enumeration value using an enumeration encoder object</summary>
        /// <typeparam name="TEnum">Enumeration type to encode</typeparam>
        /// <param name="value">Enumeration value to encode</param>
        /// <param name="encoder">Encoder for <typeparamref name="TEnum"/> objects</param>
        public void Encode32 <TEnum>(TEnum value, EnumBitEncoder32 <TEnum> encoder) where TEnum : struct
        {
            //Contract.Requires<System.ArgumentNullException>(encoder != null);

            encoder.BitEncode(value, ref m64, ref mBitIndex);
        }
        /// <summary>Decode an enumeration value using an enumeration encoder object</summary>
        /// <typeparam name="TEnum">Enumeration type to decode</typeparam>
        /// <param name="value">Enumeration value decoded from this handle</param>
        /// <param name="decoder">Encoder for <typeparamref name="TEnum"/> objects</param>
        public void Decode32 <TEnum>(out TEnum value, EnumBitEncoder32 <TEnum> decoder) where TEnum : struct
        {
            //Contract.Requires<System.ArgumentNullException>(decoder != null);

            value = decoder.BitDecode(m64, ref mBitIndex);
        }