diff --git a/head/csharp/test/inputs/json/misc/31189.json/default/QuickType.cs b/head/csharp/test/inputs/json/misc/31189.json/default/QuickType.cs
new file mode 100644
index 0000000..ad87dbb
--- /dev/null
+++ b/head/csharp/test/inputs/json/misc/31189.json/default/QuickType.cs
@@ -0,0 +1,206 @@
+// <auto-generated />
+//
+// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do:
+//
+//    using QuickType;
+//
+//    var topLevel = TopLevel.FromJson(jsonString);
+#nullable enable
+#pragma warning disable CS8618
+#pragma warning disable CS8601
+#pragma warning disable CS8602
+#pragma warning disable CS8603
+#pragma warning disable CS8604
+#pragma warning disable CS8625
+#pragma warning disable CS8765
+
+namespace QuickType
+{
+    using System;
+    using System.Collections.Generic;
+
+    using System.Globalization;
+    using Newtonsoft.Json;
+    using Newtonsoft.Json.Converters;
+
+    public partial class TopLevel
+    {
+        [JsonProperty("details", Required = Required.Always)]
+        public Uri Details { get; set; }
+
+        [JsonProperty("rates", Required = Required.Always)]
+        public Rate[] Rates { get; set; }
+
+        [JsonProperty("version", Required = Required.AllowNull)]
+        public object Version { get; set; }
+    }
+
+    public partial class Rate
+    {
+        [JsonProperty("code", Required = Required.Always)]
+        public string Code { get; set; }
+
+        [JsonProperty("country_code", Required = Required.Always)]
+        public string CountryCode { get; set; }
+
+        [JsonProperty("name", Required = Required.Always)]
+        public string Name { get; set; }
+
+        [JsonProperty("periods", Required = Required.Always)]
+        public Period[] Periods { get; set; }
+    }
+
+    public partial class Period
+    {
+        [JsonProperty("effective_from", Required = Required.Always)]
+        public EffectiveFromUnion EffectiveFrom { get; set; }
+
+        [JsonProperty("rates", Required = Required.Always)]
+        public Rates Rates { get; set; }
+    }
+
+    public partial class Rates
+    {
+        [JsonProperty("parking", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public double? Parking { get; set; }
+
+        [JsonProperty("reduced", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public double? Reduced { get; set; }
+
+        [JsonProperty("reduced1", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public double? Reduced1 { get; set; }
+
+        [JsonProperty("reduced2", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public double? Reduced2 { get; set; }
+
+        [JsonProperty("standard", Required = Required.Always)]
+        public double Standard { get; set; }
+
+        [JsonProperty("super_reduced", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public double? SuperReduced { get; set; }
+    }
+
+    public enum EffectiveFromEnum { The00000101 };
+
+    public partial struct EffectiveFromUnion
+    {
+        public DateTimeOffset? DateTime;
+        public EffectiveFromEnum? Enum;
+
+        public static implicit operator EffectiveFromUnion(DateTimeOffset DateTime) => new EffectiveFromUnion { DateTime = DateTime };
+        public static implicit operator EffectiveFromUnion(EffectiveFromEnum Enum) => new EffectiveFromUnion { Enum = Enum };
+    }
+
+    public partial class TopLevel
+    {
+        public static TopLevel FromJson(string json) => JsonConvert.DeserializeObject<TopLevel>(json, QuickType.Converter.Settings);
+    }
+
+    public static partial class Serialize
+    {
+        public static string ToJson(this TopLevel self) => JsonConvert.SerializeObject(self, QuickType.Converter.Settings);
+    }
+
+    internal static partial class Converter
+    {
+        public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
+        {
+            MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
+            DateParseHandling = DateParseHandling.None,
+            Converters =
+            {
+                EffectiveFromUnionConverter.Singleton,
+                EffectiveFromEnumConverter.Singleton,
+                new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
+            },
+        };
+    }
+
+    internal class EffectiveFromUnionConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(EffectiveFromUnion) || t == typeof(EffectiveFromUnion?);
+
+        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonToken.String:
+                case JsonToken.Date:
+                    var stringValue = serializer.Deserialize<string>(reader);
+                    DateTimeOffset dt;
+                    if (DateTimeOffset.TryParse(stringValue, out dt))
+                    {
+                        return new EffectiveFromUnion { DateTime = dt };
+                    }
+                    if (stringValue == "0000-01-01")
+                    {
+                        return new EffectiveFromUnion { Enum = EffectiveFromEnum.The00000101 };
+                    }
+                    break;
+            }
+            throw new Exception("Cannot unmarshal type EffectiveFromUnion");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (EffectiveFromUnion)untypedValue;
+            if (value.DateTime != null)
+            {
+                serializer.Serialize(writer, value.DateTime.Value.ToString("o", System.Globalization.CultureInfo.InvariantCulture));
+                return;
+            }
+            if (value.Enum != null)
+            {
+                if (value.Enum == EffectiveFromEnum.The00000101)
+                {
+                    serializer.Serialize(writer, "0000-01-01");
+                    return;
+                }
+            }
+            throw new Exception("Cannot marshal type EffectiveFromUnion");
+        }
+
+        public static readonly EffectiveFromUnionConverter Singleton = new EffectiveFromUnionConverter();
+    }
+
+    internal class EffectiveFromEnumConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(EffectiveFromEnum) || t == typeof(EffectiveFromEnum?);
+
+        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
+        {
+            if (reader.TokenType == JsonToken.Null) return null;
+            var value = serializer.Deserialize<string>(reader);
+            if (value == "0000-01-01")
+            {
+                return EffectiveFromEnum.The00000101;
+            }
+            throw new Exception("Cannot unmarshal type EffectiveFromEnum");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            if (untypedValue == null)
+            {
+                serializer.Serialize(writer, null);
+                return;
+            }
+            var value = (EffectiveFromEnum)untypedValue;
+            if (value == EffectiveFromEnum.The00000101)
+            {
+                serializer.Serialize(writer, "0000-01-01");
+                return;
+            }
+            throw new Exception("Cannot marshal type EffectiveFromEnum");
+        }
+
+        public static readonly EffectiveFromEnumConverter Singleton = new EffectiveFromEnumConverter();
+    }
+}
+#pragma warning restore CS8618
+#pragma warning restore CS8601
+#pragma warning restore CS8602
+#pragma warning restore CS8603
+#pragma warning restore CS8604
+#pragma warning restore CS8625
+#pragma warning restore CS8765
diff --git a/head/csharp-SystemTextJson/test/inputs/json/misc/31189.json/default/QuickType.cs b/head/csharp-SystemTextJson/test/inputs/json/misc/31189.json/default/QuickType.cs
new file mode 100644
index 0000000..336bf34
--- /dev/null
+++ b/head/csharp-SystemTextJson/test/inputs/json/misc/31189.json/default/QuickType.cs
@@ -0,0 +1,316 @@
+// <auto-generated />
+//
+// To parse this JSON data, add NuGet 'System.Text.Json' then do:
+//
+//    using QuickType;
+//
+//    var topLevel = TopLevel.FromJson(jsonString);
+#nullable enable
+#pragma warning disable CS8618
+#pragma warning disable CS8601
+#pragma warning disable CS8602
+#pragma warning disable CS8603
+
+namespace QuickType
+{
+    using System;
+    using System.Collections.Generic;
+
+    using System.Text.Json;
+    using System.Text.Json.Serialization;
+    using System.Globalization;
+
+    public partial class TopLevel
+    {
+        [JsonRequired]
+        [JsonPropertyName("details")]
+        public Uri Details { get; set; }
+
+        [JsonRequired]
+        [JsonPropertyName("rates")]
+        public Rate[] Rates { get; set; }
+
+        [JsonRequired]
+        [JsonPropertyName("version")]
+        public object Version { get; set; }
+    }
+
+    public partial class Rate
+    {
+        [JsonRequired]
+        [JsonPropertyName("code")]
+        public string Code { get; set; }
+
+        [JsonRequired]
+        [JsonPropertyName("country_code")]
+        public string CountryCode { get; set; }
+
+        [JsonRequired]
+        [JsonPropertyName("name")]
+        public string Name { get; set; }
+
+        [JsonRequired]
+        [JsonPropertyName("periods")]
+        public Period[] Periods { get; set; }
+    }
+
+    public partial class Period
+    {
+        [JsonRequired]
+        [JsonPropertyName("effective_from")]
+        public EffectiveFromUnion EffectiveFrom { get; set; }
+
+        [JsonRequired]
+        [JsonPropertyName("rates")]
+        public Rates Rates { get; set; }
+    }
+
+    public partial class Rates
+    {
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("parking")]
+        public double? Parking { get; set; }
+
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("reduced")]
+        public double? Reduced { get; set; }
+
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("reduced1")]
+        public double? Reduced1 { get; set; }
+
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("reduced2")]
+        public double? Reduced2 { get; set; }
+
+        [JsonRequired]
+        [JsonPropertyName("standard")]
+        public double Standard { get; set; }
+
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("super_reduced")]
+        public double? SuperReduced { get; set; }
+    }
+
+    public enum EffectiveFromEnum { The00000101 };
+
+    public partial struct EffectiveFromUnion
+    {
+        public DateTimeOffset? DateTime;
+        public EffectiveFromEnum? Enum;
+
+        public static implicit operator EffectiveFromUnion(DateTimeOffset DateTime) => new EffectiveFromUnion { DateTime = DateTime };
+        public static implicit operator EffectiveFromUnion(EffectiveFromEnum Enum) => new EffectiveFromUnion { Enum = Enum };
+    }
+
+    public partial class TopLevel
+    {
+        public static TopLevel FromJson(string json) => global::System.Text.Json.JsonSerializer.Deserialize<TopLevel>(json, QuickType.Converter.Settings);
+    }
+
+    public static partial class Serialize
+    {
+        public static string ToJson(this TopLevel self) => JsonSerializer.Serialize(self, QuickType.Converter.Settings);
+    }
+
+    internal static partial class Converter
+    {
+        public static readonly JsonSerializerOptions Settings = new(JsonSerializerDefaults.General)
+        {
+            Converters =
+            {
+                EffectiveFromUnionConverter.Singleton,
+                EffectiveFromEnumConverter.Singleton,
+                new DateOnlyConverter(),
+                new TimeOnlyConverter(),
+                IsoDateTimeOffsetConverter.Singleton
+            },
+        };
+    }
+
+    internal class EffectiveFromUnionConverter : JsonConverter<EffectiveFromUnion>
+    {
+        public override bool CanConvert(Type t) => t == typeof(EffectiveFromUnion);
+
+        public override EffectiveFromUnion Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonTokenType.String:
+                    var stringValue = reader.GetString();
+                    DateTimeOffset dt;
+                    if (DateTimeOffset.TryParse(stringValue, out dt))
+                    {
+                        return new EffectiveFromUnion { DateTime = dt };
+                    }
+                    if (stringValue == "0000-01-01")
+                    {
+                        return new EffectiveFromUnion { Enum = EffectiveFromEnum.The00000101 };
+                    }
+                    break;
+            }
+            throw new JsonException("Cannot unmarshal type EffectiveFromUnion");
+        }
+
+        public override void Write(Utf8JsonWriter writer, EffectiveFromUnion value, JsonSerializerOptions options)
+        {
+            if (value.DateTime != null)
+            {
+                JsonSerializer.Serialize(writer, value.DateTime.Value.ToString("o", System.Globalization.CultureInfo.InvariantCulture), options);
+                return;
+            }
+            if (value.Enum != null)
+            {
+                if (value.Enum == EffectiveFromEnum.The00000101)
+                {
+                    JsonSerializer.Serialize(writer, "0000-01-01", options);
+                    return;
+                }
+            }
+            throw new NotSupportedException("Cannot marshal type EffectiveFromUnion");
+        }
+
+        public static readonly EffectiveFromUnionConverter Singleton = new EffectiveFromUnionConverter();
+    }
+
+    internal class EffectiveFromEnumConverter : JsonConverter<EffectiveFromEnum>
+    {
+        public override bool CanConvert(Type t) => t == typeof(EffectiveFromEnum);
+
+        public override EffectiveFromEnum Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+            var value = reader.GetString();
+            if (value == "0000-01-01")
+            {
+                return EffectiveFromEnum.The00000101;
+            }
+            throw new JsonException("Cannot unmarshal type EffectiveFromEnum");
+        }
+
+        public override void Write(Utf8JsonWriter writer, EffectiveFromEnum value, JsonSerializerOptions options)
+        {
+            if (value == EffectiveFromEnum.The00000101)
+            {
+                JsonSerializer.Serialize(writer, "0000-01-01", options);
+                return;
+            }
+            throw new NotSupportedException("Cannot marshal type EffectiveFromEnum");
+        }
+
+        public static readonly EffectiveFromEnumConverter Singleton = new EffectiveFromEnumConverter();
+    }
+    
+    public class DateOnlyConverter : JsonConverter<DateOnly>
+    {
+        private readonly string serializationFormat;
+        public DateOnlyConverter() : this(null) { }
+
+        public DateOnlyConverter(string? serializationFormat)
+        {
+                this.serializationFormat = serializationFormat ?? "yyyy-MM-dd";
+        }
+
+        public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+                var value = reader.GetString();
+                return DateOnly.Parse(value!);
+        }
+
+        public override void Write(Utf8JsonWriter writer, DateOnly value, JsonSerializerOptions options)
+                => writer.WriteStringValue(value.ToString(serializationFormat));
+    }
+
+    public class TimeOnlyConverter : JsonConverter<TimeOnly>
+    {
+        private readonly string serializationFormat;
+
+        public TimeOnlyConverter() : this(null) { }
+
+        public TimeOnlyConverter(string? serializationFormat)
+        {
+                this.serializationFormat = serializationFormat ?? "HH:mm:ss.fff";
+        }
+
+        public override TimeOnly Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+                var value = reader.GetString();
+                return TimeOnly.Parse(value!);
+        }
+
+        public override void Write(Utf8JsonWriter writer, TimeOnly value, JsonSerializerOptions options)
+                => writer.WriteStringValue(value.ToString(serializationFormat));
+    }
+
+    internal class IsoDateTimeOffsetConverter : JsonConverter<DateTimeOffset>
+    {
+        public override bool CanConvert(Type t) => t == typeof(DateTimeOffset);
+
+        private const string DefaultDateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK";
+
+        private DateTimeStyles _dateTimeStyles = DateTimeStyles.RoundtripKind;
+        private string? _dateTimeFormat;
+        private CultureInfo? _culture;
+
+        public DateTimeStyles DateTimeStyles
+        {
+                get => _dateTimeStyles;
+                set => _dateTimeStyles = value;
+        }
+
+        public string? DateTimeFormat
+        {
+                get => _dateTimeFormat ?? string.Empty;
+                set => _dateTimeFormat = (string.IsNullOrEmpty(value)) ? null : value;
+        }
+
+        public CultureInfo Culture
+        {
+                get => _culture ?? CultureInfo.CurrentCulture;
+                set => _culture = value;
+        }
+
+        public override void Write(Utf8JsonWriter writer, DateTimeOffset value, JsonSerializerOptions options)
+        {
+                string text;
+
+
+                if ((_dateTimeStyles & DateTimeStyles.AdjustToUniversal) == DateTimeStyles.AdjustToUniversal
+                        || (_dateTimeStyles & DateTimeStyles.AssumeUniversal) == DateTimeStyles.AssumeUniversal)
+                {
+                        value = value.ToUniversalTime();
+                }
+
+                text = value.ToString(_dateTimeFormat ?? DefaultDateTimeFormat, Culture);
+
+                writer.WriteStringValue(text);
+        }
+
+        public override DateTimeOffset Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+                string? dateText = reader.GetString();
+
+                if (string.IsNullOrEmpty(dateText) == false)
+                {
+                        if (!string.IsNullOrEmpty(_dateTimeFormat))
+                        {
+                                return DateTimeOffset.ParseExact(dateText, _dateTimeFormat, Culture, _dateTimeStyles);
+                        }
+                        else
+                        {
+                                return DateTimeOffset.Parse(dateText, Culture, _dateTimeStyles);
+                        }
+                }
+                else
+                {
+                        return default(DateTimeOffset);
+                }
+        }
+
+
+        public static readonly IsoDateTimeOffsetConverter Singleton = new IsoDateTimeOffsetConverter();
+    }
+}
+#pragma warning restore CS8618
+#pragma warning restore CS8601
+#pragma warning restore CS8602
+#pragma warning restore CS8603
diff --git a/head/csharp-records/test/inputs/json/misc/31189.json/default/QuickType.cs b/head/csharp-records/test/inputs/json/misc/31189.json/default/QuickType.cs
new file mode 100644
index 0000000..728ad9c
--- /dev/null
+++ b/head/csharp-records/test/inputs/json/misc/31189.json/default/QuickType.cs
@@ -0,0 +1,206 @@
+// <auto-generated />
+//
+// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do:
+//
+//    using QuickType;
+//
+//    var topLevel = TopLevel.FromJson(jsonString);
+#nullable enable
+#pragma warning disable CS8618
+#pragma warning disable CS8601
+#pragma warning disable CS8602
+#pragma warning disable CS8603
+#pragma warning disable CS8604
+#pragma warning disable CS8625
+#pragma warning disable CS8765
+
+namespace QuickType
+{
+    using System;
+    using System.Collections.Generic;
+
+    using System.Globalization;
+    using Newtonsoft.Json;
+    using Newtonsoft.Json.Converters;
+
+    public partial record TopLevel
+    {
+        [JsonProperty("details", Required = Required.Always)]
+        public Uri Details { get; set; }
+
+        [JsonProperty("rates", Required = Required.Always)]
+        public Rate[] Rates { get; set; }
+
+        [JsonProperty("version", Required = Required.AllowNull)]
+        public object Version { get; set; }
+    }
+
+    public partial record Rate
+    {
+        [JsonProperty("code", Required = Required.Always)]
+        public string Code { get; set; }
+
+        [JsonProperty("country_code", Required = Required.Always)]
+        public string CountryCode { get; set; }
+
+        [JsonProperty("name", Required = Required.Always)]
+        public string Name { get; set; }
+
+        [JsonProperty("periods", Required = Required.Always)]
+        public Period[] Periods { get; set; }
+    }
+
+    public partial record Period
+    {
+        [JsonProperty("effective_from", Required = Required.Always)]
+        public EffectiveFromUnion EffectiveFrom { get; set; }
+
+        [JsonProperty("rates", Required = Required.Always)]
+        public Rates Rates { get; set; }
+    }
+
+    public partial record Rates
+    {
+        [JsonProperty("parking", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public double? Parking { get; set; }
+
+        [JsonProperty("reduced", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public double? Reduced { get; set; }
+
+        [JsonProperty("reduced1", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public double? Reduced1 { get; set; }
+
+        [JsonProperty("reduced2", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public double? Reduced2 { get; set; }
+
+        [JsonProperty("standard", Required = Required.Always)]
+        public double Standard { get; set; }
+
+        [JsonProperty("super_reduced", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public double? SuperReduced { get; set; }
+    }
+
+    public enum EffectiveFromEnum { The00000101 };
+
+    public partial struct EffectiveFromUnion
+    {
+        public DateTimeOffset? DateTime;
+        public EffectiveFromEnum? Enum;
+
+        public static implicit operator EffectiveFromUnion(DateTimeOffset DateTime) => new EffectiveFromUnion { DateTime = DateTime };
+        public static implicit operator EffectiveFromUnion(EffectiveFromEnum Enum) => new EffectiveFromUnion { Enum = Enum };
+    }
+
+    public partial record TopLevel
+    {
+        public static TopLevel FromJson(string json) => JsonConvert.DeserializeObject<TopLevel>(json, QuickType.Converter.Settings);
+    }
+
+    public static partial class Serialize
+    {
+        public static string ToJson(this TopLevel self) => JsonConvert.SerializeObject(self, QuickType.Converter.Settings);
+    }
+
+    internal static partial class Converter
+    {
+        public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
+        {
+            MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
+            DateParseHandling = DateParseHandling.None,
+            Converters =
+            {
+                EffectiveFromUnionConverter.Singleton,
+                EffectiveFromEnumConverter.Singleton,
+                new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
+            },
+        };
+    }
+
+    internal class EffectiveFromUnionConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(EffectiveFromUnion) || t == typeof(EffectiveFromUnion?);
+
+        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonToken.String:
+                case JsonToken.Date:
+                    var stringValue = serializer.Deserialize<string>(reader);
+                    DateTimeOffset dt;
+                    if (DateTimeOffset.TryParse(stringValue, out dt))
+                    {
+                        return new EffectiveFromUnion { DateTime = dt };
+                    }
+                    if (stringValue == "0000-01-01")
+                    {
+                        return new EffectiveFromUnion { Enum = EffectiveFromEnum.The00000101 };
+                    }
+                    break;
+            }
+            throw new Exception("Cannot unmarshal type EffectiveFromUnion");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (EffectiveFromUnion)untypedValue;
+            if (value.DateTime != null)
+            {
+                serializer.Serialize(writer, value.DateTime.Value.ToString("o", System.Globalization.CultureInfo.InvariantCulture));
+                return;
+            }
+            if (value.Enum != null)
+            {
+                if (value.Enum == EffectiveFromEnum.The00000101)
+                {
+                    serializer.Serialize(writer, "0000-01-01");
+                    return;
+                }
+            }
+            throw new Exception("Cannot marshal type EffectiveFromUnion");
+        }
+
+        public static readonly EffectiveFromUnionConverter Singleton = new EffectiveFromUnionConverter();
+    }
+
+    internal class EffectiveFromEnumConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(EffectiveFromEnum) || t == typeof(EffectiveFromEnum?);
+
+        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
+        {
+            if (reader.TokenType == JsonToken.Null) return null;
+            var value = serializer.Deserialize<string>(reader);
+            if (value == "0000-01-01")
+            {
+                return EffectiveFromEnum.The00000101;
+            }
+            throw new Exception("Cannot unmarshal type EffectiveFromEnum");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            if (untypedValue == null)
+            {
+                serializer.Serialize(writer, null);
+                return;
+            }
+            var value = (EffectiveFromEnum)untypedValue;
+            if (value == EffectiveFromEnum.The00000101)
+            {
+                serializer.Serialize(writer, "0000-01-01");
+                return;
+            }
+            throw new Exception("Cannot marshal type EffectiveFromEnum");
+        }
+
+        public static readonly EffectiveFromEnumConverter Singleton = new EffectiveFromEnumConverter();
+    }
+}
+#pragma warning restore CS8618
+#pragma warning restore CS8601
+#pragma warning restore CS8602
+#pragma warning restore CS8603
+#pragma warning restore CS8604
+#pragma warning restore CS8625
+#pragma warning restore CS8765
