public static EnumContractInfo TryCreate([CanBeNull] IEnum enumType)
            {
                if (enumType != null && enumType.HasAttributeInstance(PredefinedType.FLAGS_ATTRIBUTE_CLASS, false))
                {
                    var numericTypeInfo = CSharpNumericTypeInfo.TryCreate(enumType.GetUnderlyingType());
                    if (numericTypeInfo != null)
                    {
                        Debug.Assert(enumType.EnumMembers != null);

                        return(numericTypeInfo.TryCreateEnumFlags(enumType.EnumMembers));
                    }
                }

                return(null);
            }
        protected sealed override bool IsAvailableForType(IType type)
        {
            NumericTypeInfo = CSharpNumericTypeInfo.TryCreate(type);

            if (NumericTypeInfo != null)
            {
                if (NumericTypeInfo.IsSigned)
                {
                    return(true);
                }

                NumericTypeInfo = null;
            }

            return(false);
        }
        protected sealed override bool IsAvailableForType(IType type)
        {
            NumericTypeInfo = CSharpNumericTypeInfo.TryCreate(type);

            return(NumericTypeInfo != null);
        }