SerializableType CompileNullableTypes(Type type)
        {
            if (type.IsGenericType &&
                type.GetGenericTypeDefinition() == typeof(Nullable <>))
            {
                Type[] argTypes = type.GetGenericArguments();
                Fx.Assert(argTypes.Length == 1, "Nullable type must have one argument");
                return(SerializableType.CreateNullableType(type, this.GetType(argTypes[0])));
            }

            return(null);
        }