private static string GetValue(ValueDecl valueDecl)
        {
            var atomicType = valueDecl.Type;

            return
                (atomicType == ValueParamType.String             ? "str" :
                 atomicType == ValueParamType.Bool               ? "bool" :
                 atomicType == ValueParamType.Double             ? "float" :
                 atomicType == ValueParamType.Int                ? "int" :
                 atomicType == ValueParamType.Long               ? "int" :
                 atomicType == ValueParamType.NullableBool       ? "bool" :
                 atomicType == ValueParamType.NullableDouble     ? "float" :
                 atomicType == ValueParamType.NullableInt        ? "int" :
                 atomicType == ValueParamType.NullableLong       ? "int" :
                 atomicType == ValueParamType.DateTime           ? "int" :
                 atomicType == ValueParamType.Date               ? "int" :
                 atomicType == ValueParamType.Time               ? "int" :
                 atomicType == ValueParamType.Minute             ? "int" :
                 atomicType == ValueParamType.Instant            ? "dt.datetime" :
                 atomicType == ValueParamType.NullableDateTime   ? "int" :
                 atomicType == ValueParamType.NullableDate       ? "int" :
                 atomicType == ValueParamType.NullableTime       ? "int" :
                 atomicType == ValueParamType.NullableMinute     ? "int" :
                 atomicType == ValueParamType.NullableInstant    ? "dt.datetime" :
                 atomicType == ValueParamType.TemporalId         ? "ObjectId" :
                 atomicType == ValueParamType.NullableTemporalId ? "ObjectId" :
                 throw new ArgumentException($"Unknown value type: {atomicType.ToString()}"));
        }
        public static string GetValue(ValueDecl valueDecl)
        {
            var atomicType = valueDecl.Type;

            return
                (atomicType == ValueParamType.String           ? "dot::string" :
                 atomicType == ValueParamType.Bool             ? "bool" :
                 atomicType == ValueParamType.DateTime         ? "dot::local_date_time" :
                 atomicType == ValueParamType.Double           ? "double" :
                 atomicType == ValueParamType.Int              ? "int" :
                 atomicType == ValueParamType.Long             ? "long" :
                 atomicType == ValueParamType.NullableBool     ? "dot::nullable<bool>" :
                 atomicType == ValueParamType.NullableDateTime ? "dot::nullable<dot::local_date_time>" :
                 atomicType == ValueParamType.NullableDouble   ? "dot::nullable<double>" :
                 atomicType == ValueParamType.NullableInt      ? "dot::nullable<int>" :
                 atomicType == ValueParamType.NullableLong     ? "dot::nullable<long>" :
                 atomicType == ValueParamType.DateTime         ? "dot::local_date_time" :
                 atomicType == ValueParamType.Date             ? "dot::local_date" :
                 atomicType == ValueParamType.Time             ? "dot::local_time" :
                 atomicType == ValueParamType.Minute           ? "dot::local_minute" :
                 atomicType == ValueParamType.NullableDateTime ? "dot::nullable<dot::local_date_time>" :
                 atomicType == ValueParamType.NullableDate     ? "dot::nullable<dot::local_date>" :
                 atomicType == ValueParamType.NullableTime     ? "dot::nullable<dot::local_time>" :
                 atomicType == ValueParamType.NullableMinute   ? "dot::nullable<dot::local_minute>" :
                 atomicType == ValueParamType.TemporalId         ? "dot::object_id" :
                 atomicType == ValueParamType.NullableTemporalId ? "dot::nullable<dot::object_id>" :
                 throw new
                 ArgumentException($"Unknown value type: {atomicType.ToString()}"));
        }