diff --git a/head/csharp-no-combine-classes/test/inputs/json/priority/combined-enum.json/default/QuickType.cs b/head/csharp-no-combine-classes/test/inputs/json/priority/combined-enum.json/default/QuickType.cs
new file mode 100644
index 0000000..88a9183
--- /dev/null
+++ b/head/csharp-no-combine-classes/test/inputs/json/priority/combined-enum.json/default/QuickType.cs
@@ -0,0 +1,157 @@
+// <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("bar", Required = Required.Always)]
+        public Bar[] Bar { get; set; }
+
+        [JsonProperty("foo", Required = Required.Always)]
+        public Foo[] Foo { get; set; }
+    }
+
+    public partial class Bar
+    {
+        [JsonProperty("x", Required = Required.Always)]
+        public BarX X { get; set; }
+    }
+
+    public partial class Foo
+    {
+        [JsonProperty("x", Required = Required.Always)]
+        public FooX X { get; set; }
+    }
+
+    public enum BarX { Three };
+
+    public enum FooX { One, Two };
+
+    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 =
+            {
+                BarXConverter.Singleton,
+                FooXConverter.Singleton,
+                new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
+            },
+        };
+    }
+
+    internal class BarXConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(BarX) || t == typeof(BarX?);
+
+        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 == "three")
+            {
+                return BarX.Three;
+            }
+            throw new Exception("Cannot unmarshal type BarX");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            if (untypedValue == null)
+            {
+                serializer.Serialize(writer, null);
+                return;
+            }
+            var value = (BarX)untypedValue;
+            if (value == BarX.Three)
+            {
+                serializer.Serialize(writer, "three");
+                return;
+            }
+            throw new Exception("Cannot marshal type BarX");
+        }
+
+        public static readonly BarXConverter Singleton = new BarXConverter();
+    }
+
+    internal class FooXConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(FooX) || t == typeof(FooX?);
+
+        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);
+            switch (value)
+            {
+                case "one":
+                    return FooX.One;
+                case "two":
+                    return FooX.Two;
+            }
+            throw new Exception("Cannot unmarshal type FooX");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            if (untypedValue == null)
+            {
+                serializer.Serialize(writer, null);
+                return;
+            }
+            var value = (FooX)untypedValue;
+            switch (value)
+            {
+                case FooX.One:
+                    serializer.Serialize(writer, "one");
+                    return;
+                case FooX.Two:
+                    serializer.Serialize(writer, "two");
+                    return;
+            }
+            throw new Exception("Cannot marshal type FooX");
+        }
+
+        public static readonly FooXConverter Singleton = new FooXConverter();
+    }
+}
+#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
