public static bool Has <T>(this Enum value, T check)
        {
            if (value == null)
            {
                throw new NullReferenceException();
            }
            Type type = value.GetType();

            //determine the values
            //object result = value;
            _EnumValue parsed = new _EnumValue(check, type);

            if (parsed.Signed is long)
            {
                return((Convert.ToInt64(value, CultureInfo.InvariantCulture) & (long)parsed.Signed) == (long)parsed.Signed);
            }
            else if (parsed.Unsigned is ulong)
            {
                return((Convert.ToUInt64(value, CultureInfo.InvariantCulture) & (ulong)parsed.Unsigned) == (ulong)parsed.Unsigned);
            }
            else
            {
                return(false);
            }
        }
        public static T Include <T>(this Enum value, T append)
        {
            if (value == null)
            {
                throw new NullReferenceException();
            }
            Type type = value.GetType();

            //determine the values
            object     result = value;
            _EnumValue parsed = new _EnumValue(append, type);

            if (parsed.Signed is long)
            {
                result = Convert.ToInt64(value, CultureInfo.InvariantCulture) | (long)parsed.Signed;
            }
            else if (parsed.Unsigned is ulong)
            {
                result = Convert.ToUInt64(value, CultureInfo.InvariantCulture) | (ulong)parsed.Unsigned;
            }

            //return the final value
            return((T)Enum.Parse(type, result.ToString()));
        }