diff --git a/base/cjson/test/inputs/json/priority/keywords.json/default/TopLevel.c b/head/cjson/test/inputs/json/priority/keywords.json/default/TopLevel.c
index a322df5..e3f4547 100644
--- a/base/cjson/test/inputs/json/priority/keywords.json/default/TopLevel.c
+++ b/head/cjson/test/inputs/json/priority/keywords.json/default/TopLevel.c
@@ -16944,6 +16944,61 @@ void cJSON_DeleteObj4(struct Obj4 * x) {
     }
 }
 
+struct KSerializer * cJSON_ParseKSerializer(const char * s) {
+    struct KSerializer * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetKSerializerValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct KSerializer * cJSON_GetKSerializerValue(const cJSON * j) {
+    struct KSerializer * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct KSerializer)))) {
+            memset(x, 0, sizeof(struct KSerializer));
+            if (!cJSON_HasObjectItem(j, "KSerializer")) { cJSON_DeleteKSerializer(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "KSerializer")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "KSerializer"))) { cJSON_DeleteKSerializer(x); return NULL; }
+                x->k_serializer = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "KSerializer"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateKSerializer(const struct KSerializer * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "KSerializer", x->k_serializer);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintKSerializer(const struct KSerializer * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateKSerializer(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteKSerializer(struct KSerializer * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct SelfClass * cJSON_ParseSelfClass(const char * s) {
     struct SelfClass * x = NULL;
     if (NULL != s) {
@@ -18209,102 +18264,47 @@ void cJSON_DeleteUnsigned(struct Unsigned * x) {
     }
 }
 
-struct Using * cJSON_ParseUsing(const char * s) {
-    struct Using * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetUsingValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct Using * cJSON_GetUsingValue(const cJSON * j) {
-    struct Using * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Using)))) {
-            memset(x, 0, sizeof(struct Using));
-            if (!cJSON_HasObjectItem(j, "using")) { cJSON_DeleteUsing(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "using")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "using"))) { cJSON_DeleteUsing(x); return NULL; }
-                x->using_using = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "using"));
-            }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateUsing(const struct Using * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "using", x->using_using);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintUsing(const struct Using * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateUsing(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteUsing(struct Using * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
-struct Virtual * cJSON_ParseVirtual(const char * s) {
-    struct Virtual * x = NULL;
+struct PrimitiveKind * cJSON_ParsePrimitiveKind(const char * s) {
+    struct PrimitiveKind * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetVirtualValue(j);
+            x = cJSON_GetPrimitiveKindValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Virtual * cJSON_GetVirtualValue(const cJSON * j) {
-    struct Virtual * x = NULL;
+struct PrimitiveKind * cJSON_GetPrimitiveKindValue(const cJSON * j) {
+    struct PrimitiveKind * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Virtual)))) {
-            memset(x, 0, sizeof(struct Virtual));
-            if (!cJSON_HasObjectItem(j, "virtual")) { cJSON_DeleteVirtual(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "virtual")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "virtual"))) { cJSON_DeleteVirtual(x); return NULL; }
-                x->virtual_virtual = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "virtual"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct PrimitiveKind)))) {
+            memset(x, 0, sizeof(struct PrimitiveKind));
+            if (!cJSON_HasObjectItem(j, "PrimitiveKind")) { cJSON_DeletePrimitiveKind(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "PrimitiveKind")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "PrimitiveKind"))) { cJSON_DeletePrimitiveKind(x); return NULL; }
+                x->primitive_kind = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "PrimitiveKind"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateVirtual(const struct Virtual * x) {
+cJSON * cJSON_CreatePrimitiveKind(const struct PrimitiveKind * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "virtual", x->virtual_virtual);
+            cJSON_AddNumberToObject(j, "PrimitiveKind", x->primitive_kind);
         }
     }
     return j;
 }
 
-char * cJSON_PrintVirtual(const struct Virtual * x) {
+char * cJSON_PrintPrimitiveKind(const struct PrimitiveKind * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateVirtual(x);
+        cJSON * j = cJSON_CreatePrimitiveKind(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -18313,7 +18313,7 @@ char * cJSON_PrintVirtual(const struct Virtual * x) {
     return s;
 }
 
-void cJSON_DeleteVirtual(struct Virtual * x) {
+void cJSON_DeletePrimitiveKind(struct PrimitiveKind * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
@@ -18484,6 +18484,171 @@ void cJSON_DeleteSendable(struct Sendable * x) {
     }
 }
 
+struct SerialDescriptor * cJSON_ParseSerialDescriptor(const char * s) {
+    struct SerialDescriptor * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetSerialDescriptorValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct SerialDescriptor * cJSON_GetSerialDescriptorValue(const cJSON * j) {
+    struct SerialDescriptor * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct SerialDescriptor)))) {
+            memset(x, 0, sizeof(struct SerialDescriptor));
+            if (!cJSON_HasObjectItem(j, "SerialDescriptor")) { cJSON_DeleteSerialDescriptor(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "SerialDescriptor")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "SerialDescriptor"))) { cJSON_DeleteSerialDescriptor(x); return NULL; }
+                x->serial_descriptor = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "SerialDescriptor"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateSerialDescriptor(const struct SerialDescriptor * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "SerialDescriptor", x->serial_descriptor);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintSerialDescriptor(const struct SerialDescriptor * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateSerialDescriptor(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteSerialDescriptor(struct SerialDescriptor * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct SerialName * cJSON_ParseSerialName(const char * s) {
+    struct SerialName * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetSerialNameValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct SerialName * cJSON_GetSerialNameValue(const cJSON * j) {
+    struct SerialName * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct SerialName)))) {
+            memset(x, 0, sizeof(struct SerialName));
+            if (!cJSON_HasObjectItem(j, "SerialName")) { cJSON_DeleteSerialName(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "SerialName")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "SerialName"))) { cJSON_DeleteSerialName(x); return NULL; }
+                x->serial_name = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "SerialName"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateSerialName(const struct SerialName * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "SerialName", x->serial_name);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintSerialName(const struct SerialName * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateSerialName(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteSerialName(struct SerialName * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct Serializable * cJSON_ParseSerializable(const char * s) {
+    struct Serializable * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetSerializableValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct Serializable * cJSON_GetSerializableValue(const cJSON * j) {
+    struct Serializable * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct Serializable)))) {
+            memset(x, 0, sizeof(struct Serializable));
+            if (!cJSON_HasObjectItem(j, "Serializable")) { cJSON_DeleteSerializable(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "Serializable")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "Serializable"))) { cJSON_DeleteSerializable(x); return NULL; }
+                x->serializable = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "Serializable"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateSerializable(const struct Serializable * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "Serializable", x->serializable);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintSerializable(const struct Serializable * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateSerializable(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteSerializable(struct Serializable * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Serialize * cJSON_ParseSerialize(const char * s) {
     struct Serialize * x = NULL;
     if (NULL != s) {
@@ -20189,47 +20354,47 @@ void cJSON_DeleteUnsafe(struct Unsafe * x) {
     }
 }
 
-struct Ushort * cJSON_ParseUshort(const char * s) {
-    struct Ushort * x = NULL;
+struct UseSerializers * cJSON_ParseUseSerializers(const char * s) {
+    struct UseSerializers * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetUshortValue(j);
+            x = cJSON_GetUseSerializersValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Ushort * cJSON_GetUshortValue(const cJSON * j) {
-    struct Ushort * x = NULL;
+struct UseSerializers * cJSON_GetUseSerializersValue(const cJSON * j) {
+    struct UseSerializers * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Ushort)))) {
-            memset(x, 0, sizeof(struct Ushort));
-            if (!cJSON_HasObjectItem(j, "ushort")) { cJSON_DeleteUshort(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "ushort")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "ushort"))) { cJSON_DeleteUshort(x); return NULL; }
-                x->ushort = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "ushort"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct UseSerializers)))) {
+            memset(x, 0, sizeof(struct UseSerializers));
+            if (!cJSON_HasObjectItem(j, "UseSerializers")) { cJSON_DeleteUseSerializers(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "UseSerializers")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "UseSerializers"))) { cJSON_DeleteUseSerializers(x); return NULL; }
+                x->use_serializers = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "UseSerializers"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateUshort(const struct Ushort * x) {
+cJSON * cJSON_CreateUseSerializers(const struct UseSerializers * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "ushort", x->ushort);
+            cJSON_AddNumberToObject(j, "UseSerializers", x->use_serializers);
         }
     }
     return j;
 }
 
-char * cJSON_PrintUshort(const struct Ushort * x) {
+char * cJSON_PrintUseSerializers(const struct UseSerializers * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateUshort(x);
+        cJSON * j = cJSON_CreateUseSerializers(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -20238,218 +20403,53 @@ char * cJSON_PrintUshort(const struct Ushort * x) {
     return s;
 }
 
-void cJSON_DeleteUshort(struct Ushort * x) {
+void cJSON_DeleteUseSerializers(struct UseSerializers * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Utf8JsonReader * cJSON_ParseUtf8JsonReader(const char * s) {
-    struct Utf8JsonReader * x = NULL;
+struct Ushort * cJSON_ParseUshort(const char * s) {
+    struct Ushort * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetUtf8JsonReaderValue(j);
+            x = cJSON_GetUshortValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Utf8JsonReader * cJSON_GetUtf8JsonReaderValue(const cJSON * j) {
-    struct Utf8JsonReader * x = NULL;
+struct Ushort * cJSON_GetUshortValue(const cJSON * j) {
+    struct Ushort * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Utf8JsonReader)))) {
-            memset(x, 0, sizeof(struct Utf8JsonReader));
-            if (!cJSON_HasObjectItem(j, "Utf8JsonReader")) { cJSON_DeleteUtf8JsonReader(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "Utf8JsonReader")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "Utf8JsonReader"))) { cJSON_DeleteUtf8JsonReader(x); return NULL; }
-                x->utf8_json_reader = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "Utf8JsonReader"));
-            }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateUtf8JsonReader(const struct Utf8JsonReader * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "Utf8JsonReader", x->utf8_json_reader);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintUtf8JsonReader(const struct Utf8JsonReader * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateUtf8JsonReader(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteUtf8JsonReader(struct Utf8JsonReader * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
-struct Utf8JsonWriter * cJSON_ParseUtf8JsonWriter(const char * s) {
-    struct Utf8JsonWriter * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetUtf8JsonWriterValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct Utf8JsonWriter * cJSON_GetUtf8JsonWriterValue(const cJSON * j) {
-    struct Utf8JsonWriter * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Utf8JsonWriter)))) {
-            memset(x, 0, sizeof(struct Utf8JsonWriter));
-            if (!cJSON_HasObjectItem(j, "Utf8JsonWriter")) { cJSON_DeleteUtf8JsonWriter(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "Utf8JsonWriter")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "Utf8JsonWriter"))) { cJSON_DeleteUtf8JsonWriter(x); return NULL; }
-                x->utf8_json_writer = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "Utf8JsonWriter"));
-            }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateUtf8JsonWriter(const struct Utf8JsonWriter * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "Utf8JsonWriter", x->utf8_json_writer);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintUtf8JsonWriter(const struct Utf8JsonWriter * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateUtf8JsonWriter(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteUtf8JsonWriter(struct Utf8JsonWriter * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
-struct Uuid * cJSON_ParseUuid(const char * s) {
-    struct Uuid * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetUuidValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct Uuid * cJSON_GetUuidValue(const cJSON * j) {
-    struct Uuid * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Uuid)))) {
-            memset(x, 0, sizeof(struct Uuid));
-            if (!cJSON_HasObjectItem(j, "UUID")) { cJSON_DeleteUuid(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "UUID")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "UUID"))) { cJSON_DeleteUuid(x); return NULL; }
-                x->uuid = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "UUID"));
-            }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateUuid(const struct Uuid * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "UUID", x->uuid);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintUuid(const struct Uuid * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateUuid(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteUuid(struct Uuid * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
-struct Var * cJSON_ParseVar(const char * s) {
-    struct Var * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetVarValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct Var * cJSON_GetVarValue(const cJSON * j) {
-    struct Var * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Var)))) {
-            memset(x, 0, sizeof(struct Var));
-            if (!cJSON_HasObjectItem(j, "var")) { cJSON_DeleteVar(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "var")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "var"))) { cJSON_DeleteVar(x); return NULL; }
-                x->var = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "var"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Ushort)))) {
+            memset(x, 0, sizeof(struct Ushort));
+            if (!cJSON_HasObjectItem(j, "ushort")) { cJSON_DeleteUshort(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "ushort")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "ushort"))) { cJSON_DeleteUshort(x); return NULL; }
+                x->ushort = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "ushort"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateVar(const struct Var * x) {
+cJSON * cJSON_CreateUshort(const struct Ushort * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "var", x->var);
+            cJSON_AddNumberToObject(j, "ushort", x->ushort);
         }
     }
     return j;
 }
 
-char * cJSON_PrintVar(const struct Var * x) {
+char * cJSON_PrintUshort(const struct Ushort * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateVar(x);
+        cJSON * j = cJSON_CreateUshort(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -20458,7 +20458,7 @@ char * cJSON_PrintVar(const struct Var * x) {
     return s;
 }
 
-void cJSON_DeleteVar(struct Var * x) {
+void cJSON_DeleteUshort(struct Ushort * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
@@ -20486,6 +20486,12 @@ struct Obj5 * cJSON_GetObj5Value(const cJSON * j) {
                 if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "dummy"))) { cJSON_DeleteObj5(x); return NULL; }
                 x->dummy = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "dummy"));
             }
+            if (!cJSON_HasObjectItem(j, "KSerializer")) { cJSON_DeleteObj5(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "KSerializer")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "KSerializer"))) { cJSON_DeleteObj5(x); return NULL; }
+                x->k_serializer = cJSON_GetKSerializerValue(cJSON_GetObjectItemCaseSensitive(j, "KSerializer"));
+                if (NULL == x->k_serializer) { cJSON_DeleteObj5(x); return NULL; }
+            }
             if (!cJSON_HasObjectItem(j, "self")) { cJSON_DeleteObj5(x); return NULL; }
             if (cJSON_HasObjectItem(j, "self")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "self"))) { cJSON_DeleteObj5(x); return NULL; }
@@ -20624,17 +20630,11 @@ struct Obj5 * cJSON_GetObj5Value(const cJSON * j) {
                 x->obj5_unsigned = cJSON_GetUnsignedValue(cJSON_GetObjectItemCaseSensitive(j, "unsigned"));
                 if (NULL == x->obj5_unsigned) { cJSON_DeleteObj5(x); return NULL; }
             }
-            if (!cJSON_HasObjectItem(j, "using")) { cJSON_DeleteObj5(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "using")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "using"))) { cJSON_DeleteObj5(x); return NULL; }
-                x->obj5_using = cJSON_GetUsingValue(cJSON_GetObjectItemCaseSensitive(j, "using"));
-                if (NULL == x->obj5_using) { cJSON_DeleteObj5(x); return NULL; }
-            }
-            if (!cJSON_HasObjectItem(j, "virtual")) { cJSON_DeleteObj5(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "virtual")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "virtual"))) { cJSON_DeleteObj5(x); return NULL; }
-                x->obj5_virtual = cJSON_GetVirtualValue(cJSON_GetObjectItemCaseSensitive(j, "virtual"));
-                if (NULL == x->obj5_virtual) { cJSON_DeleteObj5(x); return NULL; }
+            if (!cJSON_HasObjectItem(j, "PrimitiveKind")) { cJSON_DeleteObj5(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "PrimitiveKind")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "PrimitiveKind"))) { cJSON_DeleteObj5(x); return NULL; }
+                x->primitive_kind = cJSON_GetPrimitiveKindValue(cJSON_GetObjectItemCaseSensitive(j, "PrimitiveKind"));
+                if (NULL == x->primitive_kind) { cJSON_DeleteObj5(x); return NULL; }
             }
             if (!cJSON_HasObjectItem(j, "true")) { cJSON_DeleteObj5(x); return NULL; }
             if (cJSON_HasObjectItem(j, "true")) {
@@ -20654,6 +20654,24 @@ struct Obj5 * cJSON_GetObj5Value(const cJSON * j) {
                 x->sendable = cJSON_GetSendableValue(cJSON_GetObjectItemCaseSensitive(j, "Sendable"));
                 if (NULL == x->sendable) { cJSON_DeleteObj5(x); return NULL; }
             }
+            if (!cJSON_HasObjectItem(j, "SerialDescriptor")) { cJSON_DeleteObj5(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "SerialDescriptor")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "SerialDescriptor"))) { cJSON_DeleteObj5(x); return NULL; }
+                x->serial_descriptor = cJSON_GetSerialDescriptorValue(cJSON_GetObjectItemCaseSensitive(j, "SerialDescriptor"));
+                if (NULL == x->serial_descriptor) { cJSON_DeleteObj5(x); return NULL; }
+            }
+            if (!cJSON_HasObjectItem(j, "SerialName")) { cJSON_DeleteObj5(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "SerialName")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "SerialName"))) { cJSON_DeleteObj5(x); return NULL; }
+                x->serial_name = cJSON_GetSerialNameValue(cJSON_GetObjectItemCaseSensitive(j, "SerialName"));
+                if (NULL == x->serial_name) { cJSON_DeleteObj5(x); return NULL; }
+            }
+            if (!cJSON_HasObjectItem(j, "Serializable")) { cJSON_DeleteObj5(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "Serializable")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "Serializable"))) { cJSON_DeleteObj5(x); return NULL; }
+                x->serializable = cJSON_GetSerializableValue(cJSON_GetObjectItemCaseSensitive(j, "Serializable"));
+                if (NULL == x->serializable) { cJSON_DeleteObj5(x); return NULL; }
+            }
             if (!cJSON_HasObjectItem(j, "serialize")) { cJSON_DeleteObj5(x); return NULL; }
             if (cJSON_HasObjectItem(j, "serialize")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "serialize"))) { cJSON_DeleteObj5(x); return NULL; }
@@ -20840,36 +20858,18 @@ struct Obj5 * cJSON_GetObj5Value(const cJSON * j) {
                 x->unsafe = cJSON_GetUnsafeValue(cJSON_GetObjectItemCaseSensitive(j, "unsafe"));
                 if (NULL == x->unsafe) { cJSON_DeleteObj5(x); return NULL; }
             }
+            if (!cJSON_HasObjectItem(j, "UseSerializers")) { cJSON_DeleteObj5(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "UseSerializers")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "UseSerializers"))) { cJSON_DeleteObj5(x); return NULL; }
+                x->use_serializers = cJSON_GetUseSerializersValue(cJSON_GetObjectItemCaseSensitive(j, "UseSerializers"));
+                if (NULL == x->use_serializers) { cJSON_DeleteObj5(x); return NULL; }
+            }
             if (!cJSON_HasObjectItem(j, "ushort")) { cJSON_DeleteObj5(x); return NULL; }
             if (cJSON_HasObjectItem(j, "ushort")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "ushort"))) { cJSON_DeleteObj5(x); return NULL; }
                 x->ushort = cJSON_GetUshortValue(cJSON_GetObjectItemCaseSensitive(j, "ushort"));
                 if (NULL == x->ushort) { cJSON_DeleteObj5(x); return NULL; }
             }
-            if (!cJSON_HasObjectItem(j, "Utf8JsonReader")) { cJSON_DeleteObj5(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "Utf8JsonReader")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "Utf8JsonReader"))) { cJSON_DeleteObj5(x); return NULL; }
-                x->utf8_json_reader = cJSON_GetUtf8JsonReaderValue(cJSON_GetObjectItemCaseSensitive(j, "Utf8JsonReader"));
-                if (NULL == x->utf8_json_reader) { cJSON_DeleteObj5(x); return NULL; }
-            }
-            if (!cJSON_HasObjectItem(j, "Utf8JsonWriter")) { cJSON_DeleteObj5(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "Utf8JsonWriter")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "Utf8JsonWriter"))) { cJSON_DeleteObj5(x); return NULL; }
-                x->utf8_json_writer = cJSON_GetUtf8JsonWriterValue(cJSON_GetObjectItemCaseSensitive(j, "Utf8JsonWriter"));
-                if (NULL == x->utf8_json_writer) { cJSON_DeleteObj5(x); return NULL; }
-            }
-            if (!cJSON_HasObjectItem(j, "UUID")) { cJSON_DeleteObj5(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "UUID")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "UUID"))) { cJSON_DeleteObj5(x); return NULL; }
-                x->uuid = cJSON_GetUuidValue(cJSON_GetObjectItemCaseSensitive(j, "UUID"));
-                if (NULL == x->uuid) { cJSON_DeleteObj5(x); return NULL; }
-            }
-            if (!cJSON_HasObjectItem(j, "var")) { cJSON_DeleteObj5(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "var")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "var"))) { cJSON_DeleteObj5(x); return NULL; }
-                x->var = cJSON_GetVarValue(cJSON_GetObjectItemCaseSensitive(j, "var"));
-                if (NULL == x->var) { cJSON_DeleteObj5(x); return NULL; }
-            }
         }
     }
     return x;
@@ -20880,6 +20880,7 @@ cJSON * cJSON_CreateObj5(const struct Obj5 * x) {
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
             cJSON_AddNumberToObject(j, "dummy", x->dummy);
+            cJSON_AddItemToObject(j, "KSerializer", cJSON_CreateKSerializer(x->k_serializer));
             cJSON_AddItemToObject(j, "self", cJSON_CreateSelfClass(x->obj5_self));
             cJSON_AddItemToObject(j, "short", cJSON_CreateShort(x->obj5_short));
             cJSON_AddItemToObject(j, "signed", cJSON_CreateSigned(x->obj5_signed));
@@ -20903,11 +20904,13 @@ cJSON * cJSON_CreateObj5(const struct Obj5 * x) {
             cJSON_AddItemToObject(j, "typeof", cJSON_CreateTypeof(x->obj5_typeof));
             cJSON_AddItemToObject(j, "union", cJSON_CreateUnion(x->obj5_union));
             cJSON_AddItemToObject(j, "unsigned", cJSON_CreateUnsigned(x->obj5_unsigned));
-            cJSON_AddItemToObject(j, "using", cJSON_CreateUsing(x->obj5_using));
-            cJSON_AddItemToObject(j, "virtual", cJSON_CreateVirtual(x->obj5_virtual));
+            cJSON_AddItemToObject(j, "PrimitiveKind", cJSON_CreatePrimitiveKind(x->primitive_kind));
             cJSON_AddItemToObject(j, "true", cJSON_CreateObj5True(x->purple_true));
             cJSON_AddItemToObject(j, "Self", cJSON_CreateSelf(x->self));
             cJSON_AddItemToObject(j, "Sendable", cJSON_CreateSendable(x->sendable));
+            cJSON_AddItemToObject(j, "SerialDescriptor", cJSON_CreateSerialDescriptor(x->serial_descriptor));
+            cJSON_AddItemToObject(j, "SerialName", cJSON_CreateSerialName(x->serial_name));
+            cJSON_AddItemToObject(j, "Serializable", cJSON_CreateSerializable(x->serializable));
             cJSON_AddItemToObject(j, "serialize", cJSON_CreateSerialize(x->serialize));
             cJSON_AddItemToObject(j, "SerializerProvider", cJSON_CreateSerializerProvider(x->serializer_provider));
             cJSON_AddItemToObject(j, "set", cJSON_CreateSet(x->set));
@@ -20939,11 +20942,8 @@ cJSON * cJSON_CreateObj5(const struct Obj5 * x) {
             cJSON_AddItemToObject(j, "undefined", cJSON_CreateUndefined(x->undefined));
             cJSON_AddItemToObject(j, "unowned", cJSON_CreateUnowned(x->unowned));
             cJSON_AddItemToObject(j, "unsafe", cJSON_CreateUnsafe(x->unsafe));
+            cJSON_AddItemToObject(j, "UseSerializers", cJSON_CreateUseSerializers(x->use_serializers));
             cJSON_AddItemToObject(j, "ushort", cJSON_CreateUshort(x->ushort));
-            cJSON_AddItemToObject(j, "Utf8JsonReader", cJSON_CreateUtf8JsonReader(x->utf8_json_reader));
-            cJSON_AddItemToObject(j, "Utf8JsonWriter", cJSON_CreateUtf8JsonWriter(x->utf8_json_writer));
-            cJSON_AddItemToObject(j, "UUID", cJSON_CreateUuid(x->uuid));
-            cJSON_AddItemToObject(j, "var", cJSON_CreateVar(x->var));
         }
     }
     return j;
@@ -20963,6 +20963,9 @@ char * cJSON_PrintObj5(const struct Obj5 * x) {
 
 void cJSON_DeleteObj5(struct Obj5 * x) {
     if (NULL != x) {
+        if (NULL != x->k_serializer) {
+            cJSON_DeleteKSerializer(x->k_serializer);
+        }
         if (NULL != x->obj5_self) {
             cJSON_DeleteSelfClass(x->obj5_self);
         }
@@ -21032,11 +21035,8 @@ void cJSON_DeleteObj5(struct Obj5 * x) {
         if (NULL != x->obj5_unsigned) {
             cJSON_DeleteUnsigned(x->obj5_unsigned);
         }
-        if (NULL != x->obj5_using) {
-            cJSON_DeleteUsing(x->obj5_using);
-        }
-        if (NULL != x->obj5_virtual) {
-            cJSON_DeleteVirtual(x->obj5_virtual);
+        if (NULL != x->primitive_kind) {
+            cJSON_DeletePrimitiveKind(x->primitive_kind);
         }
         if (NULL != x->purple_true) {
             cJSON_DeleteObj5True(x->purple_true);
@@ -21047,6 +21047,15 @@ void cJSON_DeleteObj5(struct Obj5 * x) {
         if (NULL != x->sendable) {
             cJSON_DeleteSendable(x->sendable);
         }
+        if (NULL != x->serial_descriptor) {
+            cJSON_DeleteSerialDescriptor(x->serial_descriptor);
+        }
+        if (NULL != x->serial_name) {
+            cJSON_DeleteSerialName(x->serial_name);
+        }
+        if (NULL != x->serializable) {
+            cJSON_DeleteSerializable(x->serializable);
+        }
         if (NULL != x->serialize) {
             cJSON_DeleteSerialize(x->serialize);
         }
@@ -21140,21 +21149,122 @@ void cJSON_DeleteObj5(struct Obj5 * x) {
         if (NULL != x->unsafe) {
             cJSON_DeleteUnsafe(x->unsafe);
         }
+        if (NULL != x->use_serializers) {
+            cJSON_DeleteUseSerializers(x->use_serializers);
+        }
         if (NULL != x->ushort) {
             cJSON_DeleteUshort(x->ushort);
         }
-        if (NULL != x->utf8_json_reader) {
-            cJSON_DeleteUtf8JsonReader(x->utf8_json_reader);
+        cJSON_free(x);
+    }
+}
+
+struct Using * cJSON_ParseUsing(const char * s) {
+    struct Using * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetUsingValue(j);
+            cJSON_Delete(j);
         }
-        if (NULL != x->utf8_json_writer) {
-            cJSON_DeleteUtf8JsonWriter(x->utf8_json_writer);
+    }
+    return x;
+}
+
+struct Using * cJSON_GetUsingValue(const cJSON * j) {
+    struct Using * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct Using)))) {
+            memset(x, 0, sizeof(struct Using));
+            if (!cJSON_HasObjectItem(j, "using")) { cJSON_DeleteUsing(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "using")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "using"))) { cJSON_DeleteUsing(x); return NULL; }
+                x->using_using = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "using"));
+            }
         }
-        if (NULL != x->uuid) {
-            cJSON_DeleteUuid(x->uuid);
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateUsing(const struct Using * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "using", x->using_using);
         }
-        if (NULL != x->var) {
-            cJSON_DeleteVar(x->var);
+    }
+    return j;
+}
+
+char * cJSON_PrintUsing(const struct Using * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateUsing(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteUsing(struct Using * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct Virtual * cJSON_ParseVirtual(const char * s) {
+    struct Virtual * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetVirtualValue(j);
+            cJSON_Delete(j);
         }
+    }
+    return x;
+}
+
+struct Virtual * cJSON_GetVirtualValue(const cJSON * j) {
+    struct Virtual * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct Virtual)))) {
+            memset(x, 0, sizeof(struct Virtual));
+            if (!cJSON_HasObjectItem(j, "virtual")) { cJSON_DeleteVirtual(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "virtual")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "virtual"))) { cJSON_DeleteVirtual(x); return NULL; }
+                x->virtual_virtual = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "virtual"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateVirtual(const struct Virtual * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "virtual", x->virtual_virtual);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintVirtual(const struct Virtual * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateVirtual(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteVirtual(struct Virtual * x) {
+    if (NULL != x) {
         cJSON_free(x);
     }
 }
@@ -21489,6 +21599,226 @@ void cJSON_DeleteXorEq(struct XorEq * x) {
     }
 }
 
+struct Utf8JsonReader * cJSON_ParseUtf8JsonReader(const char * s) {
+    struct Utf8JsonReader * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetUtf8JsonReaderValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct Utf8JsonReader * cJSON_GetUtf8JsonReaderValue(const cJSON * j) {
+    struct Utf8JsonReader * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct Utf8JsonReader)))) {
+            memset(x, 0, sizeof(struct Utf8JsonReader));
+            if (!cJSON_HasObjectItem(j, "Utf8JsonReader")) { cJSON_DeleteUtf8JsonReader(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "Utf8JsonReader")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "Utf8JsonReader"))) { cJSON_DeleteUtf8JsonReader(x); return NULL; }
+                x->utf8_json_reader = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "Utf8JsonReader"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateUtf8JsonReader(const struct Utf8JsonReader * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "Utf8JsonReader", x->utf8_json_reader);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintUtf8JsonReader(const struct Utf8JsonReader * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateUtf8JsonReader(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteUtf8JsonReader(struct Utf8JsonReader * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct Utf8JsonWriter * cJSON_ParseUtf8JsonWriter(const char * s) {
+    struct Utf8JsonWriter * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetUtf8JsonWriterValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct Utf8JsonWriter * cJSON_GetUtf8JsonWriterValue(const cJSON * j) {
+    struct Utf8JsonWriter * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct Utf8JsonWriter)))) {
+            memset(x, 0, sizeof(struct Utf8JsonWriter));
+            if (!cJSON_HasObjectItem(j, "Utf8JsonWriter")) { cJSON_DeleteUtf8JsonWriter(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "Utf8JsonWriter")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "Utf8JsonWriter"))) { cJSON_DeleteUtf8JsonWriter(x); return NULL; }
+                x->utf8_json_writer = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "Utf8JsonWriter"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateUtf8JsonWriter(const struct Utf8JsonWriter * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "Utf8JsonWriter", x->utf8_json_writer);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintUtf8JsonWriter(const struct Utf8JsonWriter * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateUtf8JsonWriter(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteUtf8JsonWriter(struct Utf8JsonWriter * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct Uuid * cJSON_ParseUuid(const char * s) {
+    struct Uuid * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetUuidValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct Uuid * cJSON_GetUuidValue(const cJSON * j) {
+    struct Uuid * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct Uuid)))) {
+            memset(x, 0, sizeof(struct Uuid));
+            if (!cJSON_HasObjectItem(j, "UUID")) { cJSON_DeleteUuid(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "UUID")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "UUID"))) { cJSON_DeleteUuid(x); return NULL; }
+                x->uuid = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "UUID"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateUuid(const struct Uuid * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "UUID", x->uuid);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintUuid(const struct Uuid * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateUuid(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteUuid(struct Uuid * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct Var * cJSON_ParseVar(const char * s) {
+    struct Var * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetVarValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct Var * cJSON_GetVarValue(const cJSON * j) {
+    struct Var * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct Var)))) {
+            memset(x, 0, sizeof(struct Var));
+            if (!cJSON_HasObjectItem(j, "var")) { cJSON_DeleteVar(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "var")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "var"))) { cJSON_DeleteVar(x); return NULL; }
+                x->var = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "var"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateVar(const struct Var * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "var", x->var);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintVar(const struct Var * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateVar(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteVar(struct Var * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Weak * cJSON_ParseWeak(const char * s) {
     struct Weak * x = NULL;
     if (NULL != s) {
@@ -21841,6 +22171,18 @@ struct Obj6 * cJSON_GetObj6Value(const cJSON * j) {
                 if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "dummy"))) { cJSON_DeleteObj6(x); return NULL; }
                 x->dummy = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "dummy"));
             }
+            if (!cJSON_HasObjectItem(j, "using")) { cJSON_DeleteObj6(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "using")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "using"))) { cJSON_DeleteObj6(x); return NULL; }
+                x->obj6_using = cJSON_GetUsingValue(cJSON_GetObjectItemCaseSensitive(j, "using"));
+                if (NULL == x->obj6_using) { cJSON_DeleteObj6(x); return NULL; }
+            }
+            if (!cJSON_HasObjectItem(j, "virtual")) { cJSON_DeleteObj6(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "virtual")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "virtual"))) { cJSON_DeleteObj6(x); return NULL; }
+                x->obj6_virtual = cJSON_GetVirtualValue(cJSON_GetObjectItemCaseSensitive(j, "virtual"));
+                if (NULL == x->obj6_virtual) { cJSON_DeleteObj6(x); return NULL; }
+            }
             if (!cJSON_HasObjectItem(j, "void")) { cJSON_DeleteObj6(x); return NULL; }
             if (cJSON_HasObjectItem(j, "void")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "void"))) { cJSON_DeleteObj6(x); return NULL; }
@@ -21877,6 +22219,30 @@ struct Obj6 * cJSON_GetObj6Value(const cJSON * j) {
                 x->obj6_xor_eq = cJSON_GetXorEqValue(cJSON_GetObjectItemCaseSensitive(j, "xor_eq"));
                 if (NULL == x->obj6_xor_eq) { cJSON_DeleteObj6(x); return NULL; }
             }
+            if (!cJSON_HasObjectItem(j, "Utf8JsonReader")) { cJSON_DeleteObj6(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "Utf8JsonReader")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "Utf8JsonReader"))) { cJSON_DeleteObj6(x); return NULL; }
+                x->utf8_json_reader = cJSON_GetUtf8JsonReaderValue(cJSON_GetObjectItemCaseSensitive(j, "Utf8JsonReader"));
+                if (NULL == x->utf8_json_reader) { cJSON_DeleteObj6(x); return NULL; }
+            }
+            if (!cJSON_HasObjectItem(j, "Utf8JsonWriter")) { cJSON_DeleteObj6(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "Utf8JsonWriter")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "Utf8JsonWriter"))) { cJSON_DeleteObj6(x); return NULL; }
+                x->utf8_json_writer = cJSON_GetUtf8JsonWriterValue(cJSON_GetObjectItemCaseSensitive(j, "Utf8JsonWriter"));
+                if (NULL == x->utf8_json_writer) { cJSON_DeleteObj6(x); return NULL; }
+            }
+            if (!cJSON_HasObjectItem(j, "UUID")) { cJSON_DeleteObj6(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "UUID")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "UUID"))) { cJSON_DeleteObj6(x); return NULL; }
+                x->uuid = cJSON_GetUuidValue(cJSON_GetObjectItemCaseSensitive(j, "UUID"));
+                if (NULL == x->uuid) { cJSON_DeleteObj6(x); return NULL; }
+            }
+            if (!cJSON_HasObjectItem(j, "var")) { cJSON_DeleteObj6(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "var")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "var"))) { cJSON_DeleteObj6(x); return NULL; }
+                x->var = cJSON_GetVarValue(cJSON_GetObjectItemCaseSensitive(j, "var"));
+                if (NULL == x->var) { cJSON_DeleteObj6(x); return NULL; }
+            }
             if (!cJSON_HasObjectItem(j, "weak")) { cJSON_DeleteObj6(x); return NULL; }
             if (cJSON_HasObjectItem(j, "weak")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "weak"))) { cJSON_DeleteObj6(x); return NULL; }
@@ -21923,12 +22289,18 @@ cJSON * cJSON_CreateObj6(const struct Obj6 * x) {
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
             cJSON_AddNumberToObject(j, "dummy", x->dummy);
+            cJSON_AddItemToObject(j, "using", cJSON_CreateUsing(x->obj6_using));
+            cJSON_AddItemToObject(j, "virtual", cJSON_CreateVirtual(x->obj6_virtual));
             cJSON_AddItemToObject(j, "void", cJSON_CreateVoid(x->obj6_void));
             cJSON_AddItemToObject(j, "volatile", cJSON_CreateVolatile(x->obj6_volatile));
             cJSON_AddItemToObject(j, "wchar_t", cJSON_CreateWcharT(x->obj6_wchar_t));
             cJSON_AddItemToObject(j, "while", cJSON_CreateWhile(x->obj6_while));
             cJSON_AddItemToObject(j, "xor", cJSON_CreateXor(x->obj6_xor));
             cJSON_AddItemToObject(j, "xor_eq", cJSON_CreateXorEq(x->obj6_xor_eq));
+            cJSON_AddItemToObject(j, "Utf8JsonReader", cJSON_CreateUtf8JsonReader(x->utf8_json_reader));
+            cJSON_AddItemToObject(j, "Utf8JsonWriter", cJSON_CreateUtf8JsonWriter(x->utf8_json_writer));
+            cJSON_AddItemToObject(j, "UUID", cJSON_CreateUuid(x->uuid));
+            cJSON_AddItemToObject(j, "var", cJSON_CreateVar(x->var));
             cJSON_AddItemToObject(j, "weak", cJSON_CreateWeak(x->weak));
             cJSON_AddItemToObject(j, "where", cJSON_CreateWhere(x->where));
             cJSON_AddItemToObject(j, "willSet", cJSON_CreateWillSet(x->will_set));
@@ -21954,6 +22326,12 @@ char * cJSON_PrintObj6(const struct Obj6 * x) {
 
 void cJSON_DeleteObj6(struct Obj6 * x) {
     if (NULL != x) {
+        if (NULL != x->obj6_using) {
+            cJSON_DeleteUsing(x->obj6_using);
+        }
+        if (NULL != x->obj6_virtual) {
+            cJSON_DeleteVirtual(x->obj6_virtual);
+        }
         if (NULL != x->obj6_void) {
             cJSON_DeleteVoid(x->obj6_void);
         }
@@ -21972,6 +22350,18 @@ void cJSON_DeleteObj6(struct Obj6 * x) {
         if (NULL != x->obj6_xor_eq) {
             cJSON_DeleteXorEq(x->obj6_xor_eq);
         }
+        if (NULL != x->utf8_json_reader) {
+            cJSON_DeleteUtf8JsonReader(x->utf8_json_reader);
+        }
+        if (NULL != x->utf8_json_writer) {
+            cJSON_DeleteUtf8JsonWriter(x->utf8_json_writer);
+        }
+        if (NULL != x->uuid) {
+            cJSON_DeleteUuid(x->uuid);
+        }
+        if (NULL != x->var) {
+            cJSON_DeleteVar(x->var);
+        }
         if (NULL != x->weak) {
             cJSON_DeleteWeak(x->weak);
         }
diff --git a/base/cjson/test/inputs/json/priority/keywords.json/default/TopLevel.h b/head/cjson/test/inputs/json/priority/keywords.json/default/TopLevel.h
index 0773886..ebd4174 100644
--- a/base/cjson/test/inputs/json/priority/keywords.json/default/TopLevel.h
+++ b/head/cjson/test/inputs/json/priority/keywords.json/default/TopLevel.h
@@ -1349,6 +1349,10 @@ struct Obj4 {
     struct Select * select;
 };
 
+struct KSerializer {
+    int64_t k_serializer;
+};
+
 struct SelfClass {
     int64_t self;
 };
@@ -1441,12 +1445,8 @@ struct Unsigned {
     int64_t unsigned_unsigned;
 };
 
-struct Using {
-    int64_t using_using;
-};
-
-struct Virtual {
-    int64_t virtual_virtual;
+struct PrimitiveKind {
+    int64_t primitive_kind;
 };
 
 struct Obj5True {
@@ -1461,6 +1461,18 @@ struct Sendable {
     int64_t sendable;
 };
 
+struct SerialDescriptor {
+    int64_t serial_descriptor;
+};
+
+struct SerialName {
+    int64_t serial_name;
+};
+
+struct Serializable {
+    int64_t serializable;
+};
+
 struct Serialize {
     int64_t serialize;
 };
@@ -1585,28 +1597,17 @@ struct Unsafe {
     int64_t unsafe;
 };
 
-struct Ushort {
-    int64_t ushort;
+struct UseSerializers {
+    int64_t use_serializers;
 };
 
-struct Utf8JsonReader {
-    int64_t utf8_json_reader;
-};
-
-struct Utf8JsonWriter {
-    int64_t utf8_json_writer;
-};
-
-struct Uuid {
-    int64_t uuid;
-};
-
-struct Var {
-    int64_t var;
+struct Ushort {
+    int64_t ushort;
 };
 
 struct Obj5 {
     int64_t dummy;
+    struct KSerializer * k_serializer;
     struct SelfClass * obj5_self;
     struct Short * obj5_short;
     struct Signed * obj5_signed;
@@ -1630,11 +1631,13 @@ struct Obj5 {
     struct Typeof * obj5_typeof;
     struct Union * obj5_union;
     struct Unsigned * obj5_unsigned;
-    struct Using * obj5_using;
-    struct Virtual * obj5_virtual;
+    struct PrimitiveKind * primitive_kind;
     struct Obj5True * purple_true;
     struct Self * self;
     struct Sendable * sendable;
+    struct SerialDescriptor * serial_descriptor;
+    struct SerialName * serial_name;
+    struct Serializable * serializable;
     struct Serialize * serialize;
     struct SerializerProvider * serializer_provider;
     struct Set * set;
@@ -1666,11 +1669,16 @@ struct Obj5 {
     struct Undefined * undefined;
     struct Unowned * unowned;
     struct Unsafe * unsafe;
+    struct UseSerializers * use_serializers;
     struct Ushort * ushort;
-    struct Utf8JsonReader * utf8_json_reader;
-    struct Utf8JsonWriter * utf8_json_writer;
-    struct Uuid * uuid;
-    struct Var * var;
+};
+
+struct Using {
+    int64_t using_using;
+};
+
+struct Virtual {
+    int64_t virtual_virtual;
 };
 
 struct Void {
@@ -1697,6 +1705,22 @@ struct XorEq {
     int64_t xor_eq_xor_eq;
 };
 
+struct Utf8JsonReader {
+    int64_t utf8_json_reader;
+};
+
+struct Utf8JsonWriter {
+    int64_t utf8_json_writer;
+};
+
+struct Uuid {
+    int64_t uuid;
+};
+
+struct Var {
+    int64_t var;
+};
+
 struct Weak {
     int64_t weak;
 };
@@ -1723,12 +1747,18 @@ struct Yield {
 
 struct Obj6 {
     int64_t dummy;
+    struct Using * obj6_using;
+    struct Virtual * obj6_virtual;
     struct Void * obj6_void;
     struct Volatile * obj6_volatile;
     struct WcharT * obj6_wchar_t;
     struct While * obj6_while;
     struct Xor * obj6_xor;
     struct XorEq * obj6_xor_eq;
+    struct Utf8JsonReader * utf8_json_reader;
+    struct Utf8JsonWriter * utf8_json_writer;
+    struct Uuid * uuid;
+    struct Var * var;
     struct Weak * weak;
     struct Where * where;
     struct WillSet * will_set;
@@ -3310,6 +3340,12 @@ cJSON * cJSON_CreateObj4(const struct Obj4 * x);
 char * cJSON_PrintObj4(const struct Obj4 * x);
 void cJSON_DeleteObj4(struct Obj4 * x);
 
+struct KSerializer * cJSON_ParseKSerializer(const char * s);
+struct KSerializer * cJSON_GetKSerializerValue(const cJSON * j);
+cJSON * cJSON_CreateKSerializer(const struct KSerializer * x);
+char * cJSON_PrintKSerializer(const struct KSerializer * x);
+void cJSON_DeleteKSerializer(struct KSerializer * x);
+
 struct SelfClass * cJSON_ParseSelfClass(const char * s);
 struct SelfClass * cJSON_GetSelfClassValue(const cJSON * j);
 cJSON * cJSON_CreateSelfClass(const struct SelfClass * x);
@@ -3448,17 +3484,11 @@ cJSON * cJSON_CreateUnsigned(const struct Unsigned * x);
 char * cJSON_PrintUnsigned(const struct Unsigned * x);
 void cJSON_DeleteUnsigned(struct Unsigned * x);
 
-struct Using * cJSON_ParseUsing(const char * s);
-struct Using * cJSON_GetUsingValue(const cJSON * j);
-cJSON * cJSON_CreateUsing(const struct Using * x);
-char * cJSON_PrintUsing(const struct Using * x);
-void cJSON_DeleteUsing(struct Using * x);
-
-struct Virtual * cJSON_ParseVirtual(const char * s);
-struct Virtual * cJSON_GetVirtualValue(const cJSON * j);
-cJSON * cJSON_CreateVirtual(const struct Virtual * x);
-char * cJSON_PrintVirtual(const struct Virtual * x);
-void cJSON_DeleteVirtual(struct Virtual * x);
+struct PrimitiveKind * cJSON_ParsePrimitiveKind(const char * s);
+struct PrimitiveKind * cJSON_GetPrimitiveKindValue(const cJSON * j);
+cJSON * cJSON_CreatePrimitiveKind(const struct PrimitiveKind * x);
+char * cJSON_PrintPrimitiveKind(const struct PrimitiveKind * x);
+void cJSON_DeletePrimitiveKind(struct PrimitiveKind * x);
 
 struct Obj5True * cJSON_ParseObj5True(const char * s);
 struct Obj5True * cJSON_GetObj5TrueValue(const cJSON * j);
@@ -3478,6 +3508,24 @@ cJSON * cJSON_CreateSendable(const struct Sendable * x);
 char * cJSON_PrintSendable(const struct Sendable * x);
 void cJSON_DeleteSendable(struct Sendable * x);
 
+struct SerialDescriptor * cJSON_ParseSerialDescriptor(const char * s);
+struct SerialDescriptor * cJSON_GetSerialDescriptorValue(const cJSON * j);
+cJSON * cJSON_CreateSerialDescriptor(const struct SerialDescriptor * x);
+char * cJSON_PrintSerialDescriptor(const struct SerialDescriptor * x);
+void cJSON_DeleteSerialDescriptor(struct SerialDescriptor * x);
+
+struct SerialName * cJSON_ParseSerialName(const char * s);
+struct SerialName * cJSON_GetSerialNameValue(const cJSON * j);
+cJSON * cJSON_CreateSerialName(const struct SerialName * x);
+char * cJSON_PrintSerialName(const struct SerialName * x);
+void cJSON_DeleteSerialName(struct SerialName * x);
+
+struct Serializable * cJSON_ParseSerializable(const char * s);
+struct Serializable * cJSON_GetSerializableValue(const cJSON * j);
+cJSON * cJSON_CreateSerializable(const struct Serializable * x);
+char * cJSON_PrintSerializable(const struct Serializable * x);
+void cJSON_DeleteSerializable(struct Serializable * x);
+
 struct Serialize * cJSON_ParseSerialize(const char * s);
 struct Serialize * cJSON_GetSerializeValue(const cJSON * j);
 cJSON * cJSON_CreateSerialize(const struct Serialize * x);
@@ -3664,42 +3712,36 @@ cJSON * cJSON_CreateUnsafe(const struct Unsafe * x);
 char * cJSON_PrintUnsafe(const struct Unsafe * x);
 void cJSON_DeleteUnsafe(struct Unsafe * x);
 
+struct UseSerializers * cJSON_ParseUseSerializers(const char * s);
+struct UseSerializers * cJSON_GetUseSerializersValue(const cJSON * j);
+cJSON * cJSON_CreateUseSerializers(const struct UseSerializers * x);
+char * cJSON_PrintUseSerializers(const struct UseSerializers * x);
+void cJSON_DeleteUseSerializers(struct UseSerializers * x);
+
 struct Ushort * cJSON_ParseUshort(const char * s);
 struct Ushort * cJSON_GetUshortValue(const cJSON * j);
 cJSON * cJSON_CreateUshort(const struct Ushort * x);
 char * cJSON_PrintUshort(const struct Ushort * x);
 void cJSON_DeleteUshort(struct Ushort * x);
 
-struct Utf8JsonReader * cJSON_ParseUtf8JsonReader(const char * s);
-struct Utf8JsonReader * cJSON_GetUtf8JsonReaderValue(const cJSON * j);
-cJSON * cJSON_CreateUtf8JsonReader(const struct Utf8JsonReader * x);
-char * cJSON_PrintUtf8JsonReader(const struct Utf8JsonReader * x);
-void cJSON_DeleteUtf8JsonReader(struct Utf8JsonReader * x);
-
-struct Utf8JsonWriter * cJSON_ParseUtf8JsonWriter(const char * s);
-struct Utf8JsonWriter * cJSON_GetUtf8JsonWriterValue(const cJSON * j);
-cJSON * cJSON_CreateUtf8JsonWriter(const struct Utf8JsonWriter * x);
-char * cJSON_PrintUtf8JsonWriter(const struct Utf8JsonWriter * x);
-void cJSON_DeleteUtf8JsonWriter(struct Utf8JsonWriter * x);
-
-struct Uuid * cJSON_ParseUuid(const char * s);
-struct Uuid * cJSON_GetUuidValue(const cJSON * j);
-cJSON * cJSON_CreateUuid(const struct Uuid * x);
-char * cJSON_PrintUuid(const struct Uuid * x);
-void cJSON_DeleteUuid(struct Uuid * x);
-
-struct Var * cJSON_ParseVar(const char * s);
-struct Var * cJSON_GetVarValue(const cJSON * j);
-cJSON * cJSON_CreateVar(const struct Var * x);
-char * cJSON_PrintVar(const struct Var * x);
-void cJSON_DeleteVar(struct Var * x);
-
 struct Obj5 * cJSON_ParseObj5(const char * s);
 struct Obj5 * cJSON_GetObj5Value(const cJSON * j);
 cJSON * cJSON_CreateObj5(const struct Obj5 * x);
 char * cJSON_PrintObj5(const struct Obj5 * x);
 void cJSON_DeleteObj5(struct Obj5 * x);
 
+struct Using * cJSON_ParseUsing(const char * s);
+struct Using * cJSON_GetUsingValue(const cJSON * j);
+cJSON * cJSON_CreateUsing(const struct Using * x);
+char * cJSON_PrintUsing(const struct Using * x);
+void cJSON_DeleteUsing(struct Using * x);
+
+struct Virtual * cJSON_ParseVirtual(const char * s);
+struct Virtual * cJSON_GetVirtualValue(const cJSON * j);
+cJSON * cJSON_CreateVirtual(const struct Virtual * x);
+char * cJSON_PrintVirtual(const struct Virtual * x);
+void cJSON_DeleteVirtual(struct Virtual * x);
+
 struct Void * cJSON_ParseVoid(const char * s);
 struct Void * cJSON_GetVoidValue(const cJSON * j);
 cJSON * cJSON_CreateVoid(const struct Void * x);
@@ -3736,6 +3778,30 @@ cJSON * cJSON_CreateXorEq(const struct XorEq * x);
 char * cJSON_PrintXorEq(const struct XorEq * x);
 void cJSON_DeleteXorEq(struct XorEq * x);
 
+struct Utf8JsonReader * cJSON_ParseUtf8JsonReader(const char * s);
+struct Utf8JsonReader * cJSON_GetUtf8JsonReaderValue(const cJSON * j);
+cJSON * cJSON_CreateUtf8JsonReader(const struct Utf8JsonReader * x);
+char * cJSON_PrintUtf8JsonReader(const struct Utf8JsonReader * x);
+void cJSON_DeleteUtf8JsonReader(struct Utf8JsonReader * x);
+
+struct Utf8JsonWriter * cJSON_ParseUtf8JsonWriter(const char * s);
+struct Utf8JsonWriter * cJSON_GetUtf8JsonWriterValue(const cJSON * j);
+cJSON * cJSON_CreateUtf8JsonWriter(const struct Utf8JsonWriter * x);
+char * cJSON_PrintUtf8JsonWriter(const struct Utf8JsonWriter * x);
+void cJSON_DeleteUtf8JsonWriter(struct Utf8JsonWriter * x);
+
+struct Uuid * cJSON_ParseUuid(const char * s);
+struct Uuid * cJSON_GetUuidValue(const cJSON * j);
+cJSON * cJSON_CreateUuid(const struct Uuid * x);
+char * cJSON_PrintUuid(const struct Uuid * x);
+void cJSON_DeleteUuid(struct Uuid * x);
+
+struct Var * cJSON_ParseVar(const char * s);
+struct Var * cJSON_GetVarValue(const cJSON * j);
+cJSON * cJSON_CreateVar(const struct Var * x);
+char * cJSON_PrintVar(const struct Var * x);
+void cJSON_DeleteVar(struct Var * x);
+
 struct Weak * cJSON_ParseWeak(const char * s);
 struct Weak * cJSON_GetWeakValue(const cJSON * j);
 cJSON * cJSON_CreateWeak(const struct Weak * x);
diff --git a/base/cplusplus/test/inputs/json/priority/keywords.json/default/quicktype.hpp b/head/cplusplus/test/inputs/json/priority/keywords.json/default/quicktype.hpp
index a810ee5..db67bbe 100644
--- a/base/cplusplus/test/inputs/json/priority/keywords.json/default/quicktype.hpp
+++ b/head/cplusplus/test/inputs/json/priority/keywords.json/default/quicktype.hpp
@@ -4953,6 +4953,20 @@ namespace quicktype {
         void set_select(const Select & value) { this->select = value; }
     };
 
+    class KSerializer {
+        public:
+        KSerializer() = default;
+        virtual ~KSerializer() = default;
+
+        private:
+        int64_t k_serializer;
+
+        public:
+        const int64_t & get_k_serializer() const { return k_serializer; }
+        int64_t & get_mutable_k_serializer() { return k_serializer; }
+        void set_k_serializer(const int64_t & value) { this->k_serializer = value; }
+    };
+
     class SelfClass {
         public:
         SelfClass() = default;
@@ -5261,32 +5275,18 @@ namespace quicktype {
         void set_unsigned_unsigned(const int64_t & value) { this->unsigned_unsigned = value; }
     };
 
-    class Using {
-        public:
-        Using() = default;
-        virtual ~Using() = default;
-
-        private:
-        int64_t using_using;
-
-        public:
-        const int64_t & get_using_using() const { return using_using; }
-        int64_t & get_mutable_using_using() { return using_using; }
-        void set_using_using(const int64_t & value) { this->using_using = value; }
-    };
-
-    class Virtual {
+    class PrimitiveKind {
         public:
-        Virtual() = default;
-        virtual ~Virtual() = default;
+        PrimitiveKind() = default;
+        virtual ~PrimitiveKind() = default;
 
         private:
-        int64_t virtual_virtual;
+        int64_t primitive_kind;
 
         public:
-        const int64_t & get_virtual_virtual() const { return virtual_virtual; }
-        int64_t & get_mutable_virtual_virtual() { return virtual_virtual; }
-        void set_virtual_virtual(const int64_t & value) { this->virtual_virtual = value; }
+        const int64_t & get_primitive_kind() const { return primitive_kind; }
+        int64_t & get_mutable_primitive_kind() { return primitive_kind; }
+        void set_primitive_kind(const int64_t & value) { this->primitive_kind = value; }
     };
 
     class TrueClass {
@@ -5331,6 +5331,48 @@ namespace quicktype {
         void set_sendable(const int64_t & value) { this->sendable = value; }
     };
 
+    class SerialDescriptor {
+        public:
+        SerialDescriptor() = default;
+        virtual ~SerialDescriptor() = default;
+
+        private:
+        int64_t serial_descriptor;
+
+        public:
+        const int64_t & get_serial_descriptor() const { return serial_descriptor; }
+        int64_t & get_mutable_serial_descriptor() { return serial_descriptor; }
+        void set_serial_descriptor(const int64_t & value) { this->serial_descriptor = value; }
+    };
+
+    class SerialName {
+        public:
+        SerialName() = default;
+        virtual ~SerialName() = default;
+
+        private:
+        int64_t serial_name;
+
+        public:
+        const int64_t & get_serial_name() const { return serial_name; }
+        int64_t & get_mutable_serial_name() { return serial_name; }
+        void set_serial_name(const int64_t & value) { this->serial_name = value; }
+    };
+
+    class Serializable {
+        public:
+        Serializable() = default;
+        virtual ~Serializable() = default;
+
+        private:
+        int64_t serializable;
+
+        public:
+        const int64_t & get_serializable() const { return serializable; }
+        int64_t & get_mutable_serializable() { return serializable; }
+        void set_serializable(const int64_t & value) { this->serializable = value; }
+    };
+
     class Serialize {
         public:
         Serialize() = default;
@@ -5779,74 +5821,32 @@ namespace quicktype {
         void set_unsafe(const int64_t & value) { this->unsafe = value; }
     };
 
-    class Ushort {
-        public:
-        Ushort() = default;
-        virtual ~Ushort() = default;
-
-        private:
-        int64_t ushort;
-
-        public:
-        const int64_t & get_ushort() const { return ushort; }
-        int64_t & get_mutable_ushort() { return ushort; }
-        void set_ushort(const int64_t & value) { this->ushort = value; }
-    };
-
-    class Utf8JsonReader {
-        public:
-        Utf8JsonReader() = default;
-        virtual ~Utf8JsonReader() = default;
-
-        private:
-        int64_t utf8_json_reader;
-
-        public:
-        const int64_t & get_utf8_json_reader() const { return utf8_json_reader; }
-        int64_t & get_mutable_utf8_json_reader() { return utf8_json_reader; }
-        void set_utf8_json_reader(const int64_t & value) { this->utf8_json_reader = value; }
-    };
-
-    class Utf8JsonWriter {
-        public:
-        Utf8JsonWriter() = default;
-        virtual ~Utf8JsonWriter() = default;
-
-        private:
-        int64_t utf8_json_writer;
-
-        public:
-        const int64_t & get_utf8_json_writer() const { return utf8_json_writer; }
-        int64_t & get_mutable_utf8_json_writer() { return utf8_json_writer; }
-        void set_utf8_json_writer(const int64_t & value) { this->utf8_json_writer = value; }
-    };
-
-    class Uuid {
+    class UseSerializers {
         public:
-        Uuid() = default;
-        virtual ~Uuid() = default;
+        UseSerializers() = default;
+        virtual ~UseSerializers() = default;
 
         private:
-        int64_t uuid;
+        int64_t use_serializers;
 
         public:
-        const int64_t & get_uuid() const { return uuid; }
-        int64_t & get_mutable_uuid() { return uuid; }
-        void set_uuid(const int64_t & value) { this->uuid = value; }
+        const int64_t & get_use_serializers() const { return use_serializers; }
+        int64_t & get_mutable_use_serializers() { return use_serializers; }
+        void set_use_serializers(const int64_t & value) { this->use_serializers = value; }
     };
 
-    class Var {
+    class Ushort {
         public:
-        Var() = default;
-        virtual ~Var() = default;
+        Ushort() = default;
+        virtual ~Ushort() = default;
 
         private:
-        int64_t var;
+        int64_t ushort;
 
         public:
-        const int64_t & get_var() const { return var; }
-        int64_t & get_mutable_var() { return var; }
-        void set_var(const int64_t & value) { this->var = value; }
+        const int64_t & get_ushort() const { return ushort; }
+        int64_t & get_mutable_ushort() { return ushort; }
+        void set_ushort(const int64_t & value) { this->ushort = value; }
     };
 
     class Obj5 {
@@ -5856,6 +5856,7 @@ namespace quicktype {
 
         private:
         int64_t dummy;
+        KSerializer k_serializer;
         SelfClass obj5_self;
         Short obj5_short;
         Signed obj5_signed;
@@ -5878,11 +5879,13 @@ namespace quicktype {
         Typename obj5_typename;
         Union obj5_union;
         Unsigned obj5_unsigned;
-        Using obj5_using;
-        Virtual obj5_virtual;
+        PrimitiveKind primitive_kind;
         TrueClass purple_true;
         Self self;
         Sendable sendable;
+        SerialDescriptor serial_descriptor;
+        SerialName serial_name;
+        Serializable serializable;
         Serialize serialize;
         SerializerProvider serializer_provider;
         Set set;
@@ -5915,17 +5918,18 @@ namespace quicktype {
         Undefined undefined;
         Unowned unowned;
         Unsafe unsafe;
+        UseSerializers use_serializers;
         Ushort ushort;
-        Utf8JsonReader utf8_json_reader;
-        Utf8JsonWriter utf8_json_writer;
-        Uuid uuid;
-        Var var;
 
         public:
         const int64_t & get_dummy() const { return dummy; }
         int64_t & get_mutable_dummy() { return dummy; }
         void set_dummy(const int64_t & value) { this->dummy = value; }
 
+        const KSerializer & get_k_serializer() const { return k_serializer; }
+        KSerializer & get_mutable_k_serializer() { return k_serializer; }
+        void set_k_serializer(const KSerializer & value) { this->k_serializer = value; }
+
         const SelfClass & get_obj5_self() const { return obj5_self; }
         SelfClass & get_mutable_obj5_self() { return obj5_self; }
         void set_obj5_self(const SelfClass & value) { this->obj5_self = value; }
@@ -6014,13 +6018,9 @@ namespace quicktype {
         Unsigned & get_mutable_obj5_unsigned() { return obj5_unsigned; }
         void set_obj5_unsigned(const Unsigned & value) { this->obj5_unsigned = value; }
 
-        const Using & get_obj5_using() const { return obj5_using; }
-        Using & get_mutable_obj5_using() { return obj5_using; }
-        void set_obj5_using(const Using & value) { this->obj5_using = value; }
-
-        const Virtual & get_obj5_virtual() const { return obj5_virtual; }
-        Virtual & get_mutable_obj5_virtual() { return obj5_virtual; }
-        void set_obj5_virtual(const Virtual & value) { this->obj5_virtual = value; }
+        const PrimitiveKind & get_primitive_kind() const { return primitive_kind; }
+        PrimitiveKind & get_mutable_primitive_kind() { return primitive_kind; }
+        void set_primitive_kind(const PrimitiveKind & value) { this->primitive_kind = value; }
 
         const TrueClass & get_purple_true() const { return purple_true; }
         TrueClass & get_mutable_purple_true() { return purple_true; }
@@ -6034,6 +6034,18 @@ namespace quicktype {
         Sendable & get_mutable_sendable() { return sendable; }
         void set_sendable(const Sendable & value) { this->sendable = value; }
 
+        const SerialDescriptor & get_serial_descriptor() const { return serial_descriptor; }
+        SerialDescriptor & get_mutable_serial_descriptor() { return serial_descriptor; }
+        void set_serial_descriptor(const SerialDescriptor & value) { this->serial_descriptor = value; }
+
+        const SerialName & get_serial_name() const { return serial_name; }
+        SerialName & get_mutable_serial_name() { return serial_name; }
+        void set_serial_name(const SerialName & value) { this->serial_name = value; }
+
+        const Serializable & get_serializable() const { return serializable; }
+        Serializable & get_mutable_serializable() { return serializable; }
+        void set_serializable(const Serializable & value) { this->serializable = value; }
+
         const Serialize & get_serialize() const { return serialize; }
         Serialize & get_mutable_serialize() { return serialize; }
         void set_serialize(const Serialize & value) { this->serialize = value; }
@@ -6162,25 +6174,41 @@ namespace quicktype {
         Unsafe & get_mutable_unsafe() { return unsafe; }
         void set_unsafe(const Unsafe & value) { this->unsafe = value; }
 
+        const UseSerializers & get_use_serializers() const { return use_serializers; }
+        UseSerializers & get_mutable_use_serializers() { return use_serializers; }
+        void set_use_serializers(const UseSerializers & value) { this->use_serializers = value; }
+
         const Ushort & get_ushort() const { return ushort; }
         Ushort & get_mutable_ushort() { return ushort; }
         void set_ushort(const Ushort & value) { this->ushort = value; }
+    };
 
-        const Utf8JsonReader & get_utf8_json_reader() const { return utf8_json_reader; }
-        Utf8JsonReader & get_mutable_utf8_json_reader() { return utf8_json_reader; }
-        void set_utf8_json_reader(const Utf8JsonReader & value) { this->utf8_json_reader = value; }
+    class Using {
+        public:
+        Using() = default;
+        virtual ~Using() = default;
 
-        const Utf8JsonWriter & get_utf8_json_writer() const { return utf8_json_writer; }
-        Utf8JsonWriter & get_mutable_utf8_json_writer() { return utf8_json_writer; }
-        void set_utf8_json_writer(const Utf8JsonWriter & value) { this->utf8_json_writer = value; }
+        private:
+        int64_t using_using;
 
-        const Uuid & get_uuid() const { return uuid; }
-        Uuid & get_mutable_uuid() { return uuid; }
-        void set_uuid(const Uuid & value) { this->uuid = value; }
+        public:
+        const int64_t & get_using_using() const { return using_using; }
+        int64_t & get_mutable_using_using() { return using_using; }
+        void set_using_using(const int64_t & value) { this->using_using = value; }
+    };
 
-        const Var & get_var() const { return var; }
-        Var & get_mutable_var() { return var; }
-        void set_var(const Var & value) { this->var = value; }
+    class Virtual {
+        public:
+        Virtual() = default;
+        virtual ~Virtual() = default;
+
+        private:
+        int64_t virtual_virtual;
+
+        public:
+        const int64_t & get_virtual_virtual() const { return virtual_virtual; }
+        int64_t & get_mutable_virtual_virtual() { return virtual_virtual; }
+        void set_virtual_virtual(const int64_t & value) { this->virtual_virtual = value; }
     };
 
     class Void {
@@ -6267,6 +6295,62 @@ namespace quicktype {
         void set_xor_eq_xor_eq(const int64_t & value) { this->xor_eq_xor_eq = value; }
     };
 
+    class Utf8JsonReader {
+        public:
+        Utf8JsonReader() = default;
+        virtual ~Utf8JsonReader() = default;
+
+        private:
+        int64_t utf8_json_reader;
+
+        public:
+        const int64_t & get_utf8_json_reader() const { return utf8_json_reader; }
+        int64_t & get_mutable_utf8_json_reader() { return utf8_json_reader; }
+        void set_utf8_json_reader(const int64_t & value) { this->utf8_json_reader = value; }
+    };
+
+    class Utf8JsonWriter {
+        public:
+        Utf8JsonWriter() = default;
+        virtual ~Utf8JsonWriter() = default;
+
+        private:
+        int64_t utf8_json_writer;
+
+        public:
+        const int64_t & get_utf8_json_writer() const { return utf8_json_writer; }
+        int64_t & get_mutable_utf8_json_writer() { return utf8_json_writer; }
+        void set_utf8_json_writer(const int64_t & value) { this->utf8_json_writer = value; }
+    };
+
+    class Uuid {
+        public:
+        Uuid() = default;
+        virtual ~Uuid() = default;
+
+        private:
+        int64_t uuid;
+
+        public:
+        const int64_t & get_uuid() const { return uuid; }
+        int64_t & get_mutable_uuid() { return uuid; }
+        void set_uuid(const int64_t & value) { this->uuid = value; }
+    };
+
+    class Var {
+        public:
+        Var() = default;
+        virtual ~Var() = default;
+
+        private:
+        int64_t var;
+
+        public:
+        const int64_t & get_var() const { return var; }
+        int64_t & get_mutable_var() { return var; }
+        void set_var(const int64_t & value) { this->var = value; }
+    };
+
     class Weak {
         public:
         Weak() = default;
@@ -6358,12 +6442,18 @@ namespace quicktype {
 
         private:
         int64_t dummy;
+        Using obj6_using;
+        Virtual obj6_virtual;
         Void obj6_void;
         Volatile obj6_volatile;
         WcharT obj6_wchar_t;
         While obj6_while;
         Xor obj6_xor;
         XorEq obj6_xor_eq;
+        Utf8JsonReader utf8_json_reader;
+        Utf8JsonWriter utf8_json_writer;
+        Uuid uuid;
+        Var var;
         Weak weak;
         Where where;
         WillSet will_set;
@@ -6376,6 +6466,14 @@ namespace quicktype {
         int64_t & get_mutable_dummy() { return dummy; }
         void set_dummy(const int64_t & value) { this->dummy = value; }
 
+        const Using & get_obj6_using() const { return obj6_using; }
+        Using & get_mutable_obj6_using() { return obj6_using; }
+        void set_obj6_using(const Using & value) { this->obj6_using = value; }
+
+        const Virtual & get_obj6_virtual() const { return obj6_virtual; }
+        Virtual & get_mutable_obj6_virtual() { return obj6_virtual; }
+        void set_obj6_virtual(const Virtual & value) { this->obj6_virtual = value; }
+
         const Void & get_obj6_void() const { return obj6_void; }
         Void & get_mutable_obj6_void() { return obj6_void; }
         void set_obj6_void(const Void & value) { this->obj6_void = value; }
@@ -6400,6 +6498,22 @@ namespace quicktype {
         XorEq & get_mutable_obj6_xor_eq() { return obj6_xor_eq; }
         void set_obj6_xor_eq(const XorEq & value) { this->obj6_xor_eq = value; }
 
+        const Utf8JsonReader & get_utf8_json_reader() const { return utf8_json_reader; }
+        Utf8JsonReader & get_mutable_utf8_json_reader() { return utf8_json_reader; }
+        void set_utf8_json_reader(const Utf8JsonReader & value) { this->utf8_json_reader = value; }
+
+        const Utf8JsonWriter & get_utf8_json_writer() const { return utf8_json_writer; }
+        Utf8JsonWriter & get_mutable_utf8_json_writer() { return utf8_json_writer; }
+        void set_utf8_json_writer(const Utf8JsonWriter & value) { this->utf8_json_writer = value; }
+
+        const Uuid & get_uuid() const { return uuid; }
+        Uuid & get_mutable_uuid() { return uuid; }
+        void set_uuid(const Uuid & value) { this->uuid = value; }
+
+        const Var & get_var() const { return var; }
+        Var & get_mutable_var() { return var; }
+        void set_var(const Var & value) { this->var = value; }
+
         const Weak & get_weak() const { return weak; }
         Weak & get_mutable_weak() { return weak; }
         void set_weak(const Weak & value) { this->weak = value; }
@@ -7251,6 +7365,9 @@ namespace quicktype {
     void from_json(const json & j, Obj4 & x);
     void to_json(json & j, const Obj4 & x);
 
+    void from_json(const json & j, KSerializer & x);
+    void to_json(json & j, const KSerializer & x);
+
     void from_json(const json & j, SelfClass & x);
     void to_json(json & j, const SelfClass & x);
 
@@ -7317,11 +7434,8 @@ namespace quicktype {
     void from_json(const json & j, Unsigned & x);
     void to_json(json & j, const Unsigned & x);
 
-    void from_json(const json & j, Using & x);
-    void to_json(json & j, const Using & x);
-
-    void from_json(const json & j, Virtual & x);
-    void to_json(json & j, const Virtual & x);
+    void from_json(const json & j, PrimitiveKind & x);
+    void to_json(json & j, const PrimitiveKind & x);
 
     void from_json(const json & j, TrueClass & x);
     void to_json(json & j, const TrueClass & x);
@@ -7332,6 +7446,15 @@ namespace quicktype {
     void from_json(const json & j, Sendable & x);
     void to_json(json & j, const Sendable & x);
 
+    void from_json(const json & j, SerialDescriptor & x);
+    void to_json(json & j, const SerialDescriptor & x);
+
+    void from_json(const json & j, SerialName & x);
+    void to_json(json & j, const SerialName & x);
+
+    void from_json(const json & j, Serializable & x);
+    void to_json(json & j, const Serializable & x);
+
     void from_json(const json & j, Serialize & x);
     void to_json(json & j, const Serialize & x);
 
@@ -7428,24 +7551,21 @@ namespace quicktype {
     void from_json(const json & j, Unsafe & x);
     void to_json(json & j, const Unsafe & x);
 
+    void from_json(const json & j, UseSerializers & x);
+    void to_json(json & j, const UseSerializers & x);
+
     void from_json(const json & j, Ushort & x);
     void to_json(json & j, const Ushort & x);
 
-    void from_json(const json & j, Utf8JsonReader & x);
-    void to_json(json & j, const Utf8JsonReader & x);
-
-    void from_json(const json & j, Utf8JsonWriter & x);
-    void to_json(json & j, const Utf8JsonWriter & x);
-
-    void from_json(const json & j, Uuid & x);
-    void to_json(json & j, const Uuid & x);
-
-    void from_json(const json & j, Var & x);
-    void to_json(json & j, const Var & x);
-
     void from_json(const json & j, Obj5 & x);
     void to_json(json & j, const Obj5 & x);
 
+    void from_json(const json & j, Using & x);
+    void to_json(json & j, const Using & x);
+
+    void from_json(const json & j, Virtual & x);
+    void to_json(json & j, const Virtual & x);
+
     void from_json(const json & j, Void & x);
     void to_json(json & j, const Void & x);
 
@@ -7464,6 +7584,18 @@ namespace quicktype {
     void from_json(const json & j, XorEq & x);
     void to_json(json & j, const XorEq & x);
 
+    void from_json(const json & j, Utf8JsonReader & x);
+    void to_json(json & j, const Utf8JsonReader & x);
+
+    void from_json(const json & j, Utf8JsonWriter & x);
+    void to_json(json & j, const Utf8JsonWriter & x);
+
+    void from_json(const json & j, Uuid & x);
+    void to_json(json & j, const Uuid & x);
+
+    void from_json(const json & j, Var & x);
+    void to_json(json & j, const Var & x);
+
     void from_json(const json & j, Weak & x);
     void to_json(json & j, const Weak & x);
 
@@ -10861,6 +10993,17 @@ namespace quicktype {
         j["select"] = x.get_select();
     }
 
+    inline void from_json(const json & j, KSerializer& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("KSerializer") != j.end() && !j.at("KSerializer").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_k_serializer(j.at("KSerializer").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const KSerializer & x) {
+        j = json::object();
+        j["KSerializer"] = x.get_k_serializer();
+    }
+
     inline void from_json(const json & j, SelfClass& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("self") != j.end() && !j.at("self").is_number_integer()) throw std::runtime_error("Expected integer");
@@ -11103,26 +11246,15 @@ namespace quicktype {
         j["unsigned"] = x.get_unsigned_unsigned();
     }
 
-    inline void from_json(const json & j, Using& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("using") != j.end() && !j.at("using").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_using_using(j.at("using").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const Using & x) {
-        j = json::object();
-        j["using"] = x.get_using_using();
-    }
-
-    inline void from_json(const json & j, Virtual& x) {
+    inline void from_json(const json & j, PrimitiveKind& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("virtual") != j.end() && !j.at("virtual").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_virtual_virtual(j.at("virtual").get<int64_t>());
+        if (j.find("PrimitiveKind") != j.end() && !j.at("PrimitiveKind").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_primitive_kind(j.at("PrimitiveKind").get<int64_t>());
     }
 
-    inline void to_json(json & j, const Virtual & x) {
+    inline void to_json(json & j, const PrimitiveKind & x) {
         j = json::object();
-        j["virtual"] = x.get_virtual_virtual();
+        j["PrimitiveKind"] = x.get_primitive_kind();
     }
 
     inline void from_json(const json & j, TrueClass& x) {
@@ -11158,6 +11290,39 @@ namespace quicktype {
         j["Sendable"] = x.get_sendable();
     }
 
+    inline void from_json(const json & j, SerialDescriptor& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("SerialDescriptor") != j.end() && !j.at("SerialDescriptor").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_serial_descriptor(j.at("SerialDescriptor").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const SerialDescriptor & x) {
+        j = json::object();
+        j["SerialDescriptor"] = x.get_serial_descriptor();
+    }
+
+    inline void from_json(const json & j, SerialName& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("SerialName") != j.end() && !j.at("SerialName").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_serial_name(j.at("SerialName").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const SerialName & x) {
+        j = json::object();
+        j["SerialName"] = x.get_serial_name();
+    }
+
+    inline void from_json(const json & j, Serializable& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("Serializable") != j.end() && !j.at("Serializable").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_serializable(j.at("Serializable").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const Serializable & x) {
+        j = json::object();
+        j["Serializable"] = x.get_serializable();
+    }
+
     inline void from_json(const json & j, Serialize& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("serialize") != j.end() && !j.at("serialize").is_number_integer()) throw std::runtime_error("Expected integer");
@@ -11510,65 +11675,33 @@ namespace quicktype {
         j["unsafe"] = x.get_unsafe();
     }
 
-    inline void from_json(const json & j, Ushort& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("ushort") != j.end() && !j.at("ushort").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_ushort(j.at("ushort").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const Ushort & x) {
-        j = json::object();
-        j["ushort"] = x.get_ushort();
-    }
-
-    inline void from_json(const json & j, Utf8JsonReader& x) {
+    inline void from_json(const json & j, UseSerializers& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("Utf8JsonReader") != j.end() && !j.at("Utf8JsonReader").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_utf8_json_reader(j.at("Utf8JsonReader").get<int64_t>());
+        if (j.find("UseSerializers") != j.end() && !j.at("UseSerializers").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_use_serializers(j.at("UseSerializers").get<int64_t>());
     }
 
-    inline void to_json(json & j, const Utf8JsonReader & x) {
+    inline void to_json(json & j, const UseSerializers & x) {
         j = json::object();
-        j["Utf8JsonReader"] = x.get_utf8_json_reader();
+        j["UseSerializers"] = x.get_use_serializers();
     }
 
-    inline void from_json(const json & j, Utf8JsonWriter& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("Utf8JsonWriter") != j.end() && !j.at("Utf8JsonWriter").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_utf8_json_writer(j.at("Utf8JsonWriter").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const Utf8JsonWriter & x) {
-        j = json::object();
-        j["Utf8JsonWriter"] = x.get_utf8_json_writer();
-    }
-
-    inline void from_json(const json & j, Uuid& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("UUID") != j.end() && !j.at("UUID").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_uuid(j.at("UUID").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const Uuid & x) {
-        j = json::object();
-        j["UUID"] = x.get_uuid();
-    }
-
-    inline void from_json(const json & j, Var& x) {
+    inline void from_json(const json & j, Ushort& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("var") != j.end() && !j.at("var").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_var(j.at("var").get<int64_t>());
+        if (j.find("ushort") != j.end() && !j.at("ushort").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_ushort(j.at("ushort").get<int64_t>());
     }
 
-    inline void to_json(json & j, const Var & x) {
+    inline void to_json(json & j, const Ushort & x) {
         j = json::object();
-        j["var"] = x.get_var();
+        j["ushort"] = x.get_ushort();
     }
 
     inline void from_json(const json & j, Obj5& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("dummy") != j.end() && !j.at("dummy").is_number_integer()) throw std::runtime_error("Expected integer");
         x.set_dummy(j.at("dummy").get<int64_t>());
+        x.set_k_serializer(j.at("KSerializer").get<KSerializer>());
         x.set_obj5_self(j.at("self").get<SelfClass>());
         x.set_obj5_short(j.at("short").get<Short>());
         x.set_obj5_signed(j.at("signed").get<Signed>());
@@ -11591,11 +11724,13 @@ namespace quicktype {
         x.set_obj5_typename(j.at("typename").get<Typename>());
         x.set_obj5_union(j.at("union").get<Union>());
         x.set_obj5_unsigned(j.at("unsigned").get<Unsigned>());
-        x.set_obj5_using(j.at("using").get<Using>());
-        x.set_obj5_virtual(j.at("virtual").get<Virtual>());
+        x.set_primitive_kind(j.at("PrimitiveKind").get<PrimitiveKind>());
         x.set_purple_true(j.at("true").get<TrueClass>());
         x.set_self(j.at("Self").get<Self>());
         x.set_sendable(j.at("Sendable").get<Sendable>());
+        x.set_serial_descriptor(j.at("SerialDescriptor").get<SerialDescriptor>());
+        x.set_serial_name(j.at("SerialName").get<SerialName>());
+        x.set_serializable(j.at("Serializable").get<Serializable>());
         x.set_serialize(j.at("serialize").get<Serialize>());
         x.set_serializer_provider(j.at("SerializerProvider").get<SerializerProvider>());
         x.set_set(j.at("set").get<Set>());
@@ -11628,16 +11763,14 @@ namespace quicktype {
         x.set_undefined(j.at("undefined").get<Undefined>());
         x.set_unowned(j.at("unowned").get<Unowned>());
         x.set_unsafe(j.at("unsafe").get<Unsafe>());
+        x.set_use_serializers(j.at("UseSerializers").get<UseSerializers>());
         x.set_ushort(j.at("ushort").get<Ushort>());
-        x.set_utf8_json_reader(j.at("Utf8JsonReader").get<Utf8JsonReader>());
-        x.set_utf8_json_writer(j.at("Utf8JsonWriter").get<Utf8JsonWriter>());
-        x.set_uuid(j.at("UUID").get<Uuid>());
-        x.set_var(j.at("var").get<Var>());
     }
 
     inline void to_json(json & j, const Obj5 & x) {
         j = json::object();
         j["dummy"] = x.get_dummy();
+        j["KSerializer"] = x.get_k_serializer();
         j["self"] = x.get_obj5_self();
         j["short"] = x.get_obj5_short();
         j["signed"] = x.get_obj5_signed();
@@ -11660,11 +11793,13 @@ namespace quicktype {
         j["typename"] = x.get_obj5_typename();
         j["union"] = x.get_obj5_union();
         j["unsigned"] = x.get_obj5_unsigned();
-        j["using"] = x.get_obj5_using();
-        j["virtual"] = x.get_obj5_virtual();
+        j["PrimitiveKind"] = x.get_primitive_kind();
         j["true"] = x.get_purple_true();
         j["Self"] = x.get_self();
         j["Sendable"] = x.get_sendable();
+        j["SerialDescriptor"] = x.get_serial_descriptor();
+        j["SerialName"] = x.get_serial_name();
+        j["Serializable"] = x.get_serializable();
         j["serialize"] = x.get_serialize();
         j["SerializerProvider"] = x.get_serializer_provider();
         j["set"] = x.get_set();
@@ -11697,11 +11832,30 @@ namespace quicktype {
         j["undefined"] = x.get_undefined();
         j["unowned"] = x.get_unowned();
         j["unsafe"] = x.get_unsafe();
+        j["UseSerializers"] = x.get_use_serializers();
         j["ushort"] = x.get_ushort();
-        j["Utf8JsonReader"] = x.get_utf8_json_reader();
-        j["Utf8JsonWriter"] = x.get_utf8_json_writer();
-        j["UUID"] = x.get_uuid();
-        j["var"] = x.get_var();
+    }
+
+    inline void from_json(const json & j, Using& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("using") != j.end() && !j.at("using").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_using_using(j.at("using").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const Using & x) {
+        j = json::object();
+        j["using"] = x.get_using_using();
+    }
+
+    inline void from_json(const json & j, Virtual& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("virtual") != j.end() && !j.at("virtual").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_virtual_virtual(j.at("virtual").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const Virtual & x) {
+        j = json::object();
+        j["virtual"] = x.get_virtual_virtual();
     }
 
     inline void from_json(const json & j, Void& x) {
@@ -11770,6 +11924,50 @@ namespace quicktype {
         j["xor_eq"] = x.get_xor_eq_xor_eq();
     }
 
+    inline void from_json(const json & j, Utf8JsonReader& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("Utf8JsonReader") != j.end() && !j.at("Utf8JsonReader").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_utf8_json_reader(j.at("Utf8JsonReader").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const Utf8JsonReader & x) {
+        j = json::object();
+        j["Utf8JsonReader"] = x.get_utf8_json_reader();
+    }
+
+    inline void from_json(const json & j, Utf8JsonWriter& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("Utf8JsonWriter") != j.end() && !j.at("Utf8JsonWriter").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_utf8_json_writer(j.at("Utf8JsonWriter").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const Utf8JsonWriter & x) {
+        j = json::object();
+        j["Utf8JsonWriter"] = x.get_utf8_json_writer();
+    }
+
+    inline void from_json(const json & j, Uuid& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("UUID") != j.end() && !j.at("UUID").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_uuid(j.at("UUID").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const Uuid & x) {
+        j = json::object();
+        j["UUID"] = x.get_uuid();
+    }
+
+    inline void from_json(const json & j, Var& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("var") != j.end() && !j.at("var").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_var(j.at("var").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const Var & x) {
+        j = json::object();
+        j["var"] = x.get_var();
+    }
+
     inline void from_json(const json & j, Weak& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("weak") != j.end() && !j.at("weak").is_number_integer()) throw std::runtime_error("Expected integer");
@@ -11840,12 +12038,18 @@ namespace quicktype {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("dummy") != j.end() && !j.at("dummy").is_number_integer()) throw std::runtime_error("Expected integer");
         x.set_dummy(j.at("dummy").get<int64_t>());
+        x.set_obj6_using(j.at("using").get<Using>());
+        x.set_obj6_virtual(j.at("virtual").get<Virtual>());
         x.set_obj6_void(j.at("void").get<Void>());
         x.set_obj6_volatile(j.at("volatile").get<Volatile>());
         x.set_obj6_wchar_t(j.at("wchar_t").get<WcharT>());
         x.set_obj6_while(j.at("while").get<While>());
         x.set_obj6_xor(j.at("xor").get<Xor>());
         x.set_obj6_xor_eq(j.at("xor_eq").get<XorEq>());
+        x.set_utf8_json_reader(j.at("Utf8JsonReader").get<Utf8JsonReader>());
+        x.set_utf8_json_writer(j.at("Utf8JsonWriter").get<Utf8JsonWriter>());
+        x.set_uuid(j.at("UUID").get<Uuid>());
+        x.set_var(j.at("var").get<Var>());
         x.set_weak(j.at("weak").get<Weak>());
         x.set_where(j.at("where").get<Where>());
         x.set_will_set(j.at("willSet").get<WillSet>());
@@ -11857,12 +12061,18 @@ namespace quicktype {
     inline void to_json(json & j, const Obj6 & x) {
         j = json::object();
         j["dummy"] = x.get_dummy();
+        j["using"] = x.get_obj6_using();
+        j["virtual"] = x.get_obj6_virtual();
         j["void"] = x.get_obj6_void();
         j["volatile"] = x.get_obj6_volatile();
         j["wchar_t"] = x.get_obj6_wchar_t();
         j["while"] = x.get_obj6_while();
         j["xor"] = x.get_obj6_xor();
         j["xor_eq"] = x.get_obj6_xor_eq();
+        j["Utf8JsonReader"] = x.get_utf8_json_reader();
+        j["Utf8JsonWriter"] = x.get_utf8_json_writer();
+        j["UUID"] = x.get_uuid();
+        j["var"] = x.get_var();
         j["weak"] = x.get_weak();
         j["where"] = x.get_where();
         j["willSet"] = x.get_will_set();
diff --git a/base/crystal/test/inputs/json/priority/keywords.json/default/TopLevel.cr b/head/crystal/test/inputs/json/priority/keywords.json/default/TopLevel.cr
index e1391d9..642ea9f 100644
--- a/base/crystal/test/inputs/json/priority/keywords.json/default/TopLevel.cr
+++ b/head/crystal/test/inputs/json/priority/keywords.json/default/TopLevel.cr
@@ -2262,6 +2262,9 @@ class Obj5
 
   property dummy : Int64
 
+  @[JSON::Field(key: "KSerializer")]
+  property k_serializer : KSerializer
+
   @[JSON::Field(key: "Self")]
   property obj5_self : Self
 
@@ -2292,6 +2295,9 @@ class Obj5
   @[JSON::Field(key: "union")]
   property obj5_union : UnionClass
 
+  @[JSON::Field(key: "PrimitiveKind")]
+  property primitive_kind : PrimitiveKind
+
   @[JSON::Field(key: "self")]
   property purple_self : SelfClass
 
@@ -2304,6 +2310,15 @@ class Obj5
   @[JSON::Field(key: "Sendable")]
   property sendable : Sendable
 
+  @[JSON::Field(key: "SerialDescriptor")]
+  property serial_descriptor : SerialDescriptor
+
+  @[JSON::Field(key: "SerialName")]
+  property serial_name : SerialName
+
+  @[JSON::Field(key: "Serializable")]
+  property serializable : Serializable
+
   property serialize : Serialize
 
   @[JSON::Field(key: "SerializerProvider")]
@@ -2399,22 +2414,17 @@ class Obj5
 
   property unsigned : Unsigned
 
-  property ushort : Ushort
-
-  property using : Using
+  @[JSON::Field(key: "UseSerializers")]
+  property use_serializers : UseSerializers
 
-  @[JSON::Field(key: "Utf8JsonReader")]
-  property utf8_json_reader : Utf8JsonReader
-
-  @[JSON::Field(key: "Utf8JsonWriter")]
-  property utf8_json_writer : Utf8JsonWriter
-
-  @[JSON::Field(key: "UUID")]
-  property uuid : Uuid
+  property ushort : Ushort
+end
 
-  property var : Var
+class KSerializer
+  include JSON::Serializable
 
-  property virtual : Virtual
+  @[JSON::Field(key: "KSerializer")]
+  property k_serializer : Int64
 end
 
 class Self
@@ -2487,6 +2497,13 @@ class UnionClass
   property union_union : Int64
 end
 
+class PrimitiveKind
+  include JSON::Serializable
+
+  @[JSON::Field(key: "PrimitiveKind")]
+  property primitive_kind : Int64
+end
+
 class SelfClass
   include JSON::Serializable
 
@@ -2515,6 +2532,27 @@ class Sendable
   property sendable : Int64
 end
 
+class SerialDescriptor
+  include JSON::Serializable
+
+  @[JSON::Field(key: "SerialDescriptor")]
+  property serial_descriptor : Int64
+end
+
+class SerialName
+  include JSON::Serializable
+
+  @[JSON::Field(key: "SerialName")]
+  property serial_name : Int64
+end
+
+class Serializable
+  include JSON::Serializable
+
+  @[JSON::Field(key: "Serializable")]
+  property serializable : Int64
+end
+
 class Serialize
   include JSON::Serializable
 
@@ -2782,49 +2820,17 @@ class Unsigned
   property unsigned : Int64
 end
 
-class Ushort
-  include JSON::Serializable
-
-  property ushort : Int64
-end
-
-class Using
-  include JSON::Serializable
-
-  property using : Int64
-end
-
-class Utf8JsonReader
-  include JSON::Serializable
-
-  @[JSON::Field(key: "Utf8JsonReader")]
-  property utf8_json_reader : Int64
-end
-
-class Utf8JsonWriter
-  include JSON::Serializable
-
-  @[JSON::Field(key: "Utf8JsonWriter")]
-  property utf8_json_writer : Int64
-end
-
-class Uuid
-  include JSON::Serializable
-
-  @[JSON::Field(key: "UUID")]
-  property uuid : Int64
-end
-
-class Var
+class UseSerializers
   include JSON::Serializable
 
-  property var : Int64
+  @[JSON::Field(key: "UseSerializers")]
+  property use_serializers : Int64
 end
 
-class Virtual
+class Ushort
   include JSON::Serializable
 
-  property virtual : Int64
+  property ushort : Int64
 end
 
 class Obj6
@@ -2841,6 +2847,21 @@ class Obj6
   @[JSON::Field(key: "yield")]
   property obj6_yield : Yield
 
+  property using : Using
+
+  @[JSON::Field(key: "Utf8JsonReader")]
+  property utf8_json_reader : Utf8JsonReader
+
+  @[JSON::Field(key: "Utf8JsonWriter")]
+  property utf8_json_writer : Utf8JsonWriter
+
+  @[JSON::Field(key: "UUID")]
+  property uuid : Uuid
+
+  property var : Var
+
+  property virtual : Virtual
+
   property void : VoidClass
 
   property volatile : Volatile
@@ -2883,6 +2904,45 @@ class Yield
   property yield_yield : Int64
 end
 
+class Using
+  include JSON::Serializable
+
+  property using : Int64
+end
+
+class Utf8JsonReader
+  include JSON::Serializable
+
+  @[JSON::Field(key: "Utf8JsonReader")]
+  property utf8_json_reader : Int64
+end
+
+class Utf8JsonWriter
+  include JSON::Serializable
+
+  @[JSON::Field(key: "Utf8JsonWriter")]
+  property utf8_json_writer : Int64
+end
+
+class Uuid
+  include JSON::Serializable
+
+  @[JSON::Field(key: "UUID")]
+  property uuid : Int64
+end
+
+class Var
+  include JSON::Serializable
+
+  property var : Int64
+end
+
+class Virtual
+  include JSON::Serializable
+
+  property virtual : Int64
+end
+
 class VoidClass
   include JSON::Serializable
 
diff --git a/base/csharp/test/inputs/json/priority/keywords.json/default/QuickType.cs b/head/csharp/test/inputs/json/priority/keywords.json/default/QuickType.cs
index 6909aa9..fe61ba2 100644
--- a/base/csharp/test/inputs/json/priority/keywords.json/default/QuickType.cs
+++ b/head/csharp/test/inputs/json/priority/keywords.json/default/QuickType.cs
@@ -2380,6 +2380,9 @@ namespace QuickType
         [JsonProperty("dummy", Required = Required.Always)]
         public long Dummy { get; set; }
 
+        [JsonProperty("KSerializer", Required = Required.Always)]
+        public KSerializer KSerializer { get; set; }
+
         [JsonProperty("self", Required = Required.Always)]
         public SelfClass Obj5Self { get; set; }
 
@@ -2395,12 +2398,24 @@ namespace QuickType
         [JsonProperty("type", Required = Required.Always)]
         public Obj5Type Obj5Type { get; set; }
 
+        [JsonProperty("PrimitiveKind", Required = Required.Always)]
+        public PrimitiveKind PrimitiveKind { get; set; }
+
         [JsonProperty("Self", Required = Required.Always)]
         public Self Self { get; set; }
 
         [JsonProperty("Sendable", Required = Required.Always)]
         public Sendable Sendable { get; set; }
 
+        [JsonProperty("SerialDescriptor", Required = Required.Always)]
+        public SerialDescriptor SerialDescriptor { get; set; }
+
+        [JsonProperty("SerialName", Required = Required.Always)]
+        public SerialName SerialName { get; set; }
+
+        [JsonProperty("Serializable", Required = Required.Always)]
+        public Serializable Serializable { get; set; }
+
         [JsonProperty("serialize", Required = Required.Always)]
         public SerializeClass Serialize { get; set; }
 
@@ -2551,26 +2566,17 @@ namespace QuickType
         [JsonProperty("unsigned", Required = Required.Always)]
         public Unsigned Unsigned { get; set; }
 
+        [JsonProperty("UseSerializers", Required = Required.Always)]
+        public UseSerializers UseSerializers { get; set; }
+
         [JsonProperty("ushort", Required = Required.Always)]
         public Ushort Ushort { get; set; }
+    }
 
-        [JsonProperty("using", Required = Required.Always)]
-        public Using Using { get; set; }
-
-        [JsonProperty("Utf8JsonReader", Required = Required.Always)]
-        public Utf8JsonReader Utf8JsonReader { get; set; }
-
-        [JsonProperty("Utf8JsonWriter", Required = Required.Always)]
-        public Utf8JsonWriter Utf8JsonWriter { get; set; }
-
-        [JsonProperty("UUID", Required = Required.Always)]
-        public Uuid Uuid { get; set; }
-
-        [JsonProperty("var", Required = Required.Always)]
-        public Var Var { get; set; }
-
-        [JsonProperty("virtual", Required = Required.Always)]
-        public Virtual Virtual { get; set; }
+    public partial class KSerializer
+    {
+        [JsonProperty("KSerializer", Required = Required.Always)]
+        public long KSerializerKSerializer { get; set; }
     }
 
     public partial class SelfClass
@@ -2603,6 +2609,12 @@ namespace QuickType
         public long Type { get; set; }
     }
 
+    public partial class PrimitiveKind
+    {
+        [JsonProperty("PrimitiveKind", Required = Required.Always)]
+        public long PrimitiveKindPrimitiveKind { get; set; }
+    }
+
     public partial class Self
     {
         [JsonProperty("Self", Required = Required.Always)]
@@ -2615,6 +2627,24 @@ namespace QuickType
         public long SendableSendable { get; set; }
     }
 
+    public partial class SerialDescriptor
+    {
+        [JsonProperty("SerialDescriptor", Required = Required.Always)]
+        public long SerialDescriptorSerialDescriptor { get; set; }
+    }
+
+    public partial class SerialName
+    {
+        [JsonProperty("SerialName", Required = Required.Always)]
+        public long SerialNameSerialName { get; set; }
+    }
+
+    public partial class Serializable
+    {
+        [JsonProperty("Serializable", Required = Required.Always)]
+        public long SerializableSerializable { get; set; }
+    }
+
     public partial class SerializeClass
     {
         [JsonProperty("serialize", Required = Required.Always)]
@@ -2915,52 +2945,40 @@ namespace QuickType
         public long UnsignedUnsigned { get; set; }
     }
 
+    public partial class UseSerializers
+    {
+        [JsonProperty("UseSerializers", Required = Required.Always)]
+        public long UseSerializersUseSerializers { get; set; }
+    }
+
     public partial class Ushort
     {
         [JsonProperty("ushort", Required = Required.Always)]
         public long UshortUshort { get; set; }
     }
 
-    public partial class Using
+    public partial class Obj6
     {
+        [JsonProperty("dummy", Required = Required.Always)]
+        public long Dummy { get; set; }
+
         [JsonProperty("using", Required = Required.Always)]
-        public long UsingUsing { get; set; }
-    }
+        public Using Using { get; set; }
 
-    public partial class Utf8JsonReader
-    {
         [JsonProperty("Utf8JsonReader", Required = Required.Always)]
-        public long Utf8JsonReaderUtf8JsonReader { get; set; }
-    }
+        public Utf8JsonReader Utf8JsonReader { get; set; }
 
-    public partial class Utf8JsonWriter
-    {
         [JsonProperty("Utf8JsonWriter", Required = Required.Always)]
-        public long Utf8JsonWriterUtf8JsonWriter { get; set; }
-    }
+        public Utf8JsonWriter Utf8JsonWriter { get; set; }
 
-    public partial class Uuid
-    {
         [JsonProperty("UUID", Required = Required.Always)]
-        public long UuidUuid { get; set; }
-    }
+        public Uuid Uuid { get; set; }
 
-    public partial class Var
-    {
         [JsonProperty("var", Required = Required.Always)]
-        public long VarVar { get; set; }
-    }
+        public Var Var { get; set; }
 
-    public partial class Virtual
-    {
         [JsonProperty("virtual", Required = Required.Always)]
-        public long VirtualVirtual { get; set; }
-    }
-
-    public partial class Obj6
-    {
-        [JsonProperty("dummy", Required = Required.Always)]
-        public long Dummy { get; set; }
+        public Virtual Virtual { get; set; }
 
         [JsonProperty("void", Required = Required.Always)]
         public Void Void { get; set; }
@@ -2999,6 +3017,42 @@ namespace QuickType
         public Yield Yield { get; set; }
     }
 
+    public partial class Using
+    {
+        [JsonProperty("using", Required = Required.Always)]
+        public long UsingUsing { get; set; }
+    }
+
+    public partial class Utf8JsonReader
+    {
+        [JsonProperty("Utf8JsonReader", Required = Required.Always)]
+        public long Utf8JsonReaderUtf8JsonReader { get; set; }
+    }
+
+    public partial class Utf8JsonWriter
+    {
+        [JsonProperty("Utf8JsonWriter", Required = Required.Always)]
+        public long Utf8JsonWriterUtf8JsonWriter { get; set; }
+    }
+
+    public partial class Uuid
+    {
+        [JsonProperty("UUID", Required = Required.Always)]
+        public long UuidUuid { get; set; }
+    }
+
+    public partial class Var
+    {
+        [JsonProperty("var", Required = Required.Always)]
+        public long VarVar { get; set; }
+    }
+
+    public partial class Virtual
+    {
+        [JsonProperty("virtual", Required = Required.Always)]
+        public long VirtualVirtual { get; set; }
+    }
+
     public partial class Void
     {
         [JsonProperty("void", Required = Required.Always)]
diff --git a/base/csharp-SystemTextJson/test/inputs/json/priority/keywords.json/default/QuickType.cs b/head/csharp-SystemTextJson/test/inputs/json/priority/keywords.json/default/QuickType.cs
index 2cfb7bb..a8d7a19 100644
--- a/base/csharp-SystemTextJson/test/inputs/json/priority/keywords.json/default/QuickType.cs
+++ b/head/csharp-SystemTextJson/test/inputs/json/priority/keywords.json/default/QuickType.cs
@@ -2901,6 +2901,10 @@ namespace QuickType
         [JsonPropertyName("dummy")]
         public long Dummy { get; set; }
 
+        [JsonRequired]
+        [JsonPropertyName("KSerializer")]
+        public KSerializer KSerializer { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("self")]
         public SelfClass Obj5Self { get; set; }
@@ -2921,6 +2925,10 @@ namespace QuickType
         [JsonPropertyName("type")]
         public Obj5Type Obj5Type { get; set; }
 
+        [JsonRequired]
+        [JsonPropertyName("PrimitiveKind")]
+        public PrimitiveKind PrimitiveKind { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("Self")]
         public Self Self { get; set; }
@@ -2929,6 +2937,18 @@ namespace QuickType
         [JsonPropertyName("Sendable")]
         public Sendable Sendable { get; set; }
 
+        [JsonRequired]
+        [JsonPropertyName("SerialDescriptor")]
+        public SerialDescriptor SerialDescriptor { get; set; }
+
+        [JsonRequired]
+        [JsonPropertyName("SerialName")]
+        public SerialName SerialName { get; set; }
+
+        [JsonRequired]
+        [JsonPropertyName("Serializable")]
+        public Serializable Serializable { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("serialize")]
         public SerializeClass Serialize { get; set; }
@@ -3130,32 +3150,19 @@ namespace QuickType
         public Unsigned Unsigned { get; set; }
 
         [JsonRequired]
-        [JsonPropertyName("ushort")]
-        public Ushort Ushort { get; set; }
+        [JsonPropertyName("UseSerializers")]
+        public UseSerializers UseSerializers { get; set; }
 
         [JsonRequired]
-        [JsonPropertyName("using")]
-        public Using Using { get; set; }
-
-        [JsonRequired]
-        [JsonPropertyName("Utf8JsonReader")]
-        public Utf8JsonReaderClass Utf8JsonReader { get; set; }
-
-        [JsonRequired]
-        [JsonPropertyName("Utf8JsonWriter")]
-        public Utf8JsonWriterClass Utf8JsonWriter { get; set; }
-
-        [JsonRequired]
-        [JsonPropertyName("UUID")]
-        public Uuid Uuid { get; set; }
-
-        [JsonRequired]
-        [JsonPropertyName("var")]
-        public Var Var { get; set; }
+        [JsonPropertyName("ushort")]
+        public Ushort Ushort { get; set; }
+    }
 
+    public partial class KSerializer
+    {
         [JsonRequired]
-        [JsonPropertyName("virtual")]
-        public Virtual Virtual { get; set; }
+        [JsonPropertyName("KSerializer")]
+        public long KSerializerKSerializer { get; set; }
     }
 
     public partial class SelfClass
@@ -3193,6 +3200,13 @@ namespace QuickType
         public long Type { get; set; }
     }
 
+    public partial class PrimitiveKind
+    {
+        [JsonRequired]
+        [JsonPropertyName("PrimitiveKind")]
+        public long PrimitiveKindPrimitiveKind { get; set; }
+    }
+
     public partial class Self
     {
         [JsonRequired]
@@ -3207,6 +3221,27 @@ namespace QuickType
         public long SendableSendable { get; set; }
     }
 
+    public partial class SerialDescriptor
+    {
+        [JsonRequired]
+        [JsonPropertyName("SerialDescriptor")]
+        public long SerialDescriptorSerialDescriptor { get; set; }
+    }
+
+    public partial class SerialName
+    {
+        [JsonRequired]
+        [JsonPropertyName("SerialName")]
+        public long SerialNameSerialName { get; set; }
+    }
+
+    public partial class Serializable
+    {
+        [JsonRequired]
+        [JsonPropertyName("Serializable")]
+        public long SerializableSerializable { get; set; }
+    }
+
     public partial class SerializeClass
     {
         [JsonRequired]
@@ -3557,6 +3592,13 @@ namespace QuickType
         public long UnsignedUnsigned { get; set; }
     }
 
+    public partial class UseSerializers
+    {
+        [JsonRequired]
+        [JsonPropertyName("UseSerializers")]
+        public long UseSerializersUseSerializers { get; set; }
+    }
+
     public partial class Ushort
     {
         [JsonRequired]
@@ -3564,53 +3606,35 @@ namespace QuickType
         public long UshortUshort { get; set; }
     }
 
-    public partial class Using
+    public partial class Obj6
     {
+        [JsonRequired]
+        [JsonPropertyName("dummy")]
+        public long Dummy { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("using")]
-        public long UsingUsing { get; set; }
-    }
+        public Using Using { get; set; }
 
-    public partial class Utf8JsonReaderClass
-    {
         [JsonRequired]
         [JsonPropertyName("Utf8JsonReader")]
-        public long Utf8JsonReader { get; set; }
-    }
+        public Utf8JsonReaderClass Utf8JsonReader { get; set; }
 
-    public partial class Utf8JsonWriterClass
-    {
         [JsonRequired]
         [JsonPropertyName("Utf8JsonWriter")]
-        public long Utf8JsonWriter { get; set; }
-    }
+        public Utf8JsonWriterClass Utf8JsonWriter { get; set; }
 
-    public partial class Uuid
-    {
         [JsonRequired]
         [JsonPropertyName("UUID")]
-        public long UuidUuid { get; set; }
-    }
+        public Uuid Uuid { get; set; }
 
-    public partial class Var
-    {
         [JsonRequired]
         [JsonPropertyName("var")]
-        public long VarVar { get; set; }
-    }
+        public Var Var { get; set; }
 
-    public partial class Virtual
-    {
         [JsonRequired]
         [JsonPropertyName("virtual")]
-        public long VirtualVirtual { get; set; }
-    }
-
-    public partial class Obj6
-    {
-        [JsonRequired]
-        [JsonPropertyName("dummy")]
-        public long Dummy { get; set; }
+        public Virtual Virtual { get; set; }
 
         [JsonRequired]
         [JsonPropertyName("void")]
@@ -3661,6 +3685,48 @@ namespace QuickType
         public Yield Yield { get; set; }
     }
 
+    public partial class Using
+    {
+        [JsonRequired]
+        [JsonPropertyName("using")]
+        public long UsingUsing { get; set; }
+    }
+
+    public partial class Utf8JsonReaderClass
+    {
+        [JsonRequired]
+        [JsonPropertyName("Utf8JsonReader")]
+        public long Utf8JsonReader { get; set; }
+    }
+
+    public partial class Utf8JsonWriterClass
+    {
+        [JsonRequired]
+        [JsonPropertyName("Utf8JsonWriter")]
+        public long Utf8JsonWriter { get; set; }
+    }
+
+    public partial class Uuid
+    {
+        [JsonRequired]
+        [JsonPropertyName("UUID")]
+        public long UuidUuid { get; set; }
+    }
+
+    public partial class Var
+    {
+        [JsonRequired]
+        [JsonPropertyName("var")]
+        public long VarVar { get; set; }
+    }
+
+    public partial class Virtual
+    {
+        [JsonRequired]
+        [JsonPropertyName("virtual")]
+        public long VirtualVirtual { get; set; }
+    }
+
     public partial class Void
     {
         [JsonRequired]
diff --git a/base/csharp-records/test/inputs/json/priority/keywords.json/default/QuickType.cs b/head/csharp-records/test/inputs/json/priority/keywords.json/default/QuickType.cs
index d3cc343..fd31d22 100644
--- a/base/csharp-records/test/inputs/json/priority/keywords.json/default/QuickType.cs
+++ b/head/csharp-records/test/inputs/json/priority/keywords.json/default/QuickType.cs
@@ -2380,6 +2380,9 @@ namespace QuickType
         [JsonProperty("dummy", Required = Required.Always)]
         public long Dummy { get; set; }
 
+        [JsonProperty("KSerializer", Required = Required.Always)]
+        public KSerializer KSerializer { get; set; }
+
         [JsonProperty("self", Required = Required.Always)]
         public SelfClass Obj5Self { get; set; }
 
@@ -2395,12 +2398,24 @@ namespace QuickType
         [JsonProperty("type", Required = Required.Always)]
         public Obj5Type Obj5Type { get; set; }
 
+        [JsonProperty("PrimitiveKind", Required = Required.Always)]
+        public PrimitiveKind PrimitiveKind { get; set; }
+
         [JsonProperty("Self", Required = Required.Always)]
         public Self Self { get; set; }
 
         [JsonProperty("Sendable", Required = Required.Always)]
         public Sendable Sendable { get; set; }
 
+        [JsonProperty("SerialDescriptor", Required = Required.Always)]
+        public SerialDescriptor SerialDescriptor { get; set; }
+
+        [JsonProperty("SerialName", Required = Required.Always)]
+        public SerialName SerialName { get; set; }
+
+        [JsonProperty("Serializable", Required = Required.Always)]
+        public Serializable Serializable { get; set; }
+
         [JsonProperty("serialize", Required = Required.Always)]
         public SerializeClass Serialize { get; set; }
 
@@ -2551,26 +2566,17 @@ namespace QuickType
         [JsonProperty("unsigned", Required = Required.Always)]
         public Unsigned Unsigned { get; set; }
 
+        [JsonProperty("UseSerializers", Required = Required.Always)]
+        public UseSerializers UseSerializers { get; set; }
+
         [JsonProperty("ushort", Required = Required.Always)]
         public Ushort Ushort { get; set; }
+    }
 
-        [JsonProperty("using", Required = Required.Always)]
-        public Using Using { get; set; }
-
-        [JsonProperty("Utf8JsonReader", Required = Required.Always)]
-        public Utf8JsonReader Utf8JsonReader { get; set; }
-
-        [JsonProperty("Utf8JsonWriter", Required = Required.Always)]
-        public Utf8JsonWriter Utf8JsonWriter { get; set; }
-
-        [JsonProperty("UUID", Required = Required.Always)]
-        public Uuid Uuid { get; set; }
-
-        [JsonProperty("var", Required = Required.Always)]
-        public Var Var { get; set; }
-
-        [JsonProperty("virtual", Required = Required.Always)]
-        public Virtual Virtual { get; set; }
+    public partial record KSerializer
+    {
+        [JsonProperty("KSerializer", Required = Required.Always)]
+        public long KSerializerKSerializer { get; set; }
     }
 
     public partial record SelfClass
@@ -2603,6 +2609,12 @@ namespace QuickType
         public long Type { get; set; }
     }
 
+    public partial record PrimitiveKind
+    {
+        [JsonProperty("PrimitiveKind", Required = Required.Always)]
+        public long PrimitiveKindPrimitiveKind { get; set; }
+    }
+
     public partial record Self
     {
         [JsonProperty("Self", Required = Required.Always)]
@@ -2615,6 +2627,24 @@ namespace QuickType
         public long SendableSendable { get; set; }
     }
 
+    public partial record SerialDescriptor
+    {
+        [JsonProperty("SerialDescriptor", Required = Required.Always)]
+        public long SerialDescriptorSerialDescriptor { get; set; }
+    }
+
+    public partial record SerialName
+    {
+        [JsonProperty("SerialName", Required = Required.Always)]
+        public long SerialNameSerialName { get; set; }
+    }
+
+    public partial record Serializable
+    {
+        [JsonProperty("Serializable", Required = Required.Always)]
+        public long SerializableSerializable { get; set; }
+    }
+
     public partial record SerializeClass
     {
         [JsonProperty("serialize", Required = Required.Always)]
@@ -2915,52 +2945,40 @@ namespace QuickType
         public long UnsignedUnsigned { get; set; }
     }
 
+    public partial record UseSerializers
+    {
+        [JsonProperty("UseSerializers", Required = Required.Always)]
+        public long UseSerializersUseSerializers { get; set; }
+    }
+
     public partial record Ushort
     {
         [JsonProperty("ushort", Required = Required.Always)]
         public long UshortUshort { get; set; }
     }
 
-    public partial record Using
+    public partial record Obj6
     {
+        [JsonProperty("dummy", Required = Required.Always)]
+        public long Dummy { get; set; }
+
         [JsonProperty("using", Required = Required.Always)]
-        public long UsingUsing { get; set; }
-    }
+        public Using Using { get; set; }
 
-    public partial record Utf8JsonReader
-    {
         [JsonProperty("Utf8JsonReader", Required = Required.Always)]
-        public long Utf8JsonReaderUtf8JsonReader { get; set; }
-    }
+        public Utf8JsonReader Utf8JsonReader { get; set; }
 
-    public partial record Utf8JsonWriter
-    {
         [JsonProperty("Utf8JsonWriter", Required = Required.Always)]
-        public long Utf8JsonWriterUtf8JsonWriter { get; set; }
-    }
+        public Utf8JsonWriter Utf8JsonWriter { get; set; }
 
-    public partial record Uuid
-    {
         [JsonProperty("UUID", Required = Required.Always)]
-        public long UuidUuid { get; set; }
-    }
+        public Uuid Uuid { get; set; }
 
-    public partial record Var
-    {
         [JsonProperty("var", Required = Required.Always)]
-        public long VarVar { get; set; }
-    }
+        public Var Var { get; set; }
 
-    public partial record Virtual
-    {
         [JsonProperty("virtual", Required = Required.Always)]
-        public long VirtualVirtual { get; set; }
-    }
-
-    public partial record Obj6
-    {
-        [JsonProperty("dummy", Required = Required.Always)]
-        public long Dummy { get; set; }
+        public Virtual Virtual { get; set; }
 
         [JsonProperty("void", Required = Required.Always)]
         public Void Void { get; set; }
@@ -2999,6 +3017,42 @@ namespace QuickType
         public Yield Yield { get; set; }
     }
 
+    public partial record Using
+    {
+        [JsonProperty("using", Required = Required.Always)]
+        public long UsingUsing { get; set; }
+    }
+
+    public partial record Utf8JsonReader
+    {
+        [JsonProperty("Utf8JsonReader", Required = Required.Always)]
+        public long Utf8JsonReaderUtf8JsonReader { get; set; }
+    }
+
+    public partial record Utf8JsonWriter
+    {
+        [JsonProperty("Utf8JsonWriter", Required = Required.Always)]
+        public long Utf8JsonWriterUtf8JsonWriter { get; set; }
+    }
+
+    public partial record Uuid
+    {
+        [JsonProperty("UUID", Required = Required.Always)]
+        public long UuidUuid { get; set; }
+    }
+
+    public partial record Var
+    {
+        [JsonProperty("var", Required = Required.Always)]
+        public long VarVar { get; set; }
+    }
+
+    public partial record Virtual
+    {
+        [JsonProperty("virtual", Required = Required.Always)]
+        public long VirtualVirtual { get; set; }
+    }
+
     public partial record Void
     {
         [JsonProperty("void", Required = Required.Always)]
diff --git a/base/dart/test/inputs/json/priority/keywords.json/default/TopLevel.dart b/head/dart/test/inputs/json/priority/keywords.json/default/TopLevel.dart
index c5f7f58..47b9e9c 100644
--- a/base/dart/test/inputs/json/priority/keywords.json/default/TopLevel.dart
+++ b/head/dart/test/inputs/json/priority/keywords.json/default/TopLevel.dart
@@ -5244,6 +5244,7 @@ class Select {
 
 class Obj5 {
     final int dummy;
+    final KSerializer kSerializer;
     final SelfClass obj5Self;
     final Set obj5Set;
     final Static obj5Static;
@@ -5257,10 +5258,13 @@ class Obj5 {
     final Try obj5Try;
     final TypeClass obj5Type;
     final Typedef obj5Typedef;
-    final Var obj5Var;
+    final PrimitiveKind primitiveKind;
     final TrueClass purpleTrue;
     final Self self;
     final Sendable sendable;
+    final SerialDescriptor serialDescriptor;
+    final SerialName serialName;
+    final Serializable serializable;
     final Serialize serialize;
     final SerializerProvider serializerProvider;
     final Short short;
@@ -5302,15 +5306,12 @@ class Obj5 {
     final Unowned unowned;
     final Unsafe unsafe;
     final Unsigned unsigned;
+    final UseSerializers useSerializers;
     final Ushort ushort;
-    final Using using;
-    final Utf8JsonReader utf8JsonReader;
-    final Utf8JsonWriter utf8JsonWriter;
-    final Uuid uuid;
-    final Virtual virtual;
 
     Obj5({
         required this.dummy,
+        required this.kSerializer,
         required this.obj5Self,
         required this.obj5Set,
         required this.obj5Static,
@@ -5324,10 +5325,13 @@ class Obj5 {
         required this.obj5Try,
         required this.obj5Type,
         required this.obj5Typedef,
-        required this.obj5Var,
+        required this.primitiveKind,
         required this.purpleTrue,
         required this.self,
         required this.sendable,
+        required this.serialDescriptor,
+        required this.serialName,
+        required this.serializable,
         required this.serialize,
         required this.serializerProvider,
         required this.short,
@@ -5369,16 +5373,13 @@ class Obj5 {
         required this.unowned,
         required this.unsafe,
         required this.unsigned,
+        required this.useSerializers,
         required this.ushort,
-        required this.using,
-        required this.utf8JsonReader,
-        required this.utf8JsonWriter,
-        required this.uuid,
-        required this.virtual,
     });
 
     factory Obj5.fromJson(Map<String, dynamic> json) => Obj5(
         dummy: json["dummy"],
+        kSerializer: KSerializer.fromJson(json["KSerializer"]),
         obj5Self: SelfClass.fromJson(json["self"]),
         obj5Set: Set.fromJson(json["set"]),
         obj5Static: Static.fromJson(json["static"]),
@@ -5392,10 +5393,13 @@ class Obj5 {
         obj5Try: Try.fromJson(json["try"]),
         obj5Type: TypeClass.fromJson(json["type"]),
         obj5Typedef: Typedef.fromJson(json["typedef"]),
-        obj5Var: Var.fromJson(json["var"]),
+        primitiveKind: PrimitiveKind.fromJson(json["PrimitiveKind"]),
         purpleTrue: TrueClass.fromJson(json["true"]),
         self: Self.fromJson(json["Self"]),
         sendable: Sendable.fromJson(json["Sendable"]),
+        serialDescriptor: SerialDescriptor.fromJson(json["SerialDescriptor"]),
+        serialName: SerialName.fromJson(json["SerialName"]),
+        serializable: Serializable.fromJson(json["Serializable"]),
         serialize: Serialize.fromJson(json["serialize"]),
         serializerProvider: SerializerProvider.fromJson(json["SerializerProvider"]),
         short: Short.fromJson(json["short"]),
@@ -5437,16 +5441,13 @@ class Obj5 {
         unowned: Unowned.fromJson(json["unowned"]),
         unsafe: Unsafe.fromJson(json["unsafe"]),
         unsigned: Unsigned.fromJson(json["unsigned"]),
+        useSerializers: UseSerializers.fromJson(json["UseSerializers"]),
         ushort: Ushort.fromJson(json["ushort"]),
-        using: Using.fromJson(json["using"]),
-        utf8JsonReader: Utf8JsonReader.fromJson(json["Utf8JsonReader"]),
-        utf8JsonWriter: Utf8JsonWriter.fromJson(json["Utf8JsonWriter"]),
-        uuid: Uuid.fromJson(json["UUID"]),
-        virtual: Virtual.fromJson(json["virtual"]),
     );
 
     Map<String, dynamic> toJson() => {
         "dummy": dummy,
+        "KSerializer": kSerializer.toJson(),
         "self": obj5Self.toJson(),
         "set": obj5Set.toJson(),
         "static": obj5Static.toJson(),
@@ -5460,10 +5461,13 @@ class Obj5 {
         "try": obj5Try.toJson(),
         "type": obj5Type.toJson(),
         "typedef": obj5Typedef.toJson(),
-        "var": obj5Var.toJson(),
+        "PrimitiveKind": primitiveKind.toJson(),
         "true": purpleTrue.toJson(),
         "Self": self.toJson(),
         "Sendable": sendable.toJson(),
+        "SerialDescriptor": serialDescriptor.toJson(),
+        "SerialName": serialName.toJson(),
+        "Serializable": serializable.toJson(),
         "serialize": serialize.toJson(),
         "SerializerProvider": serializerProvider.toJson(),
         "short": short.toJson(),
@@ -5505,12 +5509,24 @@ class Obj5 {
         "unowned": unowned.toJson(),
         "unsafe": unsafe.toJson(),
         "unsigned": unsigned.toJson(),
+        "UseSerializers": useSerializers.toJson(),
         "ushort": ushort.toJson(),
-        "using": using.toJson(),
-        "Utf8JsonReader": utf8JsonReader.toJson(),
-        "Utf8JsonWriter": utf8JsonWriter.toJson(),
-        "UUID": uuid.toJson(),
-        "virtual": virtual.toJson(),
+    };
+}
+
+class KSerializer {
+    final int kSerializer;
+
+    KSerializer({
+        required this.kSerializer,
+    });
+
+    factory KSerializer.fromJson(Map<String, dynamic> json) => KSerializer(
+        kSerializer: json["KSerializer"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "KSerializer": kSerializer,
     };
 }
 
@@ -5722,19 +5738,19 @@ class Typedef {
     };
 }
 
-class Var {
-    final int varVar;
+class PrimitiveKind {
+    final int primitiveKind;
 
-    Var({
-        required this.varVar,
+    PrimitiveKind({
+        required this.primitiveKind,
     });
 
-    factory Var.fromJson(Map<String, dynamic> json) => Var(
-        varVar: json["var"],
+    factory PrimitiveKind.fromJson(Map<String, dynamic> json) => PrimitiveKind(
+        primitiveKind: json["PrimitiveKind"],
     );
 
     Map<String, dynamic> toJson() => {
-        "var": varVar,
+        "PrimitiveKind": primitiveKind,
     };
 }
 
@@ -5786,6 +5802,54 @@ class Sendable {
     };
 }
 
+class SerialDescriptor {
+    final int serialDescriptor;
+
+    SerialDescriptor({
+        required this.serialDescriptor,
+    });
+
+    factory SerialDescriptor.fromJson(Map<String, dynamic> json) => SerialDescriptor(
+        serialDescriptor: json["SerialDescriptor"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "SerialDescriptor": serialDescriptor,
+    };
+}
+
+class SerialName {
+    final int serialName;
+
+    SerialName({
+        required this.serialName,
+    });
+
+    factory SerialName.fromJson(Map<String, dynamic> json) => SerialName(
+        serialName: json["SerialName"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "SerialName": serialName,
+    };
+}
+
+class Serializable {
+    final int serializable;
+
+    Serializable({
+        required this.serializable,
+    });
+
+    factory Serializable.fromJson(Map<String, dynamic> json) => Serializable(
+        serializable: json["Serializable"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "Serializable": serializable,
+    };
+}
+
 class Serialize {
     final int serialize;
 
@@ -6442,108 +6506,50 @@ class Unsigned {
     };
 }
 
-class Ushort {
-    final int ushort;
-
-    Ushort({
-        required this.ushort,
-    });
-
-    factory Ushort.fromJson(Map<String, dynamic> json) => Ushort(
-        ushort: json["ushort"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "ushort": ushort,
-    };
-}
-
-class Using {
-    final int using;
-
-    Using({
-        required this.using,
-    });
-
-    factory Using.fromJson(Map<String, dynamic> json) => Using(
-        using: json["using"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "using": using,
-    };
-}
-
-class Utf8JsonReader {
-    final int utf8JsonReader;
-
-    Utf8JsonReader({
-        required this.utf8JsonReader,
-    });
-
-    factory Utf8JsonReader.fromJson(Map<String, dynamic> json) => Utf8JsonReader(
-        utf8JsonReader: json["Utf8JsonReader"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "Utf8JsonReader": utf8JsonReader,
-    };
-}
-
-class Utf8JsonWriter {
-    final int utf8JsonWriter;
+class UseSerializers {
+    final int useSerializers;
 
-    Utf8JsonWriter({
-        required this.utf8JsonWriter,
+    UseSerializers({
+        required this.useSerializers,
     });
 
-    factory Utf8JsonWriter.fromJson(Map<String, dynamic> json) => Utf8JsonWriter(
-        utf8JsonWriter: json["Utf8JsonWriter"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "Utf8JsonWriter": utf8JsonWriter,
-    };
-}
-
-class Uuid {
-    final int uuid;
-
-    Uuid({
-        required this.uuid,
-    });
-
-    factory Uuid.fromJson(Map<String, dynamic> json) => Uuid(
-        uuid: json["UUID"],
+    factory UseSerializers.fromJson(Map<String, dynamic> json) => UseSerializers(
+        useSerializers: json["UseSerializers"],
     );
 
     Map<String, dynamic> toJson() => {
-        "UUID": uuid,
+        "UseSerializers": useSerializers,
     };
 }
 
-class Virtual {
-    final int virtual;
+class Ushort {
+    final int ushort;
 
-    Virtual({
-        required this.virtual,
+    Ushort({
+        required this.ushort,
     });
 
-    factory Virtual.fromJson(Map<String, dynamic> json) => Virtual(
-        virtual: json["virtual"],
+    factory Ushort.fromJson(Map<String, dynamic> json) => Ushort(
+        ushort: json["ushort"],
     );
 
     Map<String, dynamic> toJson() => {
-        "virtual": virtual,
+        "ushort": ushort,
     };
 }
 
 class Obj6 {
     final int dummy;
+    final Var obj6Var;
     final Void obj6Void;
     final While obj6While;
     final With obj6With;
     final Yield obj6Yield;
+    final Using using;
+    final Utf8JsonReader utf8JsonReader;
+    final Utf8JsonWriter utf8JsonWriter;
+    final Uuid uuid;
+    final Virtual virtual;
     final Volatile volatile;
     final WcharT wcharT;
     final Weak weak;
@@ -6555,10 +6561,16 @@ class Obj6 {
 
     Obj6({
         required this.dummy,
+        required this.obj6Var,
         required this.obj6Void,
         required this.obj6While,
         required this.obj6With,
         required this.obj6Yield,
+        required this.using,
+        required this.utf8JsonReader,
+        required this.utf8JsonWriter,
+        required this.uuid,
+        required this.virtual,
         required this.volatile,
         required this.wcharT,
         required this.weak,
@@ -6571,10 +6583,16 @@ class Obj6 {
 
     factory Obj6.fromJson(Map<String, dynamic> json) => Obj6(
         dummy: json["dummy"],
+        obj6Var: Var.fromJson(json["var"]),
         obj6Void: Void.fromJson(json["void"]),
         obj6While: While.fromJson(json["while"]),
         obj6With: With.fromJson(json["with"]),
         obj6Yield: Yield.fromJson(json["yield"]),
+        using: Using.fromJson(json["using"]),
+        utf8JsonReader: Utf8JsonReader.fromJson(json["Utf8JsonReader"]),
+        utf8JsonWriter: Utf8JsonWriter.fromJson(json["Utf8JsonWriter"]),
+        uuid: Uuid.fromJson(json["UUID"]),
+        virtual: Virtual.fromJson(json["virtual"]),
         volatile: Volatile.fromJson(json["volatile"]),
         wcharT: WcharT.fromJson(json["wchar_t"]),
         weak: Weak.fromJson(json["weak"]),
@@ -6587,10 +6605,16 @@ class Obj6 {
 
     Map<String, dynamic> toJson() => {
         "dummy": dummy,
+        "var": obj6Var.toJson(),
         "void": obj6Void.toJson(),
         "while": obj6While.toJson(),
         "with": obj6With.toJson(),
         "yield": obj6Yield.toJson(),
+        "using": using.toJson(),
+        "Utf8JsonReader": utf8JsonReader.toJson(),
+        "Utf8JsonWriter": utf8JsonWriter.toJson(),
+        "UUID": uuid.toJson(),
+        "virtual": virtual.toJson(),
         "volatile": volatile.toJson(),
         "wchar_t": wcharT.toJson(),
         "weak": weak.toJson(),
@@ -6602,6 +6626,22 @@ class Obj6 {
     };
 }
 
+class Var {
+    final int varVar;
+
+    Var({
+        required this.varVar,
+    });
+
+    factory Var.fromJson(Map<String, dynamic> json) => Var(
+        varVar: json["var"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "var": varVar,
+    };
+}
+
 class Void {
     final int voidVoid;
 
@@ -6666,6 +6706,86 @@ class Yield {
     };
 }
 
+class Using {
+    final int using;
+
+    Using({
+        required this.using,
+    });
+
+    factory Using.fromJson(Map<String, dynamic> json) => Using(
+        using: json["using"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "using": using,
+    };
+}
+
+class Utf8JsonReader {
+    final int utf8JsonReader;
+
+    Utf8JsonReader({
+        required this.utf8JsonReader,
+    });
+
+    factory Utf8JsonReader.fromJson(Map<String, dynamic> json) => Utf8JsonReader(
+        utf8JsonReader: json["Utf8JsonReader"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "Utf8JsonReader": utf8JsonReader,
+    };
+}
+
+class Utf8JsonWriter {
+    final int utf8JsonWriter;
+
+    Utf8JsonWriter({
+        required this.utf8JsonWriter,
+    });
+
+    factory Utf8JsonWriter.fromJson(Map<String, dynamic> json) => Utf8JsonWriter(
+        utf8JsonWriter: json["Utf8JsonWriter"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "Utf8JsonWriter": utf8JsonWriter,
+    };
+}
+
+class Uuid {
+    final int uuid;
+
+    Uuid({
+        required this.uuid,
+    });
+
+    factory Uuid.fromJson(Map<String, dynamic> json) => Uuid(
+        uuid: json["UUID"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "UUID": uuid,
+    };
+}
+
+class Virtual {
+    final int virtual;
+
+    Virtual({
+        required this.virtual,
+    });
+
+    factory Virtual.fromJson(Map<String, dynamic> json) => Virtual(
+        virtual: json["virtual"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "virtual": virtual,
+    };
+}
+
 class Volatile {
     final int volatile;
 
diff --git a/base/elixir/test/inputs/json/priority/keywords.json/default/QuickType.ex b/head/elixir/test/inputs/json/priority/keywords.json/default/QuickType.ex
index 9925218..6b66bb3 100644
--- a/base/elixir/test/inputs/json/priority/keywords.json/default/QuickType.ex
+++ b/head/elixir/test/inputs/json/priority/keywords.json/default/QuickType.ex
@@ -10959,6 +10959,45 @@ defmodule Obj4 do
   end
 end
 
+defmodule KSerializer do
+  @enforce_keys [:k_serializer]
+  defstruct [:k_serializer]
+
+  @type t :: %__MODULE__{
+          k_serializer: integer()
+        }
+
+  def decode_k_serializer(value) when is_integer(value), do: value
+  def decode_k_serializer(_), do: {:error, "Unexpected type when decoding KSerializer.k_serializer"}
+
+  def encode_k_serializer(value) when is_integer(value), do: value
+  def encode_k_serializer(_), do: {:error, "Unexpected type when encoding KSerializer.k_serializer"}
+
+  def from_map(m) do
+    %KSerializer{
+      k_serializer: decode_k_serializer(m["KSerializer"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "KSerializer" => struct.k_serializer,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
 defmodule SelfClass do
   @enforce_keys [:self]
   defstruct [:self]
@@ -11076,6 +11115,45 @@ defmodule TypeClass do
   end
 end
 
+defmodule PrimitiveKind do
+  @enforce_keys [:primitive_kind]
+  defstruct [:primitive_kind]
+
+  @type t :: %__MODULE__{
+          primitive_kind: integer()
+        }
+
+  def decode_primitive_kind(value) when is_integer(value), do: value
+  def decode_primitive_kind(_), do: {:error, "Unexpected type when decoding PrimitiveKind.primitive_kind"}
+
+  def encode_primitive_kind(value) when is_integer(value), do: value
+  def encode_primitive_kind(_), do: {:error, "Unexpected type when encoding PrimitiveKind.primitive_kind"}
+
+  def from_map(m) do
+    %PrimitiveKind{
+      primitive_kind: decode_primitive_kind(m["PrimitiveKind"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "PrimitiveKind" => struct.primitive_kind,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
 defmodule Self do
   @enforce_keys [:self]
   defstruct [:self]
@@ -11154,6 +11232,123 @@ defmodule Sendable do
   end
 end
 
+defmodule SerialDescriptor do
+  @enforce_keys [:serial_descriptor]
+  defstruct [:serial_descriptor]
+
+  @type t :: %__MODULE__{
+          serial_descriptor: integer()
+        }
+
+  def decode_serial_descriptor(value) when is_integer(value), do: value
+  def decode_serial_descriptor(_), do: {:error, "Unexpected type when decoding SerialDescriptor.serial_descriptor"}
+
+  def encode_serial_descriptor(value) when is_integer(value), do: value
+  def encode_serial_descriptor(_), do: {:error, "Unexpected type when encoding SerialDescriptor.serial_descriptor"}
+
+  def from_map(m) do
+    %SerialDescriptor{
+      serial_descriptor: decode_serial_descriptor(m["SerialDescriptor"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "SerialDescriptor" => struct.serial_descriptor,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule SerialName do
+  @enforce_keys [:serial_name]
+  defstruct [:serial_name]
+
+  @type t :: %__MODULE__{
+          serial_name: integer()
+        }
+
+  def decode_serial_name(value) when is_integer(value), do: value
+  def decode_serial_name(_), do: {:error, "Unexpected type when decoding SerialName.serial_name"}
+
+  def encode_serial_name(value) when is_integer(value), do: value
+  def encode_serial_name(_), do: {:error, "Unexpected type when encoding SerialName.serial_name"}
+
+  def from_map(m) do
+    %SerialName{
+      serial_name: decode_serial_name(m["SerialName"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "SerialName" => struct.serial_name,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule Serializable do
+  @enforce_keys [:serializable]
+  defstruct [:serializable]
+
+  @type t :: %__MODULE__{
+          serializable: integer()
+        }
+
+  def decode_serializable(value) when is_integer(value), do: value
+  def decode_serializable(_), do: {:error, "Unexpected type when decoding Serializable.serializable"}
+
+  def encode_serializable(value) when is_integer(value), do: value
+  def encode_serializable(_), do: {:error, "Unexpected type when encoding Serializable.serializable"}
+
+  def from_map(m) do
+    %Serializable{
+      serializable: decode_serializable(m["Serializable"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "Serializable" => struct.serializable,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
 defmodule Serialize do
   @enforce_keys [:serialize]
   defstruct [:serialize]
@@ -13182,23 +13377,23 @@ defmodule Unsigned do
   end
 end
 
-defmodule Ushort do
-  @enforce_keys [:ushort]
-  defstruct [:ushort]
+defmodule UseSerializers do
+  @enforce_keys [:use_serializers]
+  defstruct [:use_serializers]
 
   @type t :: %__MODULE__{
-          ushort: integer()
+          use_serializers: integer()
         }
 
-  def decode_ushort(value) when is_integer(value), do: value
-  def decode_ushort(_), do: {:error, "Unexpected type when decoding Ushort.ushort"}
+  def decode_use_serializers(value) when is_integer(value), do: value
+  def decode_use_serializers(_), do: {:error, "Unexpected type when decoding UseSerializers.use_serializers"}
 
-  def encode_ushort(value) when is_integer(value), do: value
-  def encode_ushort(_), do: {:error, "Unexpected type when encoding Ushort.ushort"}
+  def encode_use_serializers(value) when is_integer(value), do: value
+  def encode_use_serializers(_), do: {:error, "Unexpected type when encoding UseSerializers.use_serializers"}
 
   def from_map(m) do
-    %Ushort{
-      ushort: decode_ushort(m["ushort"]),
+    %UseSerializers{
+      use_serializers: decode_use_serializers(m["UseSerializers"]),
     }
   end
 
@@ -13210,7 +13405,7 @@ defmodule Ushort do
 
   def to_map(struct) do
     %{
-      "ushort" => struct.ushort,
+      "UseSerializers" => struct.use_serializers,
     }
   end
 
@@ -13221,23 +13416,23 @@ defmodule Ushort do
   end
 end
 
-defmodule Using do
-  @enforce_keys [:using]
-  defstruct [:using]
+defmodule Ushort do
+  @enforce_keys [:ushort]
+  defstruct [:ushort]
 
   @type t :: %__MODULE__{
-          using: integer()
+          ushort: integer()
         }
 
-  def decode_using(value) when is_integer(value), do: value
-  def decode_using(_), do: {:error, "Unexpected type when decoding Using.using"}
+  def decode_ushort(value) when is_integer(value), do: value
+  def decode_ushort(_), do: {:error, "Unexpected type when decoding Ushort.ushort"}
 
-  def encode_using(value) when is_integer(value), do: value
-  def encode_using(_), do: {:error, "Unexpected type when encoding Using.using"}
+  def encode_ushort(value) when is_integer(value), do: value
+  def encode_ushort(_), do: {:error, "Unexpected type when encoding Ushort.ushort"}
 
   def from_map(m) do
-    %Using{
-      using: decode_using(m["using"]),
+    %Ushort{
+      ushort: decode_ushort(m["ushort"]),
     }
   end
 
@@ -13249,7 +13444,7 @@ defmodule Using do
 
   def to_map(struct) do
     %{
-      "using" => struct.using,
+      "ushort" => struct.ushort,
     }
   end
 
@@ -13260,33 +13455,303 @@ defmodule Using do
   end
 end
 
-defmodule Utf8JSONReader do
-  @enforce_keys [:utf8_json_reader]
-  defstruct [:utf8_json_reader]
+defmodule Obj5 do
+  @enforce_keys [:dummy, :k_serializer, :obj5_self, :obj5_true, :obj5_type, :primitive_kind, :self, :sendable, :serial_descriptor, :serial_name, :serializable, :serialize, :serializer_provider, :set, :short, :signed, :simple_module, :sizeof, :stackalloc, :standards, :static, :static_assert, :static_cast, :std_deserializer, :std_serializer, :strictfp, :string, :struct, :subscript, :super, :switch, :symbol, :synchronized, :system, :template, :then, :this, :thread_local, :throw, :throws, :time_only, :time_only_converter, :time_zone, :to_json, :to_string, :top_level, :transient, :true_1, :try, :type, :typealias, :typedef, :typeid, :typename, :typeof, :uint, :ulong, :unchecked, :undefined, :union, :unowned, :unsafe, :unsigned, :use_serializers, :ushort]
+  defstruct [:dummy, :k_serializer, :obj5_self, :obj5_true, :obj5_type, :primitive_kind, :self, :sendable, :serial_descriptor, :serial_name, :serializable, :serialize, :serializer_provider, :set, :short, :signed, :simple_module, :sizeof, :stackalloc, :standards, :static, :static_assert, :static_cast, :std_deserializer, :std_serializer, :strictfp, :string, :struct, :subscript, :super, :switch, :symbol, :synchronized, :system, :template, :then, :this, :thread_local, :throw, :throws, :time_only, :time_only_converter, :time_zone, :to_json, :to_string, :top_level, :transient, :true_1, :try, :type, :typealias, :typedef, :typeid, :typename, :typeof, :uint, :ulong, :unchecked, :undefined, :union, :unowned, :unsafe, :unsigned, :use_serializers, :ushort]
 
   @type t :: %__MODULE__{
-          utf8_json_reader: integer()
+          dummy: integer(),
+          k_serializer: KSerializer.t(),
+          obj5_self: SelfClass.t(),
+          obj5_true: TrueClass.t(),
+          obj5_type: TypeClass.t(),
+          primitive_kind: PrimitiveKind.t(),
+          self: Self.t(),
+          sendable: Sendable.t(),
+          serial_descriptor: SerialDescriptor.t(),
+          serial_name: SerialName.t(),
+          serializable: Serializable.t(),
+          serialize: Serialize.t(),
+          serializer_provider: SerializerProvider.t(),
+          set: SetClass.t(),
+          short: Short.t(),
+          signed: Signed.t(),
+          simple_module: SimpleModule.t(),
+          sizeof: Sizeof.t(),
+          stackalloc: Stackalloc.t(),
+          standards: Standards.t(),
+          static: Static.t(),
+          static_assert: StaticAssert.t(),
+          static_cast: StaticCast.t(),
+          std_deserializer: StdDeserializer.t(),
+          std_serializer: StdSerializer.t(),
+          strictfp: Strictfp.t(),
+          string: StringClass.t(),
+          struct: Struct.t(),
+          subscript: Subscript.t(),
+          super: Super.t(),
+          switch: Switch.t(),
+          symbol: Symbol.t(),
+          synchronized: Synchronized.t(),
+          system: SystemClass.t(),
+          template: Template.t(),
+          then: Then.t(),
+          this: This.t(),
+          thread_local: ThreadLocal.t(),
+          throw: Throw.t(),
+          throws: Throws.t(),
+          time_only: TimeOnly.t(),
+          time_only_converter: TimeOnlyConverter.t(),
+          time_zone: TimeZone.t(),
+          to_json: ToJSON.t(),
+          to_string: ToString.t(),
+          top_level: TopLevelClass.t(),
+          transient: Transient.t(),
+          true_1: Obj5True.t(),
+          try: Try.t(),
+          type: Type.t(),
+          typealias: Typealias.t(),
+          typedef: Typedef.t(),
+          typeid: Typeid.t(),
+          typename: Typename.t(),
+          typeof: Typeof.t(),
+          uint: Uint.t(),
+          ulong: Ulong.t(),
+          unchecked: Unchecked.t(),
+          undefined: Undefined.t(),
+          union: Union.t(),
+          unowned: Unowned.t(),
+          unsafe: Unsafe.t(),
+          unsigned: Unsigned.t(),
+          use_serializers: UseSerializers.t(),
+          ushort: Ushort.t()
         }
 
-  def decode_utf8_json_reader(value) when is_integer(value), do: value
-  def decode_utf8_json_reader(_), do: {:error, "Unexpected type when decoding Utf8JSONReader.utf8_json_reader"}
+  def decode_dummy(value) when is_integer(value), do: value
+  def decode_dummy(_), do: {:error, "Unexpected type when decoding Obj5.dummy"}
 
-  def encode_utf8_json_reader(value) when is_integer(value), do: value
-  def encode_utf8_json_reader(_), do: {:error, "Unexpected type when encoding Utf8JSONReader.utf8_json_reader"}
+  def encode_dummy(value) when is_integer(value), do: value
+  def encode_dummy(_), do: {:error, "Unexpected type when encoding Obj5.dummy"}
 
   def from_map(m) do
-    %Utf8JSONReader{
-      utf8_json_reader: decode_utf8_json_reader(m["Utf8JsonReader"]),
-    }
-  end
-
-  def from_json(json) do
-    json
-          |> Jason.decode!()
-          |> from_map()
-  end
-
-  def to_map(struct) do
+    %Obj5{
+      dummy: decode_dummy(m["dummy"]),
+      k_serializer: KSerializer.from_map(m["KSerializer"]),
+      obj5_self: SelfClass.from_map(m["self"]),
+      obj5_true: TrueClass.from_map(m["True"]),
+      obj5_type: TypeClass.from_map(m["type"]),
+      primitive_kind: PrimitiveKind.from_map(m["PrimitiveKind"]),
+      self: Self.from_map(m["Self"]),
+      sendable: Sendable.from_map(m["Sendable"]),
+      serial_descriptor: SerialDescriptor.from_map(m["SerialDescriptor"]),
+      serial_name: SerialName.from_map(m["SerialName"]),
+      serializable: Serializable.from_map(m["Serializable"]),
+      serialize: Serialize.from_map(m["serialize"]),
+      serializer_provider: SerializerProvider.from_map(m["SerializerProvider"]),
+      set: SetClass.from_map(m["set"]),
+      short: Short.from_map(m["short"]),
+      signed: Signed.from_map(m["signed"]),
+      simple_module: SimpleModule.from_map(m["SimpleModule"]),
+      sizeof: Sizeof.from_map(m["sizeof"]),
+      stackalloc: Stackalloc.from_map(m["stackalloc"]),
+      standards: Standards.from_map(m["Standards"]),
+      static: Static.from_map(m["static"]),
+      static_assert: StaticAssert.from_map(m["static_assert"]),
+      static_cast: StaticCast.from_map(m["static_cast"]),
+      std_deserializer: StdDeserializer.from_map(m["StdDeserializer"]),
+      std_serializer: StdSerializer.from_map(m["StdSerializer"]),
+      strictfp: Strictfp.from_map(m["strictfp"]),
+      string: StringClass.from_map(m["string"]),
+      struct: Struct.from_map(m["struct"]),
+      subscript: Subscript.from_map(m["subscript"]),
+      super: Super.from_map(m["super"]),
+      switch: Switch.from_map(m["switch"]),
+      symbol: Symbol.from_map(m["symbol"]),
+      synchronized: Synchronized.from_map(m["synchronized"]),
+      system: SystemClass.from_map(m["system"]),
+      template: Template.from_map(m["template"]),
+      then: Then.from_map(m["then"]),
+      this: This.from_map(m["this"]),
+      thread_local: ThreadLocal.from_map(m["thread_local"]),
+      throw: Throw.from_map(m["throw"]),
+      throws: Throws.from_map(m["throws"]),
+      time_only: TimeOnly.from_map(m["TimeOnly"]),
+      time_only_converter: TimeOnlyConverter.from_map(m["TimeOnlyConverter"]),
+      time_zone: TimeZone.from_map(m["TimeZone"]),
+      to_json: ToJSON.from_map(m["to_json"]),
+      to_string: ToString.from_map(m["toString"]),
+      top_level: TopLevelClass.from_map(m["top_level"]),
+      transient: Transient.from_map(m["transient"]),
+      true_1: Obj5True.from_map(m["true"]),
+      try: Try.from_map(m["try"]),
+      type: Type.from_map(m["Type"]),
+      typealias: Typealias.from_map(m["typealias"]),
+      typedef: Typedef.from_map(m["typedef"]),
+      typeid: Typeid.from_map(m["typeid"]),
+      typename: Typename.from_map(m["typename"]),
+      typeof: Typeof.from_map(m["typeof"]),
+      uint: Uint.from_map(m["uint"]),
+      ulong: Ulong.from_map(m["ulong"]),
+      unchecked: Unchecked.from_map(m["unchecked"]),
+      undefined: Undefined.from_map(m["undefined"]),
+      union: Union.from_map(m["union"]),
+      unowned: Unowned.from_map(m["unowned"]),
+      unsafe: Unsafe.from_map(m["unsafe"]),
+      unsigned: Unsigned.from_map(m["unsigned"]),
+      use_serializers: UseSerializers.from_map(m["UseSerializers"]),
+      ushort: Ushort.from_map(m["ushort"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "dummy" => struct.dummy,
+      "KSerializer" => KSerializer.to_map(struct.k_serializer),
+      "self" => SelfClass.to_map(struct.obj5_self),
+      "True" => TrueClass.to_map(struct.obj5_true),
+      "type" => TypeClass.to_map(struct.obj5_type),
+      "PrimitiveKind" => PrimitiveKind.to_map(struct.primitive_kind),
+      "Self" => Self.to_map(struct.self),
+      "Sendable" => Sendable.to_map(struct.sendable),
+      "SerialDescriptor" => SerialDescriptor.to_map(struct.serial_descriptor),
+      "SerialName" => SerialName.to_map(struct.serial_name),
+      "Serializable" => Serializable.to_map(struct.serializable),
+      "serialize" => Serialize.to_map(struct.serialize),
+      "SerializerProvider" => SerializerProvider.to_map(struct.serializer_provider),
+      "set" => SetClass.to_map(struct.set),
+      "short" => Short.to_map(struct.short),
+      "signed" => Signed.to_map(struct.signed),
+      "SimpleModule" => SimpleModule.to_map(struct.simple_module),
+      "sizeof" => Sizeof.to_map(struct.sizeof),
+      "stackalloc" => Stackalloc.to_map(struct.stackalloc),
+      "Standards" => Standards.to_map(struct.standards),
+      "static" => Static.to_map(struct.static),
+      "static_assert" => StaticAssert.to_map(struct.static_assert),
+      "static_cast" => StaticCast.to_map(struct.static_cast),
+      "StdDeserializer" => StdDeserializer.to_map(struct.std_deserializer),
+      "StdSerializer" => StdSerializer.to_map(struct.std_serializer),
+      "strictfp" => Strictfp.to_map(struct.strictfp),
+      "string" => StringClass.to_map(struct.string),
+      "struct" => Struct.to_map(struct.struct),
+      "subscript" => Subscript.to_map(struct.subscript),
+      "super" => Super.to_map(struct.super),
+      "switch" => Switch.to_map(struct.switch),
+      "symbol" => Symbol.to_map(struct.symbol),
+      "synchronized" => Synchronized.to_map(struct.synchronized),
+      "system" => SystemClass.to_map(struct.system),
+      "template" => Template.to_map(struct.template),
+      "then" => Then.to_map(struct.then),
+      "this" => This.to_map(struct.this),
+      "thread_local" => ThreadLocal.to_map(struct.thread_local),
+      "throw" => Throw.to_map(struct.throw),
+      "throws" => Throws.to_map(struct.throws),
+      "TimeOnly" => TimeOnly.to_map(struct.time_only),
+      "TimeOnlyConverter" => TimeOnlyConverter.to_map(struct.time_only_converter),
+      "TimeZone" => TimeZone.to_map(struct.time_zone),
+      "to_json" => ToJSON.to_map(struct.to_json),
+      "toString" => ToString.to_map(struct.to_string),
+      "top_level" => TopLevelClass.to_map(struct.top_level),
+      "transient" => Transient.to_map(struct.transient),
+      "true" => Obj5True.to_map(struct.true_1),
+      "try" => Try.to_map(struct.try),
+      "Type" => Type.to_map(struct.type),
+      "typealias" => Typealias.to_map(struct.typealias),
+      "typedef" => Typedef.to_map(struct.typedef),
+      "typeid" => Typeid.to_map(struct.typeid),
+      "typename" => Typename.to_map(struct.typename),
+      "typeof" => Typeof.to_map(struct.typeof),
+      "uint" => Uint.to_map(struct.uint),
+      "ulong" => Ulong.to_map(struct.ulong),
+      "unchecked" => Unchecked.to_map(struct.unchecked),
+      "undefined" => Undefined.to_map(struct.undefined),
+      "union" => Union.to_map(struct.union),
+      "unowned" => Unowned.to_map(struct.unowned),
+      "unsafe" => Unsafe.to_map(struct.unsafe),
+      "unsigned" => Unsigned.to_map(struct.unsigned),
+      "UseSerializers" => UseSerializers.to_map(struct.use_serializers),
+      "ushort" => Ushort.to_map(struct.ushort),
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule Using do
+  @enforce_keys [:using]
+  defstruct [:using]
+
+  @type t :: %__MODULE__{
+          using: integer()
+        }
+
+  def decode_using(value) when is_integer(value), do: value
+  def decode_using(_), do: {:error, "Unexpected type when decoding Using.using"}
+
+  def encode_using(value) when is_integer(value), do: value
+  def encode_using(_), do: {:error, "Unexpected type when encoding Using.using"}
+
+  def from_map(m) do
+    %Using{
+      using: decode_using(m["using"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "using" => struct.using,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule Utf8JSONReader do
+  @enforce_keys [:utf8_json_reader]
+  defstruct [:utf8_json_reader]
+
+  @type t :: %__MODULE__{
+          utf8_json_reader: integer()
+        }
+
+  def decode_utf8_json_reader(value) when is_integer(value), do: value
+  def decode_utf8_json_reader(_), do: {:error, "Unexpected type when decoding Utf8JSONReader.utf8_json_reader"}
+
+  def encode_utf8_json_reader(value) when is_integer(value), do: value
+  def encode_utf8_json_reader(_), do: {:error, "Unexpected type when encoding Utf8JSONReader.utf8_json_reader"}
+
+  def from_map(m) do
+    %Utf8JSONReader{
+      utf8_json_reader: decode_utf8_json_reader(m["Utf8JsonReader"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
     %{
       "Utf8JsonReader" => struct.utf8_json_reader,
     }
@@ -13455,237 +13920,6 @@ defmodule Virtual do
   end
 end
 
-defmodule Obj5 do
-  @enforce_keys [:dummy, :obj5_self, :obj5_true, :obj5_type, :self, :sendable, :serialize, :serializer_provider, :set, :short, :signed, :simple_module, :sizeof, :stackalloc, :standards, :static, :static_assert, :static_cast, :std_deserializer, :std_serializer, :strictfp, :string, :struct, :subscript, :super, :switch, :symbol, :synchronized, :system, :template, :then, :this, :thread_local, :throw, :throws, :time_only, :time_only_converter, :time_zone, :to_json, :to_string, :top_level, :transient, :true_1, :try, :type, :typealias, :typedef, :typeid, :typename, :typeof, :uint, :ulong, :unchecked, :undefined, :union, :unowned, :unsafe, :unsigned, :ushort, :using, :utf8_json_reader, :utf8_json_writer, :uuid, :var, :virtual]
-  defstruct [:dummy, :obj5_self, :obj5_true, :obj5_type, :self, :sendable, :serialize, :serializer_provider, :set, :short, :signed, :simple_module, :sizeof, :stackalloc, :standards, :static, :static_assert, :static_cast, :std_deserializer, :std_serializer, :strictfp, :string, :struct, :subscript, :super, :switch, :symbol, :synchronized, :system, :template, :then, :this, :thread_local, :throw, :throws, :time_only, :time_only_converter, :time_zone, :to_json, :to_string, :top_level, :transient, :true_1, :try, :type, :typealias, :typedef, :typeid, :typename, :typeof, :uint, :ulong, :unchecked, :undefined, :union, :unowned, :unsafe, :unsigned, :ushort, :using, :utf8_json_reader, :utf8_json_writer, :uuid, :var, :virtual]
-
-  @type t :: %__MODULE__{
-          dummy: integer(),
-          obj5_self: SelfClass.t(),
-          obj5_true: TrueClass.t(),
-          obj5_type: TypeClass.t(),
-          self: Self.t(),
-          sendable: Sendable.t(),
-          serialize: Serialize.t(),
-          serializer_provider: SerializerProvider.t(),
-          set: SetClass.t(),
-          short: Short.t(),
-          signed: Signed.t(),
-          simple_module: SimpleModule.t(),
-          sizeof: Sizeof.t(),
-          stackalloc: Stackalloc.t(),
-          standards: Standards.t(),
-          static: Static.t(),
-          static_assert: StaticAssert.t(),
-          static_cast: StaticCast.t(),
-          std_deserializer: StdDeserializer.t(),
-          std_serializer: StdSerializer.t(),
-          strictfp: Strictfp.t(),
-          string: StringClass.t(),
-          struct: Struct.t(),
-          subscript: Subscript.t(),
-          super: Super.t(),
-          switch: Switch.t(),
-          symbol: Symbol.t(),
-          synchronized: Synchronized.t(),
-          system: SystemClass.t(),
-          template: Template.t(),
-          then: Then.t(),
-          this: This.t(),
-          thread_local: ThreadLocal.t(),
-          throw: Throw.t(),
-          throws: Throws.t(),
-          time_only: TimeOnly.t(),
-          time_only_converter: TimeOnlyConverter.t(),
-          time_zone: TimeZone.t(),
-          to_json: ToJSON.t(),
-          to_string: ToString.t(),
-          top_level: TopLevelClass.t(),
-          transient: Transient.t(),
-          true_1: Obj5True.t(),
-          try: Try.t(),
-          type: Type.t(),
-          typealias: Typealias.t(),
-          typedef: Typedef.t(),
-          typeid: Typeid.t(),
-          typename: Typename.t(),
-          typeof: Typeof.t(),
-          uint: Uint.t(),
-          ulong: Ulong.t(),
-          unchecked: Unchecked.t(),
-          undefined: Undefined.t(),
-          union: Union.t(),
-          unowned: Unowned.t(),
-          unsafe: Unsafe.t(),
-          unsigned: Unsigned.t(),
-          ushort: Ushort.t(),
-          using: Using.t(),
-          utf8_json_reader: Utf8JSONReader.t(),
-          utf8_json_writer: Utf8JSONWriter.t(),
-          uuid: UUID.t(),
-          var: Var.t(),
-          virtual: Virtual.t()
-        }
-
-  def decode_dummy(value) when is_integer(value), do: value
-  def decode_dummy(_), do: {:error, "Unexpected type when decoding Obj5.dummy"}
-
-  def encode_dummy(value) when is_integer(value), do: value
-  def encode_dummy(_), do: {:error, "Unexpected type when encoding Obj5.dummy"}
-
-  def from_map(m) do
-    %Obj5{
-      dummy: decode_dummy(m["dummy"]),
-      obj5_self: SelfClass.from_map(m["self"]),
-      obj5_true: TrueClass.from_map(m["True"]),
-      obj5_type: TypeClass.from_map(m["type"]),
-      self: Self.from_map(m["Self"]),
-      sendable: Sendable.from_map(m["Sendable"]),
-      serialize: Serialize.from_map(m["serialize"]),
-      serializer_provider: SerializerProvider.from_map(m["SerializerProvider"]),
-      set: SetClass.from_map(m["set"]),
-      short: Short.from_map(m["short"]),
-      signed: Signed.from_map(m["signed"]),
-      simple_module: SimpleModule.from_map(m["SimpleModule"]),
-      sizeof: Sizeof.from_map(m["sizeof"]),
-      stackalloc: Stackalloc.from_map(m["stackalloc"]),
-      standards: Standards.from_map(m["Standards"]),
-      static: Static.from_map(m["static"]),
-      static_assert: StaticAssert.from_map(m["static_assert"]),
-      static_cast: StaticCast.from_map(m["static_cast"]),
-      std_deserializer: StdDeserializer.from_map(m["StdDeserializer"]),
-      std_serializer: StdSerializer.from_map(m["StdSerializer"]),
-      strictfp: Strictfp.from_map(m["strictfp"]),
-      string: StringClass.from_map(m["string"]),
-      struct: Struct.from_map(m["struct"]),
-      subscript: Subscript.from_map(m["subscript"]),
-      super: Super.from_map(m["super"]),
-      switch: Switch.from_map(m["switch"]),
-      symbol: Symbol.from_map(m["symbol"]),
-      synchronized: Synchronized.from_map(m["synchronized"]),
-      system: SystemClass.from_map(m["system"]),
-      template: Template.from_map(m["template"]),
-      then: Then.from_map(m["then"]),
-      this: This.from_map(m["this"]),
-      thread_local: ThreadLocal.from_map(m["thread_local"]),
-      throw: Throw.from_map(m["throw"]),
-      throws: Throws.from_map(m["throws"]),
-      time_only: TimeOnly.from_map(m["TimeOnly"]),
-      time_only_converter: TimeOnlyConverter.from_map(m["TimeOnlyConverter"]),
-      time_zone: TimeZone.from_map(m["TimeZone"]),
-      to_json: ToJSON.from_map(m["to_json"]),
-      to_string: ToString.from_map(m["toString"]),
-      top_level: TopLevelClass.from_map(m["top_level"]),
-      transient: Transient.from_map(m["transient"]),
-      true_1: Obj5True.from_map(m["true"]),
-      try: Try.from_map(m["try"]),
-      type: Type.from_map(m["Type"]),
-      typealias: Typealias.from_map(m["typealias"]),
-      typedef: Typedef.from_map(m["typedef"]),
-      typeid: Typeid.from_map(m["typeid"]),
-      typename: Typename.from_map(m["typename"]),
-      typeof: Typeof.from_map(m["typeof"]),
-      uint: Uint.from_map(m["uint"]),
-      ulong: Ulong.from_map(m["ulong"]),
-      unchecked: Unchecked.from_map(m["unchecked"]),
-      undefined: Undefined.from_map(m["undefined"]),
-      union: Union.from_map(m["union"]),
-      unowned: Unowned.from_map(m["unowned"]),
-      unsafe: Unsafe.from_map(m["unsafe"]),
-      unsigned: Unsigned.from_map(m["unsigned"]),
-      ushort: Ushort.from_map(m["ushort"]),
-      using: Using.from_map(m["using"]),
-      utf8_json_reader: Utf8JSONReader.from_map(m["Utf8JsonReader"]),
-      utf8_json_writer: Utf8JSONWriter.from_map(m["Utf8JsonWriter"]),
-      uuid: UUID.from_map(m["UUID"]),
-      var: Var.from_map(m["var"]),
-      virtual: Virtual.from_map(m["virtual"]),
-    }
-  end
-
-  def from_json(json) do
-    json
-          |> Jason.decode!()
-          |> from_map()
-  end
-
-  def to_map(struct) do
-    %{
-      "dummy" => struct.dummy,
-      "self" => SelfClass.to_map(struct.obj5_self),
-      "True" => TrueClass.to_map(struct.obj5_true),
-      "type" => TypeClass.to_map(struct.obj5_type),
-      "Self" => Self.to_map(struct.self),
-      "Sendable" => Sendable.to_map(struct.sendable),
-      "serialize" => Serialize.to_map(struct.serialize),
-      "SerializerProvider" => SerializerProvider.to_map(struct.serializer_provider),
-      "set" => SetClass.to_map(struct.set),
-      "short" => Short.to_map(struct.short),
-      "signed" => Signed.to_map(struct.signed),
-      "SimpleModule" => SimpleModule.to_map(struct.simple_module),
-      "sizeof" => Sizeof.to_map(struct.sizeof),
-      "stackalloc" => Stackalloc.to_map(struct.stackalloc),
-      "Standards" => Standards.to_map(struct.standards),
-      "static" => Static.to_map(struct.static),
-      "static_assert" => StaticAssert.to_map(struct.static_assert),
-      "static_cast" => StaticCast.to_map(struct.static_cast),
-      "StdDeserializer" => StdDeserializer.to_map(struct.std_deserializer),
-      "StdSerializer" => StdSerializer.to_map(struct.std_serializer),
-      "strictfp" => Strictfp.to_map(struct.strictfp),
-      "string" => StringClass.to_map(struct.string),
-      "struct" => Struct.to_map(struct.struct),
-      "subscript" => Subscript.to_map(struct.subscript),
-      "super" => Super.to_map(struct.super),
-      "switch" => Switch.to_map(struct.switch),
-      "symbol" => Symbol.to_map(struct.symbol),
-      "synchronized" => Synchronized.to_map(struct.synchronized),
-      "system" => SystemClass.to_map(struct.system),
-      "template" => Template.to_map(struct.template),
-      "then" => Then.to_map(struct.then),
-      "this" => This.to_map(struct.this),
-      "thread_local" => ThreadLocal.to_map(struct.thread_local),
-      "throw" => Throw.to_map(struct.throw),
-      "throws" => Throws.to_map(struct.throws),
-      "TimeOnly" => TimeOnly.to_map(struct.time_only),
-      "TimeOnlyConverter" => TimeOnlyConverter.to_map(struct.time_only_converter),
-      "TimeZone" => TimeZone.to_map(struct.time_zone),
-      "to_json" => ToJSON.to_map(struct.to_json),
-      "toString" => ToString.to_map(struct.to_string),
-      "top_level" => TopLevelClass.to_map(struct.top_level),
-      "transient" => Transient.to_map(struct.transient),
-      "true" => Obj5True.to_map(struct.true_1),
-      "try" => Try.to_map(struct.try),
-      "Type" => Type.to_map(struct.type),
-      "typealias" => Typealias.to_map(struct.typealias),
-      "typedef" => Typedef.to_map(struct.typedef),
-      "typeid" => Typeid.to_map(struct.typeid),
-      "typename" => Typename.to_map(struct.typename),
-      "typeof" => Typeof.to_map(struct.typeof),
-      "uint" => Uint.to_map(struct.uint),
-      "ulong" => Ulong.to_map(struct.ulong),
-      "unchecked" => Unchecked.to_map(struct.unchecked),
-      "undefined" => Undefined.to_map(struct.undefined),
-      "union" => Union.to_map(struct.union),
-      "unowned" => Unowned.to_map(struct.unowned),
-      "unsafe" => Unsafe.to_map(struct.unsafe),
-      "unsigned" => Unsigned.to_map(struct.unsigned),
-      "ushort" => Ushort.to_map(struct.ushort),
-      "using" => Using.to_map(struct.using),
-      "Utf8JsonReader" => Utf8JSONReader.to_map(struct.utf8_json_reader),
-      "Utf8JsonWriter" => Utf8JSONWriter.to_map(struct.utf8_json_writer),
-      "UUID" => UUID.to_map(struct.uuid),
-      "var" => Var.to_map(struct.var),
-      "virtual" => Virtual.to_map(struct.virtual),
-    }
-  end
-
-  def to_json(struct) do
-    struct
-          |> to_map()
-          |> Jason.encode!()
-  end
-end
-
 defmodule Void do
   @enforce_keys [:void]
   defstruct [:void]
@@ -14155,11 +14389,17 @@ defmodule Yield do
 end
 
 defmodule Obj6 do
-  @enforce_keys [:dummy, :void, :volatile, :wchar_t, :weak, :where, :while, :will_set, :with, :xor, :xor_eq, :yes, :yield]
-  defstruct [:dummy, :void, :volatile, :wchar_t, :weak, :where, :while, :will_set, :with, :xor, :xor_eq, :yes, :yield]
+  @enforce_keys [:dummy, :using, :utf8_json_reader, :utf8_json_writer, :uuid, :var, :virtual, :void, :volatile, :wchar_t, :weak, :where, :while, :will_set, :with, :xor, :xor_eq, :yes, :yield]
+  defstruct [:dummy, :using, :utf8_json_reader, :utf8_json_writer, :uuid, :var, :virtual, :void, :volatile, :wchar_t, :weak, :where, :while, :will_set, :with, :xor, :xor_eq, :yes, :yield]
 
   @type t :: %__MODULE__{
           dummy: integer(),
+          using: Using.t(),
+          utf8_json_reader: Utf8JSONReader.t(),
+          utf8_json_writer: Utf8JSONWriter.t(),
+          uuid: UUID.t(),
+          var: Var.t(),
+          virtual: Virtual.t(),
           void: Void.t(),
           volatile: Volatile.t(),
           wchar_t: WcharT.t(),
@@ -14183,6 +14423,12 @@ defmodule Obj6 do
   def from_map(m) do
     %Obj6{
       dummy: decode_dummy(m["dummy"]),
+      using: Using.from_map(m["using"]),
+      utf8_json_reader: Utf8JSONReader.from_map(m["Utf8JsonReader"]),
+      utf8_json_writer: Utf8JSONWriter.from_map(m["Utf8JsonWriter"]),
+      uuid: UUID.from_map(m["UUID"]),
+      var: Var.from_map(m["var"]),
+      virtual: Virtual.from_map(m["virtual"]),
       void: Void.from_map(m["void"]),
       volatile: Volatile.from_map(m["volatile"]),
       wchar_t: WcharT.from_map(m["wchar_t"]),
@@ -14207,6 +14453,12 @@ defmodule Obj6 do
   def to_map(struct) do
     %{
       "dummy" => struct.dummy,
+      "using" => Using.to_map(struct.using),
+      "Utf8JsonReader" => Utf8JSONReader.to_map(struct.utf8_json_reader),
+      "Utf8JsonWriter" => Utf8JSONWriter.to_map(struct.utf8_json_writer),
+      "UUID" => UUID.to_map(struct.uuid),
+      "var" => Var.to_map(struct.var),
+      "virtual" => Virtual.to_map(struct.virtual),
       "void" => Void.to_map(struct.void),
       "volatile" => Volatile.to_map(struct.volatile),
       "wchar_t" => WcharT.to_map(struct.wchar_t),
diff --git a/base/elm/test/inputs/json/priority/keywords.json/default/QuickType.elm b/head/elm/test/inputs/json/priority/keywords.json/default/QuickType.elm
index 252427d..2cf97f0 100644
--- a/base/elm/test/inputs/json/priority/keywords.json/default/QuickType.elm
+++ b/head/elm/test/inputs/json/priority/keywords.json/default/QuickType.elm
@@ -276,14 +276,19 @@ module QuickType exposing
     , Sel
     , Select
     , Obj5
+    , KSerializer
     , SelfClass
     , StringClass
     , Then
     , Obj5True
     , Type
+    , PrimitiveKind
     , TypeClass
     , Self
     , Sendable
+    , SerialDescriptor
+    , SerialName
+    , Serializable
     , Serialize
     , SerializerProvider
     , Set
@@ -333,15 +338,16 @@ module QuickType exposing
     , Unowned
     , Unsafe
     , Unsigned
+    , UseSerializers
     , Ushort
+    , Obj6
+    , Where
     , Using
     , Utf8JSONReader
     , Utf8JSONWriter
     , UUID
     , Var
     , Virtual
-    , Obj6
-    , Where
     , Void
     , Volatile
     , WcharT
@@ -1673,14 +1679,19 @@ type alias Select =
 
 type alias Obj5 =
     { dummy : Int
+    , kSerializer : KSerializer
     , obj5Self : SelfClass
     , obj5String : StringClass
     , obj5Then : Then
     , obj5True : Obj5True
     , obj5Type : Type
+    , primitiveKind : PrimitiveKind
     , purpleType : TypeClass
     , self : Self
     , sendable : Sendable
+    , serialDescriptor : SerialDescriptor
+    , serialName : SerialName
+    , serializable : Serializable
     , serialize : Serialize
     , serializerProvider : SerializerProvider
     , set : Set
@@ -1730,13 +1741,12 @@ type alias Obj5 =
     , unowned : Unowned
     , unsafe : Unsafe
     , unsigned : Unsigned
+    , useSerializers : UseSerializers
     , ushort : Ushort
-    , using : Using
-    , utf8JSONReader : Utf8JSONReader
-    , utf8JSONWriter : Utf8JSONWriter
-    , uuid : UUID
-    , var : Var
-    , virtual : Virtual
+    }
+
+type alias KSerializer =
+    { kSerializer : Int
     }
 
 type alias SelfClass =
@@ -1759,6 +1769,10 @@ type alias Type =
     { typeType : Int
     }
 
+type alias PrimitiveKind =
+    { primitiveKind : Int
+    }
+
 type alias TypeClass =
     { typeType : Int
     }
@@ -1771,6 +1785,18 @@ type alias Sendable =
     { sendable : Int
     }
 
+type alias SerialDescriptor =
+    { serialDescriptor : Int
+    }
+
+type alias SerialName =
+    { serialName : Int
+    }
+
+type alias Serializable =
+    { serializable : Int
+    }
+
 type alias Serialize =
     { serialize : Int
     }
@@ -1967,10 +1993,40 @@ type alias Unsigned =
     { unsigned : Int
     }
 
+type alias UseSerializers =
+    { useSerializers : Int
+    }
+
 type alias Ushort =
     { ushort : Int
     }
 
+type alias Obj6 =
+    { dummy : Int
+    , obj6Where : Where
+    , using : Using
+    , utf8JSONReader : Utf8JSONReader
+    , utf8JSONWriter : Utf8JSONWriter
+    , uuid : UUID
+    , var : Var
+    , virtual : Virtual
+    , void : Void
+    , volatile : Volatile
+    , wcharT : WcharT
+    , weak : Weak
+    , while : While
+    , willSet : WillSet
+    , with : With
+    , xor : Xor
+    , xorEq : XorEq
+    , yes : Yes
+    , yield : Yield
+    }
+
+type alias Where =
+    { whereWhere : Int
+    }
+
 type alias Using =
     { using : Int
     }
@@ -1995,26 +2051,6 @@ type alias Virtual =
     { virtual : Int
     }
 
-type alias Obj6 =
-    { dummy : Int
-    , obj6Where : Where
-    , void : Void
-    , volatile : Volatile
-    , wcharT : WcharT
-    , weak : Weak
-    , while : While
-    , willSet : WillSet
-    , with : With
-    , xor : Xor
-    , xorEq : XorEq
-    , yes : Yes
-    , yield : Yield
-    }
-
-type alias Where =
-    { whereWhere : Int
-    }
-
 type alias Void =
     { void : Int
     }
@@ -5484,14 +5520,19 @@ obj5 : Jdec.Decoder Obj5
 obj5 =
     Jdec.succeed Obj5
         |> Jpipe.required "dummy" Jdec.int
+        |> Jpipe.required "KSerializer" kSerializer
         |> Jpipe.required "self" selfClass
         |> Jpipe.required "string" stringClass
         |> Jpipe.required "then" purpleThen
         |> Jpipe.required "true" obj5True
         |> Jpipe.required "Type" purpleType
+        |> Jpipe.required "PrimitiveKind" primitiveKind
         |> Jpipe.required "type" typeClass
         |> Jpipe.required "Self" self
         |> Jpipe.required "Sendable" sendable
+        |> Jpipe.required "SerialDescriptor" serialDescriptor
+        |> Jpipe.required "SerialName" serialName
+        |> Jpipe.required "Serializable" serializable
         |> Jpipe.required "serialize" serialize
         |> Jpipe.required "SerializerProvider" serializerProvider
         |> Jpipe.required "set" set
@@ -5541,26 +5582,26 @@ obj5 =
         |> Jpipe.required "unowned" unowned
         |> Jpipe.required "unsafe" unsafe
         |> Jpipe.required "unsigned" unsigned
+        |> Jpipe.required "UseSerializers" useSerializers
         |> Jpipe.required "ushort" ushort
-        |> Jpipe.required "using" using
-        |> Jpipe.required "Utf8JsonReader" utf8JSONReader
-        |> Jpipe.required "Utf8JsonWriter" utf8JSONWriter
-        |> Jpipe.required "UUID" uuid
-        |> Jpipe.required "var" var
-        |> Jpipe.required "virtual" virtual
 
 encodeObj5 : Obj5 -> Jenc.Value
 encodeObj5 x =
     Jenc.object
         [ ("dummy", Jenc.int x.dummy)
+        , ("KSerializer", encodeKSerializer x.kSerializer)
         , ("self", encodeSelfClass x.obj5Self)
         , ("string", encodeStringClass x.obj5String)
         , ("then", encodeThen x.obj5Then)
         , ("true", encodeObj5True x.obj5True)
         , ("Type", encodeType x.obj5Type)
+        , ("PrimitiveKind", encodePrimitiveKind x.primitiveKind)
         , ("type", encodeTypeClass x.purpleType)
         , ("Self", encodeSelf x.self)
         , ("Sendable", encodeSendable x.sendable)
+        , ("SerialDescriptor", encodeSerialDescriptor x.serialDescriptor)
+        , ("SerialName", encodeSerialName x.serialName)
+        , ("Serializable", encodeSerializable x.serializable)
         , ("serialize", encodeSerialize x.serialize)
         , ("SerializerProvider", encodeSerializerProvider x.serializerProvider)
         , ("set", encodeSet x.set)
@@ -5610,13 +5651,19 @@ encodeObj5 x =
         , ("unowned", encodeUnowned x.unowned)
         , ("unsafe", encodeUnsafe x.unsafe)
         , ("unsigned", encodeUnsigned x.unsigned)
+        , ("UseSerializers", encodeUseSerializers x.useSerializers)
         , ("ushort", encodeUshort x.ushort)
-        , ("using", encodeUsing x.using)
-        , ("Utf8JsonReader", encodeUtf8JSONReader x.utf8JSONReader)
-        , ("Utf8JsonWriter", encodeUtf8JSONWriter x.utf8JSONWriter)
-        , ("UUID", encodeUUID x.uuid)
-        , ("var", encodeVar x.var)
-        , ("virtual", encodeVirtual x.virtual)
+        ]
+
+kSerializer : Jdec.Decoder KSerializer
+kSerializer =
+    Jdec.succeed KSerializer
+        |> Jpipe.required "KSerializer" Jdec.int
+
+encodeKSerializer : KSerializer -> Jenc.Value
+encodeKSerializer x =
+    Jenc.object
+        [ ("KSerializer", Jenc.int x.kSerializer)
         ]
 
 selfClass : Jdec.Decoder SelfClass
@@ -5674,6 +5721,17 @@ encodeType x =
         [ ("Type", Jenc.int x.typeType)
         ]
 
+primitiveKind : Jdec.Decoder PrimitiveKind
+primitiveKind =
+    Jdec.succeed PrimitiveKind
+        |> Jpipe.required "PrimitiveKind" Jdec.int
+
+encodePrimitiveKind : PrimitiveKind -> Jenc.Value
+encodePrimitiveKind x =
+    Jenc.object
+        [ ("PrimitiveKind", Jenc.int x.primitiveKind)
+        ]
+
 typeClass : Jdec.Decoder TypeClass
 typeClass =
     Jdec.succeed TypeClass
@@ -5707,6 +5765,39 @@ encodeSendable x =
         [ ("Sendable", Jenc.int x.sendable)
         ]
 
+serialDescriptor : Jdec.Decoder SerialDescriptor
+serialDescriptor =
+    Jdec.succeed SerialDescriptor
+        |> Jpipe.required "SerialDescriptor" Jdec.int
+
+encodeSerialDescriptor : SerialDescriptor -> Jenc.Value
+encodeSerialDescriptor x =
+    Jenc.object
+        [ ("SerialDescriptor", Jenc.int x.serialDescriptor)
+        ]
+
+serialName : Jdec.Decoder SerialName
+serialName =
+    Jdec.succeed SerialName
+        |> Jpipe.required "SerialName" Jdec.int
+
+encodeSerialName : SerialName -> Jenc.Value
+encodeSerialName x =
+    Jenc.object
+        [ ("SerialName", Jenc.int x.serialName)
+        ]
+
+serializable : Jdec.Decoder Serializable
+serializable =
+    Jdec.succeed Serializable
+        |> Jpipe.required "Serializable" Jdec.int
+
+encodeSerializable : Serializable -> Jenc.Value
+encodeSerializable x =
+    Jenc.object
+        [ ("Serializable", Jenc.int x.serializable)
+        ]
+
 serialize : Jdec.Decoder Serialize
 serialize =
     Jdec.succeed Serialize
@@ -6246,6 +6337,17 @@ encodeUnsigned x =
         [ ("unsigned", Jenc.int x.unsigned)
         ]
 
+useSerializers : Jdec.Decoder UseSerializers
+useSerializers =
+    Jdec.succeed UseSerializers
+        |> Jpipe.required "UseSerializers" Jdec.int
+
+encodeUseSerializers : UseSerializers -> Jenc.Value
+encodeUseSerializers x =
+    Jenc.object
+        [ ("UseSerializers", Jenc.int x.useSerializers)
+        ]
+
 ushort : Jdec.Decoder Ushort
 ushort =
     Jdec.succeed Ushort
@@ -6257,6 +6359,64 @@ encodeUshort x =
         [ ("ushort", Jenc.int x.ushort)
         ]
 
+obj6 : Jdec.Decoder Obj6
+obj6 =
+    Jdec.succeed Obj6
+        |> Jpipe.required "dummy" Jdec.int
+        |> Jpipe.required "where" purpleWhere
+        |> Jpipe.required "using" using
+        |> Jpipe.required "Utf8JsonReader" utf8JSONReader
+        |> Jpipe.required "Utf8JsonWriter" utf8JSONWriter
+        |> Jpipe.required "UUID" uuid
+        |> Jpipe.required "var" var
+        |> Jpipe.required "virtual" virtual
+        |> Jpipe.required "void" void
+        |> Jpipe.required "volatile" volatile
+        |> Jpipe.required "wchar_t" wcharT
+        |> Jpipe.required "weak" weak
+        |> Jpipe.required "while" while
+        |> Jpipe.required "willSet" willSet
+        |> Jpipe.required "with" with
+        |> Jpipe.required "xor" xor
+        |> Jpipe.required "xor_eq" xorEq
+        |> Jpipe.required "YES" yes
+        |> Jpipe.required "yield" yield
+
+encodeObj6 : Obj6 -> Jenc.Value
+encodeObj6 x =
+    Jenc.object
+        [ ("dummy", Jenc.int x.dummy)
+        , ("where", encodeWhere x.obj6Where)
+        , ("using", encodeUsing x.using)
+        , ("Utf8JsonReader", encodeUtf8JSONReader x.utf8JSONReader)
+        , ("Utf8JsonWriter", encodeUtf8JSONWriter x.utf8JSONWriter)
+        , ("UUID", encodeUUID x.uuid)
+        , ("var", encodeVar x.var)
+        , ("virtual", encodeVirtual x.virtual)
+        , ("void", encodeVoid x.void)
+        , ("volatile", encodeVolatile x.volatile)
+        , ("wchar_t", encodeWcharT x.wcharT)
+        , ("weak", encodeWeak x.weak)
+        , ("while", encodeWhile x.while)
+        , ("willSet", encodeWillSet x.willSet)
+        , ("with", encodeWith x.with)
+        , ("xor", encodeXor x.xor)
+        , ("xor_eq", encodeXorEq x.xorEq)
+        , ("YES", encodeYes x.yes)
+        , ("yield", encodeYield x.yield)
+        ]
+
+purpleWhere : Jdec.Decoder Where
+purpleWhere =
+    Jdec.succeed Where
+        |> Jpipe.required "where" Jdec.int
+
+encodeWhere : Where -> Jenc.Value
+encodeWhere x =
+    Jenc.object
+        [ ("where", Jenc.int x.whereWhere)
+        ]
+
 using : Jdec.Decoder Using
 using =
     Jdec.succeed Using
@@ -6323,52 +6483,6 @@ encodeVirtual x =
         [ ("virtual", Jenc.int x.virtual)
         ]
 
-obj6 : Jdec.Decoder Obj6
-obj6 =
-    Jdec.succeed Obj6
-        |> Jpipe.required "dummy" Jdec.int
-        |> Jpipe.required "where" purpleWhere
-        |> Jpipe.required "void" void
-        |> Jpipe.required "volatile" volatile
-        |> Jpipe.required "wchar_t" wcharT
-        |> Jpipe.required "weak" weak
-        |> Jpipe.required "while" while
-        |> Jpipe.required "willSet" willSet
-        |> Jpipe.required "with" with
-        |> Jpipe.required "xor" xor
-        |> Jpipe.required "xor_eq" xorEq
-        |> Jpipe.required "YES" yes
-        |> Jpipe.required "yield" yield
-
-encodeObj6 : Obj6 -> Jenc.Value
-encodeObj6 x =
-    Jenc.object
-        [ ("dummy", Jenc.int x.dummy)
-        , ("where", encodeWhere x.obj6Where)
-        , ("void", encodeVoid x.void)
-        , ("volatile", encodeVolatile x.volatile)
-        , ("wchar_t", encodeWcharT x.wcharT)
-        , ("weak", encodeWeak x.weak)
-        , ("while", encodeWhile x.while)
-        , ("willSet", encodeWillSet x.willSet)
-        , ("with", encodeWith x.with)
-        , ("xor", encodeXor x.xor)
-        , ("xor_eq", encodeXorEq x.xorEq)
-        , ("YES", encodeYes x.yes)
-        , ("yield", encodeYield x.yield)
-        ]
-
-purpleWhere : Jdec.Decoder Where
-purpleWhere =
-    Jdec.succeed Where
-        |> Jpipe.required "where" Jdec.int
-
-encodeWhere : Where -> Jenc.Value
-encodeWhere x =
-    Jenc.object
-        [ ("where", Jenc.int x.whereWhere)
-        ]
-
 void : Jdec.Decoder Void
 void =
     Jdec.succeed Void
diff --git a/base/flow/test/inputs/json/priority/keywords.json/default/TopLevel.js b/head/flow/test/inputs/json/priority/keywords.json/default/TopLevel.js
index 2029e3d..c6c8e63 100644
--- a/base/flow/test/inputs/json/priority/keywords.json/default/TopLevel.js
+++ b/head/flow/test/inputs/json/priority/keywords.json/default/TopLevel.js
@@ -1320,8 +1320,13 @@ export type Select = {
 };
 
 export type Obj5 = {
+    KSerializer:        KSerializer;
+    PrimitiveKind:      PrimitiveKind;
     Self:               Self;
     Sendable:           Sendable;
+    SerialDescriptor:   SerialDescriptor;
+    SerialName:         SerialName;
+    Serializable:       Serializable;
     SerializerProvider: SerializerProvider;
     SimpleModule:       SimpleModule;
     Standards:          Standards;
@@ -1332,9 +1337,7 @@ export type Obj5 = {
     TimeZone:           TimeZone;
     True:               True;
     Type:               Type;
-    UUID:               UUID;
-    Utf8JsonReader:     Utf8JSONReader;
-    Utf8JsonWriter:     Utf8JSONWriter;
+    UseSerializers:     UseSerializers;
     dummy:              number;
     self:               SelfClass;
     serialize:          Serialize;
@@ -1382,9 +1385,14 @@ export type Obj5 = {
     unsafe:             Unsafe;
     unsigned:           Unsigned;
     ushort:             Ushort;
-    using:              Using;
-    var:                Var;
-    virtual:            Virtual;
+};
+
+export type KSerializer = {
+    KSerializer: number;
+};
+
+export type PrimitiveKind = {
+    PrimitiveKind: number;
 };
 
 export type Self = {
@@ -1395,6 +1403,18 @@ export type Sendable = {
     Sendable: number;
 };
 
+export type SerialDescriptor = {
+    SerialDescriptor: number;
+};
+
+export type SerialName = {
+    SerialName: number;
+};
+
+export type Serializable = {
+    Serializable: number;
+};
+
 export type SerializerProvider = {
     SerializerProvider: number;
 };
@@ -1435,16 +1455,8 @@ export type Type = {
     Type: number;
 };
 
-export type UUID = {
-    UUID: number;
-};
-
-export type Utf8JSONReader = {
-    Utf8JsonReader: number;
-};
-
-export type Utf8JSONWriter = {
-    Utf8JsonWriter: number;
+export type UseSerializers = {
+    UseSerializers: number;
 };
 
 export type SelfClass = {
@@ -1631,38 +1643,56 @@ export type Ushort = {
     ushort: number;
 };
 
-export type Using = {
-    using: number;
+export type Obj6 = {
+    UUID:           UUID;
+    Utf8JsonReader: Utf8JSONReader;
+    Utf8JsonWriter: Utf8JSONWriter;
+    YES:            Yes;
+    dummy:          number;
+    using:          Using;
+    var:            Var;
+    virtual:        Virtual;
+    void:           Void;
+    volatile:       Volatile;
+    wchar_t:        WcharT;
+    weak:           Weak;
+    where:          Where;
+    while:          While;
+    willSet:        WillSet;
+    with:           With;
+    xor:            Xor;
+    xor_eq:         XorEq;
+    yield:          Yield;
 };
 
-export type Var = {
-    var: number;
+export type UUID = {
+    UUID: number;
 };
 
-export type Virtual = {
-    virtual: number;
+export type Utf8JSONReader = {
+    Utf8JsonReader: number;
 };
 
-export type Obj6 = {
-    YES:      Yes;
-    dummy:    number;
-    void:     Void;
-    volatile: Volatile;
-    wchar_t:  WcharT;
-    weak:     Weak;
-    where:    Where;
-    while:    While;
-    willSet:  WillSet;
-    with:     With;
-    xor:      Xor;
-    xor_eq:   XorEq;
-    yield:    Yield;
+export type Utf8JSONWriter = {
+    Utf8JsonWriter: number;
 };
 
 export type Yes = {
     YES: number;
 };
 
+export type Using = {
+    using: number;
+};
+
+export type Var = {
+    var: number;
+};
+
+export type Virtual = {
+    virtual: number;
+};
+
 export type Void = {
     void: number;
 };
@@ -2939,8 +2969,13 @@ const typeMap: any = {
         { json: "select", js: "select", typ: i(0) },
     ], false),
     "Obj5": o([
+        { json: "KSerializer", js: "KSerializer", typ: r("KSerializer") },
+        { json: "PrimitiveKind", js: "PrimitiveKind", typ: r("PrimitiveKind") },
         { json: "Self", js: "Self", typ: r("Self") },
         { json: "Sendable", js: "Sendable", typ: r("Sendable") },
+        { json: "SerialDescriptor", js: "SerialDescriptor", typ: r("SerialDescriptor") },
+        { json: "SerialName", js: "SerialName", typ: r("SerialName") },
+        { json: "Serializable", js: "Serializable", typ: r("Serializable") },
         { json: "SerializerProvider", js: "SerializerProvider", typ: r("SerializerProvider") },
         { json: "SimpleModule", js: "SimpleModule", typ: r("SimpleModule") },
         { json: "Standards", js: "Standards", typ: r("Standards") },
@@ -2951,9 +2986,7 @@ const typeMap: any = {
         { json: "TimeZone", js: "TimeZone", typ: r("TimeZone") },
         { json: "True", js: "True", typ: r("True") },
         { json: "Type", js: "Type", typ: r("Type") },
-        { json: "UUID", js: "UUID", typ: r("UUID") },
-        { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: r("Utf8JSONReader") },
-        { json: "Utf8JsonWriter", js: "Utf8JsonWriter", typ: r("Utf8JSONWriter") },
+        { json: "UseSerializers", js: "UseSerializers", typ: r("UseSerializers") },
         { json: "dummy", js: "dummy", typ: i(0) },
         { json: "self", js: "self", typ: r("SelfClass") },
         { json: "serialize", js: "serialize", typ: r("Serialize") },
@@ -3001,9 +3034,12 @@ const typeMap: any = {
         { json: "unsafe", js: "unsafe", typ: r("Unsafe") },
         { json: "unsigned", js: "unsigned", typ: r("Unsigned") },
         { json: "ushort", js: "ushort", typ: r("Ushort") },
-        { json: "using", js: "using", typ: r("Using") },
-        { json: "var", js: "var", typ: r("Var") },
-        { json: "virtual", js: "virtual", typ: r("Virtual") },
+    ], false),
+    "KSerializer": o([
+        { json: "KSerializer", js: "KSerializer", typ: i(0) },
+    ], false),
+    "PrimitiveKind": o([
+        { json: "PrimitiveKind", js: "PrimitiveKind", typ: i(0) },
     ], false),
     "Self": o([
         { json: "Self", js: "Self", typ: i(0) },
@@ -3011,6 +3047,15 @@ const typeMap: any = {
     "Sendable": o([
         { json: "Sendable", js: "Sendable", typ: i(0) },
     ], false),
+    "SerialDescriptor": o([
+        { json: "SerialDescriptor", js: "SerialDescriptor", typ: i(0) },
+    ], false),
+    "SerialName": o([
+        { json: "SerialName", js: "SerialName", typ: i(0) },
+    ], false),
+    "Serializable": o([
+        { json: "Serializable", js: "Serializable", typ: i(0) },
+    ], false),
     "SerializerProvider": o([
         { json: "SerializerProvider", js: "SerializerProvider", typ: i(0) },
     ], false),
@@ -3041,14 +3086,8 @@ const typeMap: any = {
     "Type": o([
         { json: "Type", js: "Type", typ: i(0) },
     ], false),
-    "UUID": o([
-        { json: "UUID", js: "UUID", typ: i(0) },
-    ], false),
-    "Utf8JSONReader": o([
-        { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: i(0) },
-    ], false),
-    "Utf8JSONWriter": o([
-        { json: "Utf8JsonWriter", js: "Utf8JsonWriter", typ: i(0) },
+    "UseSerializers": o([
+        { json: "UseSerializers", js: "UseSerializers", typ: i(0) },
     ], false),
     "SelfClass": o([
         { json: "self", js: "self", typ: i(0) },
@@ -3188,18 +3227,15 @@ const typeMap: any = {
     "Ushort": o([
         { json: "ushort", js: "ushort", typ: i(0) },
     ], false),
-    "Using": o([
-        { json: "using", js: "using", typ: i(0) },
-    ], false),
-    "Var": o([
-        { json: "var", js: "var", typ: i(0) },
-    ], false),
-    "Virtual": o([
-        { json: "virtual", js: "virtual", typ: i(0) },
-    ], false),
     "Obj6": o([
+        { json: "UUID", js: "UUID", typ: r("UUID") },
+        { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: r("Utf8JSONReader") },
+        { json: "Utf8JsonWriter", js: "Utf8JsonWriter", typ: r("Utf8JSONWriter") },
         { json: "YES", js: "YES", typ: r("Yes") },
         { json: "dummy", js: "dummy", typ: i(0) },
+        { json: "using", js: "using", typ: r("Using") },
+        { json: "var", js: "var", typ: r("Var") },
+        { json: "virtual", js: "virtual", typ: r("Virtual") },
         { json: "void", js: "void", typ: r("Void") },
         { json: "volatile", js: "volatile", typ: r("Volatile") },
         { json: "wchar_t", js: "wchar_t", typ: r("WcharT") },
@@ -3212,9 +3248,27 @@ const typeMap: any = {
         { json: "xor_eq", js: "xor_eq", typ: r("XorEq") },
         { json: "yield", js: "yield", typ: r("Yield") },
     ], false),
+    "UUID": o([
+        { json: "UUID", js: "UUID", typ: i(0) },
+    ], false),
+    "Utf8JSONReader": o([
+        { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: i(0) },
+    ], false),
+    "Utf8JSONWriter": o([
+        { json: "Utf8JsonWriter", js: "Utf8JsonWriter", typ: i(0) },
+    ], false),
     "Yes": o([
         { json: "YES", js: "YES", typ: i(0) },
     ], false),
+    "Using": o([
+        { json: "using", js: "using", typ: i(0) },
+    ], false),
+    "Var": o([
+        { json: "var", js: "var", typ: i(0) },
+    ], false),
+    "Virtual": o([
+        { json: "virtual", js: "virtual", typ: i(0) },
+    ], false),
     "Void": o([
         { json: "void", js: "void", typ: i(0) },
     ], false),
diff --git a/base/golang/test/inputs/json/priority/keywords.json/default/quicktype.go b/head/golang/test/inputs/json/priority/keywords.json/default/quicktype.go
index 5e2ed8c..22e78ad 100644
--- a/base/golang/test/inputs/json/priority/keywords.json/default/quicktype.go
+++ b/head/golang/test/inputs/json/priority/keywords.json/default/quicktype.go
@@ -1328,11 +1328,16 @@ type Select struct {
 
 type Obj5 struct {
 	Dummy              int64              `json:"dummy"`
+	KSerializer        KSerializer        `json:"KSerializer"`
 	Obj5Self           SelfClass          `json:"self"`
 	Obj5True           TrueClass          `json:"true"`
 	Obj5Type           TypeClass          `json:"type"`
+	PrimitiveKind      PrimitiveKind      `json:"PrimitiveKind"`
 	Self               Self               `json:"Self"`
 	Sendable           Sendable           `json:"Sendable"`
+	SerialDescriptor   SerialDescriptor   `json:"SerialDescriptor"`
+	SerialName         SerialName         `json:"SerialName"`
+	Serializable       Serializable       `json:"Serializable"`
 	Serialize          Serialize          `json:"serialize"`
 	SerializerProvider SerializerProvider `json:"SerializerProvider"`
 	Set                Set                `json:"set"`
@@ -1377,7 +1382,6 @@ type Obj5 struct {
 	Typeid             Typeid             `json:"typeid"`
 	Typename           Typename           `json:"typename"`
 	Typeof             Typeof             `json:"typeof"`
-	UUID               UUID               `json:"UUID"`
 	Uint               Uint               `json:"uint"`
 	Ulong              Ulong              `json:"ulong"`
 	Unchecked          Unchecked          `json:"unchecked"`
@@ -1386,12 +1390,12 @@ type Obj5 struct {
 	Unowned            Unowned            `json:"unowned"`
 	Unsafe             Unsafe             `json:"unsafe"`
 	Unsigned           Unsigned           `json:"unsigned"`
+	UseSerializers     UseSerializers     `json:"UseSerializers"`
 	Ushort             Ushort             `json:"ushort"`
-	Using              Using              `json:"using"`
-	Utf8JSONReader     Utf8JSONReader     `json:"Utf8JsonReader"`
-	Utf8JSONWriter     Utf8JSONWriter     `json:"Utf8JsonWriter"`
-	Var                Var                `json:"var"`
-	Virtual            Virtual            `json:"virtual"`
+}
+
+type KSerializer struct {
+	KSerializer int64 `json:"KSerializer"`
 }
 
 type SelfClass struct {
@@ -1406,6 +1410,10 @@ type TypeClass struct {
 	Type int64 `json:"type"`
 }
 
+type PrimitiveKind struct {
+	PrimitiveKind int64 `json:"PrimitiveKind"`
+}
+
 type Self struct {
 	Self int64 `json:"Self"`
 }
@@ -1414,6 +1422,18 @@ type Sendable struct {
 	Sendable int64 `json:"Sendable"`
 }
 
+type SerialDescriptor struct {
+	SerialDescriptor int64 `json:"SerialDescriptor"`
+}
+
+type SerialName struct {
+	SerialName int64 `json:"SerialName"`
+}
+
+type Serializable struct {
+	Serializable int64 `json:"Serializable"`
+}
+
 type Serialize struct {
 	Serialize int64 `json:"serialize"`
 }
@@ -1590,10 +1610,6 @@ type Typeof struct {
 	Typeof int64 `json:"typeof"`
 }
 
-type UUID struct {
-	UUID int64 `json:"UUID"`
-}
-
 type Uint struct {
 	Uint int64 `json:"uint"`
 }
@@ -1626,10 +1642,40 @@ type Unsigned struct {
 	Unsigned int64 `json:"unsigned"`
 }
 
+type UseSerializers struct {
+	UseSerializers int64 `json:"UseSerializers"`
+}
+
 type Ushort struct {
 	Ushort int64 `json:"ushort"`
 }
 
+type Obj6 struct {
+	Dummy          int64          `json:"dummy"`
+	UUID           UUID           `json:"UUID"`
+	Using          Using          `json:"using"`
+	Utf8JSONReader Utf8JSONReader `json:"Utf8JsonReader"`
+	Utf8JSONWriter Utf8JSONWriter `json:"Utf8JsonWriter"`
+	Var            Var            `json:"var"`
+	Virtual        Virtual        `json:"virtual"`
+	Void           Void           `json:"void"`
+	Volatile       Volatile       `json:"volatile"`
+	WcharT         WcharT         `json:"wchar_t"`
+	Weak           Weak           `json:"weak"`
+	Where          Where          `json:"where"`
+	While          While          `json:"while"`
+	WillSet        WillSet        `json:"willSet"`
+	With           With           `json:"with"`
+	Xor            Xor            `json:"xor"`
+	XorEq          XorEq          `json:"xor_eq"`
+	Yes            Yes            `json:"YES"`
+	Yield          Yield          `json:"yield"`
+}
+
+type UUID struct {
+	UUID int64 `json:"UUID"`
+}
+
 type Using struct {
 	Using int64 `json:"using"`
 }
@@ -1650,22 +1696,6 @@ type Virtual struct {
 	Virtual int64 `json:"virtual"`
 }
 
-type Obj6 struct {
-	Dummy    int64    `json:"dummy"`
-	Void     Void     `json:"void"`
-	Volatile Volatile `json:"volatile"`
-	WcharT   WcharT   `json:"wchar_t"`
-	Weak     Weak     `json:"weak"`
-	Where    Where    `json:"where"`
-	While    While    `json:"while"`
-	WillSet  WillSet  `json:"willSet"`
-	With     With     `json:"with"`
-	Xor      Xor      `json:"xor"`
-	XorEq    XorEq    `json:"xor_eq"`
-	Yes      Yes      `json:"YES"`
-	Yield    Yield    `json:"yield"`
-}
-
 type Void struct {
 	Void int64 `json:"void"`
 }
diff --git a/base/haskell/test/inputs/json/priority/keywords.json/default/QuickType.hs b/head/haskell/test/inputs/json/priority/keywords.json/default/QuickType.hs
index 9e50d96..9ec107f 100644
--- a/base/haskell/test/inputs/json/priority/keywords.json/default/QuickType.hs
+++ b/head/haskell/test/inputs/json/priority/keywords.json/default/QuickType.hs
@@ -264,13 +264,18 @@ module QuickType
     , Sel (..)
     , Select (..)
     , Obj5 (..)
+    , KSerializer (..)
     , SelfClass (..)
     , Then (..)
     , Obj5True (..)
     , Type (..)
+    , PrimitiveKind (..)
     , TypeClass (..)
     , Self (..)
     , Sendable (..)
+    , SerialDescriptor (..)
+    , SerialName (..)
+    , Serializable (..)
     , Serialize (..)
     , SerializerProvider (..)
     , Set (..)
@@ -321,15 +326,16 @@ module QuickType
     , Unowned (..)
     , Unsafe (..)
     , Unsigned (..)
+    , UseSerializers (..)
     , Ushort (..)
+    , Obj6 (..)
+    , Where (..)
     , Using (..)
     , Utf8JSONReader (..)
     , Utf8JSONWriter (..)
     , UUID (..)
     , Var (..)
     , Virtual (..)
-    , Obj6 (..)
-    , Where (..)
     , Void (..)
     , Volatile (..)
     , WcharT (..)
@@ -1664,13 +1670,18 @@ data Select = Select
 
 data Obj5 = Obj5
     { dummyObj5 :: Int
+    , kSerializerObj5 :: KSerializer
     , obj5SelfObj5 :: SelfClass
     , obj5ThenObj5 :: Then
     , obj5TrueObj5 :: Obj5True
     , obj5TypeObj5 :: Type
+    , primitiveKindObj5 :: PrimitiveKind
     , purpleTypeObj5 :: TypeClass
     , selfObj5 :: Self
     , sendableObj5 :: Sendable
+    , serialDescriptorObj5 :: SerialDescriptor
+    , serialNameObj5 :: SerialName
+    , serializableObj5 :: Serializable
     , serializeObj5 :: Serialize
     , serializerProviderObj5 :: SerializerProvider
     , setObj5 :: Set
@@ -1721,13 +1732,12 @@ data Obj5 = Obj5
     , unownedObj5 :: Unowned
     , unsafeObj5 :: Unsafe
     , unsignedObj5 :: Unsigned
+    , useSerializersObj5 :: UseSerializers
     , ushortObj5 :: Ushort
-    , usingObj5 :: Using
-    , utf8JSONReaderObj5 :: Utf8JSONReader
-    , utf8JSONWriterObj5 :: Utf8JSONWriter
-    , uuidObj5 :: UUID
-    , varObj5 :: Var
-    , virtualObj5 :: Virtual
+    } deriving (Show)
+
+data KSerializer = KSerializer
+    { kSerializerKSerializer :: Int
     } deriving (Show)
 
 data SelfClass = SelfClass
@@ -1746,6 +1756,10 @@ data Type = Type
     { typeTypeType :: Int
     } deriving (Show)
 
+data PrimitiveKind = PrimitiveKind
+    { primitiveKindPrimitiveKind :: Int
+    } deriving (Show)
+
 data TypeClass = TypeClass
     { typeTypeTypeClass :: Int
     } deriving (Show)
@@ -1758,6 +1772,18 @@ data Sendable = Sendable
     { sendableSendable :: Int
     } deriving (Show)
 
+data SerialDescriptor = SerialDescriptor
+    { serialDescriptorSerialDescriptor :: Int
+    } deriving (Show)
+
+data SerialName = SerialName
+    { serialNameSerialName :: Int
+    } deriving (Show)
+
+data Serializable = Serializable
+    { serializableSerializable :: Int
+    } deriving (Show)
+
 data Serialize = Serialize
     { serializeSerialize :: Int
     } deriving (Show)
@@ -1958,10 +1984,40 @@ data Unsigned = Unsigned
     { unsignedUnsigned :: Int
     } deriving (Show)
 
+data UseSerializers = UseSerializers
+    { useSerializersUseSerializers :: Int
+    } deriving (Show)
+
 data Ushort = Ushort
     { ushortUshort :: Int
     } deriving (Show)
 
+data Obj6 = Obj6
+    { dummyObj6 :: Int
+    , obj6WhereObj6 :: Where
+    , usingObj6 :: Using
+    , utf8JSONReaderObj6 :: Utf8JSONReader
+    , utf8JSONWriterObj6 :: Utf8JSONWriter
+    , uuidObj6 :: UUID
+    , varObj6 :: Var
+    , virtualObj6 :: Virtual
+    , voidObj6 :: Void
+    , volatileObj6 :: Volatile
+    , wcharTObj6 :: WcharT
+    , weakObj6 :: Weak
+    , whileObj6 :: While
+    , willSetObj6 :: WillSet
+    , withObj6 :: With
+    , xorObj6 :: Xor
+    , xorEqObj6 :: XorEq
+    , yesObj6 :: Yes
+    , yieldObj6 :: Yield
+    } deriving (Show)
+
+data Where = Where
+    { whereWhereWhere :: Int
+    } deriving (Show)
+
 data Using = Using
     { usingUsing :: Int
     } deriving (Show)
@@ -1986,26 +2042,6 @@ data Virtual = Virtual
     { virtualVirtual :: Int
     } deriving (Show)
 
-data Obj6 = Obj6
-    { dummyObj6 :: Int
-    , obj6WhereObj6 :: Where
-    , voidObj6 :: Void
-    , volatileObj6 :: Volatile
-    , wcharTObj6 :: WcharT
-    , weakObj6 :: Weak
-    , whileObj6 :: While
-    , willSetObj6 :: WillSet
-    , withObj6 :: With
-    , xorObj6 :: Xor
-    , xorEqObj6 :: XorEq
-    , yesObj6 :: Yes
-    , yieldObj6 :: Yield
-    } deriving (Show)
-
-data Where = Where
-    { whereWhereWhere :: Int
-    } deriving (Show)
-
 data Void = Void
     { voidVoid :: Int
     } deriving (Show)
@@ -5198,16 +5234,21 @@ instance FromJSON Select where
         <$> v .: "select"
 
 instance ToJSON Obj5 where
-    toJSON (Obj5 dummyObj5 obj5SelfObj5 obj5ThenObj5 obj5TrueObj5 obj5TypeObj5 purpleTypeObj5 selfObj5 sendableObj5 serializeObj5 serializerProviderObj5 setObj5 shortObj5 signedObj5 simpleModuleObj5 sizeofObj5 stackallocObj5 standardsObj5 staticObj5 staticAssertObj5 staticCastObj5 stdDeserializerObj5 stdSerializerObj5 strictfpObj5 stringObj5 structObj5 subscriptObj5 superObj5 switchObj5 symbolObj5 synchronizedObj5 systemObj5 templateObj5 thisObj5 threadLocalObj5 throwObj5 throwsObj5 timeOnlyObj5 timeOnlyConverterObj5 timeZoneObj5 toJSONObj5 toStringObj5 topLevelObj5 transientObj5 trueObj5 tryObj5 typealiasObj5 typedefObj5 typeidObj5 typenameObj5 typeofObj5 uintObj5 ulongObj5 uncheckedObj5 undefinedObj5 unionObj5 unownedObj5 unsafeObj5 unsignedObj5 ushortObj5 usingObj5 utf8JSONReaderObj5 utf8JSONWriterObj5 uuidObj5 varObj5 virtualObj5) =
+    toJSON (Obj5 dummyObj5 kSerializerObj5 obj5SelfObj5 obj5ThenObj5 obj5TrueObj5 obj5TypeObj5 primitiveKindObj5 purpleTypeObj5 selfObj5 sendableObj5 serialDescriptorObj5 serialNameObj5 serializableObj5 serializeObj5 serializerProviderObj5 setObj5 shortObj5 signedObj5 simpleModuleObj5 sizeofObj5 stackallocObj5 standardsObj5 staticObj5 staticAssertObj5 staticCastObj5 stdDeserializerObj5 stdSerializerObj5 strictfpObj5 stringObj5 structObj5 subscriptObj5 superObj5 switchObj5 symbolObj5 synchronizedObj5 systemObj5 templateObj5 thisObj5 threadLocalObj5 throwObj5 throwsObj5 timeOnlyObj5 timeOnlyConverterObj5 timeZoneObj5 toJSONObj5 toStringObj5 topLevelObj5 transientObj5 trueObj5 tryObj5 typealiasObj5 typedefObj5 typeidObj5 typenameObj5 typeofObj5 uintObj5 ulongObj5 uncheckedObj5 undefinedObj5 unionObj5 unownedObj5 unsafeObj5 unsignedObj5 useSerializersObj5 ushortObj5) =
         object $ foldMap (maybe [] pure)
         [ Just $ "dummy" .= dummyObj5
+        , Just $ "KSerializer" .= kSerializerObj5
         , Just $ "self" .= obj5SelfObj5
         , Just $ "then" .= obj5ThenObj5
         , Just $ "true" .= obj5TrueObj5
         , Just $ "Type" .= obj5TypeObj5
+        , Just $ "PrimitiveKind" .= primitiveKindObj5
         , Just $ "type" .= purpleTypeObj5
         , Just $ "Self" .= selfObj5
         , Just $ "Sendable" .= sendableObj5
+        , Just $ "SerialDescriptor" .= serialDescriptorObj5
+        , Just $ "SerialName" .= serialNameObj5
+        , Just $ "Serializable" .= serializableObj5
         , Just $ "serialize" .= serializeObj5
         , Just $ "SerializerProvider" .= serializerProviderObj5
         , Just $ "set" .= setObj5
@@ -5258,25 +5299,25 @@ instance ToJSON Obj5 where
         , Just $ "unowned" .= unownedObj5
         , Just $ "unsafe" .= unsafeObj5
         , Just $ "unsigned" .= unsignedObj5
+        , Just $ "UseSerializers" .= useSerializersObj5
         , Just $ "ushort" .= ushortObj5
-        , Just $ "using" .= usingObj5
-        , Just $ "Utf8JsonReader" .= utf8JSONReaderObj5
-        , Just $ "Utf8JsonWriter" .= utf8JSONWriterObj5
-        , Just $ "UUID" .= uuidObj5
-        , Just $ "var" .= varObj5
-        , Just $ "virtual" .= virtualObj5
         ]
 
 instance FromJSON Obj5 where
     parseJSON (Object v) = Obj5
         <$> v .: "dummy"
+        <*> v .: "KSerializer"
         <*> v .: "self"
         <*> v .: "then"
         <*> v .: "true"
         <*> v .: "Type"
+        <*> v .: "PrimitiveKind"
         <*> v .: "type"
         <*> v .: "Self"
         <*> v .: "Sendable"
+        <*> v .: "SerialDescriptor"
+        <*> v .: "SerialName"
+        <*> v .: "Serializable"
         <*> v .: "serialize"
         <*> v .: "SerializerProvider"
         <*> v .: "set"
@@ -5327,13 +5368,18 @@ instance FromJSON Obj5 where
         <*> v .: "unowned"
         <*> v .: "unsafe"
         <*> v .: "unsigned"
+        <*> v .: "UseSerializers"
         <*> v .: "ushort"
-        <*> v .: "using"
-        <*> v .: "Utf8JsonReader"
-        <*> v .: "Utf8JsonWriter"
-        <*> v .: "UUID"
-        <*> v .: "var"
-        <*> v .: "virtual"
+
+instance ToJSON KSerializer where
+    toJSON (KSerializer kSerializerKSerializer) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "KSerializer" .= kSerializerKSerializer
+        ]
+
+instance FromJSON KSerializer where
+    parseJSON (Object v) = KSerializer
+        <$> v .: "KSerializer"
 
 instance ToJSON SelfClass where
     toJSON (SelfClass selfSelfClass) =
@@ -5375,6 +5421,16 @@ instance FromJSON Type where
     parseJSON (Object v) = Type
         <$> v .: "Type"
 
+instance ToJSON PrimitiveKind where
+    toJSON (PrimitiveKind primitiveKindPrimitiveKind) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "PrimitiveKind" .= primitiveKindPrimitiveKind
+        ]
+
+instance FromJSON PrimitiveKind where
+    parseJSON (Object v) = PrimitiveKind
+        <$> v .: "PrimitiveKind"
+
 instance ToJSON TypeClass where
     toJSON (TypeClass typeTypeTypeClass) =
         object $ foldMap (maybe [] pure)
@@ -5405,6 +5461,36 @@ instance FromJSON Sendable where
     parseJSON (Object v) = Sendable
         <$> v .: "Sendable"
 
+instance ToJSON SerialDescriptor where
+    toJSON (SerialDescriptor serialDescriptorSerialDescriptor) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "SerialDescriptor" .= serialDescriptorSerialDescriptor
+        ]
+
+instance FromJSON SerialDescriptor where
+    parseJSON (Object v) = SerialDescriptor
+        <$> v .: "SerialDescriptor"
+
+instance ToJSON SerialName where
+    toJSON (SerialName serialNameSerialName) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "SerialName" .= serialNameSerialName
+        ]
+
+instance FromJSON SerialName where
+    parseJSON (Object v) = SerialName
+        <$> v .: "SerialName"
+
+instance ToJSON Serializable where
+    toJSON (Serializable serializableSerializable) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "Serializable" .= serializableSerializable
+        ]
+
+instance FromJSON Serializable where
+    parseJSON (Object v) = Serializable
+        <$> v .: "Serializable"
+
 instance ToJSON Serialize where
     toJSON (Serialize serializeSerialize) =
         object $ foldMap (maybe [] pure)
@@ -5905,6 +5991,16 @@ instance FromJSON Unsigned where
     parseJSON (Object v) = Unsigned
         <$> v .: "unsigned"
 
+instance ToJSON UseSerializers where
+    toJSON (UseSerializers useSerializersUseSerializers) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "UseSerializers" .= useSerializersUseSerializers
+        ]
+
+instance FromJSON UseSerializers where
+    parseJSON (Object v) = UseSerializers
+        <$> v .: "UseSerializers"
+
 instance ToJSON Ushort where
     toJSON (Ushort ushortUshort) =
         object $ foldMap (maybe [] pure)
@@ -5915,6 +6011,62 @@ instance FromJSON Ushort where
     parseJSON (Object v) = Ushort
         <$> v .: "ushort"
 
+instance ToJSON Obj6 where
+    toJSON (Obj6 dummyObj6 obj6WhereObj6 usingObj6 utf8JSONReaderObj6 utf8JSONWriterObj6 uuidObj6 varObj6 virtualObj6 voidObj6 volatileObj6 wcharTObj6 weakObj6 whileObj6 willSetObj6 withObj6 xorObj6 xorEqObj6 yesObj6 yieldObj6) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "dummy" .= dummyObj6
+        , Just $ "where" .= obj6WhereObj6
+        , Just $ "using" .= usingObj6
+        , Just $ "Utf8JsonReader" .= utf8JSONReaderObj6
+        , Just $ "Utf8JsonWriter" .= utf8JSONWriterObj6
+        , Just $ "UUID" .= uuidObj6
+        , Just $ "var" .= varObj6
+        , Just $ "virtual" .= virtualObj6
+        , Just $ "void" .= voidObj6
+        , Just $ "volatile" .= volatileObj6
+        , Just $ "wchar_t" .= wcharTObj6
+        , Just $ "weak" .= weakObj6
+        , Just $ "while" .= whileObj6
+        , Just $ "willSet" .= willSetObj6
+        , Just $ "with" .= withObj6
+        , Just $ "xor" .= xorObj6
+        , Just $ "xor_eq" .= xorEqObj6
+        , Just $ "YES" .= yesObj6
+        , Just $ "yield" .= yieldObj6
+        ]
+
+instance FromJSON Obj6 where
+    parseJSON (Object v) = Obj6
+        <$> v .: "dummy"
+        <*> v .: "where"
+        <*> v .: "using"
+        <*> v .: "Utf8JsonReader"
+        <*> v .: "Utf8JsonWriter"
+        <*> v .: "UUID"
+        <*> v .: "var"
+        <*> v .: "virtual"
+        <*> v .: "void"
+        <*> v .: "volatile"
+        <*> v .: "wchar_t"
+        <*> v .: "weak"
+        <*> v .: "while"
+        <*> v .: "willSet"
+        <*> v .: "with"
+        <*> v .: "xor"
+        <*> v .: "xor_eq"
+        <*> v .: "YES"
+        <*> v .: "yield"
+
+instance ToJSON Where where
+    toJSON (Where whereWhereWhere) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "where" .= whereWhereWhere
+        ]
+
+instance FromJSON Where where
+    parseJSON (Object v) = Where
+        <$> v .: "where"
+
 instance ToJSON Using where
     toJSON (Using usingUsing) =
         object $ foldMap (maybe [] pure)
@@ -5975,50 +6127,6 @@ instance FromJSON Virtual where
     parseJSON (Object v) = Virtual
         <$> v .: "virtual"
 
-instance ToJSON Obj6 where
-    toJSON (Obj6 dummyObj6 obj6WhereObj6 voidObj6 volatileObj6 wcharTObj6 weakObj6 whileObj6 willSetObj6 withObj6 xorObj6 xorEqObj6 yesObj6 yieldObj6) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "dummy" .= dummyObj6
-        , Just $ "where" .= obj6WhereObj6
-        , Just $ "void" .= voidObj6
-        , Just $ "volatile" .= volatileObj6
-        , Just $ "wchar_t" .= wcharTObj6
-        , Just $ "weak" .= weakObj6
-        , Just $ "while" .= whileObj6
-        , Just $ "willSet" .= willSetObj6
-        , Just $ "with" .= withObj6
-        , Just $ "xor" .= xorObj6
-        , Just $ "xor_eq" .= xorEqObj6
-        , Just $ "YES" .= yesObj6
-        , Just $ "yield" .= yieldObj6
-        ]
-
-instance FromJSON Obj6 where
-    parseJSON (Object v) = Obj6
-        <$> v .: "dummy"
-        <*> v .: "where"
-        <*> v .: "void"
-        <*> v .: "volatile"
-        <*> v .: "wchar_t"
-        <*> v .: "weak"
-        <*> v .: "while"
-        <*> v .: "willSet"
-        <*> v .: "with"
-        <*> v .: "xor"
-        <*> v .: "xor_eq"
-        <*> v .: "YES"
-        <*> v .: "yield"
-
-instance ToJSON Where where
-    toJSON (Where whereWhereWhere) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "where" .= whereWhereWhere
-        ]
-
-instance FromJSON Where where
-    parseJSON (Object v) = Where
-        <$> v .: "where"
-
 instance ToJSON Void where
     toJSON (Void voidVoid) =
         object $ foldMap (maybe [] pure)
diff --git a/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/KSerializer.java b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/KSerializer.java
new file mode 100644
index 0000000..ae0aaa8
--- /dev/null
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/KSerializer.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class KSerializer {
+    private long kSerializer;
+
+    @JsonProperty("KSerializer")
+    public long getKSerializer() { return kSerializer; }
+    @JsonProperty("KSerializer")
+    public void setKSerializer(long value) { this.kSerializer = value; }
+}
diff --git a/base/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj5.java b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj5.java
index 55bbe47..7bbcb6c 100644
--- a/base/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj5.java
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj5.java
@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.*;
 
 public class Obj5 {
     private long dummy;
+    private KSerializer kSerializer;
     private SelfClass obj5Self;
     private Short obj5Short;
     private Static obj5Static;
@@ -18,9 +19,13 @@ public class Obj5 {
     private True obj5True;
     private Try obj5Try;
     private TypeClass obj5Type;
+    private PrimitiveKind primitiveKind;
     private TrueClass purpleTrue;
     private Self self;
     private Sendable sendable;
+    private SerialDescriptor serialDescriptor;
+    private SerialName serialName;
+    private Serializable serializable;
     private Serialize serialize;
     private SerializerProviderClass serializerProvider;
     private Set set;
@@ -61,19 +66,19 @@ public class Obj5 {
     private Unowned unowned;
     private Unsafe unsafe;
     private Unsigned unsigned;
+    private UseSerializers useSerializers;
     private Ushort ushort;
-    private Using using;
-    private Utf8JSONReader utf8JSONReader;
-    private Utf8JSONWriter utf8JSONWriter;
-    private UUIDClass uuid;
-    private Var var;
-    private Virtual virtual;
 
     @JsonProperty("dummy")
     public long getDummy() { return dummy; }
     @JsonProperty("dummy")
     public void setDummy(long value) { this.dummy = value; }
 
+    @JsonProperty("KSerializer")
+    public KSerializer getKSerializer() { return kSerializer; }
+    @JsonProperty("KSerializer")
+    public void setKSerializer(KSerializer value) { this.kSerializer = value; }
+
     @JsonProperty("self")
     public SelfClass getObj5Self() { return obj5Self; }
     @JsonProperty("self")
@@ -144,6 +149,11 @@ public class Obj5 {
     @JsonProperty("type")
     public void setObj5Type(TypeClass value) { this.obj5Type = value; }
 
+    @JsonProperty("PrimitiveKind")
+    public PrimitiveKind getPrimitiveKind() { return primitiveKind; }
+    @JsonProperty("PrimitiveKind")
+    public void setPrimitiveKind(PrimitiveKind value) { this.primitiveKind = value; }
+
     @JsonProperty("true")
     public TrueClass getPurpleTrue() { return purpleTrue; }
     @JsonProperty("true")
@@ -159,6 +169,21 @@ public class Obj5 {
     @JsonProperty("Sendable")
     public void setSendable(Sendable value) { this.sendable = value; }
 
+    @JsonProperty("SerialDescriptor")
+    public SerialDescriptor getSerialDescriptor() { return serialDescriptor; }
+    @JsonProperty("SerialDescriptor")
+    public void setSerialDescriptor(SerialDescriptor value) { this.serialDescriptor = value; }
+
+    @JsonProperty("SerialName")
+    public SerialName getSerialName() { return serialName; }
+    @JsonProperty("SerialName")
+    public void setSerialName(SerialName value) { this.serialName = value; }
+
+    @JsonProperty("Serializable")
+    public Serializable getSerializable() { return serializable; }
+    @JsonProperty("Serializable")
+    public void setSerializable(Serializable value) { this.serializable = value; }
+
     @JsonProperty("serialize")
     public Serialize getSerialize() { return serialize; }
     @JsonProperty("serialize")
@@ -359,38 +384,13 @@ public class Obj5 {
     @JsonProperty("unsigned")
     public void setUnsigned(Unsigned value) { this.unsigned = value; }
 
+    @JsonProperty("UseSerializers")
+    public UseSerializers getUseSerializers() { return useSerializers; }
+    @JsonProperty("UseSerializers")
+    public void setUseSerializers(UseSerializers value) { this.useSerializers = value; }
+
     @JsonProperty("ushort")
     public Ushort getUshort() { return ushort; }
     @JsonProperty("ushort")
     public void setUshort(Ushort value) { this.ushort = value; }
-
-    @JsonProperty("using")
-    public Using getUsing() { return using; }
-    @JsonProperty("using")
-    public void setUsing(Using value) { this.using = value; }
-
-    @JsonProperty("Utf8JsonReader")
-    public Utf8JSONReader getUtf8JSONReader() { return utf8JSONReader; }
-    @JsonProperty("Utf8JsonReader")
-    public void setUtf8JSONReader(Utf8JSONReader value) { this.utf8JSONReader = value; }
-
-    @JsonProperty("Utf8JsonWriter")
-    public Utf8JSONWriter getUtf8JSONWriter() { return utf8JSONWriter; }
-    @JsonProperty("Utf8JsonWriter")
-    public void setUtf8JSONWriter(Utf8JSONWriter value) { this.utf8JSONWriter = value; }
-
-    @JsonProperty("UUID")
-    public UUIDClass getUUID() { return uuid; }
-    @JsonProperty("UUID")
-    public void setUUID(UUIDClass value) { this.uuid = value; }
-
-    @JsonProperty("var")
-    public Var getVar() { return var; }
-    @JsonProperty("var")
-    public void setVar(Var value) { this.var = value; }
-
-    @JsonProperty("virtual")
-    public Virtual getVirtual() { return virtual; }
-    @JsonProperty("virtual")
-    public void setVirtual(Virtual value) { this.virtual = value; }
 }
diff --git a/base/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj6.java b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj6.java
index 7338896..cf660b9 100644
--- a/base/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj6.java
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj6.java
@@ -7,6 +7,12 @@ public class Obj6 {
     private Void obj6Void;
     private Volatile obj6Volatile;
     private While obj6While;
+    private Using using;
+    private Utf8JSONReader utf8JSONReader;
+    private Utf8JSONWriter utf8JSONWriter;
+    private UUIDClass uuid;
+    private Var var;
+    private Virtual virtual;
     private WcharT wcharT;
     private Weak weak;
     private Where where;
@@ -37,6 +43,36 @@ public class Obj6 {
     @JsonProperty("while")
     public void setObj6While(While value) { this.obj6While = value; }
 
+    @JsonProperty("using")
+    public Using getUsing() { return using; }
+    @JsonProperty("using")
+    public void setUsing(Using value) { this.using = value; }
+
+    @JsonProperty("Utf8JsonReader")
+    public Utf8JSONReader getUtf8JSONReader() { return utf8JSONReader; }
+    @JsonProperty("Utf8JsonReader")
+    public void setUtf8JSONReader(Utf8JSONReader value) { this.utf8JSONReader = value; }
+
+    @JsonProperty("Utf8JsonWriter")
+    public Utf8JSONWriter getUtf8JSONWriter() { return utf8JSONWriter; }
+    @JsonProperty("Utf8JsonWriter")
+    public void setUtf8JSONWriter(Utf8JSONWriter value) { this.utf8JSONWriter = value; }
+
+    @JsonProperty("UUID")
+    public UUIDClass getUUID() { return uuid; }
+    @JsonProperty("UUID")
+    public void setUUID(UUIDClass value) { this.uuid = value; }
+
+    @JsonProperty("var")
+    public Var getVar() { return var; }
+    @JsonProperty("var")
+    public void setVar(Var value) { this.var = value; }
+
+    @JsonProperty("virtual")
+    public Virtual getVirtual() { return virtual; }
+    @JsonProperty("virtual")
+    public void setVirtual(Virtual value) { this.virtual = value; }
+
     @JsonProperty("wchar_t")
     public WcharT getWcharT() { return wcharT; }
     @JsonProperty("wchar_t")
diff --git a/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/PrimitiveKind.java b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/PrimitiveKind.java
new file mode 100644
index 0000000..140e55f
--- /dev/null
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/PrimitiveKind.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class PrimitiveKind {
+    private long primitiveKind;
+
+    @JsonProperty("PrimitiveKind")
+    public long getPrimitiveKind() { return primitiveKind; }
+    @JsonProperty("PrimitiveKind")
+    public void setPrimitiveKind(long value) { this.primitiveKind = value; }
+}
diff --git a/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerialDescriptor.java b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerialDescriptor.java
new file mode 100644
index 0000000..75c993c
--- /dev/null
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerialDescriptor.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class SerialDescriptor {
+    private long serialDescriptor;
+
+    @JsonProperty("SerialDescriptor")
+    public long getSerialDescriptor() { return serialDescriptor; }
+    @JsonProperty("SerialDescriptor")
+    public void setSerialDescriptor(long value) { this.serialDescriptor = value; }
+}
diff --git a/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerialName.java b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerialName.java
new file mode 100644
index 0000000..5284d93
--- /dev/null
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerialName.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class SerialName {
+    private long serialName;
+
+    @JsonProperty("SerialName")
+    public long getSerialName() { return serialName; }
+    @JsonProperty("SerialName")
+    public void setSerialName(long value) { this.serialName = value; }
+}
diff --git a/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Serializable.java b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Serializable.java
new file mode 100644
index 0000000..6a7beb2
--- /dev/null
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Serializable.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class Serializable {
+    private long serializable;
+
+    @JsonProperty("Serializable")
+    public long getSerializable() { return serializable; }
+    @JsonProperty("Serializable")
+    public void setSerializable(long value) { this.serializable = value; }
+}
diff --git a/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/UseSerializers.java b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/UseSerializers.java
new file mode 100644
index 0000000..453e2fc
--- /dev/null
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/UseSerializers.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class UseSerializers {
+    private long useSerializers;
+
+    @JsonProperty("UseSerializers")
+    public long getUseSerializers() { return useSerializers; }
+    @JsonProperty("UseSerializers")
+    public void setUseSerializers(long value) { this.useSerializers = value; }
+}
diff --git a/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/KSerializer.java b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/KSerializer.java
new file mode 100644
index 0000000..ae0aaa8
--- /dev/null
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/KSerializer.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class KSerializer {
+    private long kSerializer;
+
+    @JsonProperty("KSerializer")
+    public long getKSerializer() { return kSerializer; }
+    @JsonProperty("KSerializer")
+    public void setKSerializer(long value) { this.kSerializer = value; }
+}
diff --git a/base/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj5.java b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj5.java
index 55bbe47..7bbcb6c 100644
--- a/base/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj5.java
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj5.java
@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.*;
 
 public class Obj5 {
     private long dummy;
+    private KSerializer kSerializer;
     private SelfClass obj5Self;
     private Short obj5Short;
     private Static obj5Static;
@@ -18,9 +19,13 @@ public class Obj5 {
     private True obj5True;
     private Try obj5Try;
     private TypeClass obj5Type;
+    private PrimitiveKind primitiveKind;
     private TrueClass purpleTrue;
     private Self self;
     private Sendable sendable;
+    private SerialDescriptor serialDescriptor;
+    private SerialName serialName;
+    private Serializable serializable;
     private Serialize serialize;
     private SerializerProviderClass serializerProvider;
     private Set set;
@@ -61,19 +66,19 @@ public class Obj5 {
     private Unowned unowned;
     private Unsafe unsafe;
     private Unsigned unsigned;
+    private UseSerializers useSerializers;
     private Ushort ushort;
-    private Using using;
-    private Utf8JSONReader utf8JSONReader;
-    private Utf8JSONWriter utf8JSONWriter;
-    private UUIDClass uuid;
-    private Var var;
-    private Virtual virtual;
 
     @JsonProperty("dummy")
     public long getDummy() { return dummy; }
     @JsonProperty("dummy")
     public void setDummy(long value) { this.dummy = value; }
 
+    @JsonProperty("KSerializer")
+    public KSerializer getKSerializer() { return kSerializer; }
+    @JsonProperty("KSerializer")
+    public void setKSerializer(KSerializer value) { this.kSerializer = value; }
+
     @JsonProperty("self")
     public SelfClass getObj5Self() { return obj5Self; }
     @JsonProperty("self")
@@ -144,6 +149,11 @@ public class Obj5 {
     @JsonProperty("type")
     public void setObj5Type(TypeClass value) { this.obj5Type = value; }
 
+    @JsonProperty("PrimitiveKind")
+    public PrimitiveKind getPrimitiveKind() { return primitiveKind; }
+    @JsonProperty("PrimitiveKind")
+    public void setPrimitiveKind(PrimitiveKind value) { this.primitiveKind = value; }
+
     @JsonProperty("true")
     public TrueClass getPurpleTrue() { return purpleTrue; }
     @JsonProperty("true")
@@ -159,6 +169,21 @@ public class Obj5 {
     @JsonProperty("Sendable")
     public void setSendable(Sendable value) { this.sendable = value; }
 
+    @JsonProperty("SerialDescriptor")
+    public SerialDescriptor getSerialDescriptor() { return serialDescriptor; }
+    @JsonProperty("SerialDescriptor")
+    public void setSerialDescriptor(SerialDescriptor value) { this.serialDescriptor = value; }
+
+    @JsonProperty("SerialName")
+    public SerialName getSerialName() { return serialName; }
+    @JsonProperty("SerialName")
+    public void setSerialName(SerialName value) { this.serialName = value; }
+
+    @JsonProperty("Serializable")
+    public Serializable getSerializable() { return serializable; }
+    @JsonProperty("Serializable")
+    public void setSerializable(Serializable value) { this.serializable = value; }
+
     @JsonProperty("serialize")
     public Serialize getSerialize() { return serialize; }
     @JsonProperty("serialize")
@@ -359,38 +384,13 @@ public class Obj5 {
     @JsonProperty("unsigned")
     public void setUnsigned(Unsigned value) { this.unsigned = value; }
 
+    @JsonProperty("UseSerializers")
+    public UseSerializers getUseSerializers() { return useSerializers; }
+    @JsonProperty("UseSerializers")
+    public void setUseSerializers(UseSerializers value) { this.useSerializers = value; }
+
     @JsonProperty("ushort")
     public Ushort getUshort() { return ushort; }
     @JsonProperty("ushort")
     public void setUshort(Ushort value) { this.ushort = value; }
-
-    @JsonProperty("using")
-    public Using getUsing() { return using; }
-    @JsonProperty("using")
-    public void setUsing(Using value) { this.using = value; }
-
-    @JsonProperty("Utf8JsonReader")
-    public Utf8JSONReader getUtf8JSONReader() { return utf8JSONReader; }
-    @JsonProperty("Utf8JsonReader")
-    public void setUtf8JSONReader(Utf8JSONReader value) { this.utf8JSONReader = value; }
-
-    @JsonProperty("Utf8JsonWriter")
-    public Utf8JSONWriter getUtf8JSONWriter() { return utf8JSONWriter; }
-    @JsonProperty("Utf8JsonWriter")
-    public void setUtf8JSONWriter(Utf8JSONWriter value) { this.utf8JSONWriter = value; }
-
-    @JsonProperty("UUID")
-    public UUIDClass getUUID() { return uuid; }
-    @JsonProperty("UUID")
-    public void setUUID(UUIDClass value) { this.uuid = value; }
-
-    @JsonProperty("var")
-    public Var getVar() { return var; }
-    @JsonProperty("var")
-    public void setVar(Var value) { this.var = value; }
-
-    @JsonProperty("virtual")
-    public Virtual getVirtual() { return virtual; }
-    @JsonProperty("virtual")
-    public void setVirtual(Virtual value) { this.virtual = value; }
 }
diff --git a/base/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj6.java b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj6.java
index 7338896..cf660b9 100644
--- a/base/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj6.java
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj6.java
@@ -7,6 +7,12 @@ public class Obj6 {
     private Void obj6Void;
     private Volatile obj6Volatile;
     private While obj6While;
+    private Using using;
+    private Utf8JSONReader utf8JSONReader;
+    private Utf8JSONWriter utf8JSONWriter;
+    private UUIDClass uuid;
+    private Var var;
+    private Virtual virtual;
     private WcharT wcharT;
     private Weak weak;
     private Where where;
@@ -37,6 +43,36 @@ public class Obj6 {
     @JsonProperty("while")
     public void setObj6While(While value) { this.obj6While = value; }
 
+    @JsonProperty("using")
+    public Using getUsing() { return using; }
+    @JsonProperty("using")
+    public void setUsing(Using value) { this.using = value; }
+
+    @JsonProperty("Utf8JsonReader")
+    public Utf8JSONReader getUtf8JSONReader() { return utf8JSONReader; }
+    @JsonProperty("Utf8JsonReader")
+    public void setUtf8JSONReader(Utf8JSONReader value) { this.utf8JSONReader = value; }
+
+    @JsonProperty("Utf8JsonWriter")
+    public Utf8JSONWriter getUtf8JSONWriter() { return utf8JSONWriter; }
+    @JsonProperty("Utf8JsonWriter")
+    public void setUtf8JSONWriter(Utf8JSONWriter value) { this.utf8JSONWriter = value; }
+
+    @JsonProperty("UUID")
+    public UUIDClass getUUID() { return uuid; }
+    @JsonProperty("UUID")
+    public void setUUID(UUIDClass value) { this.uuid = value; }
+
+    @JsonProperty("var")
+    public Var getVar() { return var; }
+    @JsonProperty("var")
+    public void setVar(Var value) { this.var = value; }
+
+    @JsonProperty("virtual")
+    public Virtual getVirtual() { return virtual; }
+    @JsonProperty("virtual")
+    public void setVirtual(Virtual value) { this.virtual = value; }
+
     @JsonProperty("wchar_t")
     public WcharT getWcharT() { return wcharT; }
     @JsonProperty("wchar_t")
diff --git a/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/PrimitiveKind.java b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/PrimitiveKind.java
new file mode 100644
index 0000000..140e55f
--- /dev/null
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/PrimitiveKind.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class PrimitiveKind {
+    private long primitiveKind;
+
+    @JsonProperty("PrimitiveKind")
+    public long getPrimitiveKind() { return primitiveKind; }
+    @JsonProperty("PrimitiveKind")
+    public void setPrimitiveKind(long value) { this.primitiveKind = value; }
+}
diff --git a/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerialDescriptor.java b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerialDescriptor.java
new file mode 100644
index 0000000..75c993c
--- /dev/null
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerialDescriptor.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class SerialDescriptor {
+    private long serialDescriptor;
+
+    @JsonProperty("SerialDescriptor")
+    public long getSerialDescriptor() { return serialDescriptor; }
+    @JsonProperty("SerialDescriptor")
+    public void setSerialDescriptor(long value) { this.serialDescriptor = value; }
+}
diff --git a/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerialName.java b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerialName.java
new file mode 100644
index 0000000..5284d93
--- /dev/null
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerialName.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class SerialName {
+    private long serialName;
+
+    @JsonProperty("SerialName")
+    public long getSerialName() { return serialName; }
+    @JsonProperty("SerialName")
+    public void setSerialName(long value) { this.serialName = value; }
+}
diff --git a/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Serializable.java b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Serializable.java
new file mode 100644
index 0000000..6a7beb2
--- /dev/null
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Serializable.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class Serializable {
+    private long serializable;
+
+    @JsonProperty("Serializable")
+    public long getSerializable() { return serializable; }
+    @JsonProperty("Serializable")
+    public void setSerializable(long value) { this.serializable = value; }
+}
diff --git a/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/UseSerializers.java b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/UseSerializers.java
new file mode 100644
index 0000000..453e2fc
--- /dev/null
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/UseSerializers.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class UseSerializers {
+    private long useSerializers;
+
+    @JsonProperty("UseSerializers")
+    public long getUseSerializers() { return useSerializers; }
+    @JsonProperty("UseSerializers")
+    public void setUseSerializers(long value) { this.useSerializers = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/KSerializer.java b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/KSerializer.java
new file mode 100644
index 0000000..ae0aaa8
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/KSerializer.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class KSerializer {
+    private long kSerializer;
+
+    @JsonProperty("KSerializer")
+    public long getKSerializer() { return kSerializer; }
+    @JsonProperty("KSerializer")
+    public void setKSerializer(long value) { this.kSerializer = value; }
+}
diff --git a/base/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj5.java b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj5.java
index 55bbe47..7bbcb6c 100644
--- a/base/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj5.java
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj5.java
@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.*;
 
 public class Obj5 {
     private long dummy;
+    private KSerializer kSerializer;
     private SelfClass obj5Self;
     private Short obj5Short;
     private Static obj5Static;
@@ -18,9 +19,13 @@ public class Obj5 {
     private True obj5True;
     private Try obj5Try;
     private TypeClass obj5Type;
+    private PrimitiveKind primitiveKind;
     private TrueClass purpleTrue;
     private Self self;
     private Sendable sendable;
+    private SerialDescriptor serialDescriptor;
+    private SerialName serialName;
+    private Serializable serializable;
     private Serialize serialize;
     private SerializerProviderClass serializerProvider;
     private Set set;
@@ -61,19 +66,19 @@ public class Obj5 {
     private Unowned unowned;
     private Unsafe unsafe;
     private Unsigned unsigned;
+    private UseSerializers useSerializers;
     private Ushort ushort;
-    private Using using;
-    private Utf8JSONReader utf8JSONReader;
-    private Utf8JSONWriter utf8JSONWriter;
-    private UUIDClass uuid;
-    private Var var;
-    private Virtual virtual;
 
     @JsonProperty("dummy")
     public long getDummy() { return dummy; }
     @JsonProperty("dummy")
     public void setDummy(long value) { this.dummy = value; }
 
+    @JsonProperty("KSerializer")
+    public KSerializer getKSerializer() { return kSerializer; }
+    @JsonProperty("KSerializer")
+    public void setKSerializer(KSerializer value) { this.kSerializer = value; }
+
     @JsonProperty("self")
     public SelfClass getObj5Self() { return obj5Self; }
     @JsonProperty("self")
@@ -144,6 +149,11 @@ public class Obj5 {
     @JsonProperty("type")
     public void setObj5Type(TypeClass value) { this.obj5Type = value; }
 
+    @JsonProperty("PrimitiveKind")
+    public PrimitiveKind getPrimitiveKind() { return primitiveKind; }
+    @JsonProperty("PrimitiveKind")
+    public void setPrimitiveKind(PrimitiveKind value) { this.primitiveKind = value; }
+
     @JsonProperty("true")
     public TrueClass getPurpleTrue() { return purpleTrue; }
     @JsonProperty("true")
@@ -159,6 +169,21 @@ public class Obj5 {
     @JsonProperty("Sendable")
     public void setSendable(Sendable value) { this.sendable = value; }
 
+    @JsonProperty("SerialDescriptor")
+    public SerialDescriptor getSerialDescriptor() { return serialDescriptor; }
+    @JsonProperty("SerialDescriptor")
+    public void setSerialDescriptor(SerialDescriptor value) { this.serialDescriptor = value; }
+
+    @JsonProperty("SerialName")
+    public SerialName getSerialName() { return serialName; }
+    @JsonProperty("SerialName")
+    public void setSerialName(SerialName value) { this.serialName = value; }
+
+    @JsonProperty("Serializable")
+    public Serializable getSerializable() { return serializable; }
+    @JsonProperty("Serializable")
+    public void setSerializable(Serializable value) { this.serializable = value; }
+
     @JsonProperty("serialize")
     public Serialize getSerialize() { return serialize; }
     @JsonProperty("serialize")
@@ -359,38 +384,13 @@ public class Obj5 {
     @JsonProperty("unsigned")
     public void setUnsigned(Unsigned value) { this.unsigned = value; }
 
+    @JsonProperty("UseSerializers")
+    public UseSerializers getUseSerializers() { return useSerializers; }
+    @JsonProperty("UseSerializers")
+    public void setUseSerializers(UseSerializers value) { this.useSerializers = value; }
+
     @JsonProperty("ushort")
     public Ushort getUshort() { return ushort; }
     @JsonProperty("ushort")
     public void setUshort(Ushort value) { this.ushort = value; }
-
-    @JsonProperty("using")
-    public Using getUsing() { return using; }
-    @JsonProperty("using")
-    public void setUsing(Using value) { this.using = value; }
-
-    @JsonProperty("Utf8JsonReader")
-    public Utf8JSONReader getUtf8JSONReader() { return utf8JSONReader; }
-    @JsonProperty("Utf8JsonReader")
-    public void setUtf8JSONReader(Utf8JSONReader value) { this.utf8JSONReader = value; }
-
-    @JsonProperty("Utf8JsonWriter")
-    public Utf8JSONWriter getUtf8JSONWriter() { return utf8JSONWriter; }
-    @JsonProperty("Utf8JsonWriter")
-    public void setUtf8JSONWriter(Utf8JSONWriter value) { this.utf8JSONWriter = value; }
-
-    @JsonProperty("UUID")
-    public UUIDClass getUUID() { return uuid; }
-    @JsonProperty("UUID")
-    public void setUUID(UUIDClass value) { this.uuid = value; }
-
-    @JsonProperty("var")
-    public Var getVar() { return var; }
-    @JsonProperty("var")
-    public void setVar(Var value) { this.var = value; }
-
-    @JsonProperty("virtual")
-    public Virtual getVirtual() { return virtual; }
-    @JsonProperty("virtual")
-    public void setVirtual(Virtual value) { this.virtual = value; }
 }
diff --git a/base/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj6.java b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj6.java
index 7338896..cf660b9 100644
--- a/base/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj6.java
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj6.java
@@ -7,6 +7,12 @@ public class Obj6 {
     private Void obj6Void;
     private Volatile obj6Volatile;
     private While obj6While;
+    private Using using;
+    private Utf8JSONReader utf8JSONReader;
+    private Utf8JSONWriter utf8JSONWriter;
+    private UUIDClass uuid;
+    private Var var;
+    private Virtual virtual;
     private WcharT wcharT;
     private Weak weak;
     private Where where;
@@ -37,6 +43,36 @@ public class Obj6 {
     @JsonProperty("while")
     public void setObj6While(While value) { this.obj6While = value; }
 
+    @JsonProperty("using")
+    public Using getUsing() { return using; }
+    @JsonProperty("using")
+    public void setUsing(Using value) { this.using = value; }
+
+    @JsonProperty("Utf8JsonReader")
+    public Utf8JSONReader getUtf8JSONReader() { return utf8JSONReader; }
+    @JsonProperty("Utf8JsonReader")
+    public void setUtf8JSONReader(Utf8JSONReader value) { this.utf8JSONReader = value; }
+
+    @JsonProperty("Utf8JsonWriter")
+    public Utf8JSONWriter getUtf8JSONWriter() { return utf8JSONWriter; }
+    @JsonProperty("Utf8JsonWriter")
+    public void setUtf8JSONWriter(Utf8JSONWriter value) { this.utf8JSONWriter = value; }
+
+    @JsonProperty("UUID")
+    public UUIDClass getUUID() { return uuid; }
+    @JsonProperty("UUID")
+    public void setUUID(UUIDClass value) { this.uuid = value; }
+
+    @JsonProperty("var")
+    public Var getVar() { return var; }
+    @JsonProperty("var")
+    public void setVar(Var value) { this.var = value; }
+
+    @JsonProperty("virtual")
+    public Virtual getVirtual() { return virtual; }
+    @JsonProperty("virtual")
+    public void setVirtual(Virtual value) { this.virtual = value; }
+
     @JsonProperty("wchar_t")
     public WcharT getWcharT() { return wcharT; }
     @JsonProperty("wchar_t")
diff --git a/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/PrimitiveKind.java b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/PrimitiveKind.java
new file mode 100644
index 0000000..140e55f
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/PrimitiveKind.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class PrimitiveKind {
+    private long primitiveKind;
+
+    @JsonProperty("PrimitiveKind")
+    public long getPrimitiveKind() { return primitiveKind; }
+    @JsonProperty("PrimitiveKind")
+    public void setPrimitiveKind(long value) { this.primitiveKind = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerialDescriptor.java b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerialDescriptor.java
new file mode 100644
index 0000000..75c993c
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerialDescriptor.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class SerialDescriptor {
+    private long serialDescriptor;
+
+    @JsonProperty("SerialDescriptor")
+    public long getSerialDescriptor() { return serialDescriptor; }
+    @JsonProperty("SerialDescriptor")
+    public void setSerialDescriptor(long value) { this.serialDescriptor = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerialName.java b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerialName.java
new file mode 100644
index 0000000..5284d93
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerialName.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class SerialName {
+    private long serialName;
+
+    @JsonProperty("SerialName")
+    public long getSerialName() { return serialName; }
+    @JsonProperty("SerialName")
+    public void setSerialName(long value) { this.serialName = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Serializable.java b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Serializable.java
new file mode 100644
index 0000000..6a7beb2
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Serializable.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class Serializable {
+    private long serializable;
+
+    @JsonProperty("Serializable")
+    public long getSerializable() { return serializable; }
+    @JsonProperty("Serializable")
+    public void setSerializable(long value) { this.serializable = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/UseSerializers.java b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/UseSerializers.java
new file mode 100644
index 0000000..453e2fc
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/UseSerializers.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class UseSerializers {
+    private long useSerializers;
+
+    @JsonProperty("UseSerializers")
+    public long getUseSerializers() { return useSerializers; }
+    @JsonProperty("UseSerializers")
+    public void setUseSerializers(long value) { this.useSerializers = value; }
+}
diff --git a/base/javascript/test/inputs/json/priority/keywords.json/default/TopLevel.js b/head/javascript/test/inputs/json/priority/keywords.json/default/TopLevel.js
index 3210b84..8fc75d9 100644
--- a/base/javascript/test/inputs/json/priority/keywords.json/default/TopLevel.js
+++ b/head/javascript/test/inputs/json/priority/keywords.json/default/TopLevel.js
@@ -1239,8 +1239,13 @@ const typeMap = {
         { json: "select", js: "select", typ: i(0) },
     ], false),
     "Obj5": o([
+        { json: "KSerializer", js: "KSerializer", typ: r("KSerializer") },
+        { json: "PrimitiveKind", js: "PrimitiveKind", typ: r("PrimitiveKind") },
         { json: "Self", js: "Self", typ: r("Self") },
         { json: "Sendable", js: "Sendable", typ: r("Sendable") },
+        { json: "SerialDescriptor", js: "SerialDescriptor", typ: r("SerialDescriptor") },
+        { json: "SerialName", js: "SerialName", typ: r("SerialName") },
+        { json: "Serializable", js: "Serializable", typ: r("Serializable") },
         { json: "SerializerProvider", js: "SerializerProvider", typ: r("SerializerProvider") },
         { json: "SimpleModule", js: "SimpleModule", typ: r("SimpleModule") },
         { json: "Standards", js: "Standards", typ: r("Standards") },
@@ -1251,9 +1256,7 @@ const typeMap = {
         { json: "TimeZone", js: "TimeZone", typ: r("TimeZone") },
         { json: "True", js: "True", typ: r("True") },
         { json: "Type", js: "Type", typ: r("Type") },
-        { json: "UUID", js: "UUID", typ: r("UUID") },
-        { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: r("Utf8JSONReader") },
-        { json: "Utf8JsonWriter", js: "Utf8JsonWriter", typ: r("Utf8JSONWriter") },
+        { json: "UseSerializers", js: "UseSerializers", typ: r("UseSerializers") },
         { json: "dummy", js: "dummy", typ: i(0) },
         { json: "self", js: "self", typ: r("SelfClass") },
         { json: "serialize", js: "serialize", typ: r("Serialize") },
@@ -1301,9 +1304,12 @@ const typeMap = {
         { json: "unsafe", js: "unsafe", typ: r("Unsafe") },
         { json: "unsigned", js: "unsigned", typ: r("Unsigned") },
         { json: "ushort", js: "ushort", typ: r("Ushort") },
-        { json: "using", js: "using", typ: r("Using") },
-        { json: "var", js: "var", typ: r("Var") },
-        { json: "virtual", js: "virtual", typ: r("Virtual") },
+    ], false),
+    "KSerializer": o([
+        { json: "KSerializer", js: "KSerializer", typ: i(0) },
+    ], false),
+    "PrimitiveKind": o([
+        { json: "PrimitiveKind", js: "PrimitiveKind", typ: i(0) },
     ], false),
     "Self": o([
         { json: "Self", js: "Self", typ: i(0) },
@@ -1311,6 +1317,15 @@ const typeMap = {
     "Sendable": o([
         { json: "Sendable", js: "Sendable", typ: i(0) },
     ], false),
+    "SerialDescriptor": o([
+        { json: "SerialDescriptor", js: "SerialDescriptor", typ: i(0) },
+    ], false),
+    "SerialName": o([
+        { json: "SerialName", js: "SerialName", typ: i(0) },
+    ], false),
+    "Serializable": o([
+        { json: "Serializable", js: "Serializable", typ: i(0) },
+    ], false),
     "SerializerProvider": o([
         { json: "SerializerProvider", js: "SerializerProvider", typ: i(0) },
     ], false),
@@ -1341,14 +1356,8 @@ const typeMap = {
     "Type": o([
         { json: "Type", js: "Type", typ: i(0) },
     ], false),
-    "UUID": o([
-        { json: "UUID", js: "UUID", typ: i(0) },
-    ], false),
-    "Utf8JSONReader": o([
-        { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: i(0) },
-    ], false),
-    "Utf8JSONWriter": o([
-        { json: "Utf8JsonWriter", js: "Utf8JsonWriter", typ: i(0) },
+    "UseSerializers": o([
+        { json: "UseSerializers", js: "UseSerializers", typ: i(0) },
     ], false),
     "SelfClass": o([
         { json: "self", js: "self", typ: i(0) },
@@ -1488,18 +1497,15 @@ const typeMap = {
     "Ushort": o([
         { json: "ushort", js: "ushort", typ: i(0) },
     ], false),
-    "Using": o([
-        { json: "using", js: "using", typ: i(0) },
-    ], false),
-    "Var": o([
-        { json: "var", js: "var", typ: i(0) },
-    ], false),
-    "Virtual": o([
-        { json: "virtual", js: "virtual", typ: i(0) },
-    ], false),
     "Obj6": o([
+        { json: "UUID", js: "UUID", typ: r("UUID") },
+        { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: r("Utf8JSONReader") },
+        { json: "Utf8JsonWriter", js: "Utf8JsonWriter", typ: r("Utf8JSONWriter") },
         { json: "YES", js: "YES", typ: r("Yes") },
         { json: "dummy", js: "dummy", typ: i(0) },
+        { json: "using", js: "using", typ: r("Using") },
+        { json: "var", js: "var", typ: r("Var") },
+        { json: "virtual", js: "virtual", typ: r("Virtual") },
         { json: "void", js: "void", typ: r("Void") },
         { json: "volatile", js: "volatile", typ: r("Volatile") },
         { json: "wchar_t", js: "wchar_t", typ: r("WcharT") },
@@ -1512,9 +1518,27 @@ const typeMap = {
         { json: "xor_eq", js: "xor_eq", typ: r("XorEq") },
         { json: "yield", js: "yield", typ: r("Yield") },
     ], false),
+    "UUID": o([
+        { json: "UUID", js: "UUID", typ: i(0) },
+    ], false),
+    "Utf8JSONReader": o([
+        { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: i(0) },
+    ], false),
+    "Utf8JSONWriter": o([
+        { json: "Utf8JsonWriter", js: "Utf8JsonWriter", typ: i(0) },
+    ], false),
     "Yes": o([
         { json: "YES", js: "YES", typ: i(0) },
     ], false),
+    "Using": o([
+        { json: "using", js: "using", typ: i(0) },
+    ], false),
+    "Var": o([
+        { json: "var", js: "var", typ: i(0) },
+    ], false),
+    "Virtual": o([
+        { json: "virtual", js: "virtual", typ: i(0) },
+    ], false),
     "Void": o([
         { json: "void", js: "void", typ: i(0) },
     ], false),
diff --git a/base/javascript-prop-types/test/inputs/json/priority/keywords.json/default/toplevel.js b/head/javascript-prop-types/test/inputs/json/priority/keywords.json/default/toplevel.js
index 403232e..e953da8 100644
--- a/base/javascript-prop-types/test/inputs/json/priority/keywords.json/default/toplevel.js
+++ b/head/javascript-prop-types/test/inputs/json/priority/keywords.json/default/toplevel.js
@@ -275,8 +275,13 @@ let _Sbyte;
 let _Sealed;
 let _Select;
 let _Obj5;
+let _KSerializer;
+let _PrimitiveKind;
 let _Self;
 let _Sendable;
+let _SerialDescriptor;
+let _SerialName;
+let _Serializable;
 let _SerializerProvider;
 let _SimpleModule;
 let _Standards;
@@ -287,9 +292,7 @@ let _TimeOnlyConverter;
 let _TimeZone;
 let _True;
 let _Type;
-let _UUID;
-let _Utf8JSONReader;
-let _Utf8JSONWriter;
+let _UseSerializers;
 let _SelfClass;
 let _Serialize;
 let _Set;
@@ -336,11 +339,14 @@ let _Unowned;
 let _Unsafe;
 let _Unsigned;
 let _Ushort;
+let _Obj6;
+let _UUID;
+let _Utf8JSONReader;
+let _Utf8JSONWriter;
+let _Yes;
 let _Using;
 let _Var;
 let _Virtual;
-let _Obj6;
-let _Yes;
 let _Void;
 let _Volatile;
 let _WcharT;
@@ -1389,12 +1395,27 @@ _Obj4 = PropTypes.shape({
     "sealed": _Sealed,
     "select": _Select,
 });
+_KSerializer = PropTypes.shape({
+    "KSerializer": PropTypes.oneOfType([Integer]).isRequired,
+});
+_PrimitiveKind = PropTypes.shape({
+    "PrimitiveKind": PropTypes.oneOfType([Integer]).isRequired,
+});
 _Self = PropTypes.shape({
     "Self": PropTypes.oneOfType([Integer]).isRequired,
 });
 _Sendable = PropTypes.shape({
     "Sendable": PropTypes.oneOfType([Integer]).isRequired,
 });
+_SerialDescriptor = PropTypes.shape({
+    "SerialDescriptor": PropTypes.oneOfType([Integer]).isRequired,
+});
+_SerialName = PropTypes.shape({
+    "SerialName": PropTypes.oneOfType([Integer]).isRequired,
+});
+_Serializable = PropTypes.shape({
+    "Serializable": PropTypes.oneOfType([Integer]).isRequired,
+});
 _SerializerProvider = PropTypes.shape({
     "SerializerProvider": PropTypes.oneOfType([Integer]).isRequired,
 });
@@ -1425,14 +1446,8 @@ _True = PropTypes.shape({
 _Type = PropTypes.shape({
     "Type": PropTypes.oneOfType([Integer]).isRequired,
 });
-_UUID = PropTypes.shape({
-    "UUID": PropTypes.oneOfType([Integer]).isRequired,
-});
-_Utf8JSONReader = PropTypes.shape({
-    "Utf8JsonReader": PropTypes.oneOfType([Integer]).isRequired,
-});
-_Utf8JSONWriter = PropTypes.shape({
-    "Utf8JsonWriter": PropTypes.oneOfType([Integer]).isRequired,
+_UseSerializers = PropTypes.shape({
+    "UseSerializers": PropTypes.oneOfType([Integer]).isRequired,
 });
 _SelfClass = PropTypes.shape({
     "self": PropTypes.oneOfType([Integer]).isRequired,
@@ -1572,18 +1587,14 @@ _Unsigned = PropTypes.shape({
 _Ushort = PropTypes.shape({
     "ushort": PropTypes.oneOfType([Integer]).isRequired,
 });
-_Using = PropTypes.shape({
-    "using": PropTypes.oneOfType([Integer]).isRequired,
-});
-_Var = PropTypes.shape({
-    "var": PropTypes.oneOfType([Integer]).isRequired,
-});
-_Virtual = PropTypes.shape({
-    "virtual": PropTypes.oneOfType([Integer]).isRequired,
-});
 _Obj5 = PropTypes.shape({
+    "KSerializer": _KSerializer,
+    "PrimitiveKind": _PrimitiveKind,
     "Self": _Self,
     "Sendable": _Sendable,
+    "SerialDescriptor": _SerialDescriptor,
+    "SerialName": _SerialName,
+    "Serializable": _Serializable,
     "SerializerProvider": _SerializerProvider,
     "SimpleModule": _SimpleModule,
     "Standards": _Standards,
@@ -1594,9 +1605,7 @@ _Obj5 = PropTypes.shape({
     "TimeZone": _TimeZone,
     "True": _True,
     "Type": _Type,
-    "UUID": _UUID,
-    "Utf8JsonReader": _Utf8JSONReader,
-    "Utf8JsonWriter": _Utf8JSONWriter,
+    "UseSerializers": _UseSerializers,
     "dummy": PropTypes.oneOfType([Integer]).isRequired,
     "self": _SelfClass,
     "serialize": _Serialize,
@@ -1644,13 +1653,28 @@ _Obj5 = PropTypes.shape({
     "unsafe": _Unsafe,
     "unsigned": _Unsigned,
     "ushort": _Ushort,
-    "using": _Using,
-    "var": _Var,
-    "virtual": _Virtual,
+});
+_UUID = PropTypes.shape({
+    "UUID": PropTypes.oneOfType([Integer]).isRequired,
+});
+_Utf8JSONReader = PropTypes.shape({
+    "Utf8JsonReader": PropTypes.oneOfType([Integer]).isRequired,
+});
+_Utf8JSONWriter = PropTypes.shape({
+    "Utf8JsonWriter": PropTypes.oneOfType([Integer]).isRequired,
 });
 _Yes = PropTypes.shape({
     "YES": PropTypes.oneOfType([Integer]).isRequired,
 });
+_Using = PropTypes.shape({
+    "using": PropTypes.oneOfType([Integer]).isRequired,
+});
+_Var = PropTypes.shape({
+    "var": PropTypes.oneOfType([Integer]).isRequired,
+});
+_Virtual = PropTypes.shape({
+    "virtual": PropTypes.oneOfType([Integer]).isRequired,
+});
 _Void = PropTypes.shape({
     "void": PropTypes.oneOfType([Integer]).isRequired,
 });
@@ -1685,8 +1709,14 @@ _Yield = PropTypes.shape({
     "yield": PropTypes.oneOfType([Integer]).isRequired,
 });
 _Obj6 = PropTypes.shape({
+    "UUID": _UUID,
+    "Utf8JsonReader": _Utf8JSONReader,
+    "Utf8JsonWriter": _Utf8JSONWriter,
     "YES": _Yes,
     "dummy": PropTypes.oneOfType([Integer]).isRequired,
+    "using": _Using,
+    "var": _Var,
+    "virtual": _Virtual,
     "void": _Void,
     "volatile": _Volatile,
     "wchar_t": _WcharT,
diff --git a/base/kotlin/test/inputs/json/priority/keywords.json/default/TopLevel.kt b/head/kotlin/test/inputs/json/priority/keywords.json/default/TopLevel.kt
index 9e71cfa..00ff0b5 100644
--- a/base/kotlin/test/inputs/json/priority/keywords.json/default/TopLevel.kt
+++ b/head/kotlin/test/inputs/json/priority/keywords.json/default/TopLevel.kt
@@ -1657,6 +1657,9 @@ data class Select (
 data class Obj5 (
     val dummy: Long,
 
+    @Json(name = "KSerializer")
+    val kSerializer: KSerializer,
+
     @Json(name = "self")
     val obj5Self: SelfClass,
 
@@ -1684,8 +1687,8 @@ data class Obj5 (
     @Json(name = "typeof")
     val obj5Typeof: Typeof,
 
-    @Json(name = "var")
-    val obj5Var: Var,
+    @Json(name = "PrimitiveKind")
+    val primitiveKind: PrimitiveKind,
 
     @Json(name = "true")
     val purpleTrue: TrueClass,
@@ -1696,6 +1699,15 @@ data class Obj5 (
     @Json(name = "Sendable")
     val sendable: Sendable,
 
+    @Json(name = "SerialDescriptor")
+    val serialDescriptor: SerialDescriptor,
+
+    @Json(name = "SerialName")
+    val serialName: SerialName,
+
+    @Json(name = "Serializable")
+    val serializable: Serializable,
+
     val serialize: Serialize,
 
     @Json(name = "SerializerProvider")
@@ -1777,19 +1789,16 @@ data class Obj5 (
     val unowned: Unowned,
     val unsafe: Unsafe,
     val unsigned: Unsigned,
-    val ushort: Ushort,
-    val using: Using,
 
-    @Json(name = "Utf8JsonReader")
-    val utf8JSONReader: Utf8JSONReader,
-
-    @Json(name = "Utf8JsonWriter")
-    val utf8JSONWriter: Utf8JSONWriter,
+    @Json(name = "UseSerializers")
+    val useSerializers: UseSerializers,
 
-    @Json(name = "UUID")
-    val uuid: UUID,
+    val ushort: Ushort
+)
 
-    val virtual: Virtual
+data class KSerializer (
+    @Json(name = "KSerializer")
+    val kSerializer: Long
 )
 
 data class SelfClass (
@@ -1835,9 +1844,9 @@ data class Typeof (
     val typeofTypeof: Long
 )
 
-data class Var (
-    @Json(name = "var")
-    val varVar: Long
+data class PrimitiveKind (
+    @Json(name = "PrimitiveKind")
+    val primitiveKind: Long
 )
 
 data class TrueClass (
@@ -1855,6 +1864,21 @@ data class Sendable (
     val sendable: Long
 )
 
+data class SerialDescriptor (
+    @Json(name = "SerialDescriptor")
+    val serialDescriptor: Long
+)
+
+data class SerialName (
+    @Json(name = "SerialName")
+    val serialName: Long
+)
+
+data class Serializable (
+    @Json(name = "Serializable")
+    val serializable: Long
+)
+
 data class Serialize (
     val serialize: Long
 )
@@ -2049,39 +2073,36 @@ data class Unsigned (
     val unsigned: Long
 )
 
+data class UseSerializers (
+    @Json(name = "UseSerializers")
+    val useSerializers: Long
+)
+
 data class Ushort (
     val ushort: Long
 )
 
-data class Using (
-    val using: Long
-)
+data class Obj6 (
+    val dummy: Long,
 
-data class Utf8JSONReader (
-    @Json(name = "Utf8JsonReader")
-    val utf8JSONReader: Long
-)
+    @Json(name = "var")
+    val obj6Var: Var,
 
-data class Utf8JSONWriter (
-    @Json(name = "Utf8JsonWriter")
-    val utf8JSONWriter: Long
-)
+    @Json(name = "while")
+    val obj6While: While,
 
-data class UUID (
-    @Json(name = "UUID")
-    val uuid: Long
-)
+    val using: Using,
 
-data class Virtual (
-    val virtual: Long
-)
+    @Json(name = "Utf8JsonReader")
+    val utf8JSONReader: Utf8JSONReader,
 
-data class Obj6 (
-    val dummy: Long,
+    @Json(name = "Utf8JsonWriter")
+    val utf8JSONWriter: Utf8JSONWriter,
 
-    @Json(name = "while")
-    val obj6While: While,
+    @Json(name = "UUID")
+    val uuid: UUID,
 
+    val virtual: Virtual,
     val void: Void,
     val volatile: Volatile,
 
@@ -2103,11 +2124,39 @@ data class Obj6 (
     val yield: Yield
 )
 
+data class Var (
+    @Json(name = "var")
+    val varVar: Long
+)
+
 data class While (
     @Json(name = "while")
     val whileWhile: Long
 )
 
+data class Using (
+    val using: Long
+)
+
+data class Utf8JSONReader (
+    @Json(name = "Utf8JsonReader")
+    val utf8JSONReader: Long
+)
+
+data class Utf8JSONWriter (
+    @Json(name = "Utf8JsonWriter")
+    val utf8JSONWriter: Long
+)
+
+data class UUID (
+    @Json(name = "UUID")
+    val uuid: Long
+)
+
+data class Virtual (
+    val virtual: Long
+)
+
 data class Void (
     val void: Long
 )
diff --git a/base/kotlin-jackson/test/inputs/json/priority/keywords.json/default/TopLevel.kt b/head/kotlin-jackson/test/inputs/json/priority/keywords.json/default/TopLevel.kt
index bfbdcce..085d5ba 100644
--- a/base/kotlin-jackson/test/inputs/json/priority/keywords.json/default/TopLevel.kt
+++ b/head/kotlin-jackson/test/inputs/json/priority/keywords.json/default/TopLevel.kt
@@ -2148,6 +2148,9 @@ data class Obj5 (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val dummy: Long,
 
+    @get:JsonProperty("KSerializer", required=true)@field:JsonProperty("KSerializer", required=true)
+    val kSerializer: KSerializer,
+
     @get:JsonProperty("self", required=true)@field:JsonProperty("self", required=true)
     val obj5Self: SelfClass,
 
@@ -2175,8 +2178,8 @@ data class Obj5 (
     @get:JsonProperty("typeof", required=true)@field:JsonProperty("typeof", required=true)
     val obj5Typeof: Typeof,
 
-    @get:JsonProperty("var", required=true)@field:JsonProperty("var", required=true)
-    val obj5Var: Var,
+    @get:JsonProperty("PrimitiveKind", required=true)@field:JsonProperty("PrimitiveKind", required=true)
+    val primitiveKind: PrimitiveKind,
 
     @get:JsonProperty("true", required=true)@field:JsonProperty("true", required=true)
     val purpleTrue: TrueClass,
@@ -2187,6 +2190,15 @@ data class Obj5 (
     @get:JsonProperty("Sendable", required=true)@field:JsonProperty("Sendable", required=true)
     val sendable: Sendable,
 
+    @get:JsonProperty("SerialDescriptor", required=true)@field:JsonProperty("SerialDescriptor", required=true)
+    val serialDescriptor: SerialDescriptor,
+
+    @get:JsonProperty("SerialName", required=true)@field:JsonProperty("SerialName", required=true)
+    val serialName: SerialName,
+
+    @get:JsonProperty("Serializable", required=true)@field:JsonProperty("Serializable", required=true)
+    val serializable: Serializable,
+
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val serialize: Serialize,
 
@@ -2322,23 +2334,16 @@ data class Obj5 (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val unsigned: Unsigned,
 
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val ushort: Ushort,
+    @get:JsonProperty("UseSerializers", required=true)@field:JsonProperty("UseSerializers", required=true)
+    val useSerializers: UseSerializers,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val using: Using,
-
-    @get:JsonProperty("Utf8JsonReader", required=true)@field:JsonProperty("Utf8JsonReader", required=true)
-    val utf8JSONReader: Utf8JSONReader,
-
-    @get:JsonProperty("Utf8JsonWriter", required=true)@field:JsonProperty("Utf8JsonWriter", required=true)
-    val utf8JSONWriter: Utf8JSONWriter,
-
-    @get:JsonProperty("UUID", required=true)@field:JsonProperty("UUID", required=true)
-    val uuid: UUID,
+    val ushort: Ushort
+)
 
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val virtual: Virtual
+data class KSerializer (
+    @get:JsonProperty("KSerializer", required=true)@field:JsonProperty("KSerializer", required=true)
+    val kSerializer: Long
 )
 
 data class SelfClass (
@@ -2386,9 +2391,9 @@ data class Typeof (
     val typeofTypeof: Long
 )
 
-data class Var (
-    @get:JsonProperty("var", required=true)@field:JsonProperty("var", required=true)
-    val varVar: Long
+data class PrimitiveKind (
+    @get:JsonProperty("PrimitiveKind", required=true)@field:JsonProperty("PrimitiveKind", required=true)
+    val primitiveKind: Long
 )
 
 data class TrueClass (
@@ -2406,6 +2411,21 @@ data class Sendable (
     val sendable: Long
 )
 
+data class SerialDescriptor (
+    @get:JsonProperty("SerialDescriptor", required=true)@field:JsonProperty("SerialDescriptor", required=true)
+    val serialDescriptor: Long
+)
+
+data class SerialName (
+    @get:JsonProperty("SerialName", required=true)@field:JsonProperty("SerialName", required=true)
+    val serialName: Long
+)
+
+data class Serializable (
+    @get:JsonProperty("Serializable", required=true)@field:JsonProperty("Serializable", required=true)
+    val serializable: Long
+)
+
 data class Serialize (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val serialize: Long
@@ -2631,42 +2651,40 @@ data class Unsigned (
     val unsigned: Long
 )
 
+data class UseSerializers (
+    @get:JsonProperty("UseSerializers", required=true)@field:JsonProperty("UseSerializers", required=true)
+    val useSerializers: Long
+)
+
 data class Ushort (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val ushort: Long
 )
 
-data class Using (
+data class Obj6 (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val using: Long
-)
+    val dummy: Long,
+
+    @get:JsonProperty("var", required=true)@field:JsonProperty("var", required=true)
+    val obj6Var: Var,
+
+    @get:JsonProperty("while", required=true)@field:JsonProperty("while", required=true)
+    val obj6While: While,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val using: Using,
 
-data class Utf8JSONReader (
     @get:JsonProperty("Utf8JsonReader", required=true)@field:JsonProperty("Utf8JsonReader", required=true)
-    val utf8JSONReader: Long
-)
+    val utf8JSONReader: Utf8JSONReader,
 
-data class Utf8JSONWriter (
     @get:JsonProperty("Utf8JsonWriter", required=true)@field:JsonProperty("Utf8JsonWriter", required=true)
-    val utf8JSONWriter: Long
-)
+    val utf8JSONWriter: Utf8JSONWriter,
 
-data class UUID (
     @get:JsonProperty("UUID", required=true)@field:JsonProperty("UUID", required=true)
-    val uuid: Long
-)
-
-data class Virtual (
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val virtual: Long
-)
+    val uuid: UUID,
 
-data class Obj6 (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val dummy: Long,
-
-    @get:JsonProperty("while", required=true)@field:JsonProperty("while", required=true)
-    val obj6While: While,
+    val virtual: Virtual,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val void: Void,
@@ -2702,11 +2720,41 @@ data class Obj6 (
     val yield: Yield
 )
 
+data class Var (
+    @get:JsonProperty("var", required=true)@field:JsonProperty("var", required=true)
+    val varVar: Long
+)
+
 data class While (
     @get:JsonProperty("while", required=true)@field:JsonProperty("while", required=true)
     val whileWhile: Long
 )
 
+data class Using (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val using: Long
+)
+
+data class Utf8JSONReader (
+    @get:JsonProperty("Utf8JsonReader", required=true)@field:JsonProperty("Utf8JsonReader", required=true)
+    val utf8JSONReader: Long
+)
+
+data class Utf8JSONWriter (
+    @get:JsonProperty("Utf8JsonWriter", required=true)@field:JsonProperty("Utf8JsonWriter", required=true)
+    val utf8JSONWriter: Long
+)
+
+data class UUID (
+    @get:JsonProperty("UUID", required=true)@field:JsonProperty("UUID", required=true)
+    val uuid: Long
+)
+
+data class Virtual (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val virtual: Long
+)
+
 data class Void (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val void: Long
diff --git a/base/kotlinx/test/inputs/json/priority/keywords.json/default/TopLevel.kt b/head/kotlinx/test/inputs/json/priority/keywords.json/default/TopLevel.kt
index 467b428..3bc6be6 100644
--- a/base/kotlinx/test/inputs/json/priority/keywords.json/default/TopLevel.kt
+++ b/head/kotlinx/test/inputs/json/priority/keywords.json/default/TopLevel.kt
@@ -1900,6 +1900,9 @@ data class Select (
 data class Obj5 (
     val dummy: Long,
 
+    @SerialName("KSerializer")
+    val kSerializer: KSerializerClass,
+
     @SerialName("self")
     val obj5Self: SelfClass,
 
@@ -1927,8 +1930,8 @@ data class Obj5 (
     @SerialName("typeof")
     val obj5Typeof: Typeof,
 
-    @SerialName("var")
-    val obj5Var: Var,
+    @SerialName("PrimitiveKind")
+    val primitiveKind: PrimitiveKindClass,
 
     @SerialName("true")
     val purpleTrue: TrueClass,
@@ -1939,6 +1942,15 @@ data class Obj5 (
     @SerialName("Sendable")
     val sendable: Sendable,
 
+    @SerialName("SerialDescriptor")
+    val serialDescriptor: SerialDescriptorClass,
+
+    @SerialName("SerialName")
+    val serialName: SerialNameClass,
+
+    @SerialName("Serializable")
+    val serializable: SerializableClass,
+
     val serialize: Serialize,
 
     @SerialName("SerializerProvider")
@@ -2020,19 +2032,17 @@ data class Obj5 (
     val unowned: Unowned,
     val unsafe: Unsafe,
     val unsigned: Unsigned,
-    val ushort: Ushort,
-    val using: Using,
 
-    @SerialName("Utf8JsonReader")
-    val utf8JSONReader: Utf8JSONReader,
-
-    @SerialName("Utf8JsonWriter")
-    val utf8JSONWriter: Utf8JSONWriter,
+    @SerialName("UseSerializers")
+    val useSerializers: UseSerializersClass,
 
-    @SerialName("UUID")
-    val uuid: UUID,
+    val ushort: Ushort
+)
 
-    val virtual: Virtual
+@Serializable
+data class KSerializerClass (
+    @SerialName("KSerializer")
+    val kSerializer: Long
 )
 
 @Serializable
@@ -2088,9 +2098,9 @@ data class Typeof (
 )
 
 @Serializable
-data class Var (
-    @SerialName("var")
-    val varVar: Long
+data class PrimitiveKindClass (
+    @SerialName("PrimitiveKind")
+    val primitiveKind: Long
 )
 
 @Serializable
@@ -2111,6 +2121,24 @@ data class Sendable (
     val sendable: Long
 )
 
+@Serializable
+data class SerialDescriptorClass (
+    @SerialName("SerialDescriptor")
+    val serialDescriptor: Long
+)
+
+@Serializable
+data class SerialNameClass (
+    @SerialName("SerialName")
+    val serialName: Long
+)
+
+@Serializable
+data class SerializableClass (
+    @SerialName("Serializable")
+    val serializable: Long
+)
+
 @Serializable
 data class Serialize (
     val serialize: Long
@@ -2351,45 +2379,38 @@ data class Unsigned (
 )
 
 @Serializable
-data class Ushort (
-    val ushort: Long
-)
-
-@Serializable
-data class Using (
-    val using: Long
-)
-
-@Serializable
-data class Utf8JSONReader (
-    @SerialName("Utf8JsonReader")
-    val utf8JSONReader: Long
-)
-
-@Serializable
-data class Utf8JSONWriter (
-    @SerialName("Utf8JsonWriter")
-    val utf8JSONWriter: Long
-)
-
-@Serializable
-data class UUID (
-    @SerialName("UUID")
-    val uuid: Long
+data class UseSerializersClass (
+    @SerialName("UseSerializers")
+    val useSerializers: Long
 )
 
 @Serializable
-data class Virtual (
-    val virtual: Long
+data class Ushort (
+    val ushort: Long
 )
 
 @Serializable
 data class Obj6 (
     val dummy: Long,
 
+    @SerialName("var")
+    val obj6Var: Var,
+
     @SerialName("while")
     val obj6While: While,
 
+    val using: Using,
+
+    @SerialName("Utf8JsonReader")
+    val utf8JSONReader: Utf8JSONReader,
+
+    @SerialName("Utf8JsonWriter")
+    val utf8JSONWriter: Utf8JSONWriter,
+
+    @SerialName("UUID")
+    val uuid: UUID,
+
+    val virtual: Virtual,
     val void: Void,
     val volatile: Volatile,
 
@@ -2411,12 +2432,46 @@ data class Obj6 (
     val yield: Yield
 )
 
+@Serializable
+data class Var (
+    @SerialName("var")
+    val varVar: Long
+)
+
 @Serializable
 data class While (
     @SerialName("while")
     val whileWhile: Long
 )
 
+@Serializable
+data class Using (
+    val using: Long
+)
+
+@Serializable
+data class Utf8JSONReader (
+    @SerialName("Utf8JsonReader")
+    val utf8JSONReader: Long
+)
+
+@Serializable
+data class Utf8JSONWriter (
+    @SerialName("Utf8JsonWriter")
+    val utf8JSONWriter: Long
+)
+
+@Serializable
+data class UUID (
+    @SerialName("UUID")
+    val uuid: Long
+)
+
+@Serializable
+data class Virtual (
+    val virtual: Long
+)
+
 @Serializable
 data class Void (
     val void: Long
diff --git a/base/objective-c/test/inputs/json/priority/keywords.json/default/QTTopLevel.h b/head/objective-c/test/inputs/json/priority/keywords.json/default/QTTopLevel.h
index 12b8775..bc476f9 100644
--- a/base/objective-c/test/inputs/json/priority/keywords.json/default/QTTopLevel.h
+++ b/head/objective-c/test/inputs/json/priority/keywords.json/default/QTTopLevel.h
@@ -268,6 +268,7 @@
 @class QTSel;
 @class QTSelect;
 @class QTObj5;
+@class QTKSerializer;
 @class QTSelfClass;
 @class QTShort;
 @class QTSigned;
@@ -281,8 +282,12 @@
 @class QTTypeof;
 @class QTUnion;
 @class QTUnsigned;
+@class QTPrimitiveKind;
 @class QTSelf;
 @class QTSendable;
+@class QTSerialDescriptor;
+@class QTSerialName;
+@class QTSerializable;
 @class QTSerialize;
 @class QTSerializerProvider;
 @class QTSet;
@@ -325,17 +330,18 @@
 @class QTUndefined;
 @class QTUnowned;
 @class QTUnsafe;
+@class QTUseSerializers;
 @class QTUshort;
+@class QTObj6;
+@class QTVoid;
+@class QTVolatile;
+@class QTWhile;
 @class QTUsing;
 @class QTUtf8JSONReader;
 @class QTUtf8JSONWriter;
 @class QTUUID;
 @class QTVar;
 @class QTVirtual;
-@class QTObj6;
-@class QTVoid;
-@class QTVolatile;
-@class QTWhile;
 @class QTWcharT;
 @class QTWeak;
 @class QTWhere;
@@ -1679,6 +1685,7 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 
 @interface QTObj5 : NSObject
 @property (nonatomic, assign) NSInteger dummy;
+@property (nonatomic, strong) QTKSerializer *kSerializer;
 @property (nonatomic, strong) QTSelfClass *obj5Self;
 @property (nonatomic, strong) QTShort *obj5Short;
 @property (nonatomic, strong) QTSigned *obj5Signed;
@@ -1692,8 +1699,12 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTTypeof *obj5Typeof;
 @property (nonatomic, strong) QTUnion *obj5Union;
 @property (nonatomic, strong) QTUnsigned *obj5Unsigned;
+@property (nonatomic, strong) QTPrimitiveKind *primitiveKind;
 @property (nonatomic, strong) QTSelf *self;
 @property (nonatomic, strong) QTSendable *sendable;
+@property (nonatomic, strong) QTSerialDescriptor *serialDescriptor;
+@property (nonatomic, strong) QTSerialName *serialName;
+@property (nonatomic, strong) QTSerializable *serializable;
 @property (nonatomic, strong) QTSerialize *serialize;
 @property (nonatomic, strong) QTSerializerProvider *serializerProvider;
 @property (nonatomic, strong) QTSet *set;
@@ -1736,13 +1747,12 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTUndefined *undefined;
 @property (nonatomic, strong) QTUnowned *unowned;
 @property (nonatomic, strong) QTUnsafe *unsafe;
+@property (nonatomic, strong) QTUseSerializers *useSerializers;
 @property (nonatomic, strong) QTUshort *ushort;
-@property (nonatomic, strong) QTUsing *using;
-@property (nonatomic, strong) QTUtf8JSONReader *utf8JSONReader;
-@property (nonatomic, strong) QTUtf8JSONWriter *utf8JSONWriter;
-@property (nonatomic, strong) QTUUID *uuid;
-@property (nonatomic, strong) QTVar *var;
-@property (nonatomic, strong) QTVirtual *virtual;
+@end
+
+@interface QTKSerializer : NSObject
+@property (nonatomic, assign) NSInteger kSerializer;
 @end
 
 @interface QTSelfClass : NSObject
@@ -1797,6 +1807,10 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger unsignedUnsigned;
 @end
 
+@interface QTPrimitiveKind : NSObject
+@property (nonatomic, assign) NSInteger primitiveKind;
+@end
+
 @interface QTSelf : NSObject
 @property (nonatomic, assign) NSInteger self;
 @end
@@ -1805,6 +1819,18 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger sendable;
 @end
 
+@interface QTSerialDescriptor : NSObject
+@property (nonatomic, assign) NSInteger serialDescriptor;
+@end
+
+@interface QTSerialName : NSObject
+@property (nonatomic, assign) NSInteger serialName;
+@end
+
+@interface QTSerializable : NSObject
+@property (nonatomic, assign) NSInteger serializable;
+@end
+
 @interface QTSerialize : NSObject
 @property (nonatomic, assign) NSInteger serialize;
 @end
@@ -1973,32 +1999,12 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger unsafe;
 @end
 
-@interface QTUshort : NSObject
-@property (nonatomic, assign) NSInteger ushort;
-@end
-
-@interface QTUsing : NSObject
-@property (nonatomic, assign) NSInteger using;
-@end
-
-@interface QTUtf8JSONReader : NSObject
-@property (nonatomic, assign) NSInteger utf8JSONReader;
-@end
-
-@interface QTUtf8JSONWriter : NSObject
-@property (nonatomic, assign) NSInteger utf8JSONWriter;
-@end
-
-@interface QTUUID : NSObject
-@property (nonatomic, assign) NSInteger uuid;
-@end
-
-@interface QTVar : NSObject
-@property (nonatomic, assign) NSInteger var;
+@interface QTUseSerializers : NSObject
+@property (nonatomic, assign) NSInteger useSerializers;
 @end
 
-@interface QTVirtual : NSObject
-@property (nonatomic, assign) NSInteger virtual;
+@interface QTUshort : NSObject
+@property (nonatomic, assign) NSInteger ushort;
 @end
 
 @interface QTObj6 : NSObject
@@ -2006,6 +2012,12 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTVoid *obj6Void;
 @property (nonatomic, strong) QTVolatile *obj6Volatile;
 @property (nonatomic, strong) QTWhile *obj6While;
+@property (nonatomic, strong) QTUsing *using;
+@property (nonatomic, strong) QTUtf8JSONReader *utf8JSONReader;
+@property (nonatomic, strong) QTUtf8JSONWriter *utf8JSONWriter;
+@property (nonatomic, strong) QTUUID *uuid;
+@property (nonatomic, strong) QTVar *var;
+@property (nonatomic, strong) QTVirtual *virtual;
 @property (nonatomic, strong) QTWcharT *wcharT;
 @property (nonatomic, strong) QTWeak *weak;
 @property (nonatomic, strong) QTWhere *where;
@@ -2029,6 +2041,30 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger whileWhile;
 @end
 
+@interface QTUsing : NSObject
+@property (nonatomic, assign) NSInteger using;
+@end
+
+@interface QTUtf8JSONReader : NSObject
+@property (nonatomic, assign) NSInteger utf8JSONReader;
+@end
+
+@interface QTUtf8JSONWriter : NSObject
+@property (nonatomic, assign) NSInteger utf8JSONWriter;
+@end
+
+@interface QTUUID : NSObject
+@property (nonatomic, assign) NSInteger uuid;
+@end
+
+@interface QTVar : NSObject
+@property (nonatomic, assign) NSInteger var;
+@end
+
+@interface QTVirtual : NSObject
+@property (nonatomic, assign) NSInteger virtual;
+@end
+
 @interface QTWcharT : NSObject
 @property (nonatomic, assign) NSInteger wcharT;
 @end
diff --git a/base/objective-c/test/inputs/json/priority/keywords.json/default/QTTopLevel.m b/head/objective-c/test/inputs/json/priority/keywords.json/default/QTTopLevel.m
index 1679b94..b79655b 100644
--- a/base/objective-c/test/inputs/json/priority/keywords.json/default/QTTopLevel.m
+++ b/head/objective-c/test/inputs/json/priority/keywords.json/default/QTTopLevel.m
@@ -1318,6 +1318,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTKSerializer (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTSelfClass (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -1383,6 +1388,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTPrimitiveKind (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTSelf (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -1393,6 +1403,21 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTSerialDescriptor (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
+@interface QTSerialName (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
+@interface QTSerializable (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTSerialize (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -1603,57 +1628,62 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTUseSerializers (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTUshort (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTUsing (JSONConversion)
+@interface QTObj6 (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTUtf8JSONReader (JSONConversion)
+@interface QTVoid (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTUtf8JSONWriter (JSONConversion)
+@interface QTVolatile (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTUUID (JSONConversion)
+@interface QTWhile (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTVar (JSONConversion)
+@interface QTUsing (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTVirtual (JSONConversion)
+@interface QTUtf8JSONReader (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTObj6 (JSONConversion)
+@interface QTUtf8JSONWriter (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTVoid (JSONConversion)
+@interface QTUUID (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTVolatile (JSONConversion)
+@interface QTVar (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTWhile (JSONConversion)
+@interface QTVirtual (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
@@ -15206,6 +15236,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
         @"dummy": @"dummy",
+        @"KSerializer": @"kSerializer",
         @"self": @"obj5Self",
         @"short": @"obj5Short",
         @"signed": @"obj5Signed",
@@ -15219,8 +15250,12 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"typeof": @"obj5Typeof",
         @"union": @"obj5Union",
         @"unsigned": @"obj5Unsigned",
+        @"PrimitiveKind": @"primitiveKind",
         @"Self": @"self",
         @"Sendable": @"sendable",
+        @"SerialDescriptor": @"serialDescriptor",
+        @"SerialName": @"serialName",
+        @"Serializable": @"serializable",
         @"serialize": @"serialize",
         @"SerializerProvider": @"serializerProvider",
         @"set": @"set",
@@ -15263,13 +15298,8 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"undefined": @"undefined",
         @"unowned": @"unowned",
         @"unsafe": @"unsafe",
+        @"UseSerializers": @"useSerializers",
         @"ushort": @"ushort",
-        @"using": @"using",
-        @"Utf8JsonReader": @"utf8JSONReader",
-        @"Utf8JsonWriter": @"utf8JSONWriter",
-        @"UUID": @"uuid",
-        @"var": @"var",
-        @"virtual": @"virtual",
     };
 }
 
@@ -15283,6 +15313,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
     if (self = [super init]) {
         if (![dict[@"dummy"] isKindOfClass:NSNumber.class]) return nil;
         if ([dict[@"dummy"] doubleValue] != [dict[@"dummy"] longLongValue]) return nil;
+        if (![dict[@"KSerializer"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"self"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"short"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"signed"] isKindOfClass:NSDictionary.class]) return nil;
@@ -15296,8 +15327,12 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (![dict[@"typeof"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"union"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"unsigned"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"PrimitiveKind"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"Self"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"Sendable"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"SerialDescriptor"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"SerialName"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"Serializable"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"serialize"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"SerializerProvider"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"set"] isKindOfClass:NSDictionary.class]) return nil;
@@ -15340,14 +15375,11 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (![dict[@"undefined"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"unowned"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"unsafe"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"UseSerializers"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"ushort"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"using"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"Utf8JsonReader"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"Utf8JsonWriter"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"UUID"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"var"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"virtual"] isKindOfClass:NSDictionary.class]) return nil;
         [self setValuesForKeysWithDictionary:dict];
+        _kSerializer = [QTKSerializer fromJSONDictionary:(id)_kSerializer];
+        if (!_kSerializer && dict[@"KSerializer"] && ![dict[@"KSerializer"] isKindOfClass:NSNull.class]) return nil;
         _obj5Self = [QTSelfClass fromJSONDictionary:(id)_obj5Self];
         if (!_obj5Self && dict[@"self"] && ![dict[@"self"] isKindOfClass:NSNull.class]) return nil;
         _obj5Short = [QTShort fromJSONDictionary:(id)_obj5Short];
@@ -15374,10 +15406,18 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (!_obj5Union && dict[@"union"] && ![dict[@"union"] isKindOfClass:NSNull.class]) return nil;
         _obj5Unsigned = [QTUnsigned fromJSONDictionary:(id)_obj5Unsigned];
         if (!_obj5Unsigned && dict[@"unsigned"] && ![dict[@"unsigned"] isKindOfClass:NSNull.class]) return nil;
+        _primitiveKind = [QTPrimitiveKind fromJSONDictionary:(id)_primitiveKind];
+        if (!_primitiveKind && dict[@"PrimitiveKind"] && ![dict[@"PrimitiveKind"] isKindOfClass:NSNull.class]) return nil;
         _self = [QTSelf fromJSONDictionary:(id)_self];
         if (!_self && dict[@"Self"] && ![dict[@"Self"] isKindOfClass:NSNull.class]) return nil;
         _sendable = [QTSendable fromJSONDictionary:(id)_sendable];
         if (!_sendable && dict[@"Sendable"] && ![dict[@"Sendable"] isKindOfClass:NSNull.class]) return nil;
+        _serialDescriptor = [QTSerialDescriptor fromJSONDictionary:(id)_serialDescriptor];
+        if (!_serialDescriptor && dict[@"SerialDescriptor"] && ![dict[@"SerialDescriptor"] isKindOfClass:NSNull.class]) return nil;
+        _serialName = [QTSerialName fromJSONDictionary:(id)_serialName];
+        if (!_serialName && dict[@"SerialName"] && ![dict[@"SerialName"] isKindOfClass:NSNull.class]) return nil;
+        _serializable = [QTSerializable fromJSONDictionary:(id)_serializable];
+        if (!_serializable && dict[@"Serializable"] && ![dict[@"Serializable"] isKindOfClass:NSNull.class]) return nil;
         _serialize = [QTSerialize fromJSONDictionary:(id)_serialize];
         if (!_serialize && dict[@"serialize"] && ![dict[@"serialize"] isKindOfClass:NSNull.class]) return nil;
         _serializerProvider = [QTSerializerProvider fromJSONDictionary:(id)_serializerProvider];
@@ -15462,20 +15502,10 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (!_unowned && dict[@"unowned"] && ![dict[@"unowned"] isKindOfClass:NSNull.class]) return nil;
         _unsafe = [QTUnsafe fromJSONDictionary:(id)_unsafe];
         if (!_unsafe && dict[@"unsafe"] && ![dict[@"unsafe"] isKindOfClass:NSNull.class]) return nil;
+        _useSerializers = [QTUseSerializers fromJSONDictionary:(id)_useSerializers];
+        if (!_useSerializers && dict[@"UseSerializers"] && ![dict[@"UseSerializers"] isKindOfClass:NSNull.class]) return nil;
         _ushort = [QTUshort fromJSONDictionary:(id)_ushort];
         if (!_ushort && dict[@"ushort"] && ![dict[@"ushort"] isKindOfClass:NSNull.class]) return nil;
-        _using = [QTUsing fromJSONDictionary:(id)_using];
-        if (!_using && dict[@"using"] && ![dict[@"using"] isKindOfClass:NSNull.class]) return nil;
-        _utf8JSONReader = [QTUtf8JSONReader fromJSONDictionary:(id)_utf8JSONReader];
-        if (!_utf8JSONReader && dict[@"Utf8JsonReader"] && ![dict[@"Utf8JsonReader"] isKindOfClass:NSNull.class]) return nil;
-        _utf8JSONWriter = [QTUtf8JSONWriter fromJSONDictionary:(id)_utf8JSONWriter];
-        if (!_utf8JSONWriter && dict[@"Utf8JsonWriter"] && ![dict[@"Utf8JsonWriter"] isKindOfClass:NSNull.class]) return nil;
-        _uuid = [QTUUID fromJSONDictionary:(id)_uuid];
-        if (!_uuid && dict[@"UUID"] && ![dict[@"UUID"] isKindOfClass:NSNull.class]) return nil;
-        _var = [QTVar fromJSONDictionary:(id)_var];
-        if (!_var && dict[@"var"] && ![dict[@"var"] isKindOfClass:NSNull.class]) return nil;
-        _virtual = [QTVirtual fromJSONDictionary:(id)_virtual];
-        if (!_virtual && dict[@"virtual"] && ![dict[@"virtual"] isKindOfClass:NSNull.class]) return nil;
     }
     return self;
 }
@@ -15505,6 +15535,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
     }
 
     [dict addEntriesFromDictionary:@{
+        @"KSerializer": [_kSerializer JSONDictionary],
         @"self": [_obj5Self JSONDictionary],
         @"short": [_obj5Short JSONDictionary],
         @"signed": [_obj5Signed JSONDictionary],
@@ -15518,8 +15549,12 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"typeof": [_obj5Typeof JSONDictionary],
         @"union": [_obj5Union JSONDictionary],
         @"unsigned": [_obj5Unsigned JSONDictionary],
+        @"PrimitiveKind": [_primitiveKind JSONDictionary],
         @"Self": [_self JSONDictionary],
         @"Sendable": [_sendable JSONDictionary],
+        @"SerialDescriptor": [_serialDescriptor JSONDictionary],
+        @"SerialName": [_serialName JSONDictionary],
+        @"Serializable": [_serializable JSONDictionary],
         @"serialize": [_serialize JSONDictionary],
         @"SerializerProvider": [_serializerProvider JSONDictionary],
         @"set": [_set JSONDictionary],
@@ -15562,19 +15597,66 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"undefined": [_undefined JSONDictionary],
         @"unowned": [_unowned JSONDictionary],
         @"unsafe": [_unsafe JSONDictionary],
+        @"UseSerializers": [_useSerializers JSONDictionary],
         @"ushort": [_ushort JSONDictionary],
-        @"using": [_using JSONDictionary],
-        @"Utf8JsonReader": [_utf8JSONReader JSONDictionary],
-        @"Utf8JsonWriter": [_utf8JSONWriter JSONDictionary],
-        @"UUID": [_uuid JSONDictionary],
-        @"var": [_var JSONDictionary],
-        @"virtual": [_virtual JSONDictionary],
     }];
 
     return dict;
 }
 @end
 
+@implementation QTKSerializer
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"KSerializer": @"kSerializer",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTKSerializer alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"KSerializer"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"KSerializer"] doubleValue] != [dict[@"KSerializer"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTKSerializer.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTKSerializer.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    id dict = [[self dictionaryWithValuesForKeys:QTKSerializer.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTKSerializer.properties) {
+        id propertyName = QTKSerializer.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
+}
+@end
+
 @implementation QTSelfClass
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -16231,25 +16313,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTSelf
+@implementation QTPrimitiveKind
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"Self": @"self",
+        @"PrimitiveKind": @"primitiveKind",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTSelf alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTPrimitiveKind alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"Self"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"Self"] doubleValue] != [dict[@"Self"] longLongValue]) return nil;
+        if (![dict[@"PrimitiveKind"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"PrimitiveKind"] doubleValue] != [dict[@"PrimitiveKind"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -16257,22 +16339,22 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTSelf.properties[key];
+    id resolved = QTPrimitiveKind.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTSelf.properties[key];
+    id resolved = QTPrimitiveKind.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTSelf.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTPrimitiveKind.properties.allValues] mutableCopy];
 
-    for (id jsonName in QTSelf.properties) {
-        id propertyName = QTSelf.properties[jsonName];
+    for (id jsonName in QTPrimitiveKind.properties) {
+        id propertyName = QTPrimitiveKind.properties[jsonName];
         if (![jsonName isEqualToString:propertyName]) {
             dict[jsonName] = dict[propertyName];
             [dict removeObjectForKey:propertyName];
@@ -16283,25 +16365,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTSendable
+@implementation QTSelf
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"Sendable": @"sendable",
+        @"Self": @"self",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTSendable alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSelf alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"Sendable"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"Sendable"] doubleValue] != [dict[@"Sendable"] longLongValue]) return nil;
+        if (![dict[@"Self"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"Self"] doubleValue] != [dict[@"Self"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -16309,22 +16391,22 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTSendable.properties[key];
+    id resolved = QTSelf.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTSendable.properties[key];
+    id resolved = QTSelf.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTSendable.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTSelf.properties.allValues] mutableCopy];
 
-    for (id jsonName in QTSendable.properties) {
-        id propertyName = QTSendable.properties[jsonName];
+    for (id jsonName in QTSelf.properties) {
+        id propertyName = QTSelf.properties[jsonName];
         if (![jsonName isEqualToString:propertyName]) {
             dict[jsonName] = dict[propertyName];
             [dict removeObjectForKey:propertyName];
@@ -16335,25 +16417,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTSerialize
+@implementation QTSendable
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"serialize": @"serialize",
+        @"Sendable": @"sendable",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTSerialize alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSendable alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"serialize"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"serialize"] doubleValue] != [dict[@"serialize"] longLongValue]) return nil;
+        if (![dict[@"Sendable"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"Sendable"] doubleValue] != [dict[@"Sendable"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -16361,41 +16443,51 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTSerialize.properties[key];
+    id resolved = QTSendable.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTSerialize.properties[key];
+    id resolved = QTSendable.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTSerialize.properties.allValues];
+    id dict = [[self dictionaryWithValuesForKeys:QTSendable.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTSendable.properties) {
+        id propertyName = QTSendable.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
 }
 @end
 
-@implementation QTSerializerProvider
+@implementation QTSerialDescriptor
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"SerializerProvider": @"serializerProvider",
+        @"SerialDescriptor": @"serialDescriptor",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTSerializerProvider alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSerialDescriptor alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"SerializerProvider"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"SerializerProvider"] doubleValue] != [dict[@"SerializerProvider"] longLongValue]) return nil;
+        if (![dict[@"SerialDescriptor"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"SerialDescriptor"] doubleValue] != [dict[@"SerialDescriptor"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -16403,22 +16495,22 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTSerializerProvider.properties[key];
+    id resolved = QTSerialDescriptor.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTSerializerProvider.properties[key];
+    id resolved = QTSerialDescriptor.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTSerializerProvider.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTSerialDescriptor.properties.allValues] mutableCopy];
 
-    for (id jsonName in QTSerializerProvider.properties) {
-        id propertyName = QTSerializerProvider.properties[jsonName];
+    for (id jsonName in QTSerialDescriptor.properties) {
+        id propertyName = QTSerialDescriptor.properties[jsonName];
         if (![jsonName isEqualToString:propertyName]) {
             dict[jsonName] = dict[propertyName];
             [dict removeObjectForKey:propertyName];
@@ -16429,25 +16521,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTSet
+@implementation QTSerialName
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"set": @"set",
+        @"SerialName": @"serialName",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTSet alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSerialName alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"set"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"set"] doubleValue] != [dict[@"set"] longLongValue]) return nil;
+        if (![dict[@"SerialName"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"SerialName"] doubleValue] != [dict[@"SerialName"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -16455,41 +16547,51 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTSet.properties[key];
+    id resolved = QTSerialName.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTSet.properties[key];
+    id resolved = QTSerialName.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTSet.properties.allValues];
+    id dict = [[self dictionaryWithValuesForKeys:QTSerialName.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTSerialName.properties) {
+        id propertyName = QTSerialName.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
 }
 @end
 
-@implementation QTSimpleModule
+@implementation QTSerializable
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"SimpleModule": @"simpleModule",
+        @"Serializable": @"serializable",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTSimpleModule alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSerializable alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"SimpleModule"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"SimpleModule"] doubleValue] != [dict[@"SimpleModule"] longLongValue]) return nil;
+        if (![dict[@"Serializable"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"Serializable"] doubleValue] != [dict[@"Serializable"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -16497,22 +16599,22 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTSimpleModule.properties[key];
+    id resolved = QTSerializable.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTSimpleModule.properties[key];
+    id resolved = QTSerializable.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTSimpleModule.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTSerializable.properties.allValues] mutableCopy];
 
-    for (id jsonName in QTSimpleModule.properties) {
-        id propertyName = QTSimpleModule.properties[jsonName];
+    for (id jsonName in QTSerializable.properties) {
+        id propertyName = QTSerializable.properties[jsonName];
         if (![jsonName isEqualToString:propertyName]) {
             dict[jsonName] = dict[propertyName];
             [dict removeObjectForKey:propertyName];
@@ -16523,25 +16625,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTStackalloc
+@implementation QTSerialize
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"stackalloc": @"stackalloc",
+        @"serialize": @"serialize",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTStackalloc alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSerialize alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"stackalloc"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"stackalloc"] doubleValue] != [dict[@"stackalloc"] longLongValue]) return nil;
+        if (![dict[@"serialize"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"serialize"] doubleValue] != [dict[@"serialize"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -16549,41 +16651,41 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTStackalloc.properties[key];
+    id resolved = QTSerialize.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTStackalloc.properties[key];
+    id resolved = QTSerialize.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTStackalloc.properties.allValues];
+    return [self dictionaryWithValuesForKeys:QTSerialize.properties.allValues];
 }
 @end
 
-@implementation QTStandards
+@implementation QTSerializerProvider
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"Standards": @"standards",
+        @"SerializerProvider": @"serializerProvider",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTStandards alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSerializerProvider alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"Standards"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"Standards"] doubleValue] != [dict[@"Standards"] longLongValue]) return nil;
+        if (![dict[@"SerializerProvider"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"SerializerProvider"] doubleValue] != [dict[@"SerializerProvider"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -16591,22 +16693,22 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTStandards.properties[key];
+    id resolved = QTSerializerProvider.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTStandards.properties[key];
+    id resolved = QTSerializerProvider.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTStandards.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTSerializerProvider.properties.allValues] mutableCopy];
 
-    for (id jsonName in QTStandards.properties) {
-        id propertyName = QTStandards.properties[jsonName];
+    for (id jsonName in QTSerializerProvider.properties) {
+        id propertyName = QTSerializerProvider.properties[jsonName];
         if (![jsonName isEqualToString:propertyName]) {
             dict[jsonName] = dict[propertyName];
             [dict removeObjectForKey:propertyName];
@@ -16617,25 +16719,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTStaticAssert
+@implementation QTSet
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"static_assert": @"staticAssert",
+        @"set": @"set",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTStaticAssert alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSet alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"static_assert"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"static_assert"] doubleValue] != [dict[@"static_assert"] longLongValue]) return nil;
+        if (![dict[@"set"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"set"] doubleValue] != [dict[@"set"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -16643,7 +16745,195 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTStaticAssert.properties[key];
+    id resolved = QTSet.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTSet.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTSet.properties.allValues];
+}
+@end
+
+@implementation QTSimpleModule
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"SimpleModule": @"simpleModule",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSimpleModule alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"SimpleModule"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"SimpleModule"] doubleValue] != [dict[@"SimpleModule"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTSimpleModule.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTSimpleModule.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    id dict = [[self dictionaryWithValuesForKeys:QTSimpleModule.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTSimpleModule.properties) {
+        id propertyName = QTSimpleModule.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
+}
+@end
+
+@implementation QTStackalloc
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"stackalloc": @"stackalloc",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTStackalloc alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"stackalloc"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"stackalloc"] doubleValue] != [dict[@"stackalloc"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTStackalloc.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTStackalloc.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTStackalloc.properties.allValues];
+}
+@end
+
+@implementation QTStandards
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"Standards": @"standards",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTStandards alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"Standards"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"Standards"] doubleValue] != [dict[@"Standards"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTStandards.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTStandards.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    id dict = [[self dictionaryWithValuesForKeys:QTStandards.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTStandards.properties) {
+        id propertyName = QTStandards.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
+}
+@end
+
+@implementation QTStaticAssert
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"static_assert": @"staticAssert",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTStaticAssert alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"static_assert"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"static_assert"] doubleValue] != [dict[@"static_assert"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTStaticAssert.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
@@ -18249,25 +18539,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTUshort
+@implementation QTUseSerializers
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"ushort": @"ushort",
+        @"UseSerializers": @"useSerializers",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTUshort alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTUseSerializers alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"ushort"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"ushort"] doubleValue] != [dict[@"ushort"] longLongValue]) return nil;
+        if (![dict[@"UseSerializers"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"UseSerializers"] doubleValue] != [dict[@"UseSerializers"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -18275,41 +18565,51 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTUshort.properties[key];
+    id resolved = QTUseSerializers.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTUshort.properties[key];
+    id resolved = QTUseSerializers.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTUshort.properties.allValues];
+    id dict = [[self dictionaryWithValuesForKeys:QTUseSerializers.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTUseSerializers.properties) {
+        id propertyName = QTUseSerializers.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
 }
 @end
 
-@implementation QTUsing
+@implementation QTUshort
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"using": @"using",
+        @"ushort": @"ushort",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTUsing alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTUshort alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"using"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"using"] doubleValue] != [dict[@"using"] longLongValue]) return nil;
+        if (![dict[@"ushort"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"ushort"] doubleValue] != [dict[@"ushort"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -18317,93 +18617,186 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTUsing.properties[key];
+    id resolved = QTUshort.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTUsing.properties[key];
+    id resolved = QTUshort.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTUsing.properties.allValues];
+    return [self dictionaryWithValuesForKeys:QTUshort.properties.allValues];
 }
 @end
 
-@implementation QTUtf8JSONReader
+@implementation QTObj6
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
+        @"dummy": @"dummy",
+        @"void": @"obj6Void",
+        @"volatile": @"obj6Volatile",
+        @"while": @"obj6While",
+        @"using": @"using",
         @"Utf8JsonReader": @"utf8JSONReader",
+        @"Utf8JsonWriter": @"utf8JSONWriter",
+        @"UUID": @"uuid",
+        @"var": @"var",
+        @"virtual": @"virtual",
+        @"wchar_t": @"wcharT",
+        @"weak": @"weak",
+        @"where": @"where",
+        @"willSet": @"willSet",
+        @"with": @"with",
+        @"xor": @"xor",
+        @"xor_eq": @"xorEq",
+        @"YES": @"yes",
+        @"yield": @"yield",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTUtf8JSONReader alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTObj6 alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"Utf8JsonReader"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"Utf8JsonReader"] doubleValue] != [dict[@"Utf8JsonReader"] longLongValue]) return nil;
-        [self setValuesForKeysWithDictionary:dict];
-    }
-    return self;
-}
-
-- (void)setValue:(nullable id)value forKey:(NSString *)key
-{
-    id resolved = QTUtf8JSONReader.properties[key];
-    if (resolved) [super setValue:value forKey:resolved];
-}
-
-- (void)setNilValueForKey:(NSString *)key
+        if (![dict[@"dummy"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"dummy"] doubleValue] != [dict[@"dummy"] longLongValue]) return nil;
+        if (![dict[@"void"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"volatile"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"while"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"using"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"Utf8JsonReader"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"Utf8JsonWriter"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"UUID"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"var"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"virtual"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"wchar_t"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"weak"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"where"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"willSet"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"with"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"xor"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"xor_eq"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"YES"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"yield"] isKindOfClass:NSDictionary.class]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+        _obj6Void = [QTVoid fromJSONDictionary:(id)_obj6Void];
+        if (!_obj6Void && dict[@"void"] && ![dict[@"void"] isKindOfClass:NSNull.class]) return nil;
+        _obj6Volatile = [QTVolatile fromJSONDictionary:(id)_obj6Volatile];
+        if (!_obj6Volatile && dict[@"volatile"] && ![dict[@"volatile"] isKindOfClass:NSNull.class]) return nil;
+        _obj6While = [QTWhile fromJSONDictionary:(id)_obj6While];
+        if (!_obj6While && dict[@"while"] && ![dict[@"while"] isKindOfClass:NSNull.class]) return nil;
+        _using = [QTUsing fromJSONDictionary:(id)_using];
+        if (!_using && dict[@"using"] && ![dict[@"using"] isKindOfClass:NSNull.class]) return nil;
+        _utf8JSONReader = [QTUtf8JSONReader fromJSONDictionary:(id)_utf8JSONReader];
+        if (!_utf8JSONReader && dict[@"Utf8JsonReader"] && ![dict[@"Utf8JsonReader"] isKindOfClass:NSNull.class]) return nil;
+        _utf8JSONWriter = [QTUtf8JSONWriter fromJSONDictionary:(id)_utf8JSONWriter];
+        if (!_utf8JSONWriter && dict[@"Utf8JsonWriter"] && ![dict[@"Utf8JsonWriter"] isKindOfClass:NSNull.class]) return nil;
+        _uuid = [QTUUID fromJSONDictionary:(id)_uuid];
+        if (!_uuid && dict[@"UUID"] && ![dict[@"UUID"] isKindOfClass:NSNull.class]) return nil;
+        _var = [QTVar fromJSONDictionary:(id)_var];
+        if (!_var && dict[@"var"] && ![dict[@"var"] isKindOfClass:NSNull.class]) return nil;
+        _virtual = [QTVirtual fromJSONDictionary:(id)_virtual];
+        if (!_virtual && dict[@"virtual"] && ![dict[@"virtual"] isKindOfClass:NSNull.class]) return nil;
+        _wcharT = [QTWcharT fromJSONDictionary:(id)_wcharT];
+        if (!_wcharT && dict[@"wchar_t"] && ![dict[@"wchar_t"] isKindOfClass:NSNull.class]) return nil;
+        _weak = [QTWeak fromJSONDictionary:(id)_weak];
+        if (!_weak && dict[@"weak"] && ![dict[@"weak"] isKindOfClass:NSNull.class]) return nil;
+        _where = [QTWhere fromJSONDictionary:(id)_where];
+        if (!_where && dict[@"where"] && ![dict[@"where"] isKindOfClass:NSNull.class]) return nil;
+        _willSet = [QTWillSet fromJSONDictionary:(id)_willSet];
+        if (!_willSet && dict[@"willSet"] && ![dict[@"willSet"] isKindOfClass:NSNull.class]) return nil;
+        _with = [QTWith fromJSONDictionary:(id)_with];
+        if (!_with && dict[@"with"] && ![dict[@"with"] isKindOfClass:NSNull.class]) return nil;
+        _xor = [QTXor fromJSONDictionary:(id)_xor];
+        if (!_xor && dict[@"xor"] && ![dict[@"xor"] isKindOfClass:NSNull.class]) return nil;
+        _xorEq = [QTXorEq fromJSONDictionary:(id)_xorEq];
+        if (!_xorEq && dict[@"xor_eq"] && ![dict[@"xor_eq"] isKindOfClass:NSNull.class]) return nil;
+        _yes = [QTYes fromJSONDictionary:(id)_yes];
+        if (!_yes && dict[@"YES"] && ![dict[@"YES"] isKindOfClass:NSNull.class]) return nil;
+        _yield = [QTYield fromJSONDictionary:(id)_yield];
+        if (!_yield && dict[@"yield"] && ![dict[@"yield"] isKindOfClass:NSNull.class]) return nil;
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTUtf8JSONReader.properties[key];
+    id resolved = QTObj6.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTObj6.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTUtf8JSONReader.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTObj6.properties.allValues] mutableCopy];
 
-    for (id jsonName in QTUtf8JSONReader.properties) {
-        id propertyName = QTUtf8JSONReader.properties[jsonName];
+    for (id jsonName in QTObj6.properties) {
+        id propertyName = QTObj6.properties[jsonName];
         if (![jsonName isEqualToString:propertyName]) {
             dict[jsonName] = dict[propertyName];
             [dict removeObjectForKey:propertyName];
         }
     }
 
+    [dict addEntriesFromDictionary:@{
+        @"void": [_obj6Void JSONDictionary],
+        @"volatile": [_obj6Volatile JSONDictionary],
+        @"while": [_obj6While JSONDictionary],
+        @"using": [_using JSONDictionary],
+        @"Utf8JsonReader": [_utf8JSONReader JSONDictionary],
+        @"Utf8JsonWriter": [_utf8JSONWriter JSONDictionary],
+        @"UUID": [_uuid JSONDictionary],
+        @"var": [_var JSONDictionary],
+        @"virtual": [_virtual JSONDictionary],
+        @"wchar_t": [_wcharT JSONDictionary],
+        @"weak": [_weak JSONDictionary],
+        @"where": [_where JSONDictionary],
+        @"willSet": [_willSet JSONDictionary],
+        @"with": [_with JSONDictionary],
+        @"xor": [_xor JSONDictionary],
+        @"xor_eq": [_xorEq JSONDictionary],
+        @"YES": [_yes JSONDictionary],
+        @"yield": [_yield JSONDictionary],
+    }];
+
     return dict;
 }
 @end
 
-@implementation QTUtf8JSONWriter
+@implementation QTVoid
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"Utf8JsonWriter": @"utf8JSONWriter",
+        @"void": @"voidVoid",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTUtf8JSONWriter alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTVoid alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"Utf8JsonWriter"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"Utf8JsonWriter"] doubleValue] != [dict[@"Utf8JsonWriter"] longLongValue]) return nil;
+        if (![dict[@"void"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"void"] doubleValue] != [dict[@"void"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -18411,22 +18804,22 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTUtf8JSONWriter.properties[key];
+    id resolved = QTVoid.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTUtf8JSONWriter.properties[key];
+    id resolved = QTVoid.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTUtf8JSONWriter.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTVoid.properties.allValues] mutableCopy];
 
-    for (id jsonName in QTUtf8JSONWriter.properties) {
-        id propertyName = QTUtf8JSONWriter.properties[jsonName];
+    for (id jsonName in QTVoid.properties) {
+        id propertyName = QTVoid.properties[jsonName];
         if (![jsonName isEqualToString:propertyName]) {
             dict[jsonName] = dict[propertyName];
             [dict removeObjectForKey:propertyName];
@@ -18437,25 +18830,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTUUID
+@implementation QTVolatile
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"UUID": @"uuid",
+        @"volatile": @"volatileVolatile",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTUUID alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTVolatile alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"UUID"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"UUID"] doubleValue] != [dict[@"UUID"] longLongValue]) return nil;
+        if (![dict[@"volatile"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"volatile"] doubleValue] != [dict[@"volatile"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -18463,22 +18856,22 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTUUID.properties[key];
+    id resolved = QTVolatile.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTUUID.properties[key];
+    id resolved = QTVolatile.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTUUID.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTVolatile.properties.allValues] mutableCopy];
 
-    for (id jsonName in QTUUID.properties) {
-        id propertyName = QTUUID.properties[jsonName];
+    for (id jsonName in QTVolatile.properties) {
+        id propertyName = QTVolatile.properties[jsonName];
         if (![jsonName isEqualToString:propertyName]) {
             dict[jsonName] = dict[propertyName];
             [dict removeObjectForKey:propertyName];
@@ -18489,25 +18882,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTVar
+@implementation QTWhile
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"var": @"var",
+        @"while": @"whileWhile",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTVar alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTWhile alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"var"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"var"] doubleValue] != [dict[@"var"] longLongValue]) return nil;
+        if (![dict[@"while"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"while"] doubleValue] != [dict[@"while"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -18515,41 +18908,51 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTVar.properties[key];
+    id resolved = QTWhile.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTVar.properties[key];
+    id resolved = QTWhile.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTVar.properties.allValues];
+    id dict = [[self dictionaryWithValuesForKeys:QTWhile.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTWhile.properties) {
+        id propertyName = QTWhile.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
 }
 @end
 
-@implementation QTVirtual
+@implementation QTUsing
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"virtual": @"virtual",
+        @"using": @"using",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTVirtual alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTUsing alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"virtual"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"virtual"] doubleValue] != [dict[@"virtual"] longLongValue]) return nil;
+        if (![dict[@"using"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"using"] doubleValue] != [dict[@"using"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -18557,156 +18960,93 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTVirtual.properties[key];
+    id resolved = QTUsing.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTVirtual.properties[key];
+    id resolved = QTUsing.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTVirtual.properties.allValues];
+    return [self dictionaryWithValuesForKeys:QTUsing.properties.allValues];
 }
 @end
 
-@implementation QTObj6
+@implementation QTUtf8JSONReader
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"dummy": @"dummy",
-        @"void": @"obj6Void",
-        @"volatile": @"obj6Volatile",
-        @"while": @"obj6While",
-        @"wchar_t": @"wcharT",
-        @"weak": @"weak",
-        @"where": @"where",
-        @"willSet": @"willSet",
-        @"with": @"with",
-        @"xor": @"xor",
-        @"xor_eq": @"xorEq",
-        @"YES": @"yes",
-        @"yield": @"yield",
+        @"Utf8JsonReader": @"utf8JSONReader",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTObj6 alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTUtf8JSONReader alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"dummy"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"dummy"] doubleValue] != [dict[@"dummy"] longLongValue]) return nil;
-        if (![dict[@"void"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"volatile"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"while"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"wchar_t"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"weak"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"where"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"willSet"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"with"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"xor"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"xor_eq"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"YES"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"yield"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"Utf8JsonReader"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"Utf8JsonReader"] doubleValue] != [dict[@"Utf8JsonReader"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
-        _obj6Void = [QTVoid fromJSONDictionary:(id)_obj6Void];
-        if (!_obj6Void && dict[@"void"] && ![dict[@"void"] isKindOfClass:NSNull.class]) return nil;
-        _obj6Volatile = [QTVolatile fromJSONDictionary:(id)_obj6Volatile];
-        if (!_obj6Volatile && dict[@"volatile"] && ![dict[@"volatile"] isKindOfClass:NSNull.class]) return nil;
-        _obj6While = [QTWhile fromJSONDictionary:(id)_obj6While];
-        if (!_obj6While && dict[@"while"] && ![dict[@"while"] isKindOfClass:NSNull.class]) return nil;
-        _wcharT = [QTWcharT fromJSONDictionary:(id)_wcharT];
-        if (!_wcharT && dict[@"wchar_t"] && ![dict[@"wchar_t"] isKindOfClass:NSNull.class]) return nil;
-        _weak = [QTWeak fromJSONDictionary:(id)_weak];
-        if (!_weak && dict[@"weak"] && ![dict[@"weak"] isKindOfClass:NSNull.class]) return nil;
-        _where = [QTWhere fromJSONDictionary:(id)_where];
-        if (!_where && dict[@"where"] && ![dict[@"where"] isKindOfClass:NSNull.class]) return nil;
-        _willSet = [QTWillSet fromJSONDictionary:(id)_willSet];
-        if (!_willSet && dict[@"willSet"] && ![dict[@"willSet"] isKindOfClass:NSNull.class]) return nil;
-        _with = [QTWith fromJSONDictionary:(id)_with];
-        if (!_with && dict[@"with"] && ![dict[@"with"] isKindOfClass:NSNull.class]) return nil;
-        _xor = [QTXor fromJSONDictionary:(id)_xor];
-        if (!_xor && dict[@"xor"] && ![dict[@"xor"] isKindOfClass:NSNull.class]) return nil;
-        _xorEq = [QTXorEq fromJSONDictionary:(id)_xorEq];
-        if (!_xorEq && dict[@"xor_eq"] && ![dict[@"xor_eq"] isKindOfClass:NSNull.class]) return nil;
-        _yes = [QTYes fromJSONDictionary:(id)_yes];
-        if (!_yes && dict[@"YES"] && ![dict[@"YES"] isKindOfClass:NSNull.class]) return nil;
-        _yield = [QTYield fromJSONDictionary:(id)_yield];
-        if (!_yield && dict[@"yield"] && ![dict[@"yield"] isKindOfClass:NSNull.class]) return nil;
     }
     return self;
 }
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTObj6.properties[key];
+    id resolved = QTUtf8JSONReader.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTObj6.properties[key];
+    id resolved = QTUtf8JSONReader.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTObj6.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTUtf8JSONReader.properties.allValues] mutableCopy];
 
-    for (id jsonName in QTObj6.properties) {
-        id propertyName = QTObj6.properties[jsonName];
+    for (id jsonName in QTUtf8JSONReader.properties) {
+        id propertyName = QTUtf8JSONReader.properties[jsonName];
         if (![jsonName isEqualToString:propertyName]) {
             dict[jsonName] = dict[propertyName];
             [dict removeObjectForKey:propertyName];
         }
     }
 
-    [dict addEntriesFromDictionary:@{
-        @"void": [_obj6Void JSONDictionary],
-        @"volatile": [_obj6Volatile JSONDictionary],
-        @"while": [_obj6While JSONDictionary],
-        @"wchar_t": [_wcharT JSONDictionary],
-        @"weak": [_weak JSONDictionary],
-        @"where": [_where JSONDictionary],
-        @"willSet": [_willSet JSONDictionary],
-        @"with": [_with JSONDictionary],
-        @"xor": [_xor JSONDictionary],
-        @"xor_eq": [_xorEq JSONDictionary],
-        @"YES": [_yes JSONDictionary],
-        @"yield": [_yield JSONDictionary],
-    }];
-
     return dict;
 }
 @end
 
-@implementation QTVoid
+@implementation QTUtf8JSONWriter
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"void": @"voidVoid",
+        @"Utf8JsonWriter": @"utf8JSONWriter",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTVoid alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTUtf8JSONWriter alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"void"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"void"] doubleValue] != [dict[@"void"] longLongValue]) return nil;
+        if (![dict[@"Utf8JsonWriter"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"Utf8JsonWriter"] doubleValue] != [dict[@"Utf8JsonWriter"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -18714,22 +19054,22 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTVoid.properties[key];
+    id resolved = QTUtf8JSONWriter.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTVoid.properties[key];
+    id resolved = QTUtf8JSONWriter.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTVoid.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTUtf8JSONWriter.properties.allValues] mutableCopy];
 
-    for (id jsonName in QTVoid.properties) {
-        id propertyName = QTVoid.properties[jsonName];
+    for (id jsonName in QTUtf8JSONWriter.properties) {
+        id propertyName = QTUtf8JSONWriter.properties[jsonName];
         if (![jsonName isEqualToString:propertyName]) {
             dict[jsonName] = dict[propertyName];
             [dict removeObjectForKey:propertyName];
@@ -18740,25 +19080,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTVolatile
+@implementation QTUUID
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"volatile": @"volatileVolatile",
+        @"UUID": @"uuid",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTVolatile alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTUUID alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"volatile"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"volatile"] doubleValue] != [dict[@"volatile"] longLongValue]) return nil;
+        if (![dict[@"UUID"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"UUID"] doubleValue] != [dict[@"UUID"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -18766,22 +19106,22 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTVolatile.properties[key];
+    id resolved = QTUUID.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTVolatile.properties[key];
+    id resolved = QTUUID.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTVolatile.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTUUID.properties.allValues] mutableCopy];
 
-    for (id jsonName in QTVolatile.properties) {
-        id propertyName = QTVolatile.properties[jsonName];
+    for (id jsonName in QTUUID.properties) {
+        id propertyName = QTUUID.properties[jsonName];
         if (![jsonName isEqualToString:propertyName]) {
             dict[jsonName] = dict[propertyName];
             [dict removeObjectForKey:propertyName];
@@ -18792,25 +19132,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTWhile
+@implementation QTVar
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"while": @"whileWhile",
+        @"var": @"var",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTWhile alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTVar alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"while"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"while"] doubleValue] != [dict[@"while"] longLongValue]) return nil;
+        if (![dict[@"var"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"var"] doubleValue] != [dict[@"var"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -18818,29 +19158,61 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTWhile.properties[key];
+    id resolved = QTVar.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTWhile.properties[key];
+    id resolved = QTVar.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTWhile.properties.allValues] mutableCopy];
+    return [self dictionaryWithValuesForKeys:QTVar.properties.allValues];
+}
+@end
 
-    for (id jsonName in QTWhile.properties) {
-        id propertyName = QTWhile.properties[jsonName];
-        if (![jsonName isEqualToString:propertyName]) {
-            dict[jsonName] = dict[propertyName];
-            [dict removeObjectForKey:propertyName];
-        }
+@implementation QTVirtual
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"virtual": @"virtual",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTVirtual alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"virtual"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"virtual"] doubleValue] != [dict[@"virtual"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
     }
+    return self;
+}
 
-    return dict;
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTVirtual.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTVirtual.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTVirtual.properties.allValues];
 }
 @end
 
diff --git a/base/php/test/inputs/json/priority/keywords.json/default/TopLevel.php b/head/php/test/inputs/json/priority/keywords.json/default/TopLevel.php
index 5bb28d0..7017422 100644
--- a/base/php/test/inputs/json/priority/keywords.json/default/TopLevel.php
+++ b/head/php/test/inputs/json/priority/keywords.json/default/TopLevel.php
@@ -41636,12 +41636,17 @@ class Select {
 
 class Obj5 {
     private int $dummy; // json:dummy Required
+    private KSerializer $kSerializer; // json:KSerializer Required
     private Obj5Self $obj5Self; // json:self Required
     private This $obj5This; // json:this Required
     private Obj5True $obj5True; // json:true Required
     private TypeClass $obj5Type; // json:type Required
+    private PrimitiveKind $primitiveKind; // json:PrimitiveKind Required
     private SelfClass $self; // json:Self Required
     private Sendable $sendable; // json:Sendable Required
+    private SerialDescriptor $serialDescriptor; // json:SerialDescriptor Required
+    private SerialName $serialName; // json:SerialName Required
+    private SerializableClass $serializable; // json:Serializable Required
     private Serialize $serialize; // json:serialize Required
     private SerializerProvider $serializerProvider; // json:SerializerProvider Required
     private Set $set; // json:set Required
@@ -41693,22 +41698,22 @@ class Obj5 {
     private Unowned $unowned; // json:unowned Required
     private Unsafe $unsafe; // json:unsafe Required
     private Unsigned $unsigned; // json:unsigned Required
+    private UseSerializers $useSerializers; // json:UseSerializers Required
     private Ushort $ushort; // json:ushort Required
-    private Using $using; // json:using Required
-    private Utf8JSONReader $utf8JSONReader; // json:Utf8JsonReader Required
-    private Utf8JSONWriter $utf8JSONWriter; // json:Utf8JsonWriter Required
-    private UUID $uuid; // json:UUID Required
-    private VarClass $var; // json:var Required
-    private Virtual $virtual; // json:virtual Required
 
     /**
      * @param int $dummy
+     * @param KSerializer $kSerializer
      * @param Obj5Self $obj5Self
      * @param This $obj5This
      * @param Obj5True $obj5True
      * @param TypeClass $obj5Type
+     * @param PrimitiveKind $primitiveKind
      * @param SelfClass $self
      * @param Sendable $sendable
+     * @param SerialDescriptor $serialDescriptor
+     * @param SerialName $serialName
+     * @param SerializableClass $serializable
      * @param Serialize $serialize
      * @param SerializerProvider $serializerProvider
      * @param Set $set
@@ -41760,22 +41765,22 @@ class Obj5 {
      * @param Unowned $unowned
      * @param Unsafe $unsafe
      * @param Unsigned $unsigned
+     * @param UseSerializers $useSerializers
      * @param Ushort $ushort
-     * @param Using $using
-     * @param Utf8JSONReader $utf8JSONReader
-     * @param Utf8JSONWriter $utf8JSONWriter
-     * @param UUID $uuid
-     * @param VarClass $var
-     * @param Virtual $virtual
      */
-    public function __construct(int $dummy, Obj5Self $obj5Self, This $obj5This, Obj5True $obj5True, TypeClass $obj5Type, SelfClass $self, Sendable $sendable, Serialize $serialize, SerializerProvider $serializerProvider, Set $set, Short $short, Signed $signed, SimpleModule $simpleModule, Sizeof $sizeof, Stackalloc $stackalloc, Standards $standards, StaticClass $static, StaticAssert $staticAssert, StaticCast $staticCast, StdDeserializer $stdDeserializer, StdSerializer $stdSerializer, Strictfp $strictfp, StringClass $string, Struct $struct, Subscript $subscript, Super $super, SwitchClass $switch, Symbol $symbol, Synchronized $synchronized, System $system, Template $template, Then $then, ThreadLocal $threadLocal, ThrowClass $throw, Throws $throws, TimeOnly $timeOnly, TimeOnlyConverter $timeOnlyConverter, TimeZone $timeZone, ToJSON $toJSON, ToString $toString, TopLevelClass $topLevel, Transient $transient, TrueClass $true, TryClass $try, Type $type, Typealias $typealias, Typedef $typedef, Typeid $typeid, Typename $typename, Typeof $typeof, Uint $uint, Ulong $ulong, Unchecked $unchecked, Undefined $undefined, Union $union, Unowned $unowned, Unsafe $unsafe, Unsigned $unsigned, Ushort $ushort, Using $using, Utf8JSONReader $utf8JSONReader, Utf8JSONWriter $utf8JSONWriter, UUID $uuid, VarClass $var, Virtual $virtual) {
+    public function __construct(int $dummy, KSerializer $kSerializer, Obj5Self $obj5Self, This $obj5This, Obj5True $obj5True, TypeClass $obj5Type, PrimitiveKind $primitiveKind, SelfClass $self, Sendable $sendable, SerialDescriptor $serialDescriptor, SerialName $serialName, SerializableClass $serializable, Serialize $serialize, SerializerProvider $serializerProvider, Set $set, Short $short, Signed $signed, SimpleModule $simpleModule, Sizeof $sizeof, Stackalloc $stackalloc, Standards $standards, StaticClass $static, StaticAssert $staticAssert, StaticCast $staticCast, StdDeserializer $stdDeserializer, StdSerializer $stdSerializer, Strictfp $strictfp, StringClass $string, Struct $struct, Subscript $subscript, Super $super, SwitchClass $switch, Symbol $symbol, Synchronized $synchronized, System $system, Template $template, Then $then, ThreadLocal $threadLocal, ThrowClass $throw, Throws $throws, TimeOnly $timeOnly, TimeOnlyConverter $timeOnlyConverter, TimeZone $timeZone, ToJSON $toJSON, ToString $toString, TopLevelClass $topLevel, Transient $transient, TrueClass $true, TryClass $try, Type $type, Typealias $typealias, Typedef $typedef, Typeid $typeid, Typename $typename, Typeof $typeof, Uint $uint, Ulong $ulong, Unchecked $unchecked, Undefined $undefined, Union $union, Unowned $unowned, Unsafe $unsafe, Unsigned $unsigned, UseSerializers $useSerializers, Ushort $ushort) {
         $this->dummy = $dummy;
+        $this->kSerializer = $kSerializer;
         $this->obj5Self = $obj5Self;
         $this->obj5This = $obj5This;
         $this->obj5True = $obj5True;
         $this->obj5Type = $obj5Type;
+        $this->primitiveKind = $primitiveKind;
         $this->self = $self;
         $this->sendable = $sendable;
+        $this->serialDescriptor = $serialDescriptor;
+        $this->serialName = $serialName;
+        $this->serializable = $serializable;
         $this->serialize = $serialize;
         $this->serializerProvider = $serializerProvider;
         $this->set = $set;
@@ -41827,13 +41832,8 @@ class Obj5 {
         $this->unowned = $unowned;
         $this->unsafe = $unsafe;
         $this->unsigned = $unsigned;
+        $this->useSerializers = $useSerializers;
         $this->ushort = $ushort;
-        $this->using = $using;
-        $this->utf8JSONReader = $utf8JSONReader;
-        $this->utf8JSONWriter = $utf8JSONWriter;
-        $this->uuid = $uuid;
-        $this->var = $var;
-        $this->virtual = $virtual;
     }
 
     /**
@@ -41883,6 +41883,54 @@ class Obj5 {
         return 31; /*31:dummy*/
     }
 
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return KSerializer
+     */
+    public static function fromKSerializer(stdClass $value): KSerializer {
+        return KSerializer::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toKSerializer(): stdClass {
+        if (Obj5::validateKSerializer($this->kSerializer))  {
+            return $this->kSerializer->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::kSerializer');
+    }
+
+    /**
+     * @param KSerializer
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateKSerializer(KSerializer $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return KSerializer
+     */
+    public function getKSerializer(): KSerializer {
+        if (Obj5::validateKSerializer($this->kSerializer))  {
+            return $this->kSerializer;
+        }
+        throw new Exception('never get to getKSerializer Obj5::kSerializer');
+    }
+
+    /**
+     * @return KSerializer
+     */
+    public static function sampleKSerializer(): KSerializer {
+        return KSerializer::sample(); /*32:kSerializer*/
+    }
+
     /**
      * @param stdClass $value
      * @throws Exception
@@ -41928,7 +41976,7 @@ class Obj5 {
      * @return Obj5Self
      */
     public static function sampleObj5Self(): Obj5Self {
-        return Obj5Self::sample(); /*32:obj5Self*/
+        return Obj5Self::sample(); /*33:obj5Self*/
     }
 
     /**
@@ -41976,7 +42024,7 @@ class Obj5 {
      * @return This
      */
     public static function sampleObj5This(): This {
-        return This::sample(); /*33:obj5This*/
+        return This::sample(); /*34:obj5This*/
     }
 
     /**
@@ -42024,7 +42072,7 @@ class Obj5 {
      * @return Obj5True
      */
     public static function sampleObj5True(): Obj5True {
-        return Obj5True::sample(); /*34:obj5True*/
+        return Obj5True::sample(); /*35:obj5True*/
     }
 
     /**
@@ -42072,7 +42120,55 @@ class Obj5 {
      * @return TypeClass
      */
     public static function sampleObj5Type(): TypeClass {
-        return TypeClass::sample(); /*35:obj5Type*/
+        return TypeClass::sample(); /*36:obj5Type*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return PrimitiveKind
+     */
+    public static function fromPrimitiveKind(stdClass $value): PrimitiveKind {
+        return PrimitiveKind::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toPrimitiveKind(): stdClass {
+        if (Obj5::validatePrimitiveKind($this->primitiveKind))  {
+            return $this->primitiveKind->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::primitiveKind');
+    }
+
+    /**
+     * @param PrimitiveKind
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePrimitiveKind(PrimitiveKind $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return PrimitiveKind
+     */
+    public function getPrimitiveKind(): PrimitiveKind {
+        if (Obj5::validatePrimitiveKind($this->primitiveKind))  {
+            return $this->primitiveKind;
+        }
+        throw new Exception('never get to getPrimitiveKind Obj5::primitiveKind');
+    }
+
+    /**
+     * @return PrimitiveKind
+     */
+    public static function samplePrimitiveKind(): PrimitiveKind {
+        return PrimitiveKind::sample(); /*37:primitiveKind*/
     }
 
     /**
@@ -42120,7 +42216,7 @@ class Obj5 {
      * @return SelfClass
      */
     public static function sampleSelf(): SelfClass {
-        return SelfClass::sample(); /*36:self*/
+        return SelfClass::sample(); /*38:self*/
     }
 
     /**
@@ -42168,7 +42264,151 @@ class Obj5 {
      * @return Sendable
      */
     public static function sampleSendable(): Sendable {
-        return Sendable::sample(); /*37:sendable*/
+        return Sendable::sample(); /*39:sendable*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return SerialDescriptor
+     */
+    public static function fromSerialDescriptor(stdClass $value): SerialDescriptor {
+        return SerialDescriptor::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toSerialDescriptor(): stdClass {
+        if (Obj5::validateSerialDescriptor($this->serialDescriptor))  {
+            return $this->serialDescriptor->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::serialDescriptor');
+    }
+
+    /**
+     * @param SerialDescriptor
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSerialDescriptor(SerialDescriptor $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return SerialDescriptor
+     */
+    public function getSerialDescriptor(): SerialDescriptor {
+        if (Obj5::validateSerialDescriptor($this->serialDescriptor))  {
+            return $this->serialDescriptor;
+        }
+        throw new Exception('never get to getSerialDescriptor Obj5::serialDescriptor');
+    }
+
+    /**
+     * @return SerialDescriptor
+     */
+    public static function sampleSerialDescriptor(): SerialDescriptor {
+        return SerialDescriptor::sample(); /*40:serialDescriptor*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return SerialName
+     */
+    public static function fromSerialName(stdClass $value): SerialName {
+        return SerialName::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toSerialName(): stdClass {
+        if (Obj5::validateSerialName($this->serialName))  {
+            return $this->serialName->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::serialName');
+    }
+
+    /**
+     * @param SerialName
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSerialName(SerialName $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return SerialName
+     */
+    public function getSerialName(): SerialName {
+        if (Obj5::validateSerialName($this->serialName))  {
+            return $this->serialName;
+        }
+        throw new Exception('never get to getSerialName Obj5::serialName');
+    }
+
+    /**
+     * @return SerialName
+     */
+    public static function sampleSerialName(): SerialName {
+        return SerialName::sample(); /*41:serialName*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return SerializableClass
+     */
+    public static function fromSerializable(stdClass $value): SerializableClass {
+        return SerializableClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toSerializable(): stdClass {
+        if (Obj5::validateSerializable($this->serializable))  {
+            return $this->serializable->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::serializable');
+    }
+
+    /**
+     * @param SerializableClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSerializable(SerializableClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return SerializableClass
+     */
+    public function getSerializable(): SerializableClass {
+        if (Obj5::validateSerializable($this->serializable))  {
+            return $this->serializable;
+        }
+        throw new Exception('never get to getSerializable Obj5::serializable');
+    }
+
+    /**
+     * @return SerializableClass
+     */
+    public static function sampleSerializable(): SerializableClass {
+        return SerializableClass::sample(); /*42:serializable*/
     }
 
     /**
@@ -42216,7 +42456,7 @@ class Obj5 {
      * @return Serialize
      */
     public static function sampleSerialize(): Serialize {
-        return Serialize::sample(); /*38:serialize*/
+        return Serialize::sample(); /*43:serialize*/
     }
 
     /**
@@ -42264,7 +42504,7 @@ class Obj5 {
      * @return SerializerProvider
      */
     public static function sampleSerializerProvider(): SerializerProvider {
-        return SerializerProvider::sample(); /*39:serializerProvider*/
+        return SerializerProvider::sample(); /*44:serializerProvider*/
     }
 
     /**
@@ -42312,7 +42552,7 @@ class Obj5 {
      * @return Set
      */
     public static function sampleSet(): Set {
-        return Set::sample(); /*40:set*/
+        return Set::sample(); /*45:set*/
     }
 
     /**
@@ -42360,7 +42600,7 @@ class Obj5 {
      * @return Short
      */
     public static function sampleShort(): Short {
-        return Short::sample(); /*41:short*/
+        return Short::sample(); /*46:short*/
     }
 
     /**
@@ -42408,7 +42648,7 @@ class Obj5 {
      * @return Signed
      */
     public static function sampleSigned(): Signed {
-        return Signed::sample(); /*42:signed*/
+        return Signed::sample(); /*47:signed*/
     }
 
     /**
@@ -42456,7 +42696,7 @@ class Obj5 {
      * @return SimpleModule
      */
     public static function sampleSimpleModule(): SimpleModule {
-        return SimpleModule::sample(); /*43:simpleModule*/
+        return SimpleModule::sample(); /*48:simpleModule*/
     }
 
     /**
@@ -42504,7 +42744,7 @@ class Obj5 {
      * @return Sizeof
      */
     public static function sampleSizeof(): Sizeof {
-        return Sizeof::sample(); /*44:sizeof*/
+        return Sizeof::sample(); /*49:sizeof*/
     }
 
     /**
@@ -42552,7 +42792,7 @@ class Obj5 {
      * @return Stackalloc
      */
     public static function sampleStackalloc(): Stackalloc {
-        return Stackalloc::sample(); /*45:stackalloc*/
+        return Stackalloc::sample(); /*50:stackalloc*/
     }
 
     /**
@@ -42600,7 +42840,7 @@ class Obj5 {
      * @return Standards
      */
     public static function sampleStandards(): Standards {
-        return Standards::sample(); /*46:standards*/
+        return Standards::sample(); /*51:standards*/
     }
 
     /**
@@ -42648,7 +42888,7 @@ class Obj5 {
      * @return StaticClass
      */
     public static function sampleStatic(): StaticClass {
-        return StaticClass::sample(); /*47:static*/
+        return StaticClass::sample(); /*52:static*/
     }
 
     /**
@@ -42696,7 +42936,7 @@ class Obj5 {
      * @return StaticAssert
      */
     public static function sampleStaticAssert(): StaticAssert {
-        return StaticAssert::sample(); /*48:staticAssert*/
+        return StaticAssert::sample(); /*53:staticAssert*/
     }
 
     /**
@@ -42744,7 +42984,7 @@ class Obj5 {
      * @return StaticCast
      */
     public static function sampleStaticCast(): StaticCast {
-        return StaticCast::sample(); /*49:staticCast*/
+        return StaticCast::sample(); /*54:staticCast*/
     }
 
     /**
@@ -42792,7 +43032,7 @@ class Obj5 {
      * @return StdDeserializer
      */
     public static function sampleStdDeserializer(): StdDeserializer {
-        return StdDeserializer::sample(); /*50:stdDeserializer*/
+        return StdDeserializer::sample(); /*55:stdDeserializer*/
     }
 
     /**
@@ -42840,7 +43080,7 @@ class Obj5 {
      * @return StdSerializer
      */
     public static function sampleStdSerializer(): StdSerializer {
-        return StdSerializer::sample(); /*51:stdSerializer*/
+        return StdSerializer::sample(); /*56:stdSerializer*/
     }
 
     /**
@@ -42888,7 +43128,7 @@ class Obj5 {
      * @return Strictfp
      */
     public static function sampleStrictfp(): Strictfp {
-        return Strictfp::sample(); /*52:strictfp*/
+        return Strictfp::sample(); /*57:strictfp*/
     }
 
     /**
@@ -42936,7 +43176,7 @@ class Obj5 {
      * @return StringClass
      */
     public static function sampleString(): StringClass {
-        return StringClass::sample(); /*53:string*/
+        return StringClass::sample(); /*58:string*/
     }
 
     /**
@@ -42984,7 +43224,7 @@ class Obj5 {
      * @return Struct
      */
     public static function sampleStruct(): Struct {
-        return Struct::sample(); /*54:struct*/
+        return Struct::sample(); /*59:struct*/
     }
 
     /**
@@ -43032,7 +43272,7 @@ class Obj5 {
      * @return Subscript
      */
     public static function sampleSubscript(): Subscript {
-        return Subscript::sample(); /*55:subscript*/
+        return Subscript::sample(); /*60:subscript*/
     }
 
     /**
@@ -43080,7 +43320,7 @@ class Obj5 {
      * @return Super
      */
     public static function sampleSuper(): Super {
-        return Super::sample(); /*56:super*/
+        return Super::sample(); /*61:super*/
     }
 
     /**
@@ -43128,7 +43368,7 @@ class Obj5 {
      * @return SwitchClass
      */
     public static function sampleSwitch(): SwitchClass {
-        return SwitchClass::sample(); /*57:switch*/
+        return SwitchClass::sample(); /*62:switch*/
     }
 
     /**
@@ -43176,7 +43416,7 @@ class Obj5 {
      * @return Symbol
      */
     public static function sampleSymbol(): Symbol {
-        return Symbol::sample(); /*58:symbol*/
+        return Symbol::sample(); /*63:symbol*/
     }
 
     /**
@@ -43224,7 +43464,7 @@ class Obj5 {
      * @return Synchronized
      */
     public static function sampleSynchronized(): Synchronized {
-        return Synchronized::sample(); /*59:synchronized*/
+        return Synchronized::sample(); /*64:synchronized*/
     }
 
     /**
@@ -43272,7 +43512,7 @@ class Obj5 {
      * @return System
      */
     public static function sampleSystem(): System {
-        return System::sample(); /*60:system*/
+        return System::sample(); /*65:system*/
     }
 
     /**
@@ -43320,7 +43560,7 @@ class Obj5 {
      * @return Template
      */
     public static function sampleTemplate(): Template {
-        return Template::sample(); /*61:template*/
+        return Template::sample(); /*66:template*/
     }
 
     /**
@@ -43368,7 +43608,7 @@ class Obj5 {
      * @return Then
      */
     public static function sampleThen(): Then {
-        return Then::sample(); /*62:then*/
+        return Then::sample(); /*67:then*/
     }
 
     /**
@@ -43416,7 +43656,7 @@ class Obj5 {
      * @return ThreadLocal
      */
     public static function sampleThreadLocal(): ThreadLocal {
-        return ThreadLocal::sample(); /*63:threadLocal*/
+        return ThreadLocal::sample(); /*68:threadLocal*/
     }
 
     /**
@@ -43464,7 +43704,7 @@ class Obj5 {
      * @return ThrowClass
      */
     public static function sampleThrow(): ThrowClass {
-        return ThrowClass::sample(); /*64:throw*/
+        return ThrowClass::sample(); /*69:throw*/
     }
 
     /**
@@ -43512,7 +43752,7 @@ class Obj5 {
      * @return Throws
      */
     public static function sampleThrows(): Throws {
-        return Throws::sample(); /*65:throws*/
+        return Throws::sample(); /*70:throws*/
     }
 
     /**
@@ -43560,7 +43800,7 @@ class Obj5 {
      * @return TimeOnly
      */
     public static function sampleTimeOnly(): TimeOnly {
-        return TimeOnly::sample(); /*66:timeOnly*/
+        return TimeOnly::sample(); /*71:timeOnly*/
     }
 
     /**
@@ -43608,7 +43848,7 @@ class Obj5 {
      * @return TimeOnlyConverter
      */
     public static function sampleTimeOnlyConverter(): TimeOnlyConverter {
-        return TimeOnlyConverter::sample(); /*67:timeOnlyConverter*/
+        return TimeOnlyConverter::sample(); /*72:timeOnlyConverter*/
     }
 
     /**
@@ -43656,7 +43896,7 @@ class Obj5 {
      * @return TimeZone
      */
     public static function sampleTimeZone(): TimeZone {
-        return TimeZone::sample(); /*68:timeZone*/
+        return TimeZone::sample(); /*73:timeZone*/
     }
 
     /**
@@ -43704,7 +43944,7 @@ class Obj5 {
      * @return ToJSON
      */
     public static function sampleToJSON(): ToJSON {
-        return ToJSON::sample(); /*69:toJSON*/
+        return ToJSON::sample(); /*74:toJSON*/
     }
 
     /**
@@ -43752,7 +43992,7 @@ class Obj5 {
      * @return ToString
      */
     public static function sampleToString(): ToString {
-        return ToString::sample(); /*70:toString*/
+        return ToString::sample(); /*75:toString*/
     }
 
     /**
@@ -43800,7 +44040,7 @@ class Obj5 {
      * @return TopLevelClass
      */
     public static function sampleTopLevel(): TopLevelClass {
-        return TopLevelClass::sample(); /*71:topLevel*/
+        return TopLevelClass::sample(); /*76:topLevel*/
     }
 
     /**
@@ -43848,7 +44088,7 @@ class Obj5 {
      * @return Transient
      */
     public static function sampleTransient(): Transient {
-        return Transient::sample(); /*72:transient*/
+        return Transient::sample(); /*77:transient*/
     }
 
     /**
@@ -43896,7 +44136,7 @@ class Obj5 {
      * @return TrueClass
      */
     public static function sampleTrue(): TrueClass {
-        return TrueClass::sample(); /*73:true*/
+        return TrueClass::sample(); /*78:true*/
     }
 
     /**
@@ -43944,7 +44184,7 @@ class Obj5 {
      * @return TryClass
      */
     public static function sampleTry(): TryClass {
-        return TryClass::sample(); /*74:try*/
+        return TryClass::sample(); /*79:try*/
     }
 
     /**
@@ -43992,7 +44232,7 @@ class Obj5 {
      * @return Type
      */
     public static function sampleType(): Type {
-        return Type::sample(); /*75:type*/
+        return Type::sample(); /*80:type*/
     }
 
     /**
@@ -44040,7 +44280,7 @@ class Obj5 {
      * @return Typealias
      */
     public static function sampleTypealias(): Typealias {
-        return Typealias::sample(); /*76:typealias*/
+        return Typealias::sample(); /*81:typealias*/
     }
 
     /**
@@ -44088,7 +44328,7 @@ class Obj5 {
      * @return Typedef
      */
     public static function sampleTypedef(): Typedef {
-        return Typedef::sample(); /*77:typedef*/
+        return Typedef::sample(); /*82:typedef*/
     }
 
     /**
@@ -44136,7 +44376,7 @@ class Obj5 {
      * @return Typeid
      */
     public static function sampleTypeid(): Typeid {
-        return Typeid::sample(); /*78:typeid*/
+        return Typeid::sample(); /*83:typeid*/
     }
 
     /**
@@ -44184,7 +44424,7 @@ class Obj5 {
      * @return Typename
      */
     public static function sampleTypename(): Typename {
-        return Typename::sample(); /*79:typename*/
+        return Typename::sample(); /*84:typename*/
     }
 
     /**
@@ -44232,7 +44472,7 @@ class Obj5 {
      * @return Typeof
      */
     public static function sampleTypeof(): Typeof {
-        return Typeof::sample(); /*80:typeof*/
+        return Typeof::sample(); /*85:typeof*/
     }
 
     /**
@@ -44280,7 +44520,7 @@ class Obj5 {
      * @return Uint
      */
     public static function sampleUint(): Uint {
-        return Uint::sample(); /*81:uint*/
+        return Uint::sample(); /*86:uint*/
     }
 
     /**
@@ -44328,7 +44568,7 @@ class Obj5 {
      * @return Ulong
      */
     public static function sampleUlong(): Ulong {
-        return Ulong::sample(); /*82:ulong*/
+        return Ulong::sample(); /*87:ulong*/
     }
 
     /**
@@ -44376,7 +44616,7 @@ class Obj5 {
      * @return Unchecked
      */
     public static function sampleUnchecked(): Unchecked {
-        return Unchecked::sample(); /*83:unchecked*/
+        return Unchecked::sample(); /*88:unchecked*/
     }
 
     /**
@@ -44424,7 +44664,7 @@ class Obj5 {
      * @return Undefined
      */
     public static function sampleUndefined(): Undefined {
-        return Undefined::sample(); /*84:undefined*/
+        return Undefined::sample(); /*89:undefined*/
     }
 
     /**
@@ -44472,7 +44712,7 @@ class Obj5 {
      * @return Union
      */
     public static function sampleUnion(): Union {
-        return Union::sample(); /*85:union*/
+        return Union::sample(); /*90:union*/
     }
 
     /**
@@ -44520,7 +44760,7 @@ class Obj5 {
      * @return Unowned
      */
     public static function sampleUnowned(): Unowned {
-        return Unowned::sample(); /*86:unowned*/
+        return Unowned::sample(); /*91:unowned*/
     }
 
     /**
@@ -44568,7 +44808,7 @@ class Obj5 {
      * @return Unsafe
      */
     public static function sampleUnsafe(): Unsafe {
-        return Unsafe::sample(); /*87:unsafe*/
+        return Unsafe::sample(); /*92:unsafe*/
     }
 
     /**
@@ -44616,343 +44856,103 @@ class Obj5 {
      * @return Unsigned
      */
     public static function sampleUnsigned(): Unsigned {
-        return Unsigned::sample(); /*88:unsigned*/
+        return Unsigned::sample(); /*93:unsigned*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return Ushort
+     * @return UseSerializers
      */
-    public static function fromUshort(stdClass $value): Ushort {
-        return Ushort::from($value); /*class*/
+    public static function fromUseSerializers(stdClass $value): UseSerializers {
+        return UseSerializers::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toUshort(): stdClass {
-        if (Obj5::validateUshort($this->ushort))  {
-            return $this->ushort->to(); /*class*/
+    public function toUseSerializers(): stdClass {
+        if (Obj5::validateUseSerializers($this->useSerializers))  {
+            return $this->useSerializers->to(); /*class*/
         }
-        throw new Exception('never get to this Obj5::ushort');
+        throw new Exception('never get to this Obj5::useSerializers');
     }
 
     /**
-     * @param Ushort
+     * @param UseSerializers
      * @return bool
      * @throws Exception
      */
-    public static function validateUshort(Ushort $value): bool {
+    public static function validateUseSerializers(UseSerializers $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return Ushort
+     * @return UseSerializers
      */
-    public function getUshort(): Ushort {
-        if (Obj5::validateUshort($this->ushort))  {
-            return $this->ushort;
+    public function getUseSerializers(): UseSerializers {
+        if (Obj5::validateUseSerializers($this->useSerializers))  {
+            return $this->useSerializers;
         }
-        throw new Exception('never get to getUshort Obj5::ushort');
+        throw new Exception('never get to getUseSerializers Obj5::useSerializers');
     }
 
     /**
-     * @return Ushort
+     * @return UseSerializers
      */
-    public static function sampleUshort(): Ushort {
-        return Ushort::sample(); /*89:ushort*/
+    public static function sampleUseSerializers(): UseSerializers {
+        return UseSerializers::sample(); /*94:useSerializers*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return Using
+     * @return Ushort
      */
-    public static function fromUsing(stdClass $value): Using {
-        return Using::from($value); /*class*/
+    public static function fromUshort(stdClass $value): Ushort {
+        return Ushort::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toUsing(): stdClass {
-        if (Obj5::validateUsing($this->using))  {
-            return $this->using->to(); /*class*/
+    public function toUshort(): stdClass {
+        if (Obj5::validateUshort($this->ushort))  {
+            return $this->ushort->to(); /*class*/
         }
-        throw new Exception('never get to this Obj5::using');
+        throw new Exception('never get to this Obj5::ushort');
     }
 
     /**
-     * @param Using
+     * @param Ushort
      * @return bool
      * @throws Exception
      */
-    public static function validateUsing(Using $value): bool {
+    public static function validateUshort(Ushort $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return Using
+     * @return Ushort
      */
-    public function getUsing(): Using {
-        if (Obj5::validateUsing($this->using))  {
-            return $this->using;
+    public function getUshort(): Ushort {
+        if (Obj5::validateUshort($this->ushort))  {
+            return $this->ushort;
         }
-        throw new Exception('never get to getUsing Obj5::using');
-    }
-
-    /**
-     * @return Using
-     */
-    public static function sampleUsing(): Using {
-        return Using::sample(); /*90:using*/
+        throw new Exception('never get to getUshort Obj5::ushort');
     }
 
     /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Utf8JSONReader
+     * @return Ushort
      */
-    public static function fromUtf8JSONReader(stdClass $value): Utf8JSONReader {
-        return Utf8JSONReader::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toUtf8JSONReader(): stdClass {
-        if (Obj5::validateUtf8JSONReader($this->utf8JSONReader))  {
-            return $this->utf8JSONReader->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj5::utf8JSONReader');
-    }
-
-    /**
-     * @param Utf8JSONReader
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateUtf8JSONReader(Utf8JSONReader $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return Utf8JSONReader
-     */
-    public function getUtf8JSONReader(): Utf8JSONReader {
-        if (Obj5::validateUtf8JSONReader($this->utf8JSONReader))  {
-            return $this->utf8JSONReader;
-        }
-        throw new Exception('never get to getUtf8JSONReader Obj5::utf8JSONReader');
-    }
-
-    /**
-     * @return Utf8JSONReader
-     */
-    public static function sampleUtf8JSONReader(): Utf8JSONReader {
-        return Utf8JSONReader::sample(); /*91:utf8JSONReader*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Utf8JSONWriter
-     */
-    public static function fromUtf8JSONWriter(stdClass $value): Utf8JSONWriter {
-        return Utf8JSONWriter::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toUtf8JSONWriter(): stdClass {
-        if (Obj5::validateUtf8JSONWriter($this->utf8JSONWriter))  {
-            return $this->utf8JSONWriter->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj5::utf8JSONWriter');
-    }
-
-    /**
-     * @param Utf8JSONWriter
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateUtf8JSONWriter(Utf8JSONWriter $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return Utf8JSONWriter
-     */
-    public function getUtf8JSONWriter(): Utf8JSONWriter {
-        if (Obj5::validateUtf8JSONWriter($this->utf8JSONWriter))  {
-            return $this->utf8JSONWriter;
-        }
-        throw new Exception('never get to getUtf8JSONWriter Obj5::utf8JSONWriter');
-    }
-
-    /**
-     * @return Utf8JSONWriter
-     */
-    public static function sampleUtf8JSONWriter(): Utf8JSONWriter {
-        return Utf8JSONWriter::sample(); /*92:utf8JSONWriter*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return UUID
-     */
-    public static function fromUUID(stdClass $value): UUID {
-        return UUID::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toUUID(): stdClass {
-        if (Obj5::validateUUID($this->uuid))  {
-            return $this->uuid->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj5::uuid');
-    }
-
-    /**
-     * @param UUID
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateUUID(UUID $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return UUID
-     */
-    public function getUUID(): UUID {
-        if (Obj5::validateUUID($this->uuid))  {
-            return $this->uuid;
-        }
-        throw new Exception('never get to getUUID Obj5::uuid');
-    }
-
-    /**
-     * @return UUID
-     */
-    public static function sampleUUID(): UUID {
-        return UUID::sample(); /*93:uuid*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return VarClass
-     */
-    public static function fromVar(stdClass $value): VarClass {
-        return VarClass::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toVar(): stdClass {
-        if (Obj5::validateVar($this->var))  {
-            return $this->var->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj5::var');
-    }
-
-    /**
-     * @param VarClass
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateVar(VarClass $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return VarClass
-     */
-    public function getVar(): VarClass {
-        if (Obj5::validateVar($this->var))  {
-            return $this->var;
-        }
-        throw new Exception('never get to getVar Obj5::var');
-    }
-
-    /**
-     * @return VarClass
-     */
-    public static function sampleVar(): VarClass {
-        return VarClass::sample(); /*94:var*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Virtual
-     */
-    public static function fromVirtual(stdClass $value): Virtual {
-        return Virtual::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toVirtual(): stdClass {
-        if (Obj5::validateVirtual($this->virtual))  {
-            return $this->virtual->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj5::virtual');
-    }
-
-    /**
-     * @param Virtual
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateVirtual(Virtual $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return Virtual
-     */
-    public function getVirtual(): Virtual {
-        if (Obj5::validateVirtual($this->virtual))  {
-            return $this->virtual;
-        }
-        throw new Exception('never get to getVirtual Obj5::virtual');
-    }
-
-    /**
-     * @return Virtual
-     */
-    public static function sampleVirtual(): Virtual {
-        return Virtual::sample(); /*95:virtual*/
+    public static function sampleUshort(): Ushort {
+        return Ushort::sample(); /*95:ushort*/
     }
 
     /**
@@ -44961,12 +44961,17 @@ class Obj5 {
      */
     public function validate(): bool {
         return Obj5::validateDummy($this->dummy)
+        || Obj5::validateKSerializer($this->kSerializer)
         || Obj5::validateObj5Self($this->obj5Self)
         || Obj5::validateObj5This($this->obj5This)
         || Obj5::validateObj5True($this->obj5True)
         || Obj5::validateObj5Type($this->obj5Type)
+        || Obj5::validatePrimitiveKind($this->primitiveKind)
         || Obj5::validateSelf($this->self)
         || Obj5::validateSendable($this->sendable)
+        || Obj5::validateSerialDescriptor($this->serialDescriptor)
+        || Obj5::validateSerialName($this->serialName)
+        || Obj5::validateSerializable($this->serializable)
         || Obj5::validateSerialize($this->serialize)
         || Obj5::validateSerializerProvider($this->serializerProvider)
         || Obj5::validateSet($this->set)
@@ -45018,13 +45023,8 @@ class Obj5 {
         || Obj5::validateUnowned($this->unowned)
         || Obj5::validateUnsafe($this->unsafe)
         || Obj5::validateUnsigned($this->unsigned)
-        || Obj5::validateUshort($this->ushort)
-        || Obj5::validateUsing($this->using)
-        || Obj5::validateUtf8JSONReader($this->utf8JSONReader)
-        || Obj5::validateUtf8JSONWriter($this->utf8JSONWriter)
-        || Obj5::validateUUID($this->uuid)
-        || Obj5::validateVar($this->var)
-        || Obj5::validateVirtual($this->virtual);
+        || Obj5::validateUseSerializers($this->useSerializers)
+        || Obj5::validateUshort($this->ushort);
     }
 
     /**
@@ -45034,12 +45034,17 @@ class Obj5 {
     public function to(): stdClass  {
         $out = new stdClass();
         $out->{'dummy'} = $this->toDummy();
+        $out->{'KSerializer'} = $this->toKSerializer();
         $out->{'self'} = $this->toObj5Self();
         $out->{'this'} = $this->toObj5This();
         $out->{'true'} = $this->toObj5True();
         $out->{'type'} = $this->toObj5Type();
+        $out->{'PrimitiveKind'} = $this->toPrimitiveKind();
         $out->{'Self'} = $this->toSelf();
         $out->{'Sendable'} = $this->toSendable();
+        $out->{'SerialDescriptor'} = $this->toSerialDescriptor();
+        $out->{'SerialName'} = $this->toSerialName();
+        $out->{'Serializable'} = $this->toSerializable();
         $out->{'serialize'} = $this->toSerialize();
         $out->{'SerializerProvider'} = $this->toSerializerProvider();
         $out->{'set'} = $this->toSet();
@@ -45091,13 +45096,8 @@ class Obj5 {
         $out->{'unowned'} = $this->toUnowned();
         $out->{'unsafe'} = $this->toUnsafe();
         $out->{'unsigned'} = $this->toUnsigned();
+        $out->{'UseSerializers'} = $this->toUseSerializers();
         $out->{'ushort'} = $this->toUshort();
-        $out->{'using'} = $this->toUsing();
-        $out->{'Utf8JsonReader'} = $this->toUtf8JSONReader();
-        $out->{'Utf8JsonWriter'} = $this->toUtf8JSONWriter();
-        $out->{'UUID'} = $this->toUUID();
-        $out->{'var'} = $this->toVar();
-        $out->{'virtual'} = $this->toVirtual();
         return $out;
     }
 
@@ -45110,6 +45110,9 @@ class Obj5 {
         if (!property_exists($obj, 'dummy')) {
             throw new Exception("Missing required property");
         }
+        if (!property_exists($obj, 'KSerializer')) {
+            throw new Exception("Missing required property");
+        }
         if (!property_exists($obj, 'self')) {
             throw new Exception("Missing required property");
         }
@@ -45122,12 +45125,24 @@ class Obj5 {
         if (!property_exists($obj, 'type')) {
             throw new Exception("Missing required property");
         }
+        if (!property_exists($obj, 'PrimitiveKind')) {
+            throw new Exception("Missing required property");
+        }
         if (!property_exists($obj, 'Self')) {
             throw new Exception("Missing required property");
         }
         if (!property_exists($obj, 'Sendable')) {
             throw new Exception("Missing required property");
         }
+        if (!property_exists($obj, 'SerialDescriptor')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'SerialName')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'Serializable')) {
+            throw new Exception("Missing required property");
+        }
         if (!property_exists($obj, 'serialize')) {
             throw new Exception("Missing required property");
         }
@@ -45281,35 +45296,25 @@ class Obj5 {
         if (!property_exists($obj, 'unsigned')) {
             throw new Exception("Missing required property");
         }
-        if (!property_exists($obj, 'ushort')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'using')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'Utf8JsonReader')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'Utf8JsonWriter')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'UUID')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'var')) {
+        if (!property_exists($obj, 'UseSerializers')) {
             throw new Exception("Missing required property");
         }
-        if (!property_exists($obj, 'virtual')) {
+        if (!property_exists($obj, 'ushort')) {
             throw new Exception("Missing required property");
         }
         return new Obj5(
          Obj5::fromDummy($obj->{'dummy'})
+        ,Obj5::fromKSerializer($obj->{'KSerializer'})
         ,Obj5::fromObj5Self($obj->{'self'})
         ,Obj5::fromObj5This($obj->{'this'})
         ,Obj5::fromObj5True($obj->{'true'})
         ,Obj5::fromObj5Type($obj->{'type'})
+        ,Obj5::fromPrimitiveKind($obj->{'PrimitiveKind'})
         ,Obj5::fromSelf($obj->{'Self'})
         ,Obj5::fromSendable($obj->{'Sendable'})
+        ,Obj5::fromSerialDescriptor($obj->{'SerialDescriptor'})
+        ,Obj5::fromSerialName($obj->{'SerialName'})
+        ,Obj5::fromSerializable($obj->{'Serializable'})
         ,Obj5::fromSerialize($obj->{'serialize'})
         ,Obj5::fromSerializerProvider($obj->{'SerializerProvider'})
         ,Obj5::fromSet($obj->{'set'})
@@ -45361,13 +45366,8 @@ class Obj5 {
         ,Obj5::fromUnowned($obj->{'unowned'})
         ,Obj5::fromUnsafe($obj->{'unsafe'})
         ,Obj5::fromUnsigned($obj->{'unsigned'})
+        ,Obj5::fromUseSerializers($obj->{'UseSerializers'})
         ,Obj5::fromUshort($obj->{'ushort'})
-        ,Obj5::fromUsing($obj->{'using'})
-        ,Obj5::fromUtf8JSONReader($obj->{'Utf8JsonReader'})
-        ,Obj5::fromUtf8JSONWriter($obj->{'Utf8JsonWriter'})
-        ,Obj5::fromUUID($obj->{'UUID'})
-        ,Obj5::fromVar($obj->{'var'})
-        ,Obj5::fromVirtual($obj->{'virtual'})
         );
     }
 
@@ -45377,12 +45377,17 @@ class Obj5 {
     public static function sample(): Obj5 {
         return new Obj5(
          Obj5::sampleDummy()
+        ,Obj5::sampleKSerializer()
         ,Obj5::sampleObj5Self()
         ,Obj5::sampleObj5This()
         ,Obj5::sampleObj5True()
         ,Obj5::sampleObj5Type()
+        ,Obj5::samplePrimitiveKind()
         ,Obj5::sampleSelf()
         ,Obj5::sampleSendable()
+        ,Obj5::sampleSerialDescriptor()
+        ,Obj5::sampleSerialName()
+        ,Obj5::sampleSerializable()
         ,Obj5::sampleSerialize()
         ,Obj5::sampleSerializerProvider()
         ,Obj5::sampleSet()
@@ -45434,27 +45439,22 @@ class Obj5 {
         ,Obj5::sampleUnowned()
         ,Obj5::sampleUnsafe()
         ,Obj5::sampleUnsigned()
+        ,Obj5::sampleUseSerializers()
         ,Obj5::sampleUshort()
-        ,Obj5::sampleUsing()
-        ,Obj5::sampleUtf8JSONReader()
-        ,Obj5::sampleUtf8JSONWriter()
-        ,Obj5::sampleUUID()
-        ,Obj5::sampleVar()
-        ,Obj5::sampleVirtual()
         );
     }
 }
 
-// This is an autogenerated file:Obj5Self
+// This is an autogenerated file:KSerializer
 
-class Obj5Self {
-    private int $self; // json:self Required
+class KSerializer {
+    private int $kSerializer; // json:KSerializer Required
 
     /**
-     * @param int $self
+     * @param int $kSerializer
      */
-    public function __construct(int $self) {
-        $this->self = $self;
+    public function __construct(int $kSerializer) {
+        $this->kSerializer = $kSerializer;
     }
 
     /**
@@ -45462,7 +45462,7 @@ class Obj5Self {
      * @throws Exception
      * @return int
      */
-    public static function fromSelf(int $value): int {
+    public static function fromKSerializer(int $value): int {
         return $value; /*int*/
     }
 
@@ -45470,11 +45470,11 @@ class Obj5Self {
      * @throws Exception
      * @return int
      */
-    public function toSelf(): int {
-        if (Obj5Self::validateSelf($this->self))  {
-            return $this->self; /*int*/
+    public function toKSerializer(): int {
+        if (KSerializer::validateKSerializer($this->kSerializer))  {
+            return $this->kSerializer; /*int*/
         }
-        throw new Exception('never get to this Obj5Self::self');
+        throw new Exception('never get to this KSerializer::kSerializer');
     }
 
     /**
@@ -45482,7 +45482,7 @@ class Obj5Self {
      * @return bool
      * @throws Exception
      */
-    public static function validateSelf(int $value): bool {
+    public static function validateKSerializer(int $value): bool {
         return true;
     }
 
@@ -45490,18 +45490,18 @@ class Obj5Self {
      * @throws Exception
      * @return int
      */
-    public function getSelf(): int {
-        if (Obj5Self::validateSelf($this->self))  {
-            return $this->self;
+    public function getKSerializer(): int {
+        if (KSerializer::validateKSerializer($this->kSerializer))  {
+            return $this->kSerializer;
         }
-        throw new Exception('never get to getSelf Obj5Self::self');
+        throw new Exception('never get to getKSerializer KSerializer::kSerializer');
     }
 
     /**
      * @return int
      */
-    public static function sampleSelf(): int {
-        return 31; /*31:self*/
+    public static function sampleKSerializer(): int {
+        return 31; /*31:kSerializer*/
     }
 
     /**
@@ -45509,7 +45509,7 @@ class Obj5Self {
      * @return bool
      */
     public function validate(): bool {
-        return Obj5Self::validateSelf($this->self);
+        return KSerializer::validateKSerializer($this->kSerializer);
     }
 
     /**
@@ -45518,44 +45518,44 @@ class Obj5Self {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'self'} = $this->toSelf();
+        $out->{'KSerializer'} = $this->toKSerializer();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Obj5Self
+     * @return KSerializer
      * @throws Exception
      */
-    public static function from(stdClass $obj): Obj5Self {
-        if (!property_exists($obj, 'self')) {
+    public static function from(stdClass $obj): KSerializer {
+        if (!property_exists($obj, 'KSerializer')) {
             throw new Exception("Missing required property");
         }
-        return new Obj5Self(
-         Obj5Self::fromSelf($obj->{'self'})
+        return new KSerializer(
+         KSerializer::fromKSerializer($obj->{'KSerializer'})
         );
     }
 
     /**
-     * @return Obj5Self
+     * @return KSerializer
      */
-    public static function sample(): Obj5Self {
-        return new Obj5Self(
-         Obj5Self::sampleSelf()
+    public static function sample(): KSerializer {
+        return new KSerializer(
+         KSerializer::sampleKSerializer()
         );
     }
 }
 
-// This is an autogenerated file:This
+// This is an autogenerated file:Obj5Self
 
-class This {
-    private int $thisThis; // json:this Required
+class Obj5Self {
+    private int $self; // json:self Required
 
     /**
-     * @param int $thisThis
+     * @param int $self
      */
-    public function __construct(int $thisThis) {
-        $this->thisThis = $thisThis;
+    public function __construct(int $self) {
+        $this->self = $self;
     }
 
     /**
@@ -45563,7 +45563,7 @@ class This {
      * @throws Exception
      * @return int
      */
-    public static function fromThisThis(int $value): int {
+    public static function fromSelf(int $value): int {
         return $value; /*int*/
     }
 
@@ -45571,9 +45571,110 @@ class This {
      * @throws Exception
      * @return int
      */
-    public function toThisThis(): int {
-        if (This::validateThisThis($this->thisThis))  {
-            return $this->thisThis; /*int*/
+    public function toSelf(): int {
+        if (Obj5Self::validateSelf($this->self))  {
+            return $this->self; /*int*/
+        }
+        throw new Exception('never get to this Obj5Self::self');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSelf(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getSelf(): int {
+        if (Obj5Self::validateSelf($this->self))  {
+            return $this->self;
+        }
+        throw new Exception('never get to getSelf Obj5Self::self');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleSelf(): int {
+        return 31; /*31:self*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Obj5Self::validateSelf($this->self);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'self'} = $this->toSelf();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Obj5Self
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Obj5Self {
+        if (!property_exists($obj, 'self')) {
+            throw new Exception("Missing required property");
+        }
+        return new Obj5Self(
+         Obj5Self::fromSelf($obj->{'self'})
+        );
+    }
+
+    /**
+     * @return Obj5Self
+     */
+    public static function sample(): Obj5Self {
+        return new Obj5Self(
+         Obj5Self::sampleSelf()
+        );
+    }
+}
+
+// This is an autogenerated file:This
+
+class This {
+    private int $thisThis; // json:this Required
+
+    /**
+     * @param int $thisThis
+     */
+    public function __construct(int $thisThis) {
+        $this->thisThis = $thisThis;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromThisThis(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toThisThis(): int {
+        if (This::validateThisThis($this->thisThis))  {
+            return $this->thisThis; /*int*/
         }
         throw new Exception('never get to this This::thisThis');
     }
@@ -45849,6 +45950,107 @@ class TypeClass {
     }
 }
 
+// This is an autogenerated file:PrimitiveKind
+
+class PrimitiveKind {
+    private int $primitiveKind; // json:PrimitiveKind Required
+
+    /**
+     * @param int $primitiveKind
+     */
+    public function __construct(int $primitiveKind) {
+        $this->primitiveKind = $primitiveKind;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromPrimitiveKind(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toPrimitiveKind(): int {
+        if (PrimitiveKind::validatePrimitiveKind($this->primitiveKind))  {
+            return $this->primitiveKind; /*int*/
+        }
+        throw new Exception('never get to this PrimitiveKind::primitiveKind');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePrimitiveKind(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getPrimitiveKind(): int {
+        if (PrimitiveKind::validatePrimitiveKind($this->primitiveKind))  {
+            return $this->primitiveKind;
+        }
+        throw new Exception('never get to getPrimitiveKind PrimitiveKind::primitiveKind');
+    }
+
+    /**
+     * @return int
+     */
+    public static function samplePrimitiveKind(): int {
+        return 31; /*31:primitiveKind*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return PrimitiveKind::validatePrimitiveKind($this->primitiveKind);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'PrimitiveKind'} = $this->toPrimitiveKind();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return PrimitiveKind
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): PrimitiveKind {
+        if (!property_exists($obj, 'PrimitiveKind')) {
+            throw new Exception("Missing required property");
+        }
+        return new PrimitiveKind(
+         PrimitiveKind::fromPrimitiveKind($obj->{'PrimitiveKind'})
+        );
+    }
+
+    /**
+     * @return PrimitiveKind
+     */
+    public static function sample(): PrimitiveKind {
+        return new PrimitiveKind(
+         PrimitiveKind::samplePrimitiveKind()
+        );
+    }
+}
+
 // This is an autogenerated file:SelfClass
 
 class SelfClass {
@@ -46051,16 +46253,16 @@ class Sendable {
     }
 }
 
-// This is an autogenerated file:Serialize
+// This is an autogenerated file:SerialDescriptor
 
-class Serialize {
-    private int $serialize; // json:serialize Required
+class SerialDescriptor {
+    private int $serialDescriptor; // json:SerialDescriptor Required
 
     /**
-     * @param int $serialize
+     * @param int $serialDescriptor
      */
-    public function __construct(int $serialize) {
-        $this->serialize = $serialize;
+    public function __construct(int $serialDescriptor) {
+        $this->serialDescriptor = $serialDescriptor;
     }
 
     /**
@@ -46068,7 +46270,7 @@ class Serialize {
      * @throws Exception
      * @return int
      */
-    public static function fromSerialize(int $value): int {
+    public static function fromSerialDescriptor(int $value): int {
         return $value; /*int*/
     }
 
@@ -46076,11 +46278,11 @@ class Serialize {
      * @throws Exception
      * @return int
      */
-    public function toSerialize(): int {
-        if (Serialize::validateSerialize($this->serialize))  {
-            return $this->serialize; /*int*/
+    public function toSerialDescriptor(): int {
+        if (SerialDescriptor::validateSerialDescriptor($this->serialDescriptor))  {
+            return $this->serialDescriptor; /*int*/
         }
-        throw new Exception('never get to this Serialize::serialize');
+        throw new Exception('never get to this SerialDescriptor::serialDescriptor');
     }
 
     /**
@@ -46088,7 +46290,7 @@ class Serialize {
      * @return bool
      * @throws Exception
      */
-    public static function validateSerialize(int $value): bool {
+    public static function validateSerialDescriptor(int $value): bool {
         return true;
     }
 
@@ -46096,18 +46298,18 @@ class Serialize {
      * @throws Exception
      * @return int
      */
-    public function getSerialize(): int {
-        if (Serialize::validateSerialize($this->serialize))  {
-            return $this->serialize;
+    public function getSerialDescriptor(): int {
+        if (SerialDescriptor::validateSerialDescriptor($this->serialDescriptor))  {
+            return $this->serialDescriptor;
         }
-        throw new Exception('never get to getSerialize Serialize::serialize');
+        throw new Exception('never get to getSerialDescriptor SerialDescriptor::serialDescriptor');
     }
 
     /**
      * @return int
      */
-    public static function sampleSerialize(): int {
-        return 31; /*31:serialize*/
+    public static function sampleSerialDescriptor(): int {
+        return 31; /*31:serialDescriptor*/
     }
 
     /**
@@ -46115,7 +46317,7 @@ class Serialize {
      * @return bool
      */
     public function validate(): bool {
-        return Serialize::validateSerialize($this->serialize);
+        return SerialDescriptor::validateSerialDescriptor($this->serialDescriptor);
     }
 
     /**
@@ -46124,44 +46326,44 @@ class Serialize {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'serialize'} = $this->toSerialize();
+        $out->{'SerialDescriptor'} = $this->toSerialDescriptor();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Serialize
+     * @return SerialDescriptor
      * @throws Exception
      */
-    public static function from(stdClass $obj): Serialize {
-        if (!property_exists($obj, 'serialize')) {
+    public static function from(stdClass $obj): SerialDescriptor {
+        if (!property_exists($obj, 'SerialDescriptor')) {
             throw new Exception("Missing required property");
         }
-        return new Serialize(
-         Serialize::fromSerialize($obj->{'serialize'})
+        return new SerialDescriptor(
+         SerialDescriptor::fromSerialDescriptor($obj->{'SerialDescriptor'})
         );
     }
 
     /**
-     * @return Serialize
+     * @return SerialDescriptor
      */
-    public static function sample(): Serialize {
-        return new Serialize(
-         Serialize::sampleSerialize()
+    public static function sample(): SerialDescriptor {
+        return new SerialDescriptor(
+         SerialDescriptor::sampleSerialDescriptor()
         );
     }
 }
 
-// This is an autogenerated file:SerializerProvider
+// This is an autogenerated file:SerialName
 
-class SerializerProvider {
-    private int $serializerProvider; // json:SerializerProvider Required
+class SerialName {
+    private int $serialName; // json:SerialName Required
 
     /**
-     * @param int $serializerProvider
+     * @param int $serialName
      */
-    public function __construct(int $serializerProvider) {
-        $this->serializerProvider = $serializerProvider;
+    public function __construct(int $serialName) {
+        $this->serialName = $serialName;
     }
 
     /**
@@ -46169,7 +46371,7 @@ class SerializerProvider {
      * @throws Exception
      * @return int
      */
-    public static function fromSerializerProvider(int $value): int {
+    public static function fromSerialName(int $value): int {
         return $value; /*int*/
     }
 
@@ -46177,11 +46379,11 @@ class SerializerProvider {
      * @throws Exception
      * @return int
      */
-    public function toSerializerProvider(): int {
-        if (SerializerProvider::validateSerializerProvider($this->serializerProvider))  {
-            return $this->serializerProvider; /*int*/
+    public function toSerialName(): int {
+        if (SerialName::validateSerialName($this->serialName))  {
+            return $this->serialName; /*int*/
         }
-        throw new Exception('never get to this SerializerProvider::serializerProvider');
+        throw new Exception('never get to this SerialName::serialName');
     }
 
     /**
@@ -46189,7 +46391,7 @@ class SerializerProvider {
      * @return bool
      * @throws Exception
      */
-    public static function validateSerializerProvider(int $value): bool {
+    public static function validateSerialName(int $value): bool {
         return true;
     }
 
@@ -46197,18 +46399,18 @@ class SerializerProvider {
      * @throws Exception
      * @return int
      */
-    public function getSerializerProvider(): int {
-        if (SerializerProvider::validateSerializerProvider($this->serializerProvider))  {
-            return $this->serializerProvider;
+    public function getSerialName(): int {
+        if (SerialName::validateSerialName($this->serialName))  {
+            return $this->serialName;
         }
-        throw new Exception('never get to getSerializerProvider SerializerProvider::serializerProvider');
+        throw new Exception('never get to getSerialName SerialName::serialName');
     }
 
     /**
      * @return int
      */
-    public static function sampleSerializerProvider(): int {
-        return 31; /*31:serializerProvider*/
+    public static function sampleSerialName(): int {
+        return 31; /*31:serialName*/
     }
 
     /**
@@ -46216,7 +46418,7 @@ class SerializerProvider {
      * @return bool
      */
     public function validate(): bool {
-        return SerializerProvider::validateSerializerProvider($this->serializerProvider);
+        return SerialName::validateSerialName($this->serialName);
     }
 
     /**
@@ -46225,44 +46427,44 @@ class SerializerProvider {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'SerializerProvider'} = $this->toSerializerProvider();
+        $out->{'SerialName'} = $this->toSerialName();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return SerializerProvider
+     * @return SerialName
      * @throws Exception
      */
-    public static function from(stdClass $obj): SerializerProvider {
-        if (!property_exists($obj, 'SerializerProvider')) {
+    public static function from(stdClass $obj): SerialName {
+        if (!property_exists($obj, 'SerialName')) {
             throw new Exception("Missing required property");
         }
-        return new SerializerProvider(
-         SerializerProvider::fromSerializerProvider($obj->{'SerializerProvider'})
+        return new SerialName(
+         SerialName::fromSerialName($obj->{'SerialName'})
         );
     }
 
     /**
-     * @return SerializerProvider
+     * @return SerialName
      */
-    public static function sample(): SerializerProvider {
-        return new SerializerProvider(
-         SerializerProvider::sampleSerializerProvider()
+    public static function sample(): SerialName {
+        return new SerialName(
+         SerialName::sampleSerialName()
         );
     }
 }
 
-// This is an autogenerated file:Set
+// This is an autogenerated file:SerializableClass
 
-class Set {
-    private int $set; // json:set Required
+class SerializableClass {
+    private int $serializable; // json:Serializable Required
 
     /**
-     * @param int $set
+     * @param int $serializable
      */
-    public function __construct(int $set) {
-        $this->set = $set;
+    public function __construct(int $serializable) {
+        $this->serializable = $serializable;
     }
 
     /**
@@ -46270,7 +46472,7 @@ class Set {
      * @throws Exception
      * @return int
      */
-    public static function fromSet(int $value): int {
+    public static function fromSerializable(int $value): int {
         return $value; /*int*/
     }
 
@@ -46278,11 +46480,11 @@ class Set {
      * @throws Exception
      * @return int
      */
-    public function toSet(): int {
-        if (Set::validateSet($this->set))  {
-            return $this->set; /*int*/
+    public function toSerializable(): int {
+        if (SerializableClass::validateSerializable($this->serializable))  {
+            return $this->serializable; /*int*/
         }
-        throw new Exception('never get to this Set::set');
+        throw new Exception('never get to this SerializableClass::serializable');
     }
 
     /**
@@ -46290,7 +46492,7 @@ class Set {
      * @return bool
      * @throws Exception
      */
-    public static function validateSet(int $value): bool {
+    public static function validateSerializable(int $value): bool {
         return true;
     }
 
@@ -46298,18 +46500,18 @@ class Set {
      * @throws Exception
      * @return int
      */
-    public function getSet(): int {
-        if (Set::validateSet($this->set))  {
-            return $this->set;
+    public function getSerializable(): int {
+        if (SerializableClass::validateSerializable($this->serializable))  {
+            return $this->serializable;
         }
-        throw new Exception('never get to getSet Set::set');
+        throw new Exception('never get to getSerializable SerializableClass::serializable');
     }
 
     /**
      * @return int
      */
-    public static function sampleSet(): int {
-        return 31; /*31:set*/
+    public static function sampleSerializable(): int {
+        return 31; /*31:serializable*/
     }
 
     /**
@@ -46317,7 +46519,7 @@ class Set {
      * @return bool
      */
     public function validate(): bool {
-        return Set::validateSet($this->set);
+        return SerializableClass::validateSerializable($this->serializable);
     }
 
     /**
@@ -46326,44 +46528,44 @@ class Set {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'set'} = $this->toSet();
+        $out->{'Serializable'} = $this->toSerializable();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Set
+     * @return SerializableClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): Set {
-        if (!property_exists($obj, 'set')) {
+    public static function from(stdClass $obj): SerializableClass {
+        if (!property_exists($obj, 'Serializable')) {
             throw new Exception("Missing required property");
         }
-        return new Set(
-         Set::fromSet($obj->{'set'})
+        return new SerializableClass(
+         SerializableClass::fromSerializable($obj->{'Serializable'})
         );
     }
 
     /**
-     * @return Set
+     * @return SerializableClass
      */
-    public static function sample(): Set {
-        return new Set(
-         Set::sampleSet()
+    public static function sample(): SerializableClass {
+        return new SerializableClass(
+         SerializableClass::sampleSerializable()
         );
     }
 }
 
-// This is an autogenerated file:Short
+// This is an autogenerated file:Serialize
 
-class Short {
-    private int $short; // json:short Required
+class Serialize {
+    private int $serialize; // json:serialize Required
 
     /**
-     * @param int $short
+     * @param int $serialize
      */
-    public function __construct(int $short) {
-        $this->short = $short;
+    public function __construct(int $serialize) {
+        $this->serialize = $serialize;
     }
 
     /**
@@ -46371,7 +46573,7 @@ class Short {
      * @throws Exception
      * @return int
      */
-    public static function fromShort(int $value): int {
+    public static function fromSerialize(int $value): int {
         return $value; /*int*/
     }
 
@@ -46379,11 +46581,11 @@ class Short {
      * @throws Exception
      * @return int
      */
-    public function toShort(): int {
-        if (Short::validateShort($this->short))  {
-            return $this->short; /*int*/
+    public function toSerialize(): int {
+        if (Serialize::validateSerialize($this->serialize))  {
+            return $this->serialize; /*int*/
         }
-        throw new Exception('never get to this Short::short');
+        throw new Exception('never get to this Serialize::serialize');
     }
 
     /**
@@ -46391,7 +46593,7 @@ class Short {
      * @return bool
      * @throws Exception
      */
-    public static function validateShort(int $value): bool {
+    public static function validateSerialize(int $value): bool {
         return true;
     }
 
@@ -46399,18 +46601,18 @@ class Short {
      * @throws Exception
      * @return int
      */
-    public function getShort(): int {
-        if (Short::validateShort($this->short))  {
-            return $this->short;
+    public function getSerialize(): int {
+        if (Serialize::validateSerialize($this->serialize))  {
+            return $this->serialize;
         }
-        throw new Exception('never get to getShort Short::short');
+        throw new Exception('never get to getSerialize Serialize::serialize');
     }
 
     /**
      * @return int
      */
-    public static function sampleShort(): int {
-        return 31; /*31:short*/
+    public static function sampleSerialize(): int {
+        return 31; /*31:serialize*/
     }
 
     /**
@@ -46418,7 +46620,7 @@ class Short {
      * @return bool
      */
     public function validate(): bool {
-        return Short::validateShort($this->short);
+        return Serialize::validateSerialize($this->serialize);
     }
 
     /**
@@ -46427,44 +46629,44 @@ class Short {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'short'} = $this->toShort();
+        $out->{'serialize'} = $this->toSerialize();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Short
+     * @return Serialize
      * @throws Exception
      */
-    public static function from(stdClass $obj): Short {
-        if (!property_exists($obj, 'short')) {
+    public static function from(stdClass $obj): Serialize {
+        if (!property_exists($obj, 'serialize')) {
             throw new Exception("Missing required property");
         }
-        return new Short(
-         Short::fromShort($obj->{'short'})
+        return new Serialize(
+         Serialize::fromSerialize($obj->{'serialize'})
         );
     }
 
     /**
-     * @return Short
+     * @return Serialize
      */
-    public static function sample(): Short {
-        return new Short(
-         Short::sampleShort()
+    public static function sample(): Serialize {
+        return new Serialize(
+         Serialize::sampleSerialize()
         );
     }
 }
 
-// This is an autogenerated file:Signed
+// This is an autogenerated file:SerializerProvider
 
-class Signed {
-    private int $signed; // json:signed Required
+class SerializerProvider {
+    private int $serializerProvider; // json:SerializerProvider Required
 
     /**
-     * @param int $signed
+     * @param int $serializerProvider
      */
-    public function __construct(int $signed) {
-        $this->signed = $signed;
+    public function __construct(int $serializerProvider) {
+        $this->serializerProvider = $serializerProvider;
     }
 
     /**
@@ -46472,7 +46674,7 @@ class Signed {
      * @throws Exception
      * @return int
      */
-    public static function fromSigned(int $value): int {
+    public static function fromSerializerProvider(int $value): int {
         return $value; /*int*/
     }
 
@@ -46480,11 +46682,11 @@ class Signed {
      * @throws Exception
      * @return int
      */
-    public function toSigned(): int {
-        if (Signed::validateSigned($this->signed))  {
-            return $this->signed; /*int*/
+    public function toSerializerProvider(): int {
+        if (SerializerProvider::validateSerializerProvider($this->serializerProvider))  {
+            return $this->serializerProvider; /*int*/
         }
-        throw new Exception('never get to this Signed::signed');
+        throw new Exception('never get to this SerializerProvider::serializerProvider');
     }
 
     /**
@@ -46492,7 +46694,7 @@ class Signed {
      * @return bool
      * @throws Exception
      */
-    public static function validateSigned(int $value): bool {
+    public static function validateSerializerProvider(int $value): bool {
         return true;
     }
 
@@ -46500,18 +46702,18 @@ class Signed {
      * @throws Exception
      * @return int
      */
-    public function getSigned(): int {
-        if (Signed::validateSigned($this->signed))  {
-            return $this->signed;
+    public function getSerializerProvider(): int {
+        if (SerializerProvider::validateSerializerProvider($this->serializerProvider))  {
+            return $this->serializerProvider;
         }
-        throw new Exception('never get to getSigned Signed::signed');
+        throw new Exception('never get to getSerializerProvider SerializerProvider::serializerProvider');
     }
 
     /**
      * @return int
      */
-    public static function sampleSigned(): int {
-        return 31; /*31:signed*/
+    public static function sampleSerializerProvider(): int {
+        return 31; /*31:serializerProvider*/
     }
 
     /**
@@ -46519,7 +46721,7 @@ class Signed {
      * @return bool
      */
     public function validate(): bool {
-        return Signed::validateSigned($this->signed);
+        return SerializerProvider::validateSerializerProvider($this->serializerProvider);
     }
 
     /**
@@ -46528,44 +46730,44 @@ class Signed {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'signed'} = $this->toSigned();
+        $out->{'SerializerProvider'} = $this->toSerializerProvider();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Signed
+     * @return SerializerProvider
      * @throws Exception
      */
-    public static function from(stdClass $obj): Signed {
-        if (!property_exists($obj, 'signed')) {
+    public static function from(stdClass $obj): SerializerProvider {
+        if (!property_exists($obj, 'SerializerProvider')) {
             throw new Exception("Missing required property");
         }
-        return new Signed(
-         Signed::fromSigned($obj->{'signed'})
+        return new SerializerProvider(
+         SerializerProvider::fromSerializerProvider($obj->{'SerializerProvider'})
         );
     }
 
     /**
-     * @return Signed
+     * @return SerializerProvider
      */
-    public static function sample(): Signed {
-        return new Signed(
-         Signed::sampleSigned()
+    public static function sample(): SerializerProvider {
+        return new SerializerProvider(
+         SerializerProvider::sampleSerializerProvider()
         );
     }
 }
 
-// This is an autogenerated file:SimpleModule
+// This is an autogenerated file:Set
 
-class SimpleModule {
-    private int $simpleModule; // json:SimpleModule Required
+class Set {
+    private int $set; // json:set Required
 
     /**
-     * @param int $simpleModule
+     * @param int $set
      */
-    public function __construct(int $simpleModule) {
-        $this->simpleModule = $simpleModule;
+    public function __construct(int $set) {
+        $this->set = $set;
     }
 
     /**
@@ -46573,7 +46775,7 @@ class SimpleModule {
      * @throws Exception
      * @return int
      */
-    public static function fromSimpleModule(int $value): int {
+    public static function fromSet(int $value): int {
         return $value; /*int*/
     }
 
@@ -46581,11 +46783,11 @@ class SimpleModule {
      * @throws Exception
      * @return int
      */
-    public function toSimpleModule(): int {
-        if (SimpleModule::validateSimpleModule($this->simpleModule))  {
-            return $this->simpleModule; /*int*/
+    public function toSet(): int {
+        if (Set::validateSet($this->set))  {
+            return $this->set; /*int*/
         }
-        throw new Exception('never get to this SimpleModule::simpleModule');
+        throw new Exception('never get to this Set::set');
     }
 
     /**
@@ -46593,7 +46795,7 @@ class SimpleModule {
      * @return bool
      * @throws Exception
      */
-    public static function validateSimpleModule(int $value): bool {
+    public static function validateSet(int $value): bool {
         return true;
     }
 
@@ -46601,18 +46803,18 @@ class SimpleModule {
      * @throws Exception
      * @return int
      */
-    public function getSimpleModule(): int {
-        if (SimpleModule::validateSimpleModule($this->simpleModule))  {
-            return $this->simpleModule;
+    public function getSet(): int {
+        if (Set::validateSet($this->set))  {
+            return $this->set;
         }
-        throw new Exception('never get to getSimpleModule SimpleModule::simpleModule');
+        throw new Exception('never get to getSet Set::set');
     }
 
     /**
      * @return int
      */
-    public static function sampleSimpleModule(): int {
-        return 31; /*31:simpleModule*/
+    public static function sampleSet(): int {
+        return 31; /*31:set*/
     }
 
     /**
@@ -46620,7 +46822,7 @@ class SimpleModule {
      * @return bool
      */
     public function validate(): bool {
-        return SimpleModule::validateSimpleModule($this->simpleModule);
+        return Set::validateSet($this->set);
     }
 
     /**
@@ -46629,44 +46831,44 @@ class SimpleModule {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'SimpleModule'} = $this->toSimpleModule();
+        $out->{'set'} = $this->toSet();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return SimpleModule
+     * @return Set
      * @throws Exception
      */
-    public static function from(stdClass $obj): SimpleModule {
-        if (!property_exists($obj, 'SimpleModule')) {
+    public static function from(stdClass $obj): Set {
+        if (!property_exists($obj, 'set')) {
             throw new Exception("Missing required property");
         }
-        return new SimpleModule(
-         SimpleModule::fromSimpleModule($obj->{'SimpleModule'})
+        return new Set(
+         Set::fromSet($obj->{'set'})
         );
     }
 
     /**
-     * @return SimpleModule
+     * @return Set
      */
-    public static function sample(): SimpleModule {
-        return new SimpleModule(
-         SimpleModule::sampleSimpleModule()
+    public static function sample(): Set {
+        return new Set(
+         Set::sampleSet()
         );
     }
 }
 
-// This is an autogenerated file:Sizeof
+// This is an autogenerated file:Short
 
-class Sizeof {
-    private int $sizeof; // json:sizeof Required
+class Short {
+    private int $short; // json:short Required
 
     /**
-     * @param int $sizeof
+     * @param int $short
      */
-    public function __construct(int $sizeof) {
-        $this->sizeof = $sizeof;
+    public function __construct(int $short) {
+        $this->short = $short;
     }
 
     /**
@@ -46674,7 +46876,7 @@ class Sizeof {
      * @throws Exception
      * @return int
      */
-    public static function fromSizeof(int $value): int {
+    public static function fromShort(int $value): int {
         return $value; /*int*/
     }
 
@@ -46682,11 +46884,11 @@ class Sizeof {
      * @throws Exception
      * @return int
      */
-    public function toSizeof(): int {
-        if (Sizeof::validateSizeof($this->sizeof))  {
-            return $this->sizeof; /*int*/
+    public function toShort(): int {
+        if (Short::validateShort($this->short))  {
+            return $this->short; /*int*/
         }
-        throw new Exception('never get to this Sizeof::sizeof');
+        throw new Exception('never get to this Short::short');
     }
 
     /**
@@ -46694,7 +46896,7 @@ class Sizeof {
      * @return bool
      * @throws Exception
      */
-    public static function validateSizeof(int $value): bool {
+    public static function validateShort(int $value): bool {
         return true;
     }
 
@@ -46702,18 +46904,18 @@ class Sizeof {
      * @throws Exception
      * @return int
      */
-    public function getSizeof(): int {
-        if (Sizeof::validateSizeof($this->sizeof))  {
-            return $this->sizeof;
+    public function getShort(): int {
+        if (Short::validateShort($this->short))  {
+            return $this->short;
         }
-        throw new Exception('never get to getSizeof Sizeof::sizeof');
+        throw new Exception('never get to getShort Short::short');
     }
 
     /**
      * @return int
      */
-    public static function sampleSizeof(): int {
-        return 31; /*31:sizeof*/
+    public static function sampleShort(): int {
+        return 31; /*31:short*/
     }
 
     /**
@@ -46721,7 +46923,7 @@ class Sizeof {
      * @return bool
      */
     public function validate(): bool {
-        return Sizeof::validateSizeof($this->sizeof);
+        return Short::validateShort($this->short);
     }
 
     /**
@@ -46730,44 +46932,44 @@ class Sizeof {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'sizeof'} = $this->toSizeof();
+        $out->{'short'} = $this->toShort();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Sizeof
+     * @return Short
      * @throws Exception
      */
-    public static function from(stdClass $obj): Sizeof {
-        if (!property_exists($obj, 'sizeof')) {
+    public static function from(stdClass $obj): Short {
+        if (!property_exists($obj, 'short')) {
             throw new Exception("Missing required property");
         }
-        return new Sizeof(
-         Sizeof::fromSizeof($obj->{'sizeof'})
+        return new Short(
+         Short::fromShort($obj->{'short'})
         );
     }
 
     /**
-     * @return Sizeof
+     * @return Short
      */
-    public static function sample(): Sizeof {
-        return new Sizeof(
-         Sizeof::sampleSizeof()
+    public static function sample(): Short {
+        return new Short(
+         Short::sampleShort()
         );
     }
 }
 
-// This is an autogenerated file:Stackalloc
+// This is an autogenerated file:Signed
 
-class Stackalloc {
-    private int $stackalloc; // json:stackalloc Required
+class Signed {
+    private int $signed; // json:signed Required
 
     /**
-     * @param int $stackalloc
+     * @param int $signed
      */
-    public function __construct(int $stackalloc) {
-        $this->stackalloc = $stackalloc;
+    public function __construct(int $signed) {
+        $this->signed = $signed;
     }
 
     /**
@@ -46775,7 +46977,7 @@ class Stackalloc {
      * @throws Exception
      * @return int
      */
-    public static function fromStackalloc(int $value): int {
+    public static function fromSigned(int $value): int {
         return $value; /*int*/
     }
 
@@ -46783,11 +46985,11 @@ class Stackalloc {
      * @throws Exception
      * @return int
      */
-    public function toStackalloc(): int {
-        if (Stackalloc::validateStackalloc($this->stackalloc))  {
-            return $this->stackalloc; /*int*/
+    public function toSigned(): int {
+        if (Signed::validateSigned($this->signed))  {
+            return $this->signed; /*int*/
         }
-        throw new Exception('never get to this Stackalloc::stackalloc');
+        throw new Exception('never get to this Signed::signed');
     }
 
     /**
@@ -46795,7 +46997,7 @@ class Stackalloc {
      * @return bool
      * @throws Exception
      */
-    public static function validateStackalloc(int $value): bool {
+    public static function validateSigned(int $value): bool {
         return true;
     }
 
@@ -46803,18 +47005,18 @@ class Stackalloc {
      * @throws Exception
      * @return int
      */
-    public function getStackalloc(): int {
-        if (Stackalloc::validateStackalloc($this->stackalloc))  {
-            return $this->stackalloc;
+    public function getSigned(): int {
+        if (Signed::validateSigned($this->signed))  {
+            return $this->signed;
         }
-        throw new Exception('never get to getStackalloc Stackalloc::stackalloc');
+        throw new Exception('never get to getSigned Signed::signed');
     }
 
     /**
      * @return int
      */
-    public static function sampleStackalloc(): int {
-        return 31; /*31:stackalloc*/
+    public static function sampleSigned(): int {
+        return 31; /*31:signed*/
     }
 
     /**
@@ -46822,7 +47024,7 @@ class Stackalloc {
      * @return bool
      */
     public function validate(): bool {
-        return Stackalloc::validateStackalloc($this->stackalloc);
+        return Signed::validateSigned($this->signed);
     }
 
     /**
@@ -46831,44 +47033,44 @@ class Stackalloc {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'stackalloc'} = $this->toStackalloc();
+        $out->{'signed'} = $this->toSigned();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Stackalloc
+     * @return Signed
      * @throws Exception
      */
-    public static function from(stdClass $obj): Stackalloc {
-        if (!property_exists($obj, 'stackalloc')) {
+    public static function from(stdClass $obj): Signed {
+        if (!property_exists($obj, 'signed')) {
             throw new Exception("Missing required property");
         }
-        return new Stackalloc(
-         Stackalloc::fromStackalloc($obj->{'stackalloc'})
+        return new Signed(
+         Signed::fromSigned($obj->{'signed'})
         );
     }
 
     /**
-     * @return Stackalloc
+     * @return Signed
      */
-    public static function sample(): Stackalloc {
-        return new Stackalloc(
-         Stackalloc::sampleStackalloc()
+    public static function sample(): Signed {
+        return new Signed(
+         Signed::sampleSigned()
         );
     }
 }
 
-// This is an autogenerated file:Standards
+// This is an autogenerated file:SimpleModule
 
-class Standards {
-    private int $standards; // json:Standards Required
+class SimpleModule {
+    private int $simpleModule; // json:SimpleModule Required
 
     /**
-     * @param int $standards
+     * @param int $simpleModule
      */
-    public function __construct(int $standards) {
-        $this->standards = $standards;
+    public function __construct(int $simpleModule) {
+        $this->simpleModule = $simpleModule;
     }
 
     /**
@@ -46876,7 +47078,7 @@ class Standards {
      * @throws Exception
      * @return int
      */
-    public static function fromStandards(int $value): int {
+    public static function fromSimpleModule(int $value): int {
         return $value; /*int*/
     }
 
@@ -46884,11 +47086,11 @@ class Standards {
      * @throws Exception
      * @return int
      */
-    public function toStandards(): int {
-        if (Standards::validateStandards($this->standards))  {
-            return $this->standards; /*int*/
+    public function toSimpleModule(): int {
+        if (SimpleModule::validateSimpleModule($this->simpleModule))  {
+            return $this->simpleModule; /*int*/
         }
-        throw new Exception('never get to this Standards::standards');
+        throw new Exception('never get to this SimpleModule::simpleModule');
     }
 
     /**
@@ -46896,7 +47098,7 @@ class Standards {
      * @return bool
      * @throws Exception
      */
-    public static function validateStandards(int $value): bool {
+    public static function validateSimpleModule(int $value): bool {
         return true;
     }
 
@@ -46904,18 +47106,18 @@ class Standards {
      * @throws Exception
      * @return int
      */
-    public function getStandards(): int {
-        if (Standards::validateStandards($this->standards))  {
-            return $this->standards;
+    public function getSimpleModule(): int {
+        if (SimpleModule::validateSimpleModule($this->simpleModule))  {
+            return $this->simpleModule;
         }
-        throw new Exception('never get to getStandards Standards::standards');
+        throw new Exception('never get to getSimpleModule SimpleModule::simpleModule');
     }
 
     /**
      * @return int
      */
-    public static function sampleStandards(): int {
-        return 31; /*31:standards*/
+    public static function sampleSimpleModule(): int {
+        return 31; /*31:simpleModule*/
     }
 
     /**
@@ -46923,7 +47125,7 @@ class Standards {
      * @return bool
      */
     public function validate(): bool {
-        return Standards::validateStandards($this->standards);
+        return SimpleModule::validateSimpleModule($this->simpleModule);
     }
 
     /**
@@ -46932,44 +47134,44 @@ class Standards {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'Standards'} = $this->toStandards();
+        $out->{'SimpleModule'} = $this->toSimpleModule();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Standards
+     * @return SimpleModule
      * @throws Exception
      */
-    public static function from(stdClass $obj): Standards {
-        if (!property_exists($obj, 'Standards')) {
+    public static function from(stdClass $obj): SimpleModule {
+        if (!property_exists($obj, 'SimpleModule')) {
             throw new Exception("Missing required property");
         }
-        return new Standards(
-         Standards::fromStandards($obj->{'Standards'})
+        return new SimpleModule(
+         SimpleModule::fromSimpleModule($obj->{'SimpleModule'})
         );
     }
 
     /**
-     * @return Standards
+     * @return SimpleModule
      */
-    public static function sample(): Standards {
-        return new Standards(
-         Standards::sampleStandards()
+    public static function sample(): SimpleModule {
+        return new SimpleModule(
+         SimpleModule::sampleSimpleModule()
         );
     }
 }
 
-// This is an autogenerated file:StaticClass
+// This is an autogenerated file:Sizeof
 
-class StaticClass {
-    private int $static; // json:static Required
+class Sizeof {
+    private int $sizeof; // json:sizeof Required
 
     /**
-     * @param int $static
+     * @param int $sizeof
      */
-    public function __construct(int $static) {
-        $this->static = $static;
+    public function __construct(int $sizeof) {
+        $this->sizeof = $sizeof;
     }
 
     /**
@@ -46977,7 +47179,7 @@ class StaticClass {
      * @throws Exception
      * @return int
      */
-    public static function fromStatic(int $value): int {
+    public static function fromSizeof(int $value): int {
         return $value; /*int*/
     }
 
@@ -46985,11 +47187,11 @@ class StaticClass {
      * @throws Exception
      * @return int
      */
-    public function toStatic(): int {
-        if (StaticClass::validateStatic($this->static))  {
-            return $this->static; /*int*/
+    public function toSizeof(): int {
+        if (Sizeof::validateSizeof($this->sizeof))  {
+            return $this->sizeof; /*int*/
         }
-        throw new Exception('never get to this StaticClass::static');
+        throw new Exception('never get to this Sizeof::sizeof');
     }
 
     /**
@@ -46997,7 +47199,7 @@ class StaticClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateStatic(int $value): bool {
+    public static function validateSizeof(int $value): bool {
         return true;
     }
 
@@ -47005,18 +47207,18 @@ class StaticClass {
      * @throws Exception
      * @return int
      */
-    public function getStatic(): int {
-        if (StaticClass::validateStatic($this->static))  {
-            return $this->static;
+    public function getSizeof(): int {
+        if (Sizeof::validateSizeof($this->sizeof))  {
+            return $this->sizeof;
         }
-        throw new Exception('never get to getStatic StaticClass::static');
+        throw new Exception('never get to getSizeof Sizeof::sizeof');
     }
 
     /**
      * @return int
      */
-    public static function sampleStatic(): int {
-        return 31; /*31:static*/
+    public static function sampleSizeof(): int {
+        return 31; /*31:sizeof*/
     }
 
     /**
@@ -47024,7 +47226,7 @@ class StaticClass {
      * @return bool
      */
     public function validate(): bool {
-        return StaticClass::validateStatic($this->static);
+        return Sizeof::validateSizeof($this->sizeof);
     }
 
     /**
@@ -47033,44 +47235,44 @@ class StaticClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'static'} = $this->toStatic();
+        $out->{'sizeof'} = $this->toSizeof();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return StaticClass
+     * @return Sizeof
      * @throws Exception
      */
-    public static function from(stdClass $obj): StaticClass {
-        if (!property_exists($obj, 'static')) {
+    public static function from(stdClass $obj): Sizeof {
+        if (!property_exists($obj, 'sizeof')) {
             throw new Exception("Missing required property");
         }
-        return new StaticClass(
-         StaticClass::fromStatic($obj->{'static'})
+        return new Sizeof(
+         Sizeof::fromSizeof($obj->{'sizeof'})
         );
     }
 
     /**
-     * @return StaticClass
+     * @return Sizeof
      */
-    public static function sample(): StaticClass {
-        return new StaticClass(
-         StaticClass::sampleStatic()
+    public static function sample(): Sizeof {
+        return new Sizeof(
+         Sizeof::sampleSizeof()
         );
     }
 }
 
-// This is an autogenerated file:StaticAssert
+// This is an autogenerated file:Stackalloc
 
-class StaticAssert {
-    private int $staticAssert; // json:static_assert Required
+class Stackalloc {
+    private int $stackalloc; // json:stackalloc Required
 
     /**
-     * @param int $staticAssert
+     * @param int $stackalloc
      */
-    public function __construct(int $staticAssert) {
-        $this->staticAssert = $staticAssert;
+    public function __construct(int $stackalloc) {
+        $this->stackalloc = $stackalloc;
     }
 
     /**
@@ -47078,7 +47280,7 @@ class StaticAssert {
      * @throws Exception
      * @return int
      */
-    public static function fromStaticAssert(int $value): int {
+    public static function fromStackalloc(int $value): int {
         return $value; /*int*/
     }
 
@@ -47086,11 +47288,11 @@ class StaticAssert {
      * @throws Exception
      * @return int
      */
-    public function toStaticAssert(): int {
-        if (StaticAssert::validateStaticAssert($this->staticAssert))  {
-            return $this->staticAssert; /*int*/
+    public function toStackalloc(): int {
+        if (Stackalloc::validateStackalloc($this->stackalloc))  {
+            return $this->stackalloc; /*int*/
         }
-        throw new Exception('never get to this StaticAssert::staticAssert');
+        throw new Exception('never get to this Stackalloc::stackalloc');
     }
 
     /**
@@ -47098,7 +47300,7 @@ class StaticAssert {
      * @return bool
      * @throws Exception
      */
-    public static function validateStaticAssert(int $value): bool {
+    public static function validateStackalloc(int $value): bool {
         return true;
     }
 
@@ -47106,18 +47308,18 @@ class StaticAssert {
      * @throws Exception
      * @return int
      */
-    public function getStaticAssert(): int {
-        if (StaticAssert::validateStaticAssert($this->staticAssert))  {
-            return $this->staticAssert;
+    public function getStackalloc(): int {
+        if (Stackalloc::validateStackalloc($this->stackalloc))  {
+            return $this->stackalloc;
         }
-        throw new Exception('never get to getStaticAssert StaticAssert::staticAssert');
+        throw new Exception('never get to getStackalloc Stackalloc::stackalloc');
     }
 
     /**
      * @return int
      */
-    public static function sampleStaticAssert(): int {
-        return 31; /*31:staticAssert*/
+    public static function sampleStackalloc(): int {
+        return 31; /*31:stackalloc*/
     }
 
     /**
@@ -47125,7 +47327,7 @@ class StaticAssert {
      * @return bool
      */
     public function validate(): bool {
-        return StaticAssert::validateStaticAssert($this->staticAssert);
+        return Stackalloc::validateStackalloc($this->stackalloc);
     }
 
     /**
@@ -47134,44 +47336,44 @@ class StaticAssert {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'static_assert'} = $this->toStaticAssert();
+        $out->{'stackalloc'} = $this->toStackalloc();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return StaticAssert
+     * @return Stackalloc
      * @throws Exception
      */
-    public static function from(stdClass $obj): StaticAssert {
-        if (!property_exists($obj, 'static_assert')) {
+    public static function from(stdClass $obj): Stackalloc {
+        if (!property_exists($obj, 'stackalloc')) {
             throw new Exception("Missing required property");
         }
-        return new StaticAssert(
-         StaticAssert::fromStaticAssert($obj->{'static_assert'})
+        return new Stackalloc(
+         Stackalloc::fromStackalloc($obj->{'stackalloc'})
         );
     }
 
     /**
-     * @return StaticAssert
+     * @return Stackalloc
      */
-    public static function sample(): StaticAssert {
-        return new StaticAssert(
-         StaticAssert::sampleStaticAssert()
+    public static function sample(): Stackalloc {
+        return new Stackalloc(
+         Stackalloc::sampleStackalloc()
         );
     }
 }
 
-// This is an autogenerated file:StaticCast
+// This is an autogenerated file:Standards
 
-class StaticCast {
-    private int $staticCast; // json:static_cast Required
+class Standards {
+    private int $standards; // json:Standards Required
 
     /**
-     * @param int $staticCast
+     * @param int $standards
      */
-    public function __construct(int $staticCast) {
-        $this->staticCast = $staticCast;
+    public function __construct(int $standards) {
+        $this->standards = $standards;
     }
 
     /**
@@ -47179,7 +47381,7 @@ class StaticCast {
      * @throws Exception
      * @return int
      */
-    public static function fromStaticCast(int $value): int {
+    public static function fromStandards(int $value): int {
         return $value; /*int*/
     }
 
@@ -47187,11 +47389,11 @@ class StaticCast {
      * @throws Exception
      * @return int
      */
-    public function toStaticCast(): int {
-        if (StaticCast::validateStaticCast($this->staticCast))  {
-            return $this->staticCast; /*int*/
+    public function toStandards(): int {
+        if (Standards::validateStandards($this->standards))  {
+            return $this->standards; /*int*/
         }
-        throw new Exception('never get to this StaticCast::staticCast');
+        throw new Exception('never get to this Standards::standards');
     }
 
     /**
@@ -47199,7 +47401,7 @@ class StaticCast {
      * @return bool
      * @throws Exception
      */
-    public static function validateStaticCast(int $value): bool {
+    public static function validateStandards(int $value): bool {
         return true;
     }
 
@@ -47207,18 +47409,18 @@ class StaticCast {
      * @throws Exception
      * @return int
      */
-    public function getStaticCast(): int {
-        if (StaticCast::validateStaticCast($this->staticCast))  {
-            return $this->staticCast;
+    public function getStandards(): int {
+        if (Standards::validateStandards($this->standards))  {
+            return $this->standards;
         }
-        throw new Exception('never get to getStaticCast StaticCast::staticCast');
+        throw new Exception('never get to getStandards Standards::standards');
     }
 
     /**
      * @return int
      */
-    public static function sampleStaticCast(): int {
-        return 31; /*31:staticCast*/
+    public static function sampleStandards(): int {
+        return 31; /*31:standards*/
     }
 
     /**
@@ -47226,7 +47428,7 @@ class StaticCast {
      * @return bool
      */
     public function validate(): bool {
-        return StaticCast::validateStaticCast($this->staticCast);
+        return Standards::validateStandards($this->standards);
     }
 
     /**
@@ -47235,44 +47437,44 @@ class StaticCast {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'static_cast'} = $this->toStaticCast();
+        $out->{'Standards'} = $this->toStandards();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return StaticCast
+     * @return Standards
      * @throws Exception
      */
-    public static function from(stdClass $obj): StaticCast {
-        if (!property_exists($obj, 'static_cast')) {
+    public static function from(stdClass $obj): Standards {
+        if (!property_exists($obj, 'Standards')) {
             throw new Exception("Missing required property");
         }
-        return new StaticCast(
-         StaticCast::fromStaticCast($obj->{'static_cast'})
+        return new Standards(
+         Standards::fromStandards($obj->{'Standards'})
         );
     }
 
     /**
-     * @return StaticCast
+     * @return Standards
      */
-    public static function sample(): StaticCast {
-        return new StaticCast(
-         StaticCast::sampleStaticCast()
+    public static function sample(): Standards {
+        return new Standards(
+         Standards::sampleStandards()
         );
     }
 }
 
-// This is an autogenerated file:StdDeserializer
+// This is an autogenerated file:StaticClass
 
-class StdDeserializer {
-    private int $stdDeserializer; // json:StdDeserializer Required
+class StaticClass {
+    private int $static; // json:static Required
 
     /**
-     * @param int $stdDeserializer
+     * @param int $static
      */
-    public function __construct(int $stdDeserializer) {
-        $this->stdDeserializer = $stdDeserializer;
+    public function __construct(int $static) {
+        $this->static = $static;
     }
 
     /**
@@ -47280,7 +47482,7 @@ class StdDeserializer {
      * @throws Exception
      * @return int
      */
-    public static function fromStdDeserializer(int $value): int {
+    public static function fromStatic(int $value): int {
         return $value; /*int*/
     }
 
@@ -47288,11 +47490,11 @@ class StdDeserializer {
      * @throws Exception
      * @return int
      */
-    public function toStdDeserializer(): int {
-        if (StdDeserializer::validateStdDeserializer($this->stdDeserializer))  {
-            return $this->stdDeserializer; /*int*/
+    public function toStatic(): int {
+        if (StaticClass::validateStatic($this->static))  {
+            return $this->static; /*int*/
         }
-        throw new Exception('never get to this StdDeserializer::stdDeserializer');
+        throw new Exception('never get to this StaticClass::static');
     }
 
     /**
@@ -47300,7 +47502,7 @@ class StdDeserializer {
      * @return bool
      * @throws Exception
      */
-    public static function validateStdDeserializer(int $value): bool {
+    public static function validateStatic(int $value): bool {
         return true;
     }
 
@@ -47308,18 +47510,18 @@ class StdDeserializer {
      * @throws Exception
      * @return int
      */
-    public function getStdDeserializer(): int {
-        if (StdDeserializer::validateStdDeserializer($this->stdDeserializer))  {
-            return $this->stdDeserializer;
+    public function getStatic(): int {
+        if (StaticClass::validateStatic($this->static))  {
+            return $this->static;
         }
-        throw new Exception('never get to getStdDeserializer StdDeserializer::stdDeserializer');
+        throw new Exception('never get to getStatic StaticClass::static');
     }
 
     /**
      * @return int
      */
-    public static function sampleStdDeserializer(): int {
-        return 31; /*31:stdDeserializer*/
+    public static function sampleStatic(): int {
+        return 31; /*31:static*/
     }
 
     /**
@@ -47327,7 +47529,7 @@ class StdDeserializer {
      * @return bool
      */
     public function validate(): bool {
-        return StdDeserializer::validateStdDeserializer($this->stdDeserializer);
+        return StaticClass::validateStatic($this->static);
     }
 
     /**
@@ -47336,44 +47538,44 @@ class StdDeserializer {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'StdDeserializer'} = $this->toStdDeserializer();
+        $out->{'static'} = $this->toStatic();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return StdDeserializer
+     * @return StaticClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): StdDeserializer {
-        if (!property_exists($obj, 'StdDeserializer')) {
+    public static function from(stdClass $obj): StaticClass {
+        if (!property_exists($obj, 'static')) {
             throw new Exception("Missing required property");
         }
-        return new StdDeserializer(
-         StdDeserializer::fromStdDeserializer($obj->{'StdDeserializer'})
+        return new StaticClass(
+         StaticClass::fromStatic($obj->{'static'})
         );
     }
 
     /**
-     * @return StdDeserializer
+     * @return StaticClass
      */
-    public static function sample(): StdDeserializer {
-        return new StdDeserializer(
-         StdDeserializer::sampleStdDeserializer()
+    public static function sample(): StaticClass {
+        return new StaticClass(
+         StaticClass::sampleStatic()
         );
     }
 }
 
-// This is an autogenerated file:StdSerializer
+// This is an autogenerated file:StaticAssert
 
-class StdSerializer {
-    private int $stdSerializer; // json:StdSerializer Required
+class StaticAssert {
+    private int $staticAssert; // json:static_assert Required
 
     /**
-     * @param int $stdSerializer
+     * @param int $staticAssert
      */
-    public function __construct(int $stdSerializer) {
-        $this->stdSerializer = $stdSerializer;
+    public function __construct(int $staticAssert) {
+        $this->staticAssert = $staticAssert;
     }
 
     /**
@@ -47381,7 +47583,7 @@ class StdSerializer {
      * @throws Exception
      * @return int
      */
-    public static function fromStdSerializer(int $value): int {
+    public static function fromStaticAssert(int $value): int {
         return $value; /*int*/
     }
 
@@ -47389,11 +47591,11 @@ class StdSerializer {
      * @throws Exception
      * @return int
      */
-    public function toStdSerializer(): int {
-        if (StdSerializer::validateStdSerializer($this->stdSerializer))  {
-            return $this->stdSerializer; /*int*/
+    public function toStaticAssert(): int {
+        if (StaticAssert::validateStaticAssert($this->staticAssert))  {
+            return $this->staticAssert; /*int*/
         }
-        throw new Exception('never get to this StdSerializer::stdSerializer');
+        throw new Exception('never get to this StaticAssert::staticAssert');
     }
 
     /**
@@ -47401,7 +47603,7 @@ class StdSerializer {
      * @return bool
      * @throws Exception
      */
-    public static function validateStdSerializer(int $value): bool {
+    public static function validateStaticAssert(int $value): bool {
         return true;
     }
 
@@ -47409,18 +47611,18 @@ class StdSerializer {
      * @throws Exception
      * @return int
      */
-    public function getStdSerializer(): int {
-        if (StdSerializer::validateStdSerializer($this->stdSerializer))  {
-            return $this->stdSerializer;
+    public function getStaticAssert(): int {
+        if (StaticAssert::validateStaticAssert($this->staticAssert))  {
+            return $this->staticAssert;
         }
-        throw new Exception('never get to getStdSerializer StdSerializer::stdSerializer');
+        throw new Exception('never get to getStaticAssert StaticAssert::staticAssert');
     }
 
     /**
      * @return int
      */
-    public static function sampleStdSerializer(): int {
-        return 31; /*31:stdSerializer*/
+    public static function sampleStaticAssert(): int {
+        return 31; /*31:staticAssert*/
     }
 
     /**
@@ -47428,7 +47630,7 @@ class StdSerializer {
      * @return bool
      */
     public function validate(): bool {
-        return StdSerializer::validateStdSerializer($this->stdSerializer);
+        return StaticAssert::validateStaticAssert($this->staticAssert);
     }
 
     /**
@@ -47437,44 +47639,44 @@ class StdSerializer {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'StdSerializer'} = $this->toStdSerializer();
+        $out->{'static_assert'} = $this->toStaticAssert();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return StdSerializer
+     * @return StaticAssert
      * @throws Exception
      */
-    public static function from(stdClass $obj): StdSerializer {
-        if (!property_exists($obj, 'StdSerializer')) {
+    public static function from(stdClass $obj): StaticAssert {
+        if (!property_exists($obj, 'static_assert')) {
             throw new Exception("Missing required property");
         }
-        return new StdSerializer(
-         StdSerializer::fromStdSerializer($obj->{'StdSerializer'})
+        return new StaticAssert(
+         StaticAssert::fromStaticAssert($obj->{'static_assert'})
         );
     }
 
     /**
-     * @return StdSerializer
+     * @return StaticAssert
      */
-    public static function sample(): StdSerializer {
-        return new StdSerializer(
-         StdSerializer::sampleStdSerializer()
+    public static function sample(): StaticAssert {
+        return new StaticAssert(
+         StaticAssert::sampleStaticAssert()
         );
     }
 }
 
-// This is an autogenerated file:Strictfp
+// This is an autogenerated file:StaticCast
 
-class Strictfp {
-    private int $strictfp; // json:strictfp Required
+class StaticCast {
+    private int $staticCast; // json:static_cast Required
 
     /**
-     * @param int $strictfp
+     * @param int $staticCast
      */
-    public function __construct(int $strictfp) {
-        $this->strictfp = $strictfp;
+    public function __construct(int $staticCast) {
+        $this->staticCast = $staticCast;
     }
 
     /**
@@ -47482,7 +47684,7 @@ class Strictfp {
      * @throws Exception
      * @return int
      */
-    public static function fromStrictfp(int $value): int {
+    public static function fromStaticCast(int $value): int {
         return $value; /*int*/
     }
 
@@ -47490,11 +47692,11 @@ class Strictfp {
      * @throws Exception
      * @return int
      */
-    public function toStrictfp(): int {
-        if (Strictfp::validateStrictfp($this->strictfp))  {
-            return $this->strictfp; /*int*/
+    public function toStaticCast(): int {
+        if (StaticCast::validateStaticCast($this->staticCast))  {
+            return $this->staticCast; /*int*/
         }
-        throw new Exception('never get to this Strictfp::strictfp');
+        throw new Exception('never get to this StaticCast::staticCast');
     }
 
     /**
@@ -47502,7 +47704,7 @@ class Strictfp {
      * @return bool
      * @throws Exception
      */
-    public static function validateStrictfp(int $value): bool {
+    public static function validateStaticCast(int $value): bool {
         return true;
     }
 
@@ -47510,18 +47712,18 @@ class Strictfp {
      * @throws Exception
      * @return int
      */
-    public function getStrictfp(): int {
-        if (Strictfp::validateStrictfp($this->strictfp))  {
-            return $this->strictfp;
+    public function getStaticCast(): int {
+        if (StaticCast::validateStaticCast($this->staticCast))  {
+            return $this->staticCast;
         }
-        throw new Exception('never get to getStrictfp Strictfp::strictfp');
+        throw new Exception('never get to getStaticCast StaticCast::staticCast');
     }
 
     /**
      * @return int
      */
-    public static function sampleStrictfp(): int {
-        return 31; /*31:strictfp*/
+    public static function sampleStaticCast(): int {
+        return 31; /*31:staticCast*/
     }
 
     /**
@@ -47529,7 +47731,7 @@ class Strictfp {
      * @return bool
      */
     public function validate(): bool {
-        return Strictfp::validateStrictfp($this->strictfp);
+        return StaticCast::validateStaticCast($this->staticCast);
     }
 
     /**
@@ -47538,44 +47740,44 @@ class Strictfp {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'strictfp'} = $this->toStrictfp();
+        $out->{'static_cast'} = $this->toStaticCast();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Strictfp
+     * @return StaticCast
      * @throws Exception
      */
-    public static function from(stdClass $obj): Strictfp {
-        if (!property_exists($obj, 'strictfp')) {
+    public static function from(stdClass $obj): StaticCast {
+        if (!property_exists($obj, 'static_cast')) {
             throw new Exception("Missing required property");
         }
-        return new Strictfp(
-         Strictfp::fromStrictfp($obj->{'strictfp'})
+        return new StaticCast(
+         StaticCast::fromStaticCast($obj->{'static_cast'})
         );
     }
 
     /**
-     * @return Strictfp
+     * @return StaticCast
      */
-    public static function sample(): Strictfp {
-        return new Strictfp(
-         Strictfp::sampleStrictfp()
+    public static function sample(): StaticCast {
+        return new StaticCast(
+         StaticCast::sampleStaticCast()
         );
     }
 }
 
-// This is an autogenerated file:StringClass
+// This is an autogenerated file:StdDeserializer
 
-class StringClass {
-    private int $string; // json:string Required
+class StdDeserializer {
+    private int $stdDeserializer; // json:StdDeserializer Required
 
     /**
-     * @param int $string
+     * @param int $stdDeserializer
      */
-    public function __construct(int $string) {
-        $this->string = $string;
+    public function __construct(int $stdDeserializer) {
+        $this->stdDeserializer = $stdDeserializer;
     }
 
     /**
@@ -47583,7 +47785,7 @@ class StringClass {
      * @throws Exception
      * @return int
      */
-    public static function fromString(int $value): int {
+    public static function fromStdDeserializer(int $value): int {
         return $value; /*int*/
     }
 
@@ -47591,11 +47793,11 @@ class StringClass {
      * @throws Exception
      * @return int
      */
-    public function toString(): int {
-        if (StringClass::validateString($this->string))  {
-            return $this->string; /*int*/
+    public function toStdDeserializer(): int {
+        if (StdDeserializer::validateStdDeserializer($this->stdDeserializer))  {
+            return $this->stdDeserializer; /*int*/
         }
-        throw new Exception('never get to this StringClass::string');
+        throw new Exception('never get to this StdDeserializer::stdDeserializer');
     }
 
     /**
@@ -47603,7 +47805,7 @@ class StringClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateString(int $value): bool {
+    public static function validateStdDeserializer(int $value): bool {
         return true;
     }
 
@@ -47611,18 +47813,18 @@ class StringClass {
      * @throws Exception
      * @return int
      */
-    public function getString(): int {
-        if (StringClass::validateString($this->string))  {
-            return $this->string;
+    public function getStdDeserializer(): int {
+        if (StdDeserializer::validateStdDeserializer($this->stdDeserializer))  {
+            return $this->stdDeserializer;
         }
-        throw new Exception('never get to getString StringClass::string');
+        throw new Exception('never get to getStdDeserializer StdDeserializer::stdDeserializer');
     }
 
     /**
      * @return int
      */
-    public static function sampleString(): int {
-        return 31; /*31:string*/
+    public static function sampleStdDeserializer(): int {
+        return 31; /*31:stdDeserializer*/
     }
 
     /**
@@ -47630,7 +47832,7 @@ class StringClass {
      * @return bool
      */
     public function validate(): bool {
-        return StringClass::validateString($this->string);
+        return StdDeserializer::validateStdDeserializer($this->stdDeserializer);
     }
 
     /**
@@ -47639,44 +47841,44 @@ class StringClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'string'} = $this->toString();
+        $out->{'StdDeserializer'} = $this->toStdDeserializer();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return StringClass
+     * @return StdDeserializer
      * @throws Exception
      */
-    public static function from(stdClass $obj): StringClass {
-        if (!property_exists($obj, 'string')) {
+    public static function from(stdClass $obj): StdDeserializer {
+        if (!property_exists($obj, 'StdDeserializer')) {
             throw new Exception("Missing required property");
         }
-        return new StringClass(
-         StringClass::fromString($obj->{'string'})
+        return new StdDeserializer(
+         StdDeserializer::fromStdDeserializer($obj->{'StdDeserializer'})
         );
     }
 
     /**
-     * @return StringClass
+     * @return StdDeserializer
      */
-    public static function sample(): StringClass {
-        return new StringClass(
-         StringClass::sampleString()
+    public static function sample(): StdDeserializer {
+        return new StdDeserializer(
+         StdDeserializer::sampleStdDeserializer()
         );
     }
 }
 
-// This is an autogenerated file:Struct
+// This is an autogenerated file:StdSerializer
 
-class Struct {
-    private int $struct; // json:struct Required
+class StdSerializer {
+    private int $stdSerializer; // json:StdSerializer Required
 
     /**
-     * @param int $struct
+     * @param int $stdSerializer
      */
-    public function __construct(int $struct) {
-        $this->struct = $struct;
+    public function __construct(int $stdSerializer) {
+        $this->stdSerializer = $stdSerializer;
     }
 
     /**
@@ -47684,7 +47886,7 @@ class Struct {
      * @throws Exception
      * @return int
      */
-    public static function fromStruct(int $value): int {
+    public static function fromStdSerializer(int $value): int {
         return $value; /*int*/
     }
 
@@ -47692,11 +47894,11 @@ class Struct {
      * @throws Exception
      * @return int
      */
-    public function toStruct(): int {
-        if (Struct::validateStruct($this->struct))  {
-            return $this->struct; /*int*/
+    public function toStdSerializer(): int {
+        if (StdSerializer::validateStdSerializer($this->stdSerializer))  {
+            return $this->stdSerializer; /*int*/
         }
-        throw new Exception('never get to this Struct::struct');
+        throw new Exception('never get to this StdSerializer::stdSerializer');
     }
 
     /**
@@ -47704,7 +47906,7 @@ class Struct {
      * @return bool
      * @throws Exception
      */
-    public static function validateStruct(int $value): bool {
+    public static function validateStdSerializer(int $value): bool {
         return true;
     }
 
@@ -47712,18 +47914,18 @@ class Struct {
      * @throws Exception
      * @return int
      */
-    public function getStruct(): int {
-        if (Struct::validateStruct($this->struct))  {
-            return $this->struct;
+    public function getStdSerializer(): int {
+        if (StdSerializer::validateStdSerializer($this->stdSerializer))  {
+            return $this->stdSerializer;
         }
-        throw new Exception('never get to getStruct Struct::struct');
+        throw new Exception('never get to getStdSerializer StdSerializer::stdSerializer');
     }
 
     /**
      * @return int
      */
-    public static function sampleStruct(): int {
-        return 31; /*31:struct*/
+    public static function sampleStdSerializer(): int {
+        return 31; /*31:stdSerializer*/
     }
 
     /**
@@ -47731,7 +47933,7 @@ class Struct {
      * @return bool
      */
     public function validate(): bool {
-        return Struct::validateStruct($this->struct);
+        return StdSerializer::validateStdSerializer($this->stdSerializer);
     }
 
     /**
@@ -47740,44 +47942,44 @@ class Struct {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'struct'} = $this->toStruct();
+        $out->{'StdSerializer'} = $this->toStdSerializer();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Struct
+     * @return StdSerializer
      * @throws Exception
      */
-    public static function from(stdClass $obj): Struct {
-        if (!property_exists($obj, 'struct')) {
+    public static function from(stdClass $obj): StdSerializer {
+        if (!property_exists($obj, 'StdSerializer')) {
             throw new Exception("Missing required property");
         }
-        return new Struct(
-         Struct::fromStruct($obj->{'struct'})
+        return new StdSerializer(
+         StdSerializer::fromStdSerializer($obj->{'StdSerializer'})
         );
     }
 
     /**
-     * @return Struct
+     * @return StdSerializer
      */
-    public static function sample(): Struct {
-        return new Struct(
-         Struct::sampleStruct()
+    public static function sample(): StdSerializer {
+        return new StdSerializer(
+         StdSerializer::sampleStdSerializer()
         );
     }
 }
 
-// This is an autogenerated file:Subscript
+// This is an autogenerated file:Strictfp
 
-class Subscript {
-    private int $subscript; // json:subscript Required
+class Strictfp {
+    private int $strictfp; // json:strictfp Required
 
     /**
-     * @param int $subscript
+     * @param int $strictfp
      */
-    public function __construct(int $subscript) {
-        $this->subscript = $subscript;
+    public function __construct(int $strictfp) {
+        $this->strictfp = $strictfp;
     }
 
     /**
@@ -47785,7 +47987,7 @@ class Subscript {
      * @throws Exception
      * @return int
      */
-    public static function fromSubscript(int $value): int {
+    public static function fromStrictfp(int $value): int {
         return $value; /*int*/
     }
 
@@ -47793,11 +47995,11 @@ class Subscript {
      * @throws Exception
      * @return int
      */
-    public function toSubscript(): int {
-        if (Subscript::validateSubscript($this->subscript))  {
-            return $this->subscript; /*int*/
+    public function toStrictfp(): int {
+        if (Strictfp::validateStrictfp($this->strictfp))  {
+            return $this->strictfp; /*int*/
         }
-        throw new Exception('never get to this Subscript::subscript');
+        throw new Exception('never get to this Strictfp::strictfp');
     }
 
     /**
@@ -47805,7 +48007,7 @@ class Subscript {
      * @return bool
      * @throws Exception
      */
-    public static function validateSubscript(int $value): bool {
+    public static function validateStrictfp(int $value): bool {
         return true;
     }
 
@@ -47813,18 +48015,18 @@ class Subscript {
      * @throws Exception
      * @return int
      */
-    public function getSubscript(): int {
-        if (Subscript::validateSubscript($this->subscript))  {
-            return $this->subscript;
+    public function getStrictfp(): int {
+        if (Strictfp::validateStrictfp($this->strictfp))  {
+            return $this->strictfp;
         }
-        throw new Exception('never get to getSubscript Subscript::subscript');
+        throw new Exception('never get to getStrictfp Strictfp::strictfp');
     }
 
     /**
      * @return int
      */
-    public static function sampleSubscript(): int {
-        return 31; /*31:subscript*/
+    public static function sampleStrictfp(): int {
+        return 31; /*31:strictfp*/
     }
 
     /**
@@ -47832,7 +48034,7 @@ class Subscript {
      * @return bool
      */
     public function validate(): bool {
-        return Subscript::validateSubscript($this->subscript);
+        return Strictfp::validateStrictfp($this->strictfp);
     }
 
     /**
@@ -47841,44 +48043,44 @@ class Subscript {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'subscript'} = $this->toSubscript();
+        $out->{'strictfp'} = $this->toStrictfp();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Subscript
+     * @return Strictfp
      * @throws Exception
      */
-    public static function from(stdClass $obj): Subscript {
-        if (!property_exists($obj, 'subscript')) {
+    public static function from(stdClass $obj): Strictfp {
+        if (!property_exists($obj, 'strictfp')) {
             throw new Exception("Missing required property");
         }
-        return new Subscript(
-         Subscript::fromSubscript($obj->{'subscript'})
+        return new Strictfp(
+         Strictfp::fromStrictfp($obj->{'strictfp'})
         );
     }
 
     /**
-     * @return Subscript
+     * @return Strictfp
      */
-    public static function sample(): Subscript {
-        return new Subscript(
-         Subscript::sampleSubscript()
+    public static function sample(): Strictfp {
+        return new Strictfp(
+         Strictfp::sampleStrictfp()
         );
     }
 }
 
-// This is an autogenerated file:Super
+// This is an autogenerated file:StringClass
 
-class Super {
-    private int $super; // json:super Required
+class StringClass {
+    private int $string; // json:string Required
 
     /**
-     * @param int $super
+     * @param int $string
      */
-    public function __construct(int $super) {
-        $this->super = $super;
+    public function __construct(int $string) {
+        $this->string = $string;
     }
 
     /**
@@ -47886,7 +48088,7 @@ class Super {
      * @throws Exception
      * @return int
      */
-    public static function fromSuper(int $value): int {
+    public static function fromString(int $value): int {
         return $value; /*int*/
     }
 
@@ -47894,11 +48096,11 @@ class Super {
      * @throws Exception
      * @return int
      */
-    public function toSuper(): int {
-        if (Super::validateSuper($this->super))  {
-            return $this->super; /*int*/
+    public function toString(): int {
+        if (StringClass::validateString($this->string))  {
+            return $this->string; /*int*/
         }
-        throw new Exception('never get to this Super::super');
+        throw new Exception('never get to this StringClass::string');
     }
 
     /**
@@ -47906,7 +48108,7 @@ class Super {
      * @return bool
      * @throws Exception
      */
-    public static function validateSuper(int $value): bool {
+    public static function validateString(int $value): bool {
         return true;
     }
 
@@ -47914,18 +48116,18 @@ class Super {
      * @throws Exception
      * @return int
      */
-    public function getSuper(): int {
-        if (Super::validateSuper($this->super))  {
-            return $this->super;
+    public function getString(): int {
+        if (StringClass::validateString($this->string))  {
+            return $this->string;
         }
-        throw new Exception('never get to getSuper Super::super');
+        throw new Exception('never get to getString StringClass::string');
     }
 
     /**
      * @return int
      */
-    public static function sampleSuper(): int {
-        return 31; /*31:super*/
+    public static function sampleString(): int {
+        return 31; /*31:string*/
     }
 
     /**
@@ -47933,7 +48135,7 @@ class Super {
      * @return bool
      */
     public function validate(): bool {
-        return Super::validateSuper($this->super);
+        return StringClass::validateString($this->string);
     }
 
     /**
@@ -47942,44 +48144,44 @@ class Super {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'super'} = $this->toSuper();
+        $out->{'string'} = $this->toString();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Super
+     * @return StringClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): Super {
-        if (!property_exists($obj, 'super')) {
+    public static function from(stdClass $obj): StringClass {
+        if (!property_exists($obj, 'string')) {
             throw new Exception("Missing required property");
         }
-        return new Super(
-         Super::fromSuper($obj->{'super'})
+        return new StringClass(
+         StringClass::fromString($obj->{'string'})
         );
     }
 
     /**
-     * @return Super
+     * @return StringClass
      */
-    public static function sample(): Super {
-        return new Super(
-         Super::sampleSuper()
+    public static function sample(): StringClass {
+        return new StringClass(
+         StringClass::sampleString()
         );
     }
 }
 
-// This is an autogenerated file:SwitchClass
+// This is an autogenerated file:Struct
 
-class SwitchClass {
-    private int $switch; // json:switch Required
+class Struct {
+    private int $struct; // json:struct Required
 
     /**
-     * @param int $switch
+     * @param int $struct
      */
-    public function __construct(int $switch) {
-        $this->switch = $switch;
+    public function __construct(int $struct) {
+        $this->struct = $struct;
     }
 
     /**
@@ -47987,7 +48189,7 @@ class SwitchClass {
      * @throws Exception
      * @return int
      */
-    public static function fromSwitch(int $value): int {
+    public static function fromStruct(int $value): int {
         return $value; /*int*/
     }
 
@@ -47995,11 +48197,11 @@ class SwitchClass {
      * @throws Exception
      * @return int
      */
-    public function toSwitch(): int {
-        if (SwitchClass::validateSwitch($this->switch))  {
-            return $this->switch; /*int*/
+    public function toStruct(): int {
+        if (Struct::validateStruct($this->struct))  {
+            return $this->struct; /*int*/
         }
-        throw new Exception('never get to this SwitchClass::switch');
+        throw new Exception('never get to this Struct::struct');
     }
 
     /**
@@ -48007,7 +48209,7 @@ class SwitchClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateSwitch(int $value): bool {
+    public static function validateStruct(int $value): bool {
         return true;
     }
 
@@ -48015,18 +48217,18 @@ class SwitchClass {
      * @throws Exception
      * @return int
      */
-    public function getSwitch(): int {
-        if (SwitchClass::validateSwitch($this->switch))  {
-            return $this->switch;
+    public function getStruct(): int {
+        if (Struct::validateStruct($this->struct))  {
+            return $this->struct;
         }
-        throw new Exception('never get to getSwitch SwitchClass::switch');
+        throw new Exception('never get to getStruct Struct::struct');
     }
 
     /**
      * @return int
      */
-    public static function sampleSwitch(): int {
-        return 31; /*31:switch*/
+    public static function sampleStruct(): int {
+        return 31; /*31:struct*/
     }
 
     /**
@@ -48034,7 +48236,7 @@ class SwitchClass {
      * @return bool
      */
     public function validate(): bool {
-        return SwitchClass::validateSwitch($this->switch);
+        return Struct::validateStruct($this->struct);
     }
 
     /**
@@ -48043,44 +48245,44 @@ class SwitchClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'switch'} = $this->toSwitch();
+        $out->{'struct'} = $this->toStruct();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return SwitchClass
+     * @return Struct
      * @throws Exception
      */
-    public static function from(stdClass $obj): SwitchClass {
-        if (!property_exists($obj, 'switch')) {
+    public static function from(stdClass $obj): Struct {
+        if (!property_exists($obj, 'struct')) {
             throw new Exception("Missing required property");
         }
-        return new SwitchClass(
-         SwitchClass::fromSwitch($obj->{'switch'})
+        return new Struct(
+         Struct::fromStruct($obj->{'struct'})
         );
     }
 
     /**
-     * @return SwitchClass
+     * @return Struct
      */
-    public static function sample(): SwitchClass {
-        return new SwitchClass(
-         SwitchClass::sampleSwitch()
+    public static function sample(): Struct {
+        return new Struct(
+         Struct::sampleStruct()
         );
     }
 }
 
-// This is an autogenerated file:Symbol
+// This is an autogenerated file:Subscript
 
-class Symbol {
-    private int $symbol; // json:symbol Required
+class Subscript {
+    private int $subscript; // json:subscript Required
 
     /**
-     * @param int $symbol
+     * @param int $subscript
      */
-    public function __construct(int $symbol) {
-        $this->symbol = $symbol;
+    public function __construct(int $subscript) {
+        $this->subscript = $subscript;
     }
 
     /**
@@ -48088,7 +48290,7 @@ class Symbol {
      * @throws Exception
      * @return int
      */
-    public static function fromSymbol(int $value): int {
+    public static function fromSubscript(int $value): int {
         return $value; /*int*/
     }
 
@@ -48096,11 +48298,11 @@ class Symbol {
      * @throws Exception
      * @return int
      */
-    public function toSymbol(): int {
-        if (Symbol::validateSymbol($this->symbol))  {
-            return $this->symbol; /*int*/
+    public function toSubscript(): int {
+        if (Subscript::validateSubscript($this->subscript))  {
+            return $this->subscript; /*int*/
         }
-        throw new Exception('never get to this Symbol::symbol');
+        throw new Exception('never get to this Subscript::subscript');
     }
 
     /**
@@ -48108,7 +48310,7 @@ class Symbol {
      * @return bool
      * @throws Exception
      */
-    public static function validateSymbol(int $value): bool {
+    public static function validateSubscript(int $value): bool {
         return true;
     }
 
@@ -48116,18 +48318,18 @@ class Symbol {
      * @throws Exception
      * @return int
      */
-    public function getSymbol(): int {
-        if (Symbol::validateSymbol($this->symbol))  {
-            return $this->symbol;
+    public function getSubscript(): int {
+        if (Subscript::validateSubscript($this->subscript))  {
+            return $this->subscript;
         }
-        throw new Exception('never get to getSymbol Symbol::symbol');
+        throw new Exception('never get to getSubscript Subscript::subscript');
     }
 
     /**
      * @return int
      */
-    public static function sampleSymbol(): int {
-        return 31; /*31:symbol*/
+    public static function sampleSubscript(): int {
+        return 31; /*31:subscript*/
     }
 
     /**
@@ -48135,7 +48337,7 @@ class Symbol {
      * @return bool
      */
     public function validate(): bool {
-        return Symbol::validateSymbol($this->symbol);
+        return Subscript::validateSubscript($this->subscript);
     }
 
     /**
@@ -48144,44 +48346,44 @@ class Symbol {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'symbol'} = $this->toSymbol();
+        $out->{'subscript'} = $this->toSubscript();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Symbol
+     * @return Subscript
      * @throws Exception
      */
-    public static function from(stdClass $obj): Symbol {
-        if (!property_exists($obj, 'symbol')) {
+    public static function from(stdClass $obj): Subscript {
+        if (!property_exists($obj, 'subscript')) {
             throw new Exception("Missing required property");
         }
-        return new Symbol(
-         Symbol::fromSymbol($obj->{'symbol'})
+        return new Subscript(
+         Subscript::fromSubscript($obj->{'subscript'})
         );
     }
 
     /**
-     * @return Symbol
+     * @return Subscript
      */
-    public static function sample(): Symbol {
-        return new Symbol(
-         Symbol::sampleSymbol()
+    public static function sample(): Subscript {
+        return new Subscript(
+         Subscript::sampleSubscript()
         );
     }
 }
 
-// This is an autogenerated file:Synchronized
+// This is an autogenerated file:Super
 
-class Synchronized {
-    private int $synchronized; // json:synchronized Required
+class Super {
+    private int $super; // json:super Required
 
     /**
-     * @param int $synchronized
+     * @param int $super
      */
-    public function __construct(int $synchronized) {
-        $this->synchronized = $synchronized;
+    public function __construct(int $super) {
+        $this->super = $super;
     }
 
     /**
@@ -48189,7 +48391,7 @@ class Synchronized {
      * @throws Exception
      * @return int
      */
-    public static function fromSynchronized(int $value): int {
+    public static function fromSuper(int $value): int {
         return $value; /*int*/
     }
 
@@ -48197,11 +48399,11 @@ class Synchronized {
      * @throws Exception
      * @return int
      */
-    public function toSynchronized(): int {
-        if (Synchronized::validateSynchronized($this->synchronized))  {
-            return $this->synchronized; /*int*/
+    public function toSuper(): int {
+        if (Super::validateSuper($this->super))  {
+            return $this->super; /*int*/
         }
-        throw new Exception('never get to this Synchronized::synchronized');
+        throw new Exception('never get to this Super::super');
     }
 
     /**
@@ -48209,7 +48411,7 @@ class Synchronized {
      * @return bool
      * @throws Exception
      */
-    public static function validateSynchronized(int $value): bool {
+    public static function validateSuper(int $value): bool {
         return true;
     }
 
@@ -48217,18 +48419,18 @@ class Synchronized {
      * @throws Exception
      * @return int
      */
-    public function getSynchronized(): int {
-        if (Synchronized::validateSynchronized($this->synchronized))  {
-            return $this->synchronized;
+    public function getSuper(): int {
+        if (Super::validateSuper($this->super))  {
+            return $this->super;
         }
-        throw new Exception('never get to getSynchronized Synchronized::synchronized');
+        throw new Exception('never get to getSuper Super::super');
     }
 
     /**
      * @return int
      */
-    public static function sampleSynchronized(): int {
-        return 31; /*31:synchronized*/
+    public static function sampleSuper(): int {
+        return 31; /*31:super*/
     }
 
     /**
@@ -48236,7 +48438,7 @@ class Synchronized {
      * @return bool
      */
     public function validate(): bool {
-        return Synchronized::validateSynchronized($this->synchronized);
+        return Super::validateSuper($this->super);
     }
 
     /**
@@ -48245,44 +48447,44 @@ class Synchronized {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'synchronized'} = $this->toSynchronized();
+        $out->{'super'} = $this->toSuper();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Synchronized
+     * @return Super
      * @throws Exception
      */
-    public static function from(stdClass $obj): Synchronized {
-        if (!property_exists($obj, 'synchronized')) {
+    public static function from(stdClass $obj): Super {
+        if (!property_exists($obj, 'super')) {
             throw new Exception("Missing required property");
         }
-        return new Synchronized(
-         Synchronized::fromSynchronized($obj->{'synchronized'})
+        return new Super(
+         Super::fromSuper($obj->{'super'})
         );
     }
 
     /**
-     * @return Synchronized
+     * @return Super
      */
-    public static function sample(): Synchronized {
-        return new Synchronized(
-         Synchronized::sampleSynchronized()
+    public static function sample(): Super {
+        return new Super(
+         Super::sampleSuper()
         );
     }
 }
 
-// This is an autogenerated file:System
+// This is an autogenerated file:SwitchClass
 
-class System {
-    private int $system; // json:system Required
+class SwitchClass {
+    private int $switch; // json:switch Required
 
     /**
-     * @param int $system
+     * @param int $switch
      */
-    public function __construct(int $system) {
-        $this->system = $system;
+    public function __construct(int $switch) {
+        $this->switch = $switch;
     }
 
     /**
@@ -48290,7 +48492,7 @@ class System {
      * @throws Exception
      * @return int
      */
-    public static function fromSystem(int $value): int {
+    public static function fromSwitch(int $value): int {
         return $value; /*int*/
     }
 
@@ -48298,11 +48500,11 @@ class System {
      * @throws Exception
      * @return int
      */
-    public function toSystem(): int {
-        if (System::validateSystem($this->system))  {
-            return $this->system; /*int*/
+    public function toSwitch(): int {
+        if (SwitchClass::validateSwitch($this->switch))  {
+            return $this->switch; /*int*/
         }
-        throw new Exception('never get to this System::system');
+        throw new Exception('never get to this SwitchClass::switch');
     }
 
     /**
@@ -48310,7 +48512,7 @@ class System {
      * @return bool
      * @throws Exception
      */
-    public static function validateSystem(int $value): bool {
+    public static function validateSwitch(int $value): bool {
         return true;
     }
 
@@ -48318,18 +48520,18 @@ class System {
      * @throws Exception
      * @return int
      */
-    public function getSystem(): int {
-        if (System::validateSystem($this->system))  {
-            return $this->system;
+    public function getSwitch(): int {
+        if (SwitchClass::validateSwitch($this->switch))  {
+            return $this->switch;
         }
-        throw new Exception('never get to getSystem System::system');
+        throw new Exception('never get to getSwitch SwitchClass::switch');
     }
 
     /**
      * @return int
      */
-    public static function sampleSystem(): int {
-        return 31; /*31:system*/
+    public static function sampleSwitch(): int {
+        return 31; /*31:switch*/
     }
 
     /**
@@ -48337,7 +48539,7 @@ class System {
      * @return bool
      */
     public function validate(): bool {
-        return System::validateSystem($this->system);
+        return SwitchClass::validateSwitch($this->switch);
     }
 
     /**
@@ -48346,44 +48548,44 @@ class System {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'system'} = $this->toSystem();
+        $out->{'switch'} = $this->toSwitch();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return System
+     * @return SwitchClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): System {
-        if (!property_exists($obj, 'system')) {
+    public static function from(stdClass $obj): SwitchClass {
+        if (!property_exists($obj, 'switch')) {
             throw new Exception("Missing required property");
         }
-        return new System(
-         System::fromSystem($obj->{'system'})
+        return new SwitchClass(
+         SwitchClass::fromSwitch($obj->{'switch'})
         );
     }
 
     /**
-     * @return System
+     * @return SwitchClass
      */
-    public static function sample(): System {
-        return new System(
-         System::sampleSystem()
+    public static function sample(): SwitchClass {
+        return new SwitchClass(
+         SwitchClass::sampleSwitch()
         );
     }
 }
 
-// This is an autogenerated file:Template
+// This is an autogenerated file:Symbol
 
-class Template {
-    private int $template; // json:template Required
+class Symbol {
+    private int $symbol; // json:symbol Required
 
     /**
-     * @param int $template
+     * @param int $symbol
      */
-    public function __construct(int $template) {
-        $this->template = $template;
+    public function __construct(int $symbol) {
+        $this->symbol = $symbol;
     }
 
     /**
@@ -48391,7 +48593,7 @@ class Template {
      * @throws Exception
      * @return int
      */
-    public static function fromTemplate(int $value): int {
+    public static function fromSymbol(int $value): int {
         return $value; /*int*/
     }
 
@@ -48399,11 +48601,11 @@ class Template {
      * @throws Exception
      * @return int
      */
-    public function toTemplate(): int {
-        if (Template::validateTemplate($this->template))  {
-            return $this->template; /*int*/
+    public function toSymbol(): int {
+        if (Symbol::validateSymbol($this->symbol))  {
+            return $this->symbol; /*int*/
         }
-        throw new Exception('never get to this Template::template');
+        throw new Exception('never get to this Symbol::symbol');
     }
 
     /**
@@ -48411,7 +48613,7 @@ class Template {
      * @return bool
      * @throws Exception
      */
-    public static function validateTemplate(int $value): bool {
+    public static function validateSymbol(int $value): bool {
         return true;
     }
 
@@ -48419,18 +48621,18 @@ class Template {
      * @throws Exception
      * @return int
      */
-    public function getTemplate(): int {
-        if (Template::validateTemplate($this->template))  {
-            return $this->template;
+    public function getSymbol(): int {
+        if (Symbol::validateSymbol($this->symbol))  {
+            return $this->symbol;
         }
-        throw new Exception('never get to getTemplate Template::template');
+        throw new Exception('never get to getSymbol Symbol::symbol');
     }
 
     /**
      * @return int
      */
-    public static function sampleTemplate(): int {
-        return 31; /*31:template*/
+    public static function sampleSymbol(): int {
+        return 31; /*31:symbol*/
     }
 
     /**
@@ -48438,7 +48640,7 @@ class Template {
      * @return bool
      */
     public function validate(): bool {
-        return Template::validateTemplate($this->template);
+        return Symbol::validateSymbol($this->symbol);
     }
 
     /**
@@ -48447,44 +48649,44 @@ class Template {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'template'} = $this->toTemplate();
+        $out->{'symbol'} = $this->toSymbol();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Template
+     * @return Symbol
      * @throws Exception
      */
-    public static function from(stdClass $obj): Template {
-        if (!property_exists($obj, 'template')) {
+    public static function from(stdClass $obj): Symbol {
+        if (!property_exists($obj, 'symbol')) {
             throw new Exception("Missing required property");
         }
-        return new Template(
-         Template::fromTemplate($obj->{'template'})
+        return new Symbol(
+         Symbol::fromSymbol($obj->{'symbol'})
         );
     }
 
     /**
-     * @return Template
+     * @return Symbol
      */
-    public static function sample(): Template {
-        return new Template(
-         Template::sampleTemplate()
+    public static function sample(): Symbol {
+        return new Symbol(
+         Symbol::sampleSymbol()
         );
     }
 }
 
-// This is an autogenerated file:Then
+// This is an autogenerated file:Synchronized
 
-class Then {
-    private int $then; // json:then Required
+class Synchronized {
+    private int $synchronized; // json:synchronized Required
 
     /**
-     * @param int $then
+     * @param int $synchronized
      */
-    public function __construct(int $then) {
-        $this->then = $then;
+    public function __construct(int $synchronized) {
+        $this->synchronized = $synchronized;
     }
 
     /**
@@ -48492,7 +48694,7 @@ class Then {
      * @throws Exception
      * @return int
      */
-    public static function fromThen(int $value): int {
+    public static function fromSynchronized(int $value): int {
         return $value; /*int*/
     }
 
@@ -48500,11 +48702,11 @@ class Then {
      * @throws Exception
      * @return int
      */
-    public function toThen(): int {
-        if (Then::validateThen($this->then))  {
-            return $this->then; /*int*/
+    public function toSynchronized(): int {
+        if (Synchronized::validateSynchronized($this->synchronized))  {
+            return $this->synchronized; /*int*/
         }
-        throw new Exception('never get to this Then::then');
+        throw new Exception('never get to this Synchronized::synchronized');
     }
 
     /**
@@ -48512,7 +48714,7 @@ class Then {
      * @return bool
      * @throws Exception
      */
-    public static function validateThen(int $value): bool {
+    public static function validateSynchronized(int $value): bool {
         return true;
     }
 
@@ -48520,18 +48722,18 @@ class Then {
      * @throws Exception
      * @return int
      */
-    public function getThen(): int {
-        if (Then::validateThen($this->then))  {
-            return $this->then;
+    public function getSynchronized(): int {
+        if (Synchronized::validateSynchronized($this->synchronized))  {
+            return $this->synchronized;
         }
-        throw new Exception('never get to getThen Then::then');
+        throw new Exception('never get to getSynchronized Synchronized::synchronized');
     }
 
     /**
      * @return int
      */
-    public static function sampleThen(): int {
-        return 31; /*31:then*/
+    public static function sampleSynchronized(): int {
+        return 31; /*31:synchronized*/
     }
 
     /**
@@ -48539,7 +48741,7 @@ class Then {
      * @return bool
      */
     public function validate(): bool {
-        return Then::validateThen($this->then);
+        return Synchronized::validateSynchronized($this->synchronized);
     }
 
     /**
@@ -48548,44 +48750,44 @@ class Then {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'then'} = $this->toThen();
+        $out->{'synchronized'} = $this->toSynchronized();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Then
+     * @return Synchronized
      * @throws Exception
      */
-    public static function from(stdClass $obj): Then {
-        if (!property_exists($obj, 'then')) {
+    public static function from(stdClass $obj): Synchronized {
+        if (!property_exists($obj, 'synchronized')) {
             throw new Exception("Missing required property");
         }
-        return new Then(
-         Then::fromThen($obj->{'then'})
+        return new Synchronized(
+         Synchronized::fromSynchronized($obj->{'synchronized'})
         );
     }
 
     /**
-     * @return Then
+     * @return Synchronized
      */
-    public static function sample(): Then {
-        return new Then(
-         Then::sampleThen()
+    public static function sample(): Synchronized {
+        return new Synchronized(
+         Synchronized::sampleSynchronized()
         );
     }
 }
 
-// This is an autogenerated file:ThreadLocal
+// This is an autogenerated file:System
 
-class ThreadLocal {
-    private int $threadLocal; // json:thread_local Required
+class System {
+    private int $system; // json:system Required
 
     /**
-     * @param int $threadLocal
+     * @param int $system
      */
-    public function __construct(int $threadLocal) {
-        $this->threadLocal = $threadLocal;
+    public function __construct(int $system) {
+        $this->system = $system;
     }
 
     /**
@@ -48593,7 +48795,7 @@ class ThreadLocal {
      * @throws Exception
      * @return int
      */
-    public static function fromThreadLocal(int $value): int {
+    public static function fromSystem(int $value): int {
         return $value; /*int*/
     }
 
@@ -48601,11 +48803,11 @@ class ThreadLocal {
      * @throws Exception
      * @return int
      */
-    public function toThreadLocal(): int {
-        if (ThreadLocal::validateThreadLocal($this->threadLocal))  {
-            return $this->threadLocal; /*int*/
+    public function toSystem(): int {
+        if (System::validateSystem($this->system))  {
+            return $this->system; /*int*/
         }
-        throw new Exception('never get to this ThreadLocal::threadLocal');
+        throw new Exception('never get to this System::system');
     }
 
     /**
@@ -48613,7 +48815,7 @@ class ThreadLocal {
      * @return bool
      * @throws Exception
      */
-    public static function validateThreadLocal(int $value): bool {
+    public static function validateSystem(int $value): bool {
         return true;
     }
 
@@ -48621,18 +48823,18 @@ class ThreadLocal {
      * @throws Exception
      * @return int
      */
-    public function getThreadLocal(): int {
-        if (ThreadLocal::validateThreadLocal($this->threadLocal))  {
-            return $this->threadLocal;
+    public function getSystem(): int {
+        if (System::validateSystem($this->system))  {
+            return $this->system;
         }
-        throw new Exception('never get to getThreadLocal ThreadLocal::threadLocal');
+        throw new Exception('never get to getSystem System::system');
     }
 
     /**
      * @return int
      */
-    public static function sampleThreadLocal(): int {
-        return 31; /*31:threadLocal*/
+    public static function sampleSystem(): int {
+        return 31; /*31:system*/
     }
 
     /**
@@ -48640,7 +48842,7 @@ class ThreadLocal {
      * @return bool
      */
     public function validate(): bool {
-        return ThreadLocal::validateThreadLocal($this->threadLocal);
+        return System::validateSystem($this->system);
     }
 
     /**
@@ -48649,44 +48851,44 @@ class ThreadLocal {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'thread_local'} = $this->toThreadLocal();
+        $out->{'system'} = $this->toSystem();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return ThreadLocal
+     * @return System
      * @throws Exception
      */
-    public static function from(stdClass $obj): ThreadLocal {
-        if (!property_exists($obj, 'thread_local')) {
+    public static function from(stdClass $obj): System {
+        if (!property_exists($obj, 'system')) {
             throw new Exception("Missing required property");
         }
-        return new ThreadLocal(
-         ThreadLocal::fromThreadLocal($obj->{'thread_local'})
+        return new System(
+         System::fromSystem($obj->{'system'})
         );
     }
 
     /**
-     * @return ThreadLocal
+     * @return System
      */
-    public static function sample(): ThreadLocal {
-        return new ThreadLocal(
-         ThreadLocal::sampleThreadLocal()
+    public static function sample(): System {
+        return new System(
+         System::sampleSystem()
         );
     }
 }
 
-// This is an autogenerated file:ThrowClass
+// This is an autogenerated file:Template
 
-class ThrowClass {
-    private int $throw; // json:throw Required
+class Template {
+    private int $template; // json:template Required
 
     /**
-     * @param int $throw
+     * @param int $template
      */
-    public function __construct(int $throw) {
-        $this->throw = $throw;
+    public function __construct(int $template) {
+        $this->template = $template;
     }
 
     /**
@@ -48694,7 +48896,7 @@ class ThrowClass {
      * @throws Exception
      * @return int
      */
-    public static function fromThrow(int $value): int {
+    public static function fromTemplate(int $value): int {
         return $value; /*int*/
     }
 
@@ -48702,11 +48904,11 @@ class ThrowClass {
      * @throws Exception
      * @return int
      */
-    public function toThrow(): int {
-        if (ThrowClass::validateThrow($this->throw))  {
-            return $this->throw; /*int*/
+    public function toTemplate(): int {
+        if (Template::validateTemplate($this->template))  {
+            return $this->template; /*int*/
         }
-        throw new Exception('never get to this ThrowClass::throw');
+        throw new Exception('never get to this Template::template');
     }
 
     /**
@@ -48714,7 +48916,7 @@ class ThrowClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateThrow(int $value): bool {
+    public static function validateTemplate(int $value): bool {
         return true;
     }
 
@@ -48722,18 +48924,18 @@ class ThrowClass {
      * @throws Exception
      * @return int
      */
-    public function getThrow(): int {
-        if (ThrowClass::validateThrow($this->throw))  {
-            return $this->throw;
+    public function getTemplate(): int {
+        if (Template::validateTemplate($this->template))  {
+            return $this->template;
         }
-        throw new Exception('never get to getThrow ThrowClass::throw');
+        throw new Exception('never get to getTemplate Template::template');
     }
 
     /**
      * @return int
      */
-    public static function sampleThrow(): int {
-        return 31; /*31:throw*/
+    public static function sampleTemplate(): int {
+        return 31; /*31:template*/
     }
 
     /**
@@ -48741,7 +48943,7 @@ class ThrowClass {
      * @return bool
      */
     public function validate(): bool {
-        return ThrowClass::validateThrow($this->throw);
+        return Template::validateTemplate($this->template);
     }
 
     /**
@@ -48750,44 +48952,44 @@ class ThrowClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'throw'} = $this->toThrow();
+        $out->{'template'} = $this->toTemplate();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return ThrowClass
+     * @return Template
      * @throws Exception
      */
-    public static function from(stdClass $obj): ThrowClass {
-        if (!property_exists($obj, 'throw')) {
+    public static function from(stdClass $obj): Template {
+        if (!property_exists($obj, 'template')) {
             throw new Exception("Missing required property");
         }
-        return new ThrowClass(
-         ThrowClass::fromThrow($obj->{'throw'})
+        return new Template(
+         Template::fromTemplate($obj->{'template'})
         );
     }
 
     /**
-     * @return ThrowClass
+     * @return Template
      */
-    public static function sample(): ThrowClass {
-        return new ThrowClass(
-         ThrowClass::sampleThrow()
+    public static function sample(): Template {
+        return new Template(
+         Template::sampleTemplate()
         );
     }
 }
 
-// This is an autogenerated file:Throws
+// This is an autogenerated file:Then
 
-class Throws {
-    private int $throws; // json:throws Required
+class Then {
+    private int $then; // json:then Required
 
     /**
-     * @param int $throws
+     * @param int $then
      */
-    public function __construct(int $throws) {
-        $this->throws = $throws;
+    public function __construct(int $then) {
+        $this->then = $then;
     }
 
     /**
@@ -48795,7 +48997,7 @@ class Throws {
      * @throws Exception
      * @return int
      */
-    public static function fromThrows(int $value): int {
+    public static function fromThen(int $value): int {
         return $value; /*int*/
     }
 
@@ -48803,11 +49005,11 @@ class Throws {
      * @throws Exception
      * @return int
      */
-    public function toThrows(): int {
-        if (Throws::validateThrows($this->throws))  {
-            return $this->throws; /*int*/
+    public function toThen(): int {
+        if (Then::validateThen($this->then))  {
+            return $this->then; /*int*/
         }
-        throw new Exception('never get to this Throws::throws');
+        throw new Exception('never get to this Then::then');
     }
 
     /**
@@ -48815,7 +49017,7 @@ class Throws {
      * @return bool
      * @throws Exception
      */
-    public static function validateThrows(int $value): bool {
+    public static function validateThen(int $value): bool {
         return true;
     }
 
@@ -48823,18 +49025,18 @@ class Throws {
      * @throws Exception
      * @return int
      */
-    public function getThrows(): int {
-        if (Throws::validateThrows($this->throws))  {
-            return $this->throws;
+    public function getThen(): int {
+        if (Then::validateThen($this->then))  {
+            return $this->then;
         }
-        throw new Exception('never get to getThrows Throws::throws');
+        throw new Exception('never get to getThen Then::then');
     }
 
     /**
      * @return int
      */
-    public static function sampleThrows(): int {
-        return 31; /*31:throws*/
+    public static function sampleThen(): int {
+        return 31; /*31:then*/
     }
 
     /**
@@ -48842,7 +49044,7 @@ class Throws {
      * @return bool
      */
     public function validate(): bool {
-        return Throws::validateThrows($this->throws);
+        return Then::validateThen($this->then);
     }
 
     /**
@@ -48851,44 +49053,44 @@ class Throws {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'throws'} = $this->toThrows();
+        $out->{'then'} = $this->toThen();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Throws
+     * @return Then
      * @throws Exception
      */
-    public static function from(stdClass $obj): Throws {
-        if (!property_exists($obj, 'throws')) {
+    public static function from(stdClass $obj): Then {
+        if (!property_exists($obj, 'then')) {
             throw new Exception("Missing required property");
         }
-        return new Throws(
-         Throws::fromThrows($obj->{'throws'})
+        return new Then(
+         Then::fromThen($obj->{'then'})
         );
     }
 
     /**
-     * @return Throws
+     * @return Then
      */
-    public static function sample(): Throws {
-        return new Throws(
-         Throws::sampleThrows()
+    public static function sample(): Then {
+        return new Then(
+         Then::sampleThen()
         );
     }
 }
 
-// This is an autogenerated file:TimeOnly
+// This is an autogenerated file:ThreadLocal
 
-class TimeOnly {
-    private int $timeOnly; // json:TimeOnly Required
+class ThreadLocal {
+    private int $threadLocal; // json:thread_local Required
 
     /**
-     * @param int $timeOnly
+     * @param int $threadLocal
      */
-    public function __construct(int $timeOnly) {
-        $this->timeOnly = $timeOnly;
+    public function __construct(int $threadLocal) {
+        $this->threadLocal = $threadLocal;
     }
 
     /**
@@ -48896,7 +49098,7 @@ class TimeOnly {
      * @throws Exception
      * @return int
      */
-    public static function fromTimeOnly(int $value): int {
+    public static function fromThreadLocal(int $value): int {
         return $value; /*int*/
     }
 
@@ -48904,11 +49106,11 @@ class TimeOnly {
      * @throws Exception
      * @return int
      */
-    public function toTimeOnly(): int {
-        if (TimeOnly::validateTimeOnly($this->timeOnly))  {
-            return $this->timeOnly; /*int*/
+    public function toThreadLocal(): int {
+        if (ThreadLocal::validateThreadLocal($this->threadLocal))  {
+            return $this->threadLocal; /*int*/
         }
-        throw new Exception('never get to this TimeOnly::timeOnly');
+        throw new Exception('never get to this ThreadLocal::threadLocal');
     }
 
     /**
@@ -48916,7 +49118,7 @@ class TimeOnly {
      * @return bool
      * @throws Exception
      */
-    public static function validateTimeOnly(int $value): bool {
+    public static function validateThreadLocal(int $value): bool {
         return true;
     }
 
@@ -48924,18 +49126,18 @@ class TimeOnly {
      * @throws Exception
      * @return int
      */
-    public function getTimeOnly(): int {
-        if (TimeOnly::validateTimeOnly($this->timeOnly))  {
-            return $this->timeOnly;
+    public function getThreadLocal(): int {
+        if (ThreadLocal::validateThreadLocal($this->threadLocal))  {
+            return $this->threadLocal;
         }
-        throw new Exception('never get to getTimeOnly TimeOnly::timeOnly');
+        throw new Exception('never get to getThreadLocal ThreadLocal::threadLocal');
     }
 
     /**
      * @return int
      */
-    public static function sampleTimeOnly(): int {
-        return 31; /*31:timeOnly*/
+    public static function sampleThreadLocal(): int {
+        return 31; /*31:threadLocal*/
     }
 
     /**
@@ -48943,7 +49145,7 @@ class TimeOnly {
      * @return bool
      */
     public function validate(): bool {
-        return TimeOnly::validateTimeOnly($this->timeOnly);
+        return ThreadLocal::validateThreadLocal($this->threadLocal);
     }
 
     /**
@@ -48952,44 +49154,44 @@ class TimeOnly {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'TimeOnly'} = $this->toTimeOnly();
+        $out->{'thread_local'} = $this->toThreadLocal();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return TimeOnly
+     * @return ThreadLocal
      * @throws Exception
      */
-    public static function from(stdClass $obj): TimeOnly {
-        if (!property_exists($obj, 'TimeOnly')) {
+    public static function from(stdClass $obj): ThreadLocal {
+        if (!property_exists($obj, 'thread_local')) {
             throw new Exception("Missing required property");
         }
-        return new TimeOnly(
-         TimeOnly::fromTimeOnly($obj->{'TimeOnly'})
+        return new ThreadLocal(
+         ThreadLocal::fromThreadLocal($obj->{'thread_local'})
         );
     }
 
     /**
-     * @return TimeOnly
+     * @return ThreadLocal
      */
-    public static function sample(): TimeOnly {
-        return new TimeOnly(
-         TimeOnly::sampleTimeOnly()
+    public static function sample(): ThreadLocal {
+        return new ThreadLocal(
+         ThreadLocal::sampleThreadLocal()
         );
     }
 }
 
-// This is an autogenerated file:TimeOnlyConverter
+// This is an autogenerated file:ThrowClass
 
-class TimeOnlyConverter {
-    private int $timeOnlyConverter; // json:TimeOnlyConverter Required
+class ThrowClass {
+    private int $throw; // json:throw Required
 
     /**
-     * @param int $timeOnlyConverter
+     * @param int $throw
      */
-    public function __construct(int $timeOnlyConverter) {
-        $this->timeOnlyConverter = $timeOnlyConverter;
+    public function __construct(int $throw) {
+        $this->throw = $throw;
     }
 
     /**
@@ -48997,7 +49199,7 @@ class TimeOnlyConverter {
      * @throws Exception
      * @return int
      */
-    public static function fromTimeOnlyConverter(int $value): int {
+    public static function fromThrow(int $value): int {
         return $value; /*int*/
     }
 
@@ -49005,11 +49207,11 @@ class TimeOnlyConverter {
      * @throws Exception
      * @return int
      */
-    public function toTimeOnlyConverter(): int {
-        if (TimeOnlyConverter::validateTimeOnlyConverter($this->timeOnlyConverter))  {
-            return $this->timeOnlyConverter; /*int*/
+    public function toThrow(): int {
+        if (ThrowClass::validateThrow($this->throw))  {
+            return $this->throw; /*int*/
         }
-        throw new Exception('never get to this TimeOnlyConverter::timeOnlyConverter');
+        throw new Exception('never get to this ThrowClass::throw');
     }
 
     /**
@@ -49017,7 +49219,7 @@ class TimeOnlyConverter {
      * @return bool
      * @throws Exception
      */
-    public static function validateTimeOnlyConverter(int $value): bool {
+    public static function validateThrow(int $value): bool {
         return true;
     }
 
@@ -49025,18 +49227,18 @@ class TimeOnlyConverter {
      * @throws Exception
      * @return int
      */
-    public function getTimeOnlyConverter(): int {
-        if (TimeOnlyConverter::validateTimeOnlyConverter($this->timeOnlyConverter))  {
-            return $this->timeOnlyConverter;
+    public function getThrow(): int {
+        if (ThrowClass::validateThrow($this->throw))  {
+            return $this->throw;
         }
-        throw new Exception('never get to getTimeOnlyConverter TimeOnlyConverter::timeOnlyConverter');
+        throw new Exception('never get to getThrow ThrowClass::throw');
     }
 
     /**
      * @return int
      */
-    public static function sampleTimeOnlyConverter(): int {
-        return 31; /*31:timeOnlyConverter*/
+    public static function sampleThrow(): int {
+        return 31; /*31:throw*/
     }
 
     /**
@@ -49044,7 +49246,7 @@ class TimeOnlyConverter {
      * @return bool
      */
     public function validate(): bool {
-        return TimeOnlyConverter::validateTimeOnlyConverter($this->timeOnlyConverter);
+        return ThrowClass::validateThrow($this->throw);
     }
 
     /**
@@ -49053,44 +49255,44 @@ class TimeOnlyConverter {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'TimeOnlyConverter'} = $this->toTimeOnlyConverter();
+        $out->{'throw'} = $this->toThrow();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return TimeOnlyConverter
+     * @return ThrowClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): TimeOnlyConverter {
-        if (!property_exists($obj, 'TimeOnlyConverter')) {
+    public static function from(stdClass $obj): ThrowClass {
+        if (!property_exists($obj, 'throw')) {
             throw new Exception("Missing required property");
         }
-        return new TimeOnlyConverter(
-         TimeOnlyConverter::fromTimeOnlyConverter($obj->{'TimeOnlyConverter'})
+        return new ThrowClass(
+         ThrowClass::fromThrow($obj->{'throw'})
         );
     }
 
     /**
-     * @return TimeOnlyConverter
+     * @return ThrowClass
      */
-    public static function sample(): TimeOnlyConverter {
-        return new TimeOnlyConverter(
-         TimeOnlyConverter::sampleTimeOnlyConverter()
+    public static function sample(): ThrowClass {
+        return new ThrowClass(
+         ThrowClass::sampleThrow()
         );
     }
 }
 
-// This is an autogenerated file:TimeZone
+// This is an autogenerated file:Throws
 
-class TimeZone {
-    private int $timeZone; // json:TimeZone Required
+class Throws {
+    private int $throws; // json:throws Required
 
     /**
-     * @param int $timeZone
+     * @param int $throws
      */
-    public function __construct(int $timeZone) {
-        $this->timeZone = $timeZone;
+    public function __construct(int $throws) {
+        $this->throws = $throws;
     }
 
     /**
@@ -49098,7 +49300,7 @@ class TimeZone {
      * @throws Exception
      * @return int
      */
-    public static function fromTimeZone(int $value): int {
+    public static function fromThrows(int $value): int {
         return $value; /*int*/
     }
 
@@ -49106,11 +49308,11 @@ class TimeZone {
      * @throws Exception
      * @return int
      */
-    public function toTimeZone(): int {
-        if (TimeZone::validateTimeZone($this->timeZone))  {
-            return $this->timeZone; /*int*/
+    public function toThrows(): int {
+        if (Throws::validateThrows($this->throws))  {
+            return $this->throws; /*int*/
         }
-        throw new Exception('never get to this TimeZone::timeZone');
+        throw new Exception('never get to this Throws::throws');
     }
 
     /**
@@ -49118,7 +49320,7 @@ class TimeZone {
      * @return bool
      * @throws Exception
      */
-    public static function validateTimeZone(int $value): bool {
+    public static function validateThrows(int $value): bool {
         return true;
     }
 
@@ -49126,18 +49328,18 @@ class TimeZone {
      * @throws Exception
      * @return int
      */
-    public function getTimeZone(): int {
-        if (TimeZone::validateTimeZone($this->timeZone))  {
-            return $this->timeZone;
+    public function getThrows(): int {
+        if (Throws::validateThrows($this->throws))  {
+            return $this->throws;
         }
-        throw new Exception('never get to getTimeZone TimeZone::timeZone');
+        throw new Exception('never get to getThrows Throws::throws');
     }
 
     /**
      * @return int
      */
-    public static function sampleTimeZone(): int {
-        return 31; /*31:timeZone*/
+    public static function sampleThrows(): int {
+        return 31; /*31:throws*/
     }
 
     /**
@@ -49145,7 +49347,7 @@ class TimeZone {
      * @return bool
      */
     public function validate(): bool {
-        return TimeZone::validateTimeZone($this->timeZone);
+        return Throws::validateThrows($this->throws);
     }
 
     /**
@@ -49154,44 +49356,44 @@ class TimeZone {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'TimeZone'} = $this->toTimeZone();
+        $out->{'throws'} = $this->toThrows();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return TimeZone
+     * @return Throws
      * @throws Exception
      */
-    public static function from(stdClass $obj): TimeZone {
-        if (!property_exists($obj, 'TimeZone')) {
+    public static function from(stdClass $obj): Throws {
+        if (!property_exists($obj, 'throws')) {
             throw new Exception("Missing required property");
         }
-        return new TimeZone(
-         TimeZone::fromTimeZone($obj->{'TimeZone'})
+        return new Throws(
+         Throws::fromThrows($obj->{'throws'})
         );
     }
 
     /**
-     * @return TimeZone
+     * @return Throws
      */
-    public static function sample(): TimeZone {
-        return new TimeZone(
-         TimeZone::sampleTimeZone()
+    public static function sample(): Throws {
+        return new Throws(
+         Throws::sampleThrows()
         );
     }
 }
 
-// This is an autogenerated file:ToJSON
+// This is an autogenerated file:TimeOnly
 
-class ToJSON {
-    private int $toJSON; // json:to_json Required
+class TimeOnly {
+    private int $timeOnly; // json:TimeOnly Required
 
     /**
-     * @param int $toJSON
+     * @param int $timeOnly
      */
-    public function __construct(int $toJSON) {
-        $this->toJSON = $toJSON;
+    public function __construct(int $timeOnly) {
+        $this->timeOnly = $timeOnly;
     }
 
     /**
@@ -49199,7 +49401,7 @@ class ToJSON {
      * @throws Exception
      * @return int
      */
-    public static function fromToJSON(int $value): int {
+    public static function fromTimeOnly(int $value): int {
         return $value; /*int*/
     }
 
@@ -49207,11 +49409,11 @@ class ToJSON {
      * @throws Exception
      * @return int
      */
-    public function toToJSON(): int {
-        if (ToJSON::validateToJSON($this->toJSON))  {
-            return $this->toJSON; /*int*/
+    public function toTimeOnly(): int {
+        if (TimeOnly::validateTimeOnly($this->timeOnly))  {
+            return $this->timeOnly; /*int*/
         }
-        throw new Exception('never get to this ToJSON::toJSON');
+        throw new Exception('never get to this TimeOnly::timeOnly');
     }
 
     /**
@@ -49219,7 +49421,7 @@ class ToJSON {
      * @return bool
      * @throws Exception
      */
-    public static function validateToJSON(int $value): bool {
+    public static function validateTimeOnly(int $value): bool {
         return true;
     }
 
@@ -49227,18 +49429,18 @@ class ToJSON {
      * @throws Exception
      * @return int
      */
-    public function getToJSON(): int {
-        if (ToJSON::validateToJSON($this->toJSON))  {
-            return $this->toJSON;
+    public function getTimeOnly(): int {
+        if (TimeOnly::validateTimeOnly($this->timeOnly))  {
+            return $this->timeOnly;
         }
-        throw new Exception('never get to getToJSON ToJSON::toJSON');
+        throw new Exception('never get to getTimeOnly TimeOnly::timeOnly');
     }
 
     /**
      * @return int
      */
-    public static function sampleToJSON(): int {
-        return 31; /*31:toJSON*/
+    public static function sampleTimeOnly(): int {
+        return 31; /*31:timeOnly*/
     }
 
     /**
@@ -49246,7 +49448,7 @@ class ToJSON {
      * @return bool
      */
     public function validate(): bool {
-        return ToJSON::validateToJSON($this->toJSON);
+        return TimeOnly::validateTimeOnly($this->timeOnly);
     }
 
     /**
@@ -49255,44 +49457,44 @@ class ToJSON {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'to_json'} = $this->toToJSON();
+        $out->{'TimeOnly'} = $this->toTimeOnly();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return ToJSON
+     * @return TimeOnly
      * @throws Exception
      */
-    public static function from(stdClass $obj): ToJSON {
-        if (!property_exists($obj, 'to_json')) {
+    public static function from(stdClass $obj): TimeOnly {
+        if (!property_exists($obj, 'TimeOnly')) {
             throw new Exception("Missing required property");
         }
-        return new ToJSON(
-         ToJSON::fromToJSON($obj->{'to_json'})
+        return new TimeOnly(
+         TimeOnly::fromTimeOnly($obj->{'TimeOnly'})
         );
     }
 
     /**
-     * @return ToJSON
+     * @return TimeOnly
      */
-    public static function sample(): ToJSON {
-        return new ToJSON(
-         ToJSON::sampleToJSON()
+    public static function sample(): TimeOnly {
+        return new TimeOnly(
+         TimeOnly::sampleTimeOnly()
         );
     }
 }
 
-// This is an autogenerated file:ToString
+// This is an autogenerated file:TimeOnlyConverter
 
-class ToString {
-    private int $toString; // json:toString Required
+class TimeOnlyConverter {
+    private int $timeOnlyConverter; // json:TimeOnlyConverter Required
 
     /**
-     * @param int $toString
+     * @param int $timeOnlyConverter
      */
-    public function __construct(int $toString) {
-        $this->toString = $toString;
+    public function __construct(int $timeOnlyConverter) {
+        $this->timeOnlyConverter = $timeOnlyConverter;
     }
 
     /**
@@ -49300,7 +49502,7 @@ class ToString {
      * @throws Exception
      * @return int
      */
-    public static function fromToString(int $value): int {
+    public static function fromTimeOnlyConverter(int $value): int {
         return $value; /*int*/
     }
 
@@ -49308,11 +49510,11 @@ class ToString {
      * @throws Exception
      * @return int
      */
-    public function toToString(): int {
-        if (ToString::validateToString($this->toString))  {
-            return $this->toString; /*int*/
+    public function toTimeOnlyConverter(): int {
+        if (TimeOnlyConverter::validateTimeOnlyConverter($this->timeOnlyConverter))  {
+            return $this->timeOnlyConverter; /*int*/
         }
-        throw new Exception('never get to this ToString::toString');
+        throw new Exception('never get to this TimeOnlyConverter::timeOnlyConverter');
     }
 
     /**
@@ -49320,7 +49522,7 @@ class ToString {
      * @return bool
      * @throws Exception
      */
-    public static function validateToString(int $value): bool {
+    public static function validateTimeOnlyConverter(int $value): bool {
         return true;
     }
 
@@ -49328,18 +49530,18 @@ class ToString {
      * @throws Exception
      * @return int
      */
-    public function getToString(): int {
-        if (ToString::validateToString($this->toString))  {
-            return $this->toString;
+    public function getTimeOnlyConverter(): int {
+        if (TimeOnlyConverter::validateTimeOnlyConverter($this->timeOnlyConverter))  {
+            return $this->timeOnlyConverter;
         }
-        throw new Exception('never get to getToString ToString::toString');
+        throw new Exception('never get to getTimeOnlyConverter TimeOnlyConverter::timeOnlyConverter');
     }
 
     /**
      * @return int
      */
-    public static function sampleToString(): int {
-        return 31; /*31:toString*/
+    public static function sampleTimeOnlyConverter(): int {
+        return 31; /*31:timeOnlyConverter*/
     }
 
     /**
@@ -49347,7 +49549,7 @@ class ToString {
      * @return bool
      */
     public function validate(): bool {
-        return ToString::validateToString($this->toString);
+        return TimeOnlyConverter::validateTimeOnlyConverter($this->timeOnlyConverter);
     }
 
     /**
@@ -49356,44 +49558,44 @@ class ToString {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'toString'} = $this->toToString();
+        $out->{'TimeOnlyConverter'} = $this->toTimeOnlyConverter();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return ToString
+     * @return TimeOnlyConverter
      * @throws Exception
      */
-    public static function from(stdClass $obj): ToString {
-        if (!property_exists($obj, 'toString')) {
+    public static function from(stdClass $obj): TimeOnlyConverter {
+        if (!property_exists($obj, 'TimeOnlyConverter')) {
             throw new Exception("Missing required property");
         }
-        return new ToString(
-         ToString::fromToString($obj->{'toString'})
+        return new TimeOnlyConverter(
+         TimeOnlyConverter::fromTimeOnlyConverter($obj->{'TimeOnlyConverter'})
         );
     }
 
     /**
-     * @return ToString
+     * @return TimeOnlyConverter
      */
-    public static function sample(): ToString {
-        return new ToString(
-         ToString::sampleToString()
+    public static function sample(): TimeOnlyConverter {
+        return new TimeOnlyConverter(
+         TimeOnlyConverter::sampleTimeOnlyConverter()
         );
     }
 }
 
-// This is an autogenerated file:TopLevelClass
+// This is an autogenerated file:TimeZone
 
-class TopLevelClass {
-    private int $topLevel; // json:top_level Required
+class TimeZone {
+    private int $timeZone; // json:TimeZone Required
 
     /**
-     * @param int $topLevel
+     * @param int $timeZone
      */
-    public function __construct(int $topLevel) {
-        $this->topLevel = $topLevel;
+    public function __construct(int $timeZone) {
+        $this->timeZone = $timeZone;
     }
 
     /**
@@ -49401,7 +49603,7 @@ class TopLevelClass {
      * @throws Exception
      * @return int
      */
-    public static function fromTopLevel(int $value): int {
+    public static function fromTimeZone(int $value): int {
         return $value; /*int*/
     }
 
@@ -49409,11 +49611,11 @@ class TopLevelClass {
      * @throws Exception
      * @return int
      */
-    public function toTopLevel(): int {
-        if (TopLevelClass::validateTopLevel($this->topLevel))  {
-            return $this->topLevel; /*int*/
+    public function toTimeZone(): int {
+        if (TimeZone::validateTimeZone($this->timeZone))  {
+            return $this->timeZone; /*int*/
         }
-        throw new Exception('never get to this TopLevelClass::topLevel');
+        throw new Exception('never get to this TimeZone::timeZone');
     }
 
     /**
@@ -49421,7 +49623,7 @@ class TopLevelClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateTopLevel(int $value): bool {
+    public static function validateTimeZone(int $value): bool {
         return true;
     }
 
@@ -49429,18 +49631,18 @@ class TopLevelClass {
      * @throws Exception
      * @return int
      */
-    public function getTopLevel(): int {
-        if (TopLevelClass::validateTopLevel($this->topLevel))  {
-            return $this->topLevel;
+    public function getTimeZone(): int {
+        if (TimeZone::validateTimeZone($this->timeZone))  {
+            return $this->timeZone;
         }
-        throw new Exception('never get to getTopLevel TopLevelClass::topLevel');
+        throw new Exception('never get to getTimeZone TimeZone::timeZone');
     }
 
     /**
      * @return int
      */
-    public static function sampleTopLevel(): int {
-        return 31; /*31:topLevel*/
+    public static function sampleTimeZone(): int {
+        return 31; /*31:timeZone*/
     }
 
     /**
@@ -49448,7 +49650,7 @@ class TopLevelClass {
      * @return bool
      */
     public function validate(): bool {
-        return TopLevelClass::validateTopLevel($this->topLevel);
+        return TimeZone::validateTimeZone($this->timeZone);
     }
 
     /**
@@ -49457,44 +49659,44 @@ class TopLevelClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'top_level'} = $this->toTopLevel();
+        $out->{'TimeZone'} = $this->toTimeZone();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return TopLevelClass
+     * @return TimeZone
      * @throws Exception
      */
-    public static function from(stdClass $obj): TopLevelClass {
-        if (!property_exists($obj, 'top_level')) {
-            throw new Exception("Missing required property");
+    public static function from(stdClass $obj): TimeZone {
+        if (!property_exists($obj, 'TimeZone')) {
+            throw new Exception("Missing required property");
         }
-        return new TopLevelClass(
-         TopLevelClass::fromTopLevel($obj->{'top_level'})
+        return new TimeZone(
+         TimeZone::fromTimeZone($obj->{'TimeZone'})
         );
     }
 
     /**
-     * @return TopLevelClass
+     * @return TimeZone
      */
-    public static function sample(): TopLevelClass {
-        return new TopLevelClass(
-         TopLevelClass::sampleTopLevel()
+    public static function sample(): TimeZone {
+        return new TimeZone(
+         TimeZone::sampleTimeZone()
         );
     }
 }
 
-// This is an autogenerated file:Transient
+// This is an autogenerated file:ToJSON
 
-class Transient {
-    private int $transient; // json:transient Required
+class ToJSON {
+    private int $toJSON; // json:to_json Required
 
     /**
-     * @param int $transient
+     * @param int $toJSON
      */
-    public function __construct(int $transient) {
-        $this->transient = $transient;
+    public function __construct(int $toJSON) {
+        $this->toJSON = $toJSON;
     }
 
     /**
@@ -49502,7 +49704,7 @@ class Transient {
      * @throws Exception
      * @return int
      */
-    public static function fromTransient(int $value): int {
+    public static function fromToJSON(int $value): int {
         return $value; /*int*/
     }
 
@@ -49510,11 +49712,11 @@ class Transient {
      * @throws Exception
      * @return int
      */
-    public function toTransient(): int {
-        if (Transient::validateTransient($this->transient))  {
-            return $this->transient; /*int*/
+    public function toToJSON(): int {
+        if (ToJSON::validateToJSON($this->toJSON))  {
+            return $this->toJSON; /*int*/
         }
-        throw new Exception('never get to this Transient::transient');
+        throw new Exception('never get to this ToJSON::toJSON');
     }
 
     /**
@@ -49522,7 +49724,7 @@ class Transient {
      * @return bool
      * @throws Exception
      */
-    public static function validateTransient(int $value): bool {
+    public static function validateToJSON(int $value): bool {
         return true;
     }
 
@@ -49530,18 +49732,18 @@ class Transient {
      * @throws Exception
      * @return int
      */
-    public function getTransient(): int {
-        if (Transient::validateTransient($this->transient))  {
-            return $this->transient;
+    public function getToJSON(): int {
+        if (ToJSON::validateToJSON($this->toJSON))  {
+            return $this->toJSON;
         }
-        throw new Exception('never get to getTransient Transient::transient');
+        throw new Exception('never get to getToJSON ToJSON::toJSON');
     }
 
     /**
      * @return int
      */
-    public static function sampleTransient(): int {
-        return 31; /*31:transient*/
+    public static function sampleToJSON(): int {
+        return 31; /*31:toJSON*/
     }
 
     /**
@@ -49549,7 +49751,7 @@ class Transient {
      * @return bool
      */
     public function validate(): bool {
-        return Transient::validateTransient($this->transient);
+        return ToJSON::validateToJSON($this->toJSON);
     }
 
     /**
@@ -49558,44 +49760,44 @@ class Transient {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'transient'} = $this->toTransient();
+        $out->{'to_json'} = $this->toToJSON();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Transient
+     * @return ToJSON
      * @throws Exception
      */
-    public static function from(stdClass $obj): Transient {
-        if (!property_exists($obj, 'transient')) {
+    public static function from(stdClass $obj): ToJSON {
+        if (!property_exists($obj, 'to_json')) {
             throw new Exception("Missing required property");
         }
-        return new Transient(
-         Transient::fromTransient($obj->{'transient'})
+        return new ToJSON(
+         ToJSON::fromToJSON($obj->{'to_json'})
         );
     }
 
     /**
-     * @return Transient
+     * @return ToJSON
      */
-    public static function sample(): Transient {
-        return new Transient(
-         Transient::sampleTransient()
+    public static function sample(): ToJSON {
+        return new ToJSON(
+         ToJSON::sampleToJSON()
         );
     }
 }
 
-// This is an autogenerated file:TrueClass
+// This is an autogenerated file:ToString
 
-class TrueClass {
-    private int $true; // json:True Required
+class ToString {
+    private int $toString; // json:toString Required
 
     /**
-     * @param int $true
+     * @param int $toString
      */
-    public function __construct(int $true) {
-        $this->true = $true;
+    public function __construct(int $toString) {
+        $this->toString = $toString;
     }
 
     /**
@@ -49603,7 +49805,7 @@ class TrueClass {
      * @throws Exception
      * @return int
      */
-    public static function fromTrue(int $value): int {
+    public static function fromToString(int $value): int {
         return $value; /*int*/
     }
 
@@ -49611,11 +49813,11 @@ class TrueClass {
      * @throws Exception
      * @return int
      */
-    public function toTrue(): int {
-        if (TrueClass::validateTrue($this->true))  {
-            return $this->true; /*int*/
+    public function toToString(): int {
+        if (ToString::validateToString($this->toString))  {
+            return $this->toString; /*int*/
         }
-        throw new Exception('never get to this TrueClass::true');
+        throw new Exception('never get to this ToString::toString');
     }
 
     /**
@@ -49623,7 +49825,7 @@ class TrueClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateTrue(int $value): bool {
+    public static function validateToString(int $value): bool {
         return true;
     }
 
@@ -49631,18 +49833,18 @@ class TrueClass {
      * @throws Exception
      * @return int
      */
-    public function getTrue(): int {
-        if (TrueClass::validateTrue($this->true))  {
-            return $this->true;
+    public function getToString(): int {
+        if (ToString::validateToString($this->toString))  {
+            return $this->toString;
         }
-        throw new Exception('never get to getTrue TrueClass::true');
+        throw new Exception('never get to getToString ToString::toString');
     }
 
     /**
      * @return int
      */
-    public static function sampleTrue(): int {
-        return 31; /*31:true*/
+    public static function sampleToString(): int {
+        return 31; /*31:toString*/
     }
 
     /**
@@ -49650,7 +49852,7 @@ class TrueClass {
      * @return bool
      */
     public function validate(): bool {
-        return TrueClass::validateTrue($this->true);
+        return ToString::validateToString($this->toString);
     }
 
     /**
@@ -49659,44 +49861,44 @@ class TrueClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'True'} = $this->toTrue();
+        $out->{'toString'} = $this->toToString();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return TrueClass
+     * @return ToString
      * @throws Exception
      */
-    public static function from(stdClass $obj): TrueClass {
-        if (!property_exists($obj, 'True')) {
+    public static function from(stdClass $obj): ToString {
+        if (!property_exists($obj, 'toString')) {
             throw new Exception("Missing required property");
         }
-        return new TrueClass(
-         TrueClass::fromTrue($obj->{'True'})
+        return new ToString(
+         ToString::fromToString($obj->{'toString'})
         );
     }
 
     /**
-     * @return TrueClass
+     * @return ToString
      */
-    public static function sample(): TrueClass {
-        return new TrueClass(
-         TrueClass::sampleTrue()
+    public static function sample(): ToString {
+        return new ToString(
+         ToString::sampleToString()
         );
     }
 }
 
-// This is an autogenerated file:TryClass
+// This is an autogenerated file:TopLevelClass
 
-class TryClass {
-    private int $try; // json:try Required
+class TopLevelClass {
+    private int $topLevel; // json:top_level Required
 
     /**
-     * @param int $try
+     * @param int $topLevel
      */
-    public function __construct(int $try) {
-        $this->try = $try;
+    public function __construct(int $topLevel) {
+        $this->topLevel = $topLevel;
     }
 
     /**
@@ -49704,7 +49906,7 @@ class TryClass {
      * @throws Exception
      * @return int
      */
-    public static function fromTry(int $value): int {
+    public static function fromTopLevel(int $value): int {
         return $value; /*int*/
     }
 
@@ -49712,11 +49914,11 @@ class TryClass {
      * @throws Exception
      * @return int
      */
-    public function toTry(): int {
-        if (TryClass::validateTry($this->try))  {
-            return $this->try; /*int*/
+    public function toTopLevel(): int {
+        if (TopLevelClass::validateTopLevel($this->topLevel))  {
+            return $this->topLevel; /*int*/
         }
-        throw new Exception('never get to this TryClass::try');
+        throw new Exception('never get to this TopLevelClass::topLevel');
     }
 
     /**
@@ -49724,7 +49926,7 @@ class TryClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateTry(int $value): bool {
+    public static function validateTopLevel(int $value): bool {
         return true;
     }
 
@@ -49732,18 +49934,18 @@ class TryClass {
      * @throws Exception
      * @return int
      */
-    public function getTry(): int {
-        if (TryClass::validateTry($this->try))  {
-            return $this->try;
+    public function getTopLevel(): int {
+        if (TopLevelClass::validateTopLevel($this->topLevel))  {
+            return $this->topLevel;
         }
-        throw new Exception('never get to getTry TryClass::try');
+        throw new Exception('never get to getTopLevel TopLevelClass::topLevel');
     }
 
     /**
      * @return int
      */
-    public static function sampleTry(): int {
-        return 31; /*31:try*/
+    public static function sampleTopLevel(): int {
+        return 31; /*31:topLevel*/
     }
 
     /**
@@ -49751,7 +49953,7 @@ class TryClass {
      * @return bool
      */
     public function validate(): bool {
-        return TryClass::validateTry($this->try);
+        return TopLevelClass::validateTopLevel($this->topLevel);
     }
 
     /**
@@ -49760,44 +49962,44 @@ class TryClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'try'} = $this->toTry();
+        $out->{'top_level'} = $this->toTopLevel();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return TryClass
+     * @return TopLevelClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): TryClass {
-        if (!property_exists($obj, 'try')) {
+    public static function from(stdClass $obj): TopLevelClass {
+        if (!property_exists($obj, 'top_level')) {
             throw new Exception("Missing required property");
         }
-        return new TryClass(
-         TryClass::fromTry($obj->{'try'})
+        return new TopLevelClass(
+         TopLevelClass::fromTopLevel($obj->{'top_level'})
         );
     }
 
     /**
-     * @return TryClass
+     * @return TopLevelClass
      */
-    public static function sample(): TryClass {
-        return new TryClass(
-         TryClass::sampleTry()
+    public static function sample(): TopLevelClass {
+        return new TopLevelClass(
+         TopLevelClass::sampleTopLevel()
         );
     }
 }
 
-// This is an autogenerated file:Type
+// This is an autogenerated file:Transient
 
-class Type {
-    private int $type; // json:Type Required
+class Transient {
+    private int $transient; // json:transient Required
 
     /**
-     * @param int $type
+     * @param int $transient
      */
-    public function __construct(int $type) {
-        $this->type = $type;
+    public function __construct(int $transient) {
+        $this->transient = $transient;
     }
 
     /**
@@ -49805,7 +50007,7 @@ class Type {
      * @throws Exception
      * @return int
      */
-    public static function fromType(int $value): int {
+    public static function fromTransient(int $value): int {
         return $value; /*int*/
     }
 
@@ -49813,11 +50015,11 @@ class Type {
      * @throws Exception
      * @return int
      */
-    public function toType(): int {
-        if (Type::validateType($this->type))  {
-            return $this->type; /*int*/
+    public function toTransient(): int {
+        if (Transient::validateTransient($this->transient))  {
+            return $this->transient; /*int*/
         }
-        throw new Exception('never get to this Type::type');
+        throw new Exception('never get to this Transient::transient');
     }
 
     /**
@@ -49825,7 +50027,7 @@ class Type {
      * @return bool
      * @throws Exception
      */
-    public static function validateType(int $value): bool {
+    public static function validateTransient(int $value): bool {
         return true;
     }
 
@@ -49833,18 +50035,18 @@ class Type {
      * @throws Exception
      * @return int
      */
-    public function getType(): int {
-        if (Type::validateType($this->type))  {
-            return $this->type;
+    public function getTransient(): int {
+        if (Transient::validateTransient($this->transient))  {
+            return $this->transient;
         }
-        throw new Exception('never get to getType Type::type');
+        throw new Exception('never get to getTransient Transient::transient');
     }
 
     /**
      * @return int
      */
-    public static function sampleType(): int {
-        return 31; /*31:type*/
+    public static function sampleTransient(): int {
+        return 31; /*31:transient*/
     }
 
     /**
@@ -49852,7 +50054,7 @@ class Type {
      * @return bool
      */
     public function validate(): bool {
-        return Type::validateType($this->type);
+        return Transient::validateTransient($this->transient);
     }
 
     /**
@@ -49861,44 +50063,44 @@ class Type {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'Type'} = $this->toType();
+        $out->{'transient'} = $this->toTransient();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Type
+     * @return Transient
      * @throws Exception
      */
-    public static function from(stdClass $obj): Type {
-        if (!property_exists($obj, 'Type')) {
+    public static function from(stdClass $obj): Transient {
+        if (!property_exists($obj, 'transient')) {
             throw new Exception("Missing required property");
         }
-        return new Type(
-         Type::fromType($obj->{'Type'})
+        return new Transient(
+         Transient::fromTransient($obj->{'transient'})
         );
     }
 
     /**
-     * @return Type
+     * @return Transient
      */
-    public static function sample(): Type {
-        return new Type(
-         Type::sampleType()
+    public static function sample(): Transient {
+        return new Transient(
+         Transient::sampleTransient()
         );
     }
 }
 
-// This is an autogenerated file:Typealias
+// This is an autogenerated file:TrueClass
 
-class Typealias {
-    private int $typealias; // json:typealias Required
+class TrueClass {
+    private int $true; // json:True Required
 
     /**
-     * @param int $typealias
+     * @param int $true
      */
-    public function __construct(int $typealias) {
-        $this->typealias = $typealias;
+    public function __construct(int $true) {
+        $this->true = $true;
     }
 
     /**
@@ -49906,7 +50108,7 @@ class Typealias {
      * @throws Exception
      * @return int
      */
-    public static function fromTypealias(int $value): int {
+    public static function fromTrue(int $value): int {
         return $value; /*int*/
     }
 
@@ -49914,11 +50116,11 @@ class Typealias {
      * @throws Exception
      * @return int
      */
-    public function toTypealias(): int {
-        if (Typealias::validateTypealias($this->typealias))  {
-            return $this->typealias; /*int*/
+    public function toTrue(): int {
+        if (TrueClass::validateTrue($this->true))  {
+            return $this->true; /*int*/
         }
-        throw new Exception('never get to this Typealias::typealias');
+        throw new Exception('never get to this TrueClass::true');
     }
 
     /**
@@ -49926,7 +50128,7 @@ class Typealias {
      * @return bool
      * @throws Exception
      */
-    public static function validateTypealias(int $value): bool {
+    public static function validateTrue(int $value): bool {
         return true;
     }
 
@@ -49934,18 +50136,18 @@ class Typealias {
      * @throws Exception
      * @return int
      */
-    public function getTypealias(): int {
-        if (Typealias::validateTypealias($this->typealias))  {
-            return $this->typealias;
+    public function getTrue(): int {
+        if (TrueClass::validateTrue($this->true))  {
+            return $this->true;
         }
-        throw new Exception('never get to getTypealias Typealias::typealias');
+        throw new Exception('never get to getTrue TrueClass::true');
     }
 
     /**
      * @return int
      */
-    public static function sampleTypealias(): int {
-        return 31; /*31:typealias*/
+    public static function sampleTrue(): int {
+        return 31; /*31:true*/
     }
 
     /**
@@ -49953,7 +50155,7 @@ class Typealias {
      * @return bool
      */
     public function validate(): bool {
-        return Typealias::validateTypealias($this->typealias);
+        return TrueClass::validateTrue($this->true);
     }
 
     /**
@@ -49962,44 +50164,44 @@ class Typealias {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'typealias'} = $this->toTypealias();
+        $out->{'True'} = $this->toTrue();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Typealias
+     * @return TrueClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): Typealias {
-        if (!property_exists($obj, 'typealias')) {
+    public static function from(stdClass $obj): TrueClass {
+        if (!property_exists($obj, 'True')) {
             throw new Exception("Missing required property");
         }
-        return new Typealias(
-         Typealias::fromTypealias($obj->{'typealias'})
+        return new TrueClass(
+         TrueClass::fromTrue($obj->{'True'})
         );
     }
 
     /**
-     * @return Typealias
+     * @return TrueClass
      */
-    public static function sample(): Typealias {
-        return new Typealias(
-         Typealias::sampleTypealias()
+    public static function sample(): TrueClass {
+        return new TrueClass(
+         TrueClass::sampleTrue()
         );
     }
 }
 
-// This is an autogenerated file:Typedef
+// This is an autogenerated file:TryClass
 
-class Typedef {
-    private int $typedef; // json:typedef Required
+class TryClass {
+    private int $try; // json:try Required
 
     /**
-     * @param int $typedef
+     * @param int $try
      */
-    public function __construct(int $typedef) {
-        $this->typedef = $typedef;
+    public function __construct(int $try) {
+        $this->try = $try;
     }
 
     /**
@@ -50007,7 +50209,7 @@ class Typedef {
      * @throws Exception
      * @return int
      */
-    public static function fromTypedef(int $value): int {
+    public static function fromTry(int $value): int {
         return $value; /*int*/
     }
 
@@ -50015,11 +50217,11 @@ class Typedef {
      * @throws Exception
      * @return int
      */
-    public function toTypedef(): int {
-        if (Typedef::validateTypedef($this->typedef))  {
-            return $this->typedef; /*int*/
+    public function toTry(): int {
+        if (TryClass::validateTry($this->try))  {
+            return $this->try; /*int*/
         }
-        throw new Exception('never get to this Typedef::typedef');
+        throw new Exception('never get to this TryClass::try');
     }
 
     /**
@@ -50027,7 +50229,7 @@ class Typedef {
      * @return bool
      * @throws Exception
      */
-    public static function validateTypedef(int $value): bool {
+    public static function validateTry(int $value): bool {
         return true;
     }
 
@@ -50035,18 +50237,18 @@ class Typedef {
      * @throws Exception
      * @return int
      */
-    public function getTypedef(): int {
-        if (Typedef::validateTypedef($this->typedef))  {
-            return $this->typedef;
+    public function getTry(): int {
+        if (TryClass::validateTry($this->try))  {
+            return $this->try;
         }
-        throw new Exception('never get to getTypedef Typedef::typedef');
+        throw new Exception('never get to getTry TryClass::try');
     }
 
     /**
      * @return int
      */
-    public static function sampleTypedef(): int {
-        return 31; /*31:typedef*/
+    public static function sampleTry(): int {
+        return 31; /*31:try*/
     }
 
     /**
@@ -50054,7 +50256,7 @@ class Typedef {
      * @return bool
      */
     public function validate(): bool {
-        return Typedef::validateTypedef($this->typedef);
+        return TryClass::validateTry($this->try);
     }
 
     /**
@@ -50063,44 +50265,44 @@ class Typedef {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'typedef'} = $this->toTypedef();
+        $out->{'try'} = $this->toTry();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Typedef
+     * @return TryClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): Typedef {
-        if (!property_exists($obj, 'typedef')) {
+    public static function from(stdClass $obj): TryClass {
+        if (!property_exists($obj, 'try')) {
             throw new Exception("Missing required property");
         }
-        return new Typedef(
-         Typedef::fromTypedef($obj->{'typedef'})
+        return new TryClass(
+         TryClass::fromTry($obj->{'try'})
         );
     }
 
     /**
-     * @return Typedef
+     * @return TryClass
      */
-    public static function sample(): Typedef {
-        return new Typedef(
-         Typedef::sampleTypedef()
+    public static function sample(): TryClass {
+        return new TryClass(
+         TryClass::sampleTry()
         );
     }
 }
 
-// This is an autogenerated file:Typeid
+// This is an autogenerated file:Type
 
-class Typeid {
-    private int $typeid; // json:typeid Required
+class Type {
+    private int $type; // json:Type Required
 
     /**
-     * @param int $typeid
+     * @param int $type
      */
-    public function __construct(int $typeid) {
-        $this->typeid = $typeid;
+    public function __construct(int $type) {
+        $this->type = $type;
     }
 
     /**
@@ -50108,7 +50310,7 @@ class Typeid {
      * @throws Exception
      * @return int
      */
-    public static function fromTypeid(int $value): int {
+    public static function fromType(int $value): int {
         return $value; /*int*/
     }
 
@@ -50116,11 +50318,11 @@ class Typeid {
      * @throws Exception
      * @return int
      */
-    public function toTypeid(): int {
-        if (Typeid::validateTypeid($this->typeid))  {
-            return $this->typeid; /*int*/
+    public function toType(): int {
+        if (Type::validateType($this->type))  {
+            return $this->type; /*int*/
         }
-        throw new Exception('never get to this Typeid::typeid');
+        throw new Exception('never get to this Type::type');
     }
 
     /**
@@ -50128,7 +50330,7 @@ class Typeid {
      * @return bool
      * @throws Exception
      */
-    public static function validateTypeid(int $value): bool {
+    public static function validateType(int $value): bool {
         return true;
     }
 
@@ -50136,18 +50338,18 @@ class Typeid {
      * @throws Exception
      * @return int
      */
-    public function getTypeid(): int {
-        if (Typeid::validateTypeid($this->typeid))  {
-            return $this->typeid;
+    public function getType(): int {
+        if (Type::validateType($this->type))  {
+            return $this->type;
         }
-        throw new Exception('never get to getTypeid Typeid::typeid');
+        throw new Exception('never get to getType Type::type');
     }
 
     /**
      * @return int
      */
-    public static function sampleTypeid(): int {
-        return 31; /*31:typeid*/
+    public static function sampleType(): int {
+        return 31; /*31:type*/
     }
 
     /**
@@ -50155,7 +50357,7 @@ class Typeid {
      * @return bool
      */
     public function validate(): bool {
-        return Typeid::validateTypeid($this->typeid);
+        return Type::validateType($this->type);
     }
 
     /**
@@ -50164,44 +50366,44 @@ class Typeid {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'typeid'} = $this->toTypeid();
+        $out->{'Type'} = $this->toType();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Typeid
+     * @return Type
      * @throws Exception
      */
-    public static function from(stdClass $obj): Typeid {
-        if (!property_exists($obj, 'typeid')) {
+    public static function from(stdClass $obj): Type {
+        if (!property_exists($obj, 'Type')) {
             throw new Exception("Missing required property");
         }
-        return new Typeid(
-         Typeid::fromTypeid($obj->{'typeid'})
+        return new Type(
+         Type::fromType($obj->{'Type'})
         );
     }
 
     /**
-     * @return Typeid
+     * @return Type
      */
-    public static function sample(): Typeid {
-        return new Typeid(
-         Typeid::sampleTypeid()
+    public static function sample(): Type {
+        return new Type(
+         Type::sampleType()
         );
     }
 }
 
-// This is an autogenerated file:Typename
+// This is an autogenerated file:Typealias
 
-class Typename {
-    private int $typename; // json:typename Required
+class Typealias {
+    private int $typealias; // json:typealias Required
 
     /**
-     * @param int $typename
+     * @param int $typealias
      */
-    public function __construct(int $typename) {
-        $this->typename = $typename;
+    public function __construct(int $typealias) {
+        $this->typealias = $typealias;
     }
 
     /**
@@ -50209,7 +50411,7 @@ class Typename {
      * @throws Exception
      * @return int
      */
-    public static function fromTypename(int $value): int {
+    public static function fromTypealias(int $value): int {
         return $value; /*int*/
     }
 
@@ -50217,11 +50419,11 @@ class Typename {
      * @throws Exception
      * @return int
      */
-    public function toTypename(): int {
-        if (Typename::validateTypename($this->typename))  {
-            return $this->typename; /*int*/
+    public function toTypealias(): int {
+        if (Typealias::validateTypealias($this->typealias))  {
+            return $this->typealias; /*int*/
         }
-        throw new Exception('never get to this Typename::typename');
+        throw new Exception('never get to this Typealias::typealias');
     }
 
     /**
@@ -50229,7 +50431,7 @@ class Typename {
      * @return bool
      * @throws Exception
      */
-    public static function validateTypename(int $value): bool {
+    public static function validateTypealias(int $value): bool {
         return true;
     }
 
@@ -50237,18 +50439,18 @@ class Typename {
      * @throws Exception
      * @return int
      */
-    public function getTypename(): int {
-        if (Typename::validateTypename($this->typename))  {
-            return $this->typename;
+    public function getTypealias(): int {
+        if (Typealias::validateTypealias($this->typealias))  {
+            return $this->typealias;
         }
-        throw new Exception('never get to getTypename Typename::typename');
+        throw new Exception('never get to getTypealias Typealias::typealias');
     }
 
     /**
      * @return int
      */
-    public static function sampleTypename(): int {
-        return 31; /*31:typename*/
+    public static function sampleTypealias(): int {
+        return 31; /*31:typealias*/
     }
 
     /**
@@ -50256,7 +50458,7 @@ class Typename {
      * @return bool
      */
     public function validate(): bool {
-        return Typename::validateTypename($this->typename);
+        return Typealias::validateTypealias($this->typealias);
     }
 
     /**
@@ -50265,44 +50467,44 @@ class Typename {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'typename'} = $this->toTypename();
+        $out->{'typealias'} = $this->toTypealias();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Typename
+     * @return Typealias
      * @throws Exception
      */
-    public static function from(stdClass $obj): Typename {
-        if (!property_exists($obj, 'typename')) {
+    public static function from(stdClass $obj): Typealias {
+        if (!property_exists($obj, 'typealias')) {
             throw new Exception("Missing required property");
         }
-        return new Typename(
-         Typename::fromTypename($obj->{'typename'})
+        return new Typealias(
+         Typealias::fromTypealias($obj->{'typealias'})
         );
     }
 
     /**
-     * @return Typename
+     * @return Typealias
      */
-    public static function sample(): Typename {
-        return new Typename(
-         Typename::sampleTypename()
+    public static function sample(): Typealias {
+        return new Typealias(
+         Typealias::sampleTypealias()
         );
     }
 }
 
-// This is an autogenerated file:Typeof
+// This is an autogenerated file:Typedef
 
-class Typeof {
-    private int $typeof; // json:typeof Required
+class Typedef {
+    private int $typedef; // json:typedef Required
 
     /**
-     * @param int $typeof
+     * @param int $typedef
      */
-    public function __construct(int $typeof) {
-        $this->typeof = $typeof;
+    public function __construct(int $typedef) {
+        $this->typedef = $typedef;
     }
 
     /**
@@ -50310,7 +50512,7 @@ class Typeof {
      * @throws Exception
      * @return int
      */
-    public static function fromTypeof(int $value): int {
+    public static function fromTypedef(int $value): int {
         return $value; /*int*/
     }
 
@@ -50318,11 +50520,11 @@ class Typeof {
      * @throws Exception
      * @return int
      */
-    public function toTypeof(): int {
-        if (Typeof::validateTypeof($this->typeof))  {
-            return $this->typeof; /*int*/
+    public function toTypedef(): int {
+        if (Typedef::validateTypedef($this->typedef))  {
+            return $this->typedef; /*int*/
         }
-        throw new Exception('never get to this Typeof::typeof');
+        throw new Exception('never get to this Typedef::typedef');
     }
 
     /**
@@ -50330,7 +50532,7 @@ class Typeof {
      * @return bool
      * @throws Exception
      */
-    public static function validateTypeof(int $value): bool {
+    public static function validateTypedef(int $value): bool {
         return true;
     }
 
@@ -50338,18 +50540,18 @@ class Typeof {
      * @throws Exception
      * @return int
      */
-    public function getTypeof(): int {
-        if (Typeof::validateTypeof($this->typeof))  {
-            return $this->typeof;
+    public function getTypedef(): int {
+        if (Typedef::validateTypedef($this->typedef))  {
+            return $this->typedef;
         }
-        throw new Exception('never get to getTypeof Typeof::typeof');
+        throw new Exception('never get to getTypedef Typedef::typedef');
     }
 
     /**
      * @return int
      */
-    public static function sampleTypeof(): int {
-        return 31; /*31:typeof*/
+    public static function sampleTypedef(): int {
+        return 31; /*31:typedef*/
     }
 
     /**
@@ -50357,7 +50559,7 @@ class Typeof {
      * @return bool
      */
     public function validate(): bool {
-        return Typeof::validateTypeof($this->typeof);
+        return Typedef::validateTypedef($this->typedef);
     }
 
     /**
@@ -50366,44 +50568,44 @@ class Typeof {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'typeof'} = $this->toTypeof();
+        $out->{'typedef'} = $this->toTypedef();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Typeof
+     * @return Typedef
      * @throws Exception
      */
-    public static function from(stdClass $obj): Typeof {
-        if (!property_exists($obj, 'typeof')) {
+    public static function from(stdClass $obj): Typedef {
+        if (!property_exists($obj, 'typedef')) {
             throw new Exception("Missing required property");
         }
-        return new Typeof(
-         Typeof::fromTypeof($obj->{'typeof'})
+        return new Typedef(
+         Typedef::fromTypedef($obj->{'typedef'})
         );
     }
 
     /**
-     * @return Typeof
+     * @return Typedef
      */
-    public static function sample(): Typeof {
-        return new Typeof(
-         Typeof::sampleTypeof()
+    public static function sample(): Typedef {
+        return new Typedef(
+         Typedef::sampleTypedef()
         );
     }
 }
 
-// This is an autogenerated file:Uint
+// This is an autogenerated file:Typeid
 
-class Uint {
-    private int $uint; // json:uint Required
+class Typeid {
+    private int $typeid; // json:typeid Required
 
     /**
-     * @param int $uint
+     * @param int $typeid
      */
-    public function __construct(int $uint) {
-        $this->uint = $uint;
+    public function __construct(int $typeid) {
+        $this->typeid = $typeid;
     }
 
     /**
@@ -50411,7 +50613,7 @@ class Uint {
      * @throws Exception
      * @return int
      */
-    public static function fromUint(int $value): int {
+    public static function fromTypeid(int $value): int {
         return $value; /*int*/
     }
 
@@ -50419,11 +50621,11 @@ class Uint {
      * @throws Exception
      * @return int
      */
-    public function toUint(): int {
-        if (Uint::validateUint($this->uint))  {
-            return $this->uint; /*int*/
+    public function toTypeid(): int {
+        if (Typeid::validateTypeid($this->typeid))  {
+            return $this->typeid; /*int*/
         }
-        throw new Exception('never get to this Uint::uint');
+        throw new Exception('never get to this Typeid::typeid');
     }
 
     /**
@@ -50431,7 +50633,7 @@ class Uint {
      * @return bool
      * @throws Exception
      */
-    public static function validateUint(int $value): bool {
+    public static function validateTypeid(int $value): bool {
         return true;
     }
 
@@ -50439,18 +50641,18 @@ class Uint {
      * @throws Exception
      * @return int
      */
-    public function getUint(): int {
-        if (Uint::validateUint($this->uint))  {
-            return $this->uint;
+    public function getTypeid(): int {
+        if (Typeid::validateTypeid($this->typeid))  {
+            return $this->typeid;
         }
-        throw new Exception('never get to getUint Uint::uint');
+        throw new Exception('never get to getTypeid Typeid::typeid');
     }
 
     /**
      * @return int
      */
-    public static function sampleUint(): int {
-        return 31; /*31:uint*/
+    public static function sampleTypeid(): int {
+        return 31; /*31:typeid*/
     }
 
     /**
@@ -50458,7 +50660,7 @@ class Uint {
      * @return bool
      */
     public function validate(): bool {
-        return Uint::validateUint($this->uint);
+        return Typeid::validateTypeid($this->typeid);
     }
 
     /**
@@ -50467,44 +50669,44 @@ class Uint {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'uint'} = $this->toUint();
+        $out->{'typeid'} = $this->toTypeid();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Uint
+     * @return Typeid
      * @throws Exception
      */
-    public static function from(stdClass $obj): Uint {
-        if (!property_exists($obj, 'uint')) {
+    public static function from(stdClass $obj): Typeid {
+        if (!property_exists($obj, 'typeid')) {
             throw new Exception("Missing required property");
         }
-        return new Uint(
-         Uint::fromUint($obj->{'uint'})
+        return new Typeid(
+         Typeid::fromTypeid($obj->{'typeid'})
         );
     }
 
     /**
-     * @return Uint
+     * @return Typeid
      */
-    public static function sample(): Uint {
-        return new Uint(
-         Uint::sampleUint()
+    public static function sample(): Typeid {
+        return new Typeid(
+         Typeid::sampleTypeid()
         );
     }
 }
 
-// This is an autogenerated file:Ulong
+// This is an autogenerated file:Typename
 
-class Ulong {
-    private int $ulong; // json:ulong Required
+class Typename {
+    private int $typename; // json:typename Required
 
     /**
-     * @param int $ulong
+     * @param int $typename
      */
-    public function __construct(int $ulong) {
-        $this->ulong = $ulong;
+    public function __construct(int $typename) {
+        $this->typename = $typename;
     }
 
     /**
@@ -50512,7 +50714,7 @@ class Ulong {
      * @throws Exception
      * @return int
      */
-    public static function fromUlong(int $value): int {
+    public static function fromTypename(int $value): int {
         return $value; /*int*/
     }
 
@@ -50520,11 +50722,11 @@ class Ulong {
      * @throws Exception
      * @return int
      */
-    public function toUlong(): int {
-        if (Ulong::validateUlong($this->ulong))  {
-            return $this->ulong; /*int*/
+    public function toTypename(): int {
+        if (Typename::validateTypename($this->typename))  {
+            return $this->typename; /*int*/
         }
-        throw new Exception('never get to this Ulong::ulong');
+        throw new Exception('never get to this Typename::typename');
     }
 
     /**
@@ -50532,7 +50734,7 @@ class Ulong {
      * @return bool
      * @throws Exception
      */
-    public static function validateUlong(int $value): bool {
+    public static function validateTypename(int $value): bool {
         return true;
     }
 
@@ -50540,18 +50742,18 @@ class Ulong {
      * @throws Exception
      * @return int
      */
-    public function getUlong(): int {
-        if (Ulong::validateUlong($this->ulong))  {
-            return $this->ulong;
+    public function getTypename(): int {
+        if (Typename::validateTypename($this->typename))  {
+            return $this->typename;
         }
-        throw new Exception('never get to getUlong Ulong::ulong');
+        throw new Exception('never get to getTypename Typename::typename');
     }
 
     /**
      * @return int
      */
-    public static function sampleUlong(): int {
-        return 31; /*31:ulong*/
+    public static function sampleTypename(): int {
+        return 31; /*31:typename*/
     }
 
     /**
@@ -50559,7 +50761,7 @@ class Ulong {
      * @return bool
      */
     public function validate(): bool {
-        return Ulong::validateUlong($this->ulong);
+        return Typename::validateTypename($this->typename);
     }
 
     /**
@@ -50568,44 +50770,44 @@ class Ulong {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'ulong'} = $this->toUlong();
+        $out->{'typename'} = $this->toTypename();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Ulong
+     * @return Typename
      * @throws Exception
      */
-    public static function from(stdClass $obj): Ulong {
-        if (!property_exists($obj, 'ulong')) {
+    public static function from(stdClass $obj): Typename {
+        if (!property_exists($obj, 'typename')) {
             throw new Exception("Missing required property");
         }
-        return new Ulong(
-         Ulong::fromUlong($obj->{'ulong'})
+        return new Typename(
+         Typename::fromTypename($obj->{'typename'})
         );
     }
 
     /**
-     * @return Ulong
+     * @return Typename
      */
-    public static function sample(): Ulong {
-        return new Ulong(
-         Ulong::sampleUlong()
+    public static function sample(): Typename {
+        return new Typename(
+         Typename::sampleTypename()
         );
     }
 }
 
-// This is an autogenerated file:Unchecked
+// This is an autogenerated file:Typeof
 
-class Unchecked {
-    private int $unchecked; // json:unchecked Required
+class Typeof {
+    private int $typeof; // json:typeof Required
 
     /**
-     * @param int $unchecked
+     * @param int $typeof
      */
-    public function __construct(int $unchecked) {
-        $this->unchecked = $unchecked;
+    public function __construct(int $typeof) {
+        $this->typeof = $typeof;
     }
 
     /**
@@ -50613,7 +50815,7 @@ class Unchecked {
      * @throws Exception
      * @return int
      */
-    public static function fromUnchecked(int $value): int {
+    public static function fromTypeof(int $value): int {
         return $value; /*int*/
     }
 
@@ -50621,11 +50823,11 @@ class Unchecked {
      * @throws Exception
      * @return int
      */
-    public function toUnchecked(): int {
-        if (Unchecked::validateUnchecked($this->unchecked))  {
-            return $this->unchecked; /*int*/
+    public function toTypeof(): int {
+        if (Typeof::validateTypeof($this->typeof))  {
+            return $this->typeof; /*int*/
         }
-        throw new Exception('never get to this Unchecked::unchecked');
+        throw new Exception('never get to this Typeof::typeof');
     }
 
     /**
@@ -50633,7 +50835,7 @@ class Unchecked {
      * @return bool
      * @throws Exception
      */
-    public static function validateUnchecked(int $value): bool {
+    public static function validateTypeof(int $value): bool {
         return true;
     }
 
@@ -50641,18 +50843,18 @@ class Unchecked {
      * @throws Exception
      * @return int
      */
-    public function getUnchecked(): int {
-        if (Unchecked::validateUnchecked($this->unchecked))  {
-            return $this->unchecked;
+    public function getTypeof(): int {
+        if (Typeof::validateTypeof($this->typeof))  {
+            return $this->typeof;
         }
-        throw new Exception('never get to getUnchecked Unchecked::unchecked');
+        throw new Exception('never get to getTypeof Typeof::typeof');
     }
 
     /**
      * @return int
      */
-    public static function sampleUnchecked(): int {
-        return 31; /*31:unchecked*/
+    public static function sampleTypeof(): int {
+        return 31; /*31:typeof*/
     }
 
     /**
@@ -50660,7 +50862,7 @@ class Unchecked {
      * @return bool
      */
     public function validate(): bool {
-        return Unchecked::validateUnchecked($this->unchecked);
+        return Typeof::validateTypeof($this->typeof);
     }
 
     /**
@@ -50669,44 +50871,44 @@ class Unchecked {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'unchecked'} = $this->toUnchecked();
+        $out->{'typeof'} = $this->toTypeof();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Unchecked
+     * @return Typeof
      * @throws Exception
      */
-    public static function from(stdClass $obj): Unchecked {
-        if (!property_exists($obj, 'unchecked')) {
+    public static function from(stdClass $obj): Typeof {
+        if (!property_exists($obj, 'typeof')) {
             throw new Exception("Missing required property");
         }
-        return new Unchecked(
-         Unchecked::fromUnchecked($obj->{'unchecked'})
+        return new Typeof(
+         Typeof::fromTypeof($obj->{'typeof'})
         );
     }
 
     /**
-     * @return Unchecked
+     * @return Typeof
      */
-    public static function sample(): Unchecked {
-        return new Unchecked(
-         Unchecked::sampleUnchecked()
+    public static function sample(): Typeof {
+        return new Typeof(
+         Typeof::sampleTypeof()
         );
     }
 }
 
-// This is an autogenerated file:Undefined
+// This is an autogenerated file:Uint
 
-class Undefined {
-    private int $undefined; // json:undefined Required
+class Uint {
+    private int $uint; // json:uint Required
 
     /**
-     * @param int $undefined
+     * @param int $uint
      */
-    public function __construct(int $undefined) {
-        $this->undefined = $undefined;
+    public function __construct(int $uint) {
+        $this->uint = $uint;
     }
 
     /**
@@ -50714,7 +50916,7 @@ class Undefined {
      * @throws Exception
      * @return int
      */
-    public static function fromUndefined(int $value): int {
+    public static function fromUint(int $value): int {
         return $value; /*int*/
     }
 
@@ -50722,11 +50924,11 @@ class Undefined {
      * @throws Exception
      * @return int
      */
-    public function toUndefined(): int {
-        if (Undefined::validateUndefined($this->undefined))  {
-            return $this->undefined; /*int*/
+    public function toUint(): int {
+        if (Uint::validateUint($this->uint))  {
+            return $this->uint; /*int*/
         }
-        throw new Exception('never get to this Undefined::undefined');
+        throw new Exception('never get to this Uint::uint');
     }
 
     /**
@@ -50734,7 +50936,7 @@ class Undefined {
      * @return bool
      * @throws Exception
      */
-    public static function validateUndefined(int $value): bool {
+    public static function validateUint(int $value): bool {
         return true;
     }
 
@@ -50742,18 +50944,18 @@ class Undefined {
      * @throws Exception
      * @return int
      */
-    public function getUndefined(): int {
-        if (Undefined::validateUndefined($this->undefined))  {
-            return $this->undefined;
+    public function getUint(): int {
+        if (Uint::validateUint($this->uint))  {
+            return $this->uint;
         }
-        throw new Exception('never get to getUndefined Undefined::undefined');
+        throw new Exception('never get to getUint Uint::uint');
     }
 
     /**
      * @return int
      */
-    public static function sampleUndefined(): int {
-        return 31; /*31:undefined*/
+    public static function sampleUint(): int {
+        return 31; /*31:uint*/
     }
 
     /**
@@ -50761,7 +50963,7 @@ class Undefined {
      * @return bool
      */
     public function validate(): bool {
-        return Undefined::validateUndefined($this->undefined);
+        return Uint::validateUint($this->uint);
     }
 
     /**
@@ -50770,44 +50972,44 @@ class Undefined {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'undefined'} = $this->toUndefined();
+        $out->{'uint'} = $this->toUint();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Undefined
+     * @return Uint
      * @throws Exception
      */
-    public static function from(stdClass $obj): Undefined {
-        if (!property_exists($obj, 'undefined')) {
+    public static function from(stdClass $obj): Uint {
+        if (!property_exists($obj, 'uint')) {
             throw new Exception("Missing required property");
         }
-        return new Undefined(
-         Undefined::fromUndefined($obj->{'undefined'})
+        return new Uint(
+         Uint::fromUint($obj->{'uint'})
         );
     }
 
     /**
-     * @return Undefined
+     * @return Uint
      */
-    public static function sample(): Undefined {
-        return new Undefined(
-         Undefined::sampleUndefined()
-        );
-    }
+    public static function sample(): Uint {
+        return new Uint(
+         Uint::sampleUint()
+        );
+    }
 }
 
-// This is an autogenerated file:Union
+// This is an autogenerated file:Ulong
 
-class Union {
-    private int $union; // json:union Required
+class Ulong {
+    private int $ulong; // json:ulong Required
 
     /**
-     * @param int $union
+     * @param int $ulong
      */
-    public function __construct(int $union) {
-        $this->union = $union;
+    public function __construct(int $ulong) {
+        $this->ulong = $ulong;
     }
 
     /**
@@ -50815,7 +51017,7 @@ class Union {
      * @throws Exception
      * @return int
      */
-    public static function fromUnion(int $value): int {
+    public static function fromUlong(int $value): int {
         return $value; /*int*/
     }
 
@@ -50823,11 +51025,11 @@ class Union {
      * @throws Exception
      * @return int
      */
-    public function toUnion(): int {
-        if (Union::validateUnion($this->union))  {
-            return $this->union; /*int*/
+    public function toUlong(): int {
+        if (Ulong::validateUlong($this->ulong))  {
+            return $this->ulong; /*int*/
         }
-        throw new Exception('never get to this Union::union');
+        throw new Exception('never get to this Ulong::ulong');
     }
 
     /**
@@ -50835,7 +51037,7 @@ class Union {
      * @return bool
      * @throws Exception
      */
-    public static function validateUnion(int $value): bool {
+    public static function validateUlong(int $value): bool {
         return true;
     }
 
@@ -50843,18 +51045,18 @@ class Union {
      * @throws Exception
      * @return int
      */
-    public function getUnion(): int {
-        if (Union::validateUnion($this->union))  {
-            return $this->union;
+    public function getUlong(): int {
+        if (Ulong::validateUlong($this->ulong))  {
+            return $this->ulong;
         }
-        throw new Exception('never get to getUnion Union::union');
+        throw new Exception('never get to getUlong Ulong::ulong');
     }
 
     /**
      * @return int
      */
-    public static function sampleUnion(): int {
-        return 31; /*31:union*/
+    public static function sampleUlong(): int {
+        return 31; /*31:ulong*/
     }
 
     /**
@@ -50862,7 +51064,7 @@ class Union {
      * @return bool
      */
     public function validate(): bool {
-        return Union::validateUnion($this->union);
+        return Ulong::validateUlong($this->ulong);
     }
 
     /**
@@ -50871,44 +51073,44 @@ class Union {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'union'} = $this->toUnion();
+        $out->{'ulong'} = $this->toUlong();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Union
+     * @return Ulong
      * @throws Exception
      */
-    public static function from(stdClass $obj): Union {
-        if (!property_exists($obj, 'union')) {
+    public static function from(stdClass $obj): Ulong {
+        if (!property_exists($obj, 'ulong')) {
             throw new Exception("Missing required property");
         }
-        return new Union(
-         Union::fromUnion($obj->{'union'})
+        return new Ulong(
+         Ulong::fromUlong($obj->{'ulong'})
         );
     }
 
     /**
-     * @return Union
+     * @return Ulong
      */
-    public static function sample(): Union {
-        return new Union(
-         Union::sampleUnion()
+    public static function sample(): Ulong {
+        return new Ulong(
+         Ulong::sampleUlong()
         );
     }
 }
 
-// This is an autogenerated file:Unowned
+// This is an autogenerated file:Unchecked
 
-class Unowned {
-    private int $unowned; // json:unowned Required
+class Unchecked {
+    private int $unchecked; // json:unchecked Required
 
     /**
-     * @param int $unowned
+     * @param int $unchecked
      */
-    public function __construct(int $unowned) {
-        $this->unowned = $unowned;
+    public function __construct(int $unchecked) {
+        $this->unchecked = $unchecked;
     }
 
     /**
@@ -50916,7 +51118,7 @@ class Unowned {
      * @throws Exception
      * @return int
      */
-    public static function fromUnowned(int $value): int {
+    public static function fromUnchecked(int $value): int {
         return $value; /*int*/
     }
 
@@ -50924,11 +51126,11 @@ class Unowned {
      * @throws Exception
      * @return int
      */
-    public function toUnowned(): int {
-        if (Unowned::validateUnowned($this->unowned))  {
-            return $this->unowned; /*int*/
+    public function toUnchecked(): int {
+        if (Unchecked::validateUnchecked($this->unchecked))  {
+            return $this->unchecked; /*int*/
         }
-        throw new Exception('never get to this Unowned::unowned');
+        throw new Exception('never get to this Unchecked::unchecked');
     }
 
     /**
@@ -50936,7 +51138,7 @@ class Unowned {
      * @return bool
      * @throws Exception
      */
-    public static function validateUnowned(int $value): bool {
+    public static function validateUnchecked(int $value): bool {
         return true;
     }
 
@@ -50944,18 +51146,18 @@ class Unowned {
      * @throws Exception
      * @return int
      */
-    public function getUnowned(): int {
-        if (Unowned::validateUnowned($this->unowned))  {
-            return $this->unowned;
+    public function getUnchecked(): int {
+        if (Unchecked::validateUnchecked($this->unchecked))  {
+            return $this->unchecked;
         }
-        throw new Exception('never get to getUnowned Unowned::unowned');
+        throw new Exception('never get to getUnchecked Unchecked::unchecked');
     }
 
     /**
      * @return int
      */
-    public static function sampleUnowned(): int {
-        return 31; /*31:unowned*/
+    public static function sampleUnchecked(): int {
+        return 31; /*31:unchecked*/
     }
 
     /**
@@ -50963,7 +51165,7 @@ class Unowned {
      * @return bool
      */
     public function validate(): bool {
-        return Unowned::validateUnowned($this->unowned);
+        return Unchecked::validateUnchecked($this->unchecked);
     }
 
     /**
@@ -50972,44 +51174,44 @@ class Unowned {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'unowned'} = $this->toUnowned();
+        $out->{'unchecked'} = $this->toUnchecked();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Unowned
+     * @return Unchecked
      * @throws Exception
      */
-    public static function from(stdClass $obj): Unowned {
-        if (!property_exists($obj, 'unowned')) {
+    public static function from(stdClass $obj): Unchecked {
+        if (!property_exists($obj, 'unchecked')) {
             throw new Exception("Missing required property");
         }
-        return new Unowned(
-         Unowned::fromUnowned($obj->{'unowned'})
+        return new Unchecked(
+         Unchecked::fromUnchecked($obj->{'unchecked'})
         );
     }
 
     /**
-     * @return Unowned
+     * @return Unchecked
      */
-    public static function sample(): Unowned {
-        return new Unowned(
-         Unowned::sampleUnowned()
+    public static function sample(): Unchecked {
+        return new Unchecked(
+         Unchecked::sampleUnchecked()
         );
     }
 }
 
-// This is an autogenerated file:Unsafe
+// This is an autogenerated file:Undefined
 
-class Unsafe {
-    private int $unsafe; // json:unsafe Required
+class Undefined {
+    private int $undefined; // json:undefined Required
 
     /**
-     * @param int $unsafe
+     * @param int $undefined
      */
-    public function __construct(int $unsafe) {
-        $this->unsafe = $unsafe;
+    public function __construct(int $undefined) {
+        $this->undefined = $undefined;
     }
 
     /**
@@ -51017,7 +51219,7 @@ class Unsafe {
      * @throws Exception
      * @return int
      */
-    public static function fromUnsafe(int $value): int {
+    public static function fromUndefined(int $value): int {
         return $value; /*int*/
     }
 
@@ -51025,11 +51227,11 @@ class Unsafe {
      * @throws Exception
      * @return int
      */
-    public function toUnsafe(): int {
-        if (Unsafe::validateUnsafe($this->unsafe))  {
-            return $this->unsafe; /*int*/
+    public function toUndefined(): int {
+        if (Undefined::validateUndefined($this->undefined))  {
+            return $this->undefined; /*int*/
         }
-        throw new Exception('never get to this Unsafe::unsafe');
+        throw new Exception('never get to this Undefined::undefined');
     }
 
     /**
@@ -51037,7 +51239,7 @@ class Unsafe {
      * @return bool
      * @throws Exception
      */
-    public static function validateUnsafe(int $value): bool {
+    public static function validateUndefined(int $value): bool {
         return true;
     }
 
@@ -51045,18 +51247,18 @@ class Unsafe {
      * @throws Exception
      * @return int
      */
-    public function getUnsafe(): int {
-        if (Unsafe::validateUnsafe($this->unsafe))  {
-            return $this->unsafe;
+    public function getUndefined(): int {
+        if (Undefined::validateUndefined($this->undefined))  {
+            return $this->undefined;
         }
-        throw new Exception('never get to getUnsafe Unsafe::unsafe');
+        throw new Exception('never get to getUndefined Undefined::undefined');
     }
 
     /**
      * @return int
      */
-    public static function sampleUnsafe(): int {
-        return 31; /*31:unsafe*/
+    public static function sampleUndefined(): int {
+        return 31; /*31:undefined*/
     }
 
     /**
@@ -51064,7 +51266,7 @@ class Unsafe {
      * @return bool
      */
     public function validate(): bool {
-        return Unsafe::validateUnsafe($this->unsafe);
+        return Undefined::validateUndefined($this->undefined);
     }
 
     /**
@@ -51073,44 +51275,44 @@ class Unsafe {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'unsafe'} = $this->toUnsafe();
+        $out->{'undefined'} = $this->toUndefined();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Unsafe
+     * @return Undefined
      * @throws Exception
      */
-    public static function from(stdClass $obj): Unsafe {
-        if (!property_exists($obj, 'unsafe')) {
+    public static function from(stdClass $obj): Undefined {
+        if (!property_exists($obj, 'undefined')) {
             throw new Exception("Missing required property");
         }
-        return new Unsafe(
-         Unsafe::fromUnsafe($obj->{'unsafe'})
+        return new Undefined(
+         Undefined::fromUndefined($obj->{'undefined'})
         );
     }
 
     /**
-     * @return Unsafe
+     * @return Undefined
      */
-    public static function sample(): Unsafe {
-        return new Unsafe(
-         Unsafe::sampleUnsafe()
+    public static function sample(): Undefined {
+        return new Undefined(
+         Undefined::sampleUndefined()
         );
     }
 }
 
-// This is an autogenerated file:Unsigned
+// This is an autogenerated file:Union
 
-class Unsigned {
-    private int $unsigned; // json:unsigned Required
+class Union {
+    private int $union; // json:union Required
 
     /**
-     * @param int $unsigned
+     * @param int $union
      */
-    public function __construct(int $unsigned) {
-        $this->unsigned = $unsigned;
+    public function __construct(int $union) {
+        $this->union = $union;
     }
 
     /**
@@ -51118,7 +51320,7 @@ class Unsigned {
      * @throws Exception
      * @return int
      */
-    public static function fromUnsigned(int $value): int {
+    public static function fromUnion(int $value): int {
         return $value; /*int*/
     }
 
@@ -51126,11 +51328,11 @@ class Unsigned {
      * @throws Exception
      * @return int
      */
-    public function toUnsigned(): int {
-        if (Unsigned::validateUnsigned($this->unsigned))  {
-            return $this->unsigned; /*int*/
+    public function toUnion(): int {
+        if (Union::validateUnion($this->union))  {
+            return $this->union; /*int*/
         }
-        throw new Exception('never get to this Unsigned::unsigned');
+        throw new Exception('never get to this Union::union');
     }
 
     /**
@@ -51138,7 +51340,7 @@ class Unsigned {
      * @return bool
      * @throws Exception
      */
-    public static function validateUnsigned(int $value): bool {
+    public static function validateUnion(int $value): bool {
         return true;
     }
 
@@ -51146,18 +51348,18 @@ class Unsigned {
      * @throws Exception
      * @return int
      */
-    public function getUnsigned(): int {
-        if (Unsigned::validateUnsigned($this->unsigned))  {
-            return $this->unsigned;
+    public function getUnion(): int {
+        if (Union::validateUnion($this->union))  {
+            return $this->union;
         }
-        throw new Exception('never get to getUnsigned Unsigned::unsigned');
+        throw new Exception('never get to getUnion Union::union');
     }
 
     /**
      * @return int
      */
-    public static function sampleUnsigned(): int {
-        return 31; /*31:unsigned*/
+    public static function sampleUnion(): int {
+        return 31; /*31:union*/
     }
 
     /**
@@ -51165,7 +51367,7 @@ class Unsigned {
      * @return bool
      */
     public function validate(): bool {
-        return Unsigned::validateUnsigned($this->unsigned);
+        return Union::validateUnion($this->union);
     }
 
     /**
@@ -51174,44 +51376,44 @@ class Unsigned {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'unsigned'} = $this->toUnsigned();
+        $out->{'union'} = $this->toUnion();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Unsigned
+     * @return Union
      * @throws Exception
      */
-    public static function from(stdClass $obj): Unsigned {
-        if (!property_exists($obj, 'unsigned')) {
+    public static function from(stdClass $obj): Union {
+        if (!property_exists($obj, 'union')) {
             throw new Exception("Missing required property");
         }
-        return new Unsigned(
-         Unsigned::fromUnsigned($obj->{'unsigned'})
+        return new Union(
+         Union::fromUnion($obj->{'union'})
         );
     }
 
     /**
-     * @return Unsigned
+     * @return Union
      */
-    public static function sample(): Unsigned {
-        return new Unsigned(
-         Unsigned::sampleUnsigned()
+    public static function sample(): Union {
+        return new Union(
+         Union::sampleUnion()
         );
     }
 }
 
-// This is an autogenerated file:Ushort
+// This is an autogenerated file:Unowned
 
-class Ushort {
-    private int $ushort; // json:ushort Required
+class Unowned {
+    private int $unowned; // json:unowned Required
 
     /**
-     * @param int $ushort
+     * @param int $unowned
      */
-    public function __construct(int $ushort) {
-        $this->ushort = $ushort;
+    public function __construct(int $unowned) {
+        $this->unowned = $unowned;
     }
 
     /**
@@ -51219,7 +51421,7 @@ class Ushort {
      * @throws Exception
      * @return int
      */
-    public static function fromUshort(int $value): int {
+    public static function fromUnowned(int $value): int {
         return $value; /*int*/
     }
 
@@ -51227,11 +51429,11 @@ class Ushort {
      * @throws Exception
      * @return int
      */
-    public function toUshort(): int {
-        if (Ushort::validateUshort($this->ushort))  {
-            return $this->ushort; /*int*/
-        }
-        throw new Exception('never get to this Ushort::ushort');
+    public function toUnowned(): int {
+        if (Unowned::validateUnowned($this->unowned))  {
+            return $this->unowned; /*int*/
+        }
+        throw new Exception('never get to this Unowned::unowned');
     }
 
     /**
@@ -51239,7 +51441,7 @@ class Ushort {
      * @return bool
      * @throws Exception
      */
-    public static function validateUshort(int $value): bool {
+    public static function validateUnowned(int $value): bool {
         return true;
     }
 
@@ -51247,18 +51449,18 @@ class Ushort {
      * @throws Exception
      * @return int
      */
-    public function getUshort(): int {
-        if (Ushort::validateUshort($this->ushort))  {
-            return $this->ushort;
+    public function getUnowned(): int {
+        if (Unowned::validateUnowned($this->unowned))  {
+            return $this->unowned;
         }
-        throw new Exception('never get to getUshort Ushort::ushort');
+        throw new Exception('never get to getUnowned Unowned::unowned');
     }
 
     /**
      * @return int
      */
-    public static function sampleUshort(): int {
-        return 31; /*31:ushort*/
+    public static function sampleUnowned(): int {
+        return 31; /*31:unowned*/
     }
 
     /**
@@ -51266,7 +51468,7 @@ class Ushort {
      * @return bool
      */
     public function validate(): bool {
-        return Ushort::validateUshort($this->ushort);
+        return Unowned::validateUnowned($this->unowned);
     }
 
     /**
@@ -51275,44 +51477,44 @@ class Ushort {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'ushort'} = $this->toUshort();
+        $out->{'unowned'} = $this->toUnowned();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Ushort
+     * @return Unowned
      * @throws Exception
      */
-    public static function from(stdClass $obj): Ushort {
-        if (!property_exists($obj, 'ushort')) {
+    public static function from(stdClass $obj): Unowned {
+        if (!property_exists($obj, 'unowned')) {
             throw new Exception("Missing required property");
         }
-        return new Ushort(
-         Ushort::fromUshort($obj->{'ushort'})
+        return new Unowned(
+         Unowned::fromUnowned($obj->{'unowned'})
         );
     }
 
     /**
-     * @return Ushort
+     * @return Unowned
      */
-    public static function sample(): Ushort {
-        return new Ushort(
-         Ushort::sampleUshort()
+    public static function sample(): Unowned {
+        return new Unowned(
+         Unowned::sampleUnowned()
         );
     }
 }
 
-// This is an autogenerated file:Using
+// This is an autogenerated file:Unsafe
 
-class Using {
-    private int $using; // json:using Required
+class Unsafe {
+    private int $unsafe; // json:unsafe Required
 
     /**
-     * @param int $using
+     * @param int $unsafe
      */
-    public function __construct(int $using) {
-        $this->using = $using;
+    public function __construct(int $unsafe) {
+        $this->unsafe = $unsafe;
     }
 
     /**
@@ -51320,7 +51522,7 @@ class Using {
      * @throws Exception
      * @return int
      */
-    public static function fromUsing(int $value): int {
+    public static function fromUnsafe(int $value): int {
         return $value; /*int*/
     }
 
@@ -51328,11 +51530,11 @@ class Using {
      * @throws Exception
      * @return int
      */
-    public function toUsing(): int {
-        if (Using::validateUsing($this->using))  {
-            return $this->using; /*int*/
+    public function toUnsafe(): int {
+        if (Unsafe::validateUnsafe($this->unsafe))  {
+            return $this->unsafe; /*int*/
         }
-        throw new Exception('never get to this Using::using');
+        throw new Exception('never get to this Unsafe::unsafe');
     }
 
     /**
@@ -51340,7 +51542,7 @@ class Using {
      * @return bool
      * @throws Exception
      */
-    public static function validateUsing(int $value): bool {
+    public static function validateUnsafe(int $value): bool {
         return true;
     }
 
@@ -51348,18 +51550,18 @@ class Using {
      * @throws Exception
      * @return int
      */
-    public function getUsing(): int {
-        if (Using::validateUsing($this->using))  {
-            return $this->using;
+    public function getUnsafe(): int {
+        if (Unsafe::validateUnsafe($this->unsafe))  {
+            return $this->unsafe;
         }
-        throw new Exception('never get to getUsing Using::using');
+        throw new Exception('never get to getUnsafe Unsafe::unsafe');
     }
 
     /**
      * @return int
      */
-    public static function sampleUsing(): int {
-        return 31; /*31:using*/
+    public static function sampleUnsafe(): int {
+        return 31; /*31:unsafe*/
     }
 
     /**
@@ -51367,7 +51569,7 @@ class Using {
      * @return bool
      */
     public function validate(): bool {
-        return Using::validateUsing($this->using);
+        return Unsafe::validateUnsafe($this->unsafe);
     }
 
     /**
@@ -51376,44 +51578,44 @@ class Using {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'using'} = $this->toUsing();
+        $out->{'unsafe'} = $this->toUnsafe();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Using
+     * @return Unsafe
      * @throws Exception
      */
-    public static function from(stdClass $obj): Using {
-        if (!property_exists($obj, 'using')) {
+    public static function from(stdClass $obj): Unsafe {
+        if (!property_exists($obj, 'unsafe')) {
             throw new Exception("Missing required property");
         }
-        return new Using(
-         Using::fromUsing($obj->{'using'})
+        return new Unsafe(
+         Unsafe::fromUnsafe($obj->{'unsafe'})
         );
     }
 
     /**
-     * @return Using
+     * @return Unsafe
      */
-    public static function sample(): Using {
-        return new Using(
-         Using::sampleUsing()
+    public static function sample(): Unsafe {
+        return new Unsafe(
+         Unsafe::sampleUnsafe()
         );
     }
 }
 
-// This is an autogenerated file:Utf8JSONReader
+// This is an autogenerated file:Unsigned
 
-class Utf8JSONReader {
-    private int $utf8JSONReader; // json:Utf8JsonReader Required
+class Unsigned {
+    private int $unsigned; // json:unsigned Required
 
     /**
-     * @param int $utf8JSONReader
+     * @param int $unsigned
      */
-    public function __construct(int $utf8JSONReader) {
-        $this->utf8JSONReader = $utf8JSONReader;
+    public function __construct(int $unsigned) {
+        $this->unsigned = $unsigned;
     }
 
     /**
@@ -51421,7 +51623,7 @@ class Utf8JSONReader {
      * @throws Exception
      * @return int
      */
-    public static function fromUtf8JSONReader(int $value): int {
+    public static function fromUnsigned(int $value): int {
         return $value; /*int*/
     }
 
@@ -51429,11 +51631,11 @@ class Utf8JSONReader {
      * @throws Exception
      * @return int
      */
-    public function toUtf8JSONReader(): int {
-        if (Utf8JSONReader::validateUtf8JSONReader($this->utf8JSONReader))  {
-            return $this->utf8JSONReader; /*int*/
+    public function toUnsigned(): int {
+        if (Unsigned::validateUnsigned($this->unsigned))  {
+            return $this->unsigned; /*int*/
         }
-        throw new Exception('never get to this Utf8JSONReader::utf8JSONReader');
+        throw new Exception('never get to this Unsigned::unsigned');
     }
 
     /**
@@ -51441,7 +51643,7 @@ class Utf8JSONReader {
      * @return bool
      * @throws Exception
      */
-    public static function validateUtf8JSONReader(int $value): bool {
+    public static function validateUnsigned(int $value): bool {
         return true;
     }
 
@@ -51449,18 +51651,18 @@ class Utf8JSONReader {
      * @throws Exception
      * @return int
      */
-    public function getUtf8JSONReader(): int {
-        if (Utf8JSONReader::validateUtf8JSONReader($this->utf8JSONReader))  {
-            return $this->utf8JSONReader;
+    public function getUnsigned(): int {
+        if (Unsigned::validateUnsigned($this->unsigned))  {
+            return $this->unsigned;
         }
-        throw new Exception('never get to getUtf8JSONReader Utf8JSONReader::utf8JSONReader');
+        throw new Exception('never get to getUnsigned Unsigned::unsigned');
     }
 
     /**
      * @return int
      */
-    public static function sampleUtf8JSONReader(): int {
-        return 31; /*31:utf8JSONReader*/
+    public static function sampleUnsigned(): int {
+        return 31; /*31:unsigned*/
     }
 
     /**
@@ -51468,7 +51670,7 @@ class Utf8JSONReader {
      * @return bool
      */
     public function validate(): bool {
-        return Utf8JSONReader::validateUtf8JSONReader($this->utf8JSONReader);
+        return Unsigned::validateUnsigned($this->unsigned);
     }
 
     /**
@@ -51477,44 +51679,44 @@ class Utf8JSONReader {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'Utf8JsonReader'} = $this->toUtf8JSONReader();
+        $out->{'unsigned'} = $this->toUnsigned();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Utf8JSONReader
+     * @return Unsigned
      * @throws Exception
      */
-    public static function from(stdClass $obj): Utf8JSONReader {
-        if (!property_exists($obj, 'Utf8JsonReader')) {
+    public static function from(stdClass $obj): Unsigned {
+        if (!property_exists($obj, 'unsigned')) {
             throw new Exception("Missing required property");
         }
-        return new Utf8JSONReader(
-         Utf8JSONReader::fromUtf8JSONReader($obj->{'Utf8JsonReader'})
+        return new Unsigned(
+         Unsigned::fromUnsigned($obj->{'unsigned'})
         );
     }
 
     /**
-     * @return Utf8JSONReader
+     * @return Unsigned
      */
-    public static function sample(): Utf8JSONReader {
-        return new Utf8JSONReader(
-         Utf8JSONReader::sampleUtf8JSONReader()
+    public static function sample(): Unsigned {
+        return new Unsigned(
+         Unsigned::sampleUnsigned()
         );
     }
 }
 
-// This is an autogenerated file:Utf8JSONWriter
+// This is an autogenerated file:UseSerializers
 
-class Utf8JSONWriter {
-    private int $utf8JSONWriter; // json:Utf8JsonWriter Required
+class UseSerializers {
+    private int $useSerializers; // json:UseSerializers Required
 
     /**
-     * @param int $utf8JSONWriter
+     * @param int $useSerializers
      */
-    public function __construct(int $utf8JSONWriter) {
-        $this->utf8JSONWriter = $utf8JSONWriter;
+    public function __construct(int $useSerializers) {
+        $this->useSerializers = $useSerializers;
     }
 
     /**
@@ -51522,7 +51724,7 @@ class Utf8JSONWriter {
      * @throws Exception
      * @return int
      */
-    public static function fromUtf8JSONWriter(int $value): int {
+    public static function fromUseSerializers(int $value): int {
         return $value; /*int*/
     }
 
@@ -51530,11 +51732,11 @@ class Utf8JSONWriter {
      * @throws Exception
      * @return int
      */
-    public function toUtf8JSONWriter(): int {
-        if (Utf8JSONWriter::validateUtf8JSONWriter($this->utf8JSONWriter))  {
-            return $this->utf8JSONWriter; /*int*/
+    public function toUseSerializers(): int {
+        if (UseSerializers::validateUseSerializers($this->useSerializers))  {
+            return $this->useSerializers; /*int*/
         }
-        throw new Exception('never get to this Utf8JSONWriter::utf8JSONWriter');
+        throw new Exception('never get to this UseSerializers::useSerializers');
     }
 
     /**
@@ -51542,7 +51744,7 @@ class Utf8JSONWriter {
      * @return bool
      * @throws Exception
      */
-    public static function validateUtf8JSONWriter(int $value): bool {
+    public static function validateUseSerializers(int $value): bool {
         return true;
     }
 
@@ -51550,18 +51752,18 @@ class Utf8JSONWriter {
      * @throws Exception
      * @return int
      */
-    public function getUtf8JSONWriter(): int {
-        if (Utf8JSONWriter::validateUtf8JSONWriter($this->utf8JSONWriter))  {
-            return $this->utf8JSONWriter;
+    public function getUseSerializers(): int {
+        if (UseSerializers::validateUseSerializers($this->useSerializers))  {
+            return $this->useSerializers;
         }
-        throw new Exception('never get to getUtf8JSONWriter Utf8JSONWriter::utf8JSONWriter');
+        throw new Exception('never get to getUseSerializers UseSerializers::useSerializers');
     }
 
     /**
      * @return int
      */
-    public static function sampleUtf8JSONWriter(): int {
-        return 31; /*31:utf8JSONWriter*/
+    public static function sampleUseSerializers(): int {
+        return 31; /*31:useSerializers*/
     }
 
     /**
@@ -51569,7 +51771,7 @@ class Utf8JSONWriter {
      * @return bool
      */
     public function validate(): bool {
-        return Utf8JSONWriter::validateUtf8JSONWriter($this->utf8JSONWriter);
+        return UseSerializers::validateUseSerializers($this->useSerializers);
     }
 
     /**
@@ -51578,44 +51780,44 @@ class Utf8JSONWriter {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'Utf8JsonWriter'} = $this->toUtf8JSONWriter();
+        $out->{'UseSerializers'} = $this->toUseSerializers();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Utf8JSONWriter
+     * @return UseSerializers
      * @throws Exception
      */
-    public static function from(stdClass $obj): Utf8JSONWriter {
-        if (!property_exists($obj, 'Utf8JsonWriter')) {
+    public static function from(stdClass $obj): UseSerializers {
+        if (!property_exists($obj, 'UseSerializers')) {
             throw new Exception("Missing required property");
         }
-        return new Utf8JSONWriter(
-         Utf8JSONWriter::fromUtf8JSONWriter($obj->{'Utf8JsonWriter'})
+        return new UseSerializers(
+         UseSerializers::fromUseSerializers($obj->{'UseSerializers'})
         );
     }
 
     /**
-     * @return Utf8JSONWriter
+     * @return UseSerializers
      */
-    public static function sample(): Utf8JSONWriter {
-        return new Utf8JSONWriter(
-         Utf8JSONWriter::sampleUtf8JSONWriter()
+    public static function sample(): UseSerializers {
+        return new UseSerializers(
+         UseSerializers::sampleUseSerializers()
         );
     }
 }
 
-// This is an autogenerated file:UUID
+// This is an autogenerated file:Ushort
 
-class UUID {
-    private int $uuid; // json:UUID Required
+class Ushort {
+    private int $ushort; // json:ushort Required
 
     /**
-     * @param int $uuid
+     * @param int $ushort
      */
-    public function __construct(int $uuid) {
-        $this->uuid = $uuid;
+    public function __construct(int $ushort) {
+        $this->ushort = $ushort;
     }
 
     /**
@@ -51623,7 +51825,7 @@ class UUID {
      * @throws Exception
      * @return int
      */
-    public static function fromUUID(int $value): int {
+    public static function fromUshort(int $value): int {
         return $value; /*int*/
     }
 
@@ -51631,11 +51833,11 @@ class UUID {
      * @throws Exception
      * @return int
      */
-    public function toUUID(): int {
-        if (UUID::validateUUID($this->uuid))  {
-            return $this->uuid; /*int*/
+    public function toUshort(): int {
+        if (Ushort::validateUshort($this->ushort))  {
+            return $this->ushort; /*int*/
         }
-        throw new Exception('never get to this UUID::uuid');
+        throw new Exception('never get to this Ushort::ushort');
     }
 
     /**
@@ -51643,7 +51845,7 @@ class UUID {
      * @return bool
      * @throws Exception
      */
-    public static function validateUUID(int $value): bool {
+    public static function validateUshort(int $value): bool {
         return true;
     }
 
@@ -51651,18 +51853,18 @@ class UUID {
      * @throws Exception
      * @return int
      */
-    public function getUUID(): int {
-        if (UUID::validateUUID($this->uuid))  {
-            return $this->uuid;
+    public function getUshort(): int {
+        if (Ushort::validateUshort($this->ushort))  {
+            return $this->ushort;
         }
-        throw new Exception('never get to getUUID UUID::uuid');
+        throw new Exception('never get to getUshort Ushort::ushort');
     }
 
     /**
      * @return int
      */
-    public static function sampleUUID(): int {
-        return 31; /*31:uuid*/
+    public static function sampleUshort(): int {
+        return 31; /*31:ushort*/
     }
 
     /**
@@ -51670,7 +51872,7 @@ class UUID {
      * @return bool
      */
     public function validate(): bool {
-        return UUID::validateUUID($this->uuid);
+        return Ushort::validateUshort($this->ushort);
     }
 
     /**
@@ -51679,240 +51881,44 @@ class UUID {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'UUID'} = $this->toUUID();
+        $out->{'ushort'} = $this->toUshort();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return UUID
+     * @return Ushort
      * @throws Exception
      */
-    public static function from(stdClass $obj): UUID {
-        if (!property_exists($obj, 'UUID')) {
+    public static function from(stdClass $obj): Ushort {
+        if (!property_exists($obj, 'ushort')) {
             throw new Exception("Missing required property");
         }
-        return new UUID(
-         UUID::fromUUID($obj->{'UUID'})
+        return new Ushort(
+         Ushort::fromUshort($obj->{'ushort'})
         );
     }
 
     /**
-     * @return UUID
+     * @return Ushort
      */
-    public static function sample(): UUID {
-        return new UUID(
-         UUID::sampleUUID()
+    public static function sample(): Ushort {
+        return new Ushort(
+         Ushort::sampleUshort()
         );
     }
 }
 
-// This is an autogenerated file:VarClass
-
-class VarClass {
-    private int $var; // json:var Required
-
-    /**
-     * @param int $var
-     */
-    public function __construct(int $var) {
-        $this->var = $var;
-    }
-
-    /**
-     * @param int $value
-     * @throws Exception
-     * @return int
-     */
-    public static function fromVar(int $value): int {
-        return $value; /*int*/
-    }
-
-    /**
-     * @throws Exception
-     * @return int
-     */
-    public function toVar(): int {
-        if (VarClass::validateVar($this->var))  {
-            return $this->var; /*int*/
-        }
-        throw new Exception('never get to this VarClass::var');
-    }
-
-    /**
-     * @param int
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateVar(int $value): bool {
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return int
-     */
-    public function getVar(): int {
-        if (VarClass::validateVar($this->var))  {
-            return $this->var;
-        }
-        throw new Exception('never get to getVar VarClass::var');
-    }
-
-    /**
-     * @return int
-     */
-    public static function sampleVar(): int {
-        return 31; /*31:var*/
-    }
-
-    /**
-     * @throws Exception
-     * @return bool
-     */
-    public function validate(): bool {
-        return VarClass::validateVar($this->var);
-    }
-
-    /**
-     * @return stdClass
-     * @throws Exception
-     */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'var'} = $this->toVar();
-        return $out;
-    }
-
-    /**
-     * @param stdClass $obj
-     * @return VarClass
-     * @throws Exception
-     */
-    public static function from(stdClass $obj): VarClass {
-        if (!property_exists($obj, 'var')) {
-            throw new Exception("Missing required property");
-        }
-        return new VarClass(
-         VarClass::fromVar($obj->{'var'})
-        );
-    }
-
-    /**
-     * @return VarClass
-     */
-    public static function sample(): VarClass {
-        return new VarClass(
-         VarClass::sampleVar()
-        );
-    }
-}
-
-// This is an autogenerated file:Virtual
-
-class Virtual {
-    private int $virtual; // json:virtual Required
-
-    /**
-     * @param int $virtual
-     */
-    public function __construct(int $virtual) {
-        $this->virtual = $virtual;
-    }
-
-    /**
-     * @param int $value
-     * @throws Exception
-     * @return int
-     */
-    public static function fromVirtual(int $value): int {
-        return $value; /*int*/
-    }
-
-    /**
-     * @throws Exception
-     * @return int
-     */
-    public function toVirtual(): int {
-        if (Virtual::validateVirtual($this->virtual))  {
-            return $this->virtual; /*int*/
-        }
-        throw new Exception('never get to this Virtual::virtual');
-    }
-
-    /**
-     * @param int
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateVirtual(int $value): bool {
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return int
-     */
-    public function getVirtual(): int {
-        if (Virtual::validateVirtual($this->virtual))  {
-            return $this->virtual;
-        }
-        throw new Exception('never get to getVirtual Virtual::virtual');
-    }
-
-    /**
-     * @return int
-     */
-    public static function sampleVirtual(): int {
-        return 31; /*31:virtual*/
-    }
-
-    /**
-     * @throws Exception
-     * @return bool
-     */
-    public function validate(): bool {
-        return Virtual::validateVirtual($this->virtual);
-    }
-
-    /**
-     * @return stdClass
-     * @throws Exception
-     */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'virtual'} = $this->toVirtual();
-        return $out;
-    }
-
-    /**
-     * @param stdClass $obj
-     * @return Virtual
-     * @throws Exception
-     */
-    public static function from(stdClass $obj): Virtual {
-        if (!property_exists($obj, 'virtual')) {
-            throw new Exception("Missing required property");
-        }
-        return new Virtual(
-         Virtual::fromVirtual($obj->{'virtual'})
-        );
-    }
-
-    /**
-     * @return Virtual
-     */
-    public static function sample(): Virtual {
-        return new Virtual(
-         Virtual::sampleVirtual()
-        );
-    }
-}
-
-// This is an autogenerated file:Obj6
+// This is an autogenerated file:Obj6
 
 class Obj6 {
     private int $dummy; // json:dummy Required
+    private Using $using; // json:using Required
+    private Utf8JSONReader $utf8JSONReader; // json:Utf8JsonReader Required
+    private Utf8JSONWriter $utf8JSONWriter; // json:Utf8JsonWriter Required
+    private UUID $uuid; // json:UUID Required
+    private VarClass $var; // json:var Required
+    private Virtual $virtual; // json:virtual Required
     private VoidClass $void; // json:void Required
     private Volatile $volatile; // json:volatile Required
     private WcharT $wcharT; // json:wchar_t Required
@@ -51928,6 +51934,12 @@ class Obj6 {
 
     /**
      * @param int $dummy
+     * @param Using $using
+     * @param Utf8JSONReader $utf8JSONReader
+     * @param Utf8JSONWriter $utf8JSONWriter
+     * @param UUID $uuid
+     * @param VarClass $var
+     * @param Virtual $virtual
      * @param VoidClass $void
      * @param Volatile $volatile
      * @param WcharT $wcharT
@@ -51941,8 +51953,14 @@ class Obj6 {
      * @param Yes $yes
      * @param YieldClass $yield
      */
-    public function __construct(int $dummy, VoidClass $void, Volatile $volatile, WcharT $wcharT, Weak $weak, Where $where, WhileClass $while, WillSet $willSet, With $with, XorClass $xor, XorEq $xorEq, Yes $yes, YieldClass $yield) {
+    public function __construct(int $dummy, Using $using, Utf8JSONReader $utf8JSONReader, Utf8JSONWriter $utf8JSONWriter, UUID $uuid, VarClass $var, Virtual $virtual, VoidClass $void, Volatile $volatile, WcharT $wcharT, Weak $weak, Where $where, WhileClass $while, WillSet $willSet, With $with, XorClass $xor, XorEq $xorEq, Yes $yes, YieldClass $yield) {
         $this->dummy = $dummy;
+        $this->using = $using;
+        $this->utf8JSONReader = $utf8JSONReader;
+        $this->utf8JSONWriter = $utf8JSONWriter;
+        $this->uuid = $uuid;
+        $this->var = $var;
+        $this->virtual = $virtual;
         $this->void = $void;
         $this->volatile = $volatile;
         $this->wcharT = $wcharT;
@@ -52007,490 +52025,778 @@ class Obj6 {
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return VoidClass
+     * @return Using
      */
-    public static function fromVoid(stdClass $value): VoidClass {
-        return VoidClass::from($value); /*class*/
+    public static function fromUsing(stdClass $value): Using {
+        return Using::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toVoid(): stdClass {
-        if (Obj6::validateVoid($this->void))  {
-            return $this->void->to(); /*class*/
+    public function toUsing(): stdClass {
+        if (Obj6::validateUsing($this->using))  {
+            return $this->using->to(); /*class*/
         }
-        throw new Exception('never get to this Obj6::void');
+        throw new Exception('never get to this Obj6::using');
     }
 
     /**
-     * @param VoidClass
+     * @param Using
      * @return bool
      * @throws Exception
      */
-    public static function validateVoid(VoidClass $value): bool {
+    public static function validateUsing(Using $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return VoidClass
+     * @return Using
      */
-    public function getVoid(): VoidClass {
-        if (Obj6::validateVoid($this->void))  {
-            return $this->void;
+    public function getUsing(): Using {
+        if (Obj6::validateUsing($this->using))  {
+            return $this->using;
         }
-        throw new Exception('never get to getVoid Obj6::void');
+        throw new Exception('never get to getUsing Obj6::using');
     }
 
     /**
-     * @return VoidClass
+     * @return Using
      */
-    public static function sampleVoid(): VoidClass {
-        return VoidClass::sample(); /*32:void*/
+    public static function sampleUsing(): Using {
+        return Using::sample(); /*32:using*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return Volatile
+     * @return Utf8JSONReader
      */
-    public static function fromVolatile(stdClass $value): Volatile {
-        return Volatile::from($value); /*class*/
+    public static function fromUtf8JSONReader(stdClass $value): Utf8JSONReader {
+        return Utf8JSONReader::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toVolatile(): stdClass {
-        if (Obj6::validateVolatile($this->volatile))  {
-            return $this->volatile->to(); /*class*/
+    public function toUtf8JSONReader(): stdClass {
+        if (Obj6::validateUtf8JSONReader($this->utf8JSONReader))  {
+            return $this->utf8JSONReader->to(); /*class*/
         }
-        throw new Exception('never get to this Obj6::volatile');
+        throw new Exception('never get to this Obj6::utf8JSONReader');
     }
 
     /**
-     * @param Volatile
+     * @param Utf8JSONReader
      * @return bool
      * @throws Exception
      */
-    public static function validateVolatile(Volatile $value): bool {
+    public static function validateUtf8JSONReader(Utf8JSONReader $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return Volatile
+     * @return Utf8JSONReader
      */
-    public function getVolatile(): Volatile {
-        if (Obj6::validateVolatile($this->volatile))  {
-            return $this->volatile;
+    public function getUtf8JSONReader(): Utf8JSONReader {
+        if (Obj6::validateUtf8JSONReader($this->utf8JSONReader))  {
+            return $this->utf8JSONReader;
         }
-        throw new Exception('never get to getVolatile Obj6::volatile');
+        throw new Exception('never get to getUtf8JSONReader Obj6::utf8JSONReader');
     }
 
     /**
-     * @return Volatile
+     * @return Utf8JSONReader
      */
-    public static function sampleVolatile(): Volatile {
-        return Volatile::sample(); /*33:volatile*/
+    public static function sampleUtf8JSONReader(): Utf8JSONReader {
+        return Utf8JSONReader::sample(); /*33:utf8JSONReader*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return WcharT
+     * @return Utf8JSONWriter
      */
-    public static function fromWcharT(stdClass $value): WcharT {
-        return WcharT::from($value); /*class*/
+    public static function fromUtf8JSONWriter(stdClass $value): Utf8JSONWriter {
+        return Utf8JSONWriter::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toWcharT(): stdClass {
-        if (Obj6::validateWcharT($this->wcharT))  {
-            return $this->wcharT->to(); /*class*/
+    public function toUtf8JSONWriter(): stdClass {
+        if (Obj6::validateUtf8JSONWriter($this->utf8JSONWriter))  {
+            return $this->utf8JSONWriter->to(); /*class*/
         }
-        throw new Exception('never get to this Obj6::wcharT');
+        throw new Exception('never get to this Obj6::utf8JSONWriter');
     }
 
     /**
-     * @param WcharT
+     * @param Utf8JSONWriter
      * @return bool
      * @throws Exception
      */
-    public static function validateWcharT(WcharT $value): bool {
+    public static function validateUtf8JSONWriter(Utf8JSONWriter $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return WcharT
+     * @return Utf8JSONWriter
      */
-    public function getWcharT(): WcharT {
-        if (Obj6::validateWcharT($this->wcharT))  {
-            return $this->wcharT;
+    public function getUtf8JSONWriter(): Utf8JSONWriter {
+        if (Obj6::validateUtf8JSONWriter($this->utf8JSONWriter))  {
+            return $this->utf8JSONWriter;
         }
-        throw new Exception('never get to getWcharT Obj6::wcharT');
+        throw new Exception('never get to getUtf8JSONWriter Obj6::utf8JSONWriter');
     }
 
     /**
-     * @return WcharT
+     * @return Utf8JSONWriter
      */
-    public static function sampleWcharT(): WcharT {
-        return WcharT::sample(); /*34:wcharT*/
+    public static function sampleUtf8JSONWriter(): Utf8JSONWriter {
+        return Utf8JSONWriter::sample(); /*34:utf8JSONWriter*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return Weak
+     * @return UUID
      */
-    public static function fromWeak(stdClass $value): Weak {
-        return Weak::from($value); /*class*/
+    public static function fromUUID(stdClass $value): UUID {
+        return UUID::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toWeak(): stdClass {
-        if (Obj6::validateWeak($this->weak))  {
-            return $this->weak->to(); /*class*/
+    public function toUUID(): stdClass {
+        if (Obj6::validateUUID($this->uuid))  {
+            return $this->uuid->to(); /*class*/
         }
-        throw new Exception('never get to this Obj6::weak');
+        throw new Exception('never get to this Obj6::uuid');
     }
 
     /**
-     * @param Weak
+     * @param UUID
      * @return bool
      * @throws Exception
      */
-    public static function validateWeak(Weak $value): bool {
+    public static function validateUUID(UUID $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return Weak
+     * @return UUID
      */
-    public function getWeak(): Weak {
-        if (Obj6::validateWeak($this->weak))  {
-            return $this->weak;
+    public function getUUID(): UUID {
+        if (Obj6::validateUUID($this->uuid))  {
+            return $this->uuid;
         }
-        throw new Exception('never get to getWeak Obj6::weak');
+        throw new Exception('never get to getUUID Obj6::uuid');
     }
 
     /**
-     * @return Weak
+     * @return UUID
      */
-    public static function sampleWeak(): Weak {
-        return Weak::sample(); /*35:weak*/
+    public static function sampleUUID(): UUID {
+        return UUID::sample(); /*35:uuid*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return Where
+     * @return VarClass
      */
-    public static function fromWhere(stdClass $value): Where {
-        return Where::from($value); /*class*/
+    public static function fromVar(stdClass $value): VarClass {
+        return VarClass::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toWhere(): stdClass {
-        if (Obj6::validateWhere($this->where))  {
-            return $this->where->to(); /*class*/
+    public function toVar(): stdClass {
+        if (Obj6::validateVar($this->var))  {
+            return $this->var->to(); /*class*/
         }
-        throw new Exception('never get to this Obj6::where');
+        throw new Exception('never get to this Obj6::var');
     }
 
     /**
-     * @param Where
+     * @param VarClass
      * @return bool
      * @throws Exception
      */
-    public static function validateWhere(Where $value): bool {
+    public static function validateVar(VarClass $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return Where
+     * @return VarClass
      */
-    public function getWhere(): Where {
-        if (Obj6::validateWhere($this->where))  {
-            return $this->where;
+    public function getVar(): VarClass {
+        if (Obj6::validateVar($this->var))  {
+            return $this->var;
         }
-        throw new Exception('never get to getWhere Obj6::where');
+        throw new Exception('never get to getVar Obj6::var');
     }
 
     /**
-     * @return Where
+     * @return VarClass
      */
-    public static function sampleWhere(): Where {
-        return Where::sample(); /*36:where*/
+    public static function sampleVar(): VarClass {
+        return VarClass::sample(); /*36:var*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return WhileClass
+     * @return Virtual
      */
-    public static function fromWhile(stdClass $value): WhileClass {
-        return WhileClass::from($value); /*class*/
+    public static function fromVirtual(stdClass $value): Virtual {
+        return Virtual::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toWhile(): stdClass {
-        if (Obj6::validateWhile($this->while))  {
-            return $this->while->to(); /*class*/
+    public function toVirtual(): stdClass {
+        if (Obj6::validateVirtual($this->virtual))  {
+            return $this->virtual->to(); /*class*/
         }
-        throw new Exception('never get to this Obj6::while');
+        throw new Exception('never get to this Obj6::virtual');
     }
 
     /**
-     * @param WhileClass
+     * @param Virtual
      * @return bool
      * @throws Exception
      */
-    public static function validateWhile(WhileClass $value): bool {
+    public static function validateVirtual(Virtual $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return WhileClass
+     * @return Virtual
      */
-    public function getWhile(): WhileClass {
-        if (Obj6::validateWhile($this->while))  {
-            return $this->while;
+    public function getVirtual(): Virtual {
+        if (Obj6::validateVirtual($this->virtual))  {
+            return $this->virtual;
         }
-        throw new Exception('never get to getWhile Obj6::while');
+        throw new Exception('never get to getVirtual Obj6::virtual');
     }
 
     /**
-     * @return WhileClass
+     * @return Virtual
      */
-    public static function sampleWhile(): WhileClass {
-        return WhileClass::sample(); /*37:while*/
+    public static function sampleVirtual(): Virtual {
+        return Virtual::sample(); /*37:virtual*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return WillSet
+     * @return VoidClass
      */
-    public static function fromWillSet(stdClass $value): WillSet {
-        return WillSet::from($value); /*class*/
+    public static function fromVoid(stdClass $value): VoidClass {
+        return VoidClass::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toWillSet(): stdClass {
-        if (Obj6::validateWillSet($this->willSet))  {
-            return $this->willSet->to(); /*class*/
+    public function toVoid(): stdClass {
+        if (Obj6::validateVoid($this->void))  {
+            return $this->void->to(); /*class*/
         }
-        throw new Exception('never get to this Obj6::willSet');
+        throw new Exception('never get to this Obj6::void');
     }
 
     /**
-     * @param WillSet
+     * @param VoidClass
      * @return bool
      * @throws Exception
      */
-    public static function validateWillSet(WillSet $value): bool {
+    public static function validateVoid(VoidClass $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return WillSet
+     * @return VoidClass
      */
-    public function getWillSet(): WillSet {
-        if (Obj6::validateWillSet($this->willSet))  {
-            return $this->willSet;
+    public function getVoid(): VoidClass {
+        if (Obj6::validateVoid($this->void))  {
+            return $this->void;
         }
-        throw new Exception('never get to getWillSet Obj6::willSet');
+        throw new Exception('never get to getVoid Obj6::void');
     }
 
     /**
-     * @return WillSet
+     * @return VoidClass
      */
-    public static function sampleWillSet(): WillSet {
-        return WillSet::sample(); /*38:willSet*/
+    public static function sampleVoid(): VoidClass {
+        return VoidClass::sample(); /*38:void*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return With
+     * @return Volatile
      */
-    public static function fromWith(stdClass $value): With {
-        return With::from($value); /*class*/
+    public static function fromVolatile(stdClass $value): Volatile {
+        return Volatile::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toWith(): stdClass {
-        if (Obj6::validateWith($this->with))  {
-            return $this->with->to(); /*class*/
+    public function toVolatile(): stdClass {
+        if (Obj6::validateVolatile($this->volatile))  {
+            return $this->volatile->to(); /*class*/
         }
-        throw new Exception('never get to this Obj6::with');
+        throw new Exception('never get to this Obj6::volatile');
     }
 
     /**
-     * @param With
+     * @param Volatile
      * @return bool
      * @throws Exception
      */
-    public static function validateWith(With $value): bool {
+    public static function validateVolatile(Volatile $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return With
+     * @return Volatile
      */
-    public function getWith(): With {
-        if (Obj6::validateWith($this->with))  {
-            return $this->with;
+    public function getVolatile(): Volatile {
+        if (Obj6::validateVolatile($this->volatile))  {
+            return $this->volatile;
         }
-        throw new Exception('never get to getWith Obj6::with');
+        throw new Exception('never get to getVolatile Obj6::volatile');
     }
 
     /**
-     * @return With
+     * @return Volatile
      */
-    public static function sampleWith(): With {
-        return With::sample(); /*39:with*/
+    public static function sampleVolatile(): Volatile {
+        return Volatile::sample(); /*39:volatile*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return XorClass
+     * @return WcharT
      */
-    public static function fromXor(stdClass $value): XorClass {
-        return XorClass::from($value); /*class*/
+    public static function fromWcharT(stdClass $value): WcharT {
+        return WcharT::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toXor(): stdClass {
-        if (Obj6::validateXor($this->xor))  {
-            return $this->xor->to(); /*class*/
+    public function toWcharT(): stdClass {
+        if (Obj6::validateWcharT($this->wcharT))  {
+            return $this->wcharT->to(); /*class*/
         }
-        throw new Exception('never get to this Obj6::xor');
+        throw new Exception('never get to this Obj6::wcharT');
     }
 
     /**
-     * @param XorClass
+     * @param WcharT
      * @return bool
      * @throws Exception
      */
-    public static function validateXor(XorClass $value): bool {
+    public static function validateWcharT(WcharT $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return XorClass
+     * @return WcharT
      */
-    public function getXor(): XorClass {
-        if (Obj6::validateXor($this->xor))  {
-            return $this->xor;
+    public function getWcharT(): WcharT {
+        if (Obj6::validateWcharT($this->wcharT))  {
+            return $this->wcharT;
         }
-        throw new Exception('never get to getXor Obj6::xor');
+        throw new Exception('never get to getWcharT Obj6::wcharT');
     }
 
     /**
-     * @return XorClass
+     * @return WcharT
      */
-    public static function sampleXor(): XorClass {
-        return XorClass::sample(); /*40:xor*/
+    public static function sampleWcharT(): WcharT {
+        return WcharT::sample(); /*40:wcharT*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return XorEq
+     * @return Weak
      */
-    public static function fromXorEq(stdClass $value): XorEq {
-        return XorEq::from($value); /*class*/
+    public static function fromWeak(stdClass $value): Weak {
+        return Weak::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toXorEq(): stdClass {
-        if (Obj6::validateXorEq($this->xorEq))  {
-            return $this->xorEq->to(); /*class*/
+    public function toWeak(): stdClass {
+        if (Obj6::validateWeak($this->weak))  {
+            return $this->weak->to(); /*class*/
         }
-        throw new Exception('never get to this Obj6::xorEq');
+        throw new Exception('never get to this Obj6::weak');
     }
 
     /**
-     * @param XorEq
+     * @param Weak
      * @return bool
      * @throws Exception
      */
-    public static function validateXorEq(XorEq $value): bool {
+    public static function validateWeak(Weak $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return XorEq
+     * @return Weak
      */
-    public function getXorEq(): XorEq {
-        if (Obj6::validateXorEq($this->xorEq))  {
-            return $this->xorEq;
+    public function getWeak(): Weak {
+        if (Obj6::validateWeak($this->weak))  {
+            return $this->weak;
         }
-        throw new Exception('never get to getXorEq Obj6::xorEq');
+        throw new Exception('never get to getWeak Obj6::weak');
     }
 
     /**
-     * @return XorEq
+     * @return Weak
      */
-    public static function sampleXorEq(): XorEq {
-        return XorEq::sample(); /*41:xorEq*/
+    public static function sampleWeak(): Weak {
+        return Weak::sample(); /*41:weak*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return Yes
+     * @return Where
      */
-    public static function fromYes(stdClass $value): Yes {
-        return Yes::from($value); /*class*/
+    public static function fromWhere(stdClass $value): Where {
+        return Where::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toWhere(): stdClass {
+        if (Obj6::validateWhere($this->where))  {
+            return $this->where->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj6::where');
+    }
+
+    /**
+     * @param Where
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateWhere(Where $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Where
+     */
+    public function getWhere(): Where {
+        if (Obj6::validateWhere($this->where))  {
+            return $this->where;
+        }
+        throw new Exception('never get to getWhere Obj6::where');
+    }
+
+    /**
+     * @return Where
+     */
+    public static function sampleWhere(): Where {
+        return Where::sample(); /*42:where*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return WhileClass
+     */
+    public static function fromWhile(stdClass $value): WhileClass {
+        return WhileClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toWhile(): stdClass {
+        if (Obj6::validateWhile($this->while))  {
+            return $this->while->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj6::while');
+    }
+
+    /**
+     * @param WhileClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateWhile(WhileClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return WhileClass
+     */
+    public function getWhile(): WhileClass {
+        if (Obj6::validateWhile($this->while))  {
+            return $this->while;
+        }
+        throw new Exception('never get to getWhile Obj6::while');
+    }
+
+    /**
+     * @return WhileClass
+     */
+    public static function sampleWhile(): WhileClass {
+        return WhileClass::sample(); /*43:while*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return WillSet
+     */
+    public static function fromWillSet(stdClass $value): WillSet {
+        return WillSet::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toWillSet(): stdClass {
+        if (Obj6::validateWillSet($this->willSet))  {
+            return $this->willSet->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj6::willSet');
+    }
+
+    /**
+     * @param WillSet
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateWillSet(WillSet $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return WillSet
+     */
+    public function getWillSet(): WillSet {
+        if (Obj6::validateWillSet($this->willSet))  {
+            return $this->willSet;
+        }
+        throw new Exception('never get to getWillSet Obj6::willSet');
+    }
+
+    /**
+     * @return WillSet
+     */
+    public static function sampleWillSet(): WillSet {
+        return WillSet::sample(); /*44:willSet*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return With
+     */
+    public static function fromWith(stdClass $value): With {
+        return With::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toWith(): stdClass {
+        if (Obj6::validateWith($this->with))  {
+            return $this->with->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj6::with');
+    }
+
+    /**
+     * @param With
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateWith(With $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return With
+     */
+    public function getWith(): With {
+        if (Obj6::validateWith($this->with))  {
+            return $this->with;
+        }
+        throw new Exception('never get to getWith Obj6::with');
+    }
+
+    /**
+     * @return With
+     */
+    public static function sampleWith(): With {
+        return With::sample(); /*45:with*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return XorClass
+     */
+    public static function fromXor(stdClass $value): XorClass {
+        return XorClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toXor(): stdClass {
+        if (Obj6::validateXor($this->xor))  {
+            return $this->xor->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj6::xor');
+    }
+
+    /**
+     * @param XorClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateXor(XorClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return XorClass
+     */
+    public function getXor(): XorClass {
+        if (Obj6::validateXor($this->xor))  {
+            return $this->xor;
+        }
+        throw new Exception('never get to getXor Obj6::xor');
+    }
+
+    /**
+     * @return XorClass
+     */
+    public static function sampleXor(): XorClass {
+        return XorClass::sample(); /*46:xor*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return XorEq
+     */
+    public static function fromXorEq(stdClass $value): XorEq {
+        return XorEq::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toXorEq(): stdClass {
+        if (Obj6::validateXorEq($this->xorEq))  {
+            return $this->xorEq->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj6::xorEq');
+    }
+
+    /**
+     * @param XorEq
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateXorEq(XorEq $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return XorEq
+     */
+    public function getXorEq(): XorEq {
+        if (Obj6::validateXorEq($this->xorEq))  {
+            return $this->xorEq;
+        }
+        throw new Exception('never get to getXorEq Obj6::xorEq');
+    }
+
+    /**
+     * @return XorEq
+     */
+    public static function sampleXorEq(): XorEq {
+        return XorEq::sample(); /*47:xorEq*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Yes
+     */
+    public static function fromYes(stdClass $value): Yes {
+        return Yes::from($value); /*class*/
     }
 
     /**
@@ -52501,83 +52807,815 @@ class Obj6 {
         if (Obj6::validateYes($this->yes))  {
             return $this->yes->to(); /*class*/
         }
-        throw new Exception('never get to this Obj6::yes');
+        throw new Exception('never get to this Obj6::yes');
+    }
+
+    /**
+     * @param Yes
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateYes(Yes $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Yes
+     */
+    public function getYes(): Yes {
+        if (Obj6::validateYes($this->yes))  {
+            return $this->yes;
+        }
+        throw new Exception('never get to getYes Obj6::yes');
+    }
+
+    /**
+     * @return Yes
+     */
+    public static function sampleYes(): Yes {
+        return Yes::sample(); /*48:yes*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return YieldClass
+     */
+    public static function fromYield(stdClass $value): YieldClass {
+        return YieldClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toYield(): stdClass {
+        if (Obj6::validateYield($this->yield))  {
+            return $this->yield->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj6::yield');
+    }
+
+    /**
+     * @param YieldClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateYield(YieldClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return YieldClass
+     */
+    public function getYield(): YieldClass {
+        if (Obj6::validateYield($this->yield))  {
+            return $this->yield;
+        }
+        throw new Exception('never get to getYield Obj6::yield');
+    }
+
+    /**
+     * @return YieldClass
+     */
+    public static function sampleYield(): YieldClass {
+        return YieldClass::sample(); /*49:yield*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Obj6::validateDummy($this->dummy)
+        || Obj6::validateUsing($this->using)
+        || Obj6::validateUtf8JSONReader($this->utf8JSONReader)
+        || Obj6::validateUtf8JSONWriter($this->utf8JSONWriter)
+        || Obj6::validateUUID($this->uuid)
+        || Obj6::validateVar($this->var)
+        || Obj6::validateVirtual($this->virtual)
+        || Obj6::validateVoid($this->void)
+        || Obj6::validateVolatile($this->volatile)
+        || Obj6::validateWcharT($this->wcharT)
+        || Obj6::validateWeak($this->weak)
+        || Obj6::validateWhere($this->where)
+        || Obj6::validateWhile($this->while)
+        || Obj6::validateWillSet($this->willSet)
+        || Obj6::validateWith($this->with)
+        || Obj6::validateXor($this->xor)
+        || Obj6::validateXorEq($this->xorEq)
+        || Obj6::validateYes($this->yes)
+        || Obj6::validateYield($this->yield);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'dummy'} = $this->toDummy();
+        $out->{'using'} = $this->toUsing();
+        $out->{'Utf8JsonReader'} = $this->toUtf8JSONReader();
+        $out->{'Utf8JsonWriter'} = $this->toUtf8JSONWriter();
+        $out->{'UUID'} = $this->toUUID();
+        $out->{'var'} = $this->toVar();
+        $out->{'virtual'} = $this->toVirtual();
+        $out->{'void'} = $this->toVoid();
+        $out->{'volatile'} = $this->toVolatile();
+        $out->{'wchar_t'} = $this->toWcharT();
+        $out->{'weak'} = $this->toWeak();
+        $out->{'where'} = $this->toWhere();
+        $out->{'while'} = $this->toWhile();
+        $out->{'willSet'} = $this->toWillSet();
+        $out->{'with'} = $this->toWith();
+        $out->{'xor'} = $this->toXor();
+        $out->{'xor_eq'} = $this->toXorEq();
+        $out->{'YES'} = $this->toYes();
+        $out->{'yield'} = $this->toYield();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Obj6
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Obj6 {
+        if (!property_exists($obj, 'dummy')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'using')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'Utf8JsonReader')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'Utf8JsonWriter')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'UUID')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'var')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'virtual')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'void')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'volatile')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'wchar_t')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'weak')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'where')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'while')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'willSet')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'with')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'xor')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'xor_eq')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'YES')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'yield')) {
+            throw new Exception("Missing required property");
+        }
+        return new Obj6(
+         Obj6::fromDummy($obj->{'dummy'})
+        ,Obj6::fromUsing($obj->{'using'})
+        ,Obj6::fromUtf8JSONReader($obj->{'Utf8JsonReader'})
+        ,Obj6::fromUtf8JSONWriter($obj->{'Utf8JsonWriter'})
+        ,Obj6::fromUUID($obj->{'UUID'})
+        ,Obj6::fromVar($obj->{'var'})
+        ,Obj6::fromVirtual($obj->{'virtual'})
+        ,Obj6::fromVoid($obj->{'void'})
+        ,Obj6::fromVolatile($obj->{'volatile'})
+        ,Obj6::fromWcharT($obj->{'wchar_t'})
+        ,Obj6::fromWeak($obj->{'weak'})
+        ,Obj6::fromWhere($obj->{'where'})
+        ,Obj6::fromWhile($obj->{'while'})
+        ,Obj6::fromWillSet($obj->{'willSet'})
+        ,Obj6::fromWith($obj->{'with'})
+        ,Obj6::fromXor($obj->{'xor'})
+        ,Obj6::fromXorEq($obj->{'xor_eq'})
+        ,Obj6::fromYes($obj->{'YES'})
+        ,Obj6::fromYield($obj->{'yield'})
+        );
+    }
+
+    /**
+     * @return Obj6
+     */
+    public static function sample(): Obj6 {
+        return new Obj6(
+         Obj6::sampleDummy()
+        ,Obj6::sampleUsing()
+        ,Obj6::sampleUtf8JSONReader()
+        ,Obj6::sampleUtf8JSONWriter()
+        ,Obj6::sampleUUID()
+        ,Obj6::sampleVar()
+        ,Obj6::sampleVirtual()
+        ,Obj6::sampleVoid()
+        ,Obj6::sampleVolatile()
+        ,Obj6::sampleWcharT()
+        ,Obj6::sampleWeak()
+        ,Obj6::sampleWhere()
+        ,Obj6::sampleWhile()
+        ,Obj6::sampleWillSet()
+        ,Obj6::sampleWith()
+        ,Obj6::sampleXor()
+        ,Obj6::sampleXorEq()
+        ,Obj6::sampleYes()
+        ,Obj6::sampleYield()
+        );
+    }
+}
+
+// This is an autogenerated file:Using
+
+class Using {
+    private int $using; // json:using Required
+
+    /**
+     * @param int $using
+     */
+    public function __construct(int $using) {
+        $this->using = $using;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromUsing(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toUsing(): int {
+        if (Using::validateUsing($this->using))  {
+            return $this->using; /*int*/
+        }
+        throw new Exception('never get to this Using::using');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateUsing(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getUsing(): int {
+        if (Using::validateUsing($this->using))  {
+            return $this->using;
+        }
+        throw new Exception('never get to getUsing Using::using');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleUsing(): int {
+        return 31; /*31:using*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Using::validateUsing($this->using);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'using'} = $this->toUsing();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Using
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Using {
+        if (!property_exists($obj, 'using')) {
+            throw new Exception("Missing required property");
+        }
+        return new Using(
+         Using::fromUsing($obj->{'using'})
+        );
+    }
+
+    /**
+     * @return Using
+     */
+    public static function sample(): Using {
+        return new Using(
+         Using::sampleUsing()
+        );
+    }
+}
+
+// This is an autogenerated file:Utf8JSONReader
+
+class Utf8JSONReader {
+    private int $utf8JSONReader; // json:Utf8JsonReader Required
+
+    /**
+     * @param int $utf8JSONReader
+     */
+    public function __construct(int $utf8JSONReader) {
+        $this->utf8JSONReader = $utf8JSONReader;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromUtf8JSONReader(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toUtf8JSONReader(): int {
+        if (Utf8JSONReader::validateUtf8JSONReader($this->utf8JSONReader))  {
+            return $this->utf8JSONReader; /*int*/
+        }
+        throw new Exception('never get to this Utf8JSONReader::utf8JSONReader');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateUtf8JSONReader(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getUtf8JSONReader(): int {
+        if (Utf8JSONReader::validateUtf8JSONReader($this->utf8JSONReader))  {
+            return $this->utf8JSONReader;
+        }
+        throw new Exception('never get to getUtf8JSONReader Utf8JSONReader::utf8JSONReader');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleUtf8JSONReader(): int {
+        return 31; /*31:utf8JSONReader*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Utf8JSONReader::validateUtf8JSONReader($this->utf8JSONReader);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'Utf8JsonReader'} = $this->toUtf8JSONReader();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Utf8JSONReader
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Utf8JSONReader {
+        if (!property_exists($obj, 'Utf8JsonReader')) {
+            throw new Exception("Missing required property");
+        }
+        return new Utf8JSONReader(
+         Utf8JSONReader::fromUtf8JSONReader($obj->{'Utf8JsonReader'})
+        );
+    }
+
+    /**
+     * @return Utf8JSONReader
+     */
+    public static function sample(): Utf8JSONReader {
+        return new Utf8JSONReader(
+         Utf8JSONReader::sampleUtf8JSONReader()
+        );
+    }
+}
+
+// This is an autogenerated file:Utf8JSONWriter
+
+class Utf8JSONWriter {
+    private int $utf8JSONWriter; // json:Utf8JsonWriter Required
+
+    /**
+     * @param int $utf8JSONWriter
+     */
+    public function __construct(int $utf8JSONWriter) {
+        $this->utf8JSONWriter = $utf8JSONWriter;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromUtf8JSONWriter(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toUtf8JSONWriter(): int {
+        if (Utf8JSONWriter::validateUtf8JSONWriter($this->utf8JSONWriter))  {
+            return $this->utf8JSONWriter; /*int*/
+        }
+        throw new Exception('never get to this Utf8JSONWriter::utf8JSONWriter');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateUtf8JSONWriter(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getUtf8JSONWriter(): int {
+        if (Utf8JSONWriter::validateUtf8JSONWriter($this->utf8JSONWriter))  {
+            return $this->utf8JSONWriter;
+        }
+        throw new Exception('never get to getUtf8JSONWriter Utf8JSONWriter::utf8JSONWriter');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleUtf8JSONWriter(): int {
+        return 31; /*31:utf8JSONWriter*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Utf8JSONWriter::validateUtf8JSONWriter($this->utf8JSONWriter);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'Utf8JsonWriter'} = $this->toUtf8JSONWriter();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Utf8JSONWriter
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Utf8JSONWriter {
+        if (!property_exists($obj, 'Utf8JsonWriter')) {
+            throw new Exception("Missing required property");
+        }
+        return new Utf8JSONWriter(
+         Utf8JSONWriter::fromUtf8JSONWriter($obj->{'Utf8JsonWriter'})
+        );
+    }
+
+    /**
+     * @return Utf8JSONWriter
+     */
+    public static function sample(): Utf8JSONWriter {
+        return new Utf8JSONWriter(
+         Utf8JSONWriter::sampleUtf8JSONWriter()
+        );
+    }
+}
+
+// This is an autogenerated file:UUID
+
+class UUID {
+    private int $uuid; // json:UUID Required
+
+    /**
+     * @param int $uuid
+     */
+    public function __construct(int $uuid) {
+        $this->uuid = $uuid;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromUUID(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toUUID(): int {
+        if (UUID::validateUUID($this->uuid))  {
+            return $this->uuid; /*int*/
+        }
+        throw new Exception('never get to this UUID::uuid');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateUUID(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getUUID(): int {
+        if (UUID::validateUUID($this->uuid))  {
+            return $this->uuid;
+        }
+        throw new Exception('never get to getUUID UUID::uuid');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleUUID(): int {
+        return 31; /*31:uuid*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return UUID::validateUUID($this->uuid);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'UUID'} = $this->toUUID();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return UUID
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): UUID {
+        if (!property_exists($obj, 'UUID')) {
+            throw new Exception("Missing required property");
+        }
+        return new UUID(
+         UUID::fromUUID($obj->{'UUID'})
+        );
+    }
+
+    /**
+     * @return UUID
+     */
+    public static function sample(): UUID {
+        return new UUID(
+         UUID::sampleUUID()
+        );
+    }
+}
+
+// This is an autogenerated file:VarClass
+
+class VarClass {
+    private int $var; // json:var Required
+
+    /**
+     * @param int $var
+     */
+    public function __construct(int $var) {
+        $this->var = $var;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromVar(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toVar(): int {
+        if (VarClass::validateVar($this->var))  {
+            return $this->var; /*int*/
+        }
+        throw new Exception('never get to this VarClass::var');
     }
 
     /**
-     * @param Yes
+     * @param int
      * @return bool
      * @throws Exception
      */
-    public static function validateYes(Yes $value): bool {
-        $value->validate();
+    public static function validateVar(int $value): bool {
         return true;
     }
 
     /**
      * @throws Exception
-     * @return Yes
+     * @return int
      */
-    public function getYes(): Yes {
-        if (Obj6::validateYes($this->yes))  {
-            return $this->yes;
+    public function getVar(): int {
+        if (VarClass::validateVar($this->var))  {
+            return $this->var;
         }
-        throw new Exception('never get to getYes Obj6::yes');
+        throw new Exception('never get to getVar VarClass::var');
     }
 
     /**
-     * @return Yes
+     * @return int
      */
-    public static function sampleYes(): Yes {
-        return Yes::sample(); /*42:yes*/
+    public static function sampleVar(): int {
+        return 31; /*31:var*/
     }
 
     /**
-     * @param stdClass $value
      * @throws Exception
-     * @return YieldClass
+     * @return bool
      */
-    public static function fromYield(stdClass $value): YieldClass {
-        return YieldClass::from($value); /*class*/
+    public function validate(): bool {
+        return VarClass::validateVar($this->var);
     }
 
     /**
-     * @throws Exception
      * @return stdClass
+     * @throws Exception
      */
-    public function toYield(): stdClass {
-        if (Obj6::validateYield($this->yield))  {
-            return $this->yield->to(); /*class*/
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'var'} = $this->toVar();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return VarClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): VarClass {
+        if (!property_exists($obj, 'var')) {
+            throw new Exception("Missing required property");
         }
-        throw new Exception('never get to this Obj6::yield');
+        return new VarClass(
+         VarClass::fromVar($obj->{'var'})
+        );
     }
 
     /**
-     * @param YieldClass
+     * @return VarClass
+     */
+    public static function sample(): VarClass {
+        return new VarClass(
+         VarClass::sampleVar()
+        );
+    }
+}
+
+// This is an autogenerated file:Virtual
+
+class Virtual {
+    private int $virtual; // json:virtual Required
+
+    /**
+     * @param int $virtual
+     */
+    public function __construct(int $virtual) {
+        $this->virtual = $virtual;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromVirtual(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toVirtual(): int {
+        if (Virtual::validateVirtual($this->virtual))  {
+            return $this->virtual; /*int*/
+        }
+        throw new Exception('never get to this Virtual::virtual');
+    }
+
+    /**
+     * @param int
      * @return bool
      * @throws Exception
      */
-    public static function validateYield(YieldClass $value): bool {
-        $value->validate();
+    public static function validateVirtual(int $value): bool {
         return true;
     }
 
     /**
      * @throws Exception
-     * @return YieldClass
+     * @return int
      */
-    public function getYield(): YieldClass {
-        if (Obj6::validateYield($this->yield))  {
-            return $this->yield;
+    public function getVirtual(): int {
+        if (Virtual::validateVirtual($this->virtual))  {
+            return $this->virtual;
         }
-        throw new Exception('never get to getYield Obj6::yield');
+        throw new Exception('never get to getVirtual Virtual::virtual');
     }
 
     /**
-     * @return YieldClass
+     * @return int
      */
-    public static function sampleYield(): YieldClass {
-        return YieldClass::sample(); /*43:yield*/
+    public static function sampleVirtual(): int {
+        return 31; /*31:virtual*/
     }
 
     /**
@@ -52585,19 +53623,7 @@ class Obj6 {
      * @return bool
      */
     public function validate(): bool {
-        return Obj6::validateDummy($this->dummy)
-        || Obj6::validateVoid($this->void)
-        || Obj6::validateVolatile($this->volatile)
-        || Obj6::validateWcharT($this->wcharT)
-        || Obj6::validateWeak($this->weak)
-        || Obj6::validateWhere($this->where)
-        || Obj6::validateWhile($this->while)
-        || Obj6::validateWillSet($this->willSet)
-        || Obj6::validateWith($this->with)
-        || Obj6::validateXor($this->xor)
-        || Obj6::validateXorEq($this->xorEq)
-        || Obj6::validateYes($this->yes)
-        || Obj6::validateYield($this->yield);
+        return Virtual::validateVirtual($this->virtual);
     }
 
     /**
@@ -52606,102 +53632,30 @@ class Obj6 {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'dummy'} = $this->toDummy();
-        $out->{'void'} = $this->toVoid();
-        $out->{'volatile'} = $this->toVolatile();
-        $out->{'wchar_t'} = $this->toWcharT();
-        $out->{'weak'} = $this->toWeak();
-        $out->{'where'} = $this->toWhere();
-        $out->{'while'} = $this->toWhile();
-        $out->{'willSet'} = $this->toWillSet();
-        $out->{'with'} = $this->toWith();
-        $out->{'xor'} = $this->toXor();
-        $out->{'xor_eq'} = $this->toXorEq();
-        $out->{'YES'} = $this->toYes();
-        $out->{'yield'} = $this->toYield();
+        $out->{'virtual'} = $this->toVirtual();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Obj6
+     * @return Virtual
      * @throws Exception
      */
-    public static function from(stdClass $obj): Obj6 {
-        if (!property_exists($obj, 'dummy')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'void')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'volatile')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'wchar_t')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'weak')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'where')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'while')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'willSet')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'with')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'xor')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'xor_eq')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'YES')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'yield')) {
+    public static function from(stdClass $obj): Virtual {
+        if (!property_exists($obj, 'virtual')) {
             throw new Exception("Missing required property");
         }
-        return new Obj6(
-         Obj6::fromDummy($obj->{'dummy'})
-        ,Obj6::fromVoid($obj->{'void'})
-        ,Obj6::fromVolatile($obj->{'volatile'})
-        ,Obj6::fromWcharT($obj->{'wchar_t'})
-        ,Obj6::fromWeak($obj->{'weak'})
-        ,Obj6::fromWhere($obj->{'where'})
-        ,Obj6::fromWhile($obj->{'while'})
-        ,Obj6::fromWillSet($obj->{'willSet'})
-        ,Obj6::fromWith($obj->{'with'})
-        ,Obj6::fromXor($obj->{'xor'})
-        ,Obj6::fromXorEq($obj->{'xor_eq'})
-        ,Obj6::fromYes($obj->{'YES'})
-        ,Obj6::fromYield($obj->{'yield'})
+        return new Virtual(
+         Virtual::fromVirtual($obj->{'virtual'})
         );
     }
 
     /**
-     * @return Obj6
+     * @return Virtual
      */
-    public static function sample(): Obj6 {
-        return new Obj6(
-         Obj6::sampleDummy()
-        ,Obj6::sampleVoid()
-        ,Obj6::sampleVolatile()
-        ,Obj6::sampleWcharT()
-        ,Obj6::sampleWeak()
-        ,Obj6::sampleWhere()
-        ,Obj6::sampleWhile()
-        ,Obj6::sampleWillSet()
-        ,Obj6::sampleWith()
-        ,Obj6::sampleXor()
-        ,Obj6::sampleXorEq()
-        ,Obj6::sampleYes()
-        ,Obj6::sampleYield()
+    public static function sample(): Virtual {
+        return new Virtual(
+         Virtual::sampleVirtual()
         );
     }
 }
diff --git a/base/pike/test/inputs/json/priority/keywords.json/default/TopLevel.pmod b/head/pike/test/inputs/json/priority/keywords.json/default/TopLevel.pmod
index cc6e4dd..0140888 100644
--- a/base/pike/test/inputs/json/priority/keywords.json/default/TopLevel.pmod
+++ b/head/pike/test/inputs/json/priority/keywords.json/default/TopLevel.pmod
@@ -6548,6 +6548,7 @@ Select Select_from_JSON(mixed json) {
 
 class Obj5 {
     int                dummy;               // json: "dummy"
+    KSerializer        k_serializer;        // json: "KSerializer"
     SelfClass          obj5_self;           // json: "self"
     Static             obj5_static;         // json: "static"
     String             obj5_string;         // json: "string"
@@ -6556,8 +6557,12 @@ class Obj5 {
     TypeClass          obj5_type;           // json: "type"
     Typedef            obj5_typedef;        // json: "typedef"
     Typeof             obj5_typeof;         // json: "typeof"
+    PrimitiveKind      primitive_kind;      // json: "PrimitiveKind"
     Self               self;                // json: "Self"
     Sendable           sendable;            // json: "Sendable"
+    SerialDescriptor   serial_descriptor;   // json: "SerialDescriptor"
+    SerialName         serial_name;         // json: "SerialName"
+    Serializable       serializable;        // json: "Serializable"
     Serialize          serialize;           // json: "serialize"
     SerializerProvider serializer_provider; // json: "SerializerProvider"
     Set                set;                 // json: "set"
@@ -6605,17 +6610,13 @@ class Obj5 {
     Unowned            unowned;             // json: "unowned"
     Unsafe             unsafe;              // json: "unsafe"
     Unsigned           unsigned;            // json: "unsigned"
+    UseSerializers     use_serializers;     // json: "UseSerializers"
     Ushort             ushort;              // json: "ushort"
-    Using              using;               // json: "using"
-    Utf8JsonReader     utf8_json_reader;    // json: "Utf8JsonReader"
-    Utf8JsonWriter     utf8_json_writer;    // json: "Utf8JsonWriter"
-    Uuid               uuid;                // json: "UUID"
-    Var                var;                 // json: "var"
-    Virtual            virtual;             // json: "virtual"
 
     string encode_json() {
         mapping(string:mixed) json = ([
             "dummy" : dummy,
+            "KSerializer" : k_serializer,
             "self" : obj5_self,
             "static" : obj5_static,
             "string" : obj5_string,
@@ -6624,8 +6625,12 @@ class Obj5 {
             "type" : obj5_type,
             "typedef" : obj5_typedef,
             "typeof" : obj5_typeof,
+            "PrimitiveKind" : primitive_kind,
             "Self" : self,
             "Sendable" : sendable,
+            "SerialDescriptor" : serial_descriptor,
+            "SerialName" : serial_name,
+            "Serializable" : serializable,
             "serialize" : serialize,
             "SerializerProvider" : serializer_provider,
             "set" : set,
@@ -6673,13 +6678,8 @@ class Obj5 {
             "unowned" : unowned,
             "unsafe" : unsafe,
             "unsigned" : unsigned,
+            "UseSerializers" : use_serializers,
             "ushort" : ushort,
-            "using" : using,
-            "Utf8JsonReader" : utf8_json_reader,
-            "Utf8JsonWriter" : utf8_json_writer,
-            "UUID" : uuid,
-            "var" : var,
-            "virtual" : virtual,
         ]);
 
         return Standards.JSON.encode(json);
@@ -6691,6 +6691,8 @@ Obj5 Obj5_from_JSON(mixed json) {
 
     if (!intp(json["dummy"])) error("Expected integer");
     retval.dummy = json["dummy"];
+    if (!mappingp(json["KSerializer"])) error("Expected object");
+    retval.k_serializer = json["KSerializer"];
     if (!mappingp(json["self"])) error("Expected object");
     retval.obj5_self = json["self"];
     if (!mappingp(json["static"])) error("Expected object");
@@ -6707,10 +6709,18 @@ Obj5 Obj5_from_JSON(mixed json) {
     retval.obj5_typedef = json["typedef"];
     if (!mappingp(json["typeof"])) error("Expected object");
     retval.obj5_typeof = json["typeof"];
+    if (!mappingp(json["PrimitiveKind"])) error("Expected object");
+    retval.primitive_kind = json["PrimitiveKind"];
     if (!mappingp(json["Self"])) error("Expected object");
     retval.self = json["Self"];
     if (!mappingp(json["Sendable"])) error("Expected object");
     retval.sendable = json["Sendable"];
+    if (!mappingp(json["SerialDescriptor"])) error("Expected object");
+    retval.serial_descriptor = json["SerialDescriptor"];
+    if (!mappingp(json["SerialName"])) error("Expected object");
+    retval.serial_name = json["SerialName"];
+    if (!mappingp(json["Serializable"])) error("Expected object");
+    retval.serializable = json["Serializable"];
     if (!mappingp(json["serialize"])) error("Expected object");
     retval.serialize = json["serialize"];
     if (!mappingp(json["SerializerProvider"])) error("Expected object");
@@ -6805,20 +6815,31 @@ Obj5 Obj5_from_JSON(mixed json) {
     retval.unsafe = json["unsafe"];
     if (!mappingp(json["unsigned"])) error("Expected object");
     retval.unsigned = json["unsigned"];
+    if (!mappingp(json["UseSerializers"])) error("Expected object");
+    retval.use_serializers = json["UseSerializers"];
     if (!mappingp(json["ushort"])) error("Expected object");
     retval.ushort = json["ushort"];
-    if (!mappingp(json["using"])) error("Expected object");
-    retval.using = json["using"];
-    if (!mappingp(json["Utf8JsonReader"])) error("Expected object");
-    retval.utf8_json_reader = json["Utf8JsonReader"];
-    if (!mappingp(json["Utf8JsonWriter"])) error("Expected object");
-    retval.utf8_json_writer = json["Utf8JsonWriter"];
-    if (!mappingp(json["UUID"])) error("Expected object");
-    retval.uuid = json["UUID"];
-    if (!mappingp(json["var"])) error("Expected object");
-    retval.var = json["var"];
-    if (!mappingp(json["virtual"])) error("Expected object");
-    retval.virtual = json["virtual"];
+
+    return retval;
+}
+
+class KSerializer {
+    int k_serializer; // json: "KSerializer"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "KSerializer" : k_serializer,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+KSerializer KSerializer_from_JSON(mixed json) {
+    KSerializer retval = KSerializer();
+
+    if (!intp(json["KSerializer"])) error("Expected integer");
+    retval.k_serializer = json["KSerializer"];
 
     return retval;
 }
@@ -6991,6 +7012,27 @@ Typeof Typeof_from_JSON(mixed json) {
     return retval;
 }
 
+class PrimitiveKind {
+    int primitive_kind; // json: "PrimitiveKind"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "PrimitiveKind" : primitive_kind,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+PrimitiveKind PrimitiveKind_from_JSON(mixed json) {
+    PrimitiveKind retval = PrimitiveKind();
+
+    if (!intp(json["PrimitiveKind"])) error("Expected integer");
+    retval.primitive_kind = json["PrimitiveKind"];
+
+    return retval;
+}
+
 class Self {
     int self; // json: "Self"
 
@@ -7033,6 +7075,69 @@ Sendable Sendable_from_JSON(mixed json) {
     return retval;
 }
 
+class SerialDescriptor {
+    int serial_descriptor; // json: "SerialDescriptor"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "SerialDescriptor" : serial_descriptor,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+SerialDescriptor SerialDescriptor_from_JSON(mixed json) {
+    SerialDescriptor retval = SerialDescriptor();
+
+    if (!intp(json["SerialDescriptor"])) error("Expected integer");
+    retval.serial_descriptor = json["SerialDescriptor"];
+
+    return retval;
+}
+
+class SerialName {
+    int serial_name; // json: "SerialName"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "SerialName" : serial_name,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+SerialName SerialName_from_JSON(mixed json) {
+    SerialName retval = SerialName();
+
+    if (!intp(json["SerialName"])) error("Expected integer");
+    retval.serial_name = json["SerialName"];
+
+    return retval;
+}
+
+class Serializable {
+    int serializable; // json: "Serializable"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "Serializable" : serializable,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Serializable Serializable_from_JSON(mixed json) {
+    Serializable retval = Serializable();
+
+    if (!intp(json["Serializable"])) error("Expected integer");
+    retval.serializable = json["Serializable"];
+
+    return retval;
+}
+
 class Serialize {
     int serialize; // json: "serialize"
 
@@ -8020,6 +8125,27 @@ Unsigned Unsigned_from_JSON(mixed json) {
     return retval;
 }
 
+class UseSerializers {
+    int use_serializers; // json: "UseSerializers"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "UseSerializers" : use_serializers,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+UseSerializers UseSerializers_from_JSON(mixed json) {
+    UseSerializers retval = UseSerializers();
+
+    if (!intp(json["UseSerializers"])) error("Expected integer");
+    retval.use_serializers = json["UseSerializers"];
+
+    return retval;
+}
+
 class Ushort {
     int ushort; // json: "ushort"
 
@@ -8041,239 +8167,263 @@ Ushort Ushort_from_JSON(mixed json) {
     return retval;
 }
 
-class Using {
-    int using; // json: "using"
+class Obj6 {
+    int            dummy;            // json: "dummy"
+    Void           obj6_void;        // json: "void"
+    While          obj6_while;       // json: "while"
+    Using          using;            // json: "using"
+    Utf8JsonReader utf8_json_reader; // json: "Utf8JsonReader"
+    Utf8JsonWriter utf8_json_writer; // json: "Utf8JsonWriter"
+    Uuid           uuid;             // json: "UUID"
+    Var            var;              // json: "var"
+    Virtual        virtual;          // json: "virtual"
+    Volatile       volatile;         // json: "volatile"
+    WcharT         wchar_t;          // json: "wchar_t"
+    Weak           weak;             // json: "weak"
+    Where          where;            // json: "where"
+    WillSet        will_set;         // json: "willSet"
+    With           with;             // json: "with"
+    Xor            xor;              // json: "xor"
+    XorEq          xor_eq;           // json: "xor_eq"
+    Yes            yes;              // json: "YES"
+    Yield          yield;            // json: "yield"
 
     string encode_json() {
         mapping(string:mixed) json = ([
+            "dummy" : dummy,
+            "void" : obj6_void,
+            "while" : obj6_while,
             "using" : using,
+            "Utf8JsonReader" : utf8_json_reader,
+            "Utf8JsonWriter" : utf8_json_writer,
+            "UUID" : uuid,
+            "var" : var,
+            "virtual" : virtual,
+            "volatile" : volatile,
+            "wchar_t" : wchar_t,
+            "weak" : weak,
+            "where" : where,
+            "willSet" : will_set,
+            "with" : with,
+            "xor" : xor,
+            "xor_eq" : xor_eq,
+            "YES" : yes,
+            "yield" : yield,
         ]);
 
         return Standards.JSON.encode(json);
     }
 }
 
-Using Using_from_JSON(mixed json) {
-    Using retval = Using();
+Obj6 Obj6_from_JSON(mixed json) {
+    Obj6 retval = Obj6();
 
-    if (!intp(json["using"])) error("Expected integer");
+    if (!intp(json["dummy"])) error("Expected integer");
+    retval.dummy = json["dummy"];
+    if (!mappingp(json["void"])) error("Expected object");
+    retval.obj6_void = json["void"];
+    if (!mappingp(json["while"])) error("Expected object");
+    retval.obj6_while = json["while"];
+    if (!mappingp(json["using"])) error("Expected object");
     retval.using = json["using"];
+    if (!mappingp(json["Utf8JsonReader"])) error("Expected object");
+    retval.utf8_json_reader = json["Utf8JsonReader"];
+    if (!mappingp(json["Utf8JsonWriter"])) error("Expected object");
+    retval.utf8_json_writer = json["Utf8JsonWriter"];
+    if (!mappingp(json["UUID"])) error("Expected object");
+    retval.uuid = json["UUID"];
+    if (!mappingp(json["var"])) error("Expected object");
+    retval.var = json["var"];
+    if (!mappingp(json["virtual"])) error("Expected object");
+    retval.virtual = json["virtual"];
+    if (!mappingp(json["volatile"])) error("Expected object");
+    retval.volatile = json["volatile"];
+    if (!mappingp(json["wchar_t"])) error("Expected object");
+    retval.wchar_t = json["wchar_t"];
+    if (!mappingp(json["weak"])) error("Expected object");
+    retval.weak = json["weak"];
+    if (!mappingp(json["where"])) error("Expected object");
+    retval.where = json["where"];
+    if (!mappingp(json["willSet"])) error("Expected object");
+    retval.will_set = json["willSet"];
+    if (!mappingp(json["with"])) error("Expected object");
+    retval.with = json["with"];
+    if (!mappingp(json["xor"])) error("Expected object");
+    retval.xor = json["xor"];
+    if (!mappingp(json["xor_eq"])) error("Expected object");
+    retval.xor_eq = json["xor_eq"];
+    if (!mappingp(json["YES"])) error("Expected object");
+    retval.yes = json["YES"];
+    if (!mappingp(json["yield"])) error("Expected object");
+    retval.yield = json["yield"];
 
     return retval;
 }
 
-class Utf8JsonReader {
-    int utf8_json_reader; // json: "Utf8JsonReader"
+class Void {
+    int void_void; // json: "void"
 
     string encode_json() {
         mapping(string:mixed) json = ([
-            "Utf8JsonReader" : utf8_json_reader,
+            "void" : void_void,
         ]);
 
         return Standards.JSON.encode(json);
     }
 }
 
-Utf8JsonReader Utf8JsonReader_from_JSON(mixed json) {
-    Utf8JsonReader retval = Utf8JsonReader();
+Void Void_from_JSON(mixed json) {
+    Void retval = Void();
 
-    if (!intp(json["Utf8JsonReader"])) error("Expected integer");
-    retval.utf8_json_reader = json["Utf8JsonReader"];
+    if (!intp(json["void"])) error("Expected integer");
+    retval.void_void = json["void"];
 
     return retval;
 }
 
-class Utf8JsonWriter {
-    int utf8_json_writer; // json: "Utf8JsonWriter"
+class While {
+    int while_while; // json: "while"
 
     string encode_json() {
         mapping(string:mixed) json = ([
-            "Utf8JsonWriter" : utf8_json_writer,
+            "while" : while_while,
         ]);
 
         return Standards.JSON.encode(json);
     }
 }
 
-Utf8JsonWriter Utf8JsonWriter_from_JSON(mixed json) {
-    Utf8JsonWriter retval = Utf8JsonWriter();
+While While_from_JSON(mixed json) {
+    While retval = While();
 
-    if (!intp(json["Utf8JsonWriter"])) error("Expected integer");
-    retval.utf8_json_writer = json["Utf8JsonWriter"];
+    if (!intp(json["while"])) error("Expected integer");
+    retval.while_while = json["while"];
 
     return retval;
 }
 
-class Uuid {
-    int uuid; // json: "UUID"
+class Using {
+    int using; // json: "using"
 
     string encode_json() {
         mapping(string:mixed) json = ([
-            "UUID" : uuid,
+            "using" : using,
         ]);
 
         return Standards.JSON.encode(json);
     }
 }
 
-Uuid Uuid_from_JSON(mixed json) {
-    Uuid retval = Uuid();
+Using Using_from_JSON(mixed json) {
+    Using retval = Using();
 
-    if (!intp(json["UUID"])) error("Expected integer");
-    retval.uuid = json["UUID"];
+    if (!intp(json["using"])) error("Expected integer");
+    retval.using = json["using"];
 
     return retval;
 }
 
-class Var {
-    int var; // json: "var"
+class Utf8JsonReader {
+    int utf8_json_reader; // json: "Utf8JsonReader"
 
     string encode_json() {
         mapping(string:mixed) json = ([
-            "var" : var,
+            "Utf8JsonReader" : utf8_json_reader,
         ]);
 
         return Standards.JSON.encode(json);
     }
 }
 
-Var Var_from_JSON(mixed json) {
-    Var retval = Var();
+Utf8JsonReader Utf8JsonReader_from_JSON(mixed json) {
+    Utf8JsonReader retval = Utf8JsonReader();
 
-    if (!intp(json["var"])) error("Expected integer");
-    retval.var = json["var"];
+    if (!intp(json["Utf8JsonReader"])) error("Expected integer");
+    retval.utf8_json_reader = json["Utf8JsonReader"];
 
     return retval;
 }
 
-class Virtual {
-    int virtual; // json: "virtual"
+class Utf8JsonWriter {
+    int utf8_json_writer; // json: "Utf8JsonWriter"
 
     string encode_json() {
         mapping(string:mixed) json = ([
-            "virtual" : virtual,
+            "Utf8JsonWriter" : utf8_json_writer,
         ]);
 
         return Standards.JSON.encode(json);
     }
 }
 
-Virtual Virtual_from_JSON(mixed json) {
-    Virtual retval = Virtual();
+Utf8JsonWriter Utf8JsonWriter_from_JSON(mixed json) {
+    Utf8JsonWriter retval = Utf8JsonWriter();
 
-    if (!intp(json["virtual"])) error("Expected integer");
-    retval.virtual = json["virtual"];
+    if (!intp(json["Utf8JsonWriter"])) error("Expected integer");
+    retval.utf8_json_writer = json["Utf8JsonWriter"];
 
     return retval;
 }
 
-class Obj6 {
-    int      dummy;      // json: "dummy"
-    Void     obj6_void;  // json: "void"
-    While    obj6_while; // json: "while"
-    Volatile volatile;   // json: "volatile"
-    WcharT   wchar_t;    // json: "wchar_t"
-    Weak     weak;       // json: "weak"
-    Where    where;      // json: "where"
-    WillSet  will_set;   // json: "willSet"
-    With     with;       // json: "with"
-    Xor      xor;        // json: "xor"
-    XorEq    xor_eq;     // json: "xor_eq"
-    Yes      yes;        // json: "YES"
-    Yield    yield;      // json: "yield"
+class Uuid {
+    int uuid; // json: "UUID"
 
     string encode_json() {
         mapping(string:mixed) json = ([
-            "dummy" : dummy,
-            "void" : obj6_void,
-            "while" : obj6_while,
-            "volatile" : volatile,
-            "wchar_t" : wchar_t,
-            "weak" : weak,
-            "where" : where,
-            "willSet" : will_set,
-            "with" : with,
-            "xor" : xor,
-            "xor_eq" : xor_eq,
-            "YES" : yes,
-            "yield" : yield,
+            "UUID" : uuid,
         ]);
 
         return Standards.JSON.encode(json);
     }
 }
 
-Obj6 Obj6_from_JSON(mixed json) {
-    Obj6 retval = Obj6();
+Uuid Uuid_from_JSON(mixed json) {
+    Uuid retval = Uuid();
 
-    if (!intp(json["dummy"])) error("Expected integer");
-    retval.dummy = json["dummy"];
-    if (!mappingp(json["void"])) error("Expected object");
-    retval.obj6_void = json["void"];
-    if (!mappingp(json["while"])) error("Expected object");
-    retval.obj6_while = json["while"];
-    if (!mappingp(json["volatile"])) error("Expected object");
-    retval.volatile = json["volatile"];
-    if (!mappingp(json["wchar_t"])) error("Expected object");
-    retval.wchar_t = json["wchar_t"];
-    if (!mappingp(json["weak"])) error("Expected object");
-    retval.weak = json["weak"];
-    if (!mappingp(json["where"])) error("Expected object");
-    retval.where = json["where"];
-    if (!mappingp(json["willSet"])) error("Expected object");
-    retval.will_set = json["willSet"];
-    if (!mappingp(json["with"])) error("Expected object");
-    retval.with = json["with"];
-    if (!mappingp(json["xor"])) error("Expected object");
-    retval.xor = json["xor"];
-    if (!mappingp(json["xor_eq"])) error("Expected object");
-    retval.xor_eq = json["xor_eq"];
-    if (!mappingp(json["YES"])) error("Expected object");
-    retval.yes = json["YES"];
-    if (!mappingp(json["yield"])) error("Expected object");
-    retval.yield = json["yield"];
+    if (!intp(json["UUID"])) error("Expected integer");
+    retval.uuid = json["UUID"];
 
     return retval;
 }
 
-class Void {
-    int void_void; // json: "void"
+class Var {
+    int var; // json: "var"
 
     string encode_json() {
         mapping(string:mixed) json = ([
-            "void" : void_void,
+            "var" : var,
         ]);
 
         return Standards.JSON.encode(json);
     }
 }
 
-Void Void_from_JSON(mixed json) {
-    Void retval = Void();
+Var Var_from_JSON(mixed json) {
+    Var retval = Var();
 
-    if (!intp(json["void"])) error("Expected integer");
-    retval.void_void = json["void"];
+    if (!intp(json["var"])) error("Expected integer");
+    retval.var = json["var"];
 
     return retval;
 }
 
-class While {
-    int while_while; // json: "while"
+class Virtual {
+    int virtual; // json: "virtual"
 
     string encode_json() {
         mapping(string:mixed) json = ([
-            "while" : while_while,
+            "virtual" : virtual,
         ]);
 
         return Standards.JSON.encode(json);
     }
 }
 
-While While_from_JSON(mixed json) {
-    While retval = While();
+Virtual Virtual_from_JSON(mixed json) {
+    Virtual retval = Virtual();
 
-    if (!intp(json["while"])) error("Expected integer");
-    retval.while_while = json["while"];
+    if (!intp(json["virtual"])) error("Expected integer");
+    retval.virtual = json["virtual"];
 
     return retval;
 }
diff --git a/base/python/test/inputs/json/priority/keywords.json/default/quicktype.py b/head/python/test/inputs/json/priority/keywords.json/default/quicktype.py
index 5f50f37..5a12279 100644
--- a/base/python/test/inputs/json/priority/keywords.json/default/quicktype.py
+++ b/head/python/test/inputs/json/priority/keywords.json/default/quicktype.py
@@ -4972,6 +4972,22 @@ class Obj4:
         return result
 
 
+@dataclass
+class KSerializer:
+    k_serializer: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'KSerializer':
+        assert isinstance(obj, dict)
+        k_serializer = from_int(obj["KSerializer"])
+        return KSerializer(k_serializer)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["KSerializer"] = from_int(self.k_serializer)
+        return result
+
+
 @dataclass
 class Self:
     self_self: int
@@ -5036,6 +5052,22 @@ class Obj5Type:
         return result
 
 
+@dataclass
+class PrimitiveKind:
+    primitive_kind: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'PrimitiveKind':
+        assert isinstance(obj, dict)
+        primitive_kind = from_int(obj["PrimitiveKind"])
+        return PrimitiveKind(primitive_kind)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["PrimitiveKind"] = from_int(self.primitive_kind)
+        return result
+
+
 @dataclass
 class SelfClass:
     self_self: int
@@ -5068,6 +5100,54 @@ class Sendable:
         return result
 
 
+@dataclass
+class SerialDescriptor:
+    serial_descriptor: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'SerialDescriptor':
+        assert isinstance(obj, dict)
+        serial_descriptor = from_int(obj["SerialDescriptor"])
+        return SerialDescriptor(serial_descriptor)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["SerialDescriptor"] = from_int(self.serial_descriptor)
+        return result
+
+
+@dataclass
+class SerialName:
+    serial_name: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'SerialName':
+        assert isinstance(obj, dict)
+        serial_name = from_int(obj["SerialName"])
+        return SerialName(serial_name)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["SerialName"] = from_int(self.serial_name)
+        return result
+
+
+@dataclass
+class Serializable:
+    serializable: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Serializable':
+        assert isinstance(obj, dict)
+        serializable = from_int(obj["Serializable"])
+        return Serializable(serializable)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["Serializable"] = from_int(self.serializable)
+        return result
+
+
 @dataclass
 class Serialize:
     serialize: int
@@ -5885,121 +5965,46 @@ class Unsigned:
 
 
 @dataclass
-class Ushort:
-    ushort: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'Ushort':
-        assert isinstance(obj, dict)
-        ushort = from_int(obj["ushort"])
-        return Ushort(ushort)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["ushort"] = from_int(self.ushort)
-        return result
-
-
-@dataclass
-class Using:
-    using: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'Using':
-        assert isinstance(obj, dict)
-        using = from_int(obj["using"])
-        return Using(using)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["using"] = from_int(self.using)
-        return result
-
-
-@dataclass
-class Utf8JSONReader:
-    utf8_json_reader: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'Utf8JSONReader':
-        assert isinstance(obj, dict)
-        utf8_json_reader = from_int(obj["Utf8JsonReader"])
-        return Utf8JSONReader(utf8_json_reader)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["Utf8JsonReader"] = from_int(self.utf8_json_reader)
-        return result
-
-
-@dataclass
-class Utf8JSONWriter:
-    utf8_json_writer: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'Utf8JSONWriter':
-        assert isinstance(obj, dict)
-        utf8_json_writer = from_int(obj["Utf8JsonWriter"])
-        return Utf8JSONWriter(utf8_json_writer)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["Utf8JsonWriter"] = from_int(self.utf8_json_writer)
-        return result
-
-
-@dataclass
-class UUIDClass:
-    uuid: int
+class UseSerializers:
+    use_serializers: int
 
     @staticmethod
-    def from_dict(obj: Any) -> 'UUIDClass':
+    def from_dict(obj: Any) -> 'UseSerializers':
         assert isinstance(obj, dict)
-        uuid = from_int(obj["UUID"])
-        return UUIDClass(uuid)
+        use_serializers = from_int(obj["UseSerializers"])
+        return UseSerializers(use_serializers)
 
     def to_dict(self) -> dict:
         result: dict = {}
-        result["UUID"] = from_int(self.uuid)
+        result["UseSerializers"] = from_int(self.use_serializers)
         return result
 
 
 @dataclass
-class Var:
-    var: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'Var':
-        assert isinstance(obj, dict)
-        var = from_int(obj["var"])
-        return Var(var)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["var"] = from_int(self.var)
-        return result
-
-
-@dataclass
-class Virtual:
-    virtual: int
+class Ushort:
+    ushort: int
 
     @staticmethod
-    def from_dict(obj: Any) -> 'Virtual':
+    def from_dict(obj: Any) -> 'Ushort':
         assert isinstance(obj, dict)
-        virtual = from_int(obj["virtual"])
-        return Virtual(virtual)
+        ushort = from_int(obj["ushort"])
+        return Ushort(ushort)
 
     def to_dict(self) -> dict:
         result: dict = {}
-        result["virtual"] = from_int(self.virtual)
+        result["ushort"] = from_int(self.ushort)
         return result
 
 
 @dataclass
 class Obj5:
+    k_serializer: KSerializer
+    primitive_kind: PrimitiveKind
     obj5_self: Self
     sendable: Sendable
+    serial_descriptor: SerialDescriptor
+    serial_name: SerialName
+    serializable: Serializable
     serializer_provider: SerializerProvider
     simple_module: SimpleModule
     standards: Standards
@@ -6010,9 +6015,7 @@ class Obj5:
     time_zone: TimeZone
     true: TrueClass
     type: TypeClass
-    uuid: UUIDClass
-    utf8_json_reader: Utf8JSONReader
-    utf8_json_writer: Utf8JSONWriter
+    use_serializers: UseSerializers
     dummy: int
     purple_self: SelfClass
     serialize: Serialize
@@ -6060,15 +6063,17 @@ class Obj5:
     unsafe: Unsafe
     unsigned: Unsigned
     ushort: Ushort
-    using: Using
-    var: Var
-    virtual: Virtual
 
     @staticmethod
     def from_dict(obj: Any) -> 'Obj5':
         assert isinstance(obj, dict)
+        k_serializer = KSerializer.from_dict(obj["KSerializer"])
+        primitive_kind = PrimitiveKind.from_dict(obj["PrimitiveKind"])
         obj5_self = Self.from_dict(obj["Self"])
         sendable = Sendable.from_dict(obj["Sendable"])
+        serial_descriptor = SerialDescriptor.from_dict(obj["SerialDescriptor"])
+        serial_name = SerialName.from_dict(obj["SerialName"])
+        serializable = Serializable.from_dict(obj["Serializable"])
         serializer_provider = SerializerProvider.from_dict(obj["SerializerProvider"])
         simple_module = SimpleModule.from_dict(obj["SimpleModule"])
         standards = Standards.from_dict(obj["Standards"])
@@ -6079,9 +6084,7 @@ class Obj5:
         time_zone = TimeZone.from_dict(obj["TimeZone"])
         true = TrueClass.from_dict(obj["True"])
         type = TypeClass.from_dict(obj["Type"])
-        uuid = UUIDClass.from_dict(obj["UUID"])
-        utf8_json_reader = Utf8JSONReader.from_dict(obj["Utf8JsonReader"])
-        utf8_json_writer = Utf8JSONWriter.from_dict(obj["Utf8JsonWriter"])
+        use_serializers = UseSerializers.from_dict(obj["UseSerializers"])
         dummy = from_int(obj["dummy"])
         purple_self = SelfClass.from_dict(obj["self"])
         serialize = Serialize.from_dict(obj["serialize"])
@@ -6129,15 +6132,17 @@ class Obj5:
         unsafe = Unsafe.from_dict(obj["unsafe"])
         unsigned = Unsigned.from_dict(obj["unsigned"])
         ushort = Ushort.from_dict(obj["ushort"])
-        using = Using.from_dict(obj["using"])
-        var = Var.from_dict(obj["var"])
-        virtual = Virtual.from_dict(obj["virtual"])
-        return Obj5(obj5_self, sendable, serializer_provider, simple_module, standards, std_deserializer, std_serializer, time_only, time_only_converter, time_zone, true, type, uuid, utf8_json_reader, utf8_json_writer, dummy, purple_self, serialize, set, short, signed, sizeof, stackalloc, static, static_assert, static_cast, strictfp, string, struct, subscript, super, switch, symbol, synchronized, system, template, then, this, thread_local, throw, throws, to_string, to_json, top_level, transient, obj5_true, obj5_try, obj5_type, typealias, typedef, typeid, typename, typeof, uint, ulong, unchecked, undefined, union, unowned, unsafe, unsigned, ushort, using, var, virtual)
+        return Obj5(k_serializer, primitive_kind, obj5_self, sendable, serial_descriptor, serial_name, serializable, serializer_provider, simple_module, standards, std_deserializer, std_serializer, time_only, time_only_converter, time_zone, true, type, use_serializers, dummy, purple_self, serialize, set, short, signed, sizeof, stackalloc, static, static_assert, static_cast, strictfp, string, struct, subscript, super, switch, symbol, synchronized, system, template, then, this, thread_local, throw, throws, to_string, to_json, top_level, transient, obj5_true, obj5_try, obj5_type, typealias, typedef, typeid, typename, typeof, uint, ulong, unchecked, undefined, union, unowned, unsafe, unsigned, ushort)
 
     def to_dict(self) -> dict:
         result: dict = {}
+        result["KSerializer"] = to_class(KSerializer, self.k_serializer)
+        result["PrimitiveKind"] = to_class(PrimitiveKind, self.primitive_kind)
         result["Self"] = to_class(Self, self.obj5_self)
         result["Sendable"] = to_class(Sendable, self.sendable)
+        result["SerialDescriptor"] = to_class(SerialDescriptor, self.serial_descriptor)
+        result["SerialName"] = to_class(SerialName, self.serial_name)
+        result["Serializable"] = to_class(Serializable, self.serializable)
         result["SerializerProvider"] = to_class(SerializerProvider, self.serializer_provider)
         result["SimpleModule"] = to_class(SimpleModule, self.simple_module)
         result["Standards"] = to_class(Standards, self.standards)
@@ -6148,9 +6153,7 @@ class Obj5:
         result["TimeZone"] = to_class(TimeZone, self.time_zone)
         result["True"] = to_class(TrueClass, self.true)
         result["Type"] = to_class(TypeClass, self.type)
-        result["UUID"] = to_class(UUIDClass, self.uuid)
-        result["Utf8JsonReader"] = to_class(Utf8JSONReader, self.utf8_json_reader)
-        result["Utf8JsonWriter"] = to_class(Utf8JSONWriter, self.utf8_json_writer)
+        result["UseSerializers"] = to_class(UseSerializers, self.use_serializers)
         result["dummy"] = from_int(self.dummy)
         result["self"] = to_class(SelfClass, self.purple_self)
         result["serialize"] = to_class(Serialize, self.serialize)
@@ -6198,9 +6201,6 @@ class Obj5:
         result["unsafe"] = to_class(Unsafe, self.unsafe)
         result["unsigned"] = to_class(Unsigned, self.unsigned)
         result["ushort"] = to_class(Ushort, self.ushort)
-        result["using"] = to_class(Using, self.using)
-        result["var"] = to_class(Var, self.var)
-        result["virtual"] = to_class(Virtual, self.virtual)
         return result
 
 
@@ -6252,6 +6252,102 @@ class Yield:
         return result
 
 
+@dataclass
+class Using:
+    using: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Using':
+        assert isinstance(obj, dict)
+        using = from_int(obj["using"])
+        return Using(using)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["using"] = from_int(self.using)
+        return result
+
+
+@dataclass
+class Utf8JSONReader:
+    utf8_json_reader: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Utf8JSONReader':
+        assert isinstance(obj, dict)
+        utf8_json_reader = from_int(obj["Utf8JsonReader"])
+        return Utf8JSONReader(utf8_json_reader)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["Utf8JsonReader"] = from_int(self.utf8_json_reader)
+        return result
+
+
+@dataclass
+class Utf8JSONWriter:
+    utf8_json_writer: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Utf8JSONWriter':
+        assert isinstance(obj, dict)
+        utf8_json_writer = from_int(obj["Utf8JsonWriter"])
+        return Utf8JSONWriter(utf8_json_writer)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["Utf8JsonWriter"] = from_int(self.utf8_json_writer)
+        return result
+
+
+@dataclass
+class UUIDClass:
+    uuid: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'UUIDClass':
+        assert isinstance(obj, dict)
+        uuid = from_int(obj["UUID"])
+        return UUIDClass(uuid)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["UUID"] = from_int(self.uuid)
+        return result
+
+
+@dataclass
+class Var:
+    var: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Var':
+        assert isinstance(obj, dict)
+        var = from_int(obj["var"])
+        return Var(var)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["var"] = from_int(self.var)
+        return result
+
+
+@dataclass
+class Virtual:
+    virtual: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Virtual':
+        assert isinstance(obj, dict)
+        virtual = from_int(obj["virtual"])
+        return Virtual(virtual)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["virtual"] = from_int(self.virtual)
+        return result
+
+
 @dataclass
 class Void:
     void: int
@@ -6398,8 +6494,14 @@ class Yes:
 
 @dataclass
 class Obj6:
+    uuid: UUIDClass
+    utf8_json_reader: Utf8JSONReader
+    utf8_json_writer: Utf8JSONWriter
     yes: Yes
     dummy: int
+    using: Using
+    var: Var
+    virtual: Virtual
     void: Void
     volatile: Volatile
     wchar_t: WcharT
@@ -6415,8 +6517,14 @@ class Obj6:
     @staticmethod
     def from_dict(obj: Any) -> 'Obj6':
         assert isinstance(obj, dict)
+        uuid = UUIDClass.from_dict(obj["UUID"])
+        utf8_json_reader = Utf8JSONReader.from_dict(obj["Utf8JsonReader"])
+        utf8_json_writer = Utf8JSONWriter.from_dict(obj["Utf8JsonWriter"])
         yes = Yes.from_dict(obj["YES"])
         dummy = from_int(obj["dummy"])
+        using = Using.from_dict(obj["using"])
+        var = Var.from_dict(obj["var"])
+        virtual = Virtual.from_dict(obj["virtual"])
         void = Void.from_dict(obj["void"])
         volatile = Volatile.from_dict(obj["volatile"])
         wchar_t = WcharT.from_dict(obj["wchar_t"])
@@ -6428,12 +6536,18 @@ class Obj6:
         xor = Xor.from_dict(obj["xor"])
         xor_eq = XorEq.from_dict(obj["xor_eq"])
         obj6_yield = Yield.from_dict(obj["yield"])
-        return Obj6(yes, dummy, void, volatile, wchar_t, weak, where, obj6_while, will_set, obj6_with, xor, xor_eq, obj6_yield)
+        return Obj6(uuid, utf8_json_reader, utf8_json_writer, yes, dummy, using, var, virtual, void, volatile, wchar_t, weak, where, obj6_while, will_set, obj6_with, xor, xor_eq, obj6_yield)
 
     def to_dict(self) -> dict:
         result: dict = {}
+        result["UUID"] = to_class(UUIDClass, self.uuid)
+        result["Utf8JsonReader"] = to_class(Utf8JSONReader, self.utf8_json_reader)
+        result["Utf8JsonWriter"] = to_class(Utf8JSONWriter, self.utf8_json_writer)
         result["YES"] = to_class(Yes, self.yes)
         result["dummy"] = from_int(self.dummy)
+        result["using"] = to_class(Using, self.using)
+        result["var"] = to_class(Var, self.var)
+        result["virtual"] = to_class(Virtual, self.virtual)
         result["void"] = to_class(Void, self.void)
         result["volatile"] = to_class(Volatile, self.volatile)
         result["wchar_t"] = to_class(WcharT, self.wchar_t)
diff --git a/base/ruby/test/inputs/json/priority/keywords.json/default/TopLevel.rb b/head/ruby/test/inputs/json/priority/keywords.json/default/TopLevel.rb
index 9296b03..eabf957 100644
--- a/base/ruby/test/inputs/json/priority/keywords.json/default/TopLevel.rb
+++ b/head/ruby/test/inputs/json/priority/keywords.json/default/TopLevel.rb
@@ -7295,6 +7295,31 @@ class Obj4 < Dry::Struct
   end
 end
 
+class KSerializer < Dry::Struct
+  attribute :k_serializer, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      k_serializer: d.fetch("KSerializer"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "KSerializer" => k_serializer,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class SelfClass < Dry::Struct
   attribute :self_self, Types::Integer
 
@@ -7520,6 +7545,31 @@ class Type < Dry::Struct
   end
 end
 
+class PrimitiveKind < Dry::Struct
+  attribute :primitive_kind, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      primitive_kind: d.fetch("PrimitiveKind"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "PrimitiveKind" => primitive_kind,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Obj5Self < Dry::Struct
   attribute :self_self, Types::Integer
 
@@ -7570,6 +7620,81 @@ class Sendable < Dry::Struct
   end
 end
 
+class SerialDescriptor < Dry::Struct
+  attribute :serial_descriptor, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      serial_descriptor: d.fetch("SerialDescriptor"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "SerialDescriptor" => serial_descriptor,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class SerialName < Dry::Struct
+  attribute :serial_name, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      serial_name: d.fetch("SerialName"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "SerialName" => serial_name,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class Serializable < Dry::Struct
+  attribute :serializable, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      serializable: d.fetch("Serializable"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "Serializable" => serializable,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Serialize < Dry::Struct
   attribute :serialize, Types::Integer
 
@@ -8720,13 +8845,13 @@ class Unsigned < Dry::Struct
   end
 end
 
-class Ushort < Dry::Struct
-  attribute :ushort, Types::Integer
+class UseSerializers < Dry::Struct
+  attribute :use_serializers, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      ushort: d.fetch("ushort"),
+      use_serializers: d.fetch("UseSerializers"),
     )
   end
 
@@ -8736,7 +8861,7 @@ class Ushort < Dry::Struct
 
   def to_dynamic
     {
-      "ushort" => ushort,
+      "UseSerializers" => use_serializers,
     }
   end
 
@@ -8745,138 +8870,13 @@ class Ushort < Dry::Struct
   end
 end
 
-class Using < Dry::Struct
-  attribute :using, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      using: d.fetch("using"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "using" => using,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
-class Utf8JSONReader < Dry::Struct
-  attribute :utf8_json_reader, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      utf8_json_reader: d.fetch("Utf8JsonReader"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "Utf8JsonReader" => utf8_json_reader,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
-class Utf8JSONWriter < Dry::Struct
-  attribute :utf8_json_writer, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      utf8_json_writer: d.fetch("Utf8JsonWriter"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "Utf8JsonWriter" => utf8_json_writer,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
-class UUID < Dry::Struct
-  attribute :uuid, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      uuid: d.fetch("UUID"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "UUID" => uuid,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
-class Var < Dry::Struct
-  attribute :var, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      var: d.fetch("var"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "var" => var,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
-class Virtual < Dry::Struct
-  attribute :virtual, Types::Integer
+class Ushort < Dry::Struct
+  attribute :ushort, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      virtual: d.fetch("virtual"),
+      ushort: d.fetch("ushort"),
     )
   end
 
@@ -8886,7 +8886,7 @@ class Virtual < Dry::Struct
 
   def to_dynamic
     {
-      "virtual" => virtual,
+      "ushort" => ushort,
     }
   end
 
@@ -8897,6 +8897,7 @@ end
 
 class Obj5 < Dry::Struct
   attribute :dummy,               Types::Integer
+  attribute :k_serializer,        KSerializer
   attribute :obj5_self,           SelfClass
   attribute :obj5_super,          Super
   attribute :obj5_system,         System
@@ -8906,8 +8907,12 @@ class Obj5 < Dry::Struct
   attribute :obj5_true,           True
   attribute :obj5_try,            Try
   attribute :obj5_type,           Type
+  attribute :primitive_kind,      PrimitiveKind
   attribute :self_1,              Obj5Self
   attribute :sendable,            Sendable
+  attribute :serial_descriptor,   SerialDescriptor
+  attribute :serial_name,         SerialName
+  attribute :serializable,        Serializable
   attribute :serialize,           Serialize
   attribute :serializer_provider, SerializerProvider
   attribute :set,                 SetClass
@@ -8954,18 +8959,14 @@ class Obj5 < Dry::Struct
   attribute :unowned,             Unowned
   attribute :unsafe,              Unsafe
   attribute :unsigned,            Unsigned
+  attribute :use_serializers,     UseSerializers
   attribute :ushort,              Ushort
-  attribute :using,               Using
-  attribute :utf8_json_reader,    Utf8JSONReader
-  attribute :utf8_json_writer,    Utf8JSONWriter
-  attribute :uuid,                UUID
-  attribute :var,                 Var
-  attribute :virtual,             Virtual
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
       dummy:               d.fetch("dummy"),
+      k_serializer:        KSerializer.from_dynamic!(d.fetch("KSerializer")),
       obj5_self:           SelfClass.from_dynamic!(d.fetch("Self")),
       obj5_super:          Super.from_dynamic!(d.fetch("super")),
       obj5_system:         System.from_dynamic!(d.fetch("system")),
@@ -8975,8 +8976,12 @@ class Obj5 < Dry::Struct
       obj5_true:           True.from_dynamic!(d.fetch("True")),
       obj5_try:            Try.from_dynamic!(d.fetch("try")),
       obj5_type:           Type.from_dynamic!(d.fetch("Type")),
+      primitive_kind:      PrimitiveKind.from_dynamic!(d.fetch("PrimitiveKind")),
       self_1:              Obj5Self.from_dynamic!(d.fetch("self")),
       sendable:            Sendable.from_dynamic!(d.fetch("Sendable")),
+      serial_descriptor:   SerialDescriptor.from_dynamic!(d.fetch("SerialDescriptor")),
+      serial_name:         SerialName.from_dynamic!(d.fetch("SerialName")),
+      serializable:        Serializable.from_dynamic!(d.fetch("Serializable")),
       serialize:           Serialize.from_dynamic!(d.fetch("serialize")),
       serializer_provider: SerializerProvider.from_dynamic!(d.fetch("SerializerProvider")),
       set:                 SetClass.from_dynamic!(d.fetch("set")),
@@ -9023,13 +9028,8 @@ class Obj5 < Dry::Struct
       unowned:             Unowned.from_dynamic!(d.fetch("unowned")),
       unsafe:              Unsafe.from_dynamic!(d.fetch("unsafe")),
       unsigned:            Unsigned.from_dynamic!(d.fetch("unsigned")),
+      use_serializers:     UseSerializers.from_dynamic!(d.fetch("UseSerializers")),
       ushort:              Ushort.from_dynamic!(d.fetch("ushort")),
-      using:               Using.from_dynamic!(d.fetch("using")),
-      utf8_json_reader:    Utf8JSONReader.from_dynamic!(d.fetch("Utf8JsonReader")),
-      utf8_json_writer:    Utf8JSONWriter.from_dynamic!(d.fetch("Utf8JsonWriter")),
-      uuid:                UUID.from_dynamic!(d.fetch("UUID")),
-      var:                 Var.from_dynamic!(d.fetch("var")),
-      virtual:             Virtual.from_dynamic!(d.fetch("virtual")),
     )
   end
 
@@ -9040,6 +9040,7 @@ class Obj5 < Dry::Struct
   def to_dynamic
     {
       "dummy"              => dummy,
+      "KSerializer"        => k_serializer.to_dynamic,
       "Self"               => obj5_self.to_dynamic,
       "super"              => obj5_super.to_dynamic,
       "system"             => obj5_system.to_dynamic,
@@ -9049,8 +9050,12 @@ class Obj5 < Dry::Struct
       "True"               => obj5_true.to_dynamic,
       "try"                => obj5_try.to_dynamic,
       "Type"               => obj5_type.to_dynamic,
+      "PrimitiveKind"      => primitive_kind.to_dynamic,
       "self"               => self_1.to_dynamic,
       "Sendable"           => sendable.to_dynamic,
+      "SerialDescriptor"   => serial_descriptor.to_dynamic,
+      "SerialName"         => serial_name.to_dynamic,
+      "Serializable"       => serializable.to_dynamic,
       "serialize"          => serialize.to_dynamic,
       "SerializerProvider" => serializer_provider.to_dynamic,
       "set"                => set.to_dynamic,
@@ -9097,13 +9102,8 @@ class Obj5 < Dry::Struct
       "unowned"            => unowned.to_dynamic,
       "unsafe"             => unsafe.to_dynamic,
       "unsigned"           => unsigned.to_dynamic,
+      "UseSerializers"     => use_serializers.to_dynamic,
       "ushort"             => ushort.to_dynamic,
-      "using"              => using.to_dynamic,
-      "Utf8JsonReader"     => utf8_json_reader.to_dynamic,
-      "Utf8JsonWriter"     => utf8_json_writer.to_dynamic,
-      "UUID"               => uuid.to_dynamic,
-      "var"                => var.to_dynamic,
-      "virtual"            => virtual.to_dynamic,
     }
   end
 
@@ -9187,6 +9187,156 @@ class Yield < Dry::Struct
   end
 end
 
+class Using < Dry::Struct
+  attribute :using, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      using: d.fetch("using"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "using" => using,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class Utf8JSONReader < Dry::Struct
+  attribute :utf8_json_reader, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      utf8_json_reader: d.fetch("Utf8JsonReader"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "Utf8JsonReader" => utf8_json_reader,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class Utf8JSONWriter < Dry::Struct
+  attribute :utf8_json_writer, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      utf8_json_writer: d.fetch("Utf8JsonWriter"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "Utf8JsonWriter" => utf8_json_writer,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class UUID < Dry::Struct
+  attribute :uuid, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      uuid: d.fetch("UUID"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "UUID" => uuid,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class Var < Dry::Struct
+  attribute :var, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      var: d.fetch("var"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "var" => var,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class Virtual < Dry::Struct
+  attribute :virtual, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      virtual: d.fetch("virtual"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "virtual" => virtual,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Void < Dry::Struct
   attribute :void, Types::Integer
 
@@ -9413,58 +9563,76 @@ class Yes < Dry::Struct
 end
 
 class Obj6 < Dry::Struct
-  attribute :dummy,      Types::Integer
-  attribute :obj6_while, While
-  attribute :obj6_with,  With
-  attribute :obj6_yield, Yield
-  attribute :void,       Void
-  attribute :volatile,   Volatile
-  attribute :wchar_t,    WcharT
-  attribute :weak,       Weak
-  attribute :where,      Where
-  attribute :will_set,   WillSet
-  attribute :xor,        Xor
-  attribute :xor_eq,     XorEq
-  attribute :yes,        Yes
+  attribute :dummy,            Types::Integer
+  attribute :obj6_while,       While
+  attribute :obj6_with,        With
+  attribute :obj6_yield,       Yield
+  attribute :using,            Using
+  attribute :utf8_json_reader, Utf8JSONReader
+  attribute :utf8_json_writer, Utf8JSONWriter
+  attribute :uuid,             UUID
+  attribute :var,              Var
+  attribute :virtual,          Virtual
+  attribute :void,             Void
+  attribute :volatile,         Volatile
+  attribute :wchar_t,          WcharT
+  attribute :weak,             Weak
+  attribute :where,            Where
+  attribute :will_set,         WillSet
+  attribute :xor,              Xor
+  attribute :xor_eq,           XorEq
+  attribute :yes,              Yes
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      dummy:      d.fetch("dummy"),
-      obj6_while: While.from_dynamic!(d.fetch("while")),
-      obj6_with:  With.from_dynamic!(d.fetch("with")),
-      obj6_yield: Yield.from_dynamic!(d.fetch("yield")),
-      void:       Void.from_dynamic!(d.fetch("void")),
-      volatile:   Volatile.from_dynamic!(d.fetch("volatile")),
-      wchar_t:    WcharT.from_dynamic!(d.fetch("wchar_t")),
-      weak:       Weak.from_dynamic!(d.fetch("weak")),
-      where:      Where.from_dynamic!(d.fetch("where")),
-      will_set:   WillSet.from_dynamic!(d.fetch("willSet")),
-      xor:        Xor.from_dynamic!(d.fetch("xor")),
-      xor_eq:     XorEq.from_dynamic!(d.fetch("xor_eq")),
-      yes:        Yes.from_dynamic!(d.fetch("YES")),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "dummy"    => dummy,
-      "while"    => obj6_while.to_dynamic,
-      "with"     => obj6_with.to_dynamic,
-      "yield"    => obj6_yield.to_dynamic,
-      "void"     => void.to_dynamic,
-      "volatile" => volatile.to_dynamic,
-      "wchar_t"  => wchar_t.to_dynamic,
-      "weak"     => weak.to_dynamic,
-      "where"    => where.to_dynamic,
-      "willSet"  => will_set.to_dynamic,
-      "xor"      => xor.to_dynamic,
-      "xor_eq"   => xor_eq.to_dynamic,
-      "YES"      => yes.to_dynamic,
+      dummy:            d.fetch("dummy"),
+      obj6_while:       While.from_dynamic!(d.fetch("while")),
+      obj6_with:        With.from_dynamic!(d.fetch("with")),
+      obj6_yield:       Yield.from_dynamic!(d.fetch("yield")),
+      using:            Using.from_dynamic!(d.fetch("using")),
+      utf8_json_reader: Utf8JSONReader.from_dynamic!(d.fetch("Utf8JsonReader")),
+      utf8_json_writer: Utf8JSONWriter.from_dynamic!(d.fetch("Utf8JsonWriter")),
+      uuid:             UUID.from_dynamic!(d.fetch("UUID")),
+      var:              Var.from_dynamic!(d.fetch("var")),
+      virtual:          Virtual.from_dynamic!(d.fetch("virtual")),
+      void:             Void.from_dynamic!(d.fetch("void")),
+      volatile:         Volatile.from_dynamic!(d.fetch("volatile")),
+      wchar_t:          WcharT.from_dynamic!(d.fetch("wchar_t")),
+      weak:             Weak.from_dynamic!(d.fetch("weak")),
+      where:            Where.from_dynamic!(d.fetch("where")),
+      will_set:         WillSet.from_dynamic!(d.fetch("willSet")),
+      xor:              Xor.from_dynamic!(d.fetch("xor")),
+      xor_eq:           XorEq.from_dynamic!(d.fetch("xor_eq")),
+      yes:              Yes.from_dynamic!(d.fetch("YES")),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "dummy"          => dummy,
+      "while"          => obj6_while.to_dynamic,
+      "with"           => obj6_with.to_dynamic,
+      "yield"          => obj6_yield.to_dynamic,
+      "using"          => using.to_dynamic,
+      "Utf8JsonReader" => utf8_json_reader.to_dynamic,
+      "Utf8JsonWriter" => utf8_json_writer.to_dynamic,
+      "UUID"           => uuid.to_dynamic,
+      "var"            => var.to_dynamic,
+      "virtual"        => virtual.to_dynamic,
+      "void"           => void.to_dynamic,
+      "volatile"       => volatile.to_dynamic,
+      "wchar_t"        => wchar_t.to_dynamic,
+      "weak"           => weak.to_dynamic,
+      "where"          => where.to_dynamic,
+      "willSet"        => will_set.to_dynamic,
+      "xor"            => xor.to_dynamic,
+      "xor_eq"         => xor_eq.to_dynamic,
+      "YES"            => yes.to_dynamic,
     }
   end
 
diff --git a/base/rust/test/inputs/json/priority/keywords.json/default/module_under_test.rs b/head/rust/test/inputs/json/priority/keywords.json/default/module_under_test.rs
index d437728..a903b78 100644
--- a/base/rust/test/inputs/json/priority/keywords.json/default/module_under_test.rs
+++ b/head/rust/test/inputs/json/priority/keywords.json/default/module_under_test.rs
@@ -2029,6 +2029,9 @@ pub struct Select {
 pub struct Obj5 {
     pub dummy: i64,
 
+    #[serde(rename = "KSerializer")]
+    pub k_serializer: KSerializer,
+
     #[serde(rename = "Self")]
     pub obj5_self: SelfClass,
 
@@ -2059,8 +2062,8 @@ pub struct Obj5 {
     #[serde(rename = "unsafe")]
     pub obj5_unsafe: Unsafe,
 
-    #[serde(rename = "virtual")]
-    pub obj5_virtual: Virtual,
+    #[serde(rename = "PrimitiveKind")]
+    pub primitive_kind: PrimitiveKind,
 
     #[serde(rename = "self")]
     pub purple_self: Obj5Self,
@@ -2074,6 +2077,15 @@ pub struct Obj5 {
     #[serde(rename = "Sendable")]
     pub sendable: Sendable,
 
+    #[serde(rename = "SerialDescriptor")]
+    pub serial_descriptor: SerialDescriptor,
+
+    #[serde(rename = "SerialName")]
+    pub serial_name: SerialName,
+
+    #[serde(rename = "Serializable")]
+    pub serializable: Serializable,
+
     pub serialize: SerializeClass,
 
     #[serde(rename = "SerializerProvider")]
@@ -2169,20 +2181,16 @@ pub struct Obj5 {
 
     pub unsigned: Unsigned,
 
-    pub ushort: Ushort,
-
-    pub using: Using,
+    #[serde(rename = "UseSerializers")]
+    pub use_serializers: UseSerializers,
 
-    #[serde(rename = "Utf8JsonReader")]
-    pub utf8_json_reader: Utf8JsonReader,
-
-    #[serde(rename = "Utf8JsonWriter")]
-    pub utf8_json_writer: Utf8JsonWriter,
-
-    #[serde(rename = "UUID")]
-    pub uuid: Uuid,
+    pub ushort: Ushort,
+}
 
-    pub var: Var,
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct KSerializer {
+    pub k_serializer: i64,
 }
 
 #[derive(Debug, Clone, Serialize, Deserialize)]
@@ -2249,9 +2257,9 @@ pub struct Unsafe {
 }
 
 #[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct Virtual {
-    #[serde(rename = "virtual")]
-    pub virtual_virtual: i64,
+#[serde(rename_all = "PascalCase")]
+pub struct PrimitiveKind {
+    pub primitive_kind: i64,
 }
 
 #[derive(Debug, Clone, Serialize, Deserialize)]
@@ -2278,6 +2286,24 @@ pub struct Sendable {
     pub sendable: i64,
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct SerialDescriptor {
+    pub serial_descriptor: i64,
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct SerialName {
+    pub serial_name: i64,
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct Serializable {
+    pub serializable: i64,
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct SerializeClass {
     pub serialize: i64,
@@ -2502,43 +2528,24 @@ pub struct Unsigned {
     pub unsigned: i64,
 }
 
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct Ushort {
-    pub ushort: i64,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct Using {
-    pub using: i64,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-#[serde(rename_all = "PascalCase")]
-pub struct Utf8JsonReader {
-    pub utf8_json_reader: i64,
-}
-
 #[derive(Debug, Clone, Serialize, Deserialize)]
 #[serde(rename_all = "PascalCase")]
-pub struct Utf8JsonWriter {
-    pub utf8_json_writer: i64,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
-pub struct Uuid {
-    pub uuid: i64,
+pub struct UseSerializers {
+    pub use_serializers: i64,
 }
 
 #[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct Var {
-    pub var: i64,
+pub struct Ushort {
+    pub ushort: i64,
 }
 
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct Obj6 {
     pub dummy: i64,
 
+    #[serde(rename = "virtual")]
+    pub obj6_virtual: Virtual,
+
     #[serde(rename = "where")]
     pub obj6_where: Where,
 
@@ -2548,6 +2555,19 @@ pub struct Obj6 {
     #[serde(rename = "yield")]
     pub obj6_yield: Yield,
 
+    pub using: Using,
+
+    #[serde(rename = "Utf8JsonReader")]
+    pub utf8_json_reader: Utf8JsonReader,
+
+    #[serde(rename = "Utf8JsonWriter")]
+    pub utf8_json_writer: Utf8JsonWriter,
+
+    #[serde(rename = "UUID")]
+    pub uuid: Uuid,
+
+    pub var: Var,
+
     pub void: Void,
 
     pub volatile: Volatile,
@@ -2569,6 +2589,12 @@ pub struct Obj6 {
     pub yes: Yes,
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct Virtual {
+    #[serde(rename = "virtual")]
+    pub virtual_virtual: i64,
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct Where {
     #[serde(rename = "where")]
@@ -2587,6 +2613,34 @@ pub struct Yield {
     pub yield_yield: i64,
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct Using {
+    pub using: i64,
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct Utf8JsonReader {
+    pub utf8_json_reader: i64,
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct Utf8JsonWriter {
+    pub utf8_json_writer: i64,
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
+pub struct Uuid {
+    pub uuid: i64,
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct Var {
+    pub var: i64,
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct Void {
     pub void: i64,
diff --git a/base/scala3/test/inputs/json/priority/keywords.json/default/TopLevel.scala b/head/scala3/test/inputs/json/priority/keywords.json/default/TopLevel.scala
index f2b6d97..9c606f8 100644
--- a/base/scala3/test/inputs/json/priority/keywords.json/default/TopLevel.scala
+++ b/head/scala3/test/inputs/json/priority/keywords.json/default/TopLevel.scala
@@ -1375,6 +1375,7 @@ case class Select (
 
 case class Obj5 (
     val dummy : Long,
+    val KSerializer : KSerializer,
     val self : SelfClass,
     val `super` : Super,
     val `then` : Then,
@@ -1383,11 +1384,14 @@ case class Obj5 (
     val True : True,
     val `try` : Try,
     val Type : Type,
-    val `var` : Var,
+    val PrimitiveKind : PrimitiveKind,
     val `true` : TrueClass,
     val `type` : TypeClass,
     val Self : Self,
     val Sendable : Sendable,
+    val SerialDescriptor : SerialDescriptor,
+    val SerialName : SerialName,
+    val Serializable : Serializable,
     val serialize : Serialize,
     val SerializerProvider : SerializerProvider,
     val set : Set,
@@ -1433,12 +1437,8 @@ case class Obj5 (
     val unowned : Unowned,
     val unsafe : Unsafe,
     val unsigned : Unsigned,
-    val ushort : Ushort,
-    val using : Using,
-    val Utf8JsonReader : Utf8JSONReader,
-    val Utf8JsonWriter : Utf8JSONWriter,
-    val UUID : UUID,
-    val virtual : Virtual
+    val UseSerializers : UseSerializers,
+    val ushort : Ushort
 )
 
 object Obj5:
@@ -1451,6 +1451,10 @@ object Obj5:
         )
     given io.circe.Codec.AsObject[Obj5] = io.circe.derivation.ConfiguredCodec.derived
 
+case class KSerializer (
+    val KSerializer : Long
+) derives Encoder.AsObject, Decoder
+
 case class SelfClass (
     val self : Long
 ) derives Encoder.AsObject, Decoder
@@ -1483,8 +1487,8 @@ case class Type (
     val Type : Long
 ) derives Encoder.AsObject, Decoder
 
-case class Var (
-    val `var` : Long
+case class PrimitiveKind (
+    val PrimitiveKind : Long
 ) derives Encoder.AsObject, Decoder
 
 case class TrueClass (
@@ -1503,6 +1507,18 @@ case class Sendable (
     val Sendable : Long
 ) derives Encoder.AsObject, Decoder
 
+case class SerialDescriptor (
+    val SerialDescriptor : Long
+) derives Encoder.AsObject, Decoder
+
+case class SerialName (
+    val SerialName : Long
+) derives Encoder.AsObject, Decoder
+
+case class Serializable (
+    val Serializable : Long
+) derives Encoder.AsObject, Decoder
+
 case class Serialize (
     val serialize : Long
 ) derives Encoder.AsObject, Decoder
@@ -1701,35 +1717,25 @@ case class Unsigned (
     val unsigned : Long
 ) derives Encoder.AsObject, Decoder
 
-case class Ushort (
-    val ushort : Long
-) derives Encoder.AsObject, Decoder
-
-case class Using (
-    val using : Long
-) derives Encoder.AsObject, Decoder
-
-case class Utf8JSONReader (
-    val Utf8JsonReader : Long
-) derives Encoder.AsObject, Decoder
-
-case class Utf8JSONWriter (
-    val Utf8JsonWriter : Long
-) derives Encoder.AsObject, Decoder
-
-case class UUID (
-    val UUID : Long
+case class UseSerializers (
+    val UseSerializers : Long
 ) derives Encoder.AsObject, Decoder
 
-case class Virtual (
-    val virtual : Long
+case class Ushort (
+    val ushort : Long
 ) derives Encoder.AsObject, Decoder
 
 case class Obj6 (
     val dummy : Long,
+    val `var` : Var,
     val `while` : While,
     val `with` : With,
     val `yield` : Yield,
+    val using : Using,
+    val Utf8JsonReader : Utf8JSONReader,
+    val Utf8JsonWriter : Utf8JSONWriter,
+    val UUID : UUID,
+    val virtual : Virtual,
     val void : Void,
     val volatile : Volatile,
     val wchar_t : WcharT,
@@ -1741,6 +1747,10 @@ case class Obj6 (
     val YES : Yes
 ) derives Encoder.AsObject, Decoder
 
+case class Var (
+    val `var` : Long
+) derives Encoder.AsObject, Decoder
+
 case class While (
     val `while` : Long
 ) derives Encoder.AsObject, Decoder
@@ -1753,6 +1763,26 @@ case class Yield (
     val `yield` : Long
 ) derives Encoder.AsObject, Decoder
 
+case class Using (
+    val using : Long
+) derives Encoder.AsObject, Decoder
+
+case class Utf8JSONReader (
+    val Utf8JsonReader : Long
+) derives Encoder.AsObject, Decoder
+
+case class Utf8JSONWriter (
+    val Utf8JsonWriter : Long
+) derives Encoder.AsObject, Decoder
+
+case class UUID (
+    val UUID : Long
+) derives Encoder.AsObject, Decoder
+
+case class Virtual (
+    val virtual : Long
+) derives Encoder.AsObject, Decoder
+
 case class Void (
     val void : Long
 ) derives Encoder.AsObject, Decoder
diff --git a/base/scala3-upickle/test/inputs/json/priority/keywords.json/default/TopLevel.scala b/head/scala3-upickle/test/inputs/json/priority/keywords.json/default/TopLevel.scala
index 920b0cd..0705d32 100644
--- a/base/scala3-upickle/test/inputs/json/priority/keywords.json/default/TopLevel.scala
+++ b/head/scala3-upickle/test/inputs/json/priority/keywords.json/default/TopLevel.scala
@@ -1408,6 +1408,7 @@ case class Select (
 
 case class Obj5 (
     val dummy : Long,
+    val KSerializer : KSerializer,
     val self : SelfClass,
     val `super` : Super,
     val `then` : Then,
@@ -1416,11 +1417,14 @@ case class Obj5 (
     val True : True,
     val `try` : Try,
     val Type : Type,
-    val `var` : Var,
+    val PrimitiveKind : PrimitiveKind,
     val `true` : TrueClass,
     val `type` : TypeClass,
     val Self : Self,
     val Sendable : Sendable,
+    val SerialDescriptor : SerialDescriptor,
+    val SerialName : SerialName,
+    val Serializable : Serializable,
     val serialize : Serialize,
     val SerializerProvider : SerializerProvider,
     val set : Set,
@@ -1468,12 +1472,12 @@ case class Obj5 (
     val unowned : Unowned,
     val unsafe : Unsafe,
     val unsigned : Unsigned,
-    val ushort : Ushort,
-    val using : Using,
-    val Utf8JsonReader : Utf8JSONReader,
-    val Utf8JsonWriter : Utf8JSONWriter,
-    val UUID : UUID,
-    val virtual : Virtual
+    val UseSerializers : UseSerializers,
+    val ushort : Ushort
+) derives OptionPickler.ReadWriter
+
+case class KSerializer (
+    val KSerializer : Long
 ) derives OptionPickler.ReadWriter
 
 case class SelfClass (
@@ -1508,8 +1512,8 @@ case class Type (
     val Type : Long
 ) derives OptionPickler.ReadWriter
 
-case class Var (
-    val `var` : Long
+case class PrimitiveKind (
+    val PrimitiveKind : Long
 ) derives OptionPickler.ReadWriter
 
 case class TrueClass (
@@ -1528,6 +1532,18 @@ case class Sendable (
     val Sendable : Long
 ) derives OptionPickler.ReadWriter
 
+case class SerialDescriptor (
+    val SerialDescriptor : Long
+) derives OptionPickler.ReadWriter
+
+case class SerialName (
+    val SerialName : Long
+) derives OptionPickler.ReadWriter
+
+case class Serializable (
+    val Serializable : Long
+) derives OptionPickler.ReadWriter
+
 case class Serialize (
     val serialize : Long
 ) derives OptionPickler.ReadWriter
@@ -1710,35 +1726,25 @@ case class Unsigned (
     val unsigned : Long
 ) derives OptionPickler.ReadWriter
 
-case class Ushort (
-    val ushort : Long
-) derives OptionPickler.ReadWriter
-
-case class Using (
-    val using : Long
-) derives OptionPickler.ReadWriter
-
-case class Utf8JSONReader (
-    val Utf8JsonReader : Long
-) derives OptionPickler.ReadWriter
-
-case class Utf8JSONWriter (
-    val Utf8JsonWriter : Long
-) derives OptionPickler.ReadWriter
-
-case class UUID (
-    val UUID : Long
+case class UseSerializers (
+    val UseSerializers : Long
 ) derives OptionPickler.ReadWriter
 
-case class Virtual (
-    val virtual : Long
+case class Ushort (
+    val ushort : Long
 ) derives OptionPickler.ReadWriter
 
 case class Obj6 (
     val dummy : Long,
+    val `var` : Var,
     val `while` : While,
     val `with` : With,
     val `yield` : Yield,
+    val using : Using,
+    val Utf8JsonReader : Utf8JSONReader,
+    val Utf8JsonWriter : Utf8JSONWriter,
+    val UUID : UUID,
+    val virtual : Virtual,
     val void : Void,
     val volatile : Volatile,
     val wchar_t : WcharT,
@@ -1750,6 +1756,10 @@ case class Obj6 (
     val YES : Yes
 ) derives OptionPickler.ReadWriter
 
+case class Var (
+    val `var` : Long
+) derives OptionPickler.ReadWriter
+
 case class While (
     val `while` : Long
 ) derives OptionPickler.ReadWriter
@@ -1762,6 +1772,26 @@ case class Yield (
     val `yield` : Long
 ) derives OptionPickler.ReadWriter
 
+case class Using (
+    val using : Long
+) derives OptionPickler.ReadWriter
+
+case class Utf8JSONReader (
+    val Utf8JsonReader : Long
+) derives OptionPickler.ReadWriter
+
+case class Utf8JSONWriter (
+    val Utf8JsonWriter : Long
+) derives OptionPickler.ReadWriter
+
+case class UUID (
+    val UUID : Long
+) derives OptionPickler.ReadWriter
+
+case class Virtual (
+    val virtual : Long
+) derives OptionPickler.ReadWriter
+
 case class Void (
     val void : Long
 ) derives OptionPickler.ReadWriter
diff --git a/base/schema-cjson/test/inputs/schema/keyword-enum.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/keyword-enum.schema/default/TopLevel.c
index 35a26dc..8253ae9 100644
--- a/base/schema-cjson/test/inputs/schema/keyword-enum.schema/default/TopLevel.c
+++ b/head/schema-cjson/test/inputs/schema/keyword-enum.schema/default/TopLevel.c
@@ -265,9 +265,14 @@ enum Enum cJSON_GetEnumValue(const cJSON * j) {
         else if (!strcmp(cJSON_GetStringValue(j), "SEL")) x = ENUM_SEL;
         else if (!strcmp(cJSON_GetStringValue(j), "select")) x = ENUM_SELECT;
         else if (!strcmp(cJSON_GetStringValue(j), "Self")) x = ENUM_SELF;
+        else if (!strcmp(cJSON_GetStringValue(j), "Serializable")) x = ENUM_SERIALIZABLE;
         else if (!strcmp(cJSON_GetStringValue(j), "self")) x = ENUM_ENUM_SELF;
         else if (!strcmp(cJSON_GetStringValue(j), "Sendable")) x = ENUM_SENDABLE;
         else if (!strcmp(cJSON_GetStringValue(j), "serialize")) x = ENUM_SERIALIZE;
+        else if (!strcmp(cJSON_GetStringValue(j), "SerialName")) x = ENUM_SERIAL_NAME;
+        else if (!strcmp(cJSON_GetStringValue(j), "KSerializer")) x = ENUM_K_SERIALIZER;
+        else if (!strcmp(cJSON_GetStringValue(j), "PrimitiveKind")) x = ENUM_PRIMITIVE_KIND;
+        else if (!strcmp(cJSON_GetStringValue(j), "SerialDescriptor")) x = ENUM_SERIAL_DESCRIPTOR;
         else if (!strcmp(cJSON_GetStringValue(j), "SerializerProvider")) x = ENUM_SERIALIZER_PROVIDER;
         else if (!strcmp(cJSON_GetStringValue(j), "set")) x = ENUM_SET;
         else if (!strcmp(cJSON_GetStringValue(j), "short")) x = ENUM_SHORT;
@@ -318,6 +323,7 @@ enum Enum cJSON_GetEnumValue(const cJSON * j) {
         else if (!strcmp(cJSON_GetStringValue(j), "unchecked")) x = ENUM_UNCHECKED;
         else if (!strcmp(cJSON_GetStringValue(j), "undefined")) x = ENUM_UNDEFINED;
         else if (!strcmp(cJSON_GetStringValue(j), "union")) x = ENUM_UNION;
+        else if (!strcmp(cJSON_GetStringValue(j), "UseSerializers")) x = ENUM_USE_SERIALIZERS;
         else if (!strcmp(cJSON_GetStringValue(j), "unowned")) x = ENUM_UNOWNED;
         else if (!strcmp(cJSON_GetStringValue(j), "unsafe")) x = ENUM_UNSAFE;
         else if (!strcmp(cJSON_GetStringValue(j), "unsigned")) x = ENUM_UNSIGNED;
@@ -605,9 +611,14 @@ cJSON * cJSON_CreateEnum(const enum Enum x) {
         case ENUM_SEL: j = cJSON_CreateString("SEL"); break;
         case ENUM_SELECT: j = cJSON_CreateString("select"); break;
         case ENUM_SELF: j = cJSON_CreateString("Self"); break;
+        case ENUM_SERIALIZABLE: j = cJSON_CreateString("Serializable"); break;
         case ENUM_ENUM_SELF: j = cJSON_CreateString("self"); break;
         case ENUM_SENDABLE: j = cJSON_CreateString("Sendable"); break;
         case ENUM_SERIALIZE: j = cJSON_CreateString("serialize"); break;
+        case ENUM_SERIAL_NAME: j = cJSON_CreateString("SerialName"); break;
+        case ENUM_K_SERIALIZER: j = cJSON_CreateString("KSerializer"); break;
+        case ENUM_PRIMITIVE_KIND: j = cJSON_CreateString("PrimitiveKind"); break;
+        case ENUM_SERIAL_DESCRIPTOR: j = cJSON_CreateString("SerialDescriptor"); break;
         case ENUM_SERIALIZER_PROVIDER: j = cJSON_CreateString("SerializerProvider"); break;
         case ENUM_SET: j = cJSON_CreateString("set"); break;
         case ENUM_SHORT: j = cJSON_CreateString("short"); break;
@@ -658,6 +669,7 @@ cJSON * cJSON_CreateEnum(const enum Enum x) {
         case ENUM_UNCHECKED: j = cJSON_CreateString("unchecked"); break;
         case ENUM_UNDEFINED: j = cJSON_CreateString("undefined"); break;
         case ENUM_UNION: j = cJSON_CreateString("union"); break;
+        case ENUM_USE_SERIALIZERS: j = cJSON_CreateString("UseSerializers"); break;
         case ENUM_UNOWNED: j = cJSON_CreateString("unowned"); break;
         case ENUM_UNSAFE: j = cJSON_CreateString("unsafe"); break;
         case ENUM_UNSIGNED: j = cJSON_CreateString("unsigned"); break;
diff --git a/base/schema-cjson/test/inputs/schema/keyword-enum.schema/default/TopLevel.h b/head/schema-cjson/test/inputs/schema/keyword-enum.schema/default/TopLevel.h
index ee83927..0476658 100644
--- a/base/schema-cjson/test/inputs/schema/keyword-enum.schema/default/TopLevel.h
+++ b/head/schema-cjson/test/inputs/schema/keyword-enum.schema/default/TopLevel.h
@@ -306,9 +306,14 @@ enum Enum {
     ENUM_SEL,
     ENUM_SELECT,
     ENUM_SELF,
+    ENUM_SERIALIZABLE,
     ENUM_ENUM_SELF,
     ENUM_SENDABLE,
     ENUM_SERIALIZE,
+    ENUM_SERIAL_NAME,
+    ENUM_K_SERIALIZER,
+    ENUM_PRIMITIVE_KIND,
+    ENUM_SERIAL_DESCRIPTOR,
     ENUM_SERIALIZER_PROVIDER,
     ENUM_SET,
     ENUM_SHORT,
@@ -359,6 +364,7 @@ enum Enum {
     ENUM_UNCHECKED,
     ENUM_UNDEFINED,
     ENUM_UNION,
+    ENUM_USE_SERIALIZERS,
     ENUM_UNOWNED,
     ENUM_UNSAFE,
     ENUM_UNSIGNED,
diff --git a/base/schema-cjson/test/inputs/schema/keyword-unions.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/keyword-unions.schema/default/TopLevel.c
index 2c34fcf..a05d6b3 100644
--- a/base/schema-cjson/test/inputs/schema/keyword-unions.schema/default/TopLevel.c
+++ b/head/schema-cjson/test/inputs/schema/keyword-unions.schema/default/TopLevel.c
@@ -5197,6 +5197,50 @@ void cJSON_DeleteUnionJsonWriter(struct UnionJsonWriter * x) {
     }
 }
 
+struct UnionKSerializer * cJSON_GetUnionKSerializerValue(const cJSON * j) {
+    struct UnionKSerializer * x = cJSON_malloc(sizeof(struct UnionKSerializer));
+    if (NULL != x) {
+        memset(x, 0, sizeof(struct UnionKSerializer));
+        if (cJSON_IsNumber(j)) {
+            x->type = cJSON_Number;
+            x->value.number = cJSON_GetNumberValue(j);
+        }
+        else if (cJSON_IsObject(j)) {
+            x->type = cJSON_Object;
+            x->value.k_serializer = cJSON_GetKSerializerValue(j);
+            if (NULL == x->value.k_serializer) x->type = 0;
+        }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
+    }
+    return x;
+}
+struct UnionKSerializer * cJSON_ParseUnionKSerializer(const char * s) { cJSON * j = cJSON_Parse(s); struct UnionKSerializer * x = j ? cJSON_GetUnionKSerializerValue(j) : NULL; cJSON_Delete(j); return x; }
+char * cJSON_PrintUnionKSerializer(const struct UnionKSerializer * x) { cJSON * j = cJSON_CreateUnionKSerializer(x); char * s = j ? cJSON_Print(j) : NULL; cJSON_Delete(j); return s; }
+
+cJSON * cJSON_CreateUnionKSerializer(const struct UnionKSerializer * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (cJSON_Number == x->type) {
+            j = cJSON_CreateNumber(x->value.number);
+        }
+        else if (cJSON_Object == x->type) {
+            j = cJSON_CreateKSerializer(x->value.k_serializer);
+        }
+    }
+    return j;
+}
+
+void cJSON_DeleteUnionKSerializer(struct UnionKSerializer * x) {
+    if (NULL != x) {
+        if (cJSON_Number == x->type) {
+        }
+        else if (cJSON_Object == x->type) {
+            cJSON_DeleteKSerializer(x->value.k_serializer);
+        }
+        cJSON_free(x);
+    }
+}
+
 struct UnionLambda * cJSON_GetUnionLambdaValue(const cJSON * j) {
     struct UnionLambda * x = cJSON_malloc(sizeof(struct UnionLambda));
     if (NULL != x) {
@@ -6913,6 +6957,50 @@ void cJSON_DeleteUnionPrefix(struct UnionPrefix * x) {
     }
 }
 
+struct UnionPrimitiveKind * cJSON_GetUnionPrimitiveKindValue(const cJSON * j) {
+    struct UnionPrimitiveKind * x = cJSON_malloc(sizeof(struct UnionPrimitiveKind));
+    if (NULL != x) {
+        memset(x, 0, sizeof(struct UnionPrimitiveKind));
+        if (cJSON_IsNumber(j)) {
+            x->type = cJSON_Number;
+            x->value.number = cJSON_GetNumberValue(j);
+        }
+        else if (cJSON_IsObject(j)) {
+            x->type = cJSON_Object;
+            x->value.primitive_kind = cJSON_GetPrimitiveKindValue(j);
+            if (NULL == x->value.primitive_kind) x->type = 0;
+        }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
+    }
+    return x;
+}
+struct UnionPrimitiveKind * cJSON_ParseUnionPrimitiveKind(const char * s) { cJSON * j = cJSON_Parse(s); struct UnionPrimitiveKind * x = j ? cJSON_GetUnionPrimitiveKindValue(j) : NULL; cJSON_Delete(j); return x; }
+char * cJSON_PrintUnionPrimitiveKind(const struct UnionPrimitiveKind * x) { cJSON * j = cJSON_CreateUnionPrimitiveKind(x); char * s = j ? cJSON_Print(j) : NULL; cJSON_Delete(j); return s; }
+
+cJSON * cJSON_CreateUnionPrimitiveKind(const struct UnionPrimitiveKind * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (cJSON_Number == x->type) {
+            j = cJSON_CreateNumber(x->value.number);
+        }
+        else if (cJSON_Object == x->type) {
+            j = cJSON_CreatePrimitiveKind(x->value.primitive_kind);
+        }
+    }
+    return j;
+}
+
+void cJSON_DeleteUnionPrimitiveKind(struct UnionPrimitiveKind * x) {
+    if (NULL != x) {
+        if (cJSON_Number == x->type) {
+        }
+        else if (cJSON_Object == x->type) {
+            cJSON_DeletePrimitiveKind(x->value.primitive_kind);
+        }
+        cJSON_free(x);
+    }
+}
+
 struct UnionPrint * cJSON_GetUnionPrintValue(const cJSON * j) {
     struct UnionPrint * x = cJSON_malloc(sizeof(struct UnionPrint));
     if (NULL != x) {
@@ -8145,6 +8233,138 @@ void cJSON_DeleteUnionSendable(struct UnionSendable * x) {
     }
 }
 
+struct UnionSerialDescriptor * cJSON_GetUnionSerialDescriptorValue(const cJSON * j) {
+    struct UnionSerialDescriptor * x = cJSON_malloc(sizeof(struct UnionSerialDescriptor));
+    if (NULL != x) {
+        memset(x, 0, sizeof(struct UnionSerialDescriptor));
+        if (cJSON_IsNumber(j)) {
+            x->type = cJSON_Number;
+            x->value.number = cJSON_GetNumberValue(j);
+        }
+        else if (cJSON_IsObject(j)) {
+            x->type = cJSON_Object;
+            x->value.serial_descriptor = cJSON_GetSerialDescriptorValue(j);
+            if (NULL == x->value.serial_descriptor) x->type = 0;
+        }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
+    }
+    return x;
+}
+struct UnionSerialDescriptor * cJSON_ParseUnionSerialDescriptor(const char * s) { cJSON * j = cJSON_Parse(s); struct UnionSerialDescriptor * x = j ? cJSON_GetUnionSerialDescriptorValue(j) : NULL; cJSON_Delete(j); return x; }
+char * cJSON_PrintUnionSerialDescriptor(const struct UnionSerialDescriptor * x) { cJSON * j = cJSON_CreateUnionSerialDescriptor(x); char * s = j ? cJSON_Print(j) : NULL; cJSON_Delete(j); return s; }
+
+cJSON * cJSON_CreateUnionSerialDescriptor(const struct UnionSerialDescriptor * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (cJSON_Number == x->type) {
+            j = cJSON_CreateNumber(x->value.number);
+        }
+        else if (cJSON_Object == x->type) {
+            j = cJSON_CreateSerialDescriptor(x->value.serial_descriptor);
+        }
+    }
+    return j;
+}
+
+void cJSON_DeleteUnionSerialDescriptor(struct UnionSerialDescriptor * x) {
+    if (NULL != x) {
+        if (cJSON_Number == x->type) {
+        }
+        else if (cJSON_Object == x->type) {
+            cJSON_DeleteSerialDescriptor(x->value.serial_descriptor);
+        }
+        cJSON_free(x);
+    }
+}
+
+struct UnionSerialName * cJSON_GetUnionSerialNameValue(const cJSON * j) {
+    struct UnionSerialName * x = cJSON_malloc(sizeof(struct UnionSerialName));
+    if (NULL != x) {
+        memset(x, 0, sizeof(struct UnionSerialName));
+        if (cJSON_IsNumber(j)) {
+            x->type = cJSON_Number;
+            x->value.number = cJSON_GetNumberValue(j);
+        }
+        else if (cJSON_IsObject(j)) {
+            x->type = cJSON_Object;
+            x->value.serial_name = cJSON_GetSerialNameValue(j);
+            if (NULL == x->value.serial_name) x->type = 0;
+        }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
+    }
+    return x;
+}
+struct UnionSerialName * cJSON_ParseUnionSerialName(const char * s) { cJSON * j = cJSON_Parse(s); struct UnionSerialName * x = j ? cJSON_GetUnionSerialNameValue(j) : NULL; cJSON_Delete(j); return x; }
+char * cJSON_PrintUnionSerialName(const struct UnionSerialName * x) { cJSON * j = cJSON_CreateUnionSerialName(x); char * s = j ? cJSON_Print(j) : NULL; cJSON_Delete(j); return s; }
+
+cJSON * cJSON_CreateUnionSerialName(const struct UnionSerialName * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (cJSON_Number == x->type) {
+            j = cJSON_CreateNumber(x->value.number);
+        }
+        else if (cJSON_Object == x->type) {
+            j = cJSON_CreateSerialName(x->value.serial_name);
+        }
+    }
+    return j;
+}
+
+void cJSON_DeleteUnionSerialName(struct UnionSerialName * x) {
+    if (NULL != x) {
+        if (cJSON_Number == x->type) {
+        }
+        else if (cJSON_Object == x->type) {
+            cJSON_DeleteSerialName(x->value.serial_name);
+        }
+        cJSON_free(x);
+    }
+}
+
+struct UnionSerializable * cJSON_GetUnionSerializableValue(const cJSON * j) {
+    struct UnionSerializable * x = cJSON_malloc(sizeof(struct UnionSerializable));
+    if (NULL != x) {
+        memset(x, 0, sizeof(struct UnionSerializable));
+        if (cJSON_IsNumber(j)) {
+            x->type = cJSON_Number;
+            x->value.number = cJSON_GetNumberValue(j);
+        }
+        else if (cJSON_IsObject(j)) {
+            x->type = cJSON_Object;
+            x->value.serializable = cJSON_GetSerializableValue(j);
+            if (NULL == x->value.serializable) x->type = 0;
+        }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
+    }
+    return x;
+}
+struct UnionSerializable * cJSON_ParseUnionSerializable(const char * s) { cJSON * j = cJSON_Parse(s); struct UnionSerializable * x = j ? cJSON_GetUnionSerializableValue(j) : NULL; cJSON_Delete(j); return x; }
+char * cJSON_PrintUnionSerializable(const struct UnionSerializable * x) { cJSON * j = cJSON_CreateUnionSerializable(x); char * s = j ? cJSON_Print(j) : NULL; cJSON_Delete(j); return s; }
+
+cJSON * cJSON_CreateUnionSerializable(const struct UnionSerializable * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (cJSON_Number == x->type) {
+            j = cJSON_CreateNumber(x->value.number);
+        }
+        else if (cJSON_Object == x->type) {
+            j = cJSON_CreateSerializable(x->value.serializable);
+        }
+    }
+    return j;
+}
+
+void cJSON_DeleteUnionSerializable(struct UnionSerializable * x) {
+    if (NULL != x) {
+        if (cJSON_Number == x->type) {
+        }
+        else if (cJSON_Object == x->type) {
+            cJSON_DeleteSerializable(x->value.serializable);
+        }
+        cJSON_free(x);
+    }
+}
+
 struct UnionSerialize * cJSON_GetUnionSerializeValue(const cJSON * j) {
     struct UnionSerialize * x = cJSON_malloc(sizeof(struct UnionSerialize));
     if (NULL != x) {
@@ -14129,6 +14349,50 @@ void cJSON_DeleteUnionUnsafe(struct UnionUnsafe * x) {
     }
 }
 
+struct UnionUseSerializers * cJSON_GetUnionUseSerializersValue(const cJSON * j) {
+    struct UnionUseSerializers * x = cJSON_malloc(sizeof(struct UnionUseSerializers));
+    if (NULL != x) {
+        memset(x, 0, sizeof(struct UnionUseSerializers));
+        if (cJSON_IsNumber(j)) {
+            x->type = cJSON_Number;
+            x->value.number = cJSON_GetNumberValue(j);
+        }
+        else if (cJSON_IsObject(j)) {
+            x->type = cJSON_Object;
+            x->value.use_serializers = cJSON_GetUseSerializersValue(j);
+            if (NULL == x->value.use_serializers) x->type = 0;
+        }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
+    }
+    return x;
+}
+struct UnionUseSerializers * cJSON_ParseUnionUseSerializers(const char * s) { cJSON * j = cJSON_Parse(s); struct UnionUseSerializers * x = j ? cJSON_GetUnionUseSerializersValue(j) : NULL; cJSON_Delete(j); return x; }
+char * cJSON_PrintUnionUseSerializers(const struct UnionUseSerializers * x) { cJSON * j = cJSON_CreateUnionUseSerializers(x); char * s = j ? cJSON_Print(j) : NULL; cJSON_Delete(j); return s; }
+
+cJSON * cJSON_CreateUnionUseSerializers(const struct UnionUseSerializers * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (cJSON_Number == x->type) {
+            j = cJSON_CreateNumber(x->value.number);
+        }
+        else if (cJSON_Object == x->type) {
+            j = cJSON_CreateUseSerializers(x->value.use_serializers);
+        }
+    }
+    return j;
+}
+
+void cJSON_DeleteUnionUseSerializers(struct UnionUseSerializers * x) {
+    if (NULL != x) {
+        if (cJSON_Number == x->type) {
+        }
+        else if (cJSON_Object == x->type) {
+            cJSON_DeleteUseSerializers(x->value.use_serializers);
+        }
+        cJSON_free(x);
+    }
+}
+
 struct UnionUshort * cJSON_GetUnionUshortValue(const cJSON * j) {
     struct UnionUshort * x = cJSON_malloc(sizeof(struct UnionUshort));
     if (NULL != x) {
@@ -20395,6 +20659,55 @@ void cJSON_DeleteJsonWriter(struct JsonWriter * x) {
     }
 }
 
+struct KSerializer * cJSON_ParseKSerializer(const char * s) {
+    struct KSerializer * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetKSerializerValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct KSerializer * cJSON_GetKSerializerValue(const cJSON * j) {
+    struct KSerializer * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct KSerializer)))) {
+            memset(x, 0, sizeof(struct KSerializer));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateKSerializer(const struct KSerializer * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintKSerializer(const struct KSerializer * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateKSerializer(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteKSerializer(struct KSerializer * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Lambda * cJSON_ParseLambda(const char * s) {
     struct Lambda * x = NULL;
     if (NULL != s) {
@@ -22306,6 +22619,55 @@ void cJSON_DeletePrefix(struct Prefix * x) {
     }
 }
 
+struct PrimitiveKind * cJSON_ParsePrimitiveKind(const char * s) {
+    struct PrimitiveKind * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetPrimitiveKindValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct PrimitiveKind * cJSON_GetPrimitiveKindValue(const cJSON * j) {
+    struct PrimitiveKind * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct PrimitiveKind)))) {
+            memset(x, 0, sizeof(struct PrimitiveKind));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreatePrimitiveKind(const struct PrimitiveKind * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintPrimitiveKind(const struct PrimitiveKind * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreatePrimitiveKind(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeletePrimitiveKind(struct PrimitiveKind * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Print * cJSON_ParsePrint(const char * s) {
     struct Print * x = NULL;
     if (NULL != s) {
@@ -23678,6 +24040,153 @@ void cJSON_DeleteSendable(struct Sendable * x) {
     }
 }
 
+struct SerialDescriptor * cJSON_ParseSerialDescriptor(const char * s) {
+    struct SerialDescriptor * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetSerialDescriptorValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct SerialDescriptor * cJSON_GetSerialDescriptorValue(const cJSON * j) {
+    struct SerialDescriptor * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct SerialDescriptor)))) {
+            memset(x, 0, sizeof(struct SerialDescriptor));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateSerialDescriptor(const struct SerialDescriptor * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintSerialDescriptor(const struct SerialDescriptor * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateSerialDescriptor(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteSerialDescriptor(struct SerialDescriptor * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct SerialName * cJSON_ParseSerialName(const char * s) {
+    struct SerialName * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetSerialNameValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct SerialName * cJSON_GetSerialNameValue(const cJSON * j) {
+    struct SerialName * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct SerialName)))) {
+            memset(x, 0, sizeof(struct SerialName));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateSerialName(const struct SerialName * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintSerialName(const struct SerialName * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateSerialName(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteSerialName(struct SerialName * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct Serializable * cJSON_ParseSerializable(const char * s) {
+    struct Serializable * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetSerializableValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct Serializable * cJSON_GetSerializableValue(const cJSON * j) {
+    struct Serializable * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct Serializable)))) {
+            memset(x, 0, sizeof(struct Serializable));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateSerializable(const struct Serializable * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintSerializable(const struct Serializable * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateSerializable(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteSerializable(struct Serializable * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Serialize * cJSON_ParseSerialize(const char * s) {
     struct Serialize * x = NULL;
     if (NULL != s) {
@@ -30342,6 +30851,55 @@ void cJSON_DeleteUnsafe(struct Unsafe * x) {
     }
 }
 
+struct UseSerializers * cJSON_ParseUseSerializers(const char * s) {
+    struct UseSerializers * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetUseSerializersValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct UseSerializers * cJSON_GetUseSerializersValue(const cJSON * j) {
+    struct UseSerializers * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct UseSerializers)))) {
+            memset(x, 0, sizeof(struct UseSerializers));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateUseSerializers(const struct UseSerializers * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintUseSerializers(const struct UseSerializers * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateUseSerializers(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteUseSerializers(struct UseSerializers * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Ushort * cJSON_ParseUshort(const char * s) {
     struct Ushort * x = NULL;
     if (NULL != s) {
@@ -31759,6 +32317,11 @@ struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j) {
                 x->json_token_type = cJSON_GetUnionJsonTokenTypeValue(cJSON_GetObjectItemCaseSensitive(j, "JsonTokenType"));
                 if (NULL == x->json_token_type) { cJSON_DeleteTopLevel(x); return NULL; }
             }
+            if (cJSON_HasObjectItem(j, "KSerializer")) {
+                if (!cJSON_IsUnionKSerializer(cJSON_GetObjectItemCaseSensitive(j, "KSerializer"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->k_serializer = cJSON_GetUnionKSerializerValue(cJSON_GetObjectItemCaseSensitive(j, "KSerializer"));
+                if (NULL == x->k_serializer) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
             if (cJSON_HasObjectItem(j, "lambda")) {
                 if (!cJSON_IsUnionLambda(cJSON_GetObjectItemCaseSensitive(j, "lambda"))) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->lambda = cJSON_GetUnionLambdaValue(cJSON_GetObjectItemCaseSensitive(j, "lambda"));
@@ -32029,6 +32592,11 @@ struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j) {
                 x->prefix = cJSON_GetUnionPrefixValue(cJSON_GetObjectItemCaseSensitive(j, "prefix"));
                 if (NULL == x->prefix) { cJSON_DeleteTopLevel(x); return NULL; }
             }
+            if (cJSON_HasObjectItem(j, "PrimitiveKind")) {
+                if (!cJSON_IsUnionPrimitiveKind(cJSON_GetObjectItemCaseSensitive(j, "PrimitiveKind"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->primitive_kind = cJSON_GetUnionPrimitiveKindValue(cJSON_GetObjectItemCaseSensitive(j, "PrimitiveKind"));
+                if (NULL == x->primitive_kind) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
             if (cJSON_HasObjectItem(j, "print")) {
                 if (!cJSON_IsUnionPrint(cJSON_GetObjectItemCaseSensitive(j, "print"))) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->print = cJSON_GetUnionPrintValue(cJSON_GetObjectItemCaseSensitive(j, "print"));
@@ -32199,6 +32767,16 @@ struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j) {
                 x->sendable = cJSON_GetUnionSendableValue(cJSON_GetObjectItemCaseSensitive(j, "Sendable"));
                 if (NULL == x->sendable) { cJSON_DeleteTopLevel(x); return NULL; }
             }
+            if (cJSON_HasObjectItem(j, "SerialDescriptor")) {
+                if (!cJSON_IsUnionSerialDescriptor(cJSON_GetObjectItemCaseSensitive(j, "SerialDescriptor"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->serial_descriptor = cJSON_GetUnionSerialDescriptorValue(cJSON_GetObjectItemCaseSensitive(j, "SerialDescriptor"));
+                if (NULL == x->serial_descriptor) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
+            if (cJSON_HasObjectItem(j, "Serializable")) {
+                if (!cJSON_IsUnionSerializable(cJSON_GetObjectItemCaseSensitive(j, "Serializable"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->serializable = cJSON_GetUnionSerializableValue(cJSON_GetObjectItemCaseSensitive(j, "Serializable"));
+                if (NULL == x->serializable) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
             if (cJSON_HasObjectItem(j, "serialize")) {
                 if (!cJSON_IsUnionSerialize(cJSON_GetObjectItemCaseSensitive(j, "serialize"))) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->serialize = cJSON_GetUnionSerializeValue(cJSON_GetObjectItemCaseSensitive(j, "serialize"));
@@ -32209,6 +32787,11 @@ struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j) {
                 x->serializer_provider = cJSON_GetUnionSerializerProviderValue(cJSON_GetObjectItemCaseSensitive(j, "SerializerProvider"));
                 if (NULL == x->serializer_provider) { cJSON_DeleteTopLevel(x); return NULL; }
             }
+            if (cJSON_HasObjectItem(j, "SerialName")) {
+                if (!cJSON_IsUnionSerialName(cJSON_GetObjectItemCaseSensitive(j, "SerialName"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->serial_name = cJSON_GetUnionSerialNameValue(cJSON_GetObjectItemCaseSensitive(j, "SerialName"));
+                if (NULL == x->serial_name) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
             if (cJSON_HasObjectItem(j, "set")) {
                 if (!cJSON_IsUnionSet(cJSON_GetObjectItemCaseSensitive(j, "set"))) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->set = cJSON_GetUnionSetValue(cJSON_GetObjectItemCaseSensitive(j, "set"));
@@ -32469,6 +33052,11 @@ struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j) {
                 x->top_level_unsigned = cJSON_GetUnionUnsignedValue(cJSON_GetObjectItemCaseSensitive(j, "unsigned"));
                 if (NULL == x->top_level_unsigned) { cJSON_DeleteTopLevel(x); return NULL; }
             }
+            if (cJSON_HasObjectItem(j, "UseSerializers")) {
+                if (!cJSON_IsUnionUseSerializers(cJSON_GetObjectItemCaseSensitive(j, "UseSerializers"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->use_serializers = cJSON_GetUnionUseSerializersValue(cJSON_GetObjectItemCaseSensitive(j, "UseSerializers"));
+                if (NULL == x->use_serializers) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
             if (cJSON_HasObjectItem(j, "ushort")) {
                 if (!cJSON_IsUnionUshort(cJSON_GetObjectItemCaseSensitive(j, "ushort"))) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->ushort = cJSON_GetUnionUshortValue(cJSON_GetObjectItemCaseSensitive(j, "ushort"));
@@ -33089,6 +33677,9 @@ cJSON * cJSON_CreateTopLevel(const struct TopLevel * x) {
             if (NULL != x->json_token_type) {
                 cJSON_AddItemToObject(j, "JsonTokenType", cJSON_CreateUnionJsonTokenType(x->json_token_type));
             }
+            if (NULL != x->k_serializer) {
+                cJSON_AddItemToObject(j, "KSerializer", cJSON_CreateUnionKSerializer(x->k_serializer));
+            }
             if (NULL != x->lambda) {
                 cJSON_AddItemToObject(j, "lambda", cJSON_CreateUnionLambda(x->lambda));
             }
@@ -33251,6 +33842,9 @@ cJSON * cJSON_CreateTopLevel(const struct TopLevel * x) {
             if (NULL != x->prefix) {
                 cJSON_AddItemToObject(j, "prefix", cJSON_CreateUnionPrefix(x->prefix));
             }
+            if (NULL != x->primitive_kind) {
+                cJSON_AddItemToObject(j, "PrimitiveKind", cJSON_CreateUnionPrimitiveKind(x->primitive_kind));
+            }
             if (NULL != x->print) {
                 cJSON_AddItemToObject(j, "print", cJSON_CreateUnionPrint(x->print));
             }
@@ -33353,12 +33947,21 @@ cJSON * cJSON_CreateTopLevel(const struct TopLevel * x) {
             if (NULL != x->sendable) {
                 cJSON_AddItemToObject(j, "Sendable", cJSON_CreateUnionSendable(x->sendable));
             }
+            if (NULL != x->serial_descriptor) {
+                cJSON_AddItemToObject(j, "SerialDescriptor", cJSON_CreateUnionSerialDescriptor(x->serial_descriptor));
+            }
+            if (NULL != x->serializable) {
+                cJSON_AddItemToObject(j, "Serializable", cJSON_CreateUnionSerializable(x->serializable));
+            }
             if (NULL != x->serialize) {
                 cJSON_AddItemToObject(j, "serialize", cJSON_CreateUnionSerialize(x->serialize));
             }
             if (NULL != x->serializer_provider) {
                 cJSON_AddItemToObject(j, "SerializerProvider", cJSON_CreateUnionSerializerProvider(x->serializer_provider));
             }
+            if (NULL != x->serial_name) {
+                cJSON_AddItemToObject(j, "SerialName", cJSON_CreateUnionSerialName(x->serial_name));
+            }
             if (NULL != x->set) {
                 cJSON_AddItemToObject(j, "set", cJSON_CreateUnionSet(x->set));
             }
@@ -33515,6 +34118,9 @@ cJSON * cJSON_CreateTopLevel(const struct TopLevel * x) {
             if (NULL != x->top_level_unsigned) {
                 cJSON_AddItemToObject(j, "unsigned", cJSON_CreateUnionUnsigned(x->top_level_unsigned));
             }
+            if (NULL != x->use_serializers) {
+                cJSON_AddItemToObject(j, "UseSerializers", cJSON_CreateUnionUseSerializers(x->use_serializers));
+            }
             if (NULL != x->ushort) {
                 cJSON_AddItemToObject(j, "ushort", cJSON_CreateUnionUshort(x->ushort));
             }
@@ -34107,6 +34713,9 @@ void cJSON_DeleteTopLevel(struct TopLevel * x) {
         if (NULL != x->json_token_type) {
             cJSON_DeleteUnionJsonTokenType(x->json_token_type);
         }
+        if (NULL != x->k_serializer) {
+            cJSON_DeleteUnionKSerializer(x->k_serializer);
+        }
         if (NULL != x->lambda) {
             cJSON_DeleteUnionLambda(x->lambda);
         }
@@ -34269,6 +34878,9 @@ void cJSON_DeleteTopLevel(struct TopLevel * x) {
         if (NULL != x->prefix) {
             cJSON_DeleteUnionPrefix(x->prefix);
         }
+        if (NULL != x->primitive_kind) {
+            cJSON_DeleteUnionPrimitiveKind(x->primitive_kind);
+        }
         if (NULL != x->print) {
             cJSON_DeleteUnionPrint(x->print);
         }
@@ -34371,12 +34983,21 @@ void cJSON_DeleteTopLevel(struct TopLevel * x) {
         if (NULL != x->sendable) {
             cJSON_DeleteUnionSendable(x->sendable);
         }
+        if (NULL != x->serial_descriptor) {
+            cJSON_DeleteUnionSerialDescriptor(x->serial_descriptor);
+        }
+        if (NULL != x->serializable) {
+            cJSON_DeleteUnionSerializable(x->serializable);
+        }
         if (NULL != x->serialize) {
             cJSON_DeleteUnionSerialize(x->serialize);
         }
         if (NULL != x->serializer_provider) {
             cJSON_DeleteUnionSerializerProvider(x->serializer_provider);
         }
+        if (NULL != x->serial_name) {
+            cJSON_DeleteUnionSerialName(x->serial_name);
+        }
         if (NULL != x->set) {
             cJSON_DeleteUnionSet(x->set);
         }
@@ -34533,6 +35154,9 @@ void cJSON_DeleteTopLevel(struct TopLevel * x) {
         if (NULL != x->top_level_unsigned) {
             cJSON_DeleteUnionUnsigned(x->top_level_unsigned);
         }
+        if (NULL != x->use_serializers) {
+            cJSON_DeleteUnionUseSerializers(x->use_serializers);
+        }
         if (NULL != x->ushort) {
             cJSON_DeleteUnionUshort(x->ushort);
         }
diff --git a/base/schema-cjson/test/inputs/schema/keyword-unions.schema/default/TopLevel.h b/head/schema-cjson/test/inputs/schema/keyword-unions.schema/default/TopLevel.h
index 39a98a6..ddaf185 100644
--- a/base/schema-cjson/test/inputs/schema/keyword-unions.schema/default/TopLevel.h
+++ b/head/schema-cjson/test/inputs/schema/keyword-unions.schema/default/TopLevel.h
@@ -1346,6 +1346,17 @@ struct UnionJsonWriter {
     } value;
 };
 
+struct KSerializer {
+};
+
+struct UnionKSerializer {
+    int type;
+    union {
+        double number;
+        struct KSerializer * k_serializer;
+    } value;
+};
+
 struct Lambda {
 };
 
@@ -1775,6 +1786,17 @@ struct UnionPrefix {
     } value;
 };
 
+struct PrimitiveKind {
+};
+
+struct UnionPrimitiveKind {
+    int type;
+    union {
+        double number;
+        struct PrimitiveKind * primitive_kind;
+    } value;
+};
+
 struct Print {
 };
 
@@ -2083,6 +2105,39 @@ struct UnionSendable {
     } value;
 };
 
+struct SerialDescriptor {
+};
+
+struct UnionSerialDescriptor {
+    int type;
+    union {
+        double number;
+        struct SerialDescriptor * serial_descriptor;
+    } value;
+};
+
+struct SerialName {
+};
+
+struct UnionSerialName {
+    int type;
+    union {
+        double number;
+        struct SerialName * serial_name;
+    } value;
+};
+
+struct Serializable {
+};
+
+struct UnionSerializable {
+    int type;
+    union {
+        double number;
+        struct Serializable * serializable;
+    } value;
+};
+
 struct Serialize {
 };
 
@@ -3579,6 +3634,17 @@ struct UnionUnsafe {
     } value;
 };
 
+struct UseSerializers {
+};
+
+struct UnionUseSerializers {
+    int type;
+    union {
+        double number;
+        struct UseSerializers * use_serializers;
+    } value;
+};
+
 struct Ushort {
 };
 
@@ -3873,6 +3939,7 @@ struct TopLevel {
     struct UnionJsonParser * json_parser;
     struct UnionJsonReader * json_reader;
     struct UnionJsonTokenType * json_token_type;
+    struct UnionKSerializer * k_serializer;
     struct UnionLambda * lambda;
     struct UnionLazy * lazy;
     struct UnionLeft * left;
@@ -3927,6 +3994,7 @@ struct TopLevel {
     struct UnionPostfix * postfix;
     struct UnionPrecedence * precedence;
     struct UnionPrefix * prefix;
+    struct UnionPrimitiveKind * primitive_kind;
     struct UnionPrint * print;
     struct UnionPrintf * printf;
     struct UnionPrintMembers * print_members;
@@ -3961,8 +4029,11 @@ struct TopLevel {
     struct UnionSelf * self;
     struct UnionSelfUnion * top_level_self;
     struct UnionSendable * sendable;
+    struct UnionSerialDescriptor * serial_descriptor;
+    struct UnionSerializable * serializable;
     struct UnionSerialize * serialize;
     struct UnionSerializerProvider * serializer_provider;
+    struct UnionSerialName * serial_name;
     struct UnionSet * set;
     struct UnionShort * top_level_short;
     struct UnionSigned * top_level_signed;
@@ -4015,6 +4086,7 @@ struct TopLevel {
     struct UnionUnowned * unowned;
     struct UnionUnsafe * unsafe;
     struct UnionUnsigned * top_level_unsigned;
+    struct UnionUseSerializers * use_serializers;
     struct UnionUshort * ushort;
     struct UnionUsing * top_level_using;
     struct UnionUtf8JsonReader * utf8_json_reader;
@@ -4862,6 +4934,13 @@ void cJSON_DeleteUnionJsonWriter(struct UnionJsonWriter * x);
 struct UnionJsonWriter * cJSON_ParseUnionJsonWriter(const char * s);
 char * cJSON_PrintUnionJsonWriter(const struct UnionJsonWriter * x);
 
+#define cJSON_IsUnionKSerializer(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
+struct UnionKSerializer * cJSON_GetUnionKSerializerValue(const cJSON * j);
+cJSON * cJSON_CreateUnionKSerializer(const struct UnionKSerializer * x);
+void cJSON_DeleteUnionKSerializer(struct UnionKSerializer * x);
+struct UnionKSerializer * cJSON_ParseUnionKSerializer(const char * s);
+char * cJSON_PrintUnionKSerializer(const struct UnionKSerializer * x);
+
 #define cJSON_IsUnionLambda(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
 struct UnionLambda * cJSON_GetUnionLambdaValue(const cJSON * j);
 cJSON * cJSON_CreateUnionLambda(const struct UnionLambda * x);
@@ -5135,6 +5214,13 @@ void cJSON_DeleteUnionPrefix(struct UnionPrefix * x);
 struct UnionPrefix * cJSON_ParseUnionPrefix(const char * s);
 char * cJSON_PrintUnionPrefix(const struct UnionPrefix * x);
 
+#define cJSON_IsUnionPrimitiveKind(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
+struct UnionPrimitiveKind * cJSON_GetUnionPrimitiveKindValue(const cJSON * j);
+cJSON * cJSON_CreateUnionPrimitiveKind(const struct UnionPrimitiveKind * x);
+void cJSON_DeleteUnionPrimitiveKind(struct UnionPrimitiveKind * x);
+struct UnionPrimitiveKind * cJSON_ParseUnionPrimitiveKind(const char * s);
+char * cJSON_PrintUnionPrimitiveKind(const struct UnionPrimitiveKind * x);
+
 #define cJSON_IsUnionPrint(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
 struct UnionPrint * cJSON_GetUnionPrintValue(const cJSON * j);
 cJSON * cJSON_CreateUnionPrint(const struct UnionPrint * x);
@@ -5331,6 +5417,27 @@ void cJSON_DeleteUnionSendable(struct UnionSendable * x);
 struct UnionSendable * cJSON_ParseUnionSendable(const char * s);
 char * cJSON_PrintUnionSendable(const struct UnionSendable * x);
 
+#define cJSON_IsUnionSerialDescriptor(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
+struct UnionSerialDescriptor * cJSON_GetUnionSerialDescriptorValue(const cJSON * j);
+cJSON * cJSON_CreateUnionSerialDescriptor(const struct UnionSerialDescriptor * x);
+void cJSON_DeleteUnionSerialDescriptor(struct UnionSerialDescriptor * x);
+struct UnionSerialDescriptor * cJSON_ParseUnionSerialDescriptor(const char * s);
+char * cJSON_PrintUnionSerialDescriptor(const struct UnionSerialDescriptor * x);
+
+#define cJSON_IsUnionSerialName(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
+struct UnionSerialName * cJSON_GetUnionSerialNameValue(const cJSON * j);
+cJSON * cJSON_CreateUnionSerialName(const struct UnionSerialName * x);
+void cJSON_DeleteUnionSerialName(struct UnionSerialName * x);
+struct UnionSerialName * cJSON_ParseUnionSerialName(const char * s);
+char * cJSON_PrintUnionSerialName(const struct UnionSerialName * x);
+
+#define cJSON_IsUnionSerializable(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
+struct UnionSerializable * cJSON_GetUnionSerializableValue(const cJSON * j);
+cJSON * cJSON_CreateUnionSerializable(const struct UnionSerializable * x);
+void cJSON_DeleteUnionSerializable(struct UnionSerializable * x);
+struct UnionSerializable * cJSON_ParseUnionSerializable(const char * s);
+char * cJSON_PrintUnionSerializable(const struct UnionSerializable * x);
+
 #define cJSON_IsUnionSerialize(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
 struct UnionSerialize * cJSON_GetUnionSerializeValue(const cJSON * j);
 cJSON * cJSON_CreateUnionSerialize(const struct UnionSerialize * x);
@@ -6283,6 +6390,13 @@ void cJSON_DeleteUnionUnsafe(struct UnionUnsafe * x);
 struct UnionUnsafe * cJSON_ParseUnionUnsafe(const char * s);
 char * cJSON_PrintUnionUnsafe(const struct UnionUnsafe * x);
 
+#define cJSON_IsUnionUseSerializers(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
+struct UnionUseSerializers * cJSON_GetUnionUseSerializersValue(const cJSON * j);
+cJSON * cJSON_CreateUnionUseSerializers(const struct UnionUseSerializers * x);
+void cJSON_DeleteUnionUseSerializers(struct UnionUseSerializers * x);
+struct UnionUseSerializers * cJSON_ParseUnionUseSerializers(const char * s);
+char * cJSON_PrintUnionUseSerializers(const struct UnionUseSerializers * x);
+
 #define cJSON_IsUnionUshort(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
 struct UnionUshort * cJSON_GetUnionUshortValue(const cJSON * j);
 cJSON * cJSON_CreateUnionUshort(const struct UnionUshort * x);
@@ -7068,6 +7182,12 @@ cJSON * cJSON_CreateJsonWriter(const struct JsonWriter * x);
 char * cJSON_PrintJsonWriter(const struct JsonWriter * x);
 void cJSON_DeleteJsonWriter(struct JsonWriter * x);
 
+struct KSerializer * cJSON_ParseKSerializer(const char * s);
+struct KSerializer * cJSON_GetKSerializerValue(const cJSON * j);
+cJSON * cJSON_CreateKSerializer(const struct KSerializer * x);
+char * cJSON_PrintKSerializer(const struct KSerializer * x);
+void cJSON_DeleteKSerializer(struct KSerializer * x);
+
 struct Lambda * cJSON_ParseLambda(const char * s);
 struct Lambda * cJSON_GetLambdaValue(const cJSON * j);
 cJSON * cJSON_CreateLambda(const struct Lambda * x);
@@ -7302,6 +7422,12 @@ cJSON * cJSON_CreatePrefix(const struct Prefix * x);
 char * cJSON_PrintPrefix(const struct Prefix * x);
 void cJSON_DeletePrefix(struct Prefix * x);
 
+struct PrimitiveKind * cJSON_ParsePrimitiveKind(const char * s);
+struct PrimitiveKind * cJSON_GetPrimitiveKindValue(const cJSON * j);
+cJSON * cJSON_CreatePrimitiveKind(const struct PrimitiveKind * x);
+char * cJSON_PrintPrimitiveKind(const struct PrimitiveKind * x);
+void cJSON_DeletePrimitiveKind(struct PrimitiveKind * x);
+
 struct Print * cJSON_ParsePrint(const char * s);
 struct Print * cJSON_GetPrintValue(const cJSON * j);
 cJSON * cJSON_CreatePrint(const struct Print * x);
@@ -7470,6 +7596,24 @@ cJSON * cJSON_CreateSendable(const struct Sendable * x);
 char * cJSON_PrintSendable(const struct Sendable * x);
 void cJSON_DeleteSendable(struct Sendable * x);
 
+struct SerialDescriptor * cJSON_ParseSerialDescriptor(const char * s);
+struct SerialDescriptor * cJSON_GetSerialDescriptorValue(const cJSON * j);
+cJSON * cJSON_CreateSerialDescriptor(const struct SerialDescriptor * x);
+char * cJSON_PrintSerialDescriptor(const struct SerialDescriptor * x);
+void cJSON_DeleteSerialDescriptor(struct SerialDescriptor * x);
+
+struct SerialName * cJSON_ParseSerialName(const char * s);
+struct SerialName * cJSON_GetSerialNameValue(const cJSON * j);
+cJSON * cJSON_CreateSerialName(const struct SerialName * x);
+char * cJSON_PrintSerialName(const struct SerialName * x);
+void cJSON_DeleteSerialName(struct SerialName * x);
+
+struct Serializable * cJSON_ParseSerializable(const char * s);
+struct Serializable * cJSON_GetSerializableValue(const cJSON * j);
+cJSON * cJSON_CreateSerializable(const struct Serializable * x);
+char * cJSON_PrintSerializable(const struct Serializable * x);
+void cJSON_DeleteSerializable(struct Serializable * x);
+
 struct Serialize * cJSON_ParseSerialize(const char * s);
 struct Serialize * cJSON_GetSerializeValue(const cJSON * j);
 cJSON * cJSON_CreateSerialize(const struct Serialize * x);
@@ -8286,6 +8430,12 @@ cJSON * cJSON_CreateUnsafe(const struct Unsafe * x);
 char * cJSON_PrintUnsafe(const struct Unsafe * x);
 void cJSON_DeleteUnsafe(struct Unsafe * x);
 
+struct UseSerializers * cJSON_ParseUseSerializers(const char * s);
+struct UseSerializers * cJSON_GetUseSerializersValue(const cJSON * j);
+cJSON * cJSON_CreateUseSerializers(const struct UseSerializers * x);
+char * cJSON_PrintUseSerializers(const struct UseSerializers * x);
+void cJSON_DeleteUseSerializers(struct UseSerializers * x);
+
 struct Ushort * cJSON_ParseUshort(const char * s);
 struct Ushort * cJSON_GetUshortValue(const cJSON * j);
 cJSON * cJSON_CreateUshort(const struct Ushort * x);
diff --git a/base/schema-cplusplus/test/inputs/schema/keyword-enum.schema/default/quicktype.hpp b/head/schema-cplusplus/test/inputs/schema/keyword-enum.schema/default/quicktype.hpp
index 30a762b..9990771 100644
--- a/base/schema-cplusplus/test/inputs/schema/keyword-enum.schema/default/quicktype.hpp
+++ b/head/schema-cplusplus/test/inputs/schema/keyword-enum.schema/default/quicktype.hpp
@@ -89,7 +89,7 @@ namespace quicktype {
     }
     #endif
 
-    enum class Enum : int { EMPTY, BOOL, COMPLEX, IMAGINERY, ABSTRACT, ALIGNAS, ALIGNOF, AND, AND_EQ, ANY, ENUM_ANY, ARRAY, AS, ASM, ASSERT, ASSOCIATEDTYPE, ASSOCIATIVITY, ASYNC, ATOMIC, ATOMIC_CANCEL, ATOMIC_COMMIT, ATOMIC_NOEXCEPT, AUTO, AWAIT, BASE, BITAND, BITOR, ENUM_BOOL, PURPLE_BOOL, BOOLEAN, BREAK, BYCOPY, BYREF, BYTE, CALENDAR, CASE, CATCH, CHAN, CHAR, CHAR16_T, CHAR32_T, CHECKED, CLASS, ENUM_CLASS, CLONE, CO_AWAIT, CO_RETURN, CO_YIELD, CODABLE, CODING_KEY, CODING_KEYS, COMPL, CONCEPT, CONSOLE, CONST, CONST_CAST, CONSTEXPR, CONSTRUCTOR, CONTINUE, CONVENIENCE, CONVERT, CONVERTER, CULTURE_INFO, DATE, DATE_PARSE_HANDLING, DATE_FORMATTER, DATE_ONLY, DATE_ONLY_CONVERTER, DATE_TIME, DATE_TIME_STYLES, DEBUGGER, DECIMAL, DECLARE, DECLTYPE, DECODE_STRING, DECODER, DECODING_ERROR, DEF, DEFAULT, DEFER, DEINIT, DEL, DELEGATE, DELETE, DICT, DICTIONARY, DID_SET, DO, DOUBLE, DYNAMIC, DYNAMIC_CAST, ELIF, ELSE, ENCODE_QUICK_TYPE, ENCODER, ENUM, ENUM_VALUES, EQUATABLE, EQUALITY_CONTRACT, EVENT, EXCEPT, EXCEPTION, EXPLICIT, EXPORT, EXPOSING, EXTENDS, EXTENSION, EXTERN, FALLTHROUGH, FALSE, ENUM_FALSE, FILEPRIVATE, FINAL, FINALLY, FIXED, FLOAT, FOR, FOREACH, FORMAT_EXCEPTION, FRIEND, FROM, FROM_JSON, FUNC, FUNCTION, GET, GLOBAL, GO, GOTO, GUARD, HASHABLE, HASH_CODE, HASHER, HAS_OWN_PROPERTY, ID, IF, IMP, IMPLEMENTS, IMPLICIT, IMPORT, IN, INDIRECT, INFIX, INIT, INLINE, INOUT, INSTANCEOF, INT, INTERFACE, INTERNAL, ISO_DATE_TIME_OFFSET_CONVERTER, ITERABLE, IS, JDEC, JENC, JPIPE, JSON, JSON_CONVERTER, JSON_SERIALIZER, JSON_TOKEN, JSON_WRITER, JSON_ANY, JSON_CODING_KEY, JSON_DECODER, JSON_ENCODER, JSON_EXCEPTION, JSON_GENERATOR, JSON_NODE, JSON_NULL, JSON_PARSER, JSON_READER, JSON_TOKEN_TYPE, LAMBDA, LAZY, LEFT, LET, LIST, LOCALE, LOCK, LONG, MAP, MAP_ENTRY, METADATA_PROPERTY_HANDLING, MODULE, MUTABLE, MUTATING, NAMESPACE, NATIVE, NEW, NEWTONSOFT, NIL, NO, NOEXCEPT, NONATOMIC, NONE, ENUM_NONE, NONLOCAL, NONMUTATING, NS_OBJECT, NO_SUCH_METHOD, NOT, NOT_EQ, NS_ERROR, NS_STRING, ENUM_NULL, PURPLE_NULL, NULLPTR, NUMBER, OBJECT, OBJECT_MAPPER, OF, ONEWAY, OPEN, OPERATOR, OPTIONAL, OR, OR_EQ, OUT, OVERRIDE, PACKAGE, PARAMS, PASS, PORT, POSTFIX, PRECEDENCE, PREFIX, PRINT, PRINTF, PRINT_MEMBERS, PRIVATE, PROTECTED, PROTOCOL, ENUM_PROTOCOL, PUBLIC, QUICKTYPE, RAISE, RANGE, READONLY, REF, REG_EXP, REGISTER, REINTERPRET_CAST, REPEAT, REQUIRE, REQUIRED, REQUIRES, RESTRICT, RETAIN, RETHROWS, RETURN, RIGHT, RUNTIME_TYPE, S, SBYTE, SEALED, SEL, SELECT, SELF, ENUM_SELF, SENDABLE, SERIALIZE, SERIALIZER_PROVIDER, SET, SHORT, SIGNED, SIMPLE_MODULE, SIZEOF, STACKALLOC, STANDARDS, STATIC, STATIC_ASSERT, STATIC_CAST, STD_DESERIALIZER, STD_SERIALIZER, STRICTFP, STRING, STRUCT, SUBSCRIPT, SUPER, SWITCH, SYMBOL, SYNCHRONIZED, SYSTEM, TEMPLATE, THEN, THIS, THREAD_LOCAL, THROW, THROWS, TIME_ONLY, TIME_ONLY_CONVERTER, TIME_ZONE, TO_JSON, TOP_LEVEL, TO_STRING, TRANSIENT, TRUE, ENUM_TRUE, TRY, TYPE, ENUM_TYPE, TYPEALIAS, TYPEDEF, TYPEID, TYPENAME, TYPEOF, UINT, ULONG, UNCHECKED, UNDEFINED, UNION, UNOWNED, UNSAFE, UNSIGNED, USHORT, USING, UTF8_JSON_READER, UTF8_JSON_WRITER, UUID, VAR, VIRTUAL, VOID, VOLATILE, WCHAR_T, WEAK, WHERE, WHILE, WILL_SET, WITH, XOR, XOR_EQ, YES, YIELD, DUMMY };
+    enum class Enum : int { EMPTY, BOOL, COMPLEX, IMAGINERY, ABSTRACT, ALIGNAS, ALIGNOF, AND, AND_EQ, ANY, ENUM_ANY, ARRAY, AS, ASM, ASSERT, ASSOCIATEDTYPE, ASSOCIATIVITY, ASYNC, ATOMIC, ATOMIC_CANCEL, ATOMIC_COMMIT, ATOMIC_NOEXCEPT, AUTO, AWAIT, BASE, BITAND, BITOR, ENUM_BOOL, PURPLE_BOOL, BOOLEAN, BREAK, BYCOPY, BYREF, BYTE, CALENDAR, CASE, CATCH, CHAN, CHAR, CHAR16_T, CHAR32_T, CHECKED, CLASS, ENUM_CLASS, CLONE, CO_AWAIT, CO_RETURN, CO_YIELD, CODABLE, CODING_KEY, CODING_KEYS, COMPL, CONCEPT, CONSOLE, CONST, CONST_CAST, CONSTEXPR, CONSTRUCTOR, CONTINUE, CONVENIENCE, CONVERT, CONVERTER, CULTURE_INFO, DATE, DATE_PARSE_HANDLING, DATE_FORMATTER, DATE_ONLY, DATE_ONLY_CONVERTER, DATE_TIME, DATE_TIME_STYLES, DEBUGGER, DECIMAL, DECLARE, DECLTYPE, DECODE_STRING, DECODER, DECODING_ERROR, DEF, DEFAULT, DEFER, DEINIT, DEL, DELEGATE, DELETE, DICT, DICTIONARY, DID_SET, DO, DOUBLE, DYNAMIC, DYNAMIC_CAST, ELIF, ELSE, ENCODE_QUICK_TYPE, ENCODER, ENUM, ENUM_VALUES, EQUATABLE, EQUALITY_CONTRACT, EVENT, EXCEPT, EXCEPTION, EXPLICIT, EXPORT, EXPOSING, EXTENDS, EXTENSION, EXTERN, FALLTHROUGH, FALSE, ENUM_FALSE, FILEPRIVATE, FINAL, FINALLY, FIXED, FLOAT, FOR, FOREACH, FORMAT_EXCEPTION, FRIEND, FROM, FROM_JSON, FUNC, FUNCTION, GET, GLOBAL, GO, GOTO, GUARD, HASHABLE, HASH_CODE, HASHER, HAS_OWN_PROPERTY, ID, IF, IMP, IMPLEMENTS, IMPLICIT, IMPORT, IN, INDIRECT, INFIX, INIT, INLINE, INOUT, INSTANCEOF, INT, INTERFACE, INTERNAL, ISO_DATE_TIME_OFFSET_CONVERTER, ITERABLE, IS, JDEC, JENC, JPIPE, JSON, JSON_CONVERTER, JSON_SERIALIZER, JSON_TOKEN, JSON_WRITER, JSON_ANY, JSON_CODING_KEY, JSON_DECODER, JSON_ENCODER, JSON_EXCEPTION, JSON_GENERATOR, JSON_NODE, JSON_NULL, JSON_PARSER, JSON_READER, JSON_TOKEN_TYPE, LAMBDA, LAZY, LEFT, LET, LIST, LOCALE, LOCK, LONG, MAP, MAP_ENTRY, METADATA_PROPERTY_HANDLING, MODULE, MUTABLE, MUTATING, NAMESPACE, NATIVE, NEW, NEWTONSOFT, NIL, NO, NOEXCEPT, NONATOMIC, NONE, ENUM_NONE, NONLOCAL, NONMUTATING, NS_OBJECT, NO_SUCH_METHOD, NOT, NOT_EQ, NS_ERROR, NS_STRING, ENUM_NULL, PURPLE_NULL, NULLPTR, NUMBER, OBJECT, OBJECT_MAPPER, OF, ONEWAY, OPEN, OPERATOR, OPTIONAL, OR, OR_EQ, OUT, OVERRIDE, PACKAGE, PARAMS, PASS, PORT, POSTFIX, PRECEDENCE, PREFIX, PRINT, PRINTF, PRINT_MEMBERS, PRIVATE, PROTECTED, PROTOCOL, ENUM_PROTOCOL, PUBLIC, QUICKTYPE, RAISE, RANGE, READONLY, REF, REG_EXP, REGISTER, REINTERPRET_CAST, REPEAT, REQUIRE, REQUIRED, REQUIRES, RESTRICT, RETAIN, RETHROWS, RETURN, RIGHT, RUNTIME_TYPE, S, SBYTE, SEALED, SEL, SELECT, SELF, SERIALIZABLE, ENUM_SELF, SENDABLE, SERIALIZE, SERIAL_NAME, K_SERIALIZER, PRIMITIVE_KIND, SERIAL_DESCRIPTOR, SERIALIZER_PROVIDER, SET, SHORT, SIGNED, SIMPLE_MODULE, SIZEOF, STACKALLOC, STANDARDS, STATIC, STATIC_ASSERT, STATIC_CAST, STD_DESERIALIZER, STD_SERIALIZER, STRICTFP, STRING, STRUCT, SUBSCRIPT, SUPER, SWITCH, SYMBOL, SYNCHRONIZED, SYSTEM, TEMPLATE, THEN, THIS, THREAD_LOCAL, THROW, THROWS, TIME_ONLY, TIME_ONLY_CONVERTER, TIME_ZONE, TO_JSON, TOP_LEVEL, TO_STRING, TRANSIENT, TRUE, ENUM_TRUE, TRY, TYPE, ENUM_TYPE, TYPEALIAS, TYPEDEF, TYPEID, TYPENAME, TYPEOF, UINT, ULONG, UNCHECKED, UNDEFINED, UNION, USE_SERIALIZERS, UNOWNED, UNSAFE, UNSIGNED, USHORT, USING, UTF8_JSON_READER, UTF8_JSON_WRITER, UUID, VAR, VIRTUAL, VOID, VOLATILE, WCHAR_T, WEAK, WHERE, WHILE, WILL_SET, WITH, XOR, XOR_EQ, YES, YIELD, DUMMY };
 
     class TopLevel {
         public:
@@ -383,9 +383,14 @@ namespace quicktype {
             {"SEL", Enum::SEL},
             {"select", Enum::SELECT},
             {"Self", Enum::SELF},
+            {"Serializable", Enum::SERIALIZABLE},
             {"self", Enum::ENUM_SELF},
             {"Sendable", Enum::SENDABLE},
             {"serialize", Enum::SERIALIZE},
+            {"SerialName", Enum::SERIAL_NAME},
+            {"KSerializer", Enum::K_SERIALIZER},
+            {"PrimitiveKind", Enum::PRIMITIVE_KIND},
+            {"SerialDescriptor", Enum::SERIAL_DESCRIPTOR},
             {"SerializerProvider", Enum::SERIALIZER_PROVIDER},
             {"set", Enum::SET},
             {"short", Enum::SHORT},
@@ -436,6 +441,7 @@ namespace quicktype {
             {"unchecked", Enum::UNCHECKED},
             {"undefined", Enum::UNDEFINED},
             {"union", Enum::UNION},
+            {"UseSerializers", Enum::USE_SERIALIZERS},
             {"unowned", Enum::UNOWNED},
             {"unsafe", Enum::UNSAFE},
             {"unsigned", Enum::UNSIGNED},
@@ -726,9 +732,14 @@ namespace quicktype {
             case Enum::SEL: j = "SEL"; break;
             case Enum::SELECT: j = "select"; break;
             case Enum::SELF: j = "Self"; break;
+            case Enum::SERIALIZABLE: j = "Serializable"; break;
             case Enum::ENUM_SELF: j = "self"; break;
             case Enum::SENDABLE: j = "Sendable"; break;
             case Enum::SERIALIZE: j = "serialize"; break;
+            case Enum::SERIAL_NAME: j = "SerialName"; break;
+            case Enum::K_SERIALIZER: j = "KSerializer"; break;
+            case Enum::PRIMITIVE_KIND: j = "PrimitiveKind"; break;
+            case Enum::SERIAL_DESCRIPTOR: j = "SerialDescriptor"; break;
             case Enum::SERIALIZER_PROVIDER: j = "SerializerProvider"; break;
             case Enum::SET: j = "set"; break;
             case Enum::SHORT: j = "short"; break;
@@ -779,6 +790,7 @@ namespace quicktype {
             case Enum::UNCHECKED: j = "unchecked"; break;
             case Enum::UNDEFINED: j = "undefined"; break;
             case Enum::UNION: j = "union"; break;
+            case Enum::USE_SERIALIZERS: j = "UseSerializers"; break;
             case Enum::UNOWNED: j = "unowned"; break;
             case Enum::UNSAFE: j = "unsafe"; break;
             case Enum::UNSIGNED: j = "unsigned"; break;
diff --git a/base/schema-cplusplus/test/inputs/schema/keyword-unions.schema/default/quicktype.hpp b/head/schema-cplusplus/test/inputs/schema/keyword-unions.schema/default/quicktype.hpp
index 9bd3712..6da64bd 100644
--- a/base/schema-cplusplus/test/inputs/schema/keyword-unions.schema/default/quicktype.hpp
+++ b/head/schema-cplusplus/test/inputs/schema/keyword-unions.schema/default/quicktype.hpp
@@ -1505,6 +1505,18 @@ namespace quicktype {
 
     using UnionJsonWriter = std::variant<JsonWriter, double>;
 
+    class KSerializer {
+        public:
+        KSerializer() = default;
+        virtual ~KSerializer() = default;
+
+        private:
+
+        public:
+    };
+
+    using UnionKSerializer = std::variant<KSerializer, double>;
+
     class Lambda {
         public:
         Lambda() = default;
@@ -1973,6 +1985,18 @@ namespace quicktype {
 
     using UnionPrefix = std::variant<Prefix, double>;
 
+    class PrimitiveKind {
+        public:
+        PrimitiveKind() = default;
+        virtual ~PrimitiveKind() = default;
+
+        private:
+
+        public:
+    };
+
+    using UnionPrimitiveKind = std::variant<PrimitiveKind, double>;
+
     class Print {
         public:
         Print() = default;
@@ -2321,6 +2345,42 @@ namespace quicktype {
 
     using UnionSendable = std::variant<Sendable, double>;
 
+    class SerialDescriptor {
+        public:
+        SerialDescriptor() = default;
+        virtual ~SerialDescriptor() = default;
+
+        private:
+
+        public:
+    };
+
+    using UnionSerialDescriptor = std::variant<SerialDescriptor, double>;
+
+    class SerialName {
+        public:
+        SerialName() = default;
+        virtual ~SerialName() = default;
+
+        private:
+
+        public:
+    };
+
+    using UnionSerialName = std::variant<SerialName, double>;
+
+    class Serializable {
+        public:
+        Serializable() = default;
+        virtual ~Serializable() = default;
+
+        private:
+
+        public:
+    };
+
+    using UnionSerializable = std::variant<Serializable, double>;
+
     class Serialize {
         public:
         Serialize() = default;
@@ -3941,6 +4001,18 @@ namespace quicktype {
 
     using UnionUnsafe = std::variant<Unsafe, double>;
 
+    class UseSerializers {
+        public:
+        UseSerializers() = default;
+        virtual ~UseSerializers() = default;
+
+        private:
+
+        public:
+    };
+
+    using UnionUseSerializers = std::variant<UseSerializers, double>;
+
     class Ushort {
         public:
         Ushort() = default;
@@ -4251,6 +4323,7 @@ namespace quicktype {
         std::optional<UnionJsonParser> json_parser;
         std::optional<UnionJsonReader> json_reader;
         std::optional<UnionJsonTokenType> json_token_type;
+        std::optional<UnionKSerializer> k_serializer;
         std::optional<UnionLambda> lambda;
         std::optional<UnionLazy> lazy;
         std::optional<UnionLeft> left;
@@ -4305,6 +4378,7 @@ namespace quicktype {
         std::optional<UnionPostfix> postfix;
         std::optional<UnionPrecedence> precedence;
         std::optional<UnionPrefix> prefix;
+        std::optional<UnionPrimitiveKind> primitive_kind;
         std::optional<UnionPrint> print;
         std::optional<UnionPrintf> printf;
         std::optional<UnionPrintMembers> print_members;
@@ -4339,8 +4413,11 @@ namespace quicktype {
         std::optional<UnionSelf> self;
         std::optional<UnionSelfUnion> top_level_self;
         std::optional<UnionSendable> sendable;
+        std::optional<UnionSerialDescriptor> serial_descriptor;
+        std::optional<UnionSerializable> serializable;
         std::optional<UnionSerialize> serialize;
         std::optional<UnionSerializerProvider> serializer_provider;
+        std::optional<UnionSerialName> serial_name;
         std::optional<UnionSet> set;
         std::optional<UnionShort> top_level_short;
         std::optional<UnionSigned> top_level_signed;
@@ -4393,6 +4470,7 @@ namespace quicktype {
         std::optional<UnionUnowned> unowned;
         std::optional<UnionUnsafe> unsafe;
         std::optional<UnionUnsigned> top_level_unsigned;
+        std::optional<UnionUseSerializers> use_serializers;
         std::optional<UnionUshort> ushort;
         std::optional<UnionUsing> top_level_using;
         std::optional<UnionUtf8JsonReader> utf8_json_reader;
@@ -5102,6 +5180,10 @@ namespace quicktype {
         std::optional<UnionJsonTokenType> & get_mutable_json_token_type() { return json_token_type; }
         void set_json_token_type(const std::optional<UnionJsonTokenType> & value) { this->json_token_type = value; }
 
+        const std::optional<UnionKSerializer> & get_k_serializer() const { return k_serializer; }
+        std::optional<UnionKSerializer> & get_mutable_k_serializer() { return k_serializer; }
+        void set_k_serializer(const std::optional<UnionKSerializer> & value) { this->k_serializer = value; }
+
         const std::optional<UnionLambda> & get_lambda() const { return lambda; }
         std::optional<UnionLambda> & get_mutable_lambda() { return lambda; }
         void set_lambda(const std::optional<UnionLambda> & value) { this->lambda = value; }
@@ -5318,6 +5400,10 @@ namespace quicktype {
         std::optional<UnionPrefix> & get_mutable_prefix() { return prefix; }
         void set_prefix(const std::optional<UnionPrefix> & value) { this->prefix = value; }
 
+        const std::optional<UnionPrimitiveKind> & get_primitive_kind() const { return primitive_kind; }
+        std::optional<UnionPrimitiveKind> & get_mutable_primitive_kind() { return primitive_kind; }
+        void set_primitive_kind(const std::optional<UnionPrimitiveKind> & value) { this->primitive_kind = value; }
+
         const std::optional<UnionPrint> & get_print() const { return print; }
         std::optional<UnionPrint> & get_mutable_print() { return print; }
         void set_print(const std::optional<UnionPrint> & value) { this->print = value; }
@@ -5454,6 +5540,14 @@ namespace quicktype {
         std::optional<UnionSendable> & get_mutable_sendable() { return sendable; }
         void set_sendable(const std::optional<UnionSendable> & value) { this->sendable = value; }
 
+        const std::optional<UnionSerialDescriptor> & get_serial_descriptor() const { return serial_descriptor; }
+        std::optional<UnionSerialDescriptor> & get_mutable_serial_descriptor() { return serial_descriptor; }
+        void set_serial_descriptor(const std::optional<UnionSerialDescriptor> & value) { this->serial_descriptor = value; }
+
+        const std::optional<UnionSerializable> & get_serializable() const { return serializable; }
+        std::optional<UnionSerializable> & get_mutable_serializable() { return serializable; }
+        void set_serializable(const std::optional<UnionSerializable> & value) { this->serializable = value; }
+
         const std::optional<UnionSerialize> & get_serialize() const { return serialize; }
         std::optional<UnionSerialize> & get_mutable_serialize() { return serialize; }
         void set_serialize(const std::optional<UnionSerialize> & value) { this->serialize = value; }
@@ -5462,6 +5556,10 @@ namespace quicktype {
         std::optional<UnionSerializerProvider> & get_mutable_serializer_provider() { return serializer_provider; }
         void set_serializer_provider(const std::optional<UnionSerializerProvider> & value) { this->serializer_provider = value; }
 
+        const std::optional<UnionSerialName> & get_serial_name() const { return serial_name; }
+        std::optional<UnionSerialName> & get_mutable_serial_name() { return serial_name; }
+        void set_serial_name(const std::optional<UnionSerialName> & value) { this->serial_name = value; }
+
         const std::optional<UnionSet> & get_set() const { return set; }
         std::optional<UnionSet> & get_mutable_set() { return set; }
         void set_set(const std::optional<UnionSet> & value) { this->set = value; }
@@ -5670,6 +5768,10 @@ namespace quicktype {
         std::optional<UnionUnsigned> & get_mutable_top_level_unsigned() { return top_level_unsigned; }
         void set_top_level_unsigned(const std::optional<UnionUnsigned> & value) { this->top_level_unsigned = value; }
 
+        const std::optional<UnionUseSerializers> & get_use_serializers() const { return use_serializers; }
+        std::optional<UnionUseSerializers> & get_mutable_use_serializers() { return use_serializers; }
+        void set_use_serializers(const std::optional<UnionUseSerializers> & value) { this->use_serializers = value; }
+
         const std::optional<UnionUshort> & get_ushort() const { return ushort; }
         std::optional<UnionUshort> & get_mutable_ushort() { return ushort; }
         void set_ushort(const std::optional<UnionUshort> & value) { this->ushort = value; }
@@ -6103,6 +6205,9 @@ void to_json(json & j, const JsonTokenType & x);
 void from_json(const json & j, JsonWriter & x);
 void to_json(json & j, const JsonWriter & x);
 
+void from_json(const json & j, KSerializer & x);
+void to_json(json & j, const KSerializer & x);
+
 void from_json(const json & j, Lambda & x);
 void to_json(json & j, const Lambda & x);
 
@@ -6220,6 +6325,9 @@ void to_json(json & j, const Precedence & x);
 void from_json(const json & j, Prefix & x);
 void to_json(json & j, const Prefix & x);
 
+void from_json(const json & j, PrimitiveKind & x);
+void to_json(json & j, const PrimitiveKind & x);
+
 void from_json(const json & j, Print & x);
 void to_json(json & j, const Print & x);
 
@@ -6307,6 +6415,15 @@ void to_json(json & j, const Self & x);
 void from_json(const json & j, Sendable & x);
 void to_json(json & j, const Sendable & x);
 
+void from_json(const json & j, SerialDescriptor & x);
+void to_json(json & j, const SerialDescriptor & x);
+
+void from_json(const json & j, SerialName & x);
+void to_json(json & j, const SerialName & x);
+
+void from_json(const json & j, Serializable & x);
+void to_json(json & j, const Serializable & x);
+
 void from_json(const json & j, Serialize & x);
 void to_json(json & j, const Serialize & x);
 
@@ -6712,6 +6829,9 @@ void to_json(json & j, const Unowned & x);
 void from_json(const json & j, Unsafe & x);
 void to_json(json & j, const Unsafe & x);
 
+void from_json(const json & j, UseSerializers & x);
+void to_json(json & j, const UseSerializers & x);
+
 void from_json(const json & j, Ushort & x);
 void to_json(json & j, const Ushort & x);
 
@@ -7457,6 +7577,12 @@ struct adl_serializer<std::variant<quicktype::JsonWriter, double>> {
     static void to_json(json & j, const std::variant<quicktype::JsonWriter, double> & x);
 };
 
+template <>
+struct adl_serializer<std::variant<quicktype::KSerializer, double>> {
+    static void from_json(const json & j, std::variant<quicktype::KSerializer, double> & x);
+    static void to_json(json & j, const std::variant<quicktype::KSerializer, double> & x);
+};
+
 template <>
 struct adl_serializer<std::variant<quicktype::Lambda, double>> {
     static void from_json(const json & j, std::variant<quicktype::Lambda, double> & x);
@@ -7691,6 +7817,12 @@ struct adl_serializer<std::variant<quicktype::Prefix, double>> {
     static void to_json(json & j, const std::variant<quicktype::Prefix, double> & x);
 };
 
+template <>
+struct adl_serializer<std::variant<quicktype::PrimitiveKind, double>> {
+    static void from_json(const json & j, std::variant<quicktype::PrimitiveKind, double> & x);
+    static void to_json(json & j, const std::variant<quicktype::PrimitiveKind, double> & x);
+};
+
 template <>
 struct adl_serializer<std::variant<quicktype::Print, double>> {
     static void from_json(const json & j, std::variant<quicktype::Print, double> & x);
@@ -7865,6 +7997,24 @@ struct adl_serializer<std::variant<quicktype::Sendable, double>> {
     static void to_json(json & j, const std::variant<quicktype::Sendable, double> & x);
 };
 
+template <>
+struct adl_serializer<std::variant<quicktype::SerialDescriptor, double>> {
+    static void from_json(const json & j, std::variant<quicktype::SerialDescriptor, double> & x);
+    static void to_json(json & j, const std::variant<quicktype::SerialDescriptor, double> & x);
+};
+
+template <>
+struct adl_serializer<std::variant<quicktype::SerialName, double>> {
+    static void from_json(const json & j, std::variant<quicktype::SerialName, double> & x);
+    static void to_json(json & j, const std::variant<quicktype::SerialName, double> & x);
+};
+
+template <>
+struct adl_serializer<std::variant<quicktype::Serializable, double>> {
+    static void from_json(const json & j, std::variant<quicktype::Serializable, double> & x);
+    static void to_json(json & j, const std::variant<quicktype::Serializable, double> & x);
+};
+
 template <>
 struct adl_serializer<std::variant<quicktype::Serialize, double>> {
     static void from_json(const json & j, std::variant<quicktype::Serialize, double> & x);
@@ -8675,6 +8825,12 @@ struct adl_serializer<std::variant<quicktype::Unsafe, double>> {
     static void to_json(json & j, const std::variant<quicktype::Unsafe, double> & x);
 };
 
+template <>
+struct adl_serializer<std::variant<quicktype::UseSerializers, double>> {
+    static void from_json(const json & j, std::variant<quicktype::UseSerializers, double> & x);
+    static void to_json(json & j, const std::variant<quicktype::UseSerializers, double> & x);
+};
+
 template <>
 struct adl_serializer<std::variant<quicktype::Ushort, double>> {
     static void from_json(const json & j, std::variant<quicktype::Ushort, double> & x);
@@ -10040,6 +10196,17 @@ namespace quicktype {
         (void)x;
     }
 
+    inline void from_json(const json & j, KSerializer& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const KSerializer & x) {
+        j = json::object();
+        (void)x;
+    }
+
     inline void from_json(const json & j, Lambda& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         (void)j;
@@ -10469,6 +10636,17 @@ namespace quicktype {
         (void)x;
     }
 
+    inline void from_json(const json & j, PrimitiveKind& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const PrimitiveKind & x) {
+        j = json::object();
+        (void)x;
+    }
+
     inline void from_json(const json & j, Print& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         (void)j;
@@ -10788,6 +10966,39 @@ namespace quicktype {
         (void)x;
     }
 
+    inline void from_json(const json & j, SerialDescriptor& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const SerialDescriptor & x) {
+        j = json::object();
+        (void)x;
+    }
+
+    inline void from_json(const json & j, SerialName& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const SerialName & x) {
+        j = json::object();
+        (void)x;
+    }
+
+    inline void from_json(const json & j, Serializable& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const Serializable & x) {
+        j = json::object();
+        (void)x;
+    }
+
     inline void from_json(const json & j, Serialize& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         (void)j;
@@ -12273,6 +12484,17 @@ namespace quicktype {
         (void)x;
     }
 
+    inline void from_json(const json & j, UseSerializers& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const UseSerializers & x) {
+        j = json::object();
+        (void)x;
+    }
+
     inline void from_json(const json & j, Ushort& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         (void)j;
@@ -12740,6 +12962,8 @@ namespace quicktype {
         x.set_json_reader(get_stack_optional<std::variant<JsonReader, double>>(j, "JsonReader"));
         if (j.find("JsonTokenType") != j.end() && j.at("JsonTokenType").is_null()) throw std::runtime_error("Unexpected null");
         x.set_json_token_type(get_stack_optional<std::variant<JsonTokenType, double>>(j, "JsonTokenType"));
+        if (j.find("KSerializer") != j.end() && j.at("KSerializer").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_k_serializer(get_stack_optional<std::variant<KSerializer, double>>(j, "KSerializer"));
         if (j.find("lambda") != j.end() && j.at("lambda").is_null()) throw std::runtime_error("Unexpected null");
         x.set_lambda(get_stack_optional<std::variant<Lambda, double>>(j, "lambda"));
         if (j.find("lazy") != j.end() && j.at("lazy").is_null()) throw std::runtime_error("Unexpected null");
@@ -12848,6 +13072,8 @@ namespace quicktype {
         x.set_precedence(get_stack_optional<std::variant<Precedence, double>>(j, "precedence"));
         if (j.find("prefix") != j.end() && j.at("prefix").is_null()) throw std::runtime_error("Unexpected null");
         x.set_prefix(get_stack_optional<std::variant<Prefix, double>>(j, "prefix"));
+        if (j.find("PrimitiveKind") != j.end() && j.at("PrimitiveKind").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_primitive_kind(get_stack_optional<std::variant<PrimitiveKind, double>>(j, "PrimitiveKind"));
         if (j.find("print") != j.end() && j.at("print").is_null()) throw std::runtime_error("Unexpected null");
         x.set_print(get_stack_optional<std::variant<Print, double>>(j, "print"));
         if (j.find("printf") != j.end() && j.at("printf").is_null()) throw std::runtime_error("Unexpected null");
@@ -12916,10 +13142,16 @@ namespace quicktype {
         x.set_top_level_self(get_stack_optional<std::variant<SelfClass, double>>(j, "self"));
         if (j.find("Sendable") != j.end() && j.at("Sendable").is_null()) throw std::runtime_error("Unexpected null");
         x.set_sendable(get_stack_optional<std::variant<Sendable, double>>(j, "Sendable"));
+        if (j.find("SerialDescriptor") != j.end() && j.at("SerialDescriptor").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_serial_descriptor(get_stack_optional<std::variant<SerialDescriptor, double>>(j, "SerialDescriptor"));
+        if (j.find("Serializable") != j.end() && j.at("Serializable").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_serializable(get_stack_optional<std::variant<Serializable, double>>(j, "Serializable"));
         if (j.find("serialize") != j.end() && j.at("serialize").is_null()) throw std::runtime_error("Unexpected null");
         x.set_serialize(get_stack_optional<std::variant<Serialize, double>>(j, "serialize"));
         if (j.find("SerializerProvider") != j.end() && j.at("SerializerProvider").is_null()) throw std::runtime_error("Unexpected null");
         x.set_serializer_provider(get_stack_optional<std::variant<SerializerProvider, double>>(j, "SerializerProvider"));
+        if (j.find("SerialName") != j.end() && j.at("SerialName").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_serial_name(get_stack_optional<std::variant<SerialName, double>>(j, "SerialName"));
         if (j.find("set") != j.end() && j.at("set").is_null()) throw std::runtime_error("Unexpected null");
         x.set_set(get_stack_optional<std::variant<Set, double>>(j, "set"));
         if (j.find("short") != j.end() && j.at("short").is_null()) throw std::runtime_error("Unexpected null");
@@ -13024,6 +13256,8 @@ namespace quicktype {
         x.set_unsafe(get_stack_optional<std::variant<Unsafe, double>>(j, "unsafe"));
         if (j.find("unsigned") != j.end() && j.at("unsigned").is_null()) throw std::runtime_error("Unexpected null");
         x.set_top_level_unsigned(get_stack_optional<std::variant<Unsigned, double>>(j, "unsigned"));
+        if (j.find("UseSerializers") != j.end() && j.at("UseSerializers").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_use_serializers(get_stack_optional<std::variant<UseSerializers, double>>(j, "UseSerializers"));
         if (j.find("ushort") != j.end() && j.at("ushort").is_null()) throw std::runtime_error("Unexpected null");
         x.set_ushort(get_stack_optional<std::variant<Ushort, double>>(j, "ushort"));
         if (j.find("using") != j.end() && j.at("using").is_null()) throw std::runtime_error("Unexpected null");
@@ -13238,6 +13472,7 @@ namespace quicktype {
         j["JsonParser"] = x.get_json_parser();
         j["JsonReader"] = x.get_json_reader();
         j["JsonTokenType"] = x.get_json_token_type();
+        j["KSerializer"] = x.get_k_serializer();
         j["lambda"] = x.get_lambda();
         j["lazy"] = x.get_lazy();
         j["left"] = x.get_left();
@@ -13292,6 +13527,7 @@ namespace quicktype {
         j["postfix"] = x.get_postfix();
         j["precedence"] = x.get_precedence();
         j["prefix"] = x.get_prefix();
+        j["PrimitiveKind"] = x.get_primitive_kind();
         j["print"] = x.get_print();
         j["printf"] = x.get_printf();
         j["printMembers"] = x.get_print_members();
@@ -13326,8 +13562,11 @@ namespace quicktype {
         j["Self"] = x.get_self();
         j["self"] = x.get_top_level_self();
         j["Sendable"] = x.get_sendable();
+        j["SerialDescriptor"] = x.get_serial_descriptor();
+        j["Serializable"] = x.get_serializable();
         j["serialize"] = x.get_serialize();
         j["SerializerProvider"] = x.get_serializer_provider();
+        j["SerialName"] = x.get_serial_name();
         j["set"] = x.get_set();
         j["short"] = x.get_top_level_short();
         j["signed"] = x.get_top_level_signed();
@@ -13380,6 +13619,7 @@ namespace quicktype {
         j["unowned"] = x.get_unowned();
         j["unsafe"] = x.get_unsafe();
         j["unsigned"] = x.get_top_level_unsigned();
+        j["UseSerializers"] = x.get_use_serializers();
         j["ushort"] = x.get_ushort();
         j["using"] = x.get_top_level_using();
         j["Utf8JsonReader"] = x.get_utf8_json_reader();
@@ -15762,6 +16002,26 @@ namespace nlohmann {
         }
     }
 
+    inline void adl_serializer<std::variant<quicktype::KSerializer, double>>::from_json(const json & j, std::variant<quicktype::KSerializer, double> & x) {
+        if (j.is_number())
+            x = j.get<double>();
+        else if (j.is_object())
+            x = j.get<quicktype::KSerializer>();
+        else throw std::runtime_error("Could not deserialise!");
+    }
+
+    inline void adl_serializer<std::variant<quicktype::KSerializer, double>>::to_json(json & j, const std::variant<quicktype::KSerializer, double> & x) {
+        switch (x.index()) {
+            case 0:
+                j = std::get<quicktype::KSerializer>(x);
+                break;
+            case 1:
+                j = std::get<double>(x);
+                break;
+            default: throw std::runtime_error("Input JSON does not conform to schema!");
+        }
+    }
+
     inline void adl_serializer<std::variant<quicktype::Lambda, double>>::from_json(const json & j, std::variant<quicktype::Lambda, double> & x) {
         if (j.is_number())
             x = j.get<double>();
@@ -16542,6 +16802,26 @@ namespace nlohmann {
         }
     }
 
+    inline void adl_serializer<std::variant<quicktype::PrimitiveKind, double>>::from_json(const json & j, std::variant<quicktype::PrimitiveKind, double> & x) {
+        if (j.is_number())
+            x = j.get<double>();
+        else if (j.is_object())
+            x = j.get<quicktype::PrimitiveKind>();
+        else throw std::runtime_error("Could not deserialise!");
+    }
+
+    inline void adl_serializer<std::variant<quicktype::PrimitiveKind, double>>::to_json(json & j, const std::variant<quicktype::PrimitiveKind, double> & x) {
+        switch (x.index()) {
+            case 0:
+                j = std::get<quicktype::PrimitiveKind>(x);
+                break;
+            case 1:
+                j = std::get<double>(x);
+                break;
+            default: throw std::runtime_error("Input JSON does not conform to schema!");
+        }
+    }
+
     inline void adl_serializer<std::variant<quicktype::Print, double>>::from_json(const json & j, std::variant<quicktype::Print, double> & x) {
         if (j.is_number())
             x = j.get<double>();
@@ -17122,6 +17402,66 @@ namespace nlohmann {
         }
     }
 
+    inline void adl_serializer<std::variant<quicktype::SerialDescriptor, double>>::from_json(const json & j, std::variant<quicktype::SerialDescriptor, double> & x) {
+        if (j.is_number())
+            x = j.get<double>();
+        else if (j.is_object())
+            x = j.get<quicktype::SerialDescriptor>();
+        else throw std::runtime_error("Could not deserialise!");
+    }
+
+    inline void adl_serializer<std::variant<quicktype::SerialDescriptor, double>>::to_json(json & j, const std::variant<quicktype::SerialDescriptor, double> & x) {
+        switch (x.index()) {
+            case 0:
+                j = std::get<quicktype::SerialDescriptor>(x);
+                break;
+            case 1:
+                j = std::get<double>(x);
+                break;
+            default: throw std::runtime_error("Input JSON does not conform to schema!");
+        }
+    }
+
+    inline void adl_serializer<std::variant<quicktype::SerialName, double>>::from_json(const json & j, std::variant<quicktype::SerialName, double> & x) {
+        if (j.is_number())
+            x = j.get<double>();
+        else if (j.is_object())
+            x = j.get<quicktype::SerialName>();
+        else throw std::runtime_error("Could not deserialise!");
+    }
+
+    inline void adl_serializer<std::variant<quicktype::SerialName, double>>::to_json(json & j, const std::variant<quicktype::SerialName, double> & x) {
+        switch (x.index()) {
+            case 0:
+                j = std::get<quicktype::SerialName>(x);
+                break;
+            case 1:
+                j = std::get<double>(x);
+                break;
+            default: throw std::runtime_error("Input JSON does not conform to schema!");
+        }
+    }
+
+    inline void adl_serializer<std::variant<quicktype::Serializable, double>>::from_json(const json & j, std::variant<quicktype::Serializable, double> & x) {
+        if (j.is_number())
+            x = j.get<double>();
+        else if (j.is_object())
+            x = j.get<quicktype::Serializable>();
+        else throw std::runtime_error("Could not deserialise!");
+    }
+
+    inline void adl_serializer<std::variant<quicktype::Serializable, double>>::to_json(json & j, const std::variant<quicktype::Serializable, double> & x) {
+        switch (x.index()) {
+            case 0:
+                j = std::get<quicktype::Serializable>(x);
+                break;
+            case 1:
+                j = std::get<double>(x);
+                break;
+            default: throw std::runtime_error("Input JSON does not conform to schema!");
+        }
+    }
+
     inline void adl_serializer<std::variant<quicktype::Serialize, double>>::from_json(const json & j, std::variant<quicktype::Serialize, double> & x) {
         if (j.is_number())
             x = j.get<double>();
@@ -19822,6 +20162,26 @@ namespace nlohmann {
         }
     }
 
+    inline void adl_serializer<std::variant<quicktype::UseSerializers, double>>::from_json(const json & j, std::variant<quicktype::UseSerializers, double> & x) {
+        if (j.is_number())
+            x = j.get<double>();
+        else if (j.is_object())
+            x = j.get<quicktype::UseSerializers>();
+        else throw std::runtime_error("Could not deserialise!");
+    }
+
+    inline void adl_serializer<std::variant<quicktype::UseSerializers, double>>::to_json(json & j, const std::variant<quicktype::UseSerializers, double> & x) {
+        switch (x.index()) {
+            case 0:
+                j = std::get<quicktype::UseSerializers>(x);
+                break;
+            case 1:
+                j = std::get<double>(x);
+                break;
+            default: throw std::runtime_error("Input JSON does not conform to schema!");
+        }
+    }
+
     inline void adl_serializer<std::variant<quicktype::Ushort, double>>::from_json(const json & j, std::variant<quicktype::Ushort, double> & x) {
         if (j.is_number())
             x = j.get<double>();
diff --git a/base/schema-crystal/test/inputs/schema/keyword-unions.schema/default/TopLevel.cr b/head/schema-crystal/test/inputs/schema/keyword-unions.schema/default/TopLevel.cr
index c783a18..23b7f5d 100644
--- a/base/schema-crystal/test/inputs/schema/keyword-unions.schema/default/TopLevel.cr
+++ b/head/schema-crystal/test/inputs/schema/keyword-unions.schema/default/TopLevel.cr
@@ -406,6 +406,9 @@ class TopLevel
   @[JSON::Field(key: "JsonTokenType")]
   property json_token_type : UnionJsonTokenType?
 
+  @[JSON::Field(key: "KSerializer")]
+  property k_serializer : UnionKSerializer?
+
   property lambda : UnionLambda?
 
   property lazy : UnionLazy?
@@ -530,6 +533,9 @@ class TopLevel
 
   property prefix : UnionPrefix?
 
+  @[JSON::Field(key: "PrimitiveKind")]
+  property primitive_kind : UnionPrimitiveKind?
+
   property print : UnionPrint?
 
   property printf : UnionPrintf?
@@ -612,11 +618,20 @@ class TopLevel
   @[JSON::Field(key: "Sendable")]
   property sendable : UnionSendable?
 
+  @[JSON::Field(key: "SerialDescriptor")]
+  property serial_descriptor : UnionSerialDescriptor?
+
+  @[JSON::Field(key: "Serializable")]
+  property serializable : UnionSerializable?
+
   property serialize : UnionSerialize?
 
   @[JSON::Field(key: "SerializerProvider")]
   property serializer_provider : UnionSerializerProvider?
 
+  @[JSON::Field(key: "SerialName")]
+  property serial_name : UnionSerialName?
+
   property set : UnionSet?
 
   property short : UnionShort?
@@ -740,6 +755,9 @@ class TopLevel
 
   property unsigned : UnionUnsigned?
 
+  @[JSON::Field(key: "UseSerializers")]
+  property use_serializers : UnionUseSerializers?
+
   property ushort : UnionUshort?
 
   property using : UnionUsing?
@@ -1547,6 +1565,11 @@ class JsonWriter
 
 end
 
+class KSerializer
+  include JSON::Serializable
+
+end
+
 class Lambda
   include JSON::Serializable
 
@@ -1787,6 +1810,11 @@ class Prefix
 
 end
 
+class PrimitiveKind
+  include JSON::Serializable
+
+end
+
 class Print
   include JSON::Serializable
 
@@ -1947,6 +1975,21 @@ class Sendable
 
 end
 
+class SerialDescriptor
+  include JSON::Serializable
+
+end
+
+class SerialName
+  include JSON::Serializable
+
+end
+
+class Serializable
+  include JSON::Serializable
+
+end
+
 class Serialize
   include JSON::Serializable
 
@@ -2367,6 +2410,11 @@ class Unsigned
 
 end
 
+class UseSerializers
+  include JSON::Serializable
+
+end
+
 class Ushort
   include JSON::Serializable
 
@@ -2751,6 +2799,8 @@ alias UnionJsonTokenType = Float64 | JsonTokenType
 
 alias UnionJsonWriter = Float64 | JsonWriter
 
+alias UnionKSerializer = Float64 | KSerializer
+
 alias UnionLambda = Float64 | Lambda
 
 alias UnionLazy = Float64 | Lazy
@@ -2847,6 +2897,8 @@ alias UnionPrecedence = Float64 | Precedence
 
 alias UnionPrefix = Float64 | Prefix
 
+alias UnionPrimitiveKind = Float64 | PrimitiveKind
+
 alias UnionPrint = Float64 | Print
 
 alias UnionPrintMembers = Float64 | PrintMembers
@@ -2911,6 +2963,12 @@ alias UnionSel = Float64 | Sel
 
 alias UnionSendable = Float64 | Sendable
 
+alias UnionSerialDescriptor = Float64 | SerialDescriptor
+
+alias UnionSerialName = Float64 | SerialName
+
+alias UnionSerializable = Float64 | Serializable
+
 alias UnionSerialize = Float64 | Serialize
 
 alias UnionSerializerProvider = Float64 | SerializerProvider
@@ -3079,6 +3137,8 @@ alias UnionUnsafe = Float64 | Unsafe
 
 alias UnionUnsigned = Float64 | Unsigned
 
+alias UnionUseSerializers = Float64 | UseSerializers
+
 alias UnionUshort = Float64 | Ushort
 
 alias UnionUsing = Float64 | Using
diff --git a/base/schema-csharp/test/inputs/schema/keyword-enum.schema/default/QuickType.cs b/head/schema-csharp/test/inputs/schema/keyword-enum.schema/default/QuickType.cs
index c52fca7..0c15d57 100644
--- a/base/schema-csharp/test/inputs/schema/keyword-enum.schema/default/QuickType.cs
+++ b/head/schema-csharp/test/inputs/schema/keyword-enum.schema/default/QuickType.cs
@@ -29,7 +29,7 @@ namespace QuickType
         public Enum? Enum { get; set; }
     }
 
-    public enum Enum { Empty, Bool, Complex, Imaginery, Abstract, Alignas, Alignof, And, AndEq, Any, EnumAny, Array, As, Asm, Assert, Associatedtype, Associativity, Async, Atomic, AtomicCancel, AtomicCommit, AtomicNoexcept, Auto, Await, Base, Bitand, Bitor, EnumBool, PurpleBool, Boolean, Break, Bycopy, Byref, Byte, Calendar, Case, Catch, Chan, Char, Char16T, Char32T, Checked, Class, EnumClass, Clone, CoAwait, CoReturn, CoYield, Codable, CodingKey, CodingKeys, Compl, Concept, Console, Const, ConstCast, Constexpr, Constructor, Continue, Convenience, Convert, Converter, CultureInfo, Date, DateParseHandling, DateFormatter, DateOnly, DateOnlyConverter, DateTime, DateTimeStyles, Debugger, Decimal, Declare, Decltype, DecodeString, Decoder, DecodingError, Def, Default, Defer, Deinit, Del, Delegate, Delete, Dict, Dictionary, DidSet, Do, Double, Dynamic, DynamicCast, Elif, Else, EncodeQuickType, Encoder, Enum, EnumValues, Equatable, EqualityContract, Event, Except, Exception, Explicit, Export, Exposing, Extends, Extension, Extern, Fallthrough, False, EnumFalse, Fileprivate, Final, Finally, Fixed, Float, For, Foreach, FormatException, Friend, From, FromJson, Func, Function, Get, Global, Go, Goto, Guard, Hashable, HashCode, Hasher, HasOwnProperty, Id, If, Imp, Implements, Implicit, Import, In, Indirect, Infix, Init, Inline, Inout, Instanceof, Int, Interface, Internal, IsoDateTimeOffsetConverter, Iterable, Is, Jdec, Jenc, Jpipe, Json, JsonConverter, JsonSerializer, JsonToken, JsonWriter, JsonAny, JsonCodingKey, JsonDecoder, JsonEncoder, JsonException, JsonGenerator, JsonNode, JsonNull, JsonParser, JsonReader, JsonTokenType, Lambda, Lazy, Left, Let, List, Locale, Lock, Long, Map, MapEntry, MetadataPropertyHandling, Module, Mutable, Mutating, Namespace, Native, New, Newtonsoft, Nil, No, Noexcept, Nonatomic, None, EnumNone, Nonlocal, Nonmutating, NsObject, NoSuchMethod, Not, NotEq, NsError, NsString, Null, EnumNull, Nullptr, Number, Object, ObjectMapper, Of, Oneway, Open, Operator, Optional, Or, OrEq, Out, Override, Package, Params, Pass, Port, Postfix, Precedence, Prefix, Print, Printf, PrintMembers, Private, Protected, Protocol, EnumProtocol, Public, Quicktype, Raise, Range, Readonly, Ref, RegExp, Register, ReinterpretCast, Repeat, Require, Required, Requires, Restrict, Retain, Rethrows, Return, Right, RuntimeType, S, Sbyte, Sealed, Sel, Select, Self, EnumSelf, Sendable, Serialize, SerializerProvider, Set, Short, Signed, SimpleModule, Sizeof, Stackalloc, Standards, Static, StaticAssert, StaticCast, StdDeserializer, StdSerializer, Strictfp, String, Struct, Subscript, Super, Switch, Symbol, Synchronized, System, Template, Then, This, ThreadLocal, Throw, Throws, TimeOnly, TimeOnlyConverter, TimeZone, ToJson, TopLevel, ToString, Transient, True, EnumTrue, Try, Type, EnumType, Typealias, Typedef, Typeid, Typename, Typeof, Uint, Ulong, Unchecked, Undefined, Union, Unowned, Unsafe, Unsigned, Ushort, Using, Utf8JsonReader, Utf8JsonWriter, Uuid, Var, Virtual, Void, Volatile, WcharT, Weak, Where, While, WillSet, With, Xor, XorEq, Yes, Yield, Dummy };
+    public enum Enum { Empty, Bool, Complex, Imaginery, Abstract, Alignas, Alignof, And, AndEq, Any, EnumAny, Array, As, Asm, Assert, Associatedtype, Associativity, Async, Atomic, AtomicCancel, AtomicCommit, AtomicNoexcept, Auto, Await, Base, Bitand, Bitor, EnumBool, PurpleBool, Boolean, Break, Bycopy, Byref, Byte, Calendar, Case, Catch, Chan, Char, Char16T, Char32T, Checked, Class, EnumClass, Clone, CoAwait, CoReturn, CoYield, Codable, CodingKey, CodingKeys, Compl, Concept, Console, Const, ConstCast, Constexpr, Constructor, Continue, Convenience, Convert, Converter, CultureInfo, Date, DateParseHandling, DateFormatter, DateOnly, DateOnlyConverter, DateTime, DateTimeStyles, Debugger, Decimal, Declare, Decltype, DecodeString, Decoder, DecodingError, Def, Default, Defer, Deinit, Del, Delegate, Delete, Dict, Dictionary, DidSet, Do, Double, Dynamic, DynamicCast, Elif, Else, EncodeQuickType, Encoder, Enum, EnumValues, Equatable, EqualityContract, Event, Except, Exception, Explicit, Export, Exposing, Extends, Extension, Extern, Fallthrough, False, EnumFalse, Fileprivate, Final, Finally, Fixed, Float, For, Foreach, FormatException, Friend, From, FromJson, Func, Function, Get, Global, Go, Goto, Guard, Hashable, HashCode, Hasher, HasOwnProperty, Id, If, Imp, Implements, Implicit, Import, In, Indirect, Infix, Init, Inline, Inout, Instanceof, Int, Interface, Internal, IsoDateTimeOffsetConverter, Iterable, Is, Jdec, Jenc, Jpipe, Json, JsonConverter, JsonSerializer, JsonToken, JsonWriter, JsonAny, JsonCodingKey, JsonDecoder, JsonEncoder, JsonException, JsonGenerator, JsonNode, JsonNull, JsonParser, JsonReader, JsonTokenType, Lambda, Lazy, Left, Let, List, Locale, Lock, Long, Map, MapEntry, MetadataPropertyHandling, Module, Mutable, Mutating, Namespace, Native, New, Newtonsoft, Nil, No, Noexcept, Nonatomic, None, EnumNone, Nonlocal, Nonmutating, NsObject, NoSuchMethod, Not, NotEq, NsError, NsString, Null, EnumNull, Nullptr, Number, Object, ObjectMapper, Of, Oneway, Open, Operator, Optional, Or, OrEq, Out, Override, Package, Params, Pass, Port, Postfix, Precedence, Prefix, Print, Printf, PrintMembers, Private, Protected, Protocol, EnumProtocol, Public, Quicktype, Raise, Range, Readonly, Ref, RegExp, Register, ReinterpretCast, Repeat, Require, Required, Requires, Restrict, Retain, Rethrows, Return, Right, RuntimeType, S, Sbyte, Sealed, Sel, Select, Self, Serializable, EnumSelf, Sendable, Serialize, SerialName, KSerializer, PrimitiveKind, SerialDescriptor, SerializerProvider, Set, Short, Signed, SimpleModule, Sizeof, Stackalloc, Standards, Static, StaticAssert, StaticCast, StdDeserializer, StdSerializer, Strictfp, String, Struct, Subscript, Super, Switch, Symbol, Synchronized, System, Template, Then, This, ThreadLocal, Throw, Throws, TimeOnly, TimeOnlyConverter, TimeZone, ToJson, TopLevel, ToString, Transient, True, EnumTrue, Try, Type, EnumType, Typealias, Typedef, Typeid, Typename, Typeof, Uint, Ulong, Unchecked, Undefined, Union, UseSerializers, Unowned, Unsafe, Unsigned, Ushort, Using, Utf8JsonReader, Utf8JsonWriter, Uuid, Var, Virtual, Void, Volatile, WcharT, Weak, Where, While, WillSet, With, Xor, XorEq, Yes, Yield, Dummy };
 
     public partial class TopLevel
     {
@@ -579,12 +579,22 @@ namespace QuickType
                     return Enum.Select;
                 case "Self":
                     return Enum.Self;
+                case "Serializable":
+                    return Enum.Serializable;
                 case "self":
                     return Enum.EnumSelf;
                 case "Sendable":
                     return Enum.Sendable;
                 case "serialize":
                     return Enum.Serialize;
+                case "SerialName":
+                    return Enum.SerialName;
+                case "KSerializer":
+                    return Enum.KSerializer;
+                case "PrimitiveKind":
+                    return Enum.PrimitiveKind;
+                case "SerialDescriptor":
+                    return Enum.SerialDescriptor;
                 case "SerializerProvider":
                     return Enum.SerializerProvider;
                 case "set":
@@ -685,6 +695,8 @@ namespace QuickType
                     return Enum.Undefined;
                 case "union":
                     return Enum.Union;
+                case "UseSerializers":
+                    return Enum.UseSerializers;
                 case "unowned":
                     return Enum.Unowned;
                 case "unsafe":
@@ -1516,6 +1528,9 @@ namespace QuickType
                 case Enum.Self:
                     serializer.Serialize(writer, "Self");
                     return;
+                case Enum.Serializable:
+                    serializer.Serialize(writer, "Serializable");
+                    return;
                 case Enum.EnumSelf:
                     serializer.Serialize(writer, "self");
                     return;
@@ -1525,6 +1540,18 @@ namespace QuickType
                 case Enum.Serialize:
                     serializer.Serialize(writer, "serialize");
                     return;
+                case Enum.SerialName:
+                    serializer.Serialize(writer, "SerialName");
+                    return;
+                case Enum.KSerializer:
+                    serializer.Serialize(writer, "KSerializer");
+                    return;
+                case Enum.PrimitiveKind:
+                    serializer.Serialize(writer, "PrimitiveKind");
+                    return;
+                case Enum.SerialDescriptor:
+                    serializer.Serialize(writer, "SerialDescriptor");
+                    return;
                 case Enum.SerializerProvider:
                     serializer.Serialize(writer, "SerializerProvider");
                     return;
@@ -1675,6 +1702,9 @@ namespace QuickType
                 case Enum.Union:
                     serializer.Serialize(writer, "union");
                     return;
+                case Enum.UseSerializers:
+                    serializer.Serialize(writer, "UseSerializers");
+                    return;
                 case Enum.Unowned:
                     serializer.Serialize(writer, "unowned");
                     return;
diff --git a/base/schema-csharp/test/inputs/schema/keyword-unions.schema/default/QuickType.cs b/head/schema-csharp/test/inputs/schema/keyword-unions.schema/default/QuickType.cs
index d957a1e..4953ce9 100644
--- a/base/schema-csharp/test/inputs/schema/keyword-unions.schema/default/QuickType.cs
+++ b/head/schema-csharp/test/inputs/schema/keyword-unions.schema/default/QuickType.cs
@@ -541,6 +541,9 @@ namespace QuickType
         [JsonProperty("JsonTokenType", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionJsonTokenType? JsonTokenType { get; set; }
 
+        [JsonProperty("KSerializer", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionKSerializer? KSerializer { get; set; }
+
         [JsonProperty("lambda", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionLambda? Lambda { get; set; }
 
@@ -703,6 +706,9 @@ namespace QuickType
         [JsonProperty("prefix", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionPrefix? Prefix { get; set; }
 
+        [JsonProperty("PrimitiveKind", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionPrimitiveKind? PrimitiveKind { get; set; }
+
         [JsonProperty("print", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionPrint? Print { get; set; }
 
@@ -805,12 +811,21 @@ namespace QuickType
         [JsonProperty("Sendable", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionSendable? Sendable { get; set; }
 
+        [JsonProperty("SerialDescriptor", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionSerialDescriptor? SerialDescriptor { get; set; }
+
+        [JsonProperty("Serializable", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionSerializable? Serializable { get; set; }
+
         [JsonProperty("serialize", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionSerialize? Serialize { get; set; }
 
         [JsonProperty("SerializerProvider", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionSerializerProvider? SerializerProvider { get; set; }
 
+        [JsonProperty("SerialName", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionSerialName? SerialName { get; set; }
+
         [JsonProperty("set", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionSet? Set { get; set; }
 
@@ -967,6 +982,9 @@ namespace QuickType
         [JsonProperty("unsigned", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionUnsigned? Unsigned { get; set; }
 
+        [JsonProperty("UseSerializers", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionUseSerializers? UseSerializers { get; set; }
+
         [JsonProperty("ushort", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionUshort? Ushort { get; set; }
 
@@ -1685,6 +1703,10 @@ namespace QuickType
     {
     }
 
+    public partial class KSerializer
+    {
+    }
+
     public partial class Lambda
     {
     }
@@ -1893,6 +1915,10 @@ namespace QuickType
     {
     }
 
+    public partial class PrimitiveKind
+    {
+    }
+
     public partial class Print
     {
     }
@@ -2021,6 +2047,18 @@ namespace QuickType
     {
     }
 
+    public partial class SerialDescriptor
+    {
+    }
+
+    public partial class SerialName
+    {
+    }
+
+    public partial class Serializable
+    {
+    }
+
     public partial class SerializeClass
     {
     }
@@ -2277,6 +2315,10 @@ namespace QuickType
     {
     }
 
+    public partial class UseSerializers
+    {
+    }
+
     public partial class Ushort
     {
     }
@@ -3838,6 +3880,15 @@ namespace QuickType
         public static implicit operator UnionJsonWriter(JsonWriterClass JsonWriterClass) => new UnionJsonWriter { JsonWriterClass = JsonWriterClass };
     }
 
+    public partial struct UnionKSerializer
+    {
+        public double? Double;
+        public KSerializer? KSerializer;
+
+        public static implicit operator UnionKSerializer(double Double) => new UnionKSerializer { Double = Double };
+        public static implicit operator UnionKSerializer(KSerializer KSerializer) => new UnionKSerializer { KSerializer = KSerializer };
+    }
+
     public partial struct UnionLambda
     {
         public double? Double;
@@ -4306,6 +4357,15 @@ namespace QuickType
         public static implicit operator UnionPrefix(Prefix Prefix) => new UnionPrefix { Prefix = Prefix };
     }
 
+    public partial struct UnionPrimitiveKind
+    {
+        public double? Double;
+        public PrimitiveKind? PrimitiveKind;
+
+        public static implicit operator UnionPrimitiveKind(double Double) => new UnionPrimitiveKind { Double = Double };
+        public static implicit operator UnionPrimitiveKind(PrimitiveKind PrimitiveKind) => new UnionPrimitiveKind { PrimitiveKind = PrimitiveKind };
+    }
+
     public partial struct UnionPrint
     {
         public double? Double;
@@ -4594,6 +4654,33 @@ namespace QuickType
         public static implicit operator UnionSendable(Sendable Sendable) => new UnionSendable { Sendable = Sendable };
     }
 
+    public partial struct UnionSerialDescriptor
+    {
+        public double? Double;
+        public SerialDescriptor? SerialDescriptor;
+
+        public static implicit operator UnionSerialDescriptor(double Double) => new UnionSerialDescriptor { Double = Double };
+        public static implicit operator UnionSerialDescriptor(SerialDescriptor SerialDescriptor) => new UnionSerialDescriptor { SerialDescriptor = SerialDescriptor };
+    }
+
+    public partial struct UnionSerialName
+    {
+        public double? Double;
+        public SerialName? SerialName;
+
+        public static implicit operator UnionSerialName(double Double) => new UnionSerialName { Double = Double };
+        public static implicit operator UnionSerialName(SerialName SerialName) => new UnionSerialName { SerialName = SerialName };
+    }
+
+    public partial struct UnionSerializable
+    {
+        public double? Double;
+        public Serializable? Serializable;
+
+        public static implicit operator UnionSerializable(double Double) => new UnionSerializable { Double = Double };
+        public static implicit operator UnionSerializable(Serializable Serializable) => new UnionSerializable { Serializable = Serializable };
+    }
+
     public partial struct UnionSerialize
     {
         public double? Double;
@@ -5170,6 +5257,15 @@ namespace QuickType
         public static implicit operator UnionUnsigned(Unsigned Unsigned) => new UnionUnsigned { Unsigned = Unsigned };
     }
 
+    public partial struct UnionUseSerializers
+    {
+        public double? Double;
+        public UseSerializers? UseSerializers;
+
+        public static implicit operator UnionUseSerializers(double Double) => new UnionUseSerializers { Double = Double };
+        public static implicit operator UnionUseSerializers(UseSerializers UseSerializers) => new UnionUseSerializers { UseSerializers = UseSerializers };
+    }
+
     public partial struct UnionUshort
     {
         public double? Double;
@@ -5394,6 +5490,7 @@ namespace QuickType
                 UnionJsonParserConverter.Singleton,
                 UnionJsonReaderConverter.Singleton,
                 UnionJsonTokenTypeConverter.Singleton,
+                UnionKSerializerConverter.Singleton,
                 UnionLocaleConverter.Singleton,
                 UnionMapEntryConverter.Singleton,
                 UnionNoConverter.Singleton,
@@ -5403,11 +5500,15 @@ namespace QuickType
                 UnionNullConverter.Singleton,
                 UnionNoneConverter.Singleton,
                 UnionObjectMapperConverter.Singleton,
+                UnionPrimitiveKindConverter.Singleton,
                 UnionProtocolConverter.Singleton,
                 UnionRegExpConverter.Singleton,
                 UnionSelConverter.Singleton,
                 UnionSelfConverter.Singleton,
                 UnionSendableConverter.Singleton,
+                UnionSerialDescriptorConverter.Singleton,
+                UnionSerialNameConverter.Singleton,
+                UnionSerializableConverter.Singleton,
                 UnionSerializerProviderConverter.Singleton,
                 UnionSimpleModuleConverter.Singleton,
                 UnionStandardsConverter.Singleton,
@@ -5419,6 +5520,7 @@ namespace QuickType
                 UnionTrueConverter.Singleton,
                 UnionTypeConverter.Singleton,
                 UnionUuidConverter.Singleton,
+                UnionUseSerializersConverter.Singleton,
                 UnionUtf8JsonReaderConverter.Singleton,
                 UnionUtf8JsonWriterConverter.Singleton,
                 UnionYesConverter.Singleton,
@@ -7026,6 +7128,44 @@ namespace QuickType
         public static readonly UnionJsonTokenTypeConverter Singleton = new UnionJsonTokenTypeConverter();
     }
 
+    internal class UnionKSerializerConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionKSerializer) || t == typeof(UnionKSerializer?);
+
+        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonToken.Integer:
+                case JsonToken.Float:
+                    var doubleValue = serializer.Deserialize<double>(reader);
+                    return new UnionKSerializer { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<KSerializer>(reader);
+                    return new UnionKSerializer { KSerializer = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionKSerializer");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionKSerializer)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.KSerializer != null)
+            {
+                serializer.Serialize(writer, value.KSerializer);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionKSerializer");
+        }
+
+        public static readonly UnionKSerializerConverter Singleton = new UnionKSerializerConverter();
+    }
+
     internal class UnionLocaleConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionLocale) || t == typeof(UnionLocale?);
@@ -7368,6 +7508,44 @@ namespace QuickType
         public static readonly UnionObjectMapperConverter Singleton = new UnionObjectMapperConverter();
     }
 
+    internal class UnionPrimitiveKindConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionPrimitiveKind) || t == typeof(UnionPrimitiveKind?);
+
+        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonToken.Integer:
+                case JsonToken.Float:
+                    var doubleValue = serializer.Deserialize<double>(reader);
+                    return new UnionPrimitiveKind { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<PrimitiveKind>(reader);
+                    return new UnionPrimitiveKind { PrimitiveKind = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionPrimitiveKind");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionPrimitiveKind)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.PrimitiveKind != null)
+            {
+                serializer.Serialize(writer, value.PrimitiveKind);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionPrimitiveKind");
+        }
+
+        public static readonly UnionPrimitiveKindConverter Singleton = new UnionPrimitiveKindConverter();
+    }
+
     internal class UnionProtocolConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionProtocol) || t == typeof(UnionProtocol?);
@@ -7558,6 +7736,120 @@ namespace QuickType
         public static readonly UnionSendableConverter Singleton = new UnionSendableConverter();
     }
 
+    internal class UnionSerialDescriptorConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionSerialDescriptor) || t == typeof(UnionSerialDescriptor?);
+
+        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonToken.Integer:
+                case JsonToken.Float:
+                    var doubleValue = serializer.Deserialize<double>(reader);
+                    return new UnionSerialDescriptor { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<SerialDescriptor>(reader);
+                    return new UnionSerialDescriptor { SerialDescriptor = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionSerialDescriptor");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionSerialDescriptor)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.SerialDescriptor != null)
+            {
+                serializer.Serialize(writer, value.SerialDescriptor);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionSerialDescriptor");
+        }
+
+        public static readonly UnionSerialDescriptorConverter Singleton = new UnionSerialDescriptorConverter();
+    }
+
+    internal class UnionSerialNameConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionSerialName) || t == typeof(UnionSerialName?);
+
+        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonToken.Integer:
+                case JsonToken.Float:
+                    var doubleValue = serializer.Deserialize<double>(reader);
+                    return new UnionSerialName { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<SerialName>(reader);
+                    return new UnionSerialName { SerialName = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionSerialName");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionSerialName)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.SerialName != null)
+            {
+                serializer.Serialize(writer, value.SerialName);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionSerialName");
+        }
+
+        public static readonly UnionSerialNameConverter Singleton = new UnionSerialNameConverter();
+    }
+
+    internal class UnionSerializableConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionSerializable) || t == typeof(UnionSerializable?);
+
+        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonToken.Integer:
+                case JsonToken.Float:
+                    var doubleValue = serializer.Deserialize<double>(reader);
+                    return new UnionSerializable { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<Serializable>(reader);
+                    return new UnionSerializable { Serializable = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionSerializable");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionSerializable)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.Serializable != null)
+            {
+                serializer.Serialize(writer, value.Serializable);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionSerializable");
+        }
+
+        public static readonly UnionSerializableConverter Singleton = new UnionSerializableConverter();
+    }
+
     internal class UnionSerializerProviderConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionSerializerProvider) || t == typeof(UnionSerializerProvider?);
@@ -7976,6 +8268,44 @@ namespace QuickType
         public static readonly UnionUuidConverter Singleton = new UnionUuidConverter();
     }
 
+    internal class UnionUseSerializersConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionUseSerializers) || t == typeof(UnionUseSerializers?);
+
+        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonToken.Integer:
+                case JsonToken.Float:
+                    var doubleValue = serializer.Deserialize<double>(reader);
+                    return new UnionUseSerializers { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<UseSerializers>(reader);
+                    return new UnionUseSerializers { UseSerializers = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionUseSerializers");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionUseSerializers)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.UseSerializers != null)
+            {
+                serializer.Serialize(writer, value.UseSerializers);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionUseSerializers");
+        }
+
+        public static readonly UnionUseSerializersConverter Singleton = new UnionUseSerializersConverter();
+    }
+
     internal class UnionUtf8JsonReaderConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionUtf8JsonReader) || t == typeof(UnionUtf8JsonReader?);
diff --git a/base/schema-csharp-SystemTextJson/test/inputs/schema/keyword-enum.schema/default/QuickType.cs b/head/schema-csharp-SystemTextJson/test/inputs/schema/keyword-enum.schema/default/QuickType.cs
index 0a99152..67a2818 100644
--- a/base/schema-csharp-SystemTextJson/test/inputs/schema/keyword-enum.schema/default/QuickType.cs
+++ b/head/schema-csharp-SystemTextJson/test/inputs/schema/keyword-enum.schema/default/QuickType.cs
@@ -27,7 +27,7 @@ namespace QuickType
         public Enum? Enum { get; set; }
     }
 
-    public enum Enum { Empty, Bool, Complex, Imaginery, Abstract, Alignas, Alignof, And, AndEq, Any, EnumAny, Array, As, Asm, Assert, Associatedtype, Associativity, Async, Atomic, AtomicCancel, AtomicCommit, AtomicNoexcept, Auto, Await, Base, Bitand, Bitor, EnumBool, PurpleBool, Boolean, Break, Bycopy, Byref, Byte, Calendar, Case, Catch, Chan, Char, Char16T, Char32T, Checked, Class, EnumClass, Clone, CoAwait, CoReturn, CoYield, Codable, CodingKey, CodingKeys, Compl, Concept, Console, Const, ConstCast, Constexpr, Constructor, Continue, Convenience, Convert, Converter, CultureInfo, Date, DateParseHandling, DateFormatter, DateOnly, DateOnlyConverter, DateTime, DateTimeStyles, Debugger, Decimal, Declare, Decltype, DecodeString, Decoder, DecodingError, Def, Default, Defer, Deinit, Del, Delegate, Delete, Dict, Dictionary, DidSet, Do, Double, Dynamic, DynamicCast, Elif, Else, EncodeQuickType, Encoder, Enum, EnumValues, Equatable, EqualityContract, Event, Except, Exception, Explicit, Export, Exposing, Extends, Extension, Extern, Fallthrough, False, EnumFalse, Fileprivate, Final, Finally, Fixed, Float, For, Foreach, FormatException, Friend, From, FromJson, Func, Function, Get, Global, Go, Goto, Guard, Hashable, HashCode, Hasher, HasOwnProperty, Id, If, Imp, Implements, Implicit, Import, In, Indirect, Infix, Init, Inline, Inout, Instanceof, Int, Interface, Internal, IsoDateTimeOffsetConverter, Iterable, Is, Jdec, Jenc, Jpipe, Json, JsonConverter, JsonSerializer, JsonToken, JsonWriter, JsonAny, JsonCodingKey, JsonDecoder, JsonEncoder, JsonException, JsonGenerator, JsonNode, JsonNull, JsonParser, JsonReader, JsonTokenType, Lambda, Lazy, Left, Let, List, Locale, Lock, Long, Map, MapEntry, MetadataPropertyHandling, Module, Mutable, Mutating, Namespace, Native, New, Newtonsoft, Nil, No, Noexcept, Nonatomic, None, EnumNone, Nonlocal, Nonmutating, NsObject, NoSuchMethod, Not, NotEq, NsError, NsString, Null, EnumNull, Nullptr, Number, Object, ObjectMapper, Of, Oneway, Open, Operator, Optional, Or, OrEq, Out, Override, Package, Params, Pass, Port, Postfix, Precedence, Prefix, Print, Printf, PrintMembers, Private, Protected, Protocol, EnumProtocol, Public, Quicktype, Raise, Range, Readonly, Ref, RegExp, Register, ReinterpretCast, Repeat, Require, Required, Requires, Restrict, Retain, Rethrows, Return, Right, RuntimeType, S, Sbyte, Sealed, Sel, Select, Self, EnumSelf, Sendable, Serialize, SerializerProvider, Set, Short, Signed, SimpleModule, Sizeof, Stackalloc, Standards, Static, StaticAssert, StaticCast, StdDeserializer, StdSerializer, Strictfp, String, Struct, Subscript, Super, Switch, Symbol, Synchronized, System, Template, Then, This, ThreadLocal, Throw, Throws, TimeOnly, TimeOnlyConverter, TimeZone, ToJson, TopLevel, ToString, Transient, True, EnumTrue, Try, Type, EnumType, Typealias, Typedef, Typeid, Typename, Typeof, Uint, Ulong, Unchecked, Undefined, Union, Unowned, Unsafe, Unsigned, Ushort, Using, Utf8JsonReader, Utf8JsonWriter, Uuid, Var, Virtual, Void, Volatile, WcharT, Weak, Where, While, WillSet, With, Xor, XorEq, Yes, Yield, Dummy };
+    public enum Enum { Empty, Bool, Complex, Imaginery, Abstract, Alignas, Alignof, And, AndEq, Any, EnumAny, Array, As, Asm, Assert, Associatedtype, Associativity, Async, Atomic, AtomicCancel, AtomicCommit, AtomicNoexcept, Auto, Await, Base, Bitand, Bitor, EnumBool, PurpleBool, Boolean, Break, Bycopy, Byref, Byte, Calendar, Case, Catch, Chan, Char, Char16T, Char32T, Checked, Class, EnumClass, Clone, CoAwait, CoReturn, CoYield, Codable, CodingKey, CodingKeys, Compl, Concept, Console, Const, ConstCast, Constexpr, Constructor, Continue, Convenience, Convert, Converter, CultureInfo, Date, DateParseHandling, DateFormatter, DateOnly, DateOnlyConverter, DateTime, DateTimeStyles, Debugger, Decimal, Declare, Decltype, DecodeString, Decoder, DecodingError, Def, Default, Defer, Deinit, Del, Delegate, Delete, Dict, Dictionary, DidSet, Do, Double, Dynamic, DynamicCast, Elif, Else, EncodeQuickType, Encoder, Enum, EnumValues, Equatable, EqualityContract, Event, Except, Exception, Explicit, Export, Exposing, Extends, Extension, Extern, Fallthrough, False, EnumFalse, Fileprivate, Final, Finally, Fixed, Float, For, Foreach, FormatException, Friend, From, FromJson, Func, Function, Get, Global, Go, Goto, Guard, Hashable, HashCode, Hasher, HasOwnProperty, Id, If, Imp, Implements, Implicit, Import, In, Indirect, Infix, Init, Inline, Inout, Instanceof, Int, Interface, Internal, IsoDateTimeOffsetConverter, Iterable, Is, Jdec, Jenc, Jpipe, Json, JsonConverter, JsonSerializer, JsonToken, JsonWriter, JsonAny, JsonCodingKey, JsonDecoder, JsonEncoder, JsonException, JsonGenerator, JsonNode, JsonNull, JsonParser, JsonReader, JsonTokenType, Lambda, Lazy, Left, Let, List, Locale, Lock, Long, Map, MapEntry, MetadataPropertyHandling, Module, Mutable, Mutating, Namespace, Native, New, Newtonsoft, Nil, No, Noexcept, Nonatomic, None, EnumNone, Nonlocal, Nonmutating, NsObject, NoSuchMethod, Not, NotEq, NsError, NsString, Null, EnumNull, Nullptr, Number, Object, ObjectMapper, Of, Oneway, Open, Operator, Optional, Or, OrEq, Out, Override, Package, Params, Pass, Port, Postfix, Precedence, Prefix, Print, Printf, PrintMembers, Private, Protected, Protocol, EnumProtocol, Public, Quicktype, Raise, Range, Readonly, Ref, RegExp, Register, ReinterpretCast, Repeat, Require, Required, Requires, Restrict, Retain, Rethrows, Return, Right, RuntimeType, S, Sbyte, Sealed, Sel, Select, Self, Serializable, EnumSelf, Sendable, Serialize, SerialName, KSerializer, PrimitiveKind, SerialDescriptor, SerializerProvider, Set, Short, Signed, SimpleModule, Sizeof, Stackalloc, Standards, Static, StaticAssert, StaticCast, StdDeserializer, StdSerializer, Strictfp, String, Struct, Subscript, Super, Switch, Symbol, Synchronized, System, Template, Then, This, ThreadLocal, Throw, Throws, TimeOnly, TimeOnlyConverter, TimeZone, ToJson, TopLevel, ToString, Transient, True, EnumTrue, Try, Type, EnumType, Typealias, Typedef, Typeid, Typename, Typeof, Uint, Ulong, Unchecked, Undefined, Union, UseSerializers, Unowned, Unsafe, Unsigned, Ushort, Using, Utf8JsonReader, Utf8JsonWriter, Uuid, Var, Virtual, Void, Volatile, WcharT, Weak, Where, While, WillSet, With, Xor, XorEq, Yes, Yield, Dummy };
 
     public partial class TopLevel
     {
@@ -576,12 +576,22 @@ namespace QuickType
                     return Enum.Select;
                 case "Self":
                     return Enum.Self;
+                case "Serializable":
+                    return Enum.Serializable;
                 case "self":
                     return Enum.EnumSelf;
                 case "Sendable":
                     return Enum.Sendable;
                 case "serialize":
                     return Enum.Serialize;
+                case "SerialName":
+                    return Enum.SerialName;
+                case "KSerializer":
+                    return Enum.KSerializer;
+                case "PrimitiveKind":
+                    return Enum.PrimitiveKind;
+                case "SerialDescriptor":
+                    return Enum.SerialDescriptor;
                 case "SerializerProvider":
                     return Enum.SerializerProvider;
                 case "set":
@@ -682,6 +692,8 @@ namespace QuickType
                     return Enum.Undefined;
                 case "union":
                     return Enum.Union;
+                case "UseSerializers":
+                    return Enum.UseSerializers;
                 case "unowned":
                     return Enum.Unowned;
                 case "unsafe":
@@ -1507,6 +1519,9 @@ namespace QuickType
                 case Enum.Self:
                     JsonSerializer.Serialize(writer, "Self", options);
                     return;
+                case Enum.Serializable:
+                    JsonSerializer.Serialize(writer, "Serializable", options);
+                    return;
                 case Enum.EnumSelf:
                     JsonSerializer.Serialize(writer, "self", options);
                     return;
@@ -1516,6 +1531,18 @@ namespace QuickType
                 case Enum.Serialize:
                     JsonSerializer.Serialize(writer, "serialize", options);
                     return;
+                case Enum.SerialName:
+                    JsonSerializer.Serialize(writer, "SerialName", options);
+                    return;
+                case Enum.KSerializer:
+                    JsonSerializer.Serialize(writer, "KSerializer", options);
+                    return;
+                case Enum.PrimitiveKind:
+                    JsonSerializer.Serialize(writer, "PrimitiveKind", options);
+                    return;
+                case Enum.SerialDescriptor:
+                    JsonSerializer.Serialize(writer, "SerialDescriptor", options);
+                    return;
                 case Enum.SerializerProvider:
                     JsonSerializer.Serialize(writer, "SerializerProvider", options);
                     return;
@@ -1666,6 +1693,9 @@ namespace QuickType
                 case Enum.Union:
                     JsonSerializer.Serialize(writer, "union", options);
                     return;
+                case Enum.UseSerializers:
+                    JsonSerializer.Serialize(writer, "UseSerializers", options);
+                    return;
                 case Enum.Unowned:
                     JsonSerializer.Serialize(writer, "unowned", options);
                     return;
diff --git a/base/schema-csharp-SystemTextJson/test/inputs/schema/keyword-unions.schema/default/QuickType.cs b/head/schema-csharp-SystemTextJson/test/inputs/schema/keyword-unions.schema/default/QuickType.cs
index 6237f01..ae1c7ce 100644
--- a/base/schema-csharp-SystemTextJson/test/inputs/schema/keyword-unions.schema/default/QuickType.cs
+++ b/head/schema-csharp-SystemTextJson/test/inputs/schema/keyword-unions.schema/default/QuickType.cs
@@ -710,6 +710,10 @@ namespace QuickType
         [JsonPropertyName("JsonTokenType")]
         public UnionJsonTokenType? JsonTokenType { get; set; }
 
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("KSerializer")]
+        public UnionKSerializer? KSerializer { get; set; }
+
         [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
         [JsonPropertyName("lambda")]
         public UnionLambda? Lambda { get; set; }
@@ -926,6 +930,10 @@ namespace QuickType
         [JsonPropertyName("prefix")]
         public UnionPrefix? Prefix { get; set; }
 
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("PrimitiveKind")]
+        public UnionPrimitiveKind? PrimitiveKind { get; set; }
+
         [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
         [JsonPropertyName("print")]
         public UnionPrint? Print { get; set; }
@@ -1062,6 +1070,14 @@ namespace QuickType
         [JsonPropertyName("Sendable")]
         public UnionSendable? Sendable { get; set; }
 
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("SerialDescriptor")]
+        public UnionSerialDescriptor? SerialDescriptor { get; set; }
+
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("Serializable")]
+        public UnionSerializable? Serializable { get; set; }
+
         [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
         [JsonPropertyName("serialize")]
         public UnionSerialize? Serialize { get; set; }
@@ -1070,6 +1086,10 @@ namespace QuickType
         [JsonPropertyName("SerializerProvider")]
         public UnionSerializerProvider? SerializerProvider { get; set; }
 
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("SerialName")]
+        public UnionSerialName? SerialName { get; set; }
+
         [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
         [JsonPropertyName("set")]
         public UnionSet? Set { get; set; }
@@ -1278,6 +1298,10 @@ namespace QuickType
         [JsonPropertyName("unsigned")]
         public UnionUnsigned? Unsigned { get; set; }
 
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("UseSerializers")]
+        public UnionUseSerializers? UseSerializers { get; set; }
+
         [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
         [JsonPropertyName("ushort")]
         public UnionUshort? Ushort { get; set; }
@@ -2015,6 +2039,10 @@ namespace QuickType
     {
     }
 
+    public partial class KSerializer
+    {
+    }
+
     public partial class Lambda
     {
     }
@@ -2223,6 +2251,10 @@ namespace QuickType
     {
     }
 
+    public partial class PrimitiveKind
+    {
+    }
+
     public partial class Print
     {
     }
@@ -2351,6 +2383,18 @@ namespace QuickType
     {
     }
 
+    public partial class SerialDescriptor
+    {
+    }
+
+    public partial class SerialName
+    {
+    }
+
+    public partial class Serializable
+    {
+    }
+
     public partial class SerializeClass
     {
     }
@@ -2607,6 +2651,10 @@ namespace QuickType
     {
     }
 
+    public partial class UseSerializers
+    {
+    }
+
     public partial class Ushort
     {
     }
@@ -4168,6 +4216,15 @@ namespace QuickType
         public static implicit operator UnionJsonWriter(JsonWriterClass JsonWriterClass) => new UnionJsonWriter { JsonWriterClass = JsonWriterClass };
     }
 
+    public partial struct UnionKSerializer
+    {
+        public double? Double;
+        public KSerializer? KSerializer;
+
+        public static implicit operator UnionKSerializer(double Double) => new UnionKSerializer { Double = Double };
+        public static implicit operator UnionKSerializer(KSerializer KSerializer) => new UnionKSerializer { KSerializer = KSerializer };
+    }
+
     public partial struct UnionLambda
     {
         public double? Double;
@@ -4636,6 +4693,15 @@ namespace QuickType
         public static implicit operator UnionPrefix(Prefix Prefix) => new UnionPrefix { Prefix = Prefix };
     }
 
+    public partial struct UnionPrimitiveKind
+    {
+        public double? Double;
+        public PrimitiveKind? PrimitiveKind;
+
+        public static implicit operator UnionPrimitiveKind(double Double) => new UnionPrimitiveKind { Double = Double };
+        public static implicit operator UnionPrimitiveKind(PrimitiveKind PrimitiveKind) => new UnionPrimitiveKind { PrimitiveKind = PrimitiveKind };
+    }
+
     public partial struct UnionPrint
     {
         public double? Double;
@@ -4924,6 +4990,33 @@ namespace QuickType
         public static implicit operator UnionSendable(Sendable Sendable) => new UnionSendable { Sendable = Sendable };
     }
 
+    public partial struct UnionSerialDescriptor
+    {
+        public double? Double;
+        public SerialDescriptor? SerialDescriptor;
+
+        public static implicit operator UnionSerialDescriptor(double Double) => new UnionSerialDescriptor { Double = Double };
+        public static implicit operator UnionSerialDescriptor(SerialDescriptor SerialDescriptor) => new UnionSerialDescriptor { SerialDescriptor = SerialDescriptor };
+    }
+
+    public partial struct UnionSerialName
+    {
+        public double? Double;
+        public SerialName? SerialName;
+
+        public static implicit operator UnionSerialName(double Double) => new UnionSerialName { Double = Double };
+        public static implicit operator UnionSerialName(SerialName SerialName) => new UnionSerialName { SerialName = SerialName };
+    }
+
+    public partial struct UnionSerializable
+    {
+        public double? Double;
+        public Serializable? Serializable;
+
+        public static implicit operator UnionSerializable(double Double) => new UnionSerializable { Double = Double };
+        public static implicit operator UnionSerializable(Serializable Serializable) => new UnionSerializable { Serializable = Serializable };
+    }
+
     public partial struct UnionSerialize
     {
         public double? Double;
@@ -5500,6 +5593,15 @@ namespace QuickType
         public static implicit operator UnionUnsigned(Unsigned Unsigned) => new UnionUnsigned { Unsigned = Unsigned };
     }
 
+    public partial struct UnionUseSerializers
+    {
+        public double? Double;
+        public UseSerializers? UseSerializers;
+
+        public static implicit operator UnionUseSerializers(double Double) => new UnionUseSerializers { Double = Double };
+        public static implicit operator UnionUseSerializers(UseSerializers UseSerializers) => new UnionUseSerializers { UseSerializers = UseSerializers };
+    }
+
     public partial struct UnionUshort
     {
         public double? Double;
@@ -5722,6 +5824,7 @@ namespace QuickType
                 UnionJsonParserConverter.Singleton,
                 UnionJsonReaderConverter.Singleton,
                 UnionJsonTokenTypeConverter.Singleton,
+                UnionKSerializerConverter.Singleton,
                 UnionLocaleConverter.Singleton,
                 UnionMapEntryConverter.Singleton,
                 UnionNoConverter.Singleton,
@@ -5731,11 +5834,15 @@ namespace QuickType
                 UnionNullConverter.Singleton,
                 UnionNoneConverter.Singleton,
                 UnionObjectMapperConverter.Singleton,
+                UnionPrimitiveKindConverter.Singleton,
                 UnionProtocolConverter.Singleton,
                 UnionRegExpConverter.Singleton,
                 UnionSelConverter.Singleton,
                 UnionSelfConverter.Singleton,
                 UnionSendableConverter.Singleton,
+                UnionSerialDescriptorConverter.Singleton,
+                UnionSerialNameConverter.Singleton,
+                UnionSerializableConverter.Singleton,
                 UnionSerializerProviderConverter.Singleton,
                 UnionSimpleModuleConverter.Singleton,
                 UnionStandardsConverter.Singleton,
@@ -5747,6 +5854,7 @@ namespace QuickType
                 UnionTrueConverter.Singleton,
                 UnionTypeConverter.Singleton,
                 UnionUuidConverter.Singleton,
+                UnionUseSerializersConverter.Singleton,
                 UnionUtf8JsonReaderConverter.Singleton,
                 UnionUtf8JsonWriterConverter.Singleton,
                 UnionYesConverter.Singleton,
@@ -7286,6 +7394,42 @@ namespace QuickType
         public static readonly UnionJsonTokenTypeConverter Singleton = new UnionJsonTokenTypeConverter();
     }
 
+    internal class UnionKSerializerConverter : JsonConverter<UnionKSerializer>
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionKSerializer);
+
+        public override UnionKSerializer Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonTokenType.Number:
+                    var doubleValue1 = reader.GetDouble();
+                    return new UnionKSerializer { Double = doubleValue1 };
+                case JsonTokenType.StartObject:
+                    var objectValue = JsonSerializer.Deserialize<KSerializer>(ref reader, options);
+                    return new UnionKSerializer { KSerializer = objectValue };
+            }
+            throw new JsonException("Cannot unmarshal type UnionKSerializer");
+        }
+
+        public override void Write(Utf8JsonWriter writer, UnionKSerializer value, JsonSerializerOptions options)
+        {
+            if (value.Double != null)
+            {
+                JsonSerializer.Serialize(writer, value.Double.Value, options);
+                return;
+            }
+            if (value.KSerializer != null)
+            {
+                JsonSerializer.Serialize(writer, value.KSerializer, options);
+                return;
+            }
+            throw new NotSupportedException("Cannot marshal type UnionKSerializer");
+        }
+
+        public static readonly UnionKSerializerConverter Singleton = new UnionKSerializerConverter();
+    }
+
     internal class UnionLocaleConverter : JsonConverter<UnionLocale>
     {
         public override bool CanConvert(Type t) => t == typeof(UnionLocale);
@@ -7610,6 +7754,42 @@ namespace QuickType
         public static readonly UnionObjectMapperConverter Singleton = new UnionObjectMapperConverter();
     }
 
+    internal class UnionPrimitiveKindConverter : JsonConverter<UnionPrimitiveKind>
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionPrimitiveKind);
+
+        public override UnionPrimitiveKind Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonTokenType.Number:
+                    var doubleValue1 = reader.GetDouble();
+                    return new UnionPrimitiveKind { Double = doubleValue1 };
+                case JsonTokenType.StartObject:
+                    var objectValue = JsonSerializer.Deserialize<PrimitiveKind>(ref reader, options);
+                    return new UnionPrimitiveKind { PrimitiveKind = objectValue };
+            }
+            throw new JsonException("Cannot unmarshal type UnionPrimitiveKind");
+        }
+
+        public override void Write(Utf8JsonWriter writer, UnionPrimitiveKind value, JsonSerializerOptions options)
+        {
+            if (value.Double != null)
+            {
+                JsonSerializer.Serialize(writer, value.Double.Value, options);
+                return;
+            }
+            if (value.PrimitiveKind != null)
+            {
+                JsonSerializer.Serialize(writer, value.PrimitiveKind, options);
+                return;
+            }
+            throw new NotSupportedException("Cannot marshal type UnionPrimitiveKind");
+        }
+
+        public static readonly UnionPrimitiveKindConverter Singleton = new UnionPrimitiveKindConverter();
+    }
+
     internal class UnionProtocolConverter : JsonConverter<UnionProtocol>
     {
         public override bool CanConvert(Type t) => t == typeof(UnionProtocol);
@@ -7790,6 +7970,114 @@ namespace QuickType
         public static readonly UnionSendableConverter Singleton = new UnionSendableConverter();
     }
 
+    internal class UnionSerialDescriptorConverter : JsonConverter<UnionSerialDescriptor>
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionSerialDescriptor);
+
+        public override UnionSerialDescriptor Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonTokenType.Number:
+                    var doubleValue1 = reader.GetDouble();
+                    return new UnionSerialDescriptor { Double = doubleValue1 };
+                case JsonTokenType.StartObject:
+                    var objectValue = JsonSerializer.Deserialize<SerialDescriptor>(ref reader, options);
+                    return new UnionSerialDescriptor { SerialDescriptor = objectValue };
+            }
+            throw new JsonException("Cannot unmarshal type UnionSerialDescriptor");
+        }
+
+        public override void Write(Utf8JsonWriter writer, UnionSerialDescriptor value, JsonSerializerOptions options)
+        {
+            if (value.Double != null)
+            {
+                JsonSerializer.Serialize(writer, value.Double.Value, options);
+                return;
+            }
+            if (value.SerialDescriptor != null)
+            {
+                JsonSerializer.Serialize(writer, value.SerialDescriptor, options);
+                return;
+            }
+            throw new NotSupportedException("Cannot marshal type UnionSerialDescriptor");
+        }
+
+        public static readonly UnionSerialDescriptorConverter Singleton = new UnionSerialDescriptorConverter();
+    }
+
+    internal class UnionSerialNameConverter : JsonConverter<UnionSerialName>
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionSerialName);
+
+        public override UnionSerialName Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonTokenType.Number:
+                    var doubleValue1 = reader.GetDouble();
+                    return new UnionSerialName { Double = doubleValue1 };
+                case JsonTokenType.StartObject:
+                    var objectValue = JsonSerializer.Deserialize<SerialName>(ref reader, options);
+                    return new UnionSerialName { SerialName = objectValue };
+            }
+            throw new JsonException("Cannot unmarshal type UnionSerialName");
+        }
+
+        public override void Write(Utf8JsonWriter writer, UnionSerialName value, JsonSerializerOptions options)
+        {
+            if (value.Double != null)
+            {
+                JsonSerializer.Serialize(writer, value.Double.Value, options);
+                return;
+            }
+            if (value.SerialName != null)
+            {
+                JsonSerializer.Serialize(writer, value.SerialName, options);
+                return;
+            }
+            throw new NotSupportedException("Cannot marshal type UnionSerialName");
+        }
+
+        public static readonly UnionSerialNameConverter Singleton = new UnionSerialNameConverter();
+    }
+
+    internal class UnionSerializableConverter : JsonConverter<UnionSerializable>
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionSerializable);
+
+        public override UnionSerializable Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonTokenType.Number:
+                    var doubleValue1 = reader.GetDouble();
+                    return new UnionSerializable { Double = doubleValue1 };
+                case JsonTokenType.StartObject:
+                    var objectValue = JsonSerializer.Deserialize<Serializable>(ref reader, options);
+                    return new UnionSerializable { Serializable = objectValue };
+            }
+            throw new JsonException("Cannot unmarshal type UnionSerializable");
+        }
+
+        public override void Write(Utf8JsonWriter writer, UnionSerializable value, JsonSerializerOptions options)
+        {
+            if (value.Double != null)
+            {
+                JsonSerializer.Serialize(writer, value.Double.Value, options);
+                return;
+            }
+            if (value.Serializable != null)
+            {
+                JsonSerializer.Serialize(writer, value.Serializable, options);
+                return;
+            }
+            throw new NotSupportedException("Cannot marshal type UnionSerializable");
+        }
+
+        public static readonly UnionSerializableConverter Singleton = new UnionSerializableConverter();
+    }
+
     internal class UnionSerializerProviderConverter : JsonConverter<UnionSerializerProvider>
     {
         public override bool CanConvert(Type t) => t == typeof(UnionSerializerProvider);
@@ -8186,6 +8474,42 @@ namespace QuickType
         public static readonly UnionUuidConverter Singleton = new UnionUuidConverter();
     }
 
+    internal class UnionUseSerializersConverter : JsonConverter<UnionUseSerializers>
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionUseSerializers);
+
+        public override UnionUseSerializers Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonTokenType.Number:
+                    var doubleValue1 = reader.GetDouble();
+                    return new UnionUseSerializers { Double = doubleValue1 };
+                case JsonTokenType.StartObject:
+                    var objectValue = JsonSerializer.Deserialize<UseSerializers>(ref reader, options);
+                    return new UnionUseSerializers { UseSerializers = objectValue };
+            }
+            throw new JsonException("Cannot unmarshal type UnionUseSerializers");
+        }
+
+        public override void Write(Utf8JsonWriter writer, UnionUseSerializers value, JsonSerializerOptions options)
+        {
+            if (value.Double != null)
+            {
+                JsonSerializer.Serialize(writer, value.Double.Value, options);
+                return;
+            }
+            if (value.UseSerializers != null)
+            {
+                JsonSerializer.Serialize(writer, value.UseSerializers, options);
+                return;
+            }
+            throw new NotSupportedException("Cannot marshal type UnionUseSerializers");
+        }
+
+        public static readonly UnionUseSerializersConverter Singleton = new UnionUseSerializersConverter();
+    }
+
     internal class UnionUtf8JsonReaderConverter : JsonConverter<UnionUtf8JsonReader>
     {
         public override bool CanConvert(Type t) => t == typeof(UnionUtf8JsonReader);
diff --git a/base/schema-csharp-records/test/inputs/schema/keyword-enum.schema/default/QuickType.cs b/head/schema-csharp-records/test/inputs/schema/keyword-enum.schema/default/QuickType.cs
index 1ad9413..d04349e 100644
--- a/base/schema-csharp-records/test/inputs/schema/keyword-enum.schema/default/QuickType.cs
+++ b/head/schema-csharp-records/test/inputs/schema/keyword-enum.schema/default/QuickType.cs
@@ -29,7 +29,7 @@ namespace QuickType
         public Enum? Enum { get; set; }
     }
 
-    public enum Enum { Empty, Bool, Complex, Imaginery, Abstract, Alignas, Alignof, And, AndEq, Any, EnumAny, Array, As, Asm, Assert, Associatedtype, Associativity, Async, Atomic, AtomicCancel, AtomicCommit, AtomicNoexcept, Auto, Await, Base, Bitand, Bitor, EnumBool, PurpleBool, Boolean, Break, Bycopy, Byref, Byte, Calendar, Case, Catch, Chan, Char, Char16T, Char32T, Checked, Class, EnumClass, Clone, CoAwait, CoReturn, CoYield, Codable, CodingKey, CodingKeys, Compl, Concept, Console, Const, ConstCast, Constexpr, Constructor, Continue, Convenience, Convert, Converter, CultureInfo, Date, DateParseHandling, DateFormatter, DateOnly, DateOnlyConverter, DateTime, DateTimeStyles, Debugger, Decimal, Declare, Decltype, DecodeString, Decoder, DecodingError, Def, Default, Defer, Deinit, Del, Delegate, Delete, Dict, Dictionary, DidSet, Do, Double, Dynamic, DynamicCast, Elif, Else, EncodeQuickType, Encoder, Enum, EnumValues, Equatable, EqualityContract, Event, Except, Exception, Explicit, Export, Exposing, Extends, Extension, Extern, Fallthrough, False, EnumFalse, Fileprivate, Final, Finally, Fixed, Float, For, Foreach, FormatException, Friend, From, FromJson, Func, Function, Get, Global, Go, Goto, Guard, Hashable, HashCode, Hasher, HasOwnProperty, Id, If, Imp, Implements, Implicit, Import, In, Indirect, Infix, Init, Inline, Inout, Instanceof, Int, Interface, Internal, IsoDateTimeOffsetConverter, Iterable, Is, Jdec, Jenc, Jpipe, Json, JsonConverter, JsonSerializer, JsonToken, JsonWriter, JsonAny, JsonCodingKey, JsonDecoder, JsonEncoder, JsonException, JsonGenerator, JsonNode, JsonNull, JsonParser, JsonReader, JsonTokenType, Lambda, Lazy, Left, Let, List, Locale, Lock, Long, Map, MapEntry, MetadataPropertyHandling, Module, Mutable, Mutating, Namespace, Native, New, Newtonsoft, Nil, No, Noexcept, Nonatomic, None, EnumNone, Nonlocal, Nonmutating, NsObject, NoSuchMethod, Not, NotEq, NsError, NsString, Null, EnumNull, Nullptr, Number, Object, ObjectMapper, Of, Oneway, Open, Operator, Optional, Or, OrEq, Out, Override, Package, Params, Pass, Port, Postfix, Precedence, Prefix, Print, Printf, PrintMembers, Private, Protected, Protocol, EnumProtocol, Public, Quicktype, Raise, Range, Readonly, Ref, RegExp, Register, ReinterpretCast, Repeat, Require, Required, Requires, Restrict, Retain, Rethrows, Return, Right, RuntimeType, S, Sbyte, Sealed, Sel, Select, Self, EnumSelf, Sendable, Serialize, SerializerProvider, Set, Short, Signed, SimpleModule, Sizeof, Stackalloc, Standards, Static, StaticAssert, StaticCast, StdDeserializer, StdSerializer, Strictfp, String, Struct, Subscript, Super, Switch, Symbol, Synchronized, System, Template, Then, This, ThreadLocal, Throw, Throws, TimeOnly, TimeOnlyConverter, TimeZone, ToJson, TopLevel, ToString, Transient, True, EnumTrue, Try, Type, EnumType, Typealias, Typedef, Typeid, Typename, Typeof, Uint, Ulong, Unchecked, Undefined, Union, Unowned, Unsafe, Unsigned, Ushort, Using, Utf8JsonReader, Utf8JsonWriter, Uuid, Var, Virtual, Void, Volatile, WcharT, Weak, Where, While, WillSet, With, Xor, XorEq, Yes, Yield, Dummy };
+    public enum Enum { Empty, Bool, Complex, Imaginery, Abstract, Alignas, Alignof, And, AndEq, Any, EnumAny, Array, As, Asm, Assert, Associatedtype, Associativity, Async, Atomic, AtomicCancel, AtomicCommit, AtomicNoexcept, Auto, Await, Base, Bitand, Bitor, EnumBool, PurpleBool, Boolean, Break, Bycopy, Byref, Byte, Calendar, Case, Catch, Chan, Char, Char16T, Char32T, Checked, Class, EnumClass, Clone, CoAwait, CoReturn, CoYield, Codable, CodingKey, CodingKeys, Compl, Concept, Console, Const, ConstCast, Constexpr, Constructor, Continue, Convenience, Convert, Converter, CultureInfo, Date, DateParseHandling, DateFormatter, DateOnly, DateOnlyConverter, DateTime, DateTimeStyles, Debugger, Decimal, Declare, Decltype, DecodeString, Decoder, DecodingError, Def, Default, Defer, Deinit, Del, Delegate, Delete, Dict, Dictionary, DidSet, Do, Double, Dynamic, DynamicCast, Elif, Else, EncodeQuickType, Encoder, Enum, EnumValues, Equatable, EqualityContract, Event, Except, Exception, Explicit, Export, Exposing, Extends, Extension, Extern, Fallthrough, False, EnumFalse, Fileprivate, Final, Finally, Fixed, Float, For, Foreach, FormatException, Friend, From, FromJson, Func, Function, Get, Global, Go, Goto, Guard, Hashable, HashCode, Hasher, HasOwnProperty, Id, If, Imp, Implements, Implicit, Import, In, Indirect, Infix, Init, Inline, Inout, Instanceof, Int, Interface, Internal, IsoDateTimeOffsetConverter, Iterable, Is, Jdec, Jenc, Jpipe, Json, JsonConverter, JsonSerializer, JsonToken, JsonWriter, JsonAny, JsonCodingKey, JsonDecoder, JsonEncoder, JsonException, JsonGenerator, JsonNode, JsonNull, JsonParser, JsonReader, JsonTokenType, Lambda, Lazy, Left, Let, List, Locale, Lock, Long, Map, MapEntry, MetadataPropertyHandling, Module, Mutable, Mutating, Namespace, Native, New, Newtonsoft, Nil, No, Noexcept, Nonatomic, None, EnumNone, Nonlocal, Nonmutating, NsObject, NoSuchMethod, Not, NotEq, NsError, NsString, Null, EnumNull, Nullptr, Number, Object, ObjectMapper, Of, Oneway, Open, Operator, Optional, Or, OrEq, Out, Override, Package, Params, Pass, Port, Postfix, Precedence, Prefix, Print, Printf, PrintMembers, Private, Protected, Protocol, EnumProtocol, Public, Quicktype, Raise, Range, Readonly, Ref, RegExp, Register, ReinterpretCast, Repeat, Require, Required, Requires, Restrict, Retain, Rethrows, Return, Right, RuntimeType, S, Sbyte, Sealed, Sel, Select, Self, Serializable, EnumSelf, Sendable, Serialize, SerialName, KSerializer, PrimitiveKind, SerialDescriptor, SerializerProvider, Set, Short, Signed, SimpleModule, Sizeof, Stackalloc, Standards, Static, StaticAssert, StaticCast, StdDeserializer, StdSerializer, Strictfp, String, Struct, Subscript, Super, Switch, Symbol, Synchronized, System, Template, Then, This, ThreadLocal, Throw, Throws, TimeOnly, TimeOnlyConverter, TimeZone, ToJson, TopLevel, ToString, Transient, True, EnumTrue, Try, Type, EnumType, Typealias, Typedef, Typeid, Typename, Typeof, Uint, Ulong, Unchecked, Undefined, Union, UseSerializers, Unowned, Unsafe, Unsigned, Ushort, Using, Utf8JsonReader, Utf8JsonWriter, Uuid, Var, Virtual, Void, Volatile, WcharT, Weak, Where, While, WillSet, With, Xor, XorEq, Yes, Yield, Dummy };
 
     public partial record TopLevel
     {
@@ -579,12 +579,22 @@ namespace QuickType
                     return Enum.Select;
                 case "Self":
                     return Enum.Self;
+                case "Serializable":
+                    return Enum.Serializable;
                 case "self":
                     return Enum.EnumSelf;
                 case "Sendable":
                     return Enum.Sendable;
                 case "serialize":
                     return Enum.Serialize;
+                case "SerialName":
+                    return Enum.SerialName;
+                case "KSerializer":
+                    return Enum.KSerializer;
+                case "PrimitiveKind":
+                    return Enum.PrimitiveKind;
+                case "SerialDescriptor":
+                    return Enum.SerialDescriptor;
                 case "SerializerProvider":
                     return Enum.SerializerProvider;
                 case "set":
@@ -685,6 +695,8 @@ namespace QuickType
                     return Enum.Undefined;
                 case "union":
                     return Enum.Union;
+                case "UseSerializers":
+                    return Enum.UseSerializers;
                 case "unowned":
                     return Enum.Unowned;
                 case "unsafe":
@@ -1516,6 +1528,9 @@ namespace QuickType
                 case Enum.Self:
                     serializer.Serialize(writer, "Self");
                     return;
+                case Enum.Serializable:
+                    serializer.Serialize(writer, "Serializable");
+                    return;
                 case Enum.EnumSelf:
                     serializer.Serialize(writer, "self");
                     return;
@@ -1525,6 +1540,18 @@ namespace QuickType
                 case Enum.Serialize:
                     serializer.Serialize(writer, "serialize");
                     return;
+                case Enum.SerialName:
+                    serializer.Serialize(writer, "SerialName");
+                    return;
+                case Enum.KSerializer:
+                    serializer.Serialize(writer, "KSerializer");
+                    return;
+                case Enum.PrimitiveKind:
+                    serializer.Serialize(writer, "PrimitiveKind");
+                    return;
+                case Enum.SerialDescriptor:
+                    serializer.Serialize(writer, "SerialDescriptor");
+                    return;
                 case Enum.SerializerProvider:
                     serializer.Serialize(writer, "SerializerProvider");
                     return;
@@ -1675,6 +1702,9 @@ namespace QuickType
                 case Enum.Union:
                     serializer.Serialize(writer, "union");
                     return;
+                case Enum.UseSerializers:
+                    serializer.Serialize(writer, "UseSerializers");
+                    return;
                 case Enum.Unowned:
                     serializer.Serialize(writer, "unowned");
                     return;
diff --git a/base/schema-csharp-records/test/inputs/schema/keyword-unions.schema/default/QuickType.cs b/head/schema-csharp-records/test/inputs/schema/keyword-unions.schema/default/QuickType.cs
index 698d169..faa8dd9 100644
--- a/base/schema-csharp-records/test/inputs/schema/keyword-unions.schema/default/QuickType.cs
+++ b/head/schema-csharp-records/test/inputs/schema/keyword-unions.schema/default/QuickType.cs
@@ -541,6 +541,9 @@ namespace QuickType
         [JsonProperty("JsonTokenType", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionJsonTokenType? JsonTokenType { get; set; }
 
+        [JsonProperty("KSerializer", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionKSerializer? KSerializer { get; set; }
+
         [JsonProperty("lambda", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionLambda? Lambda { get; set; }
 
@@ -703,6 +706,9 @@ namespace QuickType
         [JsonProperty("prefix", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionPrefix? Prefix { get; set; }
 
+        [JsonProperty("PrimitiveKind", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionPrimitiveKind? PrimitiveKind { get; set; }
+
         [JsonProperty("print", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionPrint? Print { get; set; }
 
@@ -805,12 +811,21 @@ namespace QuickType
         [JsonProperty("Sendable", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionSendable? Sendable { get; set; }
 
+        [JsonProperty("SerialDescriptor", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionSerialDescriptor? SerialDescriptor { get; set; }
+
+        [JsonProperty("Serializable", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionSerializable? Serializable { get; set; }
+
         [JsonProperty("serialize", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionSerialize? Serialize { get; set; }
 
         [JsonProperty("SerializerProvider", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionSerializerProvider? SerializerProvider { get; set; }
 
+        [JsonProperty("SerialName", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionSerialName? SerialName { get; set; }
+
         [JsonProperty("set", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionSet? Set { get; set; }
 
@@ -967,6 +982,9 @@ namespace QuickType
         [JsonProperty("unsigned", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionUnsigned? Unsigned { get; set; }
 
+        [JsonProperty("UseSerializers", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionUseSerializers? UseSerializers { get; set; }
+
         [JsonProperty("ushort", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionUshort? Ushort { get; set; }
 
@@ -1677,6 +1695,10 @@ namespace QuickType
     {
     }
 
+    public partial record KSerializer
+    {
+    }
+
     public partial record Lambda
     {
     }
@@ -1885,6 +1907,10 @@ namespace QuickType
     {
     }
 
+    public partial record PrimitiveKind
+    {
+    }
+
     public partial record Print
     {
     }
@@ -2009,6 +2035,18 @@ namespace QuickType
     {
     }
 
+    public partial record SerialDescriptor
+    {
+    }
+
+    public partial record SerialName
+    {
+    }
+
+    public partial record Serializable
+    {
+    }
+
     public partial record SerializeClass
     {
     }
@@ -2277,6 +2315,10 @@ namespace QuickType
     {
     }
 
+    public partial record UseSerializers
+    {
+    }
+
     public partial record Ushort
     {
     }
@@ -3820,6 +3862,15 @@ namespace QuickType
         public static implicit operator UnionJsonWriter(JsonWriterClass JsonWriterClass) => new UnionJsonWriter { JsonWriterClass = JsonWriterClass };
     }
 
+    public partial struct UnionKSerializer
+    {
+        public double? Double;
+        public KSerializer? KSerializer;
+
+        public static implicit operator UnionKSerializer(double Double) => new UnionKSerializer { Double = Double };
+        public static implicit operator UnionKSerializer(KSerializer KSerializer) => new UnionKSerializer { KSerializer = KSerializer };
+    }
+
     public partial struct UnionLambda
     {
         public double? Double;
@@ -4288,6 +4339,15 @@ namespace QuickType
         public static implicit operator UnionPrefix(Prefix Prefix) => new UnionPrefix { Prefix = Prefix };
     }
 
+    public partial struct UnionPrimitiveKind
+    {
+        public double? Double;
+        public PrimitiveKind? PrimitiveKind;
+
+        public static implicit operator UnionPrimitiveKind(double Double) => new UnionPrimitiveKind { Double = Double };
+        public static implicit operator UnionPrimitiveKind(PrimitiveKind PrimitiveKind) => new UnionPrimitiveKind { PrimitiveKind = PrimitiveKind };
+    }
+
     public partial struct UnionPrint
     {
         public double? Double;
@@ -4567,6 +4627,33 @@ namespace QuickType
         public static implicit operator UnionSendable(Sendable Sendable) => new UnionSendable { Sendable = Sendable };
     }
 
+    public partial struct UnionSerialDescriptor
+    {
+        public double? Double;
+        public SerialDescriptor? SerialDescriptor;
+
+        public static implicit operator UnionSerialDescriptor(double Double) => new UnionSerialDescriptor { Double = Double };
+        public static implicit operator UnionSerialDescriptor(SerialDescriptor SerialDescriptor) => new UnionSerialDescriptor { SerialDescriptor = SerialDescriptor };
+    }
+
+    public partial struct UnionSerialName
+    {
+        public double? Double;
+        public SerialName? SerialName;
+
+        public static implicit operator UnionSerialName(double Double) => new UnionSerialName { Double = Double };
+        public static implicit operator UnionSerialName(SerialName SerialName) => new UnionSerialName { SerialName = SerialName };
+    }
+
+    public partial struct UnionSerializable
+    {
+        public double? Double;
+        public Serializable? Serializable;
+
+        public static implicit operator UnionSerializable(double Double) => new UnionSerializable { Double = Double };
+        public static implicit operator UnionSerializable(Serializable Serializable) => new UnionSerializable { Serializable = Serializable };
+    }
+
     public partial struct UnionSerialize
     {
         public double? Double;
@@ -5170,6 +5257,15 @@ namespace QuickType
         public static implicit operator UnionUnsigned(Unsigned Unsigned) => new UnionUnsigned { Unsigned = Unsigned };
     }
 
+    public partial struct UnionUseSerializers
+    {
+        public double? Double;
+        public UseSerializers? UseSerializers;
+
+        public static implicit operator UnionUseSerializers(double Double) => new UnionUseSerializers { Double = Double };
+        public static implicit operator UnionUseSerializers(UseSerializers UseSerializers) => new UnionUseSerializers { UseSerializers = UseSerializers };
+    }
+
     public partial struct UnionUshort
     {
         public double? Double;
@@ -5394,6 +5490,7 @@ namespace QuickType
                 UnionJsonParserConverter.Singleton,
                 UnionJsonReaderConverter.Singleton,
                 UnionJsonTokenTypeConverter.Singleton,
+                UnionKSerializerConverter.Singleton,
                 UnionLocaleConverter.Singleton,
                 UnionMapEntryConverter.Singleton,
                 UnionNoConverter.Singleton,
@@ -5403,11 +5500,15 @@ namespace QuickType
                 UnionNullConverter.Singleton,
                 UnionNoneConverter.Singleton,
                 UnionObjectMapperConverter.Singleton,
+                UnionPrimitiveKindConverter.Singleton,
                 UnionProtocolConverter.Singleton,
                 UnionRegExpConverter.Singleton,
                 UnionSelConverter.Singleton,
                 UnionSelfConverter.Singleton,
                 UnionSendableConverter.Singleton,
+                UnionSerialDescriptorConverter.Singleton,
+                UnionSerialNameConverter.Singleton,
+                UnionSerializableConverter.Singleton,
                 UnionSerializerProviderConverter.Singleton,
                 UnionSimpleModuleConverter.Singleton,
                 UnionStandardsConverter.Singleton,
@@ -5419,6 +5520,7 @@ namespace QuickType
                 UnionTrueConverter.Singleton,
                 UnionTypeConverter.Singleton,
                 UnionUuidConverter.Singleton,
+                UnionUseSerializersConverter.Singleton,
                 UnionUtf8JsonReaderConverter.Singleton,
                 UnionUtf8JsonWriterConverter.Singleton,
                 UnionYesConverter.Singleton,
@@ -7026,6 +7128,44 @@ namespace QuickType
         public static readonly UnionJsonTokenTypeConverter Singleton = new UnionJsonTokenTypeConverter();
     }
 
+    internal class UnionKSerializerConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionKSerializer) || t == typeof(UnionKSerializer?);
+
+        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonToken.Integer:
+                case JsonToken.Float:
+                    var doubleValue = serializer.Deserialize<double>(reader);
+                    return new UnionKSerializer { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<KSerializer>(reader);
+                    return new UnionKSerializer { KSerializer = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionKSerializer");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionKSerializer)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.KSerializer != null)
+            {
+                serializer.Serialize(writer, value.KSerializer);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionKSerializer");
+        }
+
+        public static readonly UnionKSerializerConverter Singleton = new UnionKSerializerConverter();
+    }
+
     internal class UnionLocaleConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionLocale) || t == typeof(UnionLocale?);
@@ -7368,6 +7508,44 @@ namespace QuickType
         public static readonly UnionObjectMapperConverter Singleton = new UnionObjectMapperConverter();
     }
 
+    internal class UnionPrimitiveKindConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionPrimitiveKind) || t == typeof(UnionPrimitiveKind?);
+
+        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonToken.Integer:
+                case JsonToken.Float:
+                    var doubleValue = serializer.Deserialize<double>(reader);
+                    return new UnionPrimitiveKind { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<PrimitiveKind>(reader);
+                    return new UnionPrimitiveKind { PrimitiveKind = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionPrimitiveKind");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionPrimitiveKind)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.PrimitiveKind != null)
+            {
+                serializer.Serialize(writer, value.PrimitiveKind);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionPrimitiveKind");
+        }
+
+        public static readonly UnionPrimitiveKindConverter Singleton = new UnionPrimitiveKindConverter();
+    }
+
     internal class UnionProtocolConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionProtocol) || t == typeof(UnionProtocol?);
@@ -7558,6 +7736,120 @@ namespace QuickType
         public static readonly UnionSendableConverter Singleton = new UnionSendableConverter();
     }
 
+    internal class UnionSerialDescriptorConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionSerialDescriptor) || t == typeof(UnionSerialDescriptor?);
+
+        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonToken.Integer:
+                case JsonToken.Float:
+                    var doubleValue = serializer.Deserialize<double>(reader);
+                    return new UnionSerialDescriptor { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<SerialDescriptor>(reader);
+                    return new UnionSerialDescriptor { SerialDescriptor = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionSerialDescriptor");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionSerialDescriptor)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.SerialDescriptor != null)
+            {
+                serializer.Serialize(writer, value.SerialDescriptor);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionSerialDescriptor");
+        }
+
+        public static readonly UnionSerialDescriptorConverter Singleton = new UnionSerialDescriptorConverter();
+    }
+
+    internal class UnionSerialNameConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionSerialName) || t == typeof(UnionSerialName?);
+
+        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonToken.Integer:
+                case JsonToken.Float:
+                    var doubleValue = serializer.Deserialize<double>(reader);
+                    return new UnionSerialName { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<SerialName>(reader);
+                    return new UnionSerialName { SerialName = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionSerialName");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionSerialName)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.SerialName != null)
+            {
+                serializer.Serialize(writer, value.SerialName);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionSerialName");
+        }
+
+        public static readonly UnionSerialNameConverter Singleton = new UnionSerialNameConverter();
+    }
+
+    internal class UnionSerializableConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionSerializable) || t == typeof(UnionSerializable?);
+
+        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonToken.Integer:
+                case JsonToken.Float:
+                    var doubleValue = serializer.Deserialize<double>(reader);
+                    return new UnionSerializable { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<Serializable>(reader);
+                    return new UnionSerializable { Serializable = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionSerializable");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionSerializable)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.Serializable != null)
+            {
+                serializer.Serialize(writer, value.Serializable);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionSerializable");
+        }
+
+        public static readonly UnionSerializableConverter Singleton = new UnionSerializableConverter();
+    }
+
     internal class UnionSerializerProviderConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionSerializerProvider) || t == typeof(UnionSerializerProvider?);
@@ -7976,6 +8268,44 @@ namespace QuickType
         public static readonly UnionUuidConverter Singleton = new UnionUuidConverter();
     }
 
+    internal class UnionUseSerializersConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionUseSerializers) || t == typeof(UnionUseSerializers?);
+
+        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonToken.Integer:
+                case JsonToken.Float:
+                    var doubleValue = serializer.Deserialize<double>(reader);
+                    return new UnionUseSerializers { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<UseSerializers>(reader);
+                    return new UnionUseSerializers { UseSerializers = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionUseSerializers");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionUseSerializers)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.UseSerializers != null)
+            {
+                serializer.Serialize(writer, value.UseSerializers);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionUseSerializers");
+        }
+
+        public static readonly UnionUseSerializersConverter Singleton = new UnionUseSerializersConverter();
+    }
+
     internal class UnionUtf8JsonReaderConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionUtf8JsonReader) || t == typeof(UnionUtf8JsonReader?);
diff --git a/base/schema-dart/test/inputs/schema/keyword-enum.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/keyword-enum.schema/default/TopLevel.dart
index 815ea26..7c5b257 100644
--- a/base/schema-dart/test/inputs/schema/keyword-enum.schema/default/TopLevel.dart
+++ b/head/schema-dart/test/inputs/schema/keyword-enum.schema/default/TopLevel.dart
@@ -282,9 +282,14 @@ enum Enum {
     SEL,
     SELECT,
     SELF,
+    SERIALIZABLE,
     ENUM_SELF,
     SENDABLE,
     SERIALIZE,
+    SERIAL_NAME,
+    K_SERIALIZER,
+    PRIMITIVE_KIND,
+    SERIAL_DESCRIPTOR,
     SERIALIZER_PROVIDER,
     SET,
     SHORT,
@@ -335,6 +340,7 @@ enum Enum {
     UNCHECKED,
     UNDEFINED,
     UNION,
+    USE_SERIALIZERS,
     UNOWNED,
     UNSAFE,
     UNSIGNED,
@@ -618,9 +624,14 @@ final enumValues = EnumValues({
     "SEL": Enum.SEL,
     "select": Enum.SELECT,
     "Self": Enum.SELF,
+    "Serializable": Enum.SERIALIZABLE,
     "self": Enum.ENUM_SELF,
     "Sendable": Enum.SENDABLE,
     "serialize": Enum.SERIALIZE,
+    "SerialName": Enum.SERIAL_NAME,
+    "KSerializer": Enum.K_SERIALIZER,
+    "PrimitiveKind": Enum.PRIMITIVE_KIND,
+    "SerialDescriptor": Enum.SERIAL_DESCRIPTOR,
     "SerializerProvider": Enum.SERIALIZER_PROVIDER,
     "set": Enum.SET,
     "short": Enum.SHORT,
@@ -671,6 +682,7 @@ final enumValues = EnumValues({
     "unchecked": Enum.UNCHECKED,
     "undefined": Enum.UNDEFINED,
     "union": Enum.UNION,
+    "UseSerializers": Enum.USE_SERIALIZERS,
     "unowned": Enum.UNOWNED,
     "unsafe": Enum.UNSAFE,
     "unsigned": Enum.UNSIGNED,
diff --git a/base/schema-dart/test/inputs/schema/keyword-unions.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/keyword-unions.schema/default/TopLevel.dart
index 8cc3ef2..a7df2a1 100644
--- a/base/schema-dart/test/inputs/schema/keyword-unions.schema/default/TopLevel.dart
+++ b/head/schema-dart/test/inputs/schema/keyword-unions.schema/default/TopLevel.dart
@@ -181,6 +181,7 @@ class TopLevel {
     final dynamic jsonParser;
     final dynamic jsonReader;
     final dynamic jsonTokenType;
+    final dynamic kSerializer;
     final dynamic lambda;
     final dynamic lazy;
     final dynamic left;
@@ -235,6 +236,7 @@ class TopLevel {
     final dynamic postfix;
     final dynamic precedence;
     final dynamic prefix;
+    final dynamic primitiveKind;
     final dynamic print;
     final dynamic printf;
     final dynamic printMembers;
@@ -269,8 +271,11 @@ class TopLevel {
     final dynamic self;
     final dynamic topLevelSelf;
     final dynamic sendable;
+    final dynamic serialDescriptor;
+    final dynamic serializable;
     final dynamic serialize;
     final dynamic serializerProvider;
+    final dynamic serialName;
     final dynamic topLevelSet;
     final dynamic short;
     final dynamic signed;
@@ -323,6 +328,7 @@ class TopLevel {
     final dynamic unowned;
     final dynamic unsafe;
     final dynamic unsigned;
+    final dynamic useSerializers;
     final dynamic ushort;
     final dynamic using;
     final dynamic utf8JsonReader;
@@ -516,6 +522,7 @@ class TopLevel {
         this.jsonParser,
         this.jsonReader,
         this.jsonTokenType,
+        this.kSerializer,
         this.lambda,
         this.lazy,
         this.left,
@@ -570,6 +577,7 @@ class TopLevel {
         this.postfix,
         this.precedence,
         this.prefix,
+        this.primitiveKind,
         this.print,
         this.printf,
         this.printMembers,
@@ -604,8 +612,11 @@ class TopLevel {
         this.self,
         this.topLevelSelf,
         this.sendable,
+        this.serialDescriptor,
+        this.serializable,
         this.serialize,
         this.serializerProvider,
+        this.serialName,
         this.topLevelSet,
         this.short,
         this.signed,
@@ -658,6 +669,7 @@ class TopLevel {
         this.unowned,
         this.unsafe,
         this.unsigned,
+        this.useSerializers,
         this.ushort,
         this.using,
         this.utf8JsonReader,
@@ -852,6 +864,7 @@ class TopLevel {
         jsonParser: json["JsonParser"],
         jsonReader: json["JsonReader"],
         jsonTokenType: json["JsonTokenType"],
+        kSerializer: json["KSerializer"],
         lambda: json["lambda"],
         lazy: json["lazy"],
         left: json["left"],
@@ -906,6 +919,7 @@ class TopLevel {
         postfix: json["postfix"],
         precedence: json["precedence"],
         prefix: json["prefix"],
+        primitiveKind: json["PrimitiveKind"],
         print: json["print"],
         printf: json["printf"],
         printMembers: json["printMembers"],
@@ -940,8 +954,11 @@ class TopLevel {
         self: json["Self"],
         topLevelSelf: json["self"],
         sendable: json["Sendable"],
+        serialDescriptor: json["SerialDescriptor"],
+        serializable: json["Serializable"],
         serialize: json["serialize"],
         serializerProvider: json["SerializerProvider"],
+        serialName: json["SerialName"],
         topLevelSet: json["set"],
         short: json["short"],
         signed: json["signed"],
@@ -994,6 +1011,7 @@ class TopLevel {
         unowned: json["unowned"],
         unsafe: json["unsafe"],
         unsigned: json["unsigned"],
+        useSerializers: json["UseSerializers"],
         ushort: json["ushort"],
         using: json["using"],
         utf8JsonReader: json["Utf8JsonReader"],
@@ -1188,6 +1206,7 @@ class TopLevel {
         "JsonParser": jsonParser,
         "JsonReader": jsonReader,
         "JsonTokenType": jsonTokenType,
+        "KSerializer": kSerializer,
         "lambda": lambda,
         "lazy": lazy,
         "left": left,
@@ -1242,6 +1261,7 @@ class TopLevel {
         "postfix": postfix,
         "precedence": precedence,
         "prefix": prefix,
+        "PrimitiveKind": primitiveKind,
         "print": print,
         "printf": printf,
         "printMembers": printMembers,
@@ -1276,8 +1296,11 @@ class TopLevel {
         "Self": self,
         "self": topLevelSelf,
         "Sendable": sendable,
+        "SerialDescriptor": serialDescriptor,
+        "Serializable": serializable,
         "serialize": serialize,
         "SerializerProvider": serializerProvider,
+        "SerialName": serialName,
         "set": topLevelSet,
         "short": short,
         "signed": signed,
@@ -1330,6 +1353,7 @@ class TopLevel {
         "unowned": unowned,
         "unsafe": unsafe,
         "unsigned": unsigned,
+        "UseSerializers": useSerializers,
         "ushort": ushort,
         "using": using,
         "Utf8JsonReader": utf8JsonReader,
@@ -2682,6 +2706,16 @@ class JsonWriter {
     };
 }
 
+class KSerializer {
+    KSerializer();
+
+    factory KSerializer.fromJson(Map<String, dynamic> json) => KSerializer(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
 class Lambda {
     Lambda();
 
@@ -3162,6 +3196,16 @@ class Prefix {
     };
 }
 
+class PrimitiveKind {
+    PrimitiveKind();
+
+    factory PrimitiveKind.fromJson(Map<String, dynamic> json) => PrimitiveKind(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
 class Print {
     Print();
 
@@ -3512,6 +3556,36 @@ class Sendable {
     };
 }
 
+class SerialDescriptor {
+    SerialDescriptor();
+
+    factory SerialDescriptor.fromJson(Map<String, dynamic> json) => SerialDescriptor(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
+class SerialName {
+    SerialName();
+
+    factory SerialName.fromJson(Map<String, dynamic> json) => SerialName(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
+class Serializable {
+    Serializable();
+
+    factory Serializable.fromJson(Map<String, dynamic> json) => Serializable(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
 class Serialize {
     Serialize();
 
@@ -4532,6 +4606,16 @@ class Unsigned {
     };
 }
 
+class UseSerializers {
+    UseSerializers();
+
+    factory UseSerializers.fromJson(Map<String, dynamic> json) => UseSerializers(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
 class Ushort {
     Ushort();
 
diff --git a/base/schema-elixir/test/inputs/schema/keyword-enum.schema/default/QuickType.ex b/head/schema-elixir/test/inputs/schema/keyword-enum.schema/default/QuickType.ex
index 3d01b71..7f24fec 100644
--- a/base/schema-elixir/test/inputs/schema/keyword-enum.schema/default/QuickType.ex
+++ b/head/schema-elixir/test/inputs/schema/keyword-enum.schema/default/QuickType.ex
@@ -264,9 +264,14 @@ defmodule EnumEnum do
     :SEL,
     :select,
     :Self,
+    :Serializable,
     :self,
     :Sendable,
     :serialize,
+    :SerialName,
+    :KSerializer,
+    :PrimitiveKind,
+    :SerialDescriptor,
     :SerializerProvider,
     :set,
     :short,
@@ -317,6 +322,7 @@ defmodule EnumEnum do
     :unchecked,
     :undefined,
     :union,
+    :UseSerializers,
     :unowned,
     :unsafe,
     :unsigned,
diff --git a/base/schema-elixir/test/inputs/schema/keyword-unions.schema/default/QuickType.ex b/head/schema-elixir/test/inputs/schema/keyword-unions.schema/default/QuickType.ex
index 0436d71..6d803b9 100644
--- a/base/schema-elixir/test/inputs/schema/keyword-unions.schema/default/QuickType.ex
+++ b/head/schema-elixir/test/inputs/schema/keyword-unions.schema/default/QuickType.ex
@@ -4645,6 +4645,35 @@ defmodule JSONWriter do
   end
 end
 
+defmodule KSerializer do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %KSerializer{
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(_struct) do
+    %{
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
 defmodule Lambda do
   defstruct []
 
@@ -6066,6 +6095,35 @@ defmodule Prefix do
   end
 end
 
+defmodule PrimitiveKind do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %PrimitiveKind{
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(_struct) do
+    %{
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
 defmodule Print do
   defstruct []
 
@@ -6994,6 +7052,93 @@ defmodule Sendable do
   end
 end
 
+defmodule SerialDescriptor do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %SerialDescriptor{
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(_struct) do
+    %{
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule SerialName do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %SerialName{
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(_struct) do
+    %{
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule Serializable do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %Serializable{
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(_struct) do
+    %{
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
 defmodule Serialize do
   defstruct []
 
@@ -9082,6 +9227,35 @@ defmodule Unsigned do
   end
 end
 
+defmodule UseSerializers do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %UseSerializers{
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(_struct) do
+    %{
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
 defmodule Ushort do
   defstruct []
 
@@ -9634,7 +9808,7 @@ defmodule Yield do
 end
 
 defmodule TopLevel do
-  defstruct [:empty, :top_level_bool, :complex, :imaginery, :abstract, :alignas, :alignof, :top_level_and, :and_eq, :top_level_any, :any, :array, :as, :asm, :assert, :associatedtype, :associativity, :async, :atomic, :atomic_cancel, :atomic_commit, :atomic_noexcept, :auto, :await, :base, :bitand, :bitor, :bool, :bool_1, :boolean, :break, :bycopy, :byref, :byte, :calendar, :case, :top_level_catch, :chan, :char, :char16_t, :char32_t, :checked, :top_level_class, :class, :clone, :co_await, :co_return, :co_yield, :codable, :coding_key, :coding_keys, :compl, :concept, :console, :const, :const_cast, :constexpr, :constructor, :continue, :convenience, :convert, :converter, :culture_info, :date, :date_parse_handling, :date_formatter, :date_only, :date_only_converter, :date_time, :date_time_styles, :debugger, :decimal, :declare, :decltype, :decode_string, :decoder, :decoding_error, :top_level_def, :default, :defer, :deinit, :del, :delegate, :delete, :dict, :dictionary, :did_set, :top_level_do, :double, :dummy, :dynamic, :dynamic_cast, :elif, :top_level_else, :encode_quick_type, :encoder, :enum, :enum_values, :equality_contract, :equatable, :event, :except, :exception, :explicit, :export, :exposing, :extends, :extension, :extern, :fallthrough, :false_1, :top_level_false, :fileprivate, :final, :finally, :fixed, :float, :for, :foreach, :format_exception, :friend, :from, :from_json, :func, :function, :get, :global, :go, :goto, :guard, :hashable, :hash_code, :hasher, :has_own_property, :id, :if, :imp, :implements, :implicit, :top_level_import, :top_level_in, :indirect, :infix, :init, :inline, :inout, :instanceof, :int, :interface, :internal, :is, :iso_date_time_offset_converter, :iterable, :jdec, :jenc, :jpipe, :json, :json_converter, :json_serializer, :json_token, :json_writer, :json_any, :json_coding_key, :json_decoder, :json_encoder, :json_exception, :json_generator, :json_node, :json_null, :json_parser, :json_reader, :json_token_type, :lambda, :lazy, :left, :let, :list, :locale, :lock, :long, :map, :map_entry, :metadata_property_handling, :module, :mutable, :mutating, :namespace, :native, :new, :newtonsoft, :top_level_nil, :no, :noexcept, :nonatomic, :top_level_none, :none, :nonlocal, :nonmutating, :no_such_method, :top_level_not, :not_eq, :ns_error, :ns_object, :ns_string, :null, :top_level_null, :nullptr, :number, :object, :object_mapper, :of, :oneway, :open, :operator, :optional, :top_level_or, :or_eq, :out, :override, :package, :params, :pass, :port, :postfix, :precedence, :prefix, :print, :printf, :print_members, :private, :protected, :protocol, :top_level_protocol, :public, :quicktype, :raise, :range, :readonly, :ref, :reg_exp, :register, :reinterpret_cast, :repeat, :require, :required, :requires, :restrict, :retain, :rethrows, :return, :right, :runtime_type, :s, :sbyte, :sealed, :sel, :select, :self, :top_level_self, :sendable, :serialize, :serializer_provider, :set, :short, :signed, :simple_module, :sizeof, :stackalloc, :standards, :static, :static_assert, :static_cast, :std_deserializer, :std_serializer, :strictfp, :string, :struct, :subscript, :super, :switch, :symbol, :synchronized, :system, :template, :then, :this, :thread_local, :throw, :throws, :time_only, :time_only_converter, :time_zone, :to_json, :top_level, :to_string, :transient, :top_level_true, :true_1, :try, :type, :top_level_type, :typealias, :typedef, :typeid, :typename, :typeof, :uint, :ulong, :unchecked, :undefined, :union, :unowned, :unsafe, :unsigned, :ushort, :using, :utf8_json_reader, :utf8_json_writer, :uuid, :var, :virtual, :void, :volatile, :wchar_t, :weak, :where, :while, :will_set, :with, :xor, :xor_eq, :yes, :yield]
+  defstruct [:empty, :top_level_bool, :complex, :imaginery, :abstract, :alignas, :alignof, :top_level_and, :and_eq, :top_level_any, :any, :array, :as, :asm, :assert, :associatedtype, :associativity, :async, :atomic, :atomic_cancel, :atomic_commit, :atomic_noexcept, :auto, :await, :base, :bitand, :bitor, :bool, :bool_1, :boolean, :break, :bycopy, :byref, :byte, :calendar, :case, :top_level_catch, :chan, :char, :char16_t, :char32_t, :checked, :top_level_class, :class, :clone, :co_await, :co_return, :co_yield, :codable, :coding_key, :coding_keys, :compl, :concept, :console, :const, :const_cast, :constexpr, :constructor, :continue, :convenience, :convert, :converter, :culture_info, :date, :date_parse_handling, :date_formatter, :date_only, :date_only_converter, :date_time, :date_time_styles, :debugger, :decimal, :declare, :decltype, :decode_string, :decoder, :decoding_error, :top_level_def, :default, :defer, :deinit, :del, :delegate, :delete, :dict, :dictionary, :did_set, :top_level_do, :double, :dummy, :dynamic, :dynamic_cast, :elif, :top_level_else, :encode_quick_type, :encoder, :enum, :enum_values, :equality_contract, :equatable, :event, :except, :exception, :explicit, :export, :exposing, :extends, :extension, :extern, :fallthrough, :false_1, :top_level_false, :fileprivate, :final, :finally, :fixed, :float, :for, :foreach, :format_exception, :friend, :from, :from_json, :func, :function, :get, :global, :go, :goto, :guard, :hashable, :hash_code, :hasher, :has_own_property, :id, :if, :imp, :implements, :implicit, :top_level_import, :top_level_in, :indirect, :infix, :init, :inline, :inout, :instanceof, :int, :interface, :internal, :is, :iso_date_time_offset_converter, :iterable, :jdec, :jenc, :jpipe, :json, :json_converter, :json_serializer, :json_token, :json_writer, :json_any, :json_coding_key, :json_decoder, :json_encoder, :json_exception, :json_generator, :json_node, :json_null, :json_parser, :json_reader, :json_token_type, :k_serializer, :lambda, :lazy, :left, :let, :list, :locale, :lock, :long, :map, :map_entry, :metadata_property_handling, :module, :mutable, :mutating, :namespace, :native, :new, :newtonsoft, :top_level_nil, :no, :noexcept, :nonatomic, :top_level_none, :none, :nonlocal, :nonmutating, :no_such_method, :top_level_not, :not_eq, :ns_error, :ns_object, :ns_string, :null, :top_level_null, :nullptr, :number, :object, :object_mapper, :of, :oneway, :open, :operator, :optional, :top_level_or, :or_eq, :out, :override, :package, :params, :pass, :port, :postfix, :precedence, :prefix, :primitive_kind, :print, :printf, :print_members, :private, :protected, :protocol, :top_level_protocol, :public, :quicktype, :raise, :range, :readonly, :ref, :reg_exp, :register, :reinterpret_cast, :repeat, :require, :required, :requires, :restrict, :retain, :rethrows, :return, :right, :runtime_type, :s, :sbyte, :sealed, :sel, :select, :self, :top_level_self, :sendable, :serial_descriptor, :serializable, :serialize, :serializer_provider, :serial_name, :set, :short, :signed, :simple_module, :sizeof, :stackalloc, :standards, :static, :static_assert, :static_cast, :std_deserializer, :std_serializer, :strictfp, :string, :struct, :subscript, :super, :switch, :symbol, :synchronized, :system, :template, :then, :this, :thread_local, :throw, :throws, :time_only, :time_only_converter, :time_zone, :to_json, :top_level, :to_string, :transient, :top_level_true, :true_1, :try, :type, :top_level_type, :typealias, :typedef, :typeid, :typename, :typeof, :uint, :ulong, :unchecked, :undefined, :union, :unowned, :unsafe, :unsigned, :use_serializers, :ushort, :using, :utf8_json_reader, :utf8_json_writer, :uuid, :var, :virtual, :void, :volatile, :wchar_t, :weak, :where, :while, :will_set, :with, :xor, :xor_eq, :yes, :yield]
 
   @type t :: %__MODULE__{
           empty: Empty.t() | float() | nil,
@@ -9809,6 +9983,7 @@ defmodule TopLevel do
           json_parser: JSONParser.t() | float() | nil,
           json_reader: JSONReader.t() | float() | nil,
           json_token_type: JSONTokenType.t() | float() | nil,
+          k_serializer: KSerializer.t() | float() | nil,
           lambda: Lambda.t() | float() | nil,
           lazy: Lazy.t() | float() | nil,
           left: Left.t() | float() | nil,
@@ -9863,6 +10038,7 @@ defmodule TopLevel do
           postfix: Postfix.t() | float() | nil,
           precedence: Precedence.t() | float() | nil,
           prefix: Prefix.t() | float() | nil,
+          primitive_kind: PrimitiveKind.t() | float() | nil,
           print: Print.t() | float() | nil,
           printf: Printf.t() | float() | nil,
           print_members: PrintMembers.t() | float() | nil,
@@ -9897,8 +10073,11 @@ defmodule TopLevel do
           self: Self.t() | float() | nil,
           top_level_self: SelfClass.t() | float() | nil,
           sendable: Sendable.t() | float() | nil,
+          serial_descriptor: SerialDescriptor.t() | float() | nil,
+          serializable: Serializable.t() | float() | nil,
           serialize: Serialize.t() | float() | nil,
           serializer_provider: SerializerProvider.t() | float() | nil,
+          serial_name: SerialName.t() | float() | nil,
           set: SetClass.t() | float() | nil,
           short: Short.t() | float() | nil,
           signed: Signed.t() | float() | nil,
@@ -9951,6 +10130,7 @@ defmodule TopLevel do
           unowned: Unowned.t() | float() | nil,
           unsafe: Unsafe.t() | float() | nil,
           unsigned: Unsigned.t() | float() | nil,
+          use_serializers: UseSerializers.t() | float() | nil,
           ushort: Ushort.t() | float() | nil,
           using: Using.t() | float() | nil,
           utf8_json_reader: Utf8JSONReader.t() | float() | nil,
@@ -12032,6 +12212,18 @@ defmodule TopLevel do
   def encode_json_token_type(value) when is_nil(value), do: value
   def encode_json_token_type(_), do: {:error, "Unexpected type when encoding TopLevel.json_token_type"}
 
+  def decode_k_serializer(%{} = value), do: KSerializer.from_map(value)
+  def decode_k_serializer(value) when is_float(value), do: value
+  def decode_k_serializer(value) when is_integer(value), do: value
+  def decode_k_serializer(value) when is_nil(value), do: value
+  def decode_k_serializer(_), do: {:error, "Unexpected type when decoding TopLevel.k_serializer"}
+
+  def encode_k_serializer(%KSerializer{} = value), do: KSerializer.to_map(value)
+  def encode_k_serializer(value) when is_float(value), do: value
+  def encode_k_serializer(value) when is_integer(value), do: value
+  def encode_k_serializer(value) when is_nil(value), do: value
+  def encode_k_serializer(_), do: {:error, "Unexpected type when encoding TopLevel.k_serializer"}
+
   def decode_lambda(%{} = value), do: Lambda.from_map(value)
   def decode_lambda(value) when is_float(value), do: value
   def decode_lambda(value) when is_integer(value), do: value
@@ -12680,6 +12872,18 @@ defmodule TopLevel do
   def encode_prefix(value) when is_nil(value), do: value
   def encode_prefix(_), do: {:error, "Unexpected type when encoding TopLevel.prefix"}
 
+  def decode_primitive_kind(%{} = value), do: PrimitiveKind.from_map(value)
+  def decode_primitive_kind(value) when is_float(value), do: value
+  def decode_primitive_kind(value) when is_integer(value), do: value
+  def decode_primitive_kind(value) when is_nil(value), do: value
+  def decode_primitive_kind(_), do: {:error, "Unexpected type when decoding TopLevel.primitive_kind"}
+
+  def encode_primitive_kind(%PrimitiveKind{} = value), do: PrimitiveKind.to_map(value)
+  def encode_primitive_kind(value) when is_float(value), do: value
+  def encode_primitive_kind(value) when is_integer(value), do: value
+  def encode_primitive_kind(value) when is_nil(value), do: value
+  def encode_primitive_kind(_), do: {:error, "Unexpected type when encoding TopLevel.primitive_kind"}
+
   def decode_print(%{} = value), do: Print.from_map(value)
   def decode_print(value) when is_float(value), do: value
   def decode_print(value) when is_integer(value), do: value
@@ -13088,6 +13292,30 @@ defmodule TopLevel do
   def encode_sendable(value) when is_nil(value), do: value
   def encode_sendable(_), do: {:error, "Unexpected type when encoding TopLevel.sendable"}
 
+  def decode_serial_descriptor(%{} = value), do: SerialDescriptor.from_map(value)
+  def decode_serial_descriptor(value) when is_float(value), do: value
+  def decode_serial_descriptor(value) when is_integer(value), do: value
+  def decode_serial_descriptor(value) when is_nil(value), do: value
+  def decode_serial_descriptor(_), do: {:error, "Unexpected type when decoding TopLevel.serial_descriptor"}
+
+  def encode_serial_descriptor(%SerialDescriptor{} = value), do: SerialDescriptor.to_map(value)
+  def encode_serial_descriptor(value) when is_float(value), do: value
+  def encode_serial_descriptor(value) when is_integer(value), do: value
+  def encode_serial_descriptor(value) when is_nil(value), do: value
+  def encode_serial_descriptor(_), do: {:error, "Unexpected type when encoding TopLevel.serial_descriptor"}
+
+  def decode_serializable(%{} = value), do: Serializable.from_map(value)
+  def decode_serializable(value) when is_float(value), do: value
+  def decode_serializable(value) when is_integer(value), do: value
+  def decode_serializable(value) when is_nil(value), do: value
+  def decode_serializable(_), do: {:error, "Unexpected type when decoding TopLevel.serializable"}
+
+  def encode_serializable(%Serializable{} = value), do: Serializable.to_map(value)
+  def encode_serializable(value) when is_float(value), do: value
+  def encode_serializable(value) when is_integer(value), do: value
+  def encode_serializable(value) when is_nil(value), do: value
+  def encode_serializable(_), do: {:error, "Unexpected type when encoding TopLevel.serializable"}
+
   def decode_serialize(%{} = value), do: Serialize.from_map(value)
   def decode_serialize(value) when is_float(value), do: value
   def decode_serialize(value) when is_integer(value), do: value
@@ -13112,6 +13340,18 @@ defmodule TopLevel do
   def encode_serializer_provider(value) when is_nil(value), do: value
   def encode_serializer_provider(_), do: {:error, "Unexpected type when encoding TopLevel.serializer_provider"}
 
+  def decode_serial_name(%{} = value), do: SerialName.from_map(value)
+  def decode_serial_name(value) when is_float(value), do: value
+  def decode_serial_name(value) when is_integer(value), do: value
+  def decode_serial_name(value) when is_nil(value), do: value
+  def decode_serial_name(_), do: {:error, "Unexpected type when decoding TopLevel.serial_name"}
+
+  def encode_serial_name(%SerialName{} = value), do: SerialName.to_map(value)
+  def encode_serial_name(value) when is_float(value), do: value
+  def encode_serial_name(value) when is_integer(value), do: value
+  def encode_serial_name(value) when is_nil(value), do: value
+  def encode_serial_name(_), do: {:error, "Unexpected type when encoding TopLevel.serial_name"}
+
   def decode_set(%{} = value), do: SetClass.from_map(value)
   def decode_set(value) when is_float(value), do: value
   def decode_set(value) when is_integer(value), do: value
@@ -13736,6 +13976,18 @@ defmodule TopLevel do
   def encode_unsigned(value) when is_nil(value), do: value
   def encode_unsigned(_), do: {:error, "Unexpected type when encoding TopLevel.unsigned"}
 
+  def decode_use_serializers(%{} = value), do: UseSerializers.from_map(value)
+  def decode_use_serializers(value) when is_float(value), do: value
+  def decode_use_serializers(value) when is_integer(value), do: value
+  def decode_use_serializers(value) when is_nil(value), do: value
+  def decode_use_serializers(_), do: {:error, "Unexpected type when decoding TopLevel.use_serializers"}
+
+  def encode_use_serializers(%UseSerializers{} = value), do: UseSerializers.to_map(value)
+  def encode_use_serializers(value) when is_float(value), do: value
+  def encode_use_serializers(value) when is_integer(value), do: value
+  def encode_use_serializers(value) when is_nil(value), do: value
+  def encode_use_serializers(_), do: {:error, "Unexpected type when encoding TopLevel.use_serializers"}
+
   def decode_ushort(%{} = value), do: Ushort.from_map(value)
   def decode_ushort(value) when is_float(value), do: value
   def decode_ushort(value) when is_integer(value), do: value
@@ -14138,6 +14390,7 @@ defmodule TopLevel do
       json_parser: decode_json_parser(m["JsonParser"]),
       json_reader: decode_json_reader(m["JsonReader"]),
       json_token_type: decode_json_token_type(m["JsonTokenType"]),
+      k_serializer: decode_k_serializer(m["KSerializer"]),
       lambda: decode_lambda(m["lambda"]),
       lazy: decode_lazy(m["lazy"]),
       left: decode_left(m["left"]),
@@ -14192,6 +14445,7 @@ defmodule TopLevel do
       postfix: decode_postfix(m["postfix"]),
       precedence: decode_precedence(m["precedence"]),
       prefix: decode_prefix(m["prefix"]),
+      primitive_kind: decode_primitive_kind(m["PrimitiveKind"]),
       print: decode_print(m["print"]),
       printf: decode_printf(m["printf"]),
       print_members: decode_print_members(m["printMembers"]),
@@ -14226,8 +14480,11 @@ defmodule TopLevel do
       self: decode_self(m["Self"]),
       top_level_self: decode_top_level_self(m["self"]),
       sendable: decode_sendable(m["Sendable"]),
+      serial_descriptor: decode_serial_descriptor(m["SerialDescriptor"]),
+      serializable: decode_serializable(m["Serializable"]),
       serialize: decode_serialize(m["serialize"]),
       serializer_provider: decode_serializer_provider(m["SerializerProvider"]),
+      serial_name: decode_serial_name(m["SerialName"]),
       set: decode_set(m["set"]),
       short: decode_short(m["short"]),
       signed: decode_signed(m["signed"]),
@@ -14280,6 +14537,7 @@ defmodule TopLevel do
       unowned: decode_unowned(m["unowned"]),
       unsafe: decode_unsafe(m["unsafe"]),
       unsigned: decode_unsigned(m["unsigned"]),
+      use_serializers: decode_use_serializers(m["UseSerializers"]),
       ushort: decode_ushort(m["ushort"]),
       using: decode_using(m["using"]),
       utf8_json_reader: decode_utf8_json_reader(m["Utf8JsonReader"]),
@@ -14482,6 +14740,7 @@ defmodule TopLevel do
       "JsonParser" => encode_json_parser(struct.json_parser),
       "JsonReader" => encode_json_reader(struct.json_reader),
       "JsonTokenType" => encode_json_token_type(struct.json_token_type),
+      "KSerializer" => encode_k_serializer(struct.k_serializer),
       "lambda" => encode_lambda(struct.lambda),
       "lazy" => encode_lazy(struct.lazy),
       "left" => encode_left(struct.left),
@@ -14536,6 +14795,7 @@ defmodule TopLevel do
       "postfix" => encode_postfix(struct.postfix),
       "precedence" => encode_precedence(struct.precedence),
       "prefix" => encode_prefix(struct.prefix),
+      "PrimitiveKind" => encode_primitive_kind(struct.primitive_kind),
       "print" => encode_print(struct.print),
       "printf" => encode_printf(struct.printf),
       "printMembers" => encode_print_members(struct.print_members),
@@ -14570,8 +14830,11 @@ defmodule TopLevel do
       "Self" => encode_self(struct.self),
       "self" => encode_top_level_self(struct.top_level_self),
       "Sendable" => encode_sendable(struct.sendable),
+      "SerialDescriptor" => encode_serial_descriptor(struct.serial_descriptor),
+      "Serializable" => encode_serializable(struct.serializable),
       "serialize" => encode_serialize(struct.serialize),
       "SerializerProvider" => encode_serializer_provider(struct.serializer_provider),
+      "SerialName" => encode_serial_name(struct.serial_name),
       "set" => encode_set(struct.set),
       "short" => encode_short(struct.short),
       "signed" => encode_signed(struct.signed),
@@ -14624,6 +14887,7 @@ defmodule TopLevel do
       "unowned" => encode_unowned(struct.unowned),
       "unsafe" => encode_unsafe(struct.unsafe),
       "unsigned" => encode_unsigned(struct.unsigned),
+      "UseSerializers" => encode_use_serializers(struct.use_serializers),
       "ushort" => encode_ushort(struct.ushort),
       "using" => encode_using(struct.using),
       "Utf8JsonReader" => encode_utf8_json_reader(struct.utf8_json_reader),
diff --git a/base/schema-elm/test/inputs/schema/keyword-enum.schema/default/QuickType.elm b/head/schema-elm/test/inputs/schema/keyword-enum.schema/default/QuickType.elm
index e722a9d..40c72a7 100644
--- a/base/schema-elm/test/inputs/schema/keyword-enum.schema/default/QuickType.elm
+++ b/head/schema-elm/test/inputs/schema/keyword-enum.schema/default/QuickType.elm
@@ -285,9 +285,14 @@ type EnumEnum
     | Sel
     | Select
     | Self
+    | Serializable
     | EnumSelf
     | Sendable
     | Serialize
+    | SerialName
+    | KSerializer
+    | PrimitiveKind
+    | SerialDescriptor
     | SerializerProvider
     | Set
     | Short
@@ -338,6 +343,7 @@ type EnumEnum
     | Unchecked
     | Undefined
     | Union
+    | UseSerializers
     | Unowned
     | Unsafe
     | Unsigned
@@ -646,9 +652,14 @@ enumEnum =
                 "SEL" -> Jdec.succeed Sel
                 "select" -> Jdec.succeed Select
                 "Self" -> Jdec.succeed Self
+                "Serializable" -> Jdec.succeed Serializable
                 "self" -> Jdec.succeed EnumSelf
                 "Sendable" -> Jdec.succeed Sendable
                 "serialize" -> Jdec.succeed Serialize
+                "SerialName" -> Jdec.succeed SerialName
+                "KSerializer" -> Jdec.succeed KSerializer
+                "PrimitiveKind" -> Jdec.succeed PrimitiveKind
+                "SerialDescriptor" -> Jdec.succeed SerialDescriptor
                 "SerializerProvider" -> Jdec.succeed SerializerProvider
                 "set" -> Jdec.succeed Set
                 "short" -> Jdec.succeed Short
@@ -699,6 +710,7 @@ enumEnum =
                 "unchecked" -> Jdec.succeed Unchecked
                 "undefined" -> Jdec.succeed Undefined
                 "union" -> Jdec.succeed Union
+                "UseSerializers" -> Jdec.succeed UseSerializers
                 "unowned" -> Jdec.succeed Unowned
                 "unsafe" -> Jdec.succeed Unsafe
                 "unsigned" -> Jdec.succeed Unsigned
@@ -984,9 +996,14 @@ encodeEnumEnum x = case x of
     Sel -> Jenc.string "SEL"
     Select -> Jenc.string "select"
     Self -> Jenc.string "Self"
+    Serializable -> Jenc.string "Serializable"
     EnumSelf -> Jenc.string "self"
     Sendable -> Jenc.string "Sendable"
     Serialize -> Jenc.string "serialize"
+    SerialName -> Jenc.string "SerialName"
+    KSerializer -> Jenc.string "KSerializer"
+    PrimitiveKind -> Jenc.string "PrimitiveKind"
+    SerialDescriptor -> Jenc.string "SerialDescriptor"
     SerializerProvider -> Jenc.string "SerializerProvider"
     Set -> Jenc.string "set"
     Short -> Jenc.string "short"
@@ -1037,6 +1054,7 @@ encodeEnumEnum x = case x of
     Unchecked -> Jenc.string "unchecked"
     Undefined -> Jenc.string "undefined"
     Union -> Jenc.string "union"
+    UseSerializers -> Jenc.string "UseSerializers"
     Unowned -> Jenc.string "unowned"
     Unsafe -> Jenc.string "unsafe"
     Unsigned -> Jenc.string "unsigned"
diff --git a/base/schema-elm/test/inputs/schema/keyword-unions.schema/default/QuickType.elm b/head/schema-elm/test/inputs/schema/keyword-unions.schema/default/QuickType.elm
index 13aefcb..1421eff 100644
--- a/base/schema-elm/test/inputs/schema/keyword-unions.schema/default/QuickType.elm
+++ b/head/schema-elm/test/inputs/schema/keyword-unions.schema/default/QuickType.elm
@@ -169,6 +169,7 @@ module QuickType exposing
     , JSONToken
     , JSONTokenType
     , JSONWriter
+    , KSerializer
     , Lambda
     , Lazy
     , Left
@@ -217,6 +218,7 @@ module QuickType exposing
     , Postfix
     , Precedence
     , Prefix
+    , PrimitiveKind
     , Print
     , PrintMembers
     , Printf
@@ -280,6 +282,9 @@ module QuickType exposing
     , Select
     , Self
     , Sendable
+    , SerialDescriptor
+    , SerialName
+    , Serializable
     , Serialize
     , SerializerProvider
     , Set
@@ -329,6 +334,7 @@ module QuickType exposing
     , Unowned
     , Unsafe
     , Unsigned
+    , UseSerializers
     , Ushort
     , Using
     , Utf8JSONReader
@@ -501,6 +507,7 @@ module QuickType exposing
     , UnionJSONToken(..)
     , UnionJSONTokenType(..)
     , UnionJSONWriter(..)
+    , UnionKSerializer(..)
     , UnionLambda(..)
     , UnionLazy(..)
     , UnionLeft(..)
@@ -549,6 +556,7 @@ module QuickType exposing
     , UnionPostfix(..)
     , UnionPrecedence(..)
     , UnionPrefix(..)
+    , UnionPrimitiveKind(..)
     , UnionPrint(..)
     , UnionPrintMembers(..)
     , UnionPrintf(..)
@@ -612,6 +620,9 @@ module QuickType exposing
     , UnionSelect(..)
     , UnionSelf(..)
     , UnionSendable(..)
+    , UnionSerialDescriptor(..)
+    , UnionSerialName(..)
+    , UnionSerializable(..)
     , UnionSerialize(..)
     , UnionSerializerProvider(..)
     , UnionSet(..)
@@ -661,6 +672,7 @@ module QuickType exposing
     , UnionUnowned(..)
     , UnionUnsafe(..)
     , UnionUnsigned(..)
+    , UnionUseSerializers(..)
     , UnionUshort(..)
     , UnionUsing(..)
     , UnionUtf8JSONReader(..)
@@ -859,6 +871,7 @@ type alias QuickType =
     , jsonParser : Maybe UnionJSONParser
     , jsonReader : Maybe UnionJSONReader
     , jsonTokenType : Maybe UnionJSONTokenType
+    , kSerializer : Maybe UnionKSerializer
     , lambda : Maybe UnionLambda
     , lazy : Maybe UnionLazy
     , left : Maybe UnionLeft
@@ -913,6 +926,7 @@ type alias QuickType =
     , postfix : Maybe UnionPostfix
     , precedence : Maybe UnionPrecedence
     , prefix : Maybe UnionPrefix
+    , primitiveKind : Maybe UnionPrimitiveKind
     , print : Maybe UnionPrint
     , printf : Maybe UnionPrintf
     , printMembers : Maybe UnionPrintMembers
@@ -947,8 +961,11 @@ type alias QuickType =
     , self : Maybe UnionSelf
     , quickTypeSelf : Maybe UnionSelfUnion
     , sendable : Maybe UnionSendable
+    , serialDescriptor : Maybe UnionSerialDescriptor
+    , serializable : Maybe UnionSerializable
     , serialize : Maybe UnionSerialize
     , serializerProvider : Maybe UnionSerializerProvider
+    , serialName : Maybe UnionSerialName
     , set : Maybe UnionSet
     , short : Maybe UnionShort
     , signed : Maybe UnionSigned
@@ -1001,6 +1018,7 @@ type alias QuickType =
     , unowned : Maybe UnionUnowned
     , unsafe : Maybe UnionUnsafe
     , unsigned : Maybe UnionUnsigned
+    , useSerializers : Maybe UnionUseSerializers
     , ushort : Maybe UnionUshort
     , using : Maybe UnionUsing
     , utf8JSONReader : Maybe UnionUtf8JSONReader
@@ -2254,6 +2272,14 @@ type alias JSONWriter =
     {
     }
 
+type UnionKSerializer
+    = DoubleInUnionKSerializer Float
+    | KSerializerInUnionKSerializer KSerializer
+
+type alias KSerializer =
+    {
+    }
+
 type UnionLambda
     = DoubleInUnionLambda Float
     | LambdaInUnionLambda Lambda
@@ -2638,6 +2664,14 @@ type alias Prefix =
     {
     }
 
+type UnionPrimitiveKind
+    = DoubleInUnionPrimitiveKind Float
+    | PrimitiveKindInUnionPrimitiveKind PrimitiveKind
+
+type alias PrimitiveKind =
+    {
+    }
+
 type UnionPrint
     = DoubleInUnionPrint Float
     | PrintInUnionPrint Print
@@ -3142,6 +3176,30 @@ type alias Sendable =
     {
     }
 
+type UnionSerialDescriptor
+    = DoubleInUnionSerialDescriptor Float
+    | SerialDescriptorInUnionSerialDescriptor SerialDescriptor
+
+type alias SerialDescriptor =
+    {
+    }
+
+type UnionSerialName
+    = DoubleInUnionSerialName Float
+    | SerialNameInUnionSerialName SerialName
+
+type alias SerialName =
+    {
+    }
+
+type UnionSerializable
+    = DoubleInUnionSerializable Float
+    | SerializableInUnionSerializable Serializable
+
+type alias Serializable =
+    {
+    }
+
 type UnionSerialize
     = DoubleInUnionSerialize Float
     | SerializeInUnionSerialize Serialize
@@ -3534,6 +3592,14 @@ type alias Unsigned =
     {
     }
 
+type UnionUseSerializers
+    = DoubleInUnionUseSerializers Float
+    | UseSerializersInUnionUseSerializers UseSerializers
+
+type alias UseSerializers =
+    {
+    }
+
 type UnionUshort
     = DoubleInUnionUshort Float
     | UshortInUnionUshort Ushort
@@ -3864,6 +3930,7 @@ quickType =
         |> Jpipe.custom (optionalField "JsonParser" (Jdec.map Just unionJSONParser) Nothing)
         |> Jpipe.custom (optionalField "JsonReader" (Jdec.map Just unionJSONReader) Nothing)
         |> Jpipe.custom (optionalField "JsonTokenType" (Jdec.map Just unionJSONTokenType) Nothing)
+        |> Jpipe.custom (optionalField "KSerializer" (Jdec.map Just unionKSerializer) Nothing)
         |> Jpipe.custom (optionalField "lambda" (Jdec.map Just unionLambda) Nothing)
         |> Jpipe.custom (optionalField "lazy" (Jdec.map Just unionLazy) Nothing)
         |> Jpipe.custom (optionalField "left" (Jdec.map Just unionLeft) Nothing)
@@ -3918,6 +3985,7 @@ quickType =
         |> Jpipe.custom (optionalField "postfix" (Jdec.map Just unionPostfix) Nothing)
         |> Jpipe.custom (optionalField "precedence" (Jdec.map Just unionPrecedence) Nothing)
         |> Jpipe.custom (optionalField "prefix" (Jdec.map Just unionPrefix) Nothing)
+        |> Jpipe.custom (optionalField "PrimitiveKind" (Jdec.map Just unionPrimitiveKind) Nothing)
         |> Jpipe.custom (optionalField "print" (Jdec.map Just unionPrint) Nothing)
         |> Jpipe.custom (optionalField "printf" (Jdec.map Just unionPrintf) Nothing)
         |> Jpipe.custom (optionalField "printMembers" (Jdec.map Just unionPrintMembers) Nothing)
@@ -3952,8 +4020,11 @@ quickType =
         |> Jpipe.custom (optionalField "Self" (Jdec.map Just unionSelf) Nothing)
         |> Jpipe.custom (optionalField "self" (Jdec.map Just unionSelfUnion) Nothing)
         |> Jpipe.custom (optionalField "Sendable" (Jdec.map Just unionSendable) Nothing)
+        |> Jpipe.custom (optionalField "SerialDescriptor" (Jdec.map Just unionSerialDescriptor) Nothing)
+        |> Jpipe.custom (optionalField "Serializable" (Jdec.map Just unionSerializable) Nothing)
         |> Jpipe.custom (optionalField "serialize" (Jdec.map Just unionSerialize) Nothing)
         |> Jpipe.custom (optionalField "SerializerProvider" (Jdec.map Just unionSerializerProvider) Nothing)
+        |> Jpipe.custom (optionalField "SerialName" (Jdec.map Just unionSerialName) Nothing)
         |> Jpipe.custom (optionalField "set" (Jdec.map Just unionSet) Nothing)
         |> Jpipe.custom (optionalField "short" (Jdec.map Just unionShort) Nothing)
         |> Jpipe.custom (optionalField "signed" (Jdec.map Just unionSigned) Nothing)
@@ -4006,6 +4077,7 @@ quickType =
         |> Jpipe.custom (optionalField "unowned" (Jdec.map Just unionUnowned) Nothing)
         |> Jpipe.custom (optionalField "unsafe" (Jdec.map Just unionUnsafe) Nothing)
         |> Jpipe.custom (optionalField "unsigned" (Jdec.map Just unionUnsigned) Nothing)
+        |> Jpipe.custom (optionalField "UseSerializers" (Jdec.map Just unionUseSerializers) Nothing)
         |> Jpipe.custom (optionalField "ushort" (Jdec.map Just unionUshort) Nothing)
         |> Jpipe.custom (optionalField "using" (Jdec.map Just unionUsing) Nothing)
         |> Jpipe.custom (optionalField "Utf8JsonReader" (Jdec.map Just unionUtf8JSONReader) Nothing)
@@ -4201,6 +4273,7 @@ encodeQuickType x =
         , ("JsonParser", makeNullableEncoder encodeUnionJSONParser x.jsonParser)
         , ("JsonReader", makeNullableEncoder encodeUnionJSONReader x.jsonReader)
         , ("JsonTokenType", makeNullableEncoder encodeUnionJSONTokenType x.jsonTokenType)
+        , ("KSerializer", makeNullableEncoder encodeUnionKSerializer x.kSerializer)
         , ("lambda", makeNullableEncoder encodeUnionLambda x.lambda)
         , ("lazy", makeNullableEncoder encodeUnionLazy x.lazy)
         , ("left", makeNullableEncoder encodeUnionLeft x.left)
@@ -4255,6 +4328,7 @@ encodeQuickType x =
         , ("postfix", makeNullableEncoder encodeUnionPostfix x.postfix)
         , ("precedence", makeNullableEncoder encodeUnionPrecedence x.precedence)
         , ("prefix", makeNullableEncoder encodeUnionPrefix x.prefix)
+        , ("PrimitiveKind", makeNullableEncoder encodeUnionPrimitiveKind x.primitiveKind)
         , ("print", makeNullableEncoder encodeUnionPrint x.print)
         , ("printf", makeNullableEncoder encodeUnionPrintf x.printf)
         , ("printMembers", makeNullableEncoder encodeUnionPrintMembers x.printMembers)
@@ -4289,8 +4363,11 @@ encodeQuickType x =
         , ("Self", makeNullableEncoder encodeUnionSelf x.self)
         , ("self", makeNullableEncoder encodeUnionSelfUnion x.quickTypeSelf)
         , ("Sendable", makeNullableEncoder encodeUnionSendable x.sendable)
+        , ("SerialDescriptor", makeNullableEncoder encodeUnionSerialDescriptor x.serialDescriptor)
+        , ("Serializable", makeNullableEncoder encodeUnionSerializable x.serializable)
         , ("serialize", makeNullableEncoder encodeUnionSerialize x.serialize)
         , ("SerializerProvider", makeNullableEncoder encodeUnionSerializerProvider x.serializerProvider)
+        , ("SerialName", makeNullableEncoder encodeUnionSerialName x.serialName)
         , ("set", makeNullableEncoder encodeUnionSet x.set)
         , ("short", makeNullableEncoder encodeUnionShort x.short)
         , ("signed", makeNullableEncoder encodeUnionSigned x.signed)
@@ -4343,6 +4420,7 @@ encodeQuickType x =
         , ("unowned", makeNullableEncoder encodeUnionUnowned x.unowned)
         , ("unsafe", makeNullableEncoder encodeUnionUnsafe x.unsafe)
         , ("unsigned", makeNullableEncoder encodeUnionUnsigned x.unsigned)
+        , ("UseSerializers", makeNullableEncoder encodeUnionUseSerializers x.useSerializers)
         , ("ushort", makeNullableEncoder encodeUnionUshort x.ushort)
         , ("using", makeNullableEncoder encodeUnionUsing x.using)
         , ("Utf8JsonReader", makeNullableEncoder encodeUnionUtf8JSONReader x.utf8JSONReader)
@@ -7752,6 +7830,28 @@ encodeJSONWriter x =
         [
         ]
 
+unionKSerializer : Jdec.Decoder UnionKSerializer
+unionKSerializer =
+    Jdec.oneOf
+        [ Jdec.map DoubleInUnionKSerializer Jdec.float
+        , Jdec.map KSerializerInUnionKSerializer kSerializer
+        ]
+
+encodeUnionKSerializer : UnionKSerializer -> Jenc.Value
+encodeUnionKSerializer x = case x of
+    DoubleInUnionKSerializer y -> Jenc.float y
+    KSerializerInUnionKSerializer y -> encodeKSerializer y
+
+kSerializer : Jdec.Decoder KSerializer
+kSerializer =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> KSerializer)
+
+encodeKSerializer : KSerializer -> Jenc.Value
+encodeKSerializer x =
+    Jenc.object
+        [
+        ]
+
 unionLambda : Jdec.Decoder UnionLambda
 unionLambda =
     Jdec.oneOf
@@ -8808,6 +8908,28 @@ encodePrefix x =
         [
         ]
 
+unionPrimitiveKind : Jdec.Decoder UnionPrimitiveKind
+unionPrimitiveKind =
+    Jdec.oneOf
+        [ Jdec.map DoubleInUnionPrimitiveKind Jdec.float
+        , Jdec.map PrimitiveKindInUnionPrimitiveKind primitiveKind
+        ]
+
+encodeUnionPrimitiveKind : UnionPrimitiveKind -> Jenc.Value
+encodeUnionPrimitiveKind x = case x of
+    DoubleInUnionPrimitiveKind y -> Jenc.float y
+    PrimitiveKindInUnionPrimitiveKind y -> encodePrimitiveKind y
+
+primitiveKind : Jdec.Decoder PrimitiveKind
+primitiveKind =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> PrimitiveKind)
+
+encodePrimitiveKind : PrimitiveKind -> Jenc.Value
+encodePrimitiveKind x =
+    Jenc.object
+        [
+        ]
+
 unionPrint : Jdec.Decoder UnionPrint
 unionPrint =
     Jdec.oneOf
@@ -10194,6 +10316,72 @@ encodeSendable x =
         [
         ]
 
+unionSerialDescriptor : Jdec.Decoder UnionSerialDescriptor
+unionSerialDescriptor =
+    Jdec.oneOf
+        [ Jdec.map DoubleInUnionSerialDescriptor Jdec.float
+        , Jdec.map SerialDescriptorInUnionSerialDescriptor serialDescriptor
+        ]
+
+encodeUnionSerialDescriptor : UnionSerialDescriptor -> Jenc.Value
+encodeUnionSerialDescriptor x = case x of
+    DoubleInUnionSerialDescriptor y -> Jenc.float y
+    SerialDescriptorInUnionSerialDescriptor y -> encodeSerialDescriptor y
+
+serialDescriptor : Jdec.Decoder SerialDescriptor
+serialDescriptor =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> SerialDescriptor)
+
+encodeSerialDescriptor : SerialDescriptor -> Jenc.Value
+encodeSerialDescriptor x =
+    Jenc.object
+        [
+        ]
+
+unionSerialName : Jdec.Decoder UnionSerialName
+unionSerialName =
+    Jdec.oneOf
+        [ Jdec.map DoubleInUnionSerialName Jdec.float
+        , Jdec.map SerialNameInUnionSerialName serialName
+        ]
+
+encodeUnionSerialName : UnionSerialName -> Jenc.Value
+encodeUnionSerialName x = case x of
+    DoubleInUnionSerialName y -> Jenc.float y
+    SerialNameInUnionSerialName y -> encodeSerialName y
+
+serialName : Jdec.Decoder SerialName
+serialName =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> SerialName)
+
+encodeSerialName : SerialName -> Jenc.Value
+encodeSerialName x =
+    Jenc.object
+        [
+        ]
+
+unionSerializable : Jdec.Decoder UnionSerializable
+unionSerializable =
+    Jdec.oneOf
+        [ Jdec.map DoubleInUnionSerializable Jdec.float
+        , Jdec.map SerializableInUnionSerializable serializable
+        ]
+
+encodeUnionSerializable : UnionSerializable -> Jenc.Value
+encodeUnionSerializable x = case x of
+    DoubleInUnionSerializable y -> Jenc.float y
+    SerializableInUnionSerializable y -> encodeSerializable y
+
+serializable : Jdec.Decoder Serializable
+serializable =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> Serializable)
+
+encodeSerializable : Serializable -> Jenc.Value
+encodeSerializable x =
+    Jenc.object
+        [
+        ]
+
 unionSerialize : Jdec.Decoder UnionSerialize
 unionSerialize =
     Jdec.oneOf
@@ -11272,6 +11460,28 @@ encodeUnsigned x =
         [
         ]
 
+unionUseSerializers : Jdec.Decoder UnionUseSerializers
+unionUseSerializers =
+    Jdec.oneOf
+        [ Jdec.map DoubleInUnionUseSerializers Jdec.float
+        , Jdec.map UseSerializersInUnionUseSerializers useSerializers
+        ]
+
+encodeUnionUseSerializers : UnionUseSerializers -> Jenc.Value
+encodeUnionUseSerializers x = case x of
+    DoubleInUnionUseSerializers y -> Jenc.float y
+    UseSerializersInUnionUseSerializers y -> encodeUseSerializers y
+
+useSerializers : Jdec.Decoder UseSerializers
+useSerializers =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> UseSerializers)
+
+encodeUseSerializers : UseSerializers -> Jenc.Value
+encodeUseSerializers x =
+    Jenc.object
+        [
+        ]
+
 unionUshort : Jdec.Decoder UnionUshort
 unionUshort =
     Jdec.oneOf
diff --git a/base/schema-flow/test/inputs/schema/keyword-enum.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/keyword-enum.schema/default/TopLevel.js
index bbfdfd0..055ed86 100644
--- a/base/schema-flow/test/inputs/schema/keyword-enum.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/keyword-enum.schema/default/TopLevel.js
@@ -272,9 +272,14 @@ export type Enum =
     | "SEL"
     | "select"
     | "Self"
+    | "Serializable"
     | "self"
     | "Sendable"
     | "serialize"
+    | "SerialName"
+    | "KSerializer"
+    | "PrimitiveKind"
+    | "SerialDescriptor"
     | "SerializerProvider"
     | "set"
     | "short"
@@ -325,6 +330,7 @@ export type Enum =
     | "unchecked"
     | "undefined"
     | "union"
+    | "UseSerializers"
     | "unowned"
     | "unsafe"
     | "unsigned"
@@ -795,9 +801,14 @@ const typeMap: any = {
         "SEL",
         "select",
         "Self",
+        "Serializable",
         "self",
         "Sendable",
         "serialize",
+        "SerialName",
+        "KSerializer",
+        "PrimitiveKind",
+        "SerialDescriptor",
         "SerializerProvider",
         "set",
         "short",
@@ -848,6 +859,7 @@ const typeMap: any = {
         "unchecked",
         "undefined",
         "union",
+        "UseSerializers",
         "unowned",
         "unsafe",
         "unsigned",
diff --git a/base/schema-flow/test/inputs/schema/keyword-unions.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/keyword-unions.schema/default/TopLevel.js
index 0ba6f6c..c364e96 100644
--- a/base/schema-flow/test/inputs/schema/keyword-unions.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/keyword-unions.schema/default/TopLevel.js
@@ -182,6 +182,7 @@ export type TopLevel = {
     JsonParser?:                 UnionJSONParser;
     JsonReader?:                 UnionJSONReader;
     JsonTokenType?:              UnionJSONTokenType;
+    KSerializer?:                UnionKSerializer;
     lambda?:                     UnionLambda;
     lazy?:                       UnionLazy;
     left?:                       UnionLeft;
@@ -236,6 +237,7 @@ export type TopLevel = {
     postfix?:                    UnionPostfix;
     precedence?:                 UnionPrecedence;
     prefix?:                     UnionPrefix;
+    PrimitiveKind?:              UnionPrimitiveKind;
     print?:                      UnionPrint;
     printf?:                     UnionPrintf;
     printMembers?:               UnionPrintMembers;
@@ -270,8 +272,11 @@ export type TopLevel = {
     Self?:                       UnionSelf;
     self?:                       UnionSelfUnion;
     Sendable?:                   UnionSendable;
+    SerialDescriptor?:           UnionSerialDescriptor;
+    Serializable?:               UnionSerializable;
     serialize?:                  UnionSerialize;
     SerializerProvider?:         UnionSerializerProvider;
+    SerialName?:                 UnionSerialName;
     set?:                        UnionSet;
     short?:                      UnionShort;
     signed?:                     UnionSigned;
@@ -324,6 +329,7 @@ export type TopLevel = {
     unowned?:                    UnionUnowned;
     unsafe?:                     UnionUnsafe;
     unsigned?:                   UnionUnsigned;
+    UseSerializers?:             UnionUseSerializers;
     ushort?:                     UnionUshort;
     using?:                      UnionUsing;
     Utf8JsonReader?:             UnionUtf8JSONReader;
@@ -521,6 +527,11 @@ export type UnionJSONTokenType = JSONTokenType | number;
 export type JSONTokenType = {
 };
 
+export type UnionKSerializer = KSerializer | number;
+
+export type KSerializer = {
+};
+
 export type UnionLocale = Locale | number;
 
 export type Locale = {
@@ -566,6 +577,11 @@ export type UnionObjectMapper = ObjectMapper | number;
 export type ObjectMapper = {
 };
 
+export type UnionPrimitiveKind = PrimitiveKind | number;
+
+export type PrimitiveKind = {
+};
+
 export type UnionProtocol = Protocol | number;
 
 export type Protocol = {
@@ -591,6 +607,21 @@ export type UnionSendable = Sendable | number;
 export type Sendable = {
 };
 
+export type UnionSerialDescriptor = SerialDescriptor | number;
+
+export type SerialDescriptor = {
+};
+
+export type UnionSerialName = SerialName | number;
+
+export type SerialName = {
+};
+
+export type UnionSerializable = Serializable | number;
+
+export type Serializable = {
+};
+
 export type UnionSerializerProvider = SerializerProvider | number;
 
 export type SerializerProvider = {
@@ -646,6 +677,11 @@ export type UnionUUID = UUID | number;
 export type UUID = {
 };
 
+export type UnionUseSerializers = UseSerializers | number;
+
+export type UseSerializers = {
+};
+
 export type UnionUtf8JSONReader = Utf8JSONReader | number;
 
 export type Utf8JSONReader = {
@@ -2364,6 +2400,7 @@ const typeMap: any = {
         { json: "JsonParser", js: "JsonParser", typ: u(undefined, u(r("JSONParser"), 3.14)) },
         { json: "JsonReader", js: "JsonReader", typ: u(undefined, u(r("JSONReader"), 3.14)) },
         { json: "JsonTokenType", js: "JsonTokenType", typ: u(undefined, u(r("JSONTokenType"), 3.14)) },
+        { json: "KSerializer", js: "KSerializer", typ: u(undefined, u(r("KSerializer"), 3.14)) },
         { json: "lambda", js: "lambda", typ: u(undefined, u(r("Lambda"), 3.14)) },
         { json: "lazy", js: "lazy", typ: u(undefined, u(r("Lazy"), 3.14)) },
         { json: "left", js: "left", typ: u(undefined, u(r("Left"), 3.14)) },
@@ -2418,6 +2455,7 @@ const typeMap: any = {
         { json: "postfix", js: "postfix", typ: u(undefined, u(r("Postfix"), 3.14)) },
         { json: "precedence", js: "precedence", typ: u(undefined, u(r("Precedence"), 3.14)) },
         { json: "prefix", js: "prefix", typ: u(undefined, u(r("Prefix"), 3.14)) },
+        { json: "PrimitiveKind", js: "PrimitiveKind", typ: u(undefined, u(r("PrimitiveKind"), 3.14)) },
         { json: "print", js: "print", typ: u(undefined, u(r("Print"), 3.14)) },
         { json: "printf", js: "printf", typ: u(undefined, u(r("Printf"), 3.14)) },
         { json: "printMembers", js: "printMembers", typ: u(undefined, u(r("PrintMembers"), 3.14)) },
@@ -2452,8 +2490,11 @@ const typeMap: any = {
         { json: "Self", js: "Self", typ: u(undefined, u(r("Self"), 3.14)) },
         { json: "self", js: "self", typ: u(undefined, u(r("SelfClass"), 3.14)) },
         { json: "Sendable", js: "Sendable", typ: u(undefined, u(r("Sendable"), 3.14)) },
+        { json: "SerialDescriptor", js: "SerialDescriptor", typ: u(undefined, u(r("SerialDescriptor"), 3.14)) },
+        { json: "Serializable", js: "Serializable", typ: u(undefined, u(r("Serializable"), 3.14)) },
         { json: "serialize", js: "serialize", typ: u(undefined, u(r("Serialize"), 3.14)) },
         { json: "SerializerProvider", js: "SerializerProvider", typ: u(undefined, u(r("SerializerProvider"), 3.14)) },
+        { json: "SerialName", js: "SerialName", typ: u(undefined, u(r("SerialName"), 3.14)) },
         { json: "set", js: "set", typ: u(undefined, u(r("Set"), 3.14)) },
         { json: "short", js: "short", typ: u(undefined, u(r("Short"), 3.14)) },
         { json: "signed", js: "signed", typ: u(undefined, u(r("Signed"), 3.14)) },
@@ -2506,6 +2547,7 @@ const typeMap: any = {
         { json: "unowned", js: "unowned", typ: u(undefined, u(r("Unowned"), 3.14)) },
         { json: "unsafe", js: "unsafe", typ: u(undefined, u(r("Unsafe"), 3.14)) },
         { json: "unsigned", js: "unsigned", typ: u(undefined, u(r("Unsigned"), 3.14)) },
+        { json: "UseSerializers", js: "UseSerializers", typ: u(undefined, u(r("UseSerializers"), 3.14)) },
         { json: "ushort", js: "ushort", typ: u(undefined, u(r("Ushort"), 3.14)) },
         { json: "using", js: "using", typ: u(undefined, u(r("Using"), 3.14)) },
         { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: u(undefined, u(r("Utf8JSONReader"), 3.14)) },
@@ -2596,6 +2638,8 @@ const typeMap: any = {
     ], false),
     "JSONTokenType": o([
     ], false),
+    "KSerializer": o([
+    ], false),
     "Locale": o([
     ], false),
     "MapEntry": o([
@@ -2614,6 +2658,8 @@ const typeMap: any = {
     ], false),
     "ObjectMapper": o([
     ], false),
+    "PrimitiveKind": o([
+    ], false),
     "Protocol": o([
     ], false),
     "RegExpClass": o([
@@ -2624,6 +2670,12 @@ const typeMap: any = {
     ], false),
     "Sendable": o([
     ], false),
+    "SerialDescriptor": o([
+    ], false),
+    "SerialName": o([
+    ], false),
+    "Serializable": o([
+    ], false),
     "SerializerProvider": o([
     ], false),
     "SimpleModule": o([
@@ -2646,6 +2698,8 @@ const typeMap: any = {
     ], false),
     "UUID": o([
     ], false),
+    "UseSerializers": o([
+    ], false),
     "Utf8JSONReader": o([
     ], false),
     "Utf8JSONWriter": o([
diff --git a/base/schema-golang/test/inputs/schema/keyword-enum.schema/default/quicktype.go b/head/schema-golang/test/inputs/schema/keyword-enum.schema/default/quicktype.go
index df9e5bc..9b48eb2 100644
--- a/base/schema-golang/test/inputs/schema/keyword-enum.schema/default/quicktype.go
+++ b/head/schema-golang/test/inputs/schema/keyword-enum.schema/default/quicktype.go
@@ -282,9 +282,14 @@ const (
 	Sel                        EnumEnum = "SEL"
 	Select                     EnumEnum = "select"
 	Self                       EnumEnum = "Self"
+	Serializable               EnumEnum = "Serializable"
 	EnumSelf                   EnumEnum = "self"
 	Sendable                   EnumEnum = "Sendable"
 	Serialize                  EnumEnum = "serialize"
+	SerialName                 EnumEnum = "SerialName"
+	KSerializer                EnumEnum = "KSerializer"
+	PrimitiveKind              EnumEnum = "PrimitiveKind"
+	SerialDescriptor           EnumEnum = "SerialDescriptor"
 	SerializerProvider         EnumEnum = "SerializerProvider"
 	Set                        EnumEnum = "set"
 	Short                      EnumEnum = "short"
@@ -335,6 +340,7 @@ const (
 	Unchecked                  EnumEnum = "unchecked"
 	Undefined                  EnumEnum = "undefined"
 	Union                      EnumEnum = "union"
+	UseSerializers             EnumEnum = "UseSerializers"
 	Unowned                    EnumEnum = "unowned"
 	Unsafe                     EnumEnum = "unsafe"
 	Unsigned                   EnumEnum = "unsigned"
@@ -367,7 +373,7 @@ func (x *EnumEnum) UnmarshalJSON(data []byte) error {
 	var value string
 	if err := json.Unmarshal(data, &value); err != nil { return err }
 	switch EnumEnum(value) {
-	case Empty, Bool, Complex, Imaginery, Abstract, Alignas, Alignof, And, AndEq, Any, EnumAny, Array, As, ASM, Assert, Associatedtype, Associativity, Async, Atomic, AtomicCancel, AtomicCommit, AtomicNoexcept, Auto, Await, Base, Bitand, Bitor, EnumBOOL, EnumBool, Boolean, Break, Bycopy, Byref, Byte, Calendar, Case, Catch, Chan, Char, Char16T, Char32T, Checked, Class, EnumClass, Clone, CoAwait, CoReturn, CoYield, Codable, CodingKey, CodingKeys, Compl, Concept, Console, Const, ConstCast, Constexpr, Constructor, Continue, Convenience, Convert, Converter, CultureInfo, Date, DateParseHandling, DateFormatter, DateOnly, DateOnlyConverter, DateTime, DateTimeStyles, Debugger, Decimal, Declare, Decltype, DecodeString, Decoder, DecodingError, Def, Default, Defer, Deinit, Del, Delegate, Delete, Dict, Dictionary, DidSet, Do, Double, Dynamic, DynamicCast, Elif, Else, EncodeQuickType, Encoder, Enum, EnumValues, Equatable, EqualityContract, Event, Except, Exception, Explicit, Export, Exposing, Extends, Extension, Extern, Fallthrough, False, EnumFalse, Fileprivate, Final, Finally, Fixed, Float, For, Foreach, FormatException, Friend, From, FromJSON, Func, Function, Get, Global, Go, Goto, Guard, Hashable, HashCode, Hasher, HasOwnProperty, ID, If, Imp, Implements, Implicit, Import, In, Indirect, Infix, Init, Inline, Inout, Instanceof, Int, Interface, Internal, ISODateTimeOffsetConverter, Iterable, Is, Jdec, Jenc, Jpipe, JSON, JSONConverter, JSONSerializer, JSONToken, JSONWriter, JSONAny, JSONCodingKey, JSONDecoder, JSONEncoder, JSONException, JSONGenerator, JSONNode, JSONNull, JSONParser, JSONReader, JSONTokenType, Lambda, Lazy, Left, Let, List, Locale, Lock, Long, Map, MapEntry, MetadataPropertyHandling, Module, Mutable, Mutating, Namespace, Native, New, Newtonsoft, Nil, No, Noexcept, Nonatomic, None, EnumNone, Nonlocal, Nonmutating, NSObject, NoSuchMethod, Not, NotEq, NSError, NSString, Null, EnumNull, Nullptr, Number, Object, ObjectMapper, Of, Oneway, Open, Operator, Optional, Or, OrEq, Out, Override, Package, Params, Pass, Port, Postfix, Precedence, Prefix, Print, Printf, PrintMembers, Private, Protected, Protocol, EnumProtocol, Public, Quicktype, Raise, Range, Readonly, Ref, RegExp, Register, ReinterpretCast, Repeat, Require, Required, Requires, Restrict, Retain, Rethrows, Return, Right, RuntimeType, S, Sbyte, Sealed, Sel, Select, Self, EnumSelf, Sendable, Serialize, SerializerProvider, Set, Short, Signed, SimpleModule, Sizeof, Stackalloc, Standards, Static, StaticAssert, StaticCast, StdDeserializer, StdSerializer, Strictfp, String, Struct, Subscript, Super, Switch, Symbol, Synchronized, System, Template, Then, This, ThreadLocal, Throw, Throws, TimeOnly, TimeOnlyConverter, TimeZone, ToJSON, EnumTopLevel, ToString, Transient, True, EnumTrue, Try, Type, EnumType, Typealias, Typedef, Typeid, Typename, Typeof, Uint, Ulong, Unchecked, Undefined, Union, Unowned, Unsafe, Unsigned, Ushort, Using, Utf8JSONReader, Utf8JSONWriter, UUID, Var, Virtual, Void, Volatile, WcharT, Weak, Where, While, WillSet, With, Xor, XorEq, Yes, Yield, Dummy: *x = EnumEnum(value); return nil
+	case Empty, Bool, Complex, Imaginery, Abstract, Alignas, Alignof, And, AndEq, Any, EnumAny, Array, As, ASM, Assert, Associatedtype, Associativity, Async, Atomic, AtomicCancel, AtomicCommit, AtomicNoexcept, Auto, Await, Base, Bitand, Bitor, EnumBOOL, EnumBool, Boolean, Break, Bycopy, Byref, Byte, Calendar, Case, Catch, Chan, Char, Char16T, Char32T, Checked, Class, EnumClass, Clone, CoAwait, CoReturn, CoYield, Codable, CodingKey, CodingKeys, Compl, Concept, Console, Const, ConstCast, Constexpr, Constructor, Continue, Convenience, Convert, Converter, CultureInfo, Date, DateParseHandling, DateFormatter, DateOnly, DateOnlyConverter, DateTime, DateTimeStyles, Debugger, Decimal, Declare, Decltype, DecodeString, Decoder, DecodingError, Def, Default, Defer, Deinit, Del, Delegate, Delete, Dict, Dictionary, DidSet, Do, Double, Dynamic, DynamicCast, Elif, Else, EncodeQuickType, Encoder, Enum, EnumValues, Equatable, EqualityContract, Event, Except, Exception, Explicit, Export, Exposing, Extends, Extension, Extern, Fallthrough, False, EnumFalse, Fileprivate, Final, Finally, Fixed, Float, For, Foreach, FormatException, Friend, From, FromJSON, Func, Function, Get, Global, Go, Goto, Guard, Hashable, HashCode, Hasher, HasOwnProperty, ID, If, Imp, Implements, Implicit, Import, In, Indirect, Infix, Init, Inline, Inout, Instanceof, Int, Interface, Internal, ISODateTimeOffsetConverter, Iterable, Is, Jdec, Jenc, Jpipe, JSON, JSONConverter, JSONSerializer, JSONToken, JSONWriter, JSONAny, JSONCodingKey, JSONDecoder, JSONEncoder, JSONException, JSONGenerator, JSONNode, JSONNull, JSONParser, JSONReader, JSONTokenType, Lambda, Lazy, Left, Let, List, Locale, Lock, Long, Map, MapEntry, MetadataPropertyHandling, Module, Mutable, Mutating, Namespace, Native, New, Newtonsoft, Nil, No, Noexcept, Nonatomic, None, EnumNone, Nonlocal, Nonmutating, NSObject, NoSuchMethod, Not, NotEq, NSError, NSString, Null, EnumNull, Nullptr, Number, Object, ObjectMapper, Of, Oneway, Open, Operator, Optional, Or, OrEq, Out, Override, Package, Params, Pass, Port, Postfix, Precedence, Prefix, Print, Printf, PrintMembers, Private, Protected, Protocol, EnumProtocol, Public, Quicktype, Raise, Range, Readonly, Ref, RegExp, Register, ReinterpretCast, Repeat, Require, Required, Requires, Restrict, Retain, Rethrows, Return, Right, RuntimeType, S, Sbyte, Sealed, Sel, Select, Self, Serializable, EnumSelf, Sendable, Serialize, SerialName, KSerializer, PrimitiveKind, SerialDescriptor, SerializerProvider, Set, Short, Signed, SimpleModule, Sizeof, Stackalloc, Standards, Static, StaticAssert, StaticCast, StdDeserializer, StdSerializer, Strictfp, String, Struct, Subscript, Super, Switch, Symbol, Synchronized, System, Template, Then, This, ThreadLocal, Throw, Throws, TimeOnly, TimeOnlyConverter, TimeZone, ToJSON, EnumTopLevel, ToString, Transient, True, EnumTrue, Try, Type, EnumType, Typealias, Typedef, Typeid, Typename, Typeof, Uint, Ulong, Unchecked, Undefined, Union, UseSerializers, Unowned, Unsafe, Unsigned, Ushort, Using, Utf8JSONReader, Utf8JSONWriter, UUID, Var, Virtual, Void, Volatile, WcharT, Weak, Where, While, WillSet, With, Xor, XorEq, Yes, Yield, Dummy: *x = EnumEnum(value); return nil
 	}
 	return invalidEnumEnum(value)
 }
diff --git a/base/schema-golang/test/inputs/schema/keyword-unions.schema/default/quicktype.go b/head/schema-golang/test/inputs/schema/keyword-unions.schema/default/quicktype.go
index bfb0a15..2f495a0 100644
--- a/base/schema-golang/test/inputs/schema/keyword-unions.schema/default/quicktype.go
+++ b/head/schema-golang/test/inputs/schema/keyword-unions.schema/default/quicktype.go
@@ -194,6 +194,7 @@ type TopLevel struct {
 	JSONParser                 *UnionJSONParser                 `json:"JsonParser"`
 	JSONReader                 *UnionJSONReader                 `json:"JsonReader"`
 	JSONTokenType              *UnionJSONTokenType              `json:"JsonTokenType"`
+	KSerializer                *UnionKSerializer                `json:"KSerializer"`
 	Lambda                     *UnionLambda                     `json:"lambda"`
 	Lazy                       *UnionLazy                       `json:"lazy"`
 	Left                       *UnionLeft                       `json:"left"`
@@ -248,6 +249,7 @@ type TopLevel struct {
 	Postfix                    *UnionPostfix                    `json:"postfix"`
 	Precedence                 *UnionPrecedence                 `json:"precedence"`
 	Prefix                     *UnionPrefix                     `json:"prefix"`
+	PrimitiveKind              *UnionPrimitiveKind              `json:"PrimitiveKind"`
 	Print                      *UnionPrint                      `json:"print"`
 	Printf                     *UnionPrintf                     `json:"printf"`
 	PrintMembers               *UnionPrintMembers               `json:"printMembers"`
@@ -282,8 +284,11 @@ type TopLevel struct {
 	Self                       *UnionSelf                       `json:"Self"`
 	TopLevelSelf               *UnionSelfUnion                  `json:"self"`
 	Sendable                   *UnionSendable                   `json:"Sendable"`
+	SerialDescriptor           *UnionSerialDescriptor           `json:"SerialDescriptor"`
+	Serializable               *UnionSerializable               `json:"Serializable"`
 	Serialize                  *UnionSerialize                  `json:"serialize"`
 	SerializerProvider         *UnionSerializerProvider         `json:"SerializerProvider"`
+	SerialName                 *UnionSerialName                 `json:"SerialName"`
 	Set                        *UnionSet                        `json:"set"`
 	Short                      *UnionShort                      `json:"short"`
 	Signed                     *UnionSigned                     `json:"signed"`
@@ -336,6 +341,7 @@ type TopLevel struct {
 	Unowned                    *UnionUnowned                    `json:"unowned"`
 	Unsafe                     *UnionUnsafe                     `json:"unsafe"`
 	Unsigned                   *UnionUnsigned                   `json:"unsigned"`
+	UseSerializers             *UnionUseSerializers             `json:"UseSerializers"`
 	Ushort                     *UnionUshort                     `json:"ushort"`
 	Using                      *UnionUsing                      `json:"using"`
 	Utf8JSONReader             *UnionUtf8JSONReader             `json:"Utf8JsonReader"`
@@ -855,6 +861,9 @@ type Jenc struct {
 type Jpipe struct {
 }
 
+type KSerializer struct {
+}
+
 type Lambda struct {
 }
 
@@ -1011,6 +1020,9 @@ type Precedence struct {
 type Prefix struct {
 }
 
+type PrimitiveKind struct {
+}
+
 type Print struct {
 }
 
@@ -1110,6 +1122,15 @@ type Self struct {
 type Sendable struct {
 }
 
+type SerialDescriptor struct {
+}
+
+type SerialName struct {
+}
+
+type Serializable struct {
+}
+
 type Serialize struct {
 }
 
@@ -1299,6 +1320,9 @@ type Unsafe struct {
 type Unsigned struct {
 }
 
+type UseSerializers struct {
+}
+
 type Ushort struct {
 }
 
@@ -5005,6 +5029,28 @@ func (x *UnionJpipe) MarshalJSON() ([]byte, error) {
 	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.Jpipe != nil, x.Jpipe, false, nil, false, nil, false)
 }
 
+type UnionKSerializer struct {
+	Double      *float64
+	KSerializer *KSerializer
+}
+
+func (x *UnionKSerializer) UnmarshalJSON(data []byte) error {
+	x.KSerializer = nil
+	var c KSerializer
+	object, err := unmarshalUnion(data, nil, &x.Double, nil, nil, false, nil, true, &c, false, nil, false, nil, false)
+	if err != nil {
+		return err
+	}
+	if object {
+		x.KSerializer = &c
+	}
+	return nil
+}
+
+func (x *UnionKSerializer) MarshalJSON() ([]byte, error) {
+	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.KSerializer != nil, x.KSerializer, false, nil, false, nil, false)
+}
+
 type UnionLambda struct {
 	Double *float64
 	Lambda *Lambda
@@ -6149,6 +6195,28 @@ func (x *UnionPrefix) MarshalJSON() ([]byte, error) {
 	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.Prefix != nil, x.Prefix, false, nil, false, nil, false)
 }
 
+type UnionPrimitiveKind struct {
+	Double        *float64
+	PrimitiveKind *PrimitiveKind
+}
+
+func (x *UnionPrimitiveKind) UnmarshalJSON(data []byte) error {
+	x.PrimitiveKind = nil
+	var c PrimitiveKind
+	object, err := unmarshalUnion(data, nil, &x.Double, nil, nil, false, nil, true, &c, false, nil, false, nil, false)
+	if err != nil {
+		return err
+	}
+	if object {
+		x.PrimitiveKind = &c
+	}
+	return nil
+}
+
+func (x *UnionPrimitiveKind) MarshalJSON() ([]byte, error) {
+	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.PrimitiveKind != nil, x.PrimitiveKind, false, nil, false, nil, false)
+}
+
 type UnionPrint struct {
 	Double *float64
 	Print  *Print
@@ -6875,6 +6943,72 @@ func (x *UnionSendable) MarshalJSON() ([]byte, error) {
 	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.Sendable != nil, x.Sendable, false, nil, false, nil, false)
 }
 
+type UnionSerialDescriptor struct {
+	Double           *float64
+	SerialDescriptor *SerialDescriptor
+}
+
+func (x *UnionSerialDescriptor) UnmarshalJSON(data []byte) error {
+	x.SerialDescriptor = nil
+	var c SerialDescriptor
+	object, err := unmarshalUnion(data, nil, &x.Double, nil, nil, false, nil, true, &c, false, nil, false, nil, false)
+	if err != nil {
+		return err
+	}
+	if object {
+		x.SerialDescriptor = &c
+	}
+	return nil
+}
+
+func (x *UnionSerialDescriptor) MarshalJSON() ([]byte, error) {
+	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.SerialDescriptor != nil, x.SerialDescriptor, false, nil, false, nil, false)
+}
+
+type UnionSerialName struct {
+	Double     *float64
+	SerialName *SerialName
+}
+
+func (x *UnionSerialName) UnmarshalJSON(data []byte) error {
+	x.SerialName = nil
+	var c SerialName
+	object, err := unmarshalUnion(data, nil, &x.Double, nil, nil, false, nil, true, &c, false, nil, false, nil, false)
+	if err != nil {
+		return err
+	}
+	if object {
+		x.SerialName = &c
+	}
+	return nil
+}
+
+func (x *UnionSerialName) MarshalJSON() ([]byte, error) {
+	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.SerialName != nil, x.SerialName, false, nil, false, nil, false)
+}
+
+type UnionSerializable struct {
+	Double       *float64
+	Serializable *Serializable
+}
+
+func (x *UnionSerializable) UnmarshalJSON(data []byte) error {
+	x.Serializable = nil
+	var c Serializable
+	object, err := unmarshalUnion(data, nil, &x.Double, nil, nil, false, nil, true, &c, false, nil, false, nil, false)
+	if err != nil {
+		return err
+	}
+	if object {
+		x.Serializable = &c
+	}
+	return nil
+}
+
+func (x *UnionSerializable) MarshalJSON() ([]byte, error) {
+	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.Serializable != nil, x.Serializable, false, nil, false, nil, false)
+}
+
 type UnionSerialize struct {
 	Double    *float64
 	Serialize *Serialize
@@ -8261,6 +8395,28 @@ func (x *UnionUnsigned) MarshalJSON() ([]byte, error) {
 	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.Unsigned != nil, x.Unsigned, false, nil, false, nil, false)
 }
 
+type UnionUseSerializers struct {
+	Double         *float64
+	UseSerializers *UseSerializers
+}
+
+func (x *UnionUseSerializers) UnmarshalJSON(data []byte) error {
+	x.UseSerializers = nil
+	var c UseSerializers
+	object, err := unmarshalUnion(data, nil, &x.Double, nil, nil, false, nil, true, &c, false, nil, false, nil, false)
+	if err != nil {
+		return err
+	}
+	if object {
+		x.UseSerializers = &c
+	}
+	return nil
+}
+
+func (x *UnionUseSerializers) MarshalJSON() ([]byte, error) {
+	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.UseSerializers != nil, x.UseSerializers, false, nil, false, nil, false)
+}
+
 type UnionUshort struct {
 	Double *float64
 	Ushort *Ushort
diff --git a/base/schema-haskell/test/inputs/schema/keyword-enum.schema/default/QuickType.hs b/head/schema-haskell/test/inputs/schema/keyword-enum.schema/default/QuickType.hs
index ae81c97..29de7b2 100644
--- a/base/schema-haskell/test/inputs/schema/keyword-enum.schema/default/QuickType.hs
+++ b/head/schema-haskell/test/inputs/schema/keyword-enum.schema/default/QuickType.hs
@@ -275,9 +275,14 @@ data EnumEnum
     | SELEnumEnum
     | SelectEnumEnum
     | SelfEnumEnum
+    | SerializableEnumEnum
     | PurpleSelfEnumEnum
     | SendableEnumEnum
     | SerializeEnumEnum
+    | SerialNameEnumEnum
+    | KSerializerEnumEnum
+    | PrimitiveKindEnumEnum
+    | SerialDescriptorEnumEnum
     | SerializerProviderEnumEnum
     | SetEnumEnum
     | ShortEnumEnum
@@ -328,6 +333,7 @@ data EnumEnum
     | UncheckedEnumEnum
     | UndefinedEnumEnum
     | UnionEnumEnum
+    | UseSerializersEnumEnum
     | UnownedEnumEnum
     | UnsafeEnumEnum
     | UnsignedEnumEnum
@@ -624,9 +630,14 @@ instance ToJSON EnumEnum where
     toJSON SELEnumEnum = "SEL"
     toJSON SelectEnumEnum = "select"
     toJSON SelfEnumEnum = "Self"
+    toJSON SerializableEnumEnum = "Serializable"
     toJSON PurpleSelfEnumEnum = "self"
     toJSON SendableEnumEnum = "Sendable"
     toJSON SerializeEnumEnum = "serialize"
+    toJSON SerialNameEnumEnum = "SerialName"
+    toJSON KSerializerEnumEnum = "KSerializer"
+    toJSON PrimitiveKindEnumEnum = "PrimitiveKind"
+    toJSON SerialDescriptorEnumEnum = "SerialDescriptor"
     toJSON SerializerProviderEnumEnum = "SerializerProvider"
     toJSON SetEnumEnum = "set"
     toJSON ShortEnumEnum = "short"
@@ -677,6 +688,7 @@ instance ToJSON EnumEnum where
     toJSON UncheckedEnumEnum = "unchecked"
     toJSON UndefinedEnumEnum = "undefined"
     toJSON UnionEnumEnum = "union"
+    toJSON UseSerializersEnumEnum = "UseSerializers"
     toJSON UnownedEnumEnum = "unowned"
     toJSON UnsafeEnumEnum = "unsafe"
     toJSON UnsignedEnumEnum = "unsigned"
@@ -961,9 +973,14 @@ instance FromJSON EnumEnum where
             parseText "SEL" = return SELEnumEnum
             parseText "select" = return SelectEnumEnum
             parseText "Self" = return SelfEnumEnum
+            parseText "Serializable" = return SerializableEnumEnum
             parseText "self" = return PurpleSelfEnumEnum
             parseText "Sendable" = return SendableEnumEnum
             parseText "serialize" = return SerializeEnumEnum
+            parseText "SerialName" = return SerialNameEnumEnum
+            parseText "KSerializer" = return KSerializerEnumEnum
+            parseText "PrimitiveKind" = return PrimitiveKindEnumEnum
+            parseText "SerialDescriptor" = return SerialDescriptorEnumEnum
             parseText "SerializerProvider" = return SerializerProviderEnumEnum
             parseText "set" = return SetEnumEnum
             parseText "short" = return ShortEnumEnum
@@ -1014,6 +1031,7 @@ instance FromJSON EnumEnum where
             parseText "unchecked" = return UncheckedEnumEnum
             parseText "undefined" = return UndefinedEnumEnum
             parseText "union" = return UnionEnumEnum
+            parseText "UseSerializers" = return UseSerializersEnumEnum
             parseText "unowned" = return UnownedEnumEnum
             parseText "unsafe" = return UnsafeEnumEnum
             parseText "unsigned" = return UnsignedEnumEnum
diff --git a/base/schema-haskell/test/inputs/schema/keyword-unions.schema/default/QuickType.hs b/head/schema-haskell/test/inputs/schema/keyword-unions.schema/default/QuickType.hs
index 06475c7..ff6f03e 100644
--- a/base/schema-haskell/test/inputs/schema/keyword-unions.schema/default/QuickType.hs
+++ b/head/schema-haskell/test/inputs/schema/keyword-unions.schema/default/QuickType.hs
@@ -158,6 +158,7 @@ module QuickType
     , JSONToken (..)
     , JSONTokenType (..)
     , JSONWriter (..)
+    , KSerializer (..)
     , Lambda (..)
     , Lazy (..)
     , LeftClass (..)
@@ -207,6 +208,7 @@ module QuickType
     , Postfix (..)
     , Precedence (..)
     , Prefix (..)
+    , PrimitiveKind (..)
     , Print (..)
     , PrintMembers (..)
     , Printf (..)
@@ -267,6 +269,9 @@ module QuickType
     , Select (..)
     , Self (..)
     , Sendable (..)
+    , SerialDescriptor (..)
+    , SerialName (..)
+    , Serializable (..)
     , Serialize (..)
     , SerializerProvider (..)
     , Set (..)
@@ -317,6 +322,7 @@ module QuickType
     , Unowned (..)
     , Unsafe (..)
     , Unsigned (..)
+    , UseSerializers (..)
     , Ushort (..)
     , Using (..)
     , Utf8JSONReader (..)
@@ -490,6 +496,7 @@ module QuickType
     , UnionJSONToken (..)
     , UnionJSONTokenType (..)
     , UnionJSONWriter (..)
+    , UnionKSerializer (..)
     , UnionLambda (..)
     , UnionLazy (..)
     , UnionLeft (..)
@@ -539,6 +546,7 @@ module QuickType
     , UnionPostfix (..)
     , UnionPrecedence (..)
     , UnionPrefix (..)
+    , UnionPrimitiveKind (..)
     , UnionPrint (..)
     , UnionPrintMembers (..)
     , UnionPrintf (..)
@@ -599,6 +607,9 @@ module QuickType
     , UnionSelect (..)
     , UnionSelf (..)
     , UnionSendable (..)
+    , UnionSerialDescriptor (..)
+    , UnionSerialName (..)
+    , UnionSerializable (..)
     , UnionSerialize (..)
     , UnionSerializerProvider (..)
     , UnionSet (..)
@@ -649,6 +660,7 @@ module QuickType
     , UnionUnowned (..)
     , UnionUnsafe (..)
     , UnionUnsigned (..)
+    , UnionUseSerializers (..)
     , UnionUshort (..)
     , UnionUsing (..)
     , UnionUtf8JSONReader (..)
@@ -849,6 +861,7 @@ data QuickType = QuickType
     , jsonParserQuickType :: Maybe UnionJSONParser
     , jsonReaderQuickType :: Maybe UnionJSONReader
     , jsonTokenTypeQuickType :: Maybe UnionJSONTokenType
+    , kSerializerQuickType :: Maybe UnionKSerializer
     , lambdaQuickType :: Maybe UnionLambda
     , lazyQuickType :: Maybe UnionLazy
     , leftQuickType :: Maybe UnionLeft
@@ -903,6 +916,7 @@ data QuickType = QuickType
     , postfixQuickType :: Maybe UnionPostfix
     , precedenceQuickType :: Maybe UnionPrecedence
     , prefixQuickType :: Maybe UnionPrefix
+    , primitiveKindQuickType :: Maybe UnionPrimitiveKind
     , printQuickType :: Maybe UnionPrint
     , printfQuickType :: Maybe UnionPrintf
     , printMembersQuickType :: Maybe UnionPrintMembers
@@ -937,8 +951,11 @@ data QuickType = QuickType
     , selfQuickType :: Maybe UnionSelf
     , quickTypeSelfQuickType :: Maybe UnionSelfUnion
     , sendableQuickType :: Maybe UnionSendable
+    , serialDescriptorQuickType :: Maybe UnionSerialDescriptor
+    , serializableQuickType :: Maybe UnionSerializable
     , serializeQuickType :: Maybe UnionSerialize
     , serializerProviderQuickType :: Maybe UnionSerializerProvider
+    , serialNameQuickType :: Maybe UnionSerialName
     , setQuickType :: Maybe UnionSet
     , shortQuickType :: Maybe UnionShort
     , signedQuickType :: Maybe UnionSigned
@@ -991,6 +1008,7 @@ data QuickType = QuickType
     , unownedQuickType :: Maybe UnionUnowned
     , unsafeQuickType :: Maybe UnionUnsafe
     , unsignedQuickType :: Maybe UnionUnsigned
+    , useSerializersQuickType :: Maybe UnionUseSerializers
     , ushortQuickType :: Maybe UnionUshort
     , usingQuickType :: Maybe UnionUsing
     , utf8JSONReaderQuickType :: Maybe UnionUtf8JSONReader
@@ -2407,6 +2425,15 @@ data JSONWriter = JSONWriter
     {
     } deriving (Show)
 
+data UnionKSerializer
+    = DoubleInUnionKSerializer Double
+    | KSerializerInUnionKSerializer KSerializer
+    deriving (Show)
+
+data KSerializer = KSerializer
+    {
+    } deriving (Show)
+
 data UnionLambda
     = DoubleInUnionLambda Double
     | LambdaInUnionLambda Lambda
@@ -2848,6 +2875,15 @@ data Prefix = Prefix
     {
     } deriving (Show)
 
+data UnionPrimitiveKind
+    = DoubleInUnionPrimitiveKind Double
+    | PrimitiveKindInUnionPrimitiveKind PrimitiveKind
+    deriving (Show)
+
+data PrimitiveKind = PrimitiveKind
+    {
+    } deriving (Show)
+
 data UnionPrint
     = DoubleInUnionPrint Double
     | PrintInUnionPrint Print
@@ -3388,6 +3424,33 @@ data Sendable = Sendable
     {
     } deriving (Show)
 
+data UnionSerialDescriptor
+    = DoubleInUnionSerialDescriptor Double
+    | SerialDescriptorInUnionSerialDescriptor SerialDescriptor
+    deriving (Show)
+
+data SerialDescriptor = SerialDescriptor
+    {
+    } deriving (Show)
+
+data UnionSerialName
+    = DoubleInUnionSerialName Double
+    | SerialNameInUnionSerialName SerialName
+    deriving (Show)
+
+data SerialName = SerialName
+    {
+    } deriving (Show)
+
+data UnionSerializable
+    = DoubleInUnionSerializable Double
+    | SerializableInUnionSerializable Serializable
+    deriving (Show)
+
+data Serializable = Serializable
+    {
+    } deriving (Show)
+
 data UnionSerialize
     = DoubleInUnionSerialize Double
     | SerializeInUnionSerialize Serialize
@@ -3838,6 +3901,15 @@ data Unsigned = Unsigned
     {
     } deriving (Show)
 
+data UnionUseSerializers
+    = DoubleInUnionUseSerializers Double
+    | UseSerializersInUnionUseSerializers UseSerializers
+    deriving (Show)
+
+data UseSerializers = UseSerializers
+    {
+    } deriving (Show)
+
 data UnionUshort
     = DoubleInUnionUshort Double
     | UshortInUnionUshort Ushort
@@ -4004,7 +4076,7 @@ decodeTopLevel :: ByteString -> Maybe QuickType
 decodeTopLevel = decode
 
 instance ToJSON QuickType where
-    toJSON (QuickType emptyQuickType quickTypeBoolQuickType complexQuickType imagineryQuickType abstractQuickType alignasQuickType alignofQuickType andQuickType andEqQuickType quickTypeAnyQuickType anyQuickType arrayQuickType quickTypeAsQuickType asmQuickType assertQuickType associatedtypeQuickType associativityQuickType asyncQuickType atomicQuickType atomicCancelQuickType atomicCommitQuickType atomicNoexceptQuickType autoQuickType awaitQuickType baseQuickType bitandQuickType bitorQuickType boolQuickType purpleBoolQuickType booleanQuickType breakQuickType bycopyQuickType byrefQuickType byteQuickType calendarQuickType quickTypeCaseQuickType catchQuickType chanQuickType charQuickType char16TQuickType char32TQuickType checkedQuickType purpleClassQuickType quickTypeClassQuickType cloneQuickType coAwaitQuickType coReturnQuickType coYieldQuickType codableQuickType codingKeyQuickType codingKeysQuickType complQuickType conceptQuickType consoleQuickType constQuickType constCastQuickType constexprQuickType constructorQuickType continueQuickType convenienceQuickType convertQuickType converterQuickType cultureInfoQuickType dateQuickType dateParseHandlingQuickType dateFormatterQuickType dateOnlyQuickType dateOnlyConverterQuickType dateTimeQuickType dateTimeStylesQuickType debuggerQuickType decimalQuickType declareQuickType decltypeQuickType decodeStringQuickType decoderQuickType decodingErrorQuickType defQuickType quickTypeDefaultQuickType deferQuickType deinitQuickType delQuickType delegateQuickType deleteQuickType dictQuickType dictionaryQuickType didSetQuickType quickTypeDoQuickType doubleQuickType dummyQuickType dynamicQuickType dynamicCastQuickType elifQuickType quickTypeElseQuickType encodeQuickTypeQuickType encoderQuickType enumQuickType enumValuesQuickType equalityContractQuickType equatableQuickType eventQuickType exceptQuickType exceptionQuickType explicitQuickType exportQuickType exposingQuickType extendsQuickType extensionQuickType externQuickType fallthroughQuickType quickTypeFalseQuickType falseQuickType fileprivateQuickType finalQuickType finallyQuickType fixedQuickType floatQuickType forQuickType foreachQuickType formatExceptionQuickType friendQuickType fromQuickType fromJSONQuickType funcQuickType functionQuickType getQuickType globalQuickType goQuickType gotoQuickType guardQuickType hashableQuickType hashCodeQuickType hasherQuickType hasOwnPropertyQuickType quickTypeIDQuickType quickTypeIfQuickType impQuickType implementsQuickType implicitQuickType quickTypeImportQuickType quickTypeInQuickType indirectQuickType quickTypeInfixQuickType initQuickType inlineQuickType inoutQuickType instanceofQuickType intQuickType interfaceQuickType internalQuickType isQuickType isoDateTimeOffsetConverterQuickType iterableQuickType jdecQuickType jencQuickType jpipeQuickType jsonQuickType jsonConverterQuickType jsonSerializerQuickType jsonTokenQuickType jsonWriterQuickType jsonAnyQuickType jsonCodingKeyQuickType jsonDecoderQuickType jsonEncoderQuickType jsonExceptionQuickType jsonGeneratorQuickType jsonNodeQuickType jsonNullQuickType jsonParserQuickType jsonReaderQuickType jsonTokenTypeQuickType lambdaQuickType lazyQuickType leftQuickType quickTypeLetQuickType listQuickType localeQuickType lockQuickType longQuickType mapQuickType mapEntryQuickType metadataPropertyHandlingQuickType quickTypeModuleQuickType mutableQuickType mutatingQuickType namespaceQuickType nativeQuickType newQuickType newtonsoftQuickType nilQuickType noQuickType noexceptQuickType nonatomicQuickType quickTypeNoneQuickType noneQuickType nonlocalQuickType nonmutatingQuickType noSuchMethodQuickType notQuickType notEqQuickType nsErrorQuickType nsObjectQuickType nsStringQuickType nullQuickType quickTypeNullQuickType nullptrQuickType numberQuickType objectQuickType objectMapperQuickType quickTypeOfQuickType onewayQuickType openQuickType operatorQuickType optionalQuickType orQuickType orEqQuickType outQuickType overrideQuickType packageQuickType paramsQuickType passQuickType portQuickType postfixQuickType precedenceQuickType prefixQuickType printQuickType printfQuickType printMembersQuickType privateQuickType protectedQuickType protocolQuickType quickTypeProtocolQuickType publicQuickType quicktypeQuickType raiseQuickType rangeQuickType readonlyQuickType refQuickType regExpQuickType registerQuickType reinterpretCastQuickType repeatQuickType requireQuickType requiredQuickType requiresQuickType restrictQuickType retainQuickType rethrowsQuickType returnQuickType rightQuickType runtimeTypeQuickType sQuickType sbyteQuickType sealedQuickType selQuickType selectQuickType selfQuickType quickTypeSelfQuickType sendableQuickType serializeQuickType serializerProviderQuickType setQuickType shortQuickType signedQuickType simpleModuleQuickType sizeofQuickType stackallocQuickType standardsQuickType staticQuickType staticAssertQuickType staticCastQuickType stdDeserializerQuickType stdSerializerQuickType strictfpQuickType stringQuickType structQuickType subscriptQuickType superQuickType switchQuickType symbolQuickType synchronizedQuickType systemQuickType templateQuickType quickTypeThenQuickType thisQuickType threadLocalQuickType throwQuickType throwsQuickType timeOnlyQuickType timeOnlyConverterQuickType timeZoneQuickType toJSONQuickType topLevelQuickType toStringQuickType transientQuickType trueQuickType quickTypeTrueQuickType tryQuickType quickTypeTypeQuickType purpleTypeQuickType typealiasQuickType typedefQuickType typeidQuickType typenameQuickType typeofQuickType uintQuickType ulongQuickType uncheckedQuickType undefinedQuickType unionQuickType unownedQuickType unsafeQuickType unsignedQuickType ushortQuickType usingQuickType utf8JSONReaderQuickType utf8JSONWriterQuickType uuidQuickType varQuickType virtualQuickType voidQuickType volatileQuickType wcharTQuickType weakQuickType quickTypeWhereQuickType whileQuickType willSetQuickType withQuickType xorQuickType xorEqQuickType yesQuickType yieldQuickType) =
+    toJSON (QuickType emptyQuickType quickTypeBoolQuickType complexQuickType imagineryQuickType abstractQuickType alignasQuickType alignofQuickType andQuickType andEqQuickType quickTypeAnyQuickType anyQuickType arrayQuickType quickTypeAsQuickType asmQuickType assertQuickType associatedtypeQuickType associativityQuickType asyncQuickType atomicQuickType atomicCancelQuickType atomicCommitQuickType atomicNoexceptQuickType autoQuickType awaitQuickType baseQuickType bitandQuickType bitorQuickType boolQuickType purpleBoolQuickType booleanQuickType breakQuickType bycopyQuickType byrefQuickType byteQuickType calendarQuickType quickTypeCaseQuickType catchQuickType chanQuickType charQuickType char16TQuickType char32TQuickType checkedQuickType purpleClassQuickType quickTypeClassQuickType cloneQuickType coAwaitQuickType coReturnQuickType coYieldQuickType codableQuickType codingKeyQuickType codingKeysQuickType complQuickType conceptQuickType consoleQuickType constQuickType constCastQuickType constexprQuickType constructorQuickType continueQuickType convenienceQuickType convertQuickType converterQuickType cultureInfoQuickType dateQuickType dateParseHandlingQuickType dateFormatterQuickType dateOnlyQuickType dateOnlyConverterQuickType dateTimeQuickType dateTimeStylesQuickType debuggerQuickType decimalQuickType declareQuickType decltypeQuickType decodeStringQuickType decoderQuickType decodingErrorQuickType defQuickType quickTypeDefaultQuickType deferQuickType deinitQuickType delQuickType delegateQuickType deleteQuickType dictQuickType dictionaryQuickType didSetQuickType quickTypeDoQuickType doubleQuickType dummyQuickType dynamicQuickType dynamicCastQuickType elifQuickType quickTypeElseQuickType encodeQuickTypeQuickType encoderQuickType enumQuickType enumValuesQuickType equalityContractQuickType equatableQuickType eventQuickType exceptQuickType exceptionQuickType explicitQuickType exportQuickType exposingQuickType extendsQuickType extensionQuickType externQuickType fallthroughQuickType quickTypeFalseQuickType falseQuickType fileprivateQuickType finalQuickType finallyQuickType fixedQuickType floatQuickType forQuickType foreachQuickType formatExceptionQuickType friendQuickType fromQuickType fromJSONQuickType funcQuickType functionQuickType getQuickType globalQuickType goQuickType gotoQuickType guardQuickType hashableQuickType hashCodeQuickType hasherQuickType hasOwnPropertyQuickType quickTypeIDQuickType quickTypeIfQuickType impQuickType implementsQuickType implicitQuickType quickTypeImportQuickType quickTypeInQuickType indirectQuickType quickTypeInfixQuickType initQuickType inlineQuickType inoutQuickType instanceofQuickType intQuickType interfaceQuickType internalQuickType isQuickType isoDateTimeOffsetConverterQuickType iterableQuickType jdecQuickType jencQuickType jpipeQuickType jsonQuickType jsonConverterQuickType jsonSerializerQuickType jsonTokenQuickType jsonWriterQuickType jsonAnyQuickType jsonCodingKeyQuickType jsonDecoderQuickType jsonEncoderQuickType jsonExceptionQuickType jsonGeneratorQuickType jsonNodeQuickType jsonNullQuickType jsonParserQuickType jsonReaderQuickType jsonTokenTypeQuickType kSerializerQuickType lambdaQuickType lazyQuickType leftQuickType quickTypeLetQuickType listQuickType localeQuickType lockQuickType longQuickType mapQuickType mapEntryQuickType metadataPropertyHandlingQuickType quickTypeModuleQuickType mutableQuickType mutatingQuickType namespaceQuickType nativeQuickType newQuickType newtonsoftQuickType nilQuickType noQuickType noexceptQuickType nonatomicQuickType quickTypeNoneQuickType noneQuickType nonlocalQuickType nonmutatingQuickType noSuchMethodQuickType notQuickType notEqQuickType nsErrorQuickType nsObjectQuickType nsStringQuickType nullQuickType quickTypeNullQuickType nullptrQuickType numberQuickType objectQuickType objectMapperQuickType quickTypeOfQuickType onewayQuickType openQuickType operatorQuickType optionalQuickType orQuickType orEqQuickType outQuickType overrideQuickType packageQuickType paramsQuickType passQuickType portQuickType postfixQuickType precedenceQuickType prefixQuickType primitiveKindQuickType printQuickType printfQuickType printMembersQuickType privateQuickType protectedQuickType protocolQuickType quickTypeProtocolQuickType publicQuickType quicktypeQuickType raiseQuickType rangeQuickType readonlyQuickType refQuickType regExpQuickType registerQuickType reinterpretCastQuickType repeatQuickType requireQuickType requiredQuickType requiresQuickType restrictQuickType retainQuickType rethrowsQuickType returnQuickType rightQuickType runtimeTypeQuickType sQuickType sbyteQuickType sealedQuickType selQuickType selectQuickType selfQuickType quickTypeSelfQuickType sendableQuickType serialDescriptorQuickType serializableQuickType serializeQuickType serializerProviderQuickType serialNameQuickType setQuickType shortQuickType signedQuickType simpleModuleQuickType sizeofQuickType stackallocQuickType standardsQuickType staticQuickType staticAssertQuickType staticCastQuickType stdDeserializerQuickType stdSerializerQuickType strictfpQuickType stringQuickType structQuickType subscriptQuickType superQuickType switchQuickType symbolQuickType synchronizedQuickType systemQuickType templateQuickType quickTypeThenQuickType thisQuickType threadLocalQuickType throwQuickType throwsQuickType timeOnlyQuickType timeOnlyConverterQuickType timeZoneQuickType toJSONQuickType topLevelQuickType toStringQuickType transientQuickType trueQuickType quickTypeTrueQuickType tryQuickType quickTypeTypeQuickType purpleTypeQuickType typealiasQuickType typedefQuickType typeidQuickType typenameQuickType typeofQuickType uintQuickType ulongQuickType uncheckedQuickType undefinedQuickType unionQuickType unownedQuickType unsafeQuickType unsignedQuickType useSerializersQuickType ushortQuickType usingQuickType utf8JSONReaderQuickType utf8JSONWriterQuickType uuidQuickType varQuickType virtualQuickType voidQuickType volatileQuickType wcharTQuickType weakQuickType quickTypeWhereQuickType whileQuickType willSetQuickType withQuickType xorQuickType xorEqQuickType yesQuickType yieldQuickType) =
         object $ foldMap (maybe [] pure)
         [ ("_" .=) <$> emptyQuickType
         , ("_Bool" .=) <$> quickTypeBoolQuickType
@@ -4178,6 +4250,7 @@ instance ToJSON QuickType where
         , ("JsonParser" .=) <$> jsonParserQuickType
         , ("JsonReader" .=) <$> jsonReaderQuickType
         , ("JsonTokenType" .=) <$> jsonTokenTypeQuickType
+        , ("KSerializer" .=) <$> kSerializerQuickType
         , ("lambda" .=) <$> lambdaQuickType
         , ("lazy" .=) <$> lazyQuickType
         , ("left" .=) <$> leftQuickType
@@ -4232,6 +4305,7 @@ instance ToJSON QuickType where
         , ("postfix" .=) <$> postfixQuickType
         , ("precedence" .=) <$> precedenceQuickType
         , ("prefix" .=) <$> prefixQuickType
+        , ("PrimitiveKind" .=) <$> primitiveKindQuickType
         , ("print" .=) <$> printQuickType
         , ("printf" .=) <$> printfQuickType
         , ("printMembers" .=) <$> printMembersQuickType
@@ -4266,8 +4340,11 @@ instance ToJSON QuickType where
         , ("Self" .=) <$> selfQuickType
         , ("self" .=) <$> quickTypeSelfQuickType
         , ("Sendable" .=) <$> sendableQuickType
+        , ("SerialDescriptor" .=) <$> serialDescriptorQuickType
+        , ("Serializable" .=) <$> serializableQuickType
         , ("serialize" .=) <$> serializeQuickType
         , ("SerializerProvider" .=) <$> serializerProviderQuickType
+        , ("SerialName" .=) <$> serialNameQuickType
         , ("set" .=) <$> setQuickType
         , ("short" .=) <$> shortQuickType
         , ("signed" .=) <$> signedQuickType
@@ -4320,6 +4397,7 @@ instance ToJSON QuickType where
         , ("unowned" .=) <$> unownedQuickType
         , ("unsafe" .=) <$> unsafeQuickType
         , ("unsigned" .=) <$> unsignedQuickType
+        , ("UseSerializers" .=) <$> useSerializersQuickType
         , ("ushort" .=) <$> ushortQuickType
         , ("using" .=) <$> usingQuickType
         , ("Utf8JsonReader" .=) <$> utf8JSONReaderQuickType
@@ -4515,6 +4593,7 @@ instance FromJSON QuickType where
         <*> v .:! "JsonParser"
         <*> v .:! "JsonReader"
         <*> v .:! "JsonTokenType"
+        <*> v .:! "KSerializer"
         <*> v .:! "lambda"
         <*> v .:! "lazy"
         <*> v .:! "left"
@@ -4569,6 +4648,7 @@ instance FromJSON QuickType where
         <*> v .:! "postfix"
         <*> v .:! "precedence"
         <*> v .:! "prefix"
+        <*> v .:! "PrimitiveKind"
         <*> v .:! "print"
         <*> v .:! "printf"
         <*> v .:! "printMembers"
@@ -4603,8 +4683,11 @@ instance FromJSON QuickType where
         <*> v .:! "Self"
         <*> v .:! "self"
         <*> v .:! "Sendable"
+        <*> v .:! "SerialDescriptor"
+        <*> v .:! "Serializable"
         <*> v .:! "serialize"
         <*> v .:! "SerializerProvider"
+        <*> v .:! "SerialName"
         <*> v .:! "set"
         <*> v .:! "short"
         <*> v .:! "signed"
@@ -4657,6 +4740,7 @@ instance FromJSON QuickType where
         <*> v .:! "unowned"
         <*> v .:! "unsafe"
         <*> v .:! "unsigned"
+        <*> v .:! "UseSerializers"
         <*> v .:! "ushort"
         <*> v .:! "using"
         <*> v .:! "Utf8JsonReader"
@@ -6847,6 +6931,20 @@ instance ToJSON JSONWriter where
 instance FromJSON JSONWriter where
     parseJSON (Object _) = return JSONWriter
 
+instance ToJSON UnionKSerializer where
+    toJSON (DoubleInUnionKSerializer x) = toJSON x
+    toJSON (KSerializerInUnionKSerializer x) = toJSON x
+
+instance FromJSON UnionKSerializer where
+    parseJSON xs@(Number _) = (fmap DoubleInUnionKSerializer . parseJSON) xs
+    parseJSON xs@(Object _) = (fmap KSerializerInUnionKSerializer . parseJSON) xs
+
+instance ToJSON KSerializer where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON KSerializer where
+    parseJSON (Object _) = return KSerializer
+
 instance ToJSON UnionLambda where
     toJSON (DoubleInUnionLambda x) = toJSON x
     toJSON (LambdaInUnionLambda x) = toJSON x
@@ -7533,6 +7631,20 @@ instance ToJSON Prefix where
 instance FromJSON Prefix where
     parseJSON (Object _) = return Prefix
 
+instance ToJSON UnionPrimitiveKind where
+    toJSON (DoubleInUnionPrimitiveKind x) = toJSON x
+    toJSON (PrimitiveKindInUnionPrimitiveKind x) = toJSON x
+
+instance FromJSON UnionPrimitiveKind where
+    parseJSON xs@(Number _) = (fmap DoubleInUnionPrimitiveKind . parseJSON) xs
+    parseJSON xs@(Object _) = (fmap PrimitiveKindInUnionPrimitiveKind . parseJSON) xs
+
+instance ToJSON PrimitiveKind where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON PrimitiveKind where
+    parseJSON (Object _) = return PrimitiveKind
+
 instance ToJSON UnionPrint where
     toJSON (DoubleInUnionPrint x) = toJSON x
     toJSON (PrintInUnionPrint x) = toJSON x
@@ -8373,6 +8485,48 @@ instance ToJSON Sendable where
 instance FromJSON Sendable where
     parseJSON (Object _) = return Sendable
 
+instance ToJSON UnionSerialDescriptor where
+    toJSON (DoubleInUnionSerialDescriptor x) = toJSON x
+    toJSON (SerialDescriptorInUnionSerialDescriptor x) = toJSON x
+
+instance FromJSON UnionSerialDescriptor where
+    parseJSON xs@(Number _) = (fmap DoubleInUnionSerialDescriptor . parseJSON) xs
+    parseJSON xs@(Object _) = (fmap SerialDescriptorInUnionSerialDescriptor . parseJSON) xs
+
+instance ToJSON SerialDescriptor where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON SerialDescriptor where
+    parseJSON (Object _) = return SerialDescriptor
+
+instance ToJSON UnionSerialName where
+    toJSON (DoubleInUnionSerialName x) = toJSON x
+    toJSON (SerialNameInUnionSerialName x) = toJSON x
+
+instance FromJSON UnionSerialName where
+    parseJSON xs@(Number _) = (fmap DoubleInUnionSerialName . parseJSON) xs
+    parseJSON xs@(Object _) = (fmap SerialNameInUnionSerialName . parseJSON) xs
+
+instance ToJSON SerialName where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON SerialName where
+    parseJSON (Object _) = return SerialName
+
+instance ToJSON UnionSerializable where
+    toJSON (DoubleInUnionSerializable x) = toJSON x
+    toJSON (SerializableInUnionSerializable x) = toJSON x
+
+instance FromJSON UnionSerializable where
+    parseJSON xs@(Number _) = (fmap DoubleInUnionSerializable . parseJSON) xs
+    parseJSON xs@(Object _) = (fmap SerializableInUnionSerializable . parseJSON) xs
+
+instance ToJSON Serializable where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON Serializable where
+    parseJSON (Object _) = return Serializable
+
 instance ToJSON UnionSerialize where
     toJSON (DoubleInUnionSerialize x) = toJSON x
     toJSON (SerializeInUnionSerialize x) = toJSON x
@@ -9073,6 +9227,20 @@ instance ToJSON Unsigned where
 instance FromJSON Unsigned where
     parseJSON (Object _) = return Unsigned
 
+instance ToJSON UnionUseSerializers where
+    toJSON (DoubleInUnionUseSerializers x) = toJSON x
+    toJSON (UseSerializersInUnionUseSerializers x) = toJSON x
+
+instance FromJSON UnionUseSerializers where
+    parseJSON xs@(Number _) = (fmap DoubleInUnionUseSerializers . parseJSON) xs
+    parseJSON xs@(Object _) = (fmap UseSerializersInUnionUseSerializers . parseJSON) xs
+
+instance ToJSON UseSerializers where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON UseSerializers where
+    parseJSON (Object _) = return UseSerializers
+
 instance ToJSON UnionUshort where
     toJSON (DoubleInUnionUshort x) = toJSON x
     toJSON (UshortInUnionUshort x) = toJSON x
diff --git a/base/schema-java/test/inputs/schema/keyword-enum.schema/default/src/main/java/io/quicktype/Enum.java b/head/schema-java/test/inputs/schema/keyword-enum.schema/default/src/main/java/io/quicktype/Enum.java
index c6b4b45..ea6259c 100644
--- a/base/schema-java/test/inputs/schema/keyword-enum.schema/default/src/main/java/io/quicktype/Enum.java
+++ b/head/schema-java/test/inputs/schema/keyword-enum.schema/default/src/main/java/io/quicktype/Enum.java
@@ -4,7 +4,7 @@ import java.io.IOException;
 import com.fasterxml.jackson.annotation.*;
 
 public enum Enum {
-    EMPTY, BOOL, COMPLEX, IMAGINERY, ABSTRACT, ALIGNAS, ALIGNOF, AND, AND_EQ, ANY, ENUM_ANY, ARRAY, AS, ASM, ASSERT, ASSOCIATEDTYPE, ASSOCIATIVITY, ASYNC, ATOMIC, ATOMIC_CANCEL, ATOMIC_COMMIT, ATOMIC_NOEXCEPT, AUTO, AWAIT, BASE, BITAND, BITOR, ENUM_BOOL, PURPLE_BOOL, BOOLEAN, BREAK, BYCOPY, BYREF, BYTE, CALENDAR, CASE, CATCH, CHAN, CHAR, CHAR16_T, CHAR32_T, CHECKED, CLASS, ENUM_CLASS, CLONE, CO_AWAIT, CO_RETURN, CO_YIELD, CODABLE, CODING_KEY, CODING_KEYS, COMPL, CONCEPT, CONSOLE, CONST, CONST_CAST, CONSTEXPR, CONSTRUCTOR, CONTINUE, CONVENIENCE, CONVERT, CONVERTER, CULTURE_INFO, DATE, DATE_PARSE_HANDLING, DATE_FORMATTER, DATE_ONLY, DATE_ONLY_CONVERTER, DATE_TIME, DATE_TIME_STYLES, DEBUGGER, DECIMAL, DECLARE, DECLTYPE, DECODE_STRING, DECODER, DECODING_ERROR, DEF, DEFAULT, DEFER, DEINIT, DEL, DELEGATE, DELETE, DICT, DICTIONARY, DID_SET, DO, DOUBLE, DYNAMIC, DYNAMIC_CAST, ELIF, ELSE, ENCODE_QUICK_TYPE, ENCODER, ENUM, ENUM_VALUES, EQUATABLE, EQUALITY_CONTRACT, EVENT, EXCEPT, EXCEPTION, EXPLICIT, EXPORT, EXPOSING, EXTENDS, EXTENSION, EXTERN, FALLTHROUGH, FALSE, ENUM_FALSE, FILEPRIVATE, FINAL, FINALLY, FIXED, FLOAT, FOR, FOREACH, FORMAT_EXCEPTION, FRIEND, FROM, FROM_JSON, FUNC, FUNCTION, GET, GLOBAL, GO, GOTO, GUARD, HASHABLE, HASH_CODE, HASHER, HAS_OWN_PROPERTY, ID, IF, IMP, IMPLEMENTS, IMPLICIT, IMPORT, IN, INDIRECT, INFIX, INIT, INLINE, INOUT, INSTANCEOF, INT, INTERFACE, INTERNAL, ISO_DATE_TIME_OFFSET_CONVERTER, ITERABLE, IS, JDEC, JENC, JPIPE, JSON, JSON_CONVERTER, JSON_SERIALIZER, JSON_TOKEN, JSON_WRITER, JSON_ANY, JSON_CODING_KEY, JSON_DECODER, JSON_ENCODER, JSON_EXCEPTION, JSON_GENERATOR, JSON_NODE, JSON_NULL, JSON_PARSER, JSON_READER, JSON_TOKEN_TYPE, LAMBDA, LAZY, LEFT, LET, LIST, LOCALE, LOCK, LONG, MAP, MAP_ENTRY, METADATA_PROPERTY_HANDLING, MODULE, MUTABLE, MUTATING, NAMESPACE, NATIVE, NEW, NEWTONSOFT, NIL, NO, NOEXCEPT, NONATOMIC, NONE, ENUM_NONE, NONLOCAL, NONMUTATING, NS_OBJECT, NO_SUCH_METHOD, NOT, NOT_EQ, NS_ERROR, NS_STRING, NULL, ENUM_NULL, NULLPTR, NUMBER, OBJECT, OBJECT_MAPPER, OF, ONEWAY, OPEN, OPERATOR, OPTIONAL, OR, OR_EQ, OUT, OVERRIDE, PACKAGE, PARAMS, PASS, PORT, POSTFIX, PRECEDENCE, PREFIX, PRINT, PRINTF, PRINT_MEMBERS, PRIVATE, PROTECTED, PROTOCOL, ENUM_PROTOCOL, PUBLIC, QUICKTYPE, RAISE, RANGE, READONLY, REF, REG_EXP, REGISTER, REINTERPRET_CAST, REPEAT, REQUIRE, REQUIRED, REQUIRES, RESTRICT, RETAIN, RETHROWS, RETURN, RIGHT, RUNTIME_TYPE, S, SBYTE, SEALED, SEL, SELECT, SELF, ENUM_SELF, SENDABLE, SERIALIZE, SERIALIZER_PROVIDER, SET, SHORT, SIGNED, SIMPLE_MODULE, SIZEOF, STACKALLOC, STANDARDS, STATIC, STATIC_ASSERT, STATIC_CAST, STD_DESERIALIZER, STD_SERIALIZER, STRICTFP, STRING, STRUCT, SUBSCRIPT, SUPER, SWITCH, SYMBOL, SYNCHRONIZED, SYSTEM, TEMPLATE, THEN, THIS, THREAD_LOCAL, THROW, THROWS, TIME_ONLY, TIME_ONLY_CONVERTER, TIME_ZONE, TO_JSON, TOP_LEVEL, TO_STRING, TRANSIENT, TRUE, ENUM_TRUE, TRY, TYPE, ENUM_TYPE, TYPEALIAS, TYPEDEF, TYPEID, TYPENAME, TYPEOF, UINT, ULONG, UNCHECKED, UNDEFINED, UNION, UNOWNED, UNSAFE, UNSIGNED, USHORT, USING, UTF8_JSON_READER, UTF8_JSON_WRITER, UUID, VAR, VIRTUAL, VOID, VOLATILE, WCHAR_T, WEAK, WHERE, WHILE, WILL_SET, WITH, XOR, XOR_EQ, YES, YIELD, DUMMY;
+    EMPTY, BOOL, COMPLEX, IMAGINERY, ABSTRACT, ALIGNAS, ALIGNOF, AND, AND_EQ, ANY, ENUM_ANY, ARRAY, AS, ASM, ASSERT, ASSOCIATEDTYPE, ASSOCIATIVITY, ASYNC, ATOMIC, ATOMIC_CANCEL, ATOMIC_COMMIT, ATOMIC_NOEXCEPT, AUTO, AWAIT, BASE, BITAND, BITOR, ENUM_BOOL, PURPLE_BOOL, BOOLEAN, BREAK, BYCOPY, BYREF, BYTE, CALENDAR, CASE, CATCH, CHAN, CHAR, CHAR16_T, CHAR32_T, CHECKED, CLASS, ENUM_CLASS, CLONE, CO_AWAIT, CO_RETURN, CO_YIELD, CODABLE, CODING_KEY, CODING_KEYS, COMPL, CONCEPT, CONSOLE, CONST, CONST_CAST, CONSTEXPR, CONSTRUCTOR, CONTINUE, CONVENIENCE, CONVERT, CONVERTER, CULTURE_INFO, DATE, DATE_PARSE_HANDLING, DATE_FORMATTER, DATE_ONLY, DATE_ONLY_CONVERTER, DATE_TIME, DATE_TIME_STYLES, DEBUGGER, DECIMAL, DECLARE, DECLTYPE, DECODE_STRING, DECODER, DECODING_ERROR, DEF, DEFAULT, DEFER, DEINIT, DEL, DELEGATE, DELETE, DICT, DICTIONARY, DID_SET, DO, DOUBLE, DYNAMIC, DYNAMIC_CAST, ELIF, ELSE, ENCODE_QUICK_TYPE, ENCODER, ENUM, ENUM_VALUES, EQUATABLE, EQUALITY_CONTRACT, EVENT, EXCEPT, EXCEPTION, EXPLICIT, EXPORT, EXPOSING, EXTENDS, EXTENSION, EXTERN, FALLTHROUGH, FALSE, ENUM_FALSE, FILEPRIVATE, FINAL, FINALLY, FIXED, FLOAT, FOR, FOREACH, FORMAT_EXCEPTION, FRIEND, FROM, FROM_JSON, FUNC, FUNCTION, GET, GLOBAL, GO, GOTO, GUARD, HASHABLE, HASH_CODE, HASHER, HAS_OWN_PROPERTY, ID, IF, IMP, IMPLEMENTS, IMPLICIT, IMPORT, IN, INDIRECT, INFIX, INIT, INLINE, INOUT, INSTANCEOF, INT, INTERFACE, INTERNAL, ISO_DATE_TIME_OFFSET_CONVERTER, ITERABLE, IS, JDEC, JENC, JPIPE, JSON, JSON_CONVERTER, JSON_SERIALIZER, JSON_TOKEN, JSON_WRITER, JSON_ANY, JSON_CODING_KEY, JSON_DECODER, JSON_ENCODER, JSON_EXCEPTION, JSON_GENERATOR, JSON_NODE, JSON_NULL, JSON_PARSER, JSON_READER, JSON_TOKEN_TYPE, LAMBDA, LAZY, LEFT, LET, LIST, LOCALE, LOCK, LONG, MAP, MAP_ENTRY, METADATA_PROPERTY_HANDLING, MODULE, MUTABLE, MUTATING, NAMESPACE, NATIVE, NEW, NEWTONSOFT, NIL, NO, NOEXCEPT, NONATOMIC, NONE, ENUM_NONE, NONLOCAL, NONMUTATING, NS_OBJECT, NO_SUCH_METHOD, NOT, NOT_EQ, NS_ERROR, NS_STRING, NULL, ENUM_NULL, NULLPTR, NUMBER, OBJECT, OBJECT_MAPPER, OF, ONEWAY, OPEN, OPERATOR, OPTIONAL, OR, OR_EQ, OUT, OVERRIDE, PACKAGE, PARAMS, PASS, PORT, POSTFIX, PRECEDENCE, PREFIX, PRINT, PRINTF, PRINT_MEMBERS, PRIVATE, PROTECTED, PROTOCOL, ENUM_PROTOCOL, PUBLIC, QUICKTYPE, RAISE, RANGE, READONLY, REF, REG_EXP, REGISTER, REINTERPRET_CAST, REPEAT, REQUIRE, REQUIRED, REQUIRES, RESTRICT, RETAIN, RETHROWS, RETURN, RIGHT, RUNTIME_TYPE, S, SBYTE, SEALED, SEL, SELECT, SELF, SERIALIZABLE, ENUM_SELF, SENDABLE, SERIALIZE, SERIAL_NAME, K_SERIALIZER, PRIMITIVE_KIND, SERIAL_DESCRIPTOR, SERIALIZER_PROVIDER, SET, SHORT, SIGNED, SIMPLE_MODULE, SIZEOF, STACKALLOC, STANDARDS, STATIC, STATIC_ASSERT, STATIC_CAST, STD_DESERIALIZER, STD_SERIALIZER, STRICTFP, STRING, STRUCT, SUBSCRIPT, SUPER, SWITCH, SYMBOL, SYNCHRONIZED, SYSTEM, TEMPLATE, THEN, THIS, THREAD_LOCAL, THROW, THROWS, TIME_ONLY, TIME_ONLY_CONVERTER, TIME_ZONE, TO_JSON, TOP_LEVEL, TO_STRING, TRANSIENT, TRUE, ENUM_TRUE, TRY, TYPE, ENUM_TYPE, TYPEALIAS, TYPEDEF, TYPEID, TYPENAME, TYPEOF, UINT, ULONG, UNCHECKED, UNDEFINED, UNION, USE_SERIALIZERS, UNOWNED, UNSAFE, UNSIGNED, USHORT, USING, UTF8_JSON_READER, UTF8_JSON_WRITER, UUID, VAR, VIRTUAL, VOID, VOLATILE, WCHAR_T, WEAK, WHERE, WHILE, WILL_SET, WITH, XOR, XOR_EQ, YES, YIELD, DUMMY;
 
     @JsonValue
     public String toValue() {
@@ -266,9 +266,14 @@ public enum Enum {
             case SEL: return "SEL";
             case SELECT: return "select";
             case SELF: return "Self";
+            case SERIALIZABLE: return "Serializable";
             case ENUM_SELF: return "self";
             case SENDABLE: return "Sendable";
             case SERIALIZE: return "serialize";
+            case SERIAL_NAME: return "SerialName";
+            case K_SERIALIZER: return "KSerializer";
+            case PRIMITIVE_KIND: return "PrimitiveKind";
+            case SERIAL_DESCRIPTOR: return "SerialDescriptor";
             case SERIALIZER_PROVIDER: return "SerializerProvider";
             case SET: return "set";
             case SHORT: return "short";
@@ -319,6 +324,7 @@ public enum Enum {
             case UNCHECKED: return "unchecked";
             case UNDEFINED: return "undefined";
             case UNION: return "union";
+            case USE_SERIALIZERS: return "UseSerializers";
             case UNOWNED: return "unowned";
             case UNSAFE: return "unsafe";
             case UNSIGNED: return "unsigned";
@@ -605,9 +611,14 @@ public enum Enum {
         if (value.equals("SEL")) return SEL;
         if (value.equals("select")) return SELECT;
         if (value.equals("Self")) return SELF;
+        if (value.equals("Serializable")) return SERIALIZABLE;
         if (value.equals("self")) return ENUM_SELF;
         if (value.equals("Sendable")) return SENDABLE;
         if (value.equals("serialize")) return SERIALIZE;
+        if (value.equals("SerialName")) return SERIAL_NAME;
+        if (value.equals("KSerializer")) return K_SERIALIZER;
+        if (value.equals("PrimitiveKind")) return PRIMITIVE_KIND;
+        if (value.equals("SerialDescriptor")) return SERIAL_DESCRIPTOR;
         if (value.equals("SerializerProvider")) return SERIALIZER_PROVIDER;
         if (value.equals("set")) return SET;
         if (value.equals("short")) return SHORT;
@@ -658,6 +669,7 @@ public enum Enum {
         if (value.equals("unchecked")) return UNCHECKED;
         if (value.equals("undefined")) return UNDEFINED;
         if (value.equals("union")) return UNION;
+        if (value.equals("UseSerializers")) return USE_SERIALIZERS;
         if (value.equals("unowned")) return UNOWNED;
         if (value.equals("unsafe")) return UNSAFE;
         if (value.equals("unsigned")) return UNSIGNED;
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/KSerializer.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/KSerializer.java
new file mode 100644
index 0000000..5de691c
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/KSerializer.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class KSerializer {
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/PrimitiveKind.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/PrimitiveKind.java
new file mode 100644
index 0000000..2b7da96
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/PrimitiveKind.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class PrimitiveKind {
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerialDescriptor.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerialDescriptor.java
new file mode 100644
index 0000000..207ca5c
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerialDescriptor.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class SerialDescriptor {
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerialName.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerialName.java
new file mode 100644
index 0000000..3cf1bf1
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerialName.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class SerialName {
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/Serializable.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/Serializable.java
new file mode 100644
index 0000000..2ebc5e4
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/Serializable.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class Serializable {
+}
diff --git a/base/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/TopLevel.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/TopLevel.java
index a88d33d..9df2c78 100644
--- a/base/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/TopLevel.java
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/TopLevel.java
@@ -175,6 +175,7 @@ public class TopLevel {
     private UnionJSONParser jsonParser;
     private UnionJSONReader jsonReader;
     private UnionJSONTokenType jsonTokenType;
+    private UnionKSerializer kSerializer;
     private UnionLambda lambda;
     private UnionLazy lazy;
     private UnionLeft left;
@@ -229,6 +230,7 @@ public class TopLevel {
     private UnionPostfix postfix;
     private UnionPrecedence precedence;
     private UnionPrefix prefix;
+    private UnionPrimitiveKind primitiveKind;
     private UnionPrint print;
     private UnionPrintf printf;
     private UnionPrintMembers printMembers;
@@ -263,8 +265,11 @@ public class TopLevel {
     private UnionSelf self;
     private UnionSelfUnion topLevelSelf;
     private UnionSendable sendable;
+    private UnionSerialDescriptor serialDescriptor;
+    private UnionSerializable serializable;
     private UnionSerialize serialize;
     private UnionSerializerProvider serializerProvider;
+    private UnionSerialName serialName;
     private UnionSet set;
     private UnionShort topLevelShort;
     private UnionSigned signed;
@@ -317,6 +322,7 @@ public class TopLevel {
     private UnionUnowned unowned;
     private UnionUnsafe unsafe;
     private UnionUnsigned unsigned;
+    private UnionUseSerializers useSerializers;
     private UnionUshort ushort;
     private UnionUsing using;
     private UnionUtf8JSONReader utf8JSONReader;
@@ -1197,6 +1203,11 @@ public class TopLevel {
     @JsonProperty("JsonTokenType")
     public void setJSONTokenType(UnionJSONTokenType value) { this.jsonTokenType = value; }
 
+    @JsonProperty("KSerializer")
+    public UnionKSerializer getKSerializer() { return kSerializer; }
+    @JsonProperty("KSerializer")
+    public void setKSerializer(UnionKSerializer value) { this.kSerializer = value; }
+
     @JsonProperty("lambda")
     public UnionLambda getLambda() { return lambda; }
     @JsonProperty("lambda")
@@ -1467,6 +1478,11 @@ public class TopLevel {
     @JsonProperty("prefix")
     public void setPrefix(UnionPrefix value) { this.prefix = value; }
 
+    @JsonProperty("PrimitiveKind")
+    public UnionPrimitiveKind getPrimitiveKind() { return primitiveKind; }
+    @JsonProperty("PrimitiveKind")
+    public void setPrimitiveKind(UnionPrimitiveKind value) { this.primitiveKind = value; }
+
     @JsonProperty("print")
     public UnionPrint getPrint() { return print; }
     @JsonProperty("print")
@@ -1637,6 +1653,16 @@ public class TopLevel {
     @JsonProperty("Sendable")
     public void setSendable(UnionSendable value) { this.sendable = value; }
 
+    @JsonProperty("SerialDescriptor")
+    public UnionSerialDescriptor getSerialDescriptor() { return serialDescriptor; }
+    @JsonProperty("SerialDescriptor")
+    public void setSerialDescriptor(UnionSerialDescriptor value) { this.serialDescriptor = value; }
+
+    @JsonProperty("Serializable")
+    public UnionSerializable getSerializable() { return serializable; }
+    @JsonProperty("Serializable")
+    public void setSerializable(UnionSerializable value) { this.serializable = value; }
+
     @JsonProperty("serialize")
     public UnionSerialize getSerialize() { return serialize; }
     @JsonProperty("serialize")
@@ -1647,6 +1673,11 @@ public class TopLevel {
     @JsonProperty("SerializerProvider")
     public void setSerializerProvider(UnionSerializerProvider value) { this.serializerProvider = value; }
 
+    @JsonProperty("SerialName")
+    public UnionSerialName getSerialName() { return serialName; }
+    @JsonProperty("SerialName")
+    public void setSerialName(UnionSerialName value) { this.serialName = value; }
+
     @JsonProperty("set")
     public UnionSet getSet() { return set; }
     @JsonProperty("set")
@@ -1907,6 +1938,11 @@ public class TopLevel {
     @JsonProperty("unsigned")
     public void setUnsigned(UnionUnsigned value) { this.unsigned = value; }
 
+    @JsonProperty("UseSerializers")
+    public UnionUseSerializers getUseSerializers() { return useSerializers; }
+    @JsonProperty("UseSerializers")
+    public void setUseSerializers(UnionUseSerializers value) { this.useSerializers = value; }
+
     @JsonProperty("ushort")
     public UnionUshort getUshort() { return ushort; }
     @JsonProperty("ushort")
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionKSerializer.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionKSerializer.java
new file mode 100644
index 0000000..10c6c50
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionKSerializer.java
@@ -0,0 +1,50 @@
+package io.quicktype;
+
+import java.io.IOException;
+import java.io.IOException;
+import com.fasterxml.jackson.core.*;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.annotation.*;
+import com.fasterxml.jackson.core.type.*;
+
+@JsonDeserialize(using = UnionKSerializer.Deserializer.class)
+@JsonSerialize(using = UnionKSerializer.Serializer.class)
+public class UnionKSerializer {
+    public Double doubleValue;
+    public KSerializer kSerializerValue;
+
+    static class Deserializer extends JsonDeserializer<UnionKSerializer> {
+        @Override
+        public UnionKSerializer deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionKSerializer value = new UnionKSerializer();
+            switch (jsonParser.currentToken()) {
+                case VALUE_NULL:
+                    break;
+                case VALUE_NUMBER_INT:
+                case VALUE_NUMBER_FLOAT:
+                    value.doubleValue = jsonParser.readValueAs(Double.class);
+                    break;
+                case START_OBJECT:
+                    value.kSerializerValue = jsonParser.readValueAs(KSerializer.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionKSerializer");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionKSerializer> {
+        @Override
+        public void serialize(UnionKSerializer obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.kSerializerValue != null) {
+                jsonGenerator.writeObject(obj.kSerializerValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionPrimitiveKind.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionPrimitiveKind.java
new file mode 100644
index 0000000..af30b15
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionPrimitiveKind.java
@@ -0,0 +1,50 @@
+package io.quicktype;
+
+import java.io.IOException;
+import java.io.IOException;
+import com.fasterxml.jackson.core.*;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.annotation.*;
+import com.fasterxml.jackson.core.type.*;
+
+@JsonDeserialize(using = UnionPrimitiveKind.Deserializer.class)
+@JsonSerialize(using = UnionPrimitiveKind.Serializer.class)
+public class UnionPrimitiveKind {
+    public Double doubleValue;
+    public PrimitiveKind primitiveKindValue;
+
+    static class Deserializer extends JsonDeserializer<UnionPrimitiveKind> {
+        @Override
+        public UnionPrimitiveKind deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionPrimitiveKind value = new UnionPrimitiveKind();
+            switch (jsonParser.currentToken()) {
+                case VALUE_NULL:
+                    break;
+                case VALUE_NUMBER_INT:
+                case VALUE_NUMBER_FLOAT:
+                    value.doubleValue = jsonParser.readValueAs(Double.class);
+                    break;
+                case START_OBJECT:
+                    value.primitiveKindValue = jsonParser.readValueAs(PrimitiveKind.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionPrimitiveKind");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionPrimitiveKind> {
+        @Override
+        public void serialize(UnionPrimitiveKind obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.primitiveKindValue != null) {
+                jsonGenerator.writeObject(obj.primitiveKindValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerialDescriptor.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerialDescriptor.java
new file mode 100644
index 0000000..dafd200
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerialDescriptor.java
@@ -0,0 +1,50 @@
+package io.quicktype;
+
+import java.io.IOException;
+import java.io.IOException;
+import com.fasterxml.jackson.core.*;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.annotation.*;
+import com.fasterxml.jackson.core.type.*;
+
+@JsonDeserialize(using = UnionSerialDescriptor.Deserializer.class)
+@JsonSerialize(using = UnionSerialDescriptor.Serializer.class)
+public class UnionSerialDescriptor {
+    public Double doubleValue;
+    public SerialDescriptor serialDescriptorValue;
+
+    static class Deserializer extends JsonDeserializer<UnionSerialDescriptor> {
+        @Override
+        public UnionSerialDescriptor deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionSerialDescriptor value = new UnionSerialDescriptor();
+            switch (jsonParser.currentToken()) {
+                case VALUE_NULL:
+                    break;
+                case VALUE_NUMBER_INT:
+                case VALUE_NUMBER_FLOAT:
+                    value.doubleValue = jsonParser.readValueAs(Double.class);
+                    break;
+                case START_OBJECT:
+                    value.serialDescriptorValue = jsonParser.readValueAs(SerialDescriptor.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionSerialDescriptor");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionSerialDescriptor> {
+        @Override
+        public void serialize(UnionSerialDescriptor obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.serialDescriptorValue != null) {
+                jsonGenerator.writeObject(obj.serialDescriptorValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerialName.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerialName.java
new file mode 100644
index 0000000..4c416b9
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerialName.java
@@ -0,0 +1,50 @@
+package io.quicktype;
+
+import java.io.IOException;
+import java.io.IOException;
+import com.fasterxml.jackson.core.*;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.annotation.*;
+import com.fasterxml.jackson.core.type.*;
+
+@JsonDeserialize(using = UnionSerialName.Deserializer.class)
+@JsonSerialize(using = UnionSerialName.Serializer.class)
+public class UnionSerialName {
+    public Double doubleValue;
+    public SerialName serialNameValue;
+
+    static class Deserializer extends JsonDeserializer<UnionSerialName> {
+        @Override
+        public UnionSerialName deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionSerialName value = new UnionSerialName();
+            switch (jsonParser.currentToken()) {
+                case VALUE_NULL:
+                    break;
+                case VALUE_NUMBER_INT:
+                case VALUE_NUMBER_FLOAT:
+                    value.doubleValue = jsonParser.readValueAs(Double.class);
+                    break;
+                case START_OBJECT:
+                    value.serialNameValue = jsonParser.readValueAs(SerialName.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionSerialName");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionSerialName> {
+        @Override
+        public void serialize(UnionSerialName obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.serialNameValue != null) {
+                jsonGenerator.writeObject(obj.serialNameValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerializable.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerializable.java
new file mode 100644
index 0000000..48ea392
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerializable.java
@@ -0,0 +1,50 @@
+package io.quicktype;
+
+import java.io.IOException;
+import java.io.IOException;
+import com.fasterxml.jackson.core.*;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.annotation.*;
+import com.fasterxml.jackson.core.type.*;
+
+@JsonDeserialize(using = UnionSerializable.Deserializer.class)
+@JsonSerialize(using = UnionSerializable.Serializer.class)
+public class UnionSerializable {
+    public Double doubleValue;
+    public Serializable serializableValue;
+
+    static class Deserializer extends JsonDeserializer<UnionSerializable> {
+        @Override
+        public UnionSerializable deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionSerializable value = new UnionSerializable();
+            switch (jsonParser.currentToken()) {
+                case VALUE_NULL:
+                    break;
+                case VALUE_NUMBER_INT:
+                case VALUE_NUMBER_FLOAT:
+                    value.doubleValue = jsonParser.readValueAs(Double.class);
+                    break;
+                case START_OBJECT:
+                    value.serializableValue = jsonParser.readValueAs(Serializable.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionSerializable");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionSerializable> {
+        @Override
+        public void serialize(UnionSerializable obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.serializableValue != null) {
+                jsonGenerator.writeObject(obj.serializableValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionUseSerializers.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionUseSerializers.java
new file mode 100644
index 0000000..6079834
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionUseSerializers.java
@@ -0,0 +1,50 @@
+package io.quicktype;
+
+import java.io.IOException;
+import java.io.IOException;
+import com.fasterxml.jackson.core.*;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.annotation.*;
+import com.fasterxml.jackson.core.type.*;
+
+@JsonDeserialize(using = UnionUseSerializers.Deserializer.class)
+@JsonSerialize(using = UnionUseSerializers.Serializer.class)
+public class UnionUseSerializers {
+    public Double doubleValue;
+    public UseSerializers useSerializersValue;
+
+    static class Deserializer extends JsonDeserializer<UnionUseSerializers> {
+        @Override
+        public UnionUseSerializers deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionUseSerializers value = new UnionUseSerializers();
+            switch (jsonParser.currentToken()) {
+                case VALUE_NULL:
+                    break;
+                case VALUE_NUMBER_INT:
+                case VALUE_NUMBER_FLOAT:
+                    value.doubleValue = jsonParser.readValueAs(Double.class);
+                    break;
+                case START_OBJECT:
+                    value.useSerializersValue = jsonParser.readValueAs(UseSerializers.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionUseSerializers");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionUseSerializers> {
+        @Override
+        public void serialize(UnionUseSerializers obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.useSerializersValue != null) {
+                jsonGenerator.writeObject(obj.useSerializersValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UseSerializers.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UseSerializers.java
new file mode 100644
index 0000000..bffb41f
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UseSerializers.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class UseSerializers {
+}
diff --git a/base/schema-java-datetime-legacy/test/inputs/schema/keyword-enum.schema/default/src/main/java/io/quicktype/Enum.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-enum.schema/default/src/main/java/io/quicktype/Enum.java
index c6b4b45..ea6259c 100644
--- a/base/schema-java-datetime-legacy/test/inputs/schema/keyword-enum.schema/default/src/main/java/io/quicktype/Enum.java
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-enum.schema/default/src/main/java/io/quicktype/Enum.java
@@ -4,7 +4,7 @@ import java.io.IOException;
 import com.fasterxml.jackson.annotation.*;
 
 public enum Enum {
-    EMPTY, BOOL, COMPLEX, IMAGINERY, ABSTRACT, ALIGNAS, ALIGNOF, AND, AND_EQ, ANY, ENUM_ANY, ARRAY, AS, ASM, ASSERT, ASSOCIATEDTYPE, ASSOCIATIVITY, ASYNC, ATOMIC, ATOMIC_CANCEL, ATOMIC_COMMIT, ATOMIC_NOEXCEPT, AUTO, AWAIT, BASE, BITAND, BITOR, ENUM_BOOL, PURPLE_BOOL, BOOLEAN, BREAK, BYCOPY, BYREF, BYTE, CALENDAR, CASE, CATCH, CHAN, CHAR, CHAR16_T, CHAR32_T, CHECKED, CLASS, ENUM_CLASS, CLONE, CO_AWAIT, CO_RETURN, CO_YIELD, CODABLE, CODING_KEY, CODING_KEYS, COMPL, CONCEPT, CONSOLE, CONST, CONST_CAST, CONSTEXPR, CONSTRUCTOR, CONTINUE, CONVENIENCE, CONVERT, CONVERTER, CULTURE_INFO, DATE, DATE_PARSE_HANDLING, DATE_FORMATTER, DATE_ONLY, DATE_ONLY_CONVERTER, DATE_TIME, DATE_TIME_STYLES, DEBUGGER, DECIMAL, DECLARE, DECLTYPE, DECODE_STRING, DECODER, DECODING_ERROR, DEF, DEFAULT, DEFER, DEINIT, DEL, DELEGATE, DELETE, DICT, DICTIONARY, DID_SET, DO, DOUBLE, DYNAMIC, DYNAMIC_CAST, ELIF, ELSE, ENCODE_QUICK_TYPE, ENCODER, ENUM, ENUM_VALUES, EQUATABLE, EQUALITY_CONTRACT, EVENT, EXCEPT, EXCEPTION, EXPLICIT, EXPORT, EXPOSING, EXTENDS, EXTENSION, EXTERN, FALLTHROUGH, FALSE, ENUM_FALSE, FILEPRIVATE, FINAL, FINALLY, FIXED, FLOAT, FOR, FOREACH, FORMAT_EXCEPTION, FRIEND, FROM, FROM_JSON, FUNC, FUNCTION, GET, GLOBAL, GO, GOTO, GUARD, HASHABLE, HASH_CODE, HASHER, HAS_OWN_PROPERTY, ID, IF, IMP, IMPLEMENTS, IMPLICIT, IMPORT, IN, INDIRECT, INFIX, INIT, INLINE, INOUT, INSTANCEOF, INT, INTERFACE, INTERNAL, ISO_DATE_TIME_OFFSET_CONVERTER, ITERABLE, IS, JDEC, JENC, JPIPE, JSON, JSON_CONVERTER, JSON_SERIALIZER, JSON_TOKEN, JSON_WRITER, JSON_ANY, JSON_CODING_KEY, JSON_DECODER, JSON_ENCODER, JSON_EXCEPTION, JSON_GENERATOR, JSON_NODE, JSON_NULL, JSON_PARSER, JSON_READER, JSON_TOKEN_TYPE, LAMBDA, LAZY, LEFT, LET, LIST, LOCALE, LOCK, LONG, MAP, MAP_ENTRY, METADATA_PROPERTY_HANDLING, MODULE, MUTABLE, MUTATING, NAMESPACE, NATIVE, NEW, NEWTONSOFT, NIL, NO, NOEXCEPT, NONATOMIC, NONE, ENUM_NONE, NONLOCAL, NONMUTATING, NS_OBJECT, NO_SUCH_METHOD, NOT, NOT_EQ, NS_ERROR, NS_STRING, NULL, ENUM_NULL, NULLPTR, NUMBER, OBJECT, OBJECT_MAPPER, OF, ONEWAY, OPEN, OPERATOR, OPTIONAL, OR, OR_EQ, OUT, OVERRIDE, PACKAGE, PARAMS, PASS, PORT, POSTFIX, PRECEDENCE, PREFIX, PRINT, PRINTF, PRINT_MEMBERS, PRIVATE, PROTECTED, PROTOCOL, ENUM_PROTOCOL, PUBLIC, QUICKTYPE, RAISE, RANGE, READONLY, REF, REG_EXP, REGISTER, REINTERPRET_CAST, REPEAT, REQUIRE, REQUIRED, REQUIRES, RESTRICT, RETAIN, RETHROWS, RETURN, RIGHT, RUNTIME_TYPE, S, SBYTE, SEALED, SEL, SELECT, SELF, ENUM_SELF, SENDABLE, SERIALIZE, SERIALIZER_PROVIDER, SET, SHORT, SIGNED, SIMPLE_MODULE, SIZEOF, STACKALLOC, STANDARDS, STATIC, STATIC_ASSERT, STATIC_CAST, STD_DESERIALIZER, STD_SERIALIZER, STRICTFP, STRING, STRUCT, SUBSCRIPT, SUPER, SWITCH, SYMBOL, SYNCHRONIZED, SYSTEM, TEMPLATE, THEN, THIS, THREAD_LOCAL, THROW, THROWS, TIME_ONLY, TIME_ONLY_CONVERTER, TIME_ZONE, TO_JSON, TOP_LEVEL, TO_STRING, TRANSIENT, TRUE, ENUM_TRUE, TRY, TYPE, ENUM_TYPE, TYPEALIAS, TYPEDEF, TYPEID, TYPENAME, TYPEOF, UINT, ULONG, UNCHECKED, UNDEFINED, UNION, UNOWNED, UNSAFE, UNSIGNED, USHORT, USING, UTF8_JSON_READER, UTF8_JSON_WRITER, UUID, VAR, VIRTUAL, VOID, VOLATILE, WCHAR_T, WEAK, WHERE, WHILE, WILL_SET, WITH, XOR, XOR_EQ, YES, YIELD, DUMMY;
+    EMPTY, BOOL, COMPLEX, IMAGINERY, ABSTRACT, ALIGNAS, ALIGNOF, AND, AND_EQ, ANY, ENUM_ANY, ARRAY, AS, ASM, ASSERT, ASSOCIATEDTYPE, ASSOCIATIVITY, ASYNC, ATOMIC, ATOMIC_CANCEL, ATOMIC_COMMIT, ATOMIC_NOEXCEPT, AUTO, AWAIT, BASE, BITAND, BITOR, ENUM_BOOL, PURPLE_BOOL, BOOLEAN, BREAK, BYCOPY, BYREF, BYTE, CALENDAR, CASE, CATCH, CHAN, CHAR, CHAR16_T, CHAR32_T, CHECKED, CLASS, ENUM_CLASS, CLONE, CO_AWAIT, CO_RETURN, CO_YIELD, CODABLE, CODING_KEY, CODING_KEYS, COMPL, CONCEPT, CONSOLE, CONST, CONST_CAST, CONSTEXPR, CONSTRUCTOR, CONTINUE, CONVENIENCE, CONVERT, CONVERTER, CULTURE_INFO, DATE, DATE_PARSE_HANDLING, DATE_FORMATTER, DATE_ONLY, DATE_ONLY_CONVERTER, DATE_TIME, DATE_TIME_STYLES, DEBUGGER, DECIMAL, DECLARE, DECLTYPE, DECODE_STRING, DECODER, DECODING_ERROR, DEF, DEFAULT, DEFER, DEINIT, DEL, DELEGATE, DELETE, DICT, DICTIONARY, DID_SET, DO, DOUBLE, DYNAMIC, DYNAMIC_CAST, ELIF, ELSE, ENCODE_QUICK_TYPE, ENCODER, ENUM, ENUM_VALUES, EQUATABLE, EQUALITY_CONTRACT, EVENT, EXCEPT, EXCEPTION, EXPLICIT, EXPORT, EXPOSING, EXTENDS, EXTENSION, EXTERN, FALLTHROUGH, FALSE, ENUM_FALSE, FILEPRIVATE, FINAL, FINALLY, FIXED, FLOAT, FOR, FOREACH, FORMAT_EXCEPTION, FRIEND, FROM, FROM_JSON, FUNC, FUNCTION, GET, GLOBAL, GO, GOTO, GUARD, HASHABLE, HASH_CODE, HASHER, HAS_OWN_PROPERTY, ID, IF, IMP, IMPLEMENTS, IMPLICIT, IMPORT, IN, INDIRECT, INFIX, INIT, INLINE, INOUT, INSTANCEOF, INT, INTERFACE, INTERNAL, ISO_DATE_TIME_OFFSET_CONVERTER, ITERABLE, IS, JDEC, JENC, JPIPE, JSON, JSON_CONVERTER, JSON_SERIALIZER, JSON_TOKEN, JSON_WRITER, JSON_ANY, JSON_CODING_KEY, JSON_DECODER, JSON_ENCODER, JSON_EXCEPTION, JSON_GENERATOR, JSON_NODE, JSON_NULL, JSON_PARSER, JSON_READER, JSON_TOKEN_TYPE, LAMBDA, LAZY, LEFT, LET, LIST, LOCALE, LOCK, LONG, MAP, MAP_ENTRY, METADATA_PROPERTY_HANDLING, MODULE, MUTABLE, MUTATING, NAMESPACE, NATIVE, NEW, NEWTONSOFT, NIL, NO, NOEXCEPT, NONATOMIC, NONE, ENUM_NONE, NONLOCAL, NONMUTATING, NS_OBJECT, NO_SUCH_METHOD, NOT, NOT_EQ, NS_ERROR, NS_STRING, NULL, ENUM_NULL, NULLPTR, NUMBER, OBJECT, OBJECT_MAPPER, OF, ONEWAY, OPEN, OPERATOR, OPTIONAL, OR, OR_EQ, OUT, OVERRIDE, PACKAGE, PARAMS, PASS, PORT, POSTFIX, PRECEDENCE, PREFIX, PRINT, PRINTF, PRINT_MEMBERS, PRIVATE, PROTECTED, PROTOCOL, ENUM_PROTOCOL, PUBLIC, QUICKTYPE, RAISE, RANGE, READONLY, REF, REG_EXP, REGISTER, REINTERPRET_CAST, REPEAT, REQUIRE, REQUIRED, REQUIRES, RESTRICT, RETAIN, RETHROWS, RETURN, RIGHT, RUNTIME_TYPE, S, SBYTE, SEALED, SEL, SELECT, SELF, SERIALIZABLE, ENUM_SELF, SENDABLE, SERIALIZE, SERIAL_NAME, K_SERIALIZER, PRIMITIVE_KIND, SERIAL_DESCRIPTOR, SERIALIZER_PROVIDER, SET, SHORT, SIGNED, SIMPLE_MODULE, SIZEOF, STACKALLOC, STANDARDS, STATIC, STATIC_ASSERT, STATIC_CAST, STD_DESERIALIZER, STD_SERIALIZER, STRICTFP, STRING, STRUCT, SUBSCRIPT, SUPER, SWITCH, SYMBOL, SYNCHRONIZED, SYSTEM, TEMPLATE, THEN, THIS, THREAD_LOCAL, THROW, THROWS, TIME_ONLY, TIME_ONLY_CONVERTER, TIME_ZONE, TO_JSON, TOP_LEVEL, TO_STRING, TRANSIENT, TRUE, ENUM_TRUE, TRY, TYPE, ENUM_TYPE, TYPEALIAS, TYPEDEF, TYPEID, TYPENAME, TYPEOF, UINT, ULONG, UNCHECKED, UNDEFINED, UNION, USE_SERIALIZERS, UNOWNED, UNSAFE, UNSIGNED, USHORT, USING, UTF8_JSON_READER, UTF8_JSON_WRITER, UUID, VAR, VIRTUAL, VOID, VOLATILE, WCHAR_T, WEAK, WHERE, WHILE, WILL_SET, WITH, XOR, XOR_EQ, YES, YIELD, DUMMY;
 
     @JsonValue
     public String toValue() {
@@ -266,9 +266,14 @@ public enum Enum {
             case SEL: return "SEL";
             case SELECT: return "select";
             case SELF: return "Self";
+            case SERIALIZABLE: return "Serializable";
             case ENUM_SELF: return "self";
             case SENDABLE: return "Sendable";
             case SERIALIZE: return "serialize";
+            case SERIAL_NAME: return "SerialName";
+            case K_SERIALIZER: return "KSerializer";
+            case PRIMITIVE_KIND: return "PrimitiveKind";
+            case SERIAL_DESCRIPTOR: return "SerialDescriptor";
             case SERIALIZER_PROVIDER: return "SerializerProvider";
             case SET: return "set";
             case SHORT: return "short";
@@ -319,6 +324,7 @@ public enum Enum {
             case UNCHECKED: return "unchecked";
             case UNDEFINED: return "undefined";
             case UNION: return "union";
+            case USE_SERIALIZERS: return "UseSerializers";
             case UNOWNED: return "unowned";
             case UNSAFE: return "unsafe";
             case UNSIGNED: return "unsigned";
@@ -605,9 +611,14 @@ public enum Enum {
         if (value.equals("SEL")) return SEL;
         if (value.equals("select")) return SELECT;
         if (value.equals("Self")) return SELF;
+        if (value.equals("Serializable")) return SERIALIZABLE;
         if (value.equals("self")) return ENUM_SELF;
         if (value.equals("Sendable")) return SENDABLE;
         if (value.equals("serialize")) return SERIALIZE;
+        if (value.equals("SerialName")) return SERIAL_NAME;
+        if (value.equals("KSerializer")) return K_SERIALIZER;
+        if (value.equals("PrimitiveKind")) return PRIMITIVE_KIND;
+        if (value.equals("SerialDescriptor")) return SERIAL_DESCRIPTOR;
         if (value.equals("SerializerProvider")) return SERIALIZER_PROVIDER;
         if (value.equals("set")) return SET;
         if (value.equals("short")) return SHORT;
@@ -658,6 +669,7 @@ public enum Enum {
         if (value.equals("unchecked")) return UNCHECKED;
         if (value.equals("undefined")) return UNDEFINED;
         if (value.equals("union")) return UNION;
+        if (value.equals("UseSerializers")) return USE_SERIALIZERS;
         if (value.equals("unowned")) return UNOWNED;
         if (value.equals("unsafe")) return UNSAFE;
         if (value.equals("unsigned")) return UNSIGNED;
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/KSerializer.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/KSerializer.java
new file mode 100644
index 0000000..5de691c
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/KSerializer.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class KSerializer {
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/PrimitiveKind.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/PrimitiveKind.java
new file mode 100644
index 0000000..2b7da96
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/PrimitiveKind.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class PrimitiveKind {
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerialDescriptor.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerialDescriptor.java
new file mode 100644
index 0000000..207ca5c
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerialDescriptor.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class SerialDescriptor {
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerialName.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerialName.java
new file mode 100644
index 0000000..3cf1bf1
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerialName.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class SerialName {
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/Serializable.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/Serializable.java
new file mode 100644
index 0000000..2ebc5e4
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/Serializable.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class Serializable {
+}
diff --git a/base/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/TopLevel.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/TopLevel.java
index a88d33d..9df2c78 100644
--- a/base/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/TopLevel.java
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/TopLevel.java
@@ -175,6 +175,7 @@ public class TopLevel {
     private UnionJSONParser jsonParser;
     private UnionJSONReader jsonReader;
     private UnionJSONTokenType jsonTokenType;
+    private UnionKSerializer kSerializer;
     private UnionLambda lambda;
     private UnionLazy lazy;
     private UnionLeft left;
@@ -229,6 +230,7 @@ public class TopLevel {
     private UnionPostfix postfix;
     private UnionPrecedence precedence;
     private UnionPrefix prefix;
+    private UnionPrimitiveKind primitiveKind;
     private UnionPrint print;
     private UnionPrintf printf;
     private UnionPrintMembers printMembers;
@@ -263,8 +265,11 @@ public class TopLevel {
     private UnionSelf self;
     private UnionSelfUnion topLevelSelf;
     private UnionSendable sendable;
+    private UnionSerialDescriptor serialDescriptor;
+    private UnionSerializable serializable;
     private UnionSerialize serialize;
     private UnionSerializerProvider serializerProvider;
+    private UnionSerialName serialName;
     private UnionSet set;
     private UnionShort topLevelShort;
     private UnionSigned signed;
@@ -317,6 +322,7 @@ public class TopLevel {
     private UnionUnowned unowned;
     private UnionUnsafe unsafe;
     private UnionUnsigned unsigned;
+    private UnionUseSerializers useSerializers;
     private UnionUshort ushort;
     private UnionUsing using;
     private UnionUtf8JSONReader utf8JSONReader;
@@ -1197,6 +1203,11 @@ public class TopLevel {
     @JsonProperty("JsonTokenType")
     public void setJSONTokenType(UnionJSONTokenType value) { this.jsonTokenType = value; }
 
+    @JsonProperty("KSerializer")
+    public UnionKSerializer getKSerializer() { return kSerializer; }
+    @JsonProperty("KSerializer")
+    public void setKSerializer(UnionKSerializer value) { this.kSerializer = value; }
+
     @JsonProperty("lambda")
     public UnionLambda getLambda() { return lambda; }
     @JsonProperty("lambda")
@@ -1467,6 +1478,11 @@ public class TopLevel {
     @JsonProperty("prefix")
     public void setPrefix(UnionPrefix value) { this.prefix = value; }
 
+    @JsonProperty("PrimitiveKind")
+    public UnionPrimitiveKind getPrimitiveKind() { return primitiveKind; }
+    @JsonProperty("PrimitiveKind")
+    public void setPrimitiveKind(UnionPrimitiveKind value) { this.primitiveKind = value; }
+
     @JsonProperty("print")
     public UnionPrint getPrint() { return print; }
     @JsonProperty("print")
@@ -1637,6 +1653,16 @@ public class TopLevel {
     @JsonProperty("Sendable")
     public void setSendable(UnionSendable value) { this.sendable = value; }
 
+    @JsonProperty("SerialDescriptor")
+    public UnionSerialDescriptor getSerialDescriptor() { return serialDescriptor; }
+    @JsonProperty("SerialDescriptor")
+    public void setSerialDescriptor(UnionSerialDescriptor value) { this.serialDescriptor = value; }
+
+    @JsonProperty("Serializable")
+    public UnionSerializable getSerializable() { return serializable; }
+    @JsonProperty("Serializable")
+    public void setSerializable(UnionSerializable value) { this.serializable = value; }
+
     @JsonProperty("serialize")
     public UnionSerialize getSerialize() { return serialize; }
     @JsonProperty("serialize")
@@ -1647,6 +1673,11 @@ public class TopLevel {
     @JsonProperty("SerializerProvider")
     public void setSerializerProvider(UnionSerializerProvider value) { this.serializerProvider = value; }
 
+    @JsonProperty("SerialName")
+    public UnionSerialName getSerialName() { return serialName; }
+    @JsonProperty("SerialName")
+    public void setSerialName(UnionSerialName value) { this.serialName = value; }
+
     @JsonProperty("set")
     public UnionSet getSet() { return set; }
     @JsonProperty("set")
@@ -1907,6 +1938,11 @@ public class TopLevel {
     @JsonProperty("unsigned")
     public void setUnsigned(UnionUnsigned value) { this.unsigned = value; }
 
+    @JsonProperty("UseSerializers")
+    public UnionUseSerializers getUseSerializers() { return useSerializers; }
+    @JsonProperty("UseSerializers")
+    public void setUseSerializers(UnionUseSerializers value) { this.useSerializers = value; }
+
     @JsonProperty("ushort")
     public UnionUshort getUshort() { return ushort; }
     @JsonProperty("ushort")
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionKSerializer.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionKSerializer.java
new file mode 100644
index 0000000..10c6c50
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionKSerializer.java
@@ -0,0 +1,50 @@
+package io.quicktype;
+
+import java.io.IOException;
+import java.io.IOException;
+import com.fasterxml.jackson.core.*;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.annotation.*;
+import com.fasterxml.jackson.core.type.*;
+
+@JsonDeserialize(using = UnionKSerializer.Deserializer.class)
+@JsonSerialize(using = UnionKSerializer.Serializer.class)
+public class UnionKSerializer {
+    public Double doubleValue;
+    public KSerializer kSerializerValue;
+
+    static class Deserializer extends JsonDeserializer<UnionKSerializer> {
+        @Override
+        public UnionKSerializer deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionKSerializer value = new UnionKSerializer();
+            switch (jsonParser.currentToken()) {
+                case VALUE_NULL:
+                    break;
+                case VALUE_NUMBER_INT:
+                case VALUE_NUMBER_FLOAT:
+                    value.doubleValue = jsonParser.readValueAs(Double.class);
+                    break;
+                case START_OBJECT:
+                    value.kSerializerValue = jsonParser.readValueAs(KSerializer.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionKSerializer");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionKSerializer> {
+        @Override
+        public void serialize(UnionKSerializer obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.kSerializerValue != null) {
+                jsonGenerator.writeObject(obj.kSerializerValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionPrimitiveKind.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionPrimitiveKind.java
new file mode 100644
index 0000000..af30b15
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionPrimitiveKind.java
@@ -0,0 +1,50 @@
+package io.quicktype;
+
+import java.io.IOException;
+import java.io.IOException;
+import com.fasterxml.jackson.core.*;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.annotation.*;
+import com.fasterxml.jackson.core.type.*;
+
+@JsonDeserialize(using = UnionPrimitiveKind.Deserializer.class)
+@JsonSerialize(using = UnionPrimitiveKind.Serializer.class)
+public class UnionPrimitiveKind {
+    public Double doubleValue;
+    public PrimitiveKind primitiveKindValue;
+
+    static class Deserializer extends JsonDeserializer<UnionPrimitiveKind> {
+        @Override
+        public UnionPrimitiveKind deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionPrimitiveKind value = new UnionPrimitiveKind();
+            switch (jsonParser.currentToken()) {
+                case VALUE_NULL:
+                    break;
+                case VALUE_NUMBER_INT:
+                case VALUE_NUMBER_FLOAT:
+                    value.doubleValue = jsonParser.readValueAs(Double.class);
+                    break;
+                case START_OBJECT:
+                    value.primitiveKindValue = jsonParser.readValueAs(PrimitiveKind.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionPrimitiveKind");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionPrimitiveKind> {
+        @Override
+        public void serialize(UnionPrimitiveKind obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.primitiveKindValue != null) {
+                jsonGenerator.writeObject(obj.primitiveKindValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerialDescriptor.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerialDescriptor.java
new file mode 100644
index 0000000..dafd200
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerialDescriptor.java
@@ -0,0 +1,50 @@
+package io.quicktype;
+
+import java.io.IOException;
+import java.io.IOException;
+import com.fasterxml.jackson.core.*;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.annotation.*;
+import com.fasterxml.jackson.core.type.*;
+
+@JsonDeserialize(using = UnionSerialDescriptor.Deserializer.class)
+@JsonSerialize(using = UnionSerialDescriptor.Serializer.class)
+public class UnionSerialDescriptor {
+    public Double doubleValue;
+    public SerialDescriptor serialDescriptorValue;
+
+    static class Deserializer extends JsonDeserializer<UnionSerialDescriptor> {
+        @Override
+        public UnionSerialDescriptor deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionSerialDescriptor value = new UnionSerialDescriptor();
+            switch (jsonParser.currentToken()) {
+                case VALUE_NULL:
+                    break;
+                case VALUE_NUMBER_INT:
+                case VALUE_NUMBER_FLOAT:
+                    value.doubleValue = jsonParser.readValueAs(Double.class);
+                    break;
+                case START_OBJECT:
+                    value.serialDescriptorValue = jsonParser.readValueAs(SerialDescriptor.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionSerialDescriptor");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionSerialDescriptor> {
+        @Override
+        public void serialize(UnionSerialDescriptor obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.serialDescriptorValue != null) {
+                jsonGenerator.writeObject(obj.serialDescriptorValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerialName.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerialName.java
new file mode 100644
index 0000000..4c416b9
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerialName.java
@@ -0,0 +1,50 @@
+package io.quicktype;
+
+import java.io.IOException;
+import java.io.IOException;
+import com.fasterxml.jackson.core.*;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.annotation.*;
+import com.fasterxml.jackson.core.type.*;
+
+@JsonDeserialize(using = UnionSerialName.Deserializer.class)
+@JsonSerialize(using = UnionSerialName.Serializer.class)
+public class UnionSerialName {
+    public Double doubleValue;
+    public SerialName serialNameValue;
+
+    static class Deserializer extends JsonDeserializer<UnionSerialName> {
+        @Override
+        public UnionSerialName deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionSerialName value = new UnionSerialName();
+            switch (jsonParser.currentToken()) {
+                case VALUE_NULL:
+                    break;
+                case VALUE_NUMBER_INT:
+                case VALUE_NUMBER_FLOAT:
+                    value.doubleValue = jsonParser.readValueAs(Double.class);
+                    break;
+                case START_OBJECT:
+                    value.serialNameValue = jsonParser.readValueAs(SerialName.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionSerialName");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionSerialName> {
+        @Override
+        public void serialize(UnionSerialName obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.serialNameValue != null) {
+                jsonGenerator.writeObject(obj.serialNameValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerializable.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerializable.java
new file mode 100644
index 0000000..48ea392
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerializable.java
@@ -0,0 +1,50 @@
+package io.quicktype;
+
+import java.io.IOException;
+import java.io.IOException;
+import com.fasterxml.jackson.core.*;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.annotation.*;
+import com.fasterxml.jackson.core.type.*;
+
+@JsonDeserialize(using = UnionSerializable.Deserializer.class)
+@JsonSerialize(using = UnionSerializable.Serializer.class)
+public class UnionSerializable {
+    public Double doubleValue;
+    public Serializable serializableValue;
+
+    static class Deserializer extends JsonDeserializer<UnionSerializable> {
+        @Override
+        public UnionSerializable deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionSerializable value = new UnionSerializable();
+            switch (jsonParser.currentToken()) {
+                case VALUE_NULL:
+                    break;
+                case VALUE_NUMBER_INT:
+                case VALUE_NUMBER_FLOAT:
+                    value.doubleValue = jsonParser.readValueAs(Double.class);
+                    break;
+                case START_OBJECT:
+                    value.serializableValue = jsonParser.readValueAs(Serializable.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionSerializable");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionSerializable> {
+        @Override
+        public void serialize(UnionSerializable obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.serializableValue != null) {
+                jsonGenerator.writeObject(obj.serializableValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionUseSerializers.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionUseSerializers.java
new file mode 100644
index 0000000..6079834
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionUseSerializers.java
@@ -0,0 +1,50 @@
+package io.quicktype;
+
+import java.io.IOException;
+import java.io.IOException;
+import com.fasterxml.jackson.core.*;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.annotation.*;
+import com.fasterxml.jackson.core.type.*;
+
+@JsonDeserialize(using = UnionUseSerializers.Deserializer.class)
+@JsonSerialize(using = UnionUseSerializers.Serializer.class)
+public class UnionUseSerializers {
+    public Double doubleValue;
+    public UseSerializers useSerializersValue;
+
+    static class Deserializer extends JsonDeserializer<UnionUseSerializers> {
+        @Override
+        public UnionUseSerializers deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionUseSerializers value = new UnionUseSerializers();
+            switch (jsonParser.currentToken()) {
+                case VALUE_NULL:
+                    break;
+                case VALUE_NUMBER_INT:
+                case VALUE_NUMBER_FLOAT:
+                    value.doubleValue = jsonParser.readValueAs(Double.class);
+                    break;
+                case START_OBJECT:
+                    value.useSerializersValue = jsonParser.readValueAs(UseSerializers.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionUseSerializers");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionUseSerializers> {
+        @Override
+        public void serialize(UnionUseSerializers obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.useSerializersValue != null) {
+                jsonGenerator.writeObject(obj.useSerializersValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UseSerializers.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UseSerializers.java
new file mode 100644
index 0000000..bffb41f
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UseSerializers.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class UseSerializers {
+}
diff --git a/base/schema-java-lombok/test/inputs/schema/keyword-enum.schema/default/src/main/java/io/quicktype/Enum.java b/head/schema-java-lombok/test/inputs/schema/keyword-enum.schema/default/src/main/java/io/quicktype/Enum.java
index c6b4b45..ea6259c 100644
--- a/base/schema-java-lombok/test/inputs/schema/keyword-enum.schema/default/src/main/java/io/quicktype/Enum.java
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-enum.schema/default/src/main/java/io/quicktype/Enum.java
@@ -4,7 +4,7 @@ import java.io.IOException;
 import com.fasterxml.jackson.annotation.*;
 
 public enum Enum {
-    EMPTY, BOOL, COMPLEX, IMAGINERY, ABSTRACT, ALIGNAS, ALIGNOF, AND, AND_EQ, ANY, ENUM_ANY, ARRAY, AS, ASM, ASSERT, ASSOCIATEDTYPE, ASSOCIATIVITY, ASYNC, ATOMIC, ATOMIC_CANCEL, ATOMIC_COMMIT, ATOMIC_NOEXCEPT, AUTO, AWAIT, BASE, BITAND, BITOR, ENUM_BOOL, PURPLE_BOOL, BOOLEAN, BREAK, BYCOPY, BYREF, BYTE, CALENDAR, CASE, CATCH, CHAN, CHAR, CHAR16_T, CHAR32_T, CHECKED, CLASS, ENUM_CLASS, CLONE, CO_AWAIT, CO_RETURN, CO_YIELD, CODABLE, CODING_KEY, CODING_KEYS, COMPL, CONCEPT, CONSOLE, CONST, CONST_CAST, CONSTEXPR, CONSTRUCTOR, CONTINUE, CONVENIENCE, CONVERT, CONVERTER, CULTURE_INFO, DATE, DATE_PARSE_HANDLING, DATE_FORMATTER, DATE_ONLY, DATE_ONLY_CONVERTER, DATE_TIME, DATE_TIME_STYLES, DEBUGGER, DECIMAL, DECLARE, DECLTYPE, DECODE_STRING, DECODER, DECODING_ERROR, DEF, DEFAULT, DEFER, DEINIT, DEL, DELEGATE, DELETE, DICT, DICTIONARY, DID_SET, DO, DOUBLE, DYNAMIC, DYNAMIC_CAST, ELIF, ELSE, ENCODE_QUICK_TYPE, ENCODER, ENUM, ENUM_VALUES, EQUATABLE, EQUALITY_CONTRACT, EVENT, EXCEPT, EXCEPTION, EXPLICIT, EXPORT, EXPOSING, EXTENDS, EXTENSION, EXTERN, FALLTHROUGH, FALSE, ENUM_FALSE, FILEPRIVATE, FINAL, FINALLY, FIXED, FLOAT, FOR, FOREACH, FORMAT_EXCEPTION, FRIEND, FROM, FROM_JSON, FUNC, FUNCTION, GET, GLOBAL, GO, GOTO, GUARD, HASHABLE, HASH_CODE, HASHER, HAS_OWN_PROPERTY, ID, IF, IMP, IMPLEMENTS, IMPLICIT, IMPORT, IN, INDIRECT, INFIX, INIT, INLINE, INOUT, INSTANCEOF, INT, INTERFACE, INTERNAL, ISO_DATE_TIME_OFFSET_CONVERTER, ITERABLE, IS, JDEC, JENC, JPIPE, JSON, JSON_CONVERTER, JSON_SERIALIZER, JSON_TOKEN, JSON_WRITER, JSON_ANY, JSON_CODING_KEY, JSON_DECODER, JSON_ENCODER, JSON_EXCEPTION, JSON_GENERATOR, JSON_NODE, JSON_NULL, JSON_PARSER, JSON_READER, JSON_TOKEN_TYPE, LAMBDA, LAZY, LEFT, LET, LIST, LOCALE, LOCK, LONG, MAP, MAP_ENTRY, METADATA_PROPERTY_HANDLING, MODULE, MUTABLE, MUTATING, NAMESPACE, NATIVE, NEW, NEWTONSOFT, NIL, NO, NOEXCEPT, NONATOMIC, NONE, ENUM_NONE, NONLOCAL, NONMUTATING, NS_OBJECT, NO_SUCH_METHOD, NOT, NOT_EQ, NS_ERROR, NS_STRING, NULL, ENUM_NULL, NULLPTR, NUMBER, OBJECT, OBJECT_MAPPER, OF, ONEWAY, OPEN, OPERATOR, OPTIONAL, OR, OR_EQ, OUT, OVERRIDE, PACKAGE, PARAMS, PASS, PORT, POSTFIX, PRECEDENCE, PREFIX, PRINT, PRINTF, PRINT_MEMBERS, PRIVATE, PROTECTED, PROTOCOL, ENUM_PROTOCOL, PUBLIC, QUICKTYPE, RAISE, RANGE, READONLY, REF, REG_EXP, REGISTER, REINTERPRET_CAST, REPEAT, REQUIRE, REQUIRED, REQUIRES, RESTRICT, RETAIN, RETHROWS, RETURN, RIGHT, RUNTIME_TYPE, S, SBYTE, SEALED, SEL, SELECT, SELF, ENUM_SELF, SENDABLE, SERIALIZE, SERIALIZER_PROVIDER, SET, SHORT, SIGNED, SIMPLE_MODULE, SIZEOF, STACKALLOC, STANDARDS, STATIC, STATIC_ASSERT, STATIC_CAST, STD_DESERIALIZER, STD_SERIALIZER, STRICTFP, STRING, STRUCT, SUBSCRIPT, SUPER, SWITCH, SYMBOL, SYNCHRONIZED, SYSTEM, TEMPLATE, THEN, THIS, THREAD_LOCAL, THROW, THROWS, TIME_ONLY, TIME_ONLY_CONVERTER, TIME_ZONE, TO_JSON, TOP_LEVEL, TO_STRING, TRANSIENT, TRUE, ENUM_TRUE, TRY, TYPE, ENUM_TYPE, TYPEALIAS, TYPEDEF, TYPEID, TYPENAME, TYPEOF, UINT, ULONG, UNCHECKED, UNDEFINED, UNION, UNOWNED, UNSAFE, UNSIGNED, USHORT, USING, UTF8_JSON_READER, UTF8_JSON_WRITER, UUID, VAR, VIRTUAL, VOID, VOLATILE, WCHAR_T, WEAK, WHERE, WHILE, WILL_SET, WITH, XOR, XOR_EQ, YES, YIELD, DUMMY;
+    EMPTY, BOOL, COMPLEX, IMAGINERY, ABSTRACT, ALIGNAS, ALIGNOF, AND, AND_EQ, ANY, ENUM_ANY, ARRAY, AS, ASM, ASSERT, ASSOCIATEDTYPE, ASSOCIATIVITY, ASYNC, ATOMIC, ATOMIC_CANCEL, ATOMIC_COMMIT, ATOMIC_NOEXCEPT, AUTO, AWAIT, BASE, BITAND, BITOR, ENUM_BOOL, PURPLE_BOOL, BOOLEAN, BREAK, BYCOPY, BYREF, BYTE, CALENDAR, CASE, CATCH, CHAN, CHAR, CHAR16_T, CHAR32_T, CHECKED, CLASS, ENUM_CLASS, CLONE, CO_AWAIT, CO_RETURN, CO_YIELD, CODABLE, CODING_KEY, CODING_KEYS, COMPL, CONCEPT, CONSOLE, CONST, CONST_CAST, CONSTEXPR, CONSTRUCTOR, CONTINUE, CONVENIENCE, CONVERT, CONVERTER, CULTURE_INFO, DATE, DATE_PARSE_HANDLING, DATE_FORMATTER, DATE_ONLY, DATE_ONLY_CONVERTER, DATE_TIME, DATE_TIME_STYLES, DEBUGGER, DECIMAL, DECLARE, DECLTYPE, DECODE_STRING, DECODER, DECODING_ERROR, DEF, DEFAULT, DEFER, DEINIT, DEL, DELEGATE, DELETE, DICT, DICTIONARY, DID_SET, DO, DOUBLE, DYNAMIC, DYNAMIC_CAST, ELIF, ELSE, ENCODE_QUICK_TYPE, ENCODER, ENUM, ENUM_VALUES, EQUATABLE, EQUALITY_CONTRACT, EVENT, EXCEPT, EXCEPTION, EXPLICIT, EXPORT, EXPOSING, EXTENDS, EXTENSION, EXTERN, FALLTHROUGH, FALSE, ENUM_FALSE, FILEPRIVATE, FINAL, FINALLY, FIXED, FLOAT, FOR, FOREACH, FORMAT_EXCEPTION, FRIEND, FROM, FROM_JSON, FUNC, FUNCTION, GET, GLOBAL, GO, GOTO, GUARD, HASHABLE, HASH_CODE, HASHER, HAS_OWN_PROPERTY, ID, IF, IMP, IMPLEMENTS, IMPLICIT, IMPORT, IN, INDIRECT, INFIX, INIT, INLINE, INOUT, INSTANCEOF, INT, INTERFACE, INTERNAL, ISO_DATE_TIME_OFFSET_CONVERTER, ITERABLE, IS, JDEC, JENC, JPIPE, JSON, JSON_CONVERTER, JSON_SERIALIZER, JSON_TOKEN, JSON_WRITER, JSON_ANY, JSON_CODING_KEY, JSON_DECODER, JSON_ENCODER, JSON_EXCEPTION, JSON_GENERATOR, JSON_NODE, JSON_NULL, JSON_PARSER, JSON_READER, JSON_TOKEN_TYPE, LAMBDA, LAZY, LEFT, LET, LIST, LOCALE, LOCK, LONG, MAP, MAP_ENTRY, METADATA_PROPERTY_HANDLING, MODULE, MUTABLE, MUTATING, NAMESPACE, NATIVE, NEW, NEWTONSOFT, NIL, NO, NOEXCEPT, NONATOMIC, NONE, ENUM_NONE, NONLOCAL, NONMUTATING, NS_OBJECT, NO_SUCH_METHOD, NOT, NOT_EQ, NS_ERROR, NS_STRING, NULL, ENUM_NULL, NULLPTR, NUMBER, OBJECT, OBJECT_MAPPER, OF, ONEWAY, OPEN, OPERATOR, OPTIONAL, OR, OR_EQ, OUT, OVERRIDE, PACKAGE, PARAMS, PASS, PORT, POSTFIX, PRECEDENCE, PREFIX, PRINT, PRINTF, PRINT_MEMBERS, PRIVATE, PROTECTED, PROTOCOL, ENUM_PROTOCOL, PUBLIC, QUICKTYPE, RAISE, RANGE, READONLY, REF, REG_EXP, REGISTER, REINTERPRET_CAST, REPEAT, REQUIRE, REQUIRED, REQUIRES, RESTRICT, RETAIN, RETHROWS, RETURN, RIGHT, RUNTIME_TYPE, S, SBYTE, SEALED, SEL, SELECT, SELF, SERIALIZABLE, ENUM_SELF, SENDABLE, SERIALIZE, SERIAL_NAME, K_SERIALIZER, PRIMITIVE_KIND, SERIAL_DESCRIPTOR, SERIALIZER_PROVIDER, SET, SHORT, SIGNED, SIMPLE_MODULE, SIZEOF, STACKALLOC, STANDARDS, STATIC, STATIC_ASSERT, STATIC_CAST, STD_DESERIALIZER, STD_SERIALIZER, STRICTFP, STRING, STRUCT, SUBSCRIPT, SUPER, SWITCH, SYMBOL, SYNCHRONIZED, SYSTEM, TEMPLATE, THEN, THIS, THREAD_LOCAL, THROW, THROWS, TIME_ONLY, TIME_ONLY_CONVERTER, TIME_ZONE, TO_JSON, TOP_LEVEL, TO_STRING, TRANSIENT, TRUE, ENUM_TRUE, TRY, TYPE, ENUM_TYPE, TYPEALIAS, TYPEDEF, TYPEID, TYPENAME, TYPEOF, UINT, ULONG, UNCHECKED, UNDEFINED, UNION, USE_SERIALIZERS, UNOWNED, UNSAFE, UNSIGNED, USHORT, USING, UTF8_JSON_READER, UTF8_JSON_WRITER, UUID, VAR, VIRTUAL, VOID, VOLATILE, WCHAR_T, WEAK, WHERE, WHILE, WILL_SET, WITH, XOR, XOR_EQ, YES, YIELD, DUMMY;
 
     @JsonValue
     public String toValue() {
@@ -266,9 +266,14 @@ public enum Enum {
             case SEL: return "SEL";
             case SELECT: return "select";
             case SELF: return "Self";
+            case SERIALIZABLE: return "Serializable";
             case ENUM_SELF: return "self";
             case SENDABLE: return "Sendable";
             case SERIALIZE: return "serialize";
+            case SERIAL_NAME: return "SerialName";
+            case K_SERIALIZER: return "KSerializer";
+            case PRIMITIVE_KIND: return "PrimitiveKind";
+            case SERIAL_DESCRIPTOR: return "SerialDescriptor";
             case SERIALIZER_PROVIDER: return "SerializerProvider";
             case SET: return "set";
             case SHORT: return "short";
@@ -319,6 +324,7 @@ public enum Enum {
             case UNCHECKED: return "unchecked";
             case UNDEFINED: return "undefined";
             case UNION: return "union";
+            case USE_SERIALIZERS: return "UseSerializers";
             case UNOWNED: return "unowned";
             case UNSAFE: return "unsafe";
             case UNSIGNED: return "unsigned";
@@ -605,9 +611,14 @@ public enum Enum {
         if (value.equals("SEL")) return SEL;
         if (value.equals("select")) return SELECT;
         if (value.equals("Self")) return SELF;
+        if (value.equals("Serializable")) return SERIALIZABLE;
         if (value.equals("self")) return ENUM_SELF;
         if (value.equals("Sendable")) return SENDABLE;
         if (value.equals("serialize")) return SERIALIZE;
+        if (value.equals("SerialName")) return SERIAL_NAME;
+        if (value.equals("KSerializer")) return K_SERIALIZER;
+        if (value.equals("PrimitiveKind")) return PRIMITIVE_KIND;
+        if (value.equals("SerialDescriptor")) return SERIAL_DESCRIPTOR;
         if (value.equals("SerializerProvider")) return SERIALIZER_PROVIDER;
         if (value.equals("set")) return SET;
         if (value.equals("short")) return SHORT;
@@ -658,6 +669,7 @@ public enum Enum {
         if (value.equals("unchecked")) return UNCHECKED;
         if (value.equals("undefined")) return UNDEFINED;
         if (value.equals("union")) return UNION;
+        if (value.equals("UseSerializers")) return USE_SERIALIZERS;
         if (value.equals("unowned")) return UNOWNED;
         if (value.equals("unsafe")) return UNSAFE;
         if (value.equals("unsigned")) return UNSIGNED;
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/KSerializer.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/KSerializer.java
new file mode 100644
index 0000000..5de691c
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/KSerializer.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class KSerializer {
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/PrimitiveKind.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/PrimitiveKind.java
new file mode 100644
index 0000000..2b7da96
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/PrimitiveKind.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class PrimitiveKind {
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerialDescriptor.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerialDescriptor.java
new file mode 100644
index 0000000..207ca5c
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerialDescriptor.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class SerialDescriptor {
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerialName.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerialName.java
new file mode 100644
index 0000000..3cf1bf1
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerialName.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class SerialName {
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/Serializable.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/Serializable.java
new file mode 100644
index 0000000..2ebc5e4
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/Serializable.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class Serializable {
+}
diff --git a/base/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/TopLevel.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/TopLevel.java
index a88d33d..9df2c78 100644
--- a/base/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/TopLevel.java
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/TopLevel.java
@@ -175,6 +175,7 @@ public class TopLevel {
     private UnionJSONParser jsonParser;
     private UnionJSONReader jsonReader;
     private UnionJSONTokenType jsonTokenType;
+    private UnionKSerializer kSerializer;
     private UnionLambda lambda;
     private UnionLazy lazy;
     private UnionLeft left;
@@ -229,6 +230,7 @@ public class TopLevel {
     private UnionPostfix postfix;
     private UnionPrecedence precedence;
     private UnionPrefix prefix;
+    private UnionPrimitiveKind primitiveKind;
     private UnionPrint print;
     private UnionPrintf printf;
     private UnionPrintMembers printMembers;
@@ -263,8 +265,11 @@ public class TopLevel {
     private UnionSelf self;
     private UnionSelfUnion topLevelSelf;
     private UnionSendable sendable;
+    private UnionSerialDescriptor serialDescriptor;
+    private UnionSerializable serializable;
     private UnionSerialize serialize;
     private UnionSerializerProvider serializerProvider;
+    private UnionSerialName serialName;
     private UnionSet set;
     private UnionShort topLevelShort;
     private UnionSigned signed;
@@ -317,6 +322,7 @@ public class TopLevel {
     private UnionUnowned unowned;
     private UnionUnsafe unsafe;
     private UnionUnsigned unsigned;
+    private UnionUseSerializers useSerializers;
     private UnionUshort ushort;
     private UnionUsing using;
     private UnionUtf8JSONReader utf8JSONReader;
@@ -1197,6 +1203,11 @@ public class TopLevel {
     @JsonProperty("JsonTokenType")
     public void setJSONTokenType(UnionJSONTokenType value) { this.jsonTokenType = value; }
 
+    @JsonProperty("KSerializer")
+    public UnionKSerializer getKSerializer() { return kSerializer; }
+    @JsonProperty("KSerializer")
+    public void setKSerializer(UnionKSerializer value) { this.kSerializer = value; }
+
     @JsonProperty("lambda")
     public UnionLambda getLambda() { return lambda; }
     @JsonProperty("lambda")
@@ -1467,6 +1478,11 @@ public class TopLevel {
     @JsonProperty("prefix")
     public void setPrefix(UnionPrefix value) { this.prefix = value; }
 
+    @JsonProperty("PrimitiveKind")
+    public UnionPrimitiveKind getPrimitiveKind() { return primitiveKind; }
+    @JsonProperty("PrimitiveKind")
+    public void setPrimitiveKind(UnionPrimitiveKind value) { this.primitiveKind = value; }
+
     @JsonProperty("print")
     public UnionPrint getPrint() { return print; }
     @JsonProperty("print")
@@ -1637,6 +1653,16 @@ public class TopLevel {
     @JsonProperty("Sendable")
     public void setSendable(UnionSendable value) { this.sendable = value; }
 
+    @JsonProperty("SerialDescriptor")
+    public UnionSerialDescriptor getSerialDescriptor() { return serialDescriptor; }
+    @JsonProperty("SerialDescriptor")
+    public void setSerialDescriptor(UnionSerialDescriptor value) { this.serialDescriptor = value; }
+
+    @JsonProperty("Serializable")
+    public UnionSerializable getSerializable() { return serializable; }
+    @JsonProperty("Serializable")
+    public void setSerializable(UnionSerializable value) { this.serializable = value; }
+
     @JsonProperty("serialize")
     public UnionSerialize getSerialize() { return serialize; }
     @JsonProperty("serialize")
@@ -1647,6 +1673,11 @@ public class TopLevel {
     @JsonProperty("SerializerProvider")
     public void setSerializerProvider(UnionSerializerProvider value) { this.serializerProvider = value; }
 
+    @JsonProperty("SerialName")
+    public UnionSerialName getSerialName() { return serialName; }
+    @JsonProperty("SerialName")
+    public void setSerialName(UnionSerialName value) { this.serialName = value; }
+
     @JsonProperty("set")
     public UnionSet getSet() { return set; }
     @JsonProperty("set")
@@ -1907,6 +1938,11 @@ public class TopLevel {
     @JsonProperty("unsigned")
     public void setUnsigned(UnionUnsigned value) { this.unsigned = value; }
 
+    @JsonProperty("UseSerializers")
+    public UnionUseSerializers getUseSerializers() { return useSerializers; }
+    @JsonProperty("UseSerializers")
+    public void setUseSerializers(UnionUseSerializers value) { this.useSerializers = value; }
+
     @JsonProperty("ushort")
     public UnionUshort getUshort() { return ushort; }
     @JsonProperty("ushort")
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionKSerializer.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionKSerializer.java
new file mode 100644
index 0000000..10c6c50
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionKSerializer.java
@@ -0,0 +1,50 @@
+package io.quicktype;
+
+import java.io.IOException;
+import java.io.IOException;
+import com.fasterxml.jackson.core.*;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.annotation.*;
+import com.fasterxml.jackson.core.type.*;
+
+@JsonDeserialize(using = UnionKSerializer.Deserializer.class)
+@JsonSerialize(using = UnionKSerializer.Serializer.class)
+public class UnionKSerializer {
+    public Double doubleValue;
+    public KSerializer kSerializerValue;
+
+    static class Deserializer extends JsonDeserializer<UnionKSerializer> {
+        @Override
+        public UnionKSerializer deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionKSerializer value = new UnionKSerializer();
+            switch (jsonParser.currentToken()) {
+                case VALUE_NULL:
+                    break;
+                case VALUE_NUMBER_INT:
+                case VALUE_NUMBER_FLOAT:
+                    value.doubleValue = jsonParser.readValueAs(Double.class);
+                    break;
+                case START_OBJECT:
+                    value.kSerializerValue = jsonParser.readValueAs(KSerializer.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionKSerializer");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionKSerializer> {
+        @Override
+        public void serialize(UnionKSerializer obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.kSerializerValue != null) {
+                jsonGenerator.writeObject(obj.kSerializerValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionPrimitiveKind.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionPrimitiveKind.java
new file mode 100644
index 0000000..af30b15
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionPrimitiveKind.java
@@ -0,0 +1,50 @@
+package io.quicktype;
+
+import java.io.IOException;
+import java.io.IOException;
+import com.fasterxml.jackson.core.*;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.annotation.*;
+import com.fasterxml.jackson.core.type.*;
+
+@JsonDeserialize(using = UnionPrimitiveKind.Deserializer.class)
+@JsonSerialize(using = UnionPrimitiveKind.Serializer.class)
+public class UnionPrimitiveKind {
+    public Double doubleValue;
+    public PrimitiveKind primitiveKindValue;
+
+    static class Deserializer extends JsonDeserializer<UnionPrimitiveKind> {
+        @Override
+        public UnionPrimitiveKind deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionPrimitiveKind value = new UnionPrimitiveKind();
+            switch (jsonParser.currentToken()) {
+                case VALUE_NULL:
+                    break;
+                case VALUE_NUMBER_INT:
+                case VALUE_NUMBER_FLOAT:
+                    value.doubleValue = jsonParser.readValueAs(Double.class);
+                    break;
+                case START_OBJECT:
+                    value.primitiveKindValue = jsonParser.readValueAs(PrimitiveKind.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionPrimitiveKind");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionPrimitiveKind> {
+        @Override
+        public void serialize(UnionPrimitiveKind obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.primitiveKindValue != null) {
+                jsonGenerator.writeObject(obj.primitiveKindValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerialDescriptor.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerialDescriptor.java
new file mode 100644
index 0000000..dafd200
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerialDescriptor.java
@@ -0,0 +1,50 @@
+package io.quicktype;
+
+import java.io.IOException;
+import java.io.IOException;
+import com.fasterxml.jackson.core.*;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.annotation.*;
+import com.fasterxml.jackson.core.type.*;
+
+@JsonDeserialize(using = UnionSerialDescriptor.Deserializer.class)
+@JsonSerialize(using = UnionSerialDescriptor.Serializer.class)
+public class UnionSerialDescriptor {
+    public Double doubleValue;
+    public SerialDescriptor serialDescriptorValue;
+
+    static class Deserializer extends JsonDeserializer<UnionSerialDescriptor> {
+        @Override
+        public UnionSerialDescriptor deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionSerialDescriptor value = new UnionSerialDescriptor();
+            switch (jsonParser.currentToken()) {
+                case VALUE_NULL:
+                    break;
+                case VALUE_NUMBER_INT:
+                case VALUE_NUMBER_FLOAT:
+                    value.doubleValue = jsonParser.readValueAs(Double.class);
+                    break;
+                case START_OBJECT:
+                    value.serialDescriptorValue = jsonParser.readValueAs(SerialDescriptor.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionSerialDescriptor");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionSerialDescriptor> {
+        @Override
+        public void serialize(UnionSerialDescriptor obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.serialDescriptorValue != null) {
+                jsonGenerator.writeObject(obj.serialDescriptorValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerialName.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerialName.java
new file mode 100644
index 0000000..4c416b9
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerialName.java
@@ -0,0 +1,50 @@
+package io.quicktype;
+
+import java.io.IOException;
+import java.io.IOException;
+import com.fasterxml.jackson.core.*;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.annotation.*;
+import com.fasterxml.jackson.core.type.*;
+
+@JsonDeserialize(using = UnionSerialName.Deserializer.class)
+@JsonSerialize(using = UnionSerialName.Serializer.class)
+public class UnionSerialName {
+    public Double doubleValue;
+    public SerialName serialNameValue;
+
+    static class Deserializer extends JsonDeserializer<UnionSerialName> {
+        @Override
+        public UnionSerialName deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionSerialName value = new UnionSerialName();
+            switch (jsonParser.currentToken()) {
+                case VALUE_NULL:
+                    break;
+                case VALUE_NUMBER_INT:
+                case VALUE_NUMBER_FLOAT:
+                    value.doubleValue = jsonParser.readValueAs(Double.class);
+                    break;
+                case START_OBJECT:
+                    value.serialNameValue = jsonParser.readValueAs(SerialName.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionSerialName");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionSerialName> {
+        @Override
+        public void serialize(UnionSerialName obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.serialNameValue != null) {
+                jsonGenerator.writeObject(obj.serialNameValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerializable.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerializable.java
new file mode 100644
index 0000000..48ea392
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerializable.java
@@ -0,0 +1,50 @@
+package io.quicktype;
+
+import java.io.IOException;
+import java.io.IOException;
+import com.fasterxml.jackson.core.*;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.annotation.*;
+import com.fasterxml.jackson.core.type.*;
+
+@JsonDeserialize(using = UnionSerializable.Deserializer.class)
+@JsonSerialize(using = UnionSerializable.Serializer.class)
+public class UnionSerializable {
+    public Double doubleValue;
+    public Serializable serializableValue;
+
+    static class Deserializer extends JsonDeserializer<UnionSerializable> {
+        @Override
+        public UnionSerializable deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionSerializable value = new UnionSerializable();
+            switch (jsonParser.currentToken()) {
+                case VALUE_NULL:
+                    break;
+                case VALUE_NUMBER_INT:
+                case VALUE_NUMBER_FLOAT:
+                    value.doubleValue = jsonParser.readValueAs(Double.class);
+                    break;
+                case START_OBJECT:
+                    value.serializableValue = jsonParser.readValueAs(Serializable.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionSerializable");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionSerializable> {
+        @Override
+        public void serialize(UnionSerializable obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.serializableValue != null) {
+                jsonGenerator.writeObject(obj.serializableValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionUseSerializers.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionUseSerializers.java
new file mode 100644
index 0000000..6079834
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionUseSerializers.java
@@ -0,0 +1,50 @@
+package io.quicktype;
+
+import java.io.IOException;
+import java.io.IOException;
+import com.fasterxml.jackson.core.*;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.annotation.*;
+import com.fasterxml.jackson.core.type.*;
+
+@JsonDeserialize(using = UnionUseSerializers.Deserializer.class)
+@JsonSerialize(using = UnionUseSerializers.Serializer.class)
+public class UnionUseSerializers {
+    public Double doubleValue;
+    public UseSerializers useSerializersValue;
+
+    static class Deserializer extends JsonDeserializer<UnionUseSerializers> {
+        @Override
+        public UnionUseSerializers deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionUseSerializers value = new UnionUseSerializers();
+            switch (jsonParser.currentToken()) {
+                case VALUE_NULL:
+                    break;
+                case VALUE_NUMBER_INT:
+                case VALUE_NUMBER_FLOAT:
+                    value.doubleValue = jsonParser.readValueAs(Double.class);
+                    break;
+                case START_OBJECT:
+                    value.useSerializersValue = jsonParser.readValueAs(UseSerializers.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionUseSerializers");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionUseSerializers> {
+        @Override
+        public void serialize(UnionUseSerializers obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.useSerializersValue != null) {
+                jsonGenerator.writeObject(obj.useSerializersValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UseSerializers.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UseSerializers.java
new file mode 100644
index 0000000..bffb41f
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UseSerializers.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class UseSerializers {
+}
diff --git a/base/schema-javascript/test/inputs/schema/keyword-enum.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/keyword-enum.schema/default/TopLevel.js
index 72b3ce1..0ca689e 100644
--- a/base/schema-javascript/test/inputs/schema/keyword-enum.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/keyword-enum.schema/default/TopLevel.js
@@ -453,9 +453,14 @@ const typeMap = {
         "SEL",
         "select",
         "Self",
+        "Serializable",
         "self",
         "Sendable",
         "serialize",
+        "SerialName",
+        "KSerializer",
+        "PrimitiveKind",
+        "SerialDescriptor",
         "SerializerProvider",
         "set",
         "short",
@@ -506,6 +511,7 @@ const typeMap = {
         "unchecked",
         "undefined",
         "union",
+        "UseSerializers",
         "unowned",
         "unsafe",
         "unsigned",
diff --git a/base/schema-javascript/test/inputs/schema/keyword-unions.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/keyword-unions.schema/default/TopLevel.js
index 39cbbd5..70a8b52 100644
--- a/base/schema-javascript/test/inputs/schema/keyword-unions.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/keyword-unions.schema/default/TopLevel.js
@@ -365,6 +365,7 @@ const typeMap = {
         { json: "JsonParser", js: "JsonParser", typ: u(undefined, u(r("JSONParser"), 3.14)) },
         { json: "JsonReader", js: "JsonReader", typ: u(undefined, u(r("JSONReader"), 3.14)) },
         { json: "JsonTokenType", js: "JsonTokenType", typ: u(undefined, u(r("JSONTokenType"), 3.14)) },
+        { json: "KSerializer", js: "KSerializer", typ: u(undefined, u(r("KSerializer"), 3.14)) },
         { json: "lambda", js: "lambda", typ: u(undefined, u(r("Lambda"), 3.14)) },
         { json: "lazy", js: "lazy", typ: u(undefined, u(r("Lazy"), 3.14)) },
         { json: "left", js: "left", typ: u(undefined, u(r("Left"), 3.14)) },
@@ -419,6 +420,7 @@ const typeMap = {
         { json: "postfix", js: "postfix", typ: u(undefined, u(r("Postfix"), 3.14)) },
         { json: "precedence", js: "precedence", typ: u(undefined, u(r("Precedence"), 3.14)) },
         { json: "prefix", js: "prefix", typ: u(undefined, u(r("Prefix"), 3.14)) },
+        { json: "PrimitiveKind", js: "PrimitiveKind", typ: u(undefined, u(r("PrimitiveKind"), 3.14)) },
         { json: "print", js: "print", typ: u(undefined, u(r("Print"), 3.14)) },
         { json: "printf", js: "printf", typ: u(undefined, u(r("Printf"), 3.14)) },
         { json: "printMembers", js: "printMembers", typ: u(undefined, u(r("PrintMembers"), 3.14)) },
@@ -453,8 +455,11 @@ const typeMap = {
         { json: "Self", js: "Self", typ: u(undefined, u(r("Self"), 3.14)) },
         { json: "self", js: "self", typ: u(undefined, u(r("SelfClass"), 3.14)) },
         { json: "Sendable", js: "Sendable", typ: u(undefined, u(r("Sendable"), 3.14)) },
+        { json: "SerialDescriptor", js: "SerialDescriptor", typ: u(undefined, u(r("SerialDescriptor"), 3.14)) },
+        { json: "Serializable", js: "Serializable", typ: u(undefined, u(r("Serializable"), 3.14)) },
         { json: "serialize", js: "serialize", typ: u(undefined, u(r("Serialize"), 3.14)) },
         { json: "SerializerProvider", js: "SerializerProvider", typ: u(undefined, u(r("SerializerProvider"), 3.14)) },
+        { json: "SerialName", js: "SerialName", typ: u(undefined, u(r("SerialName"), 3.14)) },
         { json: "set", js: "set", typ: u(undefined, u(r("Set"), 3.14)) },
         { json: "short", js: "short", typ: u(undefined, u(r("Short"), 3.14)) },
         { json: "signed", js: "signed", typ: u(undefined, u(r("Signed"), 3.14)) },
@@ -507,6 +512,7 @@ const typeMap = {
         { json: "unowned", js: "unowned", typ: u(undefined, u(r("Unowned"), 3.14)) },
         { json: "unsafe", js: "unsafe", typ: u(undefined, u(r("Unsafe"), 3.14)) },
         { json: "unsigned", js: "unsigned", typ: u(undefined, u(r("Unsigned"), 3.14)) },
+        { json: "UseSerializers", js: "UseSerializers", typ: u(undefined, u(r("UseSerializers"), 3.14)) },
         { json: "ushort", js: "ushort", typ: u(undefined, u(r("Ushort"), 3.14)) },
         { json: "using", js: "using", typ: u(undefined, u(r("Using"), 3.14)) },
         { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: u(undefined, u(r("Utf8JSONReader"), 3.14)) },
@@ -597,6 +603,8 @@ const typeMap = {
     ], false),
     "JSONTokenType": o([
     ], false),
+    "KSerializer": o([
+    ], false),
     "Locale": o([
     ], false),
     "MapEntry": o([
@@ -615,6 +623,8 @@ const typeMap = {
     ], false),
     "ObjectMapper": o([
     ], false),
+    "PrimitiveKind": o([
+    ], false),
     "Protocol": o([
     ], false),
     "RegExp": o([
@@ -625,6 +635,12 @@ const typeMap = {
     ], false),
     "Sendable": o([
     ], false),
+    "SerialDescriptor": o([
+    ], false),
+    "SerialName": o([
+    ], false),
+    "Serializable": o([
+    ], false),
     "SerializerProvider": o([
     ], false),
     "SimpleModule": o([
@@ -647,6 +663,8 @@ const typeMap = {
     ], false),
     "UUID": o([
     ], false),
+    "UseSerializers": o([
+    ], false),
     "Utf8JSONReader": o([
     ], false),
     "Utf8JSONWriter": o([
diff --git a/base/schema-javascript-prop-types/test/inputs/schema/keyword-enum.schema/default/toplevel.js b/head/schema-javascript-prop-types/test/inputs/schema/keyword-enum.schema/default/toplevel.js
index 50d87fa..867a843 100644
--- a/base/schema-javascript-prop-types/test/inputs/schema/keyword-enum.schema/default/toplevel.js
+++ b/head/schema-javascript-prop-types/test/inputs/schema/keyword-enum.schema/default/toplevel.js
@@ -13,7 +13,7 @@
 import PropTypes from "prop-types";
 
 let _TopLevel;
-const _Enum = PropTypes.oneOf(['_', '_Bool', '_Complex', '_Imaginery', 'abstract', 'alignas', 'alignof', 'and', 'and_eq', 'any', 'Any', 'array', 'as', 'asm', 'assert', 'associatedtype', 'associativity', 'async', 'atomic', 'atomic_cancel', 'atomic_commit', 'atomic_noexcept', 'auto', 'await', 'base', 'bitand', 'bitor', 'BOOL', 'bool', 'boolean', 'break', 'bycopy', 'byref', 'byte', 'Calendar', 'case', 'catch', 'chan', 'char', 'char16_t', 'char32_t', 'checked', 'class', 'Class', 'clone', 'co_await', 'co_return', 'co_yield', 'Codable', 'CodingKey', 'CodingKeys', 'compl', 'concept', 'console', 'const', 'const_cast', 'constexpr', 'constructor', 'continue', 'convenience', 'convert', 'converter', 'CultureInfo', 'date', 'date_parse_handling', 'DateFormatter', 'DateOnly', 'DateOnlyConverter', 'DateTime', 'DateTimeStyles', 'debugger', 'decimal', 'declare', 'decltype', 'decode_string', 'Decoder', 'DecodingError', 'def', 'default', 'defer', 'deinit', 'del', 'delegate', 'delete', 'dict', 'dictionary', 'didSet', 'do', 'double', 'dynamic', 'dynamic_cast', 'elif', 'else', 'encode_quick_type', 'Encoder', 'enum', 'EnumValues', 'Equatable', 'equalityContract', 'event', 'except', 'exception', 'explicit', 'export', 'exposing', 'extends', 'extension', 'extern', 'fallthrough', 'false', 'False', 'fileprivate', 'final', 'finally', 'fixed', 'float', 'for', 'foreach', 'FormatException', 'friend', 'from', 'from_json', 'func', 'function', 'get', 'global', 'go', 'goto', 'guard', 'Hashable', 'hashCode', 'Hasher', 'hasOwnProperty', 'id', 'if', 'IMP', 'implements', 'implicit', 'import', 'in', 'indirect', 'infix', 'init', 'inline', 'inout', 'instanceof', 'int', 'interface', 'internal', 'IsoDateTimeOffsetConverter', 'iterable', 'is', 'jdec', 'jenc', 'jpipe', 'json', 'json_converter', 'json_serializer', 'json_token', 'json_writer', 'JSONAny', 'JSONCodingKey', 'JSONDecoder', 'JSONEncoder', 'JsonException', 'JsonGenerator', 'JsonNode', 'JSONNull', 'JsonParser', 'JsonReader', 'JsonTokenType', 'lambda', 'lazy', 'left', 'let', 'list', 'Locale', 'lock', 'long', 'map', 'MapEntry', 'metadata_property_handling', 'module', 'mutable', 'mutating', 'namespace', 'native', 'new', 'newtonsoft', 'nil', 'NO', 'noexcept', 'nonatomic', 'none', 'None', 'nonlocal', 'nonmutating', 'NSObject', 'noSuchMethod', 'not', 'not_eq', 'NSError', 'NSString', 'NULL', 'null', 'nullptr', 'number', 'object', 'ObjectMapper', 'of', 'oneway', 'open', 'operator', 'optional', 'or', 'or_eq', 'out', 'override', 'package', 'params', 'pass', 'port', 'postfix', 'precedence', 'prefix', 'print', 'printf', 'printMembers', 'private', 'protected', 'Protocol', 'protocol', 'public', 'quicktype', 'raise', 'range', 'readonly', 'ref', 'RegExp', 'register', 'reinterpret_cast', 'repeat', 'require', 'required', 'requires', 'restrict', 'retain', 'rethrows', 'return', 'right', 'runtimeType', 's', 'sbyte', 'sealed', 'SEL', 'select', 'Self', 'self', 'Sendable', 'serialize', 'SerializerProvider', 'set', 'short', 'signed', 'SimpleModule', 'sizeof', 'stackalloc', 'Standards', 'static', 'static_assert', 'static_cast', 'StdDeserializer', 'StdSerializer', 'strictfp', 'string', 'struct', 'subscript', 'super', 'switch', 'symbol', 'synchronized', 'system', 'template', 'then', 'this', 'thread_local', 'throw', 'throws', 'TimeOnly', 'TimeOnlyConverter', 'TimeZone', 'to_json', 'top_level', 'toString', 'transient', 'True', 'true', 'try', 'Type', 'type', 'typealias', 'typedef', 'typeid', 'typename', 'typeof', 'uint', 'ulong', 'unchecked', 'undefined', 'union', 'unowned', 'unsafe', 'unsigned', 'ushort', 'using', 'Utf8JsonReader', 'Utf8JsonWriter', 'UUID', 'var', 'virtual', 'void', 'volatile', 'wchar_t', 'weak', 'where', 'while', 'willSet', 'with', 'xor', 'xor_eq', 'YES', 'yield', 'dummy']);
+const _Enum = PropTypes.oneOf(['_', '_Bool', '_Complex', '_Imaginery', 'abstract', 'alignas', 'alignof', 'and', 'and_eq', 'any', 'Any', 'array', 'as', 'asm', 'assert', 'associatedtype', 'associativity', 'async', 'atomic', 'atomic_cancel', 'atomic_commit', 'atomic_noexcept', 'auto', 'await', 'base', 'bitand', 'bitor', 'BOOL', 'bool', 'boolean', 'break', 'bycopy', 'byref', 'byte', 'Calendar', 'case', 'catch', 'chan', 'char', 'char16_t', 'char32_t', 'checked', 'class', 'Class', 'clone', 'co_await', 'co_return', 'co_yield', 'Codable', 'CodingKey', 'CodingKeys', 'compl', 'concept', 'console', 'const', 'const_cast', 'constexpr', 'constructor', 'continue', 'convenience', 'convert', 'converter', 'CultureInfo', 'date', 'date_parse_handling', 'DateFormatter', 'DateOnly', 'DateOnlyConverter', 'DateTime', 'DateTimeStyles', 'debugger', 'decimal', 'declare', 'decltype', 'decode_string', 'Decoder', 'DecodingError', 'def', 'default', 'defer', 'deinit', 'del', 'delegate', 'delete', 'dict', 'dictionary', 'didSet', 'do', 'double', 'dynamic', 'dynamic_cast', 'elif', 'else', 'encode_quick_type', 'Encoder', 'enum', 'EnumValues', 'Equatable', 'equalityContract', 'event', 'except', 'exception', 'explicit', 'export', 'exposing', 'extends', 'extension', 'extern', 'fallthrough', 'false', 'False', 'fileprivate', 'final', 'finally', 'fixed', 'float', 'for', 'foreach', 'FormatException', 'friend', 'from', 'from_json', 'func', 'function', 'get', 'global', 'go', 'goto', 'guard', 'Hashable', 'hashCode', 'Hasher', 'hasOwnProperty', 'id', 'if', 'IMP', 'implements', 'implicit', 'import', 'in', 'indirect', 'infix', 'init', 'inline', 'inout', 'instanceof', 'int', 'interface', 'internal', 'IsoDateTimeOffsetConverter', 'iterable', 'is', 'jdec', 'jenc', 'jpipe', 'json', 'json_converter', 'json_serializer', 'json_token', 'json_writer', 'JSONAny', 'JSONCodingKey', 'JSONDecoder', 'JSONEncoder', 'JsonException', 'JsonGenerator', 'JsonNode', 'JSONNull', 'JsonParser', 'JsonReader', 'JsonTokenType', 'lambda', 'lazy', 'left', 'let', 'list', 'Locale', 'lock', 'long', 'map', 'MapEntry', 'metadata_property_handling', 'module', 'mutable', 'mutating', 'namespace', 'native', 'new', 'newtonsoft', 'nil', 'NO', 'noexcept', 'nonatomic', 'none', 'None', 'nonlocal', 'nonmutating', 'NSObject', 'noSuchMethod', 'not', 'not_eq', 'NSError', 'NSString', 'NULL', 'null', 'nullptr', 'number', 'object', 'ObjectMapper', 'of', 'oneway', 'open', 'operator', 'optional', 'or', 'or_eq', 'out', 'override', 'package', 'params', 'pass', 'port', 'postfix', 'precedence', 'prefix', 'print', 'printf', 'printMembers', 'private', 'protected', 'Protocol', 'protocol', 'public', 'quicktype', 'raise', 'range', 'readonly', 'ref', 'RegExp', 'register', 'reinterpret_cast', 'repeat', 'require', 'required', 'requires', 'restrict', 'retain', 'rethrows', 'return', 'right', 'runtimeType', 's', 'sbyte', 'sealed', 'SEL', 'select', 'Self', 'Serializable', 'self', 'Sendable', 'serialize', 'SerialName', 'KSerializer', 'PrimitiveKind', 'SerialDescriptor', 'SerializerProvider', 'set', 'short', 'signed', 'SimpleModule', 'sizeof', 'stackalloc', 'Standards', 'static', 'static_assert', 'static_cast', 'StdDeserializer', 'StdSerializer', 'strictfp', 'string', 'struct', 'subscript', 'super', 'switch', 'symbol', 'synchronized', 'system', 'template', 'then', 'this', 'thread_local', 'throw', 'throws', 'TimeOnly', 'TimeOnlyConverter', 'TimeZone', 'to_json', 'top_level', 'toString', 'transient', 'True', 'true', 'try', 'Type', 'type', 'typealias', 'typedef', 'typeid', 'typename', 'typeof', 'uint', 'ulong', 'unchecked', 'undefined', 'union', 'UseSerializers', 'unowned', 'unsafe', 'unsigned', 'ushort', 'using', 'Utf8JsonReader', 'Utf8JsonWriter', 'UUID', 'var', 'virtual', 'void', 'volatile', 'wchar_t', 'weak', 'where', 'while', 'willSet', 'with', 'xor', 'xor_eq', 'YES', 'yield', 'dummy']);
 _TopLevel = PropTypes.shape({
     "enum": PropTypes.oneOfType([_Enum, PropTypes.oneOf([null])]),
 });
diff --git a/base/schema-javascript-prop-types/test/inputs/schema/keyword-unions.schema/default/toplevel.js b/head/schema-javascript-prop-types/test/inputs/schema/keyword-unions.schema/default/toplevel.js
index b2ee5ab..3bc9c0f 100644
--- a/base/schema-javascript-prop-types/test/inputs/schema/keyword-unions.schema/default/toplevel.js
+++ b/head/schema-javascript-prop-types/test/inputs/schema/keyword-unions.schema/default/toplevel.js
@@ -48,6 +48,7 @@ let _JSONNode;
 let _JSONParser;
 let _JSONReader;
 let _JSONTokenType;
+let _KSerializer;
 let _Locale;
 let _MapEntry;
 let _No;
@@ -57,11 +58,15 @@ let _NSString;
 let _Null;
 let _None;
 let _ObjectMapper;
+let _PrimitiveKind;
 let _Protocol;
 let _RegExp;
 let _Sel;
 let _Self;
 let _Sendable;
+let _SerialDescriptor;
+let _SerialName;
+let _Serializable;
 let _SerializerProvider;
 let _SimpleModule;
 let _Standards;
@@ -73,6 +78,7 @@ let _TimeZone;
 let _True;
 let _Type;
 let _UUID;
+let _UseSerializers;
 let _Utf8JSONReader;
 let _Utf8JSONWriter;
 let _Yes;
@@ -415,6 +421,8 @@ _JSONReader = PropTypes.shape({
 });
 _JSONTokenType = PropTypes.shape({
 });
+_KSerializer = PropTypes.shape({
+});
 _Locale = PropTypes.shape({
 });
 _MapEntry = PropTypes.shape({
@@ -433,6 +441,8 @@ _None = PropTypes.shape({
 });
 _ObjectMapper = PropTypes.shape({
 });
+_PrimitiveKind = PropTypes.shape({
+});
 _Protocol = PropTypes.shape({
 });
 _RegExp = PropTypes.shape({
@@ -443,6 +453,12 @@ _Self = PropTypes.shape({
 });
 _Sendable = PropTypes.shape({
 });
+_SerialDescriptor = PropTypes.shape({
+});
+_SerialName = PropTypes.shape({
+});
+_Serializable = PropTypes.shape({
+});
 _SerializerProvider = PropTypes.shape({
 });
 _SimpleModule = PropTypes.shape({
@@ -465,6 +481,8 @@ _Type = PropTypes.shape({
 });
 _UUID = PropTypes.shape({
 });
+_UseSerializers = PropTypes.shape({
+});
 _Utf8JSONReader = PropTypes.shape({
 });
 _Utf8JSONWriter = PropTypes.shape({
@@ -1182,6 +1200,7 @@ _TopLevel = PropTypes.shape({
     "JsonParser": PropTypes.oneOfType([_JSONParser, PropTypes.number, PropTypes.oneOf([null])]),
     "JsonReader": PropTypes.oneOfType([_JSONReader, PropTypes.number, PropTypes.oneOf([null])]),
     "JsonTokenType": PropTypes.oneOfType([_JSONTokenType, PropTypes.number, PropTypes.oneOf([null])]),
+    "KSerializer": PropTypes.oneOfType([_KSerializer, PropTypes.number, PropTypes.oneOf([null])]),
     "lambda": PropTypes.oneOfType([_Lambda, PropTypes.number, PropTypes.oneOf([null])]),
     "lazy": PropTypes.oneOfType([_Lazy, PropTypes.number, PropTypes.oneOf([null])]),
     "left": PropTypes.oneOfType([_Left, PropTypes.number, PropTypes.oneOf([null])]),
@@ -1236,6 +1255,7 @@ _TopLevel = PropTypes.shape({
     "postfix": PropTypes.oneOfType([_Postfix, PropTypes.number, PropTypes.oneOf([null])]),
     "precedence": PropTypes.oneOfType([_Precedence, PropTypes.number, PropTypes.oneOf([null])]),
     "prefix": PropTypes.oneOfType([_Prefix, PropTypes.number, PropTypes.oneOf([null])]),
+    "PrimitiveKind": PropTypes.oneOfType([_PrimitiveKind, PropTypes.number, PropTypes.oneOf([null])]),
     "print": PropTypes.oneOfType([_Print, PropTypes.number, PropTypes.oneOf([null])]),
     "printf": PropTypes.oneOfType([_Printf, PropTypes.number, PropTypes.oneOf([null])]),
     "printMembers": PropTypes.oneOfType([_PrintMembers, PropTypes.number, PropTypes.oneOf([null])]),
@@ -1270,8 +1290,11 @@ _TopLevel = PropTypes.shape({
     "Self": PropTypes.oneOfType([_Self, PropTypes.number, PropTypes.oneOf([null])]),
     "self": PropTypes.oneOfType([_SelfClass, PropTypes.number, PropTypes.oneOf([null])]),
     "Sendable": PropTypes.oneOfType([_Sendable, PropTypes.number, PropTypes.oneOf([null])]),
+    "SerialDescriptor": PropTypes.oneOfType([_SerialDescriptor, PropTypes.number, PropTypes.oneOf([null])]),
+    "Serializable": PropTypes.oneOfType([_Serializable, PropTypes.number, PropTypes.oneOf([null])]),
     "serialize": PropTypes.oneOfType([_Serialize, PropTypes.number, PropTypes.oneOf([null])]),
     "SerializerProvider": PropTypes.oneOfType([_SerializerProvider, PropTypes.number, PropTypes.oneOf([null])]),
+    "SerialName": PropTypes.oneOfType([_SerialName, PropTypes.number, PropTypes.oneOf([null])]),
     "set": PropTypes.oneOfType([_Set, PropTypes.number, PropTypes.oneOf([null])]),
     "short": PropTypes.oneOfType([_Short, PropTypes.number, PropTypes.oneOf([null])]),
     "signed": PropTypes.oneOfType([_Signed, PropTypes.number, PropTypes.oneOf([null])]),
@@ -1324,6 +1347,7 @@ _TopLevel = PropTypes.shape({
     "unowned": PropTypes.oneOfType([_Unowned, PropTypes.number, PropTypes.oneOf([null])]),
     "unsafe": PropTypes.oneOfType([_Unsafe, PropTypes.number, PropTypes.oneOf([null])]),
     "unsigned": PropTypes.oneOfType([_Unsigned, PropTypes.number, PropTypes.oneOf([null])]),
+    "UseSerializers": PropTypes.oneOfType([_UseSerializers, PropTypes.number, PropTypes.oneOf([null])]),
     "ushort": PropTypes.oneOfType([_Ushort, PropTypes.number, PropTypes.oneOf([null])]),
     "using": PropTypes.oneOfType([_Using, PropTypes.number, PropTypes.oneOf([null])]),
     "Utf8JsonReader": PropTypes.oneOfType([_Utf8JSONReader, PropTypes.number, PropTypes.oneOf([null])]),
diff --git a/base/schema-kotlin/test/inputs/schema/keyword-enum.schema/default/TopLevel.kt b/head/schema-kotlin/test/inputs/schema/keyword-enum.schema/default/TopLevel.kt
index 0c57642..13c5209 100644
--- a/base/schema-kotlin/test/inputs/schema/keyword-enum.schema/default/TopLevel.kt
+++ b/head/schema-kotlin/test/inputs/schema/keyword-enum.schema/default/TopLevel.kt
@@ -285,9 +285,14 @@ enum class EnumEnum(val value: String) {
     Sel("SEL"),
     Select("select"),
     Self("Self"),
+    Serializable("Serializable"),
     EnumSelf("self"),
     Sendable("Sendable"),
     Serialize("serialize"),
+    SerialName("SerialName"),
+    KSerializer("KSerializer"),
+    PrimitiveKind("PrimitiveKind"),
+    SerialDescriptor("SerialDescriptor"),
     SerializerProvider("SerializerProvider"),
     Set("set"),
     EnumShort("short"),
@@ -338,6 +343,7 @@ enum class EnumEnum(val value: String) {
     Unchecked("unchecked"),
     Undefined("undefined"),
     Union("union"),
+    UseSerializers("UseSerializers"),
     Unowned("unowned"),
     Unsafe("unsafe"),
     Unsigned("unsigned"),
@@ -621,9 +627,14 @@ enum class EnumEnum(val value: String) {
             "SEL"                        -> Sel
             "select"                     -> Select
             "Self"                       -> Self
+            "Serializable"               -> Serializable
             "self"                       -> EnumSelf
             "Sendable"                   -> Sendable
             "serialize"                  -> Serialize
+            "SerialName"                 -> SerialName
+            "KSerializer"                -> KSerializer
+            "PrimitiveKind"              -> PrimitiveKind
+            "SerialDescriptor"           -> SerialDescriptor
             "SerializerProvider"         -> SerializerProvider
             "set"                        -> Set
             "short"                      -> EnumShort
@@ -674,6 +685,7 @@ enum class EnumEnum(val value: String) {
             "unchecked"                  -> Unchecked
             "undefined"                  -> Undefined
             "union"                      -> Union
+            "UseSerializers"             -> UseSerializers
             "unowned"                    -> Unowned
             "unsafe"                     -> Unsafe
             "unsigned"                   -> Unsigned
diff --git a/base/schema-kotlin-jackson/test/inputs/schema/keyword-enum.schema/default/TopLevel.kt b/head/schema-kotlin-jackson/test/inputs/schema/keyword-enum.schema/default/TopLevel.kt
index 0922170..00e0de1 100644
--- a/base/schema-kotlin-jackson/test/inputs/schema/keyword-enum.schema/default/TopLevel.kt
+++ b/head/schema-kotlin-jackson/test/inputs/schema/keyword-enum.schema/default/TopLevel.kt
@@ -298,9 +298,14 @@ enum class EnumEnum(val value: String) {
     Sel("SEL"),
     Select("select"),
     Self("Self"),
+    Serializable("Serializable"),
     EnumSelf("self"),
     Sendable("Sendable"),
     Serialize("serialize"),
+    SerialName("SerialName"),
+    KSerializer("KSerializer"),
+    PrimitiveKind("PrimitiveKind"),
+    SerialDescriptor("SerialDescriptor"),
     EnumSerializerProvider("SerializerProvider"),
     Set("set"),
     EnumShort("short"),
@@ -351,6 +356,7 @@ enum class EnumEnum(val value: String) {
     Unchecked("unchecked"),
     Undefined("undefined"),
     Union("union"),
+    UseSerializers("UseSerializers"),
     Unowned("unowned"),
     Unsafe("unsafe"),
     Unsigned("unsigned"),
@@ -634,9 +640,14 @@ enum class EnumEnum(val value: String) {
             "SEL"                        -> Sel
             "select"                     -> Select
             "Self"                       -> Self
+            "Serializable"               -> Serializable
             "self"                       -> EnumSelf
             "Sendable"                   -> Sendable
             "serialize"                  -> Serialize
+            "SerialName"                 -> SerialName
+            "KSerializer"                -> KSerializer
+            "PrimitiveKind"              -> PrimitiveKind
+            "SerialDescriptor"           -> SerialDescriptor
             "SerializerProvider"         -> EnumSerializerProvider
             "set"                        -> Set
             "short"                      -> EnumShort
@@ -687,6 +698,7 @@ enum class EnumEnum(val value: String) {
             "unchecked"                  -> Unchecked
             "undefined"                  -> Undefined
             "union"                      -> Union
+            "UseSerializers"             -> UseSerializers
             "unowned"                    -> Unowned
             "unsafe"                     -> Unsafe
             "unsigned"                   -> Unsigned
diff --git a/base/schema-kotlinx/test/inputs/schema/keyword-enum.schema/default/TopLevel.kt b/head/schema-kotlinx/test/inputs/schema/keyword-enum.schema/default/TopLevel.kt
index 3614e9b..01acef3 100644
--- a/base/schema-kotlinx/test/inputs/schema/keyword-enum.schema/default/TopLevel.kt
+++ b/head/schema-kotlinx/test/inputs/schema/keyword-enum.schema/default/TopLevel.kt
@@ -274,9 +274,14 @@ enum class EnumEnum(val value: String) {
     @SerialName("SEL") Sel("SEL"),
     @SerialName("select") Select("select"),
     @SerialName("Self") Self("Self"),
+    @SerialName("Serializable") EnumSerializable("Serializable"),
     @SerialName("self") EnumSelf("self"),
     @SerialName("Sendable") Sendable("Sendable"),
     @SerialName("serialize") Serialize("serialize"),
+    @SerialName("SerialName") EnumSerialName("SerialName"),
+    @SerialName("KSerializer") EnumKSerializer("KSerializer"),
+    @SerialName("PrimitiveKind") EnumPrimitiveKind("PrimitiveKind"),
+    @SerialName("SerialDescriptor") EnumSerialDescriptor("SerialDescriptor"),
     @SerialName("SerializerProvider") SerializerProvider("SerializerProvider"),
     @SerialName("set") Set("set"),
     @SerialName("short") EnumShort("short"),
@@ -327,6 +332,7 @@ enum class EnumEnum(val value: String) {
     @SerialName("unchecked") Unchecked("unchecked"),
     @SerialName("undefined") Undefined("undefined"),
     @SerialName("union") Union("union"),
+    @SerialName("UseSerializers") EnumUseSerializers("UseSerializers"),
     @SerialName("unowned") Unowned("unowned"),
     @SerialName("unsafe") Unsafe("unsafe"),
     @SerialName("unsigned") Unsigned("unsigned"),
diff --git a/base/schema-objective-c/test/inputs/schema/keyword-enum.schema/default/QTTopLevel.h b/head/schema-objective-c/test/inputs/schema/keyword-enum.schema/default/QTTopLevel.h
index 462b402..a54a0b4 100644
--- a/base/schema-objective-c/test/inputs/schema/keyword-enum.schema/default/QTTopLevel.h
+++ b/head/schema-objective-c/test/inputs/schema/keyword-enum.schema/default/QTTopLevel.h
@@ -272,9 +272,14 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)sel;
 + (QTEnum *)select;
 + (QTEnum *)self;
++ (QTEnum *)serializable;
 + (QTEnum *)enumSelf;
 + (QTEnum *)sendable;
 + (QTEnum *)serialize;
++ (QTEnum *)serialName;
++ (QTEnum *)kSerializer;
++ (QTEnum *)primitiveKind;
++ (QTEnum *)serialDescriptor;
 + (QTEnum *)serializerProvider;
 + (QTEnum *)set;
 + (QTEnum *)enumShort;
@@ -325,6 +330,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)unchecked;
 + (QTEnum *)undefined;
 + (QTEnum *)enumUnion;
++ (QTEnum *)useSerializers;
 + (QTEnum *)unowned;
 + (QTEnum *)unsafe;
 + (QTEnum *)enumUnsigned;
diff --git a/base/schema-objective-c/test/inputs/schema/keyword-enum.schema/default/QTTopLevel.m b/head/schema-objective-c/test/inputs/schema/keyword-enum.schema/default/QTTopLevel.m
index 14a7a07..dbb558e 100644
--- a/base/schema-objective-c/test/inputs/schema/keyword-enum.schema/default/QTTopLevel.m
+++ b/head/schema-objective-c/test/inputs/schema/keyword-enum.schema/default/QTTopLevel.m
@@ -275,9 +275,14 @@ NS_ASSUME_NONNULL_BEGIN
         @"SEL": [[QTEnum alloc] initWithValue:@"SEL"],
         @"select": [[QTEnum alloc] initWithValue:@"select"],
         @"Self": [[QTEnum alloc] initWithValue:@"Self"],
+        @"Serializable": [[QTEnum alloc] initWithValue:@"Serializable"],
         @"self": [[QTEnum alloc] initWithValue:@"self"],
         @"Sendable": [[QTEnum alloc] initWithValue:@"Sendable"],
         @"serialize": [[QTEnum alloc] initWithValue:@"serialize"],
+        @"SerialName": [[QTEnum alloc] initWithValue:@"SerialName"],
+        @"KSerializer": [[QTEnum alloc] initWithValue:@"KSerializer"],
+        @"PrimitiveKind": [[QTEnum alloc] initWithValue:@"PrimitiveKind"],
+        @"SerialDescriptor": [[QTEnum alloc] initWithValue:@"SerialDescriptor"],
         @"SerializerProvider": [[QTEnum alloc] initWithValue:@"SerializerProvider"],
         @"set": [[QTEnum alloc] initWithValue:@"set"],
         @"short": [[QTEnum alloc] initWithValue:@"short"],
@@ -328,6 +333,7 @@ NS_ASSUME_NONNULL_BEGIN
         @"unchecked": [[QTEnum alloc] initWithValue:@"unchecked"],
         @"undefined": [[QTEnum alloc] initWithValue:@"undefined"],
         @"union": [[QTEnum alloc] initWithValue:@"union"],
+        @"UseSerializers": [[QTEnum alloc] initWithValue:@"UseSerializers"],
         @"unowned": [[QTEnum alloc] initWithValue:@"unowned"],
         @"unsafe": [[QTEnum alloc] initWithValue:@"unsafe"],
         @"unsigned": [[QTEnum alloc] initWithValue:@"unsigned"],
@@ -611,9 +617,14 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)sel { return QTEnum.values[@"SEL"]; }
 + (QTEnum *)select { return QTEnum.values[@"select"]; }
 + (QTEnum *)self { return QTEnum.values[@"Self"]; }
++ (QTEnum *)serializable { return QTEnum.values[@"Serializable"]; }
 + (QTEnum *)enumSelf { return QTEnum.values[@"self"]; }
 + (QTEnum *)sendable { return QTEnum.values[@"Sendable"]; }
 + (QTEnum *)serialize { return QTEnum.values[@"serialize"]; }
++ (QTEnum *)serialName { return QTEnum.values[@"SerialName"]; }
++ (QTEnum *)kSerializer { return QTEnum.values[@"KSerializer"]; }
++ (QTEnum *)primitiveKind { return QTEnum.values[@"PrimitiveKind"]; }
++ (QTEnum *)serialDescriptor { return QTEnum.values[@"SerialDescriptor"]; }
 + (QTEnum *)serializerProvider { return QTEnum.values[@"SerializerProvider"]; }
 + (QTEnum *)set { return QTEnum.values[@"set"]; }
 + (QTEnum *)enumShort { return QTEnum.values[@"short"]; }
@@ -664,6 +675,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)unchecked { return QTEnum.values[@"unchecked"]; }
 + (QTEnum *)undefined { return QTEnum.values[@"undefined"]; }
 + (QTEnum *)enumUnion { return QTEnum.values[@"union"]; }
++ (QTEnum *)useSerializers { return QTEnum.values[@"UseSerializers"]; }
 + (QTEnum *)unowned { return QTEnum.values[@"unowned"]; }
 + (QTEnum *)unsafe { return QTEnum.values[@"unsafe"]; }
 + (QTEnum *)enumUnsigned { return QTEnum.values[@"unsigned"]; }
diff --git a/base/schema-objective-c/test/inputs/schema/keyword-unions.schema/default/QTTopLevel.h b/head/schema-objective-c/test/inputs/schema/keyword-unions.schema/default/QTTopLevel.h
index 2e520f0..4e8287c 100644
--- a/base/schema-objective-c/test/inputs/schema/keyword-unions.schema/default/QTTopLevel.h
+++ b/head/schema-objective-c/test/inputs/schema/keyword-unions.schema/default/QTTopLevel.h
@@ -148,6 +148,7 @@
 @class QTJSONToken;
 @class QTJSONTokenType;
 @class QTJSONWriter;
+@class QTKSerializer;
 @class QTLambda;
 @class QTLazy;
 @class QTLeft;
@@ -196,6 +197,7 @@
 @class QTPostfix;
 @class QTPrecedence;
 @class QTPrefix;
+@class QTPrimitiveKind;
 @class QTPrint;
 @class QTPrintMembers;
 @class QTPrintf;
@@ -275,6 +277,9 @@
 @class QTSelect;
 @class QTSelf;
 @class QTSendable;
+@class QTSerialDescriptor;
+@class QTSerialName;
+@class QTSerializable;
 @class QTSerialize;
 @class QTSerializerProvider;
 @class QTSet;
@@ -322,6 +327,7 @@
 @class QTUndefined;
 @class QTUnowned;
 @class QTUnsafe;
+@class QTUseSerializers;
 @class QTUshort;
 @class QTUsing;
 @class QTUtf8JSONReader;
@@ -523,6 +529,7 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, nullable, copy)   id jsonParser;
 @property (nonatomic, nullable, copy)   id jsonReader;
 @property (nonatomic, nullable, copy)   id jsonTokenType;
+@property (nonatomic, nullable, copy)   id kSerializer;
 @property (nonatomic, nullable, copy)   id lambda;
 @property (nonatomic, nullable, copy)   id lazy;
 @property (nonatomic, nullable, copy)   id left;
@@ -577,6 +584,7 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, nullable, copy)   id postfix;
 @property (nonatomic, nullable, copy)   id precedence;
 @property (nonatomic, nullable, copy)   id prefix;
+@property (nonatomic, nullable, copy)   id primitiveKind;
 @property (nonatomic, nullable, copy)   id print;
 @property (nonatomic, nullable, copy)   id printf;
 @property (nonatomic, nullable, copy)   id printMembers;
@@ -611,8 +619,11 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, nullable, copy)   id self;
 @property (nonatomic, nullable, copy)   id qtTopLevelSelf;
 @property (nonatomic, nullable, copy)   id sendable;
+@property (nonatomic, nullable, copy)   id serialDescriptor;
+@property (nonatomic, nullable, copy)   id serializable;
 @property (nonatomic, nullable, copy)   id serialize;
 @property (nonatomic, nullable, copy)   id serializerProvider;
+@property (nonatomic, nullable, copy)   id serialName;
 @property (nonatomic, nullable, copy)   id set;
 @property (nonatomic, nullable, copy)   id qtTopLevelShort;
 @property (nonatomic, nullable, copy)   id qtTopLevelSigned;
@@ -665,6 +676,7 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, nullable, copy)   id unowned;
 @property (nonatomic, nullable, copy)   id unsafe;
 @property (nonatomic, nullable, copy)   id qtTopLevelUnsigned;
+@property (nonatomic, nullable, copy)   id useSerializers;
 @property (nonatomic, nullable, copy)   id ushort;
 @property (nonatomic, nullable, copy)   id using;
 @property (nonatomic, nullable, copy)   id utf8JSONReader;
@@ -1117,6 +1129,9 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @interface QTJSONWriter : NSObject
 @end
 
+@interface QTKSerializer : NSObject
+@end
+
 @interface QTLambda : NSObject
 @end
 
@@ -1261,6 +1276,9 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @interface QTPrefix : NSObject
 @end
 
+@interface QTPrimitiveKind : NSObject
+@end
+
 @interface QTPrint : NSObject
 @end
 
@@ -1498,6 +1516,15 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @interface QTSendable : NSObject
 @end
 
+@interface QTSerialDescriptor : NSObject
+@end
+
+@interface QTSerialName : NSObject
+@end
+
+@interface QTSerializable : NSObject
+@end
+
 @interface QTSerialize : NSObject
 @end
 
@@ -1639,6 +1666,9 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @interface QTUnsafe : NSObject
 @end
 
+@interface QTUseSerializers : NSObject
+@end
+
 @interface QTUshort : NSObject
 @end
 
diff --git a/base/schema-objective-c/test/inputs/schema/keyword-unions.schema/default/QTTopLevel.m b/head/schema-objective-c/test/inputs/schema/keyword-unions.schema/default/QTTopLevel.m
index ee63d9b..2186833 100644
--- a/base/schema-objective-c/test/inputs/schema/keyword-unions.schema/default/QTTopLevel.m
+++ b/head/schema-objective-c/test/inputs/schema/keyword-unions.schema/default/QTTopLevel.m
@@ -723,6 +723,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTKSerializer (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTLambda (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -963,6 +968,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTPrimitiveKind (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTPrint (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -1358,6 +1368,21 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTSerialDescriptor (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
+@interface QTSerialName (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
+@interface QTSerializable (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTSerialize (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -1593,6 +1618,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTUseSerializers (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTUshort (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -1886,6 +1916,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"JsonParser": @"jsonParser",
         @"JsonReader": @"jsonReader",
         @"JsonTokenType": @"jsonTokenType",
+        @"KSerializer": @"kSerializer",
         @"lambda": @"lambda",
         @"lazy": @"lazy",
         @"left": @"left",
@@ -1940,6 +1971,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"postfix": @"postfix",
         @"precedence": @"precedence",
         @"prefix": @"prefix",
+        @"PrimitiveKind": @"primitiveKind",
         @"print": @"print",
         @"printf": @"printf",
         @"printMembers": @"printMembers",
@@ -1974,8 +2006,11 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"Self": @"self",
         @"self": @"qtTopLevelSelf",
         @"Sendable": @"sendable",
+        @"SerialDescriptor": @"serialDescriptor",
+        @"Serializable": @"serializable",
         @"serialize": @"serialize",
         @"SerializerProvider": @"serializerProvider",
+        @"SerialName": @"serialName",
         @"set": @"set",
         @"short": @"qtTopLevelShort",
         @"signed": @"qtTopLevelSigned",
@@ -2028,6 +2063,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"unowned": @"unowned",
         @"unsafe": @"unsafe",
         @"unsigned": @"qtTopLevelUnsigned",
+        @"UseSerializers": @"useSerializers",
         @"ushort": @"ushort",
         @"using": @"using",
         @"Utf8JsonReader": @"utf8JSONReader",
@@ -7649,6 +7685,45 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTKSerializer
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTKSerializer alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTKSerializer.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTKSerializer.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTKSerializer.properties.allValues];
+}
+@end
+
 @implementation QTLambda
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -9521,6 +9596,45 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTPrimitiveKind
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTPrimitiveKind alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTPrimitiveKind.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTPrimitiveKind.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTPrimitiveKind.properties.allValues];
+}
+@end
+
 @implementation QTPrint
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -12602,6 +12716,123 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTSerialDescriptor
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSerialDescriptor alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTSerialDescriptor.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTSerialDescriptor.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTSerialDescriptor.properties.allValues];
+}
+@end
+
+@implementation QTSerialName
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSerialName alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTSerialName.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTSerialName.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTSerialName.properties.allValues];
+}
+@end
+
+@implementation QTSerializable
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSerializable alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTSerializable.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTSerializable.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTSerializable.properties.allValues];
+}
+@end
+
 @implementation QTSerialize
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -14435,6 +14666,45 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTUseSerializers
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTUseSerializers alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTUseSerializers.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTUseSerializers.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTUseSerializers.properties.allValues];
+}
+@end
+
 @implementation QTUshort
 + (NSDictionary<NSString *, NSString *> *)properties
 {
diff --git a/base/schema-php/test/inputs/schema/keyword-enum.schema/default/TopLevel.php b/head/schema-php/test/inputs/schema/keyword-enum.schema/default/TopLevel.php
index 53113db..fd294c1 100644
--- a/base/schema-php/test/inputs/schema/keyword-enum.schema/default/TopLevel.php
+++ b/head/schema-php/test/inputs/schema/keyword-enum.schema/default/TopLevel.php
@@ -370,9 +370,14 @@ class EnumEnum {
     public static EnumEnum $SEL;
     public static EnumEnum $SELECT;
     public static EnumEnum $SELF;
+    public static EnumEnum $SERIALIZABLE;
     public static EnumEnum $ENUM_SELF;
     public static EnumEnum $SENDABLE;
     public static EnumEnum $SERIALIZE;
+    public static EnumEnum $SERIAL_NAME;
+    public static EnumEnum $K_SERIALIZER;
+    public static EnumEnum $PRIMITIVE_KIND;
+    public static EnumEnum $SERIAL_DESCRIPTOR;
     public static EnumEnum $SERIALIZER_PROVIDER;
     public static EnumEnum $SET;
     public static EnumEnum $SHORT;
@@ -423,6 +428,7 @@ class EnumEnum {
     public static EnumEnum $UNCHECKED;
     public static EnumEnum $UNDEFINED;
     public static EnumEnum $UNION;
+    public static EnumEnum $USE_SERIALIZERS;
     public static EnumEnum $UNOWNED;
     public static EnumEnum $UNSAFE;
     public static EnumEnum $UNSIGNED;
@@ -704,9 +710,14 @@ class EnumEnum {
         EnumEnum::$SEL = new EnumEnum('SEL');
         EnumEnum::$SELECT = new EnumEnum('select');
         EnumEnum::$SELF = new EnumEnum('Self');
+        EnumEnum::$SERIALIZABLE = new EnumEnum('Serializable');
         EnumEnum::$ENUM_SELF = new EnumEnum('self');
         EnumEnum::$SENDABLE = new EnumEnum('Sendable');
         EnumEnum::$SERIALIZE = new EnumEnum('serialize');
+        EnumEnum::$SERIAL_NAME = new EnumEnum('SerialName');
+        EnumEnum::$K_SERIALIZER = new EnumEnum('KSerializer');
+        EnumEnum::$PRIMITIVE_KIND = new EnumEnum('PrimitiveKind');
+        EnumEnum::$SERIAL_DESCRIPTOR = new EnumEnum('SerialDescriptor');
         EnumEnum::$SERIALIZER_PROVIDER = new EnumEnum('SerializerProvider');
         EnumEnum::$SET = new EnumEnum('set');
         EnumEnum::$SHORT = new EnumEnum('short');
@@ -757,6 +768,7 @@ class EnumEnum {
         EnumEnum::$UNCHECKED = new EnumEnum('unchecked');
         EnumEnum::$UNDEFINED = new EnumEnum('undefined');
         EnumEnum::$UNION = new EnumEnum('union');
+        EnumEnum::$USE_SERIALIZERS = new EnumEnum('UseSerializers');
         EnumEnum::$UNOWNED = new EnumEnum('unowned');
         EnumEnum::$UNSAFE = new EnumEnum('unsafe');
         EnumEnum::$UNSIGNED = new EnumEnum('unsigned');
@@ -1050,9 +1062,14 @@ class EnumEnum {
             case EnumEnum::$SEL->enum: return 'SEL';
             case EnumEnum::$SELECT->enum: return 'select';
             case EnumEnum::$SELF->enum: return 'Self';
+            case EnumEnum::$SERIALIZABLE->enum: return 'Serializable';
             case EnumEnum::$ENUM_SELF->enum: return 'self';
             case EnumEnum::$SENDABLE->enum: return 'Sendable';
             case EnumEnum::$SERIALIZE->enum: return 'serialize';
+            case EnumEnum::$SERIAL_NAME->enum: return 'SerialName';
+            case EnumEnum::$K_SERIALIZER->enum: return 'KSerializer';
+            case EnumEnum::$PRIMITIVE_KIND->enum: return 'PrimitiveKind';
+            case EnumEnum::$SERIAL_DESCRIPTOR->enum: return 'SerialDescriptor';
             case EnumEnum::$SERIALIZER_PROVIDER->enum: return 'SerializerProvider';
             case EnumEnum::$SET->enum: return 'set';
             case EnumEnum::$SHORT->enum: return 'short';
@@ -1103,6 +1120,7 @@ class EnumEnum {
             case EnumEnum::$UNCHECKED->enum: return 'unchecked';
             case EnumEnum::$UNDEFINED->enum: return 'undefined';
             case EnumEnum::$UNION->enum: return 'union';
+            case EnumEnum::$USE_SERIALIZERS->enum: return 'UseSerializers';
             case EnumEnum::$UNOWNED->enum: return 'unowned';
             case EnumEnum::$UNSAFE->enum: return 'unsafe';
             case EnumEnum::$UNSIGNED->enum: return 'unsigned';
@@ -1394,9 +1412,14 @@ class EnumEnum {
             case 'SEL': return EnumEnum::$SEL;
             case 'select': return EnumEnum::$SELECT;
             case 'Self': return EnumEnum::$SELF;
+            case 'Serializable': return EnumEnum::$SERIALIZABLE;
             case 'self': return EnumEnum::$ENUM_SELF;
             case 'Sendable': return EnumEnum::$SENDABLE;
             case 'serialize': return EnumEnum::$SERIALIZE;
+            case 'SerialName': return EnumEnum::$SERIAL_NAME;
+            case 'KSerializer': return EnumEnum::$K_SERIALIZER;
+            case 'PrimitiveKind': return EnumEnum::$PRIMITIVE_KIND;
+            case 'SerialDescriptor': return EnumEnum::$SERIAL_DESCRIPTOR;
             case 'SerializerProvider': return EnumEnum::$SERIALIZER_PROVIDER;
             case 'set': return EnumEnum::$SET;
             case 'short': return EnumEnum::$SHORT;
@@ -1447,6 +1470,7 @@ class EnumEnum {
             case 'unchecked': return EnumEnum::$UNCHECKED;
             case 'undefined': return EnumEnum::$UNDEFINED;
             case 'union': return EnumEnum::$UNION;
+            case 'UseSerializers': return EnumEnum::$USE_SERIALIZERS;
             case 'unowned': return EnumEnum::$UNOWNED;
             case 'unsafe': return EnumEnum::$UNSAFE;
             case 'unsigned': return EnumEnum::$UNSIGNED;
diff --git a/base/schema-php/test/inputs/schema/keyword-unions.schema/default/TopLevel.php b/head/schema-php/test/inputs/schema/keyword-unions.schema/default/TopLevel.php
index 7972b7b..e1c6aa8 100644
--- a/base/schema-php/test/inputs/schema/keyword-unions.schema/default/TopLevel.php
+++ b/head/schema-php/test/inputs/schema/keyword-unions.schema/default/TopLevel.php
@@ -176,6 +176,7 @@ class TopLevel {
     private JSONParser|float|null $jsonParser; // json:JsonParser Optional
     private JSONReader|float|null $jsonReader; // json:JsonReader Optional
     private JSONTokenType|float|null $jsonTokenType; // json:JsonTokenType Optional
+    private KSerializer|float|null $kSerializer; // json:KSerializer Optional
     private Lambda|float|null $lambda; // json:lambda Optional
     private Lazy|float|null $lazy; // json:lazy Optional
     private Left|float|null $left; // json:left Optional
@@ -230,6 +231,7 @@ class TopLevel {
     private Postfix|float|null $postfix; // json:postfix Optional
     private Precedence|float|null $precedence; // json:precedence Optional
     private Prefix|float|null $prefix; // json:prefix Optional
+    private PrimitiveKind|float|null $primitiveKind; // json:PrimitiveKind Optional
     private PrintClass|float|null $print; // json:print Optional
     private Printf|float|null $printf; // json:printf Optional
     private PrintMembers|float|null $printMembers; // json:printMembers Optional
@@ -264,8 +266,11 @@ class TopLevel {
     private SelfClass|float|null $self; // json:Self Optional
     private UnionSelfSelf|float|null $topLevelSelf; // json:self Optional
     private Sendable|float|null $sendable; // json:Sendable Optional
+    private SerialDescriptor|float|null $serialDescriptor; // json:SerialDescriptor Optional
+    private SerializableClass|float|null $serializable; // json:Serializable Optional
     private Serialize|float|null $serialize; // json:serialize Optional
     private SerializerProvider|float|null $serializerProvider; // json:SerializerProvider Optional
+    private SerialName|float|null $serialName; // json:SerialName Optional
     private Set|float|null $set; // json:set Optional
     private Short|float|null $short; // json:short Optional
     private Signed|float|null $signed; // json:signed Optional
@@ -318,6 +323,7 @@ class TopLevel {
     private Unowned|float|null $unowned; // json:unowned Optional
     private Unsafe|float|null $unsafe; // json:unsafe Optional
     private Unsigned|float|null $unsigned; // json:unsigned Optional
+    private UseSerializers|float|null $useSerializers; // json:UseSerializers Optional
     private Ushort|float|null $ushort; // json:ushort Optional
     private Using|float|null $using; // json:using Optional
     private Utf8JSONReader|float|null $utf8JSONReader; // json:Utf8JsonReader Optional
@@ -511,6 +517,7 @@ class TopLevel {
      * @param JSONParser|float|null $jsonParser
      * @param JSONReader|float|null $jsonReader
      * @param JSONTokenType|float|null $jsonTokenType
+     * @param KSerializer|float|null $kSerializer
      * @param Lambda|float|null $lambda
      * @param Lazy|float|null $lazy
      * @param Left|float|null $left
@@ -565,6 +572,7 @@ class TopLevel {
      * @param Postfix|float|null $postfix
      * @param Precedence|float|null $precedence
      * @param Prefix|float|null $prefix
+     * @param PrimitiveKind|float|null $primitiveKind
      * @param PrintClass|float|null $print
      * @param Printf|float|null $printf
      * @param PrintMembers|float|null $printMembers
@@ -599,8 +607,11 @@ class TopLevel {
      * @param SelfClass|float|null $self
      * @param UnionSelfSelf|float|null $topLevelSelf
      * @param Sendable|float|null $sendable
+     * @param SerialDescriptor|float|null $serialDescriptor
+     * @param SerializableClass|float|null $serializable
      * @param Serialize|float|null $serialize
      * @param SerializerProvider|float|null $serializerProvider
+     * @param SerialName|float|null $serialName
      * @param Set|float|null $set
      * @param Short|float|null $short
      * @param Signed|float|null $signed
@@ -653,6 +664,7 @@ class TopLevel {
      * @param Unowned|float|null $unowned
      * @param Unsafe|float|null $unsafe
      * @param Unsigned|float|null $unsigned
+     * @param UseSerializers|float|null $useSerializers
      * @param Ushort|float|null $ushort
      * @param Using|float|null $using
      * @param Utf8JSONReader|float|null $utf8JSONReader
@@ -673,7 +685,7 @@ class TopLevel {
      * @param Yes|float|null $yes
      * @param YieldClass|float|null $yield
      */
-    public function __construct(Union|float|null $empty, UnionBoolBool|float|null $topLevelBool, Complex|float|null $complex, Imaginery|float|null $imaginery, AbstractClass|float|null $abstract, Alignas|float|null $alignas, Alignof|float|null $alignof, AndClass|float|null $and, AndEq|float|null $andEq, AnyClass|float|null $topLevelAny, Any|float|null $any, ArrayClass|float|null $array, AsClass|float|null $as, ASM|float|null $asm, Assert|float|null $assert, Associatedtype|float|null $associatedtype, Associativity|float|null $associativity, Async|float|null $async, Atomic|float|null $atomic, AtomicCancel|float|null $atomicCancel, AtomicCommit|float|null $atomicCommit, AtomicNoexcept|float|null $atomicNoexcept, Auto|float|null $auto, Await|float|null $await, Base|float|null $base, Bitand|float|null $bitand, Bitor|float|null $bitor, BOOLClass|float|null $bool, UnionBoolBoolClass|float|null $purpleBool, Boolean|float|null $boolean, BreakClass|float|null $break, Bycopy|float|null $bycopy, Byref|float|null $byref, Byte|float|null $byte, Calendar|float|null $calendar, CaseClass|float|null $case, CatchClass|float|null $catch, Chan|float|null $chan, Char|float|null $char, Char16T|float|null $char16T, Char32T|float|null $char32T, Checked|float|null $checked, UnionClassClass|float|null $topLevelClass, ClassClass|float|null $class, CloneClass|float|null $clone, CoAwait|float|null $coAwait, CoReturn|float|null $coReturn, CoYield|float|null $coYield, Codable|float|null $codable, CodingKey|float|null $codingKey, CodingKeys|float|null $codingKeys, Compl|float|null $compl, Concept|float|null $concept, Console|float|null $console, ConstClass|float|null $const, ConstCast|float|null $constCast, Constexpr|float|null $constexpr, Constructor|float|null $constructor, ContinueClass|float|null $continue, Convenience|float|null $convenience, Convert|float|null $convert, ConverterClass|float|null $converter, CultureInfo|float|null $cultureInfo, Date|float|null $date, DateParseHandling|float|null $dateParseHandling, DateFormatter|float|null $dateFormatter, DateOnly|float|null $dateOnly, DateOnlyConverter|float|null $dateOnlyConverter, DateTimeClass|float|null $dateTime, DateTimeStyles|float|null $dateTimeStyles, Debugger|float|null $debugger, Decimal|float|null $decimal, DeclareClass|float|null $declare, Decltype|float|null $decltype, DecodeString|float|null $decodeString, Decoder|float|null $decoder, DecodingError|float|null $decodingError, Def|float|null $def, DefaultClass|float|null $default, Defer|float|null $defer, Deinit|float|null $deinit, Del|float|null $del, Delegate|float|null $delegate, Delete|float|null $delete, Dict|float|null $dict, Dictionary|float|null $dictionary, DidSet|float|null $didSet, DoClass|float|null $do, Double|float|null $double, ?float $dummy, Dynamic|float|null $dynamic, DynamicCast|float|null $dynamicCast, Elif|float|null $elif, ElseClass|float|null $else, EncodeQuickType|float|null $encodeQuickType, Encoder|float|null $encoder, EnumClass|float|null $enum, EnumValues|float|null $enumValues, EqualityContract|float|null $equalityContract, Equatable|float|null $equatable, Event|float|null $event, Except|float|null $except, ExceptionClass|float|null $exception, Explicit|float|null $explicit, Export|float|null $export, Exposing|float|null $exposing, ExtendsClass|float|null $extends, Extension|float|null $extension, Extern|float|null $extern, Fallthrough|float|null $fallthrough, UnionFalseFalse|float|null $topLevelFalse, FalseClass|float|null $false, Fileprivate|float|null $fileprivate, FinalClass|float|null $final, FinallyClass|float|null $finally, Fixed|float|null $fixed, FloatClass|float|null $float, ForClass|float|null $for, ForeachClass|float|null $foreach, FormatException|float|null $formatException, Friend|float|null $friend, From|float|null $from, FromJSON|float|null $fromJSON, Func|float|null $func, FunctionClass|float|null $function, Get|float|null $get, GlobalClass|float|null $global, Go|float|null $go, GotoClass|float|null $goto, Guard|float|null $guard, Hashable|float|null $hashable, HashCode|float|null $hashCode, Hasher|float|null $hasher, HasOwnProperty|float|null $hasOwnProperty, ID|float|null $id, IfClass|float|null $if, Imp|float|null $imp, ImplementsClass|float|null $implements, Implicit|float|null $implicit, Import|float|null $import, In|float|null $in, Indirect|float|null $indirect, Infix|float|null $infix, Init|float|null $init, Inline|float|null $inline, Inout|float|null $inout, InstanceofClass|float|null $instanceof, IntClass|float|null $int, InterfaceClass|float|null $interface, Internal|float|null $internal, Is|float|null $is, ISODateTimeOffsetConverter|float|null $isoDateTimeOffsetConverter, IterableClass|float|null $iterable, Jdec|float|null $jdec, Jenc|float|null $jenc, Jpipe|float|null $jpipe, JSON|float|null $json, JSONConverter|float|null $jsonConverter, JSONSerializer|float|null $jsonSerializer, JSONToken|float|null $jsonToken, JSONWriter|float|null $jsonWriter, JSONAny|float|null $jsonAny, JSONCodingKey|float|null $jsonCodingKey, JSONDecoder|float|null $jsonDecoder, JSONEncoder|float|null $jsonEncoder, JSONExceptionClass|float|null $jsonException, JSONGenerator|float|null $jsonGenerator, JSONNode|float|null $jsonNode, JSONNull|float|null $jsonNull, JSONParser|float|null $jsonParser, JSONReader|float|null $jsonReader, JSONTokenType|float|null $jsonTokenType, Lambda|float|null $lambda, Lazy|float|null $lazy, Left|float|null $left, Let|float|null $let, ListClass|float|null $list, LocaleClass|float|null $locale, Lock|float|null $lock, Long|float|null $long, Map|float|null $map, MapEntry|float|null $mapEntry, MetadataPropertyHandling|float|null $metadataPropertyHandling, Module|float|null $module, Mutable|float|null $mutable, Mutating|float|null $mutating, NamespaceClass|float|null $namespace, Native|float|null $native, NewClass|float|null $new, Newtonsoft|float|null $newtonsoft, Nil|float|null $nil, No|float|null $no, Noexcept|float|null $noexcept, Nonatomic|float|null $nonatomic, NoneClass|float|null $topLevelNone, None|float|null $none, Nonlocal|float|null $nonlocal, Nonmutating|float|null $nonmutating, NoSuchMethod|float|null $noSuchMethod, Not|float|null $not, NotEq|float|null $notEq, NSError|float|null $nsError, NSObject|float|null $nsObject, NSString|float|null $nsString, NULLClass|float|null $null, UnionNullNull|float|null $topLevelNull, Nullptr|float|null $nullptr, Number|float|null $number, ObjectClass|float|null $object, ObjectMapper|float|null $objectMapper, Of|float|null $of, Oneway|float|null $oneway, Open|float|null $open, Operator|float|null $operator, Optional|float|null $optional, OrClass|float|null $or, OrEq|float|null $orEq, Out|float|null $out, OverrideClass|float|null $override, Package|float|null $package, Params|float|null $params, Pass|float|null $pass, Port|float|null $port, Postfix|float|null $postfix, Precedence|float|null $precedence, Prefix|float|null $prefix, PrintClass|float|null $print, Printf|float|null $printf, PrintMembers|float|null $printMembers, PrivateClass|float|null $private, ProtectedClass|float|null $protected, Protocol|float|null $protocol, ProtocolClass|float|null $topLevelProtocol, PublicClass|float|null $public, Quicktype|float|null $quicktype, Raise|float|null $raise, Range|float|null $range, ReadonlyClass|float|null $readonly, Ref|float|null $ref, RegExp|float|null $regExp, Register|float|null $register, ReinterpretCast|float|null $reinterpretCast, Repeat|float|null $repeat, RequireClass|float|null $require, Required|float|null $required, Requires|float|null $requires, Restrict|float|null $restrict, Retain|float|null $retain, Rethrows|float|null $rethrows, ReturnClass|float|null $return, Right|float|null $right, RuntimeType|float|null $runtimeType, S|float|null $s, Sbyte|float|null $sbyte, Sealed|float|null $sealed, Sel|float|null $sel, Select|float|null $select, SelfClass|float|null $self, UnionSelfSelf|float|null $topLevelSelf, Sendable|float|null $sendable, Serialize|float|null $serialize, SerializerProvider|float|null $serializerProvider, Set|float|null $set, Short|float|null $short, Signed|float|null $signed, SimpleModule|float|null $simpleModule, Sizeof|float|null $sizeof, Stackalloc|float|null $stackalloc, Standards|float|null $standards, StaticClass|float|null $static, StaticAssert|float|null $staticAssert, StaticCast|float|null $staticCast, StdDeserializer|float|null $stdDeserializer, StdSerializer|float|null $stdSerializer, Strictfp|float|null $strictfp, StringClass|float|null $string, Struct|float|null $struct, Subscript|float|null $subscript, Super|float|null $super, SwitchClass|float|null $switch, Symbol|float|null $symbol, Synchronized|float|null $synchronized, System|float|null $system, Template|float|null $template, Then|float|null $then, This|float|null $topLevelThis, ThreadLocal|float|null $threadLocal, ThrowClass|float|null $throw, Throws|float|null $throws, TimeOnly|float|null $timeOnly, TimeOnlyConverter|float|null $timeOnlyConverter, TimeZone|float|null $timeZone, ToJSON|float|null $toJSON, TopLevelClass|float|null $topLevel, ToString|float|null $toString, Transient|float|null $transient, TrueClass|float|null $true, UnionTrueTrue|float|null $topLevelTrue, TryClass|float|null $try, Type|float|null $type, TypeClass|float|null $topLevelType, Typealias|float|null $typealias, Typedef|float|null $typedef, Typeid|float|null $typeid, Typename|float|null $typename, Typeof|float|null $typeof, Uint|float|null $uint, Ulong|float|null $ulong, Unchecked|float|null $unchecked, Undefined|float|null $undefined, UnionClass|float|null $union, Unowned|float|null $unowned, Unsafe|float|null $unsafe, Unsigned|float|null $unsigned, Ushort|float|null $ushort, Using|float|null $using, Utf8JSONReader|float|null $utf8JSONReader, Utf8JSONWriter|float|null $utf8JSONWriter, UUID|float|null $uuid, VarClass|float|null $var, Virtual|float|null $virtual, VoidClass|float|null $void, Volatile|float|null $volatile, WcharT|float|null $wcharT, Weak|float|null $weak, Where|float|null $where, WhileClass|float|null $while, WillSet|float|null $willSet, With|float|null $with, XorClass|float|null $xor, XorEq|float|null $xorEq, Yes|float|null $yes, YieldClass|float|null $yield) {
+    public function __construct(Union|float|null $empty, UnionBoolBool|float|null $topLevelBool, Complex|float|null $complex, Imaginery|float|null $imaginery, AbstractClass|float|null $abstract, Alignas|float|null $alignas, Alignof|float|null $alignof, AndClass|float|null $and, AndEq|float|null $andEq, AnyClass|float|null $topLevelAny, Any|float|null $any, ArrayClass|float|null $array, AsClass|float|null $as, ASM|float|null $asm, Assert|float|null $assert, Associatedtype|float|null $associatedtype, Associativity|float|null $associativity, Async|float|null $async, Atomic|float|null $atomic, AtomicCancel|float|null $atomicCancel, AtomicCommit|float|null $atomicCommit, AtomicNoexcept|float|null $atomicNoexcept, Auto|float|null $auto, Await|float|null $await, Base|float|null $base, Bitand|float|null $bitand, Bitor|float|null $bitor, BOOLClass|float|null $bool, UnionBoolBoolClass|float|null $purpleBool, Boolean|float|null $boolean, BreakClass|float|null $break, Bycopy|float|null $bycopy, Byref|float|null $byref, Byte|float|null $byte, Calendar|float|null $calendar, CaseClass|float|null $case, CatchClass|float|null $catch, Chan|float|null $chan, Char|float|null $char, Char16T|float|null $char16T, Char32T|float|null $char32T, Checked|float|null $checked, UnionClassClass|float|null $topLevelClass, ClassClass|float|null $class, CloneClass|float|null $clone, CoAwait|float|null $coAwait, CoReturn|float|null $coReturn, CoYield|float|null $coYield, Codable|float|null $codable, CodingKey|float|null $codingKey, CodingKeys|float|null $codingKeys, Compl|float|null $compl, Concept|float|null $concept, Console|float|null $console, ConstClass|float|null $const, ConstCast|float|null $constCast, Constexpr|float|null $constexpr, Constructor|float|null $constructor, ContinueClass|float|null $continue, Convenience|float|null $convenience, Convert|float|null $convert, ConverterClass|float|null $converter, CultureInfo|float|null $cultureInfo, Date|float|null $date, DateParseHandling|float|null $dateParseHandling, DateFormatter|float|null $dateFormatter, DateOnly|float|null $dateOnly, DateOnlyConverter|float|null $dateOnlyConverter, DateTimeClass|float|null $dateTime, DateTimeStyles|float|null $dateTimeStyles, Debugger|float|null $debugger, Decimal|float|null $decimal, DeclareClass|float|null $declare, Decltype|float|null $decltype, DecodeString|float|null $decodeString, Decoder|float|null $decoder, DecodingError|float|null $decodingError, Def|float|null $def, DefaultClass|float|null $default, Defer|float|null $defer, Deinit|float|null $deinit, Del|float|null $del, Delegate|float|null $delegate, Delete|float|null $delete, Dict|float|null $dict, Dictionary|float|null $dictionary, DidSet|float|null $didSet, DoClass|float|null $do, Double|float|null $double, ?float $dummy, Dynamic|float|null $dynamic, DynamicCast|float|null $dynamicCast, Elif|float|null $elif, ElseClass|float|null $else, EncodeQuickType|float|null $encodeQuickType, Encoder|float|null $encoder, EnumClass|float|null $enum, EnumValues|float|null $enumValues, EqualityContract|float|null $equalityContract, Equatable|float|null $equatable, Event|float|null $event, Except|float|null $except, ExceptionClass|float|null $exception, Explicit|float|null $explicit, Export|float|null $export, Exposing|float|null $exposing, ExtendsClass|float|null $extends, Extension|float|null $extension, Extern|float|null $extern, Fallthrough|float|null $fallthrough, UnionFalseFalse|float|null $topLevelFalse, FalseClass|float|null $false, Fileprivate|float|null $fileprivate, FinalClass|float|null $final, FinallyClass|float|null $finally, Fixed|float|null $fixed, FloatClass|float|null $float, ForClass|float|null $for, ForeachClass|float|null $foreach, FormatException|float|null $formatException, Friend|float|null $friend, From|float|null $from, FromJSON|float|null $fromJSON, Func|float|null $func, FunctionClass|float|null $function, Get|float|null $get, GlobalClass|float|null $global, Go|float|null $go, GotoClass|float|null $goto, Guard|float|null $guard, Hashable|float|null $hashable, HashCode|float|null $hashCode, Hasher|float|null $hasher, HasOwnProperty|float|null $hasOwnProperty, ID|float|null $id, IfClass|float|null $if, Imp|float|null $imp, ImplementsClass|float|null $implements, Implicit|float|null $implicit, Import|float|null $import, In|float|null $in, Indirect|float|null $indirect, Infix|float|null $infix, Init|float|null $init, Inline|float|null $inline, Inout|float|null $inout, InstanceofClass|float|null $instanceof, IntClass|float|null $int, InterfaceClass|float|null $interface, Internal|float|null $internal, Is|float|null $is, ISODateTimeOffsetConverter|float|null $isoDateTimeOffsetConverter, IterableClass|float|null $iterable, Jdec|float|null $jdec, Jenc|float|null $jenc, Jpipe|float|null $jpipe, JSON|float|null $json, JSONConverter|float|null $jsonConverter, JSONSerializer|float|null $jsonSerializer, JSONToken|float|null $jsonToken, JSONWriter|float|null $jsonWriter, JSONAny|float|null $jsonAny, JSONCodingKey|float|null $jsonCodingKey, JSONDecoder|float|null $jsonDecoder, JSONEncoder|float|null $jsonEncoder, JSONExceptionClass|float|null $jsonException, JSONGenerator|float|null $jsonGenerator, JSONNode|float|null $jsonNode, JSONNull|float|null $jsonNull, JSONParser|float|null $jsonParser, JSONReader|float|null $jsonReader, JSONTokenType|float|null $jsonTokenType, KSerializer|float|null $kSerializer, Lambda|float|null $lambda, Lazy|float|null $lazy, Left|float|null $left, Let|float|null $let, ListClass|float|null $list, LocaleClass|float|null $locale, Lock|float|null $lock, Long|float|null $long, Map|float|null $map, MapEntry|float|null $mapEntry, MetadataPropertyHandling|float|null $metadataPropertyHandling, Module|float|null $module, Mutable|float|null $mutable, Mutating|float|null $mutating, NamespaceClass|float|null $namespace, Native|float|null $native, NewClass|float|null $new, Newtonsoft|float|null $newtonsoft, Nil|float|null $nil, No|float|null $no, Noexcept|float|null $noexcept, Nonatomic|float|null $nonatomic, NoneClass|float|null $topLevelNone, None|float|null $none, Nonlocal|float|null $nonlocal, Nonmutating|float|null $nonmutating, NoSuchMethod|float|null $noSuchMethod, Not|float|null $not, NotEq|float|null $notEq, NSError|float|null $nsError, NSObject|float|null $nsObject, NSString|float|null $nsString, NULLClass|float|null $null, UnionNullNull|float|null $topLevelNull, Nullptr|float|null $nullptr, Number|float|null $number, ObjectClass|float|null $object, ObjectMapper|float|null $objectMapper, Of|float|null $of, Oneway|float|null $oneway, Open|float|null $open, Operator|float|null $operator, Optional|float|null $optional, OrClass|float|null $or, OrEq|float|null $orEq, Out|float|null $out, OverrideClass|float|null $override, Package|float|null $package, Params|float|null $params, Pass|float|null $pass, Port|float|null $port, Postfix|float|null $postfix, Precedence|float|null $precedence, Prefix|float|null $prefix, PrimitiveKind|float|null $primitiveKind, PrintClass|float|null $print, Printf|float|null $printf, PrintMembers|float|null $printMembers, PrivateClass|float|null $private, ProtectedClass|float|null $protected, Protocol|float|null $protocol, ProtocolClass|float|null $topLevelProtocol, PublicClass|float|null $public, Quicktype|float|null $quicktype, Raise|float|null $raise, Range|float|null $range, ReadonlyClass|float|null $readonly, Ref|float|null $ref, RegExp|float|null $regExp, Register|float|null $register, ReinterpretCast|float|null $reinterpretCast, Repeat|float|null $repeat, RequireClass|float|null $require, Required|float|null $required, Requires|float|null $requires, Restrict|float|null $restrict, Retain|float|null $retain, Rethrows|float|null $rethrows, ReturnClass|float|null $return, Right|float|null $right, RuntimeType|float|null $runtimeType, S|float|null $s, Sbyte|float|null $sbyte, Sealed|float|null $sealed, Sel|float|null $sel, Select|float|null $select, SelfClass|float|null $self, UnionSelfSelf|float|null $topLevelSelf, Sendable|float|null $sendable, SerialDescriptor|float|null $serialDescriptor, SerializableClass|float|null $serializable, Serialize|float|null $serialize, SerializerProvider|float|null $serializerProvider, SerialName|float|null $serialName, Set|float|null $set, Short|float|null $short, Signed|float|null $signed, SimpleModule|float|null $simpleModule, Sizeof|float|null $sizeof, Stackalloc|float|null $stackalloc, Standards|float|null $standards, StaticClass|float|null $static, StaticAssert|float|null $staticAssert, StaticCast|float|null $staticCast, StdDeserializer|float|null $stdDeserializer, StdSerializer|float|null $stdSerializer, Strictfp|float|null $strictfp, StringClass|float|null $string, Struct|float|null $struct, Subscript|float|null $subscript, Super|float|null $super, SwitchClass|float|null $switch, Symbol|float|null $symbol, Synchronized|float|null $synchronized, System|float|null $system, Template|float|null $template, Then|float|null $then, This|float|null $topLevelThis, ThreadLocal|float|null $threadLocal, ThrowClass|float|null $throw, Throws|float|null $throws, TimeOnly|float|null $timeOnly, TimeOnlyConverter|float|null $timeOnlyConverter, TimeZone|float|null $timeZone, ToJSON|float|null $toJSON, TopLevelClass|float|null $topLevel, ToString|float|null $toString, Transient|float|null $transient, TrueClass|float|null $true, UnionTrueTrue|float|null $topLevelTrue, TryClass|float|null $try, Type|float|null $type, TypeClass|float|null $topLevelType, Typealias|float|null $typealias, Typedef|float|null $typedef, Typeid|float|null $typeid, Typename|float|null $typename, Typeof|float|null $typeof, Uint|float|null $uint, Ulong|float|null $ulong, Unchecked|float|null $unchecked, Undefined|float|null $undefined, UnionClass|float|null $union, Unowned|float|null $unowned, Unsafe|float|null $unsafe, Unsigned|float|null $unsigned, UseSerializers|float|null $useSerializers, Ushort|float|null $ushort, Using|float|null $using, Utf8JSONReader|float|null $utf8JSONReader, Utf8JSONWriter|float|null $utf8JSONWriter, UUID|float|null $uuid, VarClass|float|null $var, Virtual|float|null $virtual, VoidClass|float|null $void, Volatile|float|null $volatile, WcharT|float|null $wcharT, Weak|float|null $weak, Where|float|null $where, WhileClass|float|null $while, WillSet|float|null $willSet, With|float|null $with, XorClass|float|null $xor, XorEq|float|null $xorEq, Yes|float|null $yes, YieldClass|float|null $yield) {
         $this->empty = $empty;
         $this->topLevelBool = $topLevelBool;
         $this->complex = $complex;
@@ -846,6 +858,7 @@ class TopLevel {
         $this->jsonParser = $jsonParser;
         $this->jsonReader = $jsonReader;
         $this->jsonTokenType = $jsonTokenType;
+        $this->kSerializer = $kSerializer;
         $this->lambda = $lambda;
         $this->lazy = $lazy;
         $this->left = $left;
@@ -900,6 +913,7 @@ class TopLevel {
         $this->postfix = $postfix;
         $this->precedence = $precedence;
         $this->prefix = $prefix;
+        $this->primitiveKind = $primitiveKind;
         $this->print = $print;
         $this->printf = $printf;
         $this->printMembers = $printMembers;
@@ -934,8 +948,11 @@ class TopLevel {
         $this->self = $self;
         $this->topLevelSelf = $topLevelSelf;
         $this->sendable = $sendable;
+        $this->serialDescriptor = $serialDescriptor;
+        $this->serializable = $serializable;
         $this->serialize = $serialize;
         $this->serializerProvider = $serializerProvider;
+        $this->serialName = $serialName;
         $this->set = $set;
         $this->short = $short;
         $this->signed = $signed;
@@ -988,6 +1005,7 @@ class TopLevel {
         $this->unowned = $unowned;
         $this->unsafe = $unsafe;
         $this->unsigned = $unsigned;
+        $this->useSerializers = $useSerializers;
         $this->ushort = $ushort;
         $this->using = $using;
         $this->utf8JSONReader = $utf8JSONReader;
@@ -14062,6 +14080,82 @@ class TopLevel {
         return JSONTokenType::sample(); /*202:jsonTokenType*/
     }
 
+    /**
+     * @param stdClass|float|null $value
+     * @throws Exception
+     * @return KSerializer|float|null
+     */
+    public static function fromKSerializer(stdClass|float|null $value): KSerializer|float|null {
+        if (is_null($value)) {
+            return $value; /*null*/
+        } elseif (is_object($value)) {
+            return KSerializer::from($value); /*class*/
+        } elseif (is_float($value) || is_int($value)) {
+            return $value; /*float*/
+        } else {
+            throw new Exception('Cannot deserialize union value in TopLevel');
+        }
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass|float|null
+     */
+    public function toKSerializer(): stdClass|float|null {
+        if (TopLevel::validateKSerializer($this->kSerializer))  {
+            if (is_null($this->kSerializer)) {
+                return $this->kSerializer; /*null*/
+            } elseif ($this->kSerializer instanceof KSerializer) {
+                return $this->kSerializer->to(); /*class*/
+            } elseif (is_float($this->kSerializer) || is_int($this->kSerializer)) {
+                return $this->kSerializer; /*float*/
+            } else {
+                throw new Exception('Union value has no matching member in TopLevel');
+            }
+        }
+        throw new Exception('never get to this TopLevel::kSerializer');
+    }
+
+    /**
+     * @param KSerializer|float|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateKSerializer(KSerializer|float|null $value): bool {
+        if (is_null($value)) {
+            if (!is_null($value)) {
+                throw new Exception("Attribute Error:TopLevel::kSerializer");
+            }
+        } elseif ($value instanceof KSerializer) {
+            $value->validate();
+        } elseif (is_float($value) || is_int($value)) {
+            if (!is_float($value) && !is_int($value)) {
+                throw new Exception("Attribute Error:TopLevel::kSerializer");
+            }
+        } else {
+            throw new Exception("Attribute Error:TopLevel::kSerializer");
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return KSerializer|float|null
+     */
+    public function getKSerializer(): KSerializer|float|null {
+        if (TopLevel::validateKSerializer($this->kSerializer))  {
+            return $this->kSerializer;
+        }
+        throw new Exception('never get to getKSerializer TopLevel::kSerializer');
+    }
+
+    /**
+     * @return KSerializer|float|null
+     */
+    public static function sampleKSerializer(): KSerializer|float|null {
+        return KSerializer::sample(); /*203:kSerializer*/
+    }
+
     /**
      * @param stdClass|float|null $value
      * @throws Exception
@@ -14135,7 +14229,7 @@ class TopLevel {
      * @return Lambda|float|null
      */
     public static function sampleLambda(): Lambda|float|null {
-        return Lambda::sample(); /*203:lambda*/
+        return Lambda::sample(); /*204:lambda*/
     }
 
     /**
@@ -14211,7 +14305,7 @@ class TopLevel {
      * @return Lazy|float|null
      */
     public static function sampleLazy(): Lazy|float|null {
-        return Lazy::sample(); /*204:lazy*/
+        return Lazy::sample(); /*205:lazy*/
     }
 
     /**
@@ -14287,7 +14381,7 @@ class TopLevel {
      * @return Left|float|null
      */
     public static function sampleLeft(): Left|float|null {
-        return Left::sample(); /*205:left*/
+        return Left::sample(); /*206:left*/
     }
 
     /**
@@ -14363,7 +14457,7 @@ class TopLevel {
      * @return Let|float|null
      */
     public static function sampleLet(): Let|float|null {
-        return Let::sample(); /*206:let*/
+        return Let::sample(); /*207:let*/
     }
 
     /**
@@ -14439,7 +14533,7 @@ class TopLevel {
      * @return ListClass|float|null
      */
     public static function sampleList(): ListClass|float|null {
-        return ListClass::sample(); /*207:list*/
+        return ListClass::sample(); /*208:list*/
     }
 
     /**
@@ -14515,7 +14609,7 @@ class TopLevel {
      * @return LocaleClass|float|null
      */
     public static function sampleLocale(): LocaleClass|float|null {
-        return LocaleClass::sample(); /*208:locale*/
+        return LocaleClass::sample(); /*209:locale*/
     }
 
     /**
@@ -14591,7 +14685,7 @@ class TopLevel {
      * @return Lock|float|null
      */
     public static function sampleLock(): Lock|float|null {
-        return Lock::sample(); /*209:lock*/
+        return Lock::sample(); /*210:lock*/
     }
 
     /**
@@ -14667,7 +14761,7 @@ class TopLevel {
      * @return Long|float|null
      */
     public static function sampleLong(): Long|float|null {
-        return Long::sample(); /*210:long*/
+        return Long::sample(); /*211:long*/
     }
 
     /**
@@ -14743,7 +14837,7 @@ class TopLevel {
      * @return Map|float|null
      */
     public static function sampleMap(): Map|float|null {
-        return Map::sample(); /*211:map*/
+        return Map::sample(); /*212:map*/
     }
 
     /**
@@ -14819,7 +14913,7 @@ class TopLevel {
      * @return MapEntry|float|null
      */
     public static function sampleMapEntry(): MapEntry|float|null {
-        return MapEntry::sample(); /*212:mapEntry*/
+        return MapEntry::sample(); /*213:mapEntry*/
     }
 
     /**
@@ -14895,7 +14989,7 @@ class TopLevel {
      * @return MetadataPropertyHandling|float|null
      */
     public static function sampleMetadataPropertyHandling(): MetadataPropertyHandling|float|null {
-        return MetadataPropertyHandling::sample(); /*213:metadataPropertyHandling*/
+        return MetadataPropertyHandling::sample(); /*214:metadataPropertyHandling*/
     }
 
     /**
@@ -14971,7 +15065,7 @@ class TopLevel {
      * @return Module|float|null
      */
     public static function sampleModule(): Module|float|null {
-        return Module::sample(); /*214:module*/
+        return Module::sample(); /*215:module*/
     }
 
     /**
@@ -15047,7 +15141,7 @@ class TopLevel {
      * @return Mutable|float|null
      */
     public static function sampleMutable(): Mutable|float|null {
-        return Mutable::sample(); /*215:mutable*/
+        return Mutable::sample(); /*216:mutable*/
     }
 
     /**
@@ -15123,7 +15217,7 @@ class TopLevel {
      * @return Mutating|float|null
      */
     public static function sampleMutating(): Mutating|float|null {
-        return Mutating::sample(); /*216:mutating*/
+        return Mutating::sample(); /*217:mutating*/
     }
 
     /**
@@ -15199,7 +15293,7 @@ class TopLevel {
      * @return NamespaceClass|float|null
      */
     public static function sampleNamespace(): NamespaceClass|float|null {
-        return NamespaceClass::sample(); /*217:namespace*/
+        return NamespaceClass::sample(); /*218:namespace*/
     }
 
     /**
@@ -15275,7 +15369,7 @@ class TopLevel {
      * @return Native|float|null
      */
     public static function sampleNative(): Native|float|null {
-        return Native::sample(); /*218:native*/
+        return Native::sample(); /*219:native*/
     }
 
     /**
@@ -15351,7 +15445,7 @@ class TopLevel {
      * @return NewClass|float|null
      */
     public static function sampleNew(): NewClass|float|null {
-        return NewClass::sample(); /*219:new*/
+        return NewClass::sample(); /*220:new*/
     }
 
     /**
@@ -15427,7 +15521,7 @@ class TopLevel {
      * @return Newtonsoft|float|null
      */
     public static function sampleNewtonsoft(): Newtonsoft|float|null {
-        return Newtonsoft::sample(); /*220:newtonsoft*/
+        return Newtonsoft::sample(); /*221:newtonsoft*/
     }
 
     /**
@@ -15503,7 +15597,7 @@ class TopLevel {
      * @return Nil|float|null
      */
     public static function sampleNil(): Nil|float|null {
-        return Nil::sample(); /*221:nil*/
+        return Nil::sample(); /*222:nil*/
     }
 
     /**
@@ -15579,7 +15673,7 @@ class TopLevel {
      * @return No|float|null
      */
     public static function sampleNo(): No|float|null {
-        return No::sample(); /*222:no*/
+        return No::sample(); /*223:no*/
     }
 
     /**
@@ -15655,7 +15749,7 @@ class TopLevel {
      * @return Noexcept|float|null
      */
     public static function sampleNoexcept(): Noexcept|float|null {
-        return Noexcept::sample(); /*223:noexcept*/
+        return Noexcept::sample(); /*224:noexcept*/
     }
 
     /**
@@ -15731,7 +15825,7 @@ class TopLevel {
      * @return Nonatomic|float|null
      */
     public static function sampleNonatomic(): Nonatomic|float|null {
-        return Nonatomic::sample(); /*224:nonatomic*/
+        return Nonatomic::sample(); /*225:nonatomic*/
     }
 
     /**
@@ -15807,7 +15901,7 @@ class TopLevel {
      * @return NoneClass|float|null
      */
     public static function sampleTopLevelNone(): NoneClass|float|null {
-        return NoneClass::sample(); /*225:topLevelNone*/
+        return NoneClass::sample(); /*226:topLevelNone*/
     }
 
     /**
@@ -15883,7 +15977,7 @@ class TopLevel {
      * @return None|float|null
      */
     public static function sampleNone(): None|float|null {
-        return None::sample(); /*226:none*/
+        return None::sample(); /*227:none*/
     }
 
     /**
@@ -15959,7 +16053,7 @@ class TopLevel {
      * @return Nonlocal|float|null
      */
     public static function sampleNonlocal(): Nonlocal|float|null {
-        return Nonlocal::sample(); /*227:nonlocal*/
+        return Nonlocal::sample(); /*228:nonlocal*/
     }
 
     /**
@@ -16035,7 +16129,7 @@ class TopLevel {
      * @return Nonmutating|float|null
      */
     public static function sampleNonmutating(): Nonmutating|float|null {
-        return Nonmutating::sample(); /*228:nonmutating*/
+        return Nonmutating::sample(); /*229:nonmutating*/
     }
 
     /**
@@ -16111,7 +16205,7 @@ class TopLevel {
      * @return NoSuchMethod|float|null
      */
     public static function sampleNoSuchMethod(): NoSuchMethod|float|null {
-        return NoSuchMethod::sample(); /*229:noSuchMethod*/
+        return NoSuchMethod::sample(); /*230:noSuchMethod*/
     }
 
     /**
@@ -16187,7 +16281,7 @@ class TopLevel {
      * @return Not|float|null
      */
     public static function sampleNot(): Not|float|null {
-        return Not::sample(); /*230:not*/
+        return Not::sample(); /*231:not*/
     }
 
     /**
@@ -16263,7 +16357,7 @@ class TopLevel {
      * @return NotEq|float|null
      */
     public static function sampleNotEq(): NotEq|float|null {
-        return NotEq::sample(); /*231:notEq*/
+        return NotEq::sample(); /*232:notEq*/
     }
 
     /**
@@ -16339,7 +16433,7 @@ class TopLevel {
      * @return NSError|float|null
      */
     public static function sampleNSError(): NSError|float|null {
-        return NSError::sample(); /*232:nsError*/
+        return NSError::sample(); /*233:nsError*/
     }
 
     /**
@@ -16415,7 +16509,7 @@ class TopLevel {
      * @return NSObject|float|null
      */
     public static function sampleNSObject(): NSObject|float|null {
-        return NSObject::sample(); /*233:nsObject*/
+        return NSObject::sample(); /*234:nsObject*/
     }
 
     /**
@@ -16491,7 +16585,7 @@ class TopLevel {
      * @return NSString|float|null
      */
     public static function sampleNSString(): NSString|float|null {
-        return NSString::sample(); /*234:nsString*/
+        return NSString::sample(); /*235:nsString*/
     }
 
     /**
@@ -16567,7 +16661,7 @@ class TopLevel {
      * @return NULLClass|float|null
      */
     public static function sampleNull(): NULLClass|float|null {
-        return NULLClass::sample(); /*235:null*/
+        return NULLClass::sample(); /*236:null*/
     }
 
     /**
@@ -16643,7 +16737,7 @@ class TopLevel {
      * @return UnionNullNull|float|null
      */
     public static function sampleTopLevelNull(): UnionNullNull|float|null {
-        return UnionNullNull::sample(); /*236:topLevelNull*/
+        return UnionNullNull::sample(); /*237:topLevelNull*/
     }
 
     /**
@@ -16719,7 +16813,7 @@ class TopLevel {
      * @return Nullptr|float|null
      */
     public static function sampleNullptr(): Nullptr|float|null {
-        return Nullptr::sample(); /*237:nullptr*/
+        return Nullptr::sample(); /*238:nullptr*/
     }
 
     /**
@@ -16795,7 +16889,7 @@ class TopLevel {
      * @return Number|float|null
      */
     public static function sampleNumber(): Number|float|null {
-        return Number::sample(); /*238:number*/
+        return Number::sample(); /*239:number*/
     }
 
     /**
@@ -16871,7 +16965,7 @@ class TopLevel {
      * @return ObjectClass|float|null
      */
     public static function sampleObject(): ObjectClass|float|null {
-        return ObjectClass::sample(); /*239:object*/
+        return ObjectClass::sample(); /*240:object*/
     }
 
     /**
@@ -16947,7 +17041,7 @@ class TopLevel {
      * @return ObjectMapper|float|null
      */
     public static function sampleObjectMapper(): ObjectMapper|float|null {
-        return ObjectMapper::sample(); /*240:objectMapper*/
+        return ObjectMapper::sample(); /*241:objectMapper*/
     }
 
     /**
@@ -17023,7 +17117,7 @@ class TopLevel {
      * @return Of|float|null
      */
     public static function sampleOf(): Of|float|null {
-        return Of::sample(); /*241:of*/
+        return Of::sample(); /*242:of*/
     }
 
     /**
@@ -17099,7 +17193,7 @@ class TopLevel {
      * @return Oneway|float|null
      */
     public static function sampleOneway(): Oneway|float|null {
-        return Oneway::sample(); /*242:oneway*/
+        return Oneway::sample(); /*243:oneway*/
     }
 
     /**
@@ -17175,7 +17269,7 @@ class TopLevel {
      * @return Open|float|null
      */
     public static function sampleOpen(): Open|float|null {
-        return Open::sample(); /*243:open*/
+        return Open::sample(); /*244:open*/
     }
 
     /**
@@ -17251,7 +17345,7 @@ class TopLevel {
      * @return Operator|float|null
      */
     public static function sampleOperator(): Operator|float|null {
-        return Operator::sample(); /*244:operator*/
+        return Operator::sample(); /*245:operator*/
     }
 
     /**
@@ -17327,7 +17421,7 @@ class TopLevel {
      * @return Optional|float|null
      */
     public static function sampleOptional(): Optional|float|null {
-        return Optional::sample(); /*245:optional*/
+        return Optional::sample(); /*246:optional*/
     }
 
     /**
@@ -17403,7 +17497,7 @@ class TopLevel {
      * @return OrClass|float|null
      */
     public static function sampleOr(): OrClass|float|null {
-        return OrClass::sample(); /*246:or*/
+        return OrClass::sample(); /*247:or*/
     }
 
     /**
@@ -17479,7 +17573,7 @@ class TopLevel {
      * @return OrEq|float|null
      */
     public static function sampleOrEq(): OrEq|float|null {
-        return OrEq::sample(); /*247:orEq*/
+        return OrEq::sample(); /*248:orEq*/
     }
 
     /**
@@ -17555,7 +17649,7 @@ class TopLevel {
      * @return Out|float|null
      */
     public static function sampleOut(): Out|float|null {
-        return Out::sample(); /*248:out*/
+        return Out::sample(); /*249:out*/
     }
 
     /**
@@ -17631,7 +17725,7 @@ class TopLevel {
      * @return OverrideClass|float|null
      */
     public static function sampleOverride(): OverrideClass|float|null {
-        return OverrideClass::sample(); /*249:override*/
+        return OverrideClass::sample(); /*250:override*/
     }
 
     /**
@@ -17707,7 +17801,7 @@ class TopLevel {
      * @return Package|float|null
      */
     public static function samplePackage(): Package|float|null {
-        return Package::sample(); /*250:package*/
+        return Package::sample(); /*251:package*/
     }
 
     /**
@@ -17783,7 +17877,7 @@ class TopLevel {
      * @return Params|float|null
      */
     public static function sampleParams(): Params|float|null {
-        return Params::sample(); /*251:params*/
+        return Params::sample(); /*252:params*/
     }
 
     /**
@@ -17859,7 +17953,7 @@ class TopLevel {
      * @return Pass|float|null
      */
     public static function samplePass(): Pass|float|null {
-        return Pass::sample(); /*252:pass*/
+        return Pass::sample(); /*253:pass*/
     }
 
     /**
@@ -17935,7 +18029,7 @@ class TopLevel {
      * @return Port|float|null
      */
     public static function samplePort(): Port|float|null {
-        return Port::sample(); /*253:port*/
+        return Port::sample(); /*254:port*/
     }
 
     /**
@@ -18011,7 +18105,7 @@ class TopLevel {
      * @return Postfix|float|null
      */
     public static function samplePostfix(): Postfix|float|null {
-        return Postfix::sample(); /*254:postfix*/
+        return Postfix::sample(); /*255:postfix*/
     }
 
     /**
@@ -18087,7 +18181,7 @@ class TopLevel {
      * @return Precedence|float|null
      */
     public static function samplePrecedence(): Precedence|float|null {
-        return Precedence::sample(); /*255:precedence*/
+        return Precedence::sample(); /*256:precedence*/
     }
 
     /**
@@ -18163,7 +18257,83 @@ class TopLevel {
      * @return Prefix|float|null
      */
     public static function samplePrefix(): Prefix|float|null {
-        return Prefix::sample(); /*256:prefix*/
+        return Prefix::sample(); /*257:prefix*/
+    }
+
+    /**
+     * @param stdClass|float|null $value
+     * @throws Exception
+     * @return PrimitiveKind|float|null
+     */
+    public static function fromPrimitiveKind(stdClass|float|null $value): PrimitiveKind|float|null {
+        if (is_null($value)) {
+            return $value; /*null*/
+        } elseif (is_object($value)) {
+            return PrimitiveKind::from($value); /*class*/
+        } elseif (is_float($value) || is_int($value)) {
+            return $value; /*float*/
+        } else {
+            throw new Exception('Cannot deserialize union value in TopLevel');
+        }
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass|float|null
+     */
+    public function toPrimitiveKind(): stdClass|float|null {
+        if (TopLevel::validatePrimitiveKind($this->primitiveKind))  {
+            if (is_null($this->primitiveKind)) {
+                return $this->primitiveKind; /*null*/
+            } elseif ($this->primitiveKind instanceof PrimitiveKind) {
+                return $this->primitiveKind->to(); /*class*/
+            } elseif (is_float($this->primitiveKind) || is_int($this->primitiveKind)) {
+                return $this->primitiveKind; /*float*/
+            } else {
+                throw new Exception('Union value has no matching member in TopLevel');
+            }
+        }
+        throw new Exception('never get to this TopLevel::primitiveKind');
+    }
+
+    /**
+     * @param PrimitiveKind|float|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validatePrimitiveKind(PrimitiveKind|float|null $value): bool {
+        if (is_null($value)) {
+            if (!is_null($value)) {
+                throw new Exception("Attribute Error:TopLevel::primitiveKind");
+            }
+        } elseif ($value instanceof PrimitiveKind) {
+            $value->validate();
+        } elseif (is_float($value) || is_int($value)) {
+            if (!is_float($value) && !is_int($value)) {
+                throw new Exception("Attribute Error:TopLevel::primitiveKind");
+            }
+        } else {
+            throw new Exception("Attribute Error:TopLevel::primitiveKind");
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return PrimitiveKind|float|null
+     */
+    public function getPrimitiveKind(): PrimitiveKind|float|null {
+        if (TopLevel::validatePrimitiveKind($this->primitiveKind))  {
+            return $this->primitiveKind;
+        }
+        throw new Exception('never get to getPrimitiveKind TopLevel::primitiveKind');
+    }
+
+    /**
+     * @return PrimitiveKind|float|null
+     */
+    public static function samplePrimitiveKind(): PrimitiveKind|float|null {
+        return PrimitiveKind::sample(); /*258:primitiveKind*/
     }
 
     /**
@@ -18239,7 +18409,7 @@ class TopLevel {
      * @return PrintClass|float|null
      */
     public static function samplePrint(): PrintClass|float|null {
-        return PrintClass::sample(); /*257:print*/
+        return PrintClass::sample(); /*259:print*/
     }
 
     /**
@@ -18315,7 +18485,7 @@ class TopLevel {
      * @return Printf|float|null
      */
     public static function samplePrintf(): Printf|float|null {
-        return Printf::sample(); /*258:printf*/
+        return Printf::sample(); /*260:printf*/
     }
 
     /**
@@ -18391,7 +18561,7 @@ class TopLevel {
      * @return PrintMembers|float|null
      */
     public static function samplePrintMembers(): PrintMembers|float|null {
-        return PrintMembers::sample(); /*259:printMembers*/
+        return PrintMembers::sample(); /*261:printMembers*/
     }
 
     /**
@@ -18467,7 +18637,7 @@ class TopLevel {
      * @return PrivateClass|float|null
      */
     public static function samplePrivate(): PrivateClass|float|null {
-        return PrivateClass::sample(); /*260:private*/
+        return PrivateClass::sample(); /*262:private*/
     }
 
     /**
@@ -18543,7 +18713,7 @@ class TopLevel {
      * @return ProtectedClass|float|null
      */
     public static function sampleProtected(): ProtectedClass|float|null {
-        return ProtectedClass::sample(); /*261:protected*/
+        return ProtectedClass::sample(); /*263:protected*/
     }
 
     /**
@@ -18619,7 +18789,7 @@ class TopLevel {
      * @return Protocol|float|null
      */
     public static function sampleProtocol(): Protocol|float|null {
-        return Protocol::sample(); /*262:protocol*/
+        return Protocol::sample(); /*264:protocol*/
     }
 
     /**
@@ -18695,7 +18865,7 @@ class TopLevel {
      * @return ProtocolClass|float|null
      */
     public static function sampleTopLevelProtocol(): ProtocolClass|float|null {
-        return ProtocolClass::sample(); /*263:topLevelProtocol*/
+        return ProtocolClass::sample(); /*265:topLevelProtocol*/
     }
 
     /**
@@ -18771,7 +18941,7 @@ class TopLevel {
      * @return PublicClass|float|null
      */
     public static function samplePublic(): PublicClass|float|null {
-        return PublicClass::sample(); /*264:public*/
+        return PublicClass::sample(); /*266:public*/
     }
 
     /**
@@ -18847,7 +19017,7 @@ class TopLevel {
      * @return Quicktype|float|null
      */
     public static function sampleQuicktype(): Quicktype|float|null {
-        return Quicktype::sample(); /*265:quicktype*/
+        return Quicktype::sample(); /*267:quicktype*/
     }
 
     /**
@@ -18923,7 +19093,7 @@ class TopLevel {
      * @return Raise|float|null
      */
     public static function sampleRaise(): Raise|float|null {
-        return Raise::sample(); /*266:raise*/
+        return Raise::sample(); /*268:raise*/
     }
 
     /**
@@ -18999,7 +19169,7 @@ class TopLevel {
      * @return Range|float|null
      */
     public static function sampleRange(): Range|float|null {
-        return Range::sample(); /*267:range*/
+        return Range::sample(); /*269:range*/
     }
 
     /**
@@ -19075,7 +19245,7 @@ class TopLevel {
      * @return ReadonlyClass|float|null
      */
     public static function sampleReadonly(): ReadonlyClass|float|null {
-        return ReadonlyClass::sample(); /*268:readonly*/
+        return ReadonlyClass::sample(); /*270:readonly*/
     }
 
     /**
@@ -19151,7 +19321,7 @@ class TopLevel {
      * @return Ref|float|null
      */
     public static function sampleRef(): Ref|float|null {
-        return Ref::sample(); /*269:ref*/
+        return Ref::sample(); /*271:ref*/
     }
 
     /**
@@ -19227,7 +19397,7 @@ class TopLevel {
      * @return RegExp|float|null
      */
     public static function sampleRegExp(): RegExp|float|null {
-        return RegExp::sample(); /*270:regExp*/
+        return RegExp::sample(); /*272:regExp*/
     }
 
     /**
@@ -19303,7 +19473,7 @@ class TopLevel {
      * @return Register|float|null
      */
     public static function sampleRegister(): Register|float|null {
-        return Register::sample(); /*271:register*/
+        return Register::sample(); /*273:register*/
     }
 
     /**
@@ -19379,7 +19549,7 @@ class TopLevel {
      * @return ReinterpretCast|float|null
      */
     public static function sampleReinterpretCast(): ReinterpretCast|float|null {
-        return ReinterpretCast::sample(); /*272:reinterpretCast*/
+        return ReinterpretCast::sample(); /*274:reinterpretCast*/
     }
 
     /**
@@ -19455,7 +19625,7 @@ class TopLevel {
      * @return Repeat|float|null
      */
     public static function sampleRepeat(): Repeat|float|null {
-        return Repeat::sample(); /*273:repeat*/
+        return Repeat::sample(); /*275:repeat*/
     }
 
     /**
@@ -19531,7 +19701,7 @@ class TopLevel {
      * @return RequireClass|float|null
      */
     public static function sampleRequire(): RequireClass|float|null {
-        return RequireClass::sample(); /*274:require*/
+        return RequireClass::sample(); /*276:require*/
     }
 
     /**
@@ -19607,7 +19777,7 @@ class TopLevel {
      * @return Required|float|null
      */
     public static function sampleRequired(): Required|float|null {
-        return Required::sample(); /*275:required*/
+        return Required::sample(); /*277:required*/
     }
 
     /**
@@ -19683,7 +19853,7 @@ class TopLevel {
      * @return Requires|float|null
      */
     public static function sampleRequires(): Requires|float|null {
-        return Requires::sample(); /*276:requires*/
+        return Requires::sample(); /*278:requires*/
     }
 
     /**
@@ -19759,7 +19929,7 @@ class TopLevel {
      * @return Restrict|float|null
      */
     public static function sampleRestrict(): Restrict|float|null {
-        return Restrict::sample(); /*277:restrict*/
+        return Restrict::sample(); /*279:restrict*/
     }
 
     /**
@@ -19835,7 +20005,7 @@ class TopLevel {
      * @return Retain|float|null
      */
     public static function sampleRetain(): Retain|float|null {
-        return Retain::sample(); /*278:retain*/
+        return Retain::sample(); /*280:retain*/
     }
 
     /**
@@ -19911,7 +20081,7 @@ class TopLevel {
      * @return Rethrows|float|null
      */
     public static function sampleRethrows(): Rethrows|float|null {
-        return Rethrows::sample(); /*279:rethrows*/
+        return Rethrows::sample(); /*281:rethrows*/
     }
 
     /**
@@ -19987,7 +20157,7 @@ class TopLevel {
      * @return ReturnClass|float|null
      */
     public static function sampleReturn(): ReturnClass|float|null {
-        return ReturnClass::sample(); /*280:return*/
+        return ReturnClass::sample(); /*282:return*/
     }
 
     /**
@@ -20063,7 +20233,7 @@ class TopLevel {
      * @return Right|float|null
      */
     public static function sampleRight(): Right|float|null {
-        return Right::sample(); /*281:right*/
+        return Right::sample(); /*283:right*/
     }
 
     /**
@@ -20139,7 +20309,7 @@ class TopLevel {
      * @return RuntimeType|float|null
      */
     public static function sampleRuntimeType(): RuntimeType|float|null {
-        return RuntimeType::sample(); /*282:runtimeType*/
+        return RuntimeType::sample(); /*284:runtimeType*/
     }
 
     /**
@@ -20215,7 +20385,7 @@ class TopLevel {
      * @return S|float|null
      */
     public static function sampleS(): S|float|null {
-        return S::sample(); /*283:s*/
+        return S::sample(); /*285:s*/
     }
 
     /**
@@ -20291,7 +20461,7 @@ class TopLevel {
      * @return Sbyte|float|null
      */
     public static function sampleSbyte(): Sbyte|float|null {
-        return Sbyte::sample(); /*284:sbyte*/
+        return Sbyte::sample(); /*286:sbyte*/
     }
 
     /**
@@ -20367,7 +20537,7 @@ class TopLevel {
      * @return Sealed|float|null
      */
     public static function sampleSealed(): Sealed|float|null {
-        return Sealed::sample(); /*285:sealed*/
+        return Sealed::sample(); /*287:sealed*/
     }
 
     /**
@@ -20443,7 +20613,7 @@ class TopLevel {
      * @return Sel|float|null
      */
     public static function sampleSel(): Sel|float|null {
-        return Sel::sample(); /*286:sel*/
+        return Sel::sample(); /*288:sel*/
     }
 
     /**
@@ -20519,7 +20689,7 @@ class TopLevel {
      * @return Select|float|null
      */
     public static function sampleSelect(): Select|float|null {
-        return Select::sample(); /*287:select*/
+        return Select::sample(); /*289:select*/
     }
 
     /**
@@ -20595,7 +20765,7 @@ class TopLevel {
      * @return SelfClass|float|null
      */
     public static function sampleSelf(): SelfClass|float|null {
-        return SelfClass::sample(); /*288:self*/
+        return SelfClass::sample(); /*290:self*/
     }
 
     /**
@@ -20671,7 +20841,7 @@ class TopLevel {
      * @return UnionSelfSelf|float|null
      */
     public static function sampleTopLevelSelf(): UnionSelfSelf|float|null {
-        return UnionSelfSelf::sample(); /*289:topLevelSelf*/
+        return UnionSelfSelf::sample(); /*291:topLevelSelf*/
     }
 
     /**
@@ -20747,7 +20917,159 @@ class TopLevel {
      * @return Sendable|float|null
      */
     public static function sampleSendable(): Sendable|float|null {
-        return Sendable::sample(); /*290:sendable*/
+        return Sendable::sample(); /*292:sendable*/
+    }
+
+    /**
+     * @param stdClass|float|null $value
+     * @throws Exception
+     * @return SerialDescriptor|float|null
+     */
+    public static function fromSerialDescriptor(stdClass|float|null $value): SerialDescriptor|float|null {
+        if (is_null($value)) {
+            return $value; /*null*/
+        } elseif (is_object($value)) {
+            return SerialDescriptor::from($value); /*class*/
+        } elseif (is_float($value) || is_int($value)) {
+            return $value; /*float*/
+        } else {
+            throw new Exception('Cannot deserialize union value in TopLevel');
+        }
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass|float|null
+     */
+    public function toSerialDescriptor(): stdClass|float|null {
+        if (TopLevel::validateSerialDescriptor($this->serialDescriptor))  {
+            if (is_null($this->serialDescriptor)) {
+                return $this->serialDescriptor; /*null*/
+            } elseif ($this->serialDescriptor instanceof SerialDescriptor) {
+                return $this->serialDescriptor->to(); /*class*/
+            } elseif (is_float($this->serialDescriptor) || is_int($this->serialDescriptor)) {
+                return $this->serialDescriptor; /*float*/
+            } else {
+                throw new Exception('Union value has no matching member in TopLevel');
+            }
+        }
+        throw new Exception('never get to this TopLevel::serialDescriptor');
+    }
+
+    /**
+     * @param SerialDescriptor|float|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSerialDescriptor(SerialDescriptor|float|null $value): bool {
+        if (is_null($value)) {
+            if (!is_null($value)) {
+                throw new Exception("Attribute Error:TopLevel::serialDescriptor");
+            }
+        } elseif ($value instanceof SerialDescriptor) {
+            $value->validate();
+        } elseif (is_float($value) || is_int($value)) {
+            if (!is_float($value) && !is_int($value)) {
+                throw new Exception("Attribute Error:TopLevel::serialDescriptor");
+            }
+        } else {
+            throw new Exception("Attribute Error:TopLevel::serialDescriptor");
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return SerialDescriptor|float|null
+     */
+    public function getSerialDescriptor(): SerialDescriptor|float|null {
+        if (TopLevel::validateSerialDescriptor($this->serialDescriptor))  {
+            return $this->serialDescriptor;
+        }
+        throw new Exception('never get to getSerialDescriptor TopLevel::serialDescriptor');
+    }
+
+    /**
+     * @return SerialDescriptor|float|null
+     */
+    public static function sampleSerialDescriptor(): SerialDescriptor|float|null {
+        return SerialDescriptor::sample(); /*293:serialDescriptor*/
+    }
+
+    /**
+     * @param stdClass|float|null $value
+     * @throws Exception
+     * @return SerializableClass|float|null
+     */
+    public static function fromSerializable(stdClass|float|null $value): SerializableClass|float|null {
+        if (is_null($value)) {
+            return $value; /*null*/
+        } elseif (is_object($value)) {
+            return SerializableClass::from($value); /*class*/
+        } elseif (is_float($value) || is_int($value)) {
+            return $value; /*float*/
+        } else {
+            throw new Exception('Cannot deserialize union value in TopLevel');
+        }
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass|float|null
+     */
+    public function toSerializable(): stdClass|float|null {
+        if (TopLevel::validateSerializable($this->serializable))  {
+            if (is_null($this->serializable)) {
+                return $this->serializable; /*null*/
+            } elseif ($this->serializable instanceof SerializableClass) {
+                return $this->serializable->to(); /*class*/
+            } elseif (is_float($this->serializable) || is_int($this->serializable)) {
+                return $this->serializable; /*float*/
+            } else {
+                throw new Exception('Union value has no matching member in TopLevel');
+            }
+        }
+        throw new Exception('never get to this TopLevel::serializable');
+    }
+
+    /**
+     * @param SerializableClass|float|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSerializable(SerializableClass|float|null $value): bool {
+        if (is_null($value)) {
+            if (!is_null($value)) {
+                throw new Exception("Attribute Error:TopLevel::serializable");
+            }
+        } elseif ($value instanceof SerializableClass) {
+            $value->validate();
+        } elseif (is_float($value) || is_int($value)) {
+            if (!is_float($value) && !is_int($value)) {
+                throw new Exception("Attribute Error:TopLevel::serializable");
+            }
+        } else {
+            throw new Exception("Attribute Error:TopLevel::serializable");
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return SerializableClass|float|null
+     */
+    public function getSerializable(): SerializableClass|float|null {
+        if (TopLevel::validateSerializable($this->serializable))  {
+            return $this->serializable;
+        }
+        throw new Exception('never get to getSerializable TopLevel::serializable');
+    }
+
+    /**
+     * @return SerializableClass|float|null
+     */
+    public static function sampleSerializable(): SerializableClass|float|null {
+        return SerializableClass::sample(); /*294:serializable*/
     }
 
     /**
@@ -20823,7 +21145,7 @@ class TopLevel {
      * @return Serialize|float|null
      */
     public static function sampleSerialize(): Serialize|float|null {
-        return Serialize::sample(); /*291:serialize*/
+        return Serialize::sample(); /*295:serialize*/
     }
 
     /**
@@ -20899,7 +21221,83 @@ class TopLevel {
      * @return SerializerProvider|float|null
      */
     public static function sampleSerializerProvider(): SerializerProvider|float|null {
-        return SerializerProvider::sample(); /*292:serializerProvider*/
+        return SerializerProvider::sample(); /*296:serializerProvider*/
+    }
+
+    /**
+     * @param stdClass|float|null $value
+     * @throws Exception
+     * @return SerialName|float|null
+     */
+    public static function fromSerialName(stdClass|float|null $value): SerialName|float|null {
+        if (is_null($value)) {
+            return $value; /*null*/
+        } elseif (is_object($value)) {
+            return SerialName::from($value); /*class*/
+        } elseif (is_float($value) || is_int($value)) {
+            return $value; /*float*/
+        } else {
+            throw new Exception('Cannot deserialize union value in TopLevel');
+        }
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass|float|null
+     */
+    public function toSerialName(): stdClass|float|null {
+        if (TopLevel::validateSerialName($this->serialName))  {
+            if (is_null($this->serialName)) {
+                return $this->serialName; /*null*/
+            } elseif ($this->serialName instanceof SerialName) {
+                return $this->serialName->to(); /*class*/
+            } elseif (is_float($this->serialName) || is_int($this->serialName)) {
+                return $this->serialName; /*float*/
+            } else {
+                throw new Exception('Union value has no matching member in TopLevel');
+            }
+        }
+        throw new Exception('never get to this TopLevel::serialName');
+    }
+
+    /**
+     * @param SerialName|float|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSerialName(SerialName|float|null $value): bool {
+        if (is_null($value)) {
+            if (!is_null($value)) {
+                throw new Exception("Attribute Error:TopLevel::serialName");
+            }
+        } elseif ($value instanceof SerialName) {
+            $value->validate();
+        } elseif (is_float($value) || is_int($value)) {
+            if (!is_float($value) && !is_int($value)) {
+                throw new Exception("Attribute Error:TopLevel::serialName");
+            }
+        } else {
+            throw new Exception("Attribute Error:TopLevel::serialName");
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return SerialName|float|null
+     */
+    public function getSerialName(): SerialName|float|null {
+        if (TopLevel::validateSerialName($this->serialName))  {
+            return $this->serialName;
+        }
+        throw new Exception('never get to getSerialName TopLevel::serialName');
+    }
+
+    /**
+     * @return SerialName|float|null
+     */
+    public static function sampleSerialName(): SerialName|float|null {
+        return SerialName::sample(); /*297:serialName*/
     }
 
     /**
@@ -20975,7 +21373,7 @@ class TopLevel {
      * @return Set|float|null
      */
     public static function sampleSet(): Set|float|null {
-        return Set::sample(); /*293:set*/
+        return Set::sample(); /*298:set*/
     }
 
     /**
@@ -21051,7 +21449,7 @@ class TopLevel {
      * @return Short|float|null
      */
     public static function sampleShort(): Short|float|null {
-        return Short::sample(); /*294:short*/
+        return Short::sample(); /*299:short*/
     }
 
     /**
@@ -21127,7 +21525,7 @@ class TopLevel {
      * @return Signed|float|null
      */
     public static function sampleSigned(): Signed|float|null {
-        return Signed::sample(); /*295:signed*/
+        return Signed::sample(); /*300:signed*/
     }
 
     /**
@@ -21203,7 +21601,7 @@ class TopLevel {
      * @return SimpleModule|float|null
      */
     public static function sampleSimpleModule(): SimpleModule|float|null {
-        return SimpleModule::sample(); /*296:simpleModule*/
+        return SimpleModule::sample(); /*301:simpleModule*/
     }
 
     /**
@@ -21279,7 +21677,7 @@ class TopLevel {
      * @return Sizeof|float|null
      */
     public static function sampleSizeof(): Sizeof|float|null {
-        return Sizeof::sample(); /*297:sizeof*/
+        return Sizeof::sample(); /*302:sizeof*/
     }
 
     /**
@@ -21355,7 +21753,7 @@ class TopLevel {
      * @return Stackalloc|float|null
      */
     public static function sampleStackalloc(): Stackalloc|float|null {
-        return Stackalloc::sample(); /*298:stackalloc*/
+        return Stackalloc::sample(); /*303:stackalloc*/
     }
 
     /**
@@ -21431,7 +21829,7 @@ class TopLevel {
      * @return Standards|float|null
      */
     public static function sampleStandards(): Standards|float|null {
-        return Standards::sample(); /*299:standards*/
+        return Standards::sample(); /*304:standards*/
     }
 
     /**
@@ -21507,7 +21905,7 @@ class TopLevel {
      * @return StaticClass|float|null
      */
     public static function sampleStatic(): StaticClass|float|null {
-        return StaticClass::sample(); /*300:static*/
+        return StaticClass::sample(); /*305:static*/
     }
 
     /**
@@ -21583,7 +21981,7 @@ class TopLevel {
      * @return StaticAssert|float|null
      */
     public static function sampleStaticAssert(): StaticAssert|float|null {
-        return StaticAssert::sample(); /*301:staticAssert*/
+        return StaticAssert::sample(); /*306:staticAssert*/
     }
 
     /**
@@ -21659,7 +22057,7 @@ class TopLevel {
      * @return StaticCast|float|null
      */
     public static function sampleStaticCast(): StaticCast|float|null {
-        return StaticCast::sample(); /*302:staticCast*/
+        return StaticCast::sample(); /*307:staticCast*/
     }
 
     /**
@@ -21735,7 +22133,7 @@ class TopLevel {
      * @return StdDeserializer|float|null
      */
     public static function sampleStdDeserializer(): StdDeserializer|float|null {
-        return StdDeserializer::sample(); /*303:stdDeserializer*/
+        return StdDeserializer::sample(); /*308:stdDeserializer*/
     }
 
     /**
@@ -21811,7 +22209,7 @@ class TopLevel {
      * @return StdSerializer|float|null
      */
     public static function sampleStdSerializer(): StdSerializer|float|null {
-        return StdSerializer::sample(); /*304:stdSerializer*/
+        return StdSerializer::sample(); /*309:stdSerializer*/
     }
 
     /**
@@ -21887,7 +22285,7 @@ class TopLevel {
      * @return Strictfp|float|null
      */
     public static function sampleStrictfp(): Strictfp|float|null {
-        return Strictfp::sample(); /*305:strictfp*/
+        return Strictfp::sample(); /*310:strictfp*/
     }
 
     /**
@@ -21963,7 +22361,7 @@ class TopLevel {
      * @return StringClass|float|null
      */
     public static function sampleString(): StringClass|float|null {
-        return StringClass::sample(); /*306:string*/
+        return StringClass::sample(); /*311:string*/
     }
 
     /**
@@ -22039,7 +22437,7 @@ class TopLevel {
      * @return Struct|float|null
      */
     public static function sampleStruct(): Struct|float|null {
-        return Struct::sample(); /*307:struct*/
+        return Struct::sample(); /*312:struct*/
     }
 
     /**
@@ -22115,7 +22513,7 @@ class TopLevel {
      * @return Subscript|float|null
      */
     public static function sampleSubscript(): Subscript|float|null {
-        return Subscript::sample(); /*308:subscript*/
+        return Subscript::sample(); /*313:subscript*/
     }
 
     /**
@@ -22191,7 +22589,7 @@ class TopLevel {
      * @return Super|float|null
      */
     public static function sampleSuper(): Super|float|null {
-        return Super::sample(); /*309:super*/
+        return Super::sample(); /*314:super*/
     }
 
     /**
@@ -22267,7 +22665,7 @@ class TopLevel {
      * @return SwitchClass|float|null
      */
     public static function sampleSwitch(): SwitchClass|float|null {
-        return SwitchClass::sample(); /*310:switch*/
+        return SwitchClass::sample(); /*315:switch*/
     }
 
     /**
@@ -22343,7 +22741,7 @@ class TopLevel {
      * @return Symbol|float|null
      */
     public static function sampleSymbol(): Symbol|float|null {
-        return Symbol::sample(); /*311:symbol*/
+        return Symbol::sample(); /*316:symbol*/
     }
 
     /**
@@ -22419,7 +22817,7 @@ class TopLevel {
      * @return Synchronized|float|null
      */
     public static function sampleSynchronized(): Synchronized|float|null {
-        return Synchronized::sample(); /*312:synchronized*/
+        return Synchronized::sample(); /*317:synchronized*/
     }
 
     /**
@@ -22495,7 +22893,7 @@ class TopLevel {
      * @return System|float|null
      */
     public static function sampleSystem(): System|float|null {
-        return System::sample(); /*313:system*/
+        return System::sample(); /*318:system*/
     }
 
     /**
@@ -22571,7 +22969,7 @@ class TopLevel {
      * @return Template|float|null
      */
     public static function sampleTemplate(): Template|float|null {
-        return Template::sample(); /*314:template*/
+        return Template::sample(); /*319:template*/
     }
 
     /**
@@ -22647,7 +23045,7 @@ class TopLevel {
      * @return Then|float|null
      */
     public static function sampleThen(): Then|float|null {
-        return Then::sample(); /*315:then*/
+        return Then::sample(); /*320:then*/
     }
 
     /**
@@ -22723,7 +23121,7 @@ class TopLevel {
      * @return This|float|null
      */
     public static function sampleTopLevelThis(): This|float|null {
-        return This::sample(); /*316:topLevelThis*/
+        return This::sample(); /*321:topLevelThis*/
     }
 
     /**
@@ -22799,7 +23197,7 @@ class TopLevel {
      * @return ThreadLocal|float|null
      */
     public static function sampleThreadLocal(): ThreadLocal|float|null {
-        return ThreadLocal::sample(); /*317:threadLocal*/
+        return ThreadLocal::sample(); /*322:threadLocal*/
     }
 
     /**
@@ -22875,7 +23273,7 @@ class TopLevel {
      * @return ThrowClass|float|null
      */
     public static function sampleThrow(): ThrowClass|float|null {
-        return ThrowClass::sample(); /*318:throw*/
+        return ThrowClass::sample(); /*323:throw*/
     }
 
     /**
@@ -22951,7 +23349,7 @@ class TopLevel {
      * @return Throws|float|null
      */
     public static function sampleThrows(): Throws|float|null {
-        return Throws::sample(); /*319:throws*/
+        return Throws::sample(); /*324:throws*/
     }
 
     /**
@@ -23027,7 +23425,7 @@ class TopLevel {
      * @return TimeOnly|float|null
      */
     public static function sampleTimeOnly(): TimeOnly|float|null {
-        return TimeOnly::sample(); /*320:timeOnly*/
+        return TimeOnly::sample(); /*325:timeOnly*/
     }
 
     /**
@@ -23103,7 +23501,7 @@ class TopLevel {
      * @return TimeOnlyConverter|float|null
      */
     public static function sampleTimeOnlyConverter(): TimeOnlyConverter|float|null {
-        return TimeOnlyConverter::sample(); /*321:timeOnlyConverter*/
+        return TimeOnlyConverter::sample(); /*326:timeOnlyConverter*/
     }
 
     /**
@@ -23179,7 +23577,7 @@ class TopLevel {
      * @return TimeZone|float|null
      */
     public static function sampleTimeZone(): TimeZone|float|null {
-        return TimeZone::sample(); /*322:timeZone*/
+        return TimeZone::sample(); /*327:timeZone*/
     }
 
     /**
@@ -23255,7 +23653,7 @@ class TopLevel {
      * @return ToJSON|float|null
      */
     public static function sampleToJSON(): ToJSON|float|null {
-        return ToJSON::sample(); /*323:toJSON*/
+        return ToJSON::sample(); /*328:toJSON*/
     }
 
     /**
@@ -23331,7 +23729,7 @@ class TopLevel {
      * @return TopLevelClass|float|null
      */
     public static function sampleTopLevel(): TopLevelClass|float|null {
-        return TopLevelClass::sample(); /*324:topLevel*/
+        return TopLevelClass::sample(); /*329:topLevel*/
     }
 
     /**
@@ -23407,7 +23805,7 @@ class TopLevel {
      * @return ToString|float|null
      */
     public static function sampleToString(): ToString|float|null {
-        return ToString::sample(); /*325:toString*/
+        return ToString::sample(); /*330:toString*/
     }
 
     /**
@@ -23483,7 +23881,7 @@ class TopLevel {
      * @return Transient|float|null
      */
     public static function sampleTransient(): Transient|float|null {
-        return Transient::sample(); /*326:transient*/
+        return Transient::sample(); /*331:transient*/
     }
 
     /**
@@ -23559,7 +23957,7 @@ class TopLevel {
      * @return TrueClass|float|null
      */
     public static function sampleTrue(): TrueClass|float|null {
-        return TrueClass::sample(); /*327:true*/
+        return TrueClass::sample(); /*332:true*/
     }
 
     /**
@@ -23635,7 +24033,7 @@ class TopLevel {
      * @return UnionTrueTrue|float|null
      */
     public static function sampleTopLevelTrue(): UnionTrueTrue|float|null {
-        return UnionTrueTrue::sample(); /*328:topLevelTrue*/
+        return UnionTrueTrue::sample(); /*333:topLevelTrue*/
     }
 
     /**
@@ -23711,7 +24109,7 @@ class TopLevel {
      * @return TryClass|float|null
      */
     public static function sampleTry(): TryClass|float|null {
-        return TryClass::sample(); /*329:try*/
+        return TryClass::sample(); /*334:try*/
     }
 
     /**
@@ -23787,7 +24185,7 @@ class TopLevel {
      * @return Type|float|null
      */
     public static function sampleType(): Type|float|null {
-        return Type::sample(); /*330:type*/
+        return Type::sample(); /*335:type*/
     }
 
     /**
@@ -23863,7 +24261,7 @@ class TopLevel {
      * @return TypeClass|float|null
      */
     public static function sampleTopLevelType(): TypeClass|float|null {
-        return TypeClass::sample(); /*331:topLevelType*/
+        return TypeClass::sample(); /*336:topLevelType*/
     }
 
     /**
@@ -23939,7 +24337,7 @@ class TopLevel {
      * @return Typealias|float|null
      */
     public static function sampleTypealias(): Typealias|float|null {
-        return Typealias::sample(); /*332:typealias*/
+        return Typealias::sample(); /*337:typealias*/
     }
 
     /**
@@ -24015,7 +24413,7 @@ class TopLevel {
      * @return Typedef|float|null
      */
     public static function sampleTypedef(): Typedef|float|null {
-        return Typedef::sample(); /*333:typedef*/
+        return Typedef::sample(); /*338:typedef*/
     }
 
     /**
@@ -24091,7 +24489,7 @@ class TopLevel {
      * @return Typeid|float|null
      */
     public static function sampleTypeid(): Typeid|float|null {
-        return Typeid::sample(); /*334:typeid*/
+        return Typeid::sample(); /*339:typeid*/
     }
 
     /**
@@ -24167,7 +24565,7 @@ class TopLevel {
      * @return Typename|float|null
      */
     public static function sampleTypename(): Typename|float|null {
-        return Typename::sample(); /*335:typename*/
+        return Typename::sample(); /*340:typename*/
     }
 
     /**
@@ -24243,7 +24641,7 @@ class TopLevel {
      * @return Typeof|float|null
      */
     public static function sampleTypeof(): Typeof|float|null {
-        return Typeof::sample(); /*336:typeof*/
+        return Typeof::sample(); /*341:typeof*/
     }
 
     /**
@@ -24319,7 +24717,7 @@ class TopLevel {
      * @return Uint|float|null
      */
     public static function sampleUint(): Uint|float|null {
-        return Uint::sample(); /*337:uint*/
+        return Uint::sample(); /*342:uint*/
     }
 
     /**
@@ -24395,7 +24793,7 @@ class TopLevel {
      * @return Ulong|float|null
      */
     public static function sampleUlong(): Ulong|float|null {
-        return Ulong::sample(); /*338:ulong*/
+        return Ulong::sample(); /*343:ulong*/
     }
 
     /**
@@ -24471,7 +24869,7 @@ class TopLevel {
      * @return Unchecked|float|null
      */
     public static function sampleUnchecked(): Unchecked|float|null {
-        return Unchecked::sample(); /*339:unchecked*/
+        return Unchecked::sample(); /*344:unchecked*/
     }
 
     /**
@@ -24547,7 +24945,7 @@ class TopLevel {
      * @return Undefined|float|null
      */
     public static function sampleUndefined(): Undefined|float|null {
-        return Undefined::sample(); /*340:undefined*/
+        return Undefined::sample(); /*345:undefined*/
     }
 
     /**
@@ -24623,7 +25021,7 @@ class TopLevel {
      * @return UnionClass|float|null
      */
     public static function sampleUnion(): UnionClass|float|null {
-        return UnionClass::sample(); /*341:union*/
+        return UnionClass::sample(); /*346:union*/
     }
 
     /**
@@ -24699,7 +25097,7 @@ class TopLevel {
      * @return Unowned|float|null
      */
     public static function sampleUnowned(): Unowned|float|null {
-        return Unowned::sample(); /*342:unowned*/
+        return Unowned::sample(); /*347:unowned*/
     }
 
     /**
@@ -24775,7 +25173,7 @@ class TopLevel {
      * @return Unsafe|float|null
      */
     public static function sampleUnsafe(): Unsafe|float|null {
-        return Unsafe::sample(); /*343:unsafe*/
+        return Unsafe::sample(); /*348:unsafe*/
     }
 
     /**
@@ -24851,7 +25249,83 @@ class TopLevel {
      * @return Unsigned|float|null
      */
     public static function sampleUnsigned(): Unsigned|float|null {
-        return Unsigned::sample(); /*344:unsigned*/
+        return Unsigned::sample(); /*349:unsigned*/
+    }
+
+    /**
+     * @param stdClass|float|null $value
+     * @throws Exception
+     * @return UseSerializers|float|null
+     */
+    public static function fromUseSerializers(stdClass|float|null $value): UseSerializers|float|null {
+        if (is_null($value)) {
+            return $value; /*null*/
+        } elseif (is_object($value)) {
+            return UseSerializers::from($value); /*class*/
+        } elseif (is_float($value) || is_int($value)) {
+            return $value; /*float*/
+        } else {
+            throw new Exception('Cannot deserialize union value in TopLevel');
+        }
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass|float|null
+     */
+    public function toUseSerializers(): stdClass|float|null {
+        if (TopLevel::validateUseSerializers($this->useSerializers))  {
+            if (is_null($this->useSerializers)) {
+                return $this->useSerializers; /*null*/
+            } elseif ($this->useSerializers instanceof UseSerializers) {
+                return $this->useSerializers->to(); /*class*/
+            } elseif (is_float($this->useSerializers) || is_int($this->useSerializers)) {
+                return $this->useSerializers; /*float*/
+            } else {
+                throw new Exception('Union value has no matching member in TopLevel');
+            }
+        }
+        throw new Exception('never get to this TopLevel::useSerializers');
+    }
+
+    /**
+     * @param UseSerializers|float|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateUseSerializers(UseSerializers|float|null $value): bool {
+        if (is_null($value)) {
+            if (!is_null($value)) {
+                throw new Exception("Attribute Error:TopLevel::useSerializers");
+            }
+        } elseif ($value instanceof UseSerializers) {
+            $value->validate();
+        } elseif (is_float($value) || is_int($value)) {
+            if (!is_float($value) && !is_int($value)) {
+                throw new Exception("Attribute Error:TopLevel::useSerializers");
+            }
+        } else {
+            throw new Exception("Attribute Error:TopLevel::useSerializers");
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return UseSerializers|float|null
+     */
+    public function getUseSerializers(): UseSerializers|float|null {
+        if (TopLevel::validateUseSerializers($this->useSerializers))  {
+            return $this->useSerializers;
+        }
+        throw new Exception('never get to getUseSerializers TopLevel::useSerializers');
+    }
+
+    /**
+     * @return UseSerializers|float|null
+     */
+    public static function sampleUseSerializers(): UseSerializers|float|null {
+        return UseSerializers::sample(); /*350:useSerializers*/
     }
 
     /**
@@ -24927,7 +25401,7 @@ class TopLevel {
      * @return Ushort|float|null
      */
     public static function sampleUshort(): Ushort|float|null {
-        return Ushort::sample(); /*345:ushort*/
+        return Ushort::sample(); /*351:ushort*/
     }
 
     /**
@@ -25003,7 +25477,7 @@ class TopLevel {
      * @return Using|float|null
      */
     public static function sampleUsing(): Using|float|null {
-        return Using::sample(); /*346:using*/
+        return Using::sample(); /*352:using*/
     }
 
     /**
@@ -25079,7 +25553,7 @@ class TopLevel {
      * @return Utf8JSONReader|float|null
      */
     public static function sampleUtf8JSONReader(): Utf8JSONReader|float|null {
-        return Utf8JSONReader::sample(); /*347:utf8JSONReader*/
+        return Utf8JSONReader::sample(); /*353:utf8JSONReader*/
     }
 
     /**
@@ -25155,7 +25629,7 @@ class TopLevel {
      * @return Utf8JSONWriter|float|null
      */
     public static function sampleUtf8JSONWriter(): Utf8JSONWriter|float|null {
-        return Utf8JSONWriter::sample(); /*348:utf8JSONWriter*/
+        return Utf8JSONWriter::sample(); /*354:utf8JSONWriter*/
     }
 
     /**
@@ -25231,7 +25705,7 @@ class TopLevel {
      * @return UUID|float|null
      */
     public static function sampleUUID(): UUID|float|null {
-        return UUID::sample(); /*349:uuid*/
+        return UUID::sample(); /*355:uuid*/
     }
 
     /**
@@ -25307,7 +25781,7 @@ class TopLevel {
      * @return VarClass|float|null
      */
     public static function sampleVar(): VarClass|float|null {
-        return VarClass::sample(); /*350:var*/
+        return VarClass::sample(); /*356:var*/
     }
 
     /**
@@ -25383,7 +25857,7 @@ class TopLevel {
      * @return Virtual|float|null
      */
     public static function sampleVirtual(): Virtual|float|null {
-        return Virtual::sample(); /*351:virtual*/
+        return Virtual::sample(); /*357:virtual*/
     }
 
     /**
@@ -25459,7 +25933,7 @@ class TopLevel {
      * @return VoidClass|float|null
      */
     public static function sampleVoid(): VoidClass|float|null {
-        return VoidClass::sample(); /*352:void*/
+        return VoidClass::sample(); /*358:void*/
     }
 
     /**
@@ -25535,7 +26009,7 @@ class TopLevel {
      * @return Volatile|float|null
      */
     public static function sampleVolatile(): Volatile|float|null {
-        return Volatile::sample(); /*353:volatile*/
+        return Volatile::sample(); /*359:volatile*/
     }
 
     /**
@@ -25611,7 +26085,7 @@ class TopLevel {
      * @return WcharT|float|null
      */
     public static function sampleWcharT(): WcharT|float|null {
-        return WcharT::sample(); /*354:wcharT*/
+        return WcharT::sample(); /*360:wcharT*/
     }
 
     /**
@@ -25687,7 +26161,7 @@ class TopLevel {
      * @return Weak|float|null
      */
     public static function sampleWeak(): Weak|float|null {
-        return Weak::sample(); /*355:weak*/
+        return Weak::sample(); /*361:weak*/
     }
 
     /**
@@ -25763,7 +26237,7 @@ class TopLevel {
      * @return Where|float|null
      */
     public static function sampleWhere(): Where|float|null {
-        return Where::sample(); /*356:where*/
+        return Where::sample(); /*362:where*/
     }
 
     /**
@@ -25839,7 +26313,7 @@ class TopLevel {
      * @return WhileClass|float|null
      */
     public static function sampleWhile(): WhileClass|float|null {
-        return WhileClass::sample(); /*357:while*/
+        return WhileClass::sample(); /*363:while*/
     }
 
     /**
@@ -25915,7 +26389,7 @@ class TopLevel {
      * @return WillSet|float|null
      */
     public static function sampleWillSet(): WillSet|float|null {
-        return WillSet::sample(); /*358:willSet*/
+        return WillSet::sample(); /*364:willSet*/
     }
 
     /**
@@ -25991,7 +26465,7 @@ class TopLevel {
      * @return With|float|null
      */
     public static function sampleWith(): With|float|null {
-        return With::sample(); /*359:with*/
+        return With::sample(); /*365:with*/
     }
 
     /**
@@ -26067,7 +26541,7 @@ class TopLevel {
      * @return XorClass|float|null
      */
     public static function sampleXor(): XorClass|float|null {
-        return XorClass::sample(); /*360:xor*/
+        return XorClass::sample(); /*366:xor*/
     }
 
     /**
@@ -26143,7 +26617,7 @@ class TopLevel {
      * @return XorEq|float|null
      */
     public static function sampleXorEq(): XorEq|float|null {
-        return XorEq::sample(); /*361:xorEq*/
+        return XorEq::sample(); /*367:xorEq*/
     }
 
     /**
@@ -26219,7 +26693,7 @@ class TopLevel {
      * @return Yes|float|null
      */
     public static function sampleYes(): Yes|float|null {
-        return Yes::sample(); /*362:yes*/
+        return Yes::sample(); /*368:yes*/
     }
 
     /**
@@ -26295,7 +26769,7 @@ class TopLevel {
      * @return YieldClass|float|null
      */
     public static function sampleYield(): YieldClass|float|null {
-        return YieldClass::sample(); /*363:yield*/
+        return YieldClass::sample(); /*369:yield*/
     }
 
     /**
@@ -26475,6 +26949,7 @@ class TopLevel {
         || TopLevel::validateJSONParser($this->jsonParser)
         || TopLevel::validateJSONReader($this->jsonReader)
         || TopLevel::validateJSONTokenType($this->jsonTokenType)
+        || TopLevel::validateKSerializer($this->kSerializer)
         || TopLevel::validateLambda($this->lambda)
         || TopLevel::validateLazy($this->lazy)
         || TopLevel::validateLeft($this->left)
@@ -26529,6 +27004,7 @@ class TopLevel {
         || TopLevel::validatePostfix($this->postfix)
         || TopLevel::validatePrecedence($this->precedence)
         || TopLevel::validatePrefix($this->prefix)
+        || TopLevel::validatePrimitiveKind($this->primitiveKind)
         || TopLevel::validatePrint($this->print)
         || TopLevel::validatePrintf($this->printf)
         || TopLevel::validatePrintMembers($this->printMembers)
@@ -26563,8 +27039,11 @@ class TopLevel {
         || TopLevel::validateSelf($this->self)
         || TopLevel::validateTopLevelSelf($this->topLevelSelf)
         || TopLevel::validateSendable($this->sendable)
+        || TopLevel::validateSerialDescriptor($this->serialDescriptor)
+        || TopLevel::validateSerializable($this->serializable)
         || TopLevel::validateSerialize($this->serialize)
         || TopLevel::validateSerializerProvider($this->serializerProvider)
+        || TopLevel::validateSerialName($this->serialName)
         || TopLevel::validateSet($this->set)
         || TopLevel::validateShort($this->short)
         || TopLevel::validateSigned($this->signed)
@@ -26617,6 +27096,7 @@ class TopLevel {
         || TopLevel::validateUnowned($this->unowned)
         || TopLevel::validateUnsafe($this->unsafe)
         || TopLevel::validateUnsigned($this->unsigned)
+        || TopLevel::validateUseSerializers($this->useSerializers)
         || TopLevel::validateUshort($this->ushort)
         || TopLevel::validateUsing($this->using)
         || TopLevel::validateUtf8JSONReader($this->utf8JSONReader)
@@ -26816,6 +27296,7 @@ class TopLevel {
         $out->{'JsonParser'} = $this->toJSONParser();
         $out->{'JsonReader'} = $this->toJSONReader();
         $out->{'JsonTokenType'} = $this->toJSONTokenType();
+        $out->{'KSerializer'} = $this->toKSerializer();
         $out->{'lambda'} = $this->toLambda();
         $out->{'lazy'} = $this->toLazy();
         $out->{'left'} = $this->toLeft();
@@ -26870,6 +27351,7 @@ class TopLevel {
         $out->{'postfix'} = $this->toPostfix();
         $out->{'precedence'} = $this->toPrecedence();
         $out->{'prefix'} = $this->toPrefix();
+        $out->{'PrimitiveKind'} = $this->toPrimitiveKind();
         $out->{'print'} = $this->toPrint();
         $out->{'printf'} = $this->toPrintf();
         $out->{'printMembers'} = $this->toPrintMembers();
@@ -26904,8 +27386,11 @@ class TopLevel {
         $out->{'Self'} = $this->toSelf();
         $out->{'self'} = $this->toTopLevelSelf();
         $out->{'Sendable'} = $this->toSendable();
+        $out->{'SerialDescriptor'} = $this->toSerialDescriptor();
+        $out->{'Serializable'} = $this->toSerializable();
         $out->{'serialize'} = $this->toSerialize();
         $out->{'SerializerProvider'} = $this->toSerializerProvider();
+        $out->{'SerialName'} = $this->toSerialName();
         $out->{'set'} = $this->toSet();
         $out->{'short'} = $this->toShort();
         $out->{'signed'} = $this->toSigned();
@@ -26958,6 +27443,7 @@ class TopLevel {
         $out->{'unowned'} = $this->toUnowned();
         $out->{'unsafe'} = $this->toUnsafe();
         $out->{'unsigned'} = $this->toUnsigned();
+        $out->{'UseSerializers'} = $this->toUseSerializers();
         $out->{'ushort'} = $this->toUshort();
         $out->{'using'} = $this->toUsing();
         $out->{'Utf8JsonReader'} = $this->toUtf8JSONReader();
@@ -27159,6 +27645,7 @@ class TopLevel {
         ,TopLevel::fromJSONParser($obj->{'JsonParser'})
         ,TopLevel::fromJSONReader($obj->{'JsonReader'})
         ,TopLevel::fromJSONTokenType($obj->{'JsonTokenType'})
+        ,TopLevel::fromKSerializer($obj->{'KSerializer'})
         ,TopLevel::fromLambda($obj->{'lambda'})
         ,TopLevel::fromLazy($obj->{'lazy'})
         ,TopLevel::fromLeft($obj->{'left'})
@@ -27213,6 +27700,7 @@ class TopLevel {
         ,TopLevel::fromPostfix($obj->{'postfix'})
         ,TopLevel::fromPrecedence($obj->{'precedence'})
         ,TopLevel::fromPrefix($obj->{'prefix'})
+        ,TopLevel::fromPrimitiveKind($obj->{'PrimitiveKind'})
         ,TopLevel::fromPrint($obj->{'print'})
         ,TopLevel::fromPrintf($obj->{'printf'})
         ,TopLevel::fromPrintMembers($obj->{'printMembers'})
@@ -27247,8 +27735,11 @@ class TopLevel {
         ,TopLevel::fromSelf($obj->{'Self'})
         ,TopLevel::fromTopLevelSelf($obj->{'self'})
         ,TopLevel::fromSendable($obj->{'Sendable'})
+        ,TopLevel::fromSerialDescriptor($obj->{'SerialDescriptor'})
+        ,TopLevel::fromSerializable($obj->{'Serializable'})
         ,TopLevel::fromSerialize($obj->{'serialize'})
         ,TopLevel::fromSerializerProvider($obj->{'SerializerProvider'})
+        ,TopLevel::fromSerialName($obj->{'SerialName'})
         ,TopLevel::fromSet($obj->{'set'})
         ,TopLevel::fromShort($obj->{'short'})
         ,TopLevel::fromSigned($obj->{'signed'})
@@ -27301,6 +27792,7 @@ class TopLevel {
         ,TopLevel::fromUnowned($obj->{'unowned'})
         ,TopLevel::fromUnsafe($obj->{'unsafe'})
         ,TopLevel::fromUnsigned($obj->{'unsigned'})
+        ,TopLevel::fromUseSerializers($obj->{'UseSerializers'})
         ,TopLevel::fromUshort($obj->{'ushort'})
         ,TopLevel::fromUsing($obj->{'using'})
         ,TopLevel::fromUtf8JSONReader($obj->{'Utf8JsonReader'})
@@ -27500,6 +27992,7 @@ class TopLevel {
         ,TopLevel::sampleJSONParser()
         ,TopLevel::sampleJSONReader()
         ,TopLevel::sampleJSONTokenType()
+        ,TopLevel::sampleKSerializer()
         ,TopLevel::sampleLambda()
         ,TopLevel::sampleLazy()
         ,TopLevel::sampleLeft()
@@ -27554,6 +28047,7 @@ class TopLevel {
         ,TopLevel::samplePostfix()
         ,TopLevel::samplePrecedence()
         ,TopLevel::samplePrefix()
+        ,TopLevel::samplePrimitiveKind()
         ,TopLevel::samplePrint()
         ,TopLevel::samplePrintf()
         ,TopLevel::samplePrintMembers()
@@ -27588,8 +28082,11 @@ class TopLevel {
         ,TopLevel::sampleSelf()
         ,TopLevel::sampleTopLevelSelf()
         ,TopLevel::sampleSendable()
+        ,TopLevel::sampleSerialDescriptor()
+        ,TopLevel::sampleSerializable()
         ,TopLevel::sampleSerialize()
         ,TopLevel::sampleSerializerProvider()
+        ,TopLevel::sampleSerialName()
         ,TopLevel::sampleSet()
         ,TopLevel::sampleShort()
         ,TopLevel::sampleSigned()
@@ -27642,6 +28139,7 @@ class TopLevel {
         ,TopLevel::sampleUnowned()
         ,TopLevel::sampleUnsafe()
         ,TopLevel::sampleUnsigned()
+        ,TopLevel::sampleUseSerializers()
         ,TopLevel::sampleUshort()
         ,TopLevel::sampleUsing()
         ,TopLevel::sampleUtf8JSONReader()
@@ -35135,6 +35633,51 @@ class JSONWriter {
     }
 }
 
+// This is an autogenerated file:KSerializer
+
+class KSerializer {
+
+    /**
+     */
+    public function __construct() {
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return true;
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return KSerializer
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): KSerializer {
+        return new KSerializer(
+        );
+    }
+
+    /**
+     * @return KSerializer
+     */
+    public static function sample(): KSerializer {
+        return new KSerializer(
+        );
+    }
+}
+
 // This is an autogenerated file:Lambda
 
 class Lambda {
@@ -37475,6 +38018,51 @@ class Prefix {
     }
 }
 
+// This is an autogenerated file:PrimitiveKind
+
+class PrimitiveKind {
+
+    /**
+     */
+    public function __construct() {
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return true;
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return PrimitiveKind
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): PrimitiveKind {
+        return new PrimitiveKind(
+        );
+    }
+
+    /**
+     * @return PrimitiveKind
+     */
+    public static function sample(): PrimitiveKind {
+        return new PrimitiveKind(
+        );
+    }
+}
+
 // This is an autogenerated file:PrintClass
 
 class PrintClass {
@@ -38960,6 +39548,141 @@ class Sendable {
     }
 }
 
+// This is an autogenerated file:SerialDescriptor
+
+class SerialDescriptor {
+
+    /**
+     */
+    public function __construct() {
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return true;
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return SerialDescriptor
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): SerialDescriptor {
+        return new SerialDescriptor(
+        );
+    }
+
+    /**
+     * @return SerialDescriptor
+     */
+    public static function sample(): SerialDescriptor {
+        return new SerialDescriptor(
+        );
+    }
+}
+
+// This is an autogenerated file:SerialName
+
+class SerialName {
+
+    /**
+     */
+    public function __construct() {
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return true;
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return SerialName
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): SerialName {
+        return new SerialName(
+        );
+    }
+
+    /**
+     * @return SerialName
+     */
+    public static function sample(): SerialName {
+        return new SerialName(
+        );
+    }
+}
+
+// This is an autogenerated file:SerializableClass
+
+class SerializableClass {
+
+    /**
+     */
+    public function __construct() {
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return true;
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return SerializableClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): SerializableClass {
+        return new SerializableClass(
+        );
+    }
+
+    /**
+     * @return SerializableClass
+     */
+    public static function sample(): SerializableClass {
+        return new SerializableClass(
+        );
+    }
+}
+
 // This is an autogenerated file:Serialize
 
 class Serialize {
@@ -41750,6 +42473,51 @@ class Unsigned {
     }
 }
 
+// This is an autogenerated file:UseSerializers
+
+class UseSerializers {
+
+    /**
+     */
+    public function __construct() {
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return true;
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return UseSerializers
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): UseSerializers {
+        return new UseSerializers(
+        );
+    }
+
+    /**
+     * @return UseSerializers
+     */
+    public static function sample(): UseSerializers {
+        return new UseSerializers(
+        );
+    }
+}
+
 // This is an autogenerated file:Ushort
 
 class Ushort {
diff --git a/base/schema-pike/test/inputs/schema/keyword-enum.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/keyword-enum.schema/default/TopLevel.pmod
index 9b80bd2..db46bce 100644
--- a/base/schema-pike/test/inputs/schema/keyword-enum.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/keyword-enum.schema/default/TopLevel.pmod
@@ -290,9 +290,14 @@ enum Enum {
     SEL = "SEL",                                                   // json: "SEL"
     SELECT = "select",                                             // json: "select"
     SELF = "Self",                                                 // json: "Self"
+    SERIALIZABLE = "Serializable",                                 // json: "Serializable"
     ENUM_SELF = "self",                                            // json: "self"
     SENDABLE = "Sendable",                                         // json: "Sendable"
     SERIALIZE = "serialize",                                       // json: "serialize"
+    SERIAL_NAME = "SerialName",                                    // json: "SerialName"
+    K_SERIALIZER = "KSerializer",                                  // json: "KSerializer"
+    PRIMITIVE_KIND = "PrimitiveKind",                              // json: "PrimitiveKind"
+    SERIAL_DESCRIPTOR = "SerialDescriptor",                        // json: "SerialDescriptor"
     SERIALIZER_PROVIDER = "SerializerProvider",                    // json: "SerializerProvider"
     SET = "set",                                                   // json: "set"
     SHORT = "short",                                               // json: "short"
@@ -343,6 +348,7 @@ enum Enum {
     UNCHECKED = "unchecked",                                       // json: "unchecked"
     UNDEFINED = "undefined",                                       // json: "undefined"
     UNION = "union",                                               // json: "union"
+    USE_SERIALIZERS = "UseSerializers",                            // json: "UseSerializers"
     UNOWNED = "unowned",                                           // json: "unowned"
     UNSAFE = "unsafe",                                             // json: "unsafe"
     UNSIGNED = "unsigned",                                         // json: "unsigned"
@@ -369,5 +375,5 @@ enum Enum {
 }
 
 Enum Enum_from_JSON(mixed json) {
-    if(!zero_type(json)&&json != "_"&&json != "_Bool"&&json != "_Complex"&&json != "_Imaginery"&&json != "abstract"&&json != "alignas"&&json != "alignof"&&json != "and"&&json != "and_eq"&&json != "any"&&json != "Any"&&json != "array"&&json != "as"&&json != "asm"&&json != "assert"&&json != "associatedtype"&&json != "associativity"&&json != "async"&&json != "atomic"&&json != "atomic_cancel"&&json != "atomic_commit"&&json != "atomic_noexcept"&&json != "auto"&&json != "await"&&json != "base"&&json != "bitand"&&json != "bitor"&&json != "BOOL"&&json != "bool"&&json != "boolean"&&json != "break"&&json != "bycopy"&&json != "byref"&&json != "byte"&&json != "Calendar"&&json != "case"&&json != "catch"&&json != "chan"&&json != "char"&&json != "char16_t"&&json != "char32_t"&&json != "checked"&&json != "class"&&json != "Class"&&json != "clone"&&json != "co_await"&&json != "co_return"&&json != "co_yield"&&json != "Codable"&&json != "CodingKey"&&json != "CodingKeys"&&json != "compl"&&json != "concept"&&json != "console"&&json != "const"&&json != "const_cast"&&json != "constexpr"&&json != "constructor"&&json != "continue"&&json != "convenience"&&json != "convert"&&json != "converter"&&json != "CultureInfo"&&json != "date"&&json != "date_parse_handling"&&json != "DateFormatter"&&json != "DateOnly"&&json != "DateOnlyConverter"&&json != "DateTime"&&json != "DateTimeStyles"&&json != "debugger"&&json != "decimal"&&json != "declare"&&json != "decltype"&&json != "decode_string"&&json != "Decoder"&&json != "DecodingError"&&json != "def"&&json != "default"&&json != "defer"&&json != "deinit"&&json != "del"&&json != "delegate"&&json != "delete"&&json != "dict"&&json != "dictionary"&&json != "didSet"&&json != "do"&&json != "double"&&json != "dynamic"&&json != "dynamic_cast"&&json != "elif"&&json != "else"&&json != "encode_quick_type"&&json != "Encoder"&&json != "enum"&&json != "EnumValues"&&json != "Equatable"&&json != "equalityContract"&&json != "event"&&json != "except"&&json != "exception"&&json != "explicit"&&json != "export"&&json != "exposing"&&json != "extends"&&json != "extension"&&json != "extern"&&json != "fallthrough"&&json != "false"&&json != "False"&&json != "fileprivate"&&json != "final"&&json != "finally"&&json != "fixed"&&json != "float"&&json != "for"&&json != "foreach"&&json != "FormatException"&&json != "friend"&&json != "from"&&json != "from_json"&&json != "func"&&json != "function"&&json != "get"&&json != "global"&&json != "go"&&json != "goto"&&json != "guard"&&json != "Hashable"&&json != "hashCode"&&json != "Hasher"&&json != "hasOwnProperty"&&json != "id"&&json != "if"&&json != "IMP"&&json != "implements"&&json != "implicit"&&json != "import"&&json != "in"&&json != "indirect"&&json != "infix"&&json != "init"&&json != "inline"&&json != "inout"&&json != "instanceof"&&json != "int"&&json != "interface"&&json != "internal"&&json != "IsoDateTimeOffsetConverter"&&json != "iterable"&&json != "is"&&json != "jdec"&&json != "jenc"&&json != "jpipe"&&json != "json"&&json != "json_converter"&&json != "json_serializer"&&json != "json_token"&&json != "json_writer"&&json != "JSONAny"&&json != "JSONCodingKey"&&json != "JSONDecoder"&&json != "JSONEncoder"&&json != "JsonException"&&json != "JsonGenerator"&&json != "JsonNode"&&json != "JSONNull"&&json != "JsonParser"&&json != "JsonReader"&&json != "JsonTokenType"&&json != "lambda"&&json != "lazy"&&json != "left"&&json != "let"&&json != "list"&&json != "Locale"&&json != "lock"&&json != "long"&&json != "map"&&json != "MapEntry"&&json != "metadata_property_handling"&&json != "module"&&json != "mutable"&&json != "mutating"&&json != "namespace"&&json != "native"&&json != "new"&&json != "newtonsoft"&&json != "nil"&&json != "NO"&&json != "noexcept"&&json != "nonatomic"&&json != "none"&&json != "None"&&json != "nonlocal"&&json != "nonmutating"&&json != "NSObject"&&json != "noSuchMethod"&&json != "not"&&json != "not_eq"&&json != "NSError"&&json != "NSString"&&json != "NULL"&&json != "null"&&json != "nullptr"&&json != "number"&&json != "object"&&json != "ObjectMapper"&&json != "of"&&json != "oneway"&&json != "open"&&json != "operator"&&json != "optional"&&json != "or"&&json != "or_eq"&&json != "out"&&json != "override"&&json != "package"&&json != "params"&&json != "pass"&&json != "port"&&json != "postfix"&&json != "precedence"&&json != "prefix"&&json != "print"&&json != "printf"&&json != "printMembers"&&json != "private"&&json != "protected"&&json != "Protocol"&&json != "protocol"&&json != "public"&&json != "quicktype"&&json != "raise"&&json != "range"&&json != "readonly"&&json != "ref"&&json != "RegExp"&&json != "register"&&json != "reinterpret_cast"&&json != "repeat"&&json != "require"&&json != "required"&&json != "requires"&&json != "restrict"&&json != "retain"&&json != "rethrows"&&json != "return"&&json != "right"&&json != "runtimeType"&&json != "s"&&json != "sbyte"&&json != "sealed"&&json != "SEL"&&json != "select"&&json != "Self"&&json != "self"&&json != "Sendable"&&json != "serialize"&&json != "SerializerProvider"&&json != "set"&&json != "short"&&json != "signed"&&json != "SimpleModule"&&json != "sizeof"&&json != "stackalloc"&&json != "Standards"&&json != "static"&&json != "static_assert"&&json != "static_cast"&&json != "StdDeserializer"&&json != "StdSerializer"&&json != "strictfp"&&json != "string"&&json != "struct"&&json != "subscript"&&json != "super"&&json != "switch"&&json != "symbol"&&json != "synchronized"&&json != "system"&&json != "template"&&json != "then"&&json != "this"&&json != "thread_local"&&json != "throw"&&json != "throws"&&json != "TimeOnly"&&json != "TimeOnlyConverter"&&json != "TimeZone"&&json != "to_json"&&json != "top_level"&&json != "toString"&&json != "transient"&&json != "True"&&json != "true"&&json != "try"&&json != "Type"&&json != "type"&&json != "typealias"&&json != "typedef"&&json != "typeid"&&json != "typename"&&json != "typeof"&&json != "uint"&&json != "ulong"&&json != "unchecked"&&json != "undefined"&&json != "union"&&json != "unowned"&&json != "unsafe"&&json != "unsigned"&&json != "ushort"&&json != "using"&&json != "Utf8JsonReader"&&json != "Utf8JsonWriter"&&json != "UUID"&&json != "var"&&json != "virtual"&&json != "void"&&json != "volatile"&&json != "wchar_t"&&json != "weak"&&json != "where"&&json != "while"&&json != "willSet"&&json != "with"&&json != "xor"&&json != "xor_eq"&&json != "YES"&&json != "yield"&&json != "dummy")error("enum");return json;
+    if(!zero_type(json)&&json != "_"&&json != "_Bool"&&json != "_Complex"&&json != "_Imaginery"&&json != "abstract"&&json != "alignas"&&json != "alignof"&&json != "and"&&json != "and_eq"&&json != "any"&&json != "Any"&&json != "array"&&json != "as"&&json != "asm"&&json != "assert"&&json != "associatedtype"&&json != "associativity"&&json != "async"&&json != "atomic"&&json != "atomic_cancel"&&json != "atomic_commit"&&json != "atomic_noexcept"&&json != "auto"&&json != "await"&&json != "base"&&json != "bitand"&&json != "bitor"&&json != "BOOL"&&json != "bool"&&json != "boolean"&&json != "break"&&json != "bycopy"&&json != "byref"&&json != "byte"&&json != "Calendar"&&json != "case"&&json != "catch"&&json != "chan"&&json != "char"&&json != "char16_t"&&json != "char32_t"&&json != "checked"&&json != "class"&&json != "Class"&&json != "clone"&&json != "co_await"&&json != "co_return"&&json != "co_yield"&&json != "Codable"&&json != "CodingKey"&&json != "CodingKeys"&&json != "compl"&&json != "concept"&&json != "console"&&json != "const"&&json != "const_cast"&&json != "constexpr"&&json != "constructor"&&json != "continue"&&json != "convenience"&&json != "convert"&&json != "converter"&&json != "CultureInfo"&&json != "date"&&json != "date_parse_handling"&&json != "DateFormatter"&&json != "DateOnly"&&json != "DateOnlyConverter"&&json != "DateTime"&&json != "DateTimeStyles"&&json != "debugger"&&json != "decimal"&&json != "declare"&&json != "decltype"&&json != "decode_string"&&json != "Decoder"&&json != "DecodingError"&&json != "def"&&json != "default"&&json != "defer"&&json != "deinit"&&json != "del"&&json != "delegate"&&json != "delete"&&json != "dict"&&json != "dictionary"&&json != "didSet"&&json != "do"&&json != "double"&&json != "dynamic"&&json != "dynamic_cast"&&json != "elif"&&json != "else"&&json != "encode_quick_type"&&json != "Encoder"&&json != "enum"&&json != "EnumValues"&&json != "Equatable"&&json != "equalityContract"&&json != "event"&&json != "except"&&json != "exception"&&json != "explicit"&&json != "export"&&json != "exposing"&&json != "extends"&&json != "extension"&&json != "extern"&&json != "fallthrough"&&json != "false"&&json != "False"&&json != "fileprivate"&&json != "final"&&json != "finally"&&json != "fixed"&&json != "float"&&json != "for"&&json != "foreach"&&json != "FormatException"&&json != "friend"&&json != "from"&&json != "from_json"&&json != "func"&&json != "function"&&json != "get"&&json != "global"&&json != "go"&&json != "goto"&&json != "guard"&&json != "Hashable"&&json != "hashCode"&&json != "Hasher"&&json != "hasOwnProperty"&&json != "id"&&json != "if"&&json != "IMP"&&json != "implements"&&json != "implicit"&&json != "import"&&json != "in"&&json != "indirect"&&json != "infix"&&json != "init"&&json != "inline"&&json != "inout"&&json != "instanceof"&&json != "int"&&json != "interface"&&json != "internal"&&json != "IsoDateTimeOffsetConverter"&&json != "iterable"&&json != "is"&&json != "jdec"&&json != "jenc"&&json != "jpipe"&&json != "json"&&json != "json_converter"&&json != "json_serializer"&&json != "json_token"&&json != "json_writer"&&json != "JSONAny"&&json != "JSONCodingKey"&&json != "JSONDecoder"&&json != "JSONEncoder"&&json != "JsonException"&&json != "JsonGenerator"&&json != "JsonNode"&&json != "JSONNull"&&json != "JsonParser"&&json != "JsonReader"&&json != "JsonTokenType"&&json != "lambda"&&json != "lazy"&&json != "left"&&json != "let"&&json != "list"&&json != "Locale"&&json != "lock"&&json != "long"&&json != "map"&&json != "MapEntry"&&json != "metadata_property_handling"&&json != "module"&&json != "mutable"&&json != "mutating"&&json != "namespace"&&json != "native"&&json != "new"&&json != "newtonsoft"&&json != "nil"&&json != "NO"&&json != "noexcept"&&json != "nonatomic"&&json != "none"&&json != "None"&&json != "nonlocal"&&json != "nonmutating"&&json != "NSObject"&&json != "noSuchMethod"&&json != "not"&&json != "not_eq"&&json != "NSError"&&json != "NSString"&&json != "NULL"&&json != "null"&&json != "nullptr"&&json != "number"&&json != "object"&&json != "ObjectMapper"&&json != "of"&&json != "oneway"&&json != "open"&&json != "operator"&&json != "optional"&&json != "or"&&json != "or_eq"&&json != "out"&&json != "override"&&json != "package"&&json != "params"&&json != "pass"&&json != "port"&&json != "postfix"&&json != "precedence"&&json != "prefix"&&json != "print"&&json != "printf"&&json != "printMembers"&&json != "private"&&json != "protected"&&json != "Protocol"&&json != "protocol"&&json != "public"&&json != "quicktype"&&json != "raise"&&json != "range"&&json != "readonly"&&json != "ref"&&json != "RegExp"&&json != "register"&&json != "reinterpret_cast"&&json != "repeat"&&json != "require"&&json != "required"&&json != "requires"&&json != "restrict"&&json != "retain"&&json != "rethrows"&&json != "return"&&json != "right"&&json != "runtimeType"&&json != "s"&&json != "sbyte"&&json != "sealed"&&json != "SEL"&&json != "select"&&json != "Self"&&json != "Serializable"&&json != "self"&&json != "Sendable"&&json != "serialize"&&json != "SerialName"&&json != "KSerializer"&&json != "PrimitiveKind"&&json != "SerialDescriptor"&&json != "SerializerProvider"&&json != "set"&&json != "short"&&json != "signed"&&json != "SimpleModule"&&json != "sizeof"&&json != "stackalloc"&&json != "Standards"&&json != "static"&&json != "static_assert"&&json != "static_cast"&&json != "StdDeserializer"&&json != "StdSerializer"&&json != "strictfp"&&json != "string"&&json != "struct"&&json != "subscript"&&json != "super"&&json != "switch"&&json != "symbol"&&json != "synchronized"&&json != "system"&&json != "template"&&json != "then"&&json != "this"&&json != "thread_local"&&json != "throw"&&json != "throws"&&json != "TimeOnly"&&json != "TimeOnlyConverter"&&json != "TimeZone"&&json != "to_json"&&json != "top_level"&&json != "toString"&&json != "transient"&&json != "True"&&json != "true"&&json != "try"&&json != "Type"&&json != "type"&&json != "typealias"&&json != "typedef"&&json != "typeid"&&json != "typename"&&json != "typeof"&&json != "uint"&&json != "ulong"&&json != "unchecked"&&json != "undefined"&&json != "union"&&json != "UseSerializers"&&json != "unowned"&&json != "unsafe"&&json != "unsigned"&&json != "ushort"&&json != "using"&&json != "Utf8JsonReader"&&json != "Utf8JsonWriter"&&json != "UUID"&&json != "var"&&json != "virtual"&&json != "void"&&json != "volatile"&&json != "wchar_t"&&json != "weak"&&json != "where"&&json != "while"&&json != "willSet"&&json != "with"&&json != "xor"&&json != "xor_eq"&&json != "YES"&&json != "yield"&&json != "dummy")error("enum");return json;
 }
diff --git a/base/schema-pike/test/inputs/schema/keyword-unions.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/keyword-unions.schema/default/TopLevel.pmod
index e661a0a..dcc7d8b 100644
--- a/base/schema-pike/test/inputs/schema/keyword-unions.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/keyword-unions.schema/default/TopLevel.pmod
@@ -185,6 +185,7 @@ class TopLevel {
     UnionJsonParser                 json_parser;                    // json: "JsonParser"
     UnionJsonReader                 json_reader;                    // json: "JsonReader"
     UnionJsonTokenType              json_token_type;                // json: "JsonTokenType"
+    UnionKSerializer                k_serializer;                   // json: "KSerializer"
     UnionLambda                     top_level_lambda;               // json: "lambda"
     UnionLazy                       lazy;                           // json: "lazy"
     UnionLeft                       left;                           // json: "left"
@@ -239,6 +240,7 @@ class TopLevel {
     UnionPostfix                    postfix;                        // json: "postfix"
     UnionPrecedence                 precedence;                     // json: "precedence"
     UnionPrefix                     prefix;                         // json: "prefix"
+    UnionPrimitiveKind              primitive_kind;                 // json: "PrimitiveKind"
     UnionPrint                      print;                          // json: "print"
     UnionPrintf                     printf;                         // json: "printf"
     UnionPrintMembers               print_members;                  // json: "printMembers"
@@ -273,8 +275,11 @@ class TopLevel {
     UnionSelf                       self;                           // json: "Self"
     UnionSelfUnion                  top_level_self;                 // json: "self"
     UnionSendable                   sendable;                       // json: "Sendable"
+    UnionSerialDescriptor           serial_descriptor;              // json: "SerialDescriptor"
+    UnionSerializable               serializable;                   // json: "Serializable"
     UnionSerialize                  serialize;                      // json: "serialize"
     UnionSerializerProvider         serializer_provider;            // json: "SerializerProvider"
+    UnionSerialName                 serial_name;                    // json: "SerialName"
     UnionSet                        set;                            // json: "set"
     UnionShort                      short;                          // json: "short"
     UnionSigned                     signed;                         // json: "signed"
@@ -327,6 +332,7 @@ class TopLevel {
     UnionUnowned                    unowned;                        // json: "unowned"
     UnionUnsafe                     unsafe;                         // json: "unsafe"
     UnionUnsigned                   unsigned;                       // json: "unsigned"
+    UnionUseSerializers             use_serializers;                // json: "UseSerializers"
     UnionUshort                     ushort;                         // json: "ushort"
     UnionUsing                      using;                          // json: "using"
     UnionUtf8JsonReader             utf8_json_reader;               // json: "Utf8JsonReader"
@@ -521,6 +527,7 @@ class TopLevel {
             "JsonParser" : json_parser,
             "JsonReader" : json_reader,
             "JsonTokenType" : json_token_type,
+            "KSerializer" : k_serializer,
             "lambda" : top_level_lambda,
             "lazy" : lazy,
             "left" : left,
@@ -575,6 +582,7 @@ class TopLevel {
             "postfix" : postfix,
             "precedence" : precedence,
             "prefix" : prefix,
+            "PrimitiveKind" : primitive_kind,
             "print" : print,
             "printf" : printf,
             "printMembers" : print_members,
@@ -609,8 +617,11 @@ class TopLevel {
             "Self" : self,
             "self" : top_level_self,
             "Sendable" : sendable,
+            "SerialDescriptor" : serial_descriptor,
+            "Serializable" : serializable,
             "serialize" : serialize,
             "SerializerProvider" : serializer_provider,
+            "SerialName" : serial_name,
             "set" : set,
             "short" : short,
             "signed" : signed,
@@ -663,6 +674,7 @@ class TopLevel {
             "unowned" : unowned,
             "unsafe" : unsafe,
             "unsigned" : unsigned,
+            "UseSerializers" : use_serializers,
             "ushort" : ushort,
             "using" : using,
             "Utf8JsonReader" : utf8_json_reader,
@@ -1034,6 +1046,8 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.json_reader = json["JsonReader"];
     if (arrayp(json["JsonTokenType"])) error("Unexpected array");
     retval.json_token_type = json["JsonTokenType"];
+    if (arrayp(json["KSerializer"])) error("Unexpected array");
+    retval.k_serializer = json["KSerializer"];
     if (arrayp(json["lambda"])) error("Unexpected array");
     retval.top_level_lambda = json["lambda"];
     if (arrayp(json["lazy"])) error("Unexpected array");
@@ -1142,6 +1156,8 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.precedence = json["precedence"];
     if (arrayp(json["prefix"])) error("Unexpected array");
     retval.prefix = json["prefix"];
+    if (arrayp(json["PrimitiveKind"])) error("Unexpected array");
+    retval.primitive_kind = json["PrimitiveKind"];
     if (arrayp(json["print"])) error("Unexpected array");
     retval.print = json["print"];
     if (arrayp(json["printf"])) error("Unexpected array");
@@ -1210,10 +1226,16 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.top_level_self = json["self"];
     if (arrayp(json["Sendable"])) error("Unexpected array");
     retval.sendable = json["Sendable"];
+    if (arrayp(json["SerialDescriptor"])) error("Unexpected array");
+    retval.serial_descriptor = json["SerialDescriptor"];
+    if (arrayp(json["Serializable"])) error("Unexpected array");
+    retval.serializable = json["Serializable"];
     if (arrayp(json["serialize"])) error("Unexpected array");
     retval.serialize = json["serialize"];
     if (arrayp(json["SerializerProvider"])) error("Unexpected array");
     retval.serializer_provider = json["SerializerProvider"];
+    if (arrayp(json["SerialName"])) error("Unexpected array");
+    retval.serial_name = json["SerialName"];
     if (arrayp(json["set"])) error("Unexpected array");
     retval.set = json["set"];
     if (arrayp(json["short"])) error("Unexpected array");
@@ -1318,6 +1340,8 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.unsafe = json["unsafe"];
     if (arrayp(json["unsigned"])) error("Unexpected array");
     retval.unsigned = json["unsigned"];
+    if (arrayp(json["UseSerializers"])) error("Unexpected array");
+    retval.use_serializers = json["UseSerializers"];
     if (arrayp(json["ushort"])) error("Unexpected array");
     retval.ushort = json["ushort"];
     if (arrayp(json["using"])) error("Unexpected array");
@@ -4506,6 +4530,28 @@ JsonWriter JsonWriter_from_JSON(mixed json) {
     return retval;
 }
 
+typedef float|KSerializer UnionKSerializer;
+
+UnionKSerializer UnionKSerializer_from_JSON(mixed json) {
+    return json;
+}
+
+class KSerializer {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+KSerializer KSerializer_from_JSON(mixed json) {
+    KSerializer retval = KSerializer();
+
+    return retval;
+}
+
 typedef float|Lazy UnionLazy;
 
 UnionLazy UnionLazy_from_JSON(mixed json) {
@@ -5584,6 +5630,28 @@ Prefix Prefix_from_JSON(mixed json) {
     return retval;
 }
 
+typedef float|PrimitiveKind UnionPrimitiveKind;
+
+UnionPrimitiveKind UnionPrimitiveKind_from_JSON(mixed json) {
+    return json;
+}
+
+class PrimitiveKind {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+PrimitiveKind PrimitiveKind_from_JSON(mixed json) {
+    PrimitiveKind retval = PrimitiveKind();
+
+    return retval;
+}
+
 typedef float|Print UnionPrint;
 
 UnionPrint UnionPrint_from_JSON(mixed json) {
@@ -6244,6 +6312,72 @@ Sendable Sendable_from_JSON(mixed json) {
     return retval;
 }
 
+typedef float|SerialDescriptor UnionSerialDescriptor;
+
+UnionSerialDescriptor UnionSerialDescriptor_from_JSON(mixed json) {
+    return json;
+}
+
+class SerialDescriptor {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+SerialDescriptor SerialDescriptor_from_JSON(mixed json) {
+    SerialDescriptor retval = SerialDescriptor();
+
+    return retval;
+}
+
+typedef float|SerialName UnionSerialName;
+
+UnionSerialName UnionSerialName_from_JSON(mixed json) {
+    return json;
+}
+
+class SerialName {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+SerialName SerialName_from_JSON(mixed json) {
+    SerialName retval = SerialName();
+
+    return retval;
+}
+
+typedef float|Serializable UnionSerializable;
+
+UnionSerializable UnionSerializable_from_JSON(mixed json) {
+    return json;
+}
+
+class Serializable {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Serializable Serializable_from_JSON(mixed json) {
+    Serializable retval = Serializable();
+
+    return retval;
+}
+
 typedef float|Serialize UnionSerialize;
 
 UnionSerialize UnionSerialize_from_JSON(mixed json) {
@@ -8290,6 +8424,28 @@ Unsigned Unsigned_from_JSON(mixed json) {
     return retval;
 }
 
+typedef float|UseSerializers UnionUseSerializers;
+
+UnionUseSerializers UnionUseSerializers_from_JSON(mixed json) {
+    return json;
+}
+
+class UseSerializers {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+UseSerializers UseSerializers_from_JSON(mixed json) {
+    UseSerializers retval = UseSerializers();
+
+    return retval;
+}
+
 typedef float|Ushort UnionUshort;
 
 UnionUshort UnionUshort_from_JSON(mixed json) {
diff --git a/base/schema-python/test/inputs/schema/keyword-enum.schema/default/quicktype.py b/head/schema-python/test/inputs/schema/keyword-enum.schema/default/quicktype.py
index 6a4955c..00946be 100644
--- a/base/schema-python/test/inputs/schema/keyword-enum.schema/default/quicktype.py
+++ b/head/schema-python/test/inputs/schema/keyword-enum.schema/default/quicktype.py
@@ -289,9 +289,14 @@ class EnumEnum(Enum):
     SEL = "SEL"
     SELECT = "select"
     SELF = "Self"
+    SERIALIZABLE = "Serializable"
     ENUM_SELF = "self"
     SENDABLE = "Sendable"
     SERIALIZE = "serialize"
+    SERIAL_NAME = "SerialName"
+    K_SERIALIZER = "KSerializer"
+    PRIMITIVE_KIND = "PrimitiveKind"
+    SERIAL_DESCRIPTOR = "SerialDescriptor"
     SERIALIZER_PROVIDER = "SerializerProvider"
     SET = "set"
     SHORT = "short"
@@ -342,6 +347,7 @@ class EnumEnum(Enum):
     UNCHECKED = "unchecked"
     UNDEFINED = "undefined"
     UNION = "union"
+    USE_SERIALIZERS = "UseSerializers"
     UNOWNED = "unowned"
     UNSAFE = "unsafe"
     UNSIGNED = "unsigned"
diff --git a/base/schema-python/test/inputs/schema/keyword-unions.schema/default/quicktype.py b/head/schema-python/test/inputs/schema/keyword-unions.schema/default/quicktype.py
index 1541364..0c5eaeb 100644
--- a/base/schema-python/test/inputs/schema/keyword-unions.schema/default/quicktype.py
+++ b/head/schema-python/test/inputs/schema/keyword-unions.schema/default/quicktype.py
@@ -2022,6 +2022,20 @@ class JSONWriter:
         return result
 
 
+@dataclass
+class KSerializer:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'KSerializer':
+        assert isinstance(obj, dict)
+        return KSerializer()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
 @dataclass
 class Lazy:
     pass
@@ -2680,6 +2694,20 @@ class Prefix:
         return result
 
 
+@dataclass
+class PrimitiveKind:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'PrimitiveKind':
+        assert isinstance(obj, dict)
+        return PrimitiveKind()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
 @dataclass
 class PrintMembers:
     pass
@@ -3114,6 +3142,48 @@ class Sendable:
         return result
 
 
+@dataclass
+class SerialDescriptor:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'SerialDescriptor':
+        assert isinstance(obj, dict)
+        return SerialDescriptor()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
+@dataclass
+class SerialName:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'SerialName':
+        assert isinstance(obj, dict)
+        return SerialName()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
+@dataclass
+class Serializable:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Serializable':
+        assert isinstance(obj, dict)
+        return Serializable()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
 @dataclass
 class Serialize:
     pass
@@ -4458,6 +4528,20 @@ class Unsigned:
         return result
 
 
+@dataclass
+class UseSerializers:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'UseSerializers':
+        assert isinstance(obj, dict)
+        return UseSerializers()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
 @dataclass
 class Ushort:
     pass
@@ -4856,6 +4940,7 @@ class TopLevel:
     json_parser: float | JSONParser | None = None
     json_reader: float | JSONReader | None = None
     json_token_type: float | JSONTokenType | None = None
+    k_serializer: float | KSerializer | None = None
     top_level_lambda: float | Lambda | None = None
     lazy: float | Lazy | None = None
     left: float | Left | None = None
@@ -4910,6 +4995,7 @@ class TopLevel:
     postfix: float | Postfix | None = None
     precedence: float | Precedence | None = None
     prefix: float | Prefix | None = None
+    primitive_kind: float | PrimitiveKind | None = None
     top_level_print: float | Print | None = None
     printf: float | Printf | None = None
     print_members: float | PrintMembers | None = None
@@ -4944,8 +5030,11 @@ class TopLevel:
     top_level_self: float | Self | None = None
     purple_self: float | SelfClass | None = None
     sendable: float | Sendable | None = None
+    serial_descriptor: float | SerialDescriptor | None = None
+    serializable: float | Serializable | None = None
     serialize: float | Serialize | None = None
     serializer_provider: float | SerializerProvider | None = None
+    serial_name: float | SerialName | None = None
     set: float | Set | None = None
     short: float | Short | None = None
     signed: float | Signed | None = None
@@ -4998,6 +5087,7 @@ class TopLevel:
     unowned: float | Unowned | None = None
     unsafe: float | Unsafe | None = None
     unsigned: float | Unsigned | None = None
+    use_serializers: float | UseSerializers | None = None
     ushort: float | Ushort | None = None
     using: float | Using | None = None
     utf8_json_reader: float | Utf8JSONReader | None = None
@@ -5193,6 +5283,7 @@ class TopLevel:
         json_parser = from_union([from_float, JSONParser.from_dict, from_none], obj.get("JsonParser"))
         json_reader = from_union([from_float, JSONReader.from_dict, from_none], obj.get("JsonReader"))
         json_token_type = from_union([from_float, JSONTokenType.from_dict, from_none], obj.get("JsonTokenType"))
+        k_serializer = from_union([from_float, KSerializer.from_dict, from_none], obj.get("KSerializer"))
         top_level_lambda = from_union([from_float, Lambda.from_dict, from_none], obj.get("lambda"))
         lazy = from_union([from_float, Lazy.from_dict, from_none], obj.get("lazy"))
         left = from_union([from_float, Left.from_dict, from_none], obj.get("left"))
@@ -5247,6 +5338,7 @@ class TopLevel:
         postfix = from_union([from_float, Postfix.from_dict, from_none], obj.get("postfix"))
         precedence = from_union([from_float, Precedence.from_dict, from_none], obj.get("precedence"))
         prefix = from_union([from_float, Prefix.from_dict, from_none], obj.get("prefix"))
+        primitive_kind = from_union([from_float, PrimitiveKind.from_dict, from_none], obj.get("PrimitiveKind"))
         top_level_print = from_union([from_float, Print.from_dict, from_none], obj.get("print"))
         printf = from_union([from_float, Printf.from_dict, from_none], obj.get("printf"))
         print_members = from_union([from_float, PrintMembers.from_dict, from_none], obj.get("printMembers"))
@@ -5281,8 +5373,11 @@ class TopLevel:
         top_level_self = from_union([from_float, Self.from_dict, from_none], obj.get("Self"))
         purple_self = from_union([from_float, SelfClass.from_dict, from_none], obj.get("self"))
         sendable = from_union([from_float, Sendable.from_dict, from_none], obj.get("Sendable"))
+        serial_descriptor = from_union([from_float, SerialDescriptor.from_dict, from_none], obj.get("SerialDescriptor"))
+        serializable = from_union([from_float, Serializable.from_dict, from_none], obj.get("Serializable"))
         serialize = from_union([from_float, Serialize.from_dict, from_none], obj.get("serialize"))
         serializer_provider = from_union([from_float, SerializerProvider.from_dict, from_none], obj.get("SerializerProvider"))
+        serial_name = from_union([from_float, SerialName.from_dict, from_none], obj.get("SerialName"))
         set = from_union([from_float, Set.from_dict, from_none], obj.get("set"))
         short = from_union([from_float, Short.from_dict, from_none], obj.get("short"))
         signed = from_union([from_float, Signed.from_dict, from_none], obj.get("signed"))
@@ -5335,6 +5430,7 @@ class TopLevel:
         unowned = from_union([from_float, Unowned.from_dict, from_none], obj.get("unowned"))
         unsafe = from_union([from_float, Unsafe.from_dict, from_none], obj.get("unsafe"))
         unsigned = from_union([from_float, Unsigned.from_dict, from_none], obj.get("unsigned"))
+        use_serializers = from_union([from_float, UseSerializers.from_dict, from_none], obj.get("UseSerializers"))
         ushort = from_union([from_float, Ushort.from_dict, from_none], obj.get("ushort"))
         using = from_union([from_float, Using.from_dict, from_none], obj.get("using"))
         utf8_json_reader = from_union([from_float, Utf8JSONReader.from_dict, from_none], obj.get("Utf8JsonReader"))
@@ -5354,7 +5450,7 @@ class TopLevel:
         xor_eq = from_union([from_float, XorEq.from_dict, from_none], obj.get("xor_eq"))
         yes = from_union([from_float, Yes.from_dict, from_none], obj.get("YES"))
         top_level_yield = from_union([from_float, Yield.from_dict, from_none], obj.get("yield"))
-        return TopLevel(empty, purple_bool, complex, imaginery, abstract, alignas, alignof, top_level_and, and_eq, top_level_any, any, array, top_level_as, asm, top_level_assert, associatedtype, associativity, top_level_async, atomic, atomic_cancel, atomic_commit, atomic_noexcept, auto, top_level_await, base, bitand, bitor, top_level_bool, fluffy_bool, boolean, top_level_break, bycopy, byref, byte, calendar, case, catch, chan, char, char16_t, char32_t, checked, purple_class, top_level_class, clone, co_await, co_return, co_yield, codable, coding_key, coding_keys, compl, concept, console, const, const_cast, constexpr, constructor, top_level_continue, convenience, convert, converter, culture_info, date, date_parse_handling, date_formatter, date_only, date_only_converter, date_time, date_time_styles, debugger, decimal, declare, decltype, decode_string, decoder, decoding_error, top_level_def, default, defer, deinit, top_level_del, delegate, delete, top_level_dict, dictionary, did_set, do, double, dummy, dynamic, dynamic_cast, top_level_elif, top_level_else, encode_quick_type, encoder, enum, enum_values, equality_contract, equatable, event, top_level_except, exception, explicit, export, exposing, extends, extension, extern, fallthrough, top_level_false, false, fileprivate, final, top_level_finally, fixed, top_level_float, top_level_for, foreach, format_exception, friend, top_level_from, from_json, func, function, get, top_level_global, go, goto, guard, hashable, hash_code, hasher, has_own_property, id, top_level_if, imp, implements, implicit, top_level_import, top_level_in, indirect, infix, init, inline, inout, instanceof, top_level_int, interface, internal, top_level_is, iso_date_time_offset_converter, iterable, jdec, jenc, jpipe, json, json_converter, json_serializer, json_token, json_writer, json_any, json_coding_key, json_decoder, json_encoder, json_exception, json_generator, json_node, json_null, json_parser, json_reader, json_token_type, top_level_lambda, lazy, left, let, list, locale, lock, long, map, map_entry, metadata_property_handling, module, mutable, mutating, namespace, native, new, newtonsoft, nil, no, noexcept, nonatomic, top_level_none, none, top_level_nonlocal, nonmutating, no_such_method, top_level_not, not_eq, ns_error, ns_object, ns_string, null, top_level_null, nullptr, number, object, object_mapper, of, oneway, open, operator, optional, top_level_or, or_eq, out, override, package, params, top_level_pass, port, postfix, precedence, prefix, top_level_print, printf, print_members, private, protected, protocol, top_level_protocol, public, quicktype, top_level_raise, range, readonly, ref, reg_exp, register, reinterpret_cast, repeat, require, required, requires, restrict, retain, rethrows, top_level_return, right, runtime_type, s, sbyte, sealed, sel, select, top_level_self, purple_self, sendable, serialize, serializer_provider, set, short, signed, simple_module, sizeof, stackalloc, standards, static, static_assert, static_cast, std_deserializer, std_serializer, strictfp, string, struct, subscript, super, switch, symbol, synchronized, system, template, then, this, thread_local, throw, throws, time_only, time_only_converter, time_zone, to_json, top_level, to_string, transient, true, top_level_true, top_level_try, type, top_level_type, typealias, typedef, typeid, typename, typeof, uint, ulong, unchecked, undefined, union, unowned, unsafe, unsigned, ushort, using, utf8_json_reader, utf8_json_writer, uuid, var, virtual, void, volatile, wchar_t, weak, where, top_level_while, will_set, top_level_with, xor, xor_eq, yes, top_level_yield)
+        return TopLevel(empty, purple_bool, complex, imaginery, abstract, alignas, alignof, top_level_and, and_eq, top_level_any, any, array, top_level_as, asm, top_level_assert, associatedtype, associativity, top_level_async, atomic, atomic_cancel, atomic_commit, atomic_noexcept, auto, top_level_await, base, bitand, bitor, top_level_bool, fluffy_bool, boolean, top_level_break, bycopy, byref, byte, calendar, case, catch, chan, char, char16_t, char32_t, checked, purple_class, top_level_class, clone, co_await, co_return, co_yield, codable, coding_key, coding_keys, compl, concept, console, const, const_cast, constexpr, constructor, top_level_continue, convenience, convert, converter, culture_info, date, date_parse_handling, date_formatter, date_only, date_only_converter, date_time, date_time_styles, debugger, decimal, declare, decltype, decode_string, decoder, decoding_error, top_level_def, default, defer, deinit, top_level_del, delegate, delete, top_level_dict, dictionary, did_set, do, double, dummy, dynamic, dynamic_cast, top_level_elif, top_level_else, encode_quick_type, encoder, enum, enum_values, equality_contract, equatable, event, top_level_except, exception, explicit, export, exposing, extends, extension, extern, fallthrough, top_level_false, false, fileprivate, final, top_level_finally, fixed, top_level_float, top_level_for, foreach, format_exception, friend, top_level_from, from_json, func, function, get, top_level_global, go, goto, guard, hashable, hash_code, hasher, has_own_property, id, top_level_if, imp, implements, implicit, top_level_import, top_level_in, indirect, infix, init, inline, inout, instanceof, top_level_int, interface, internal, top_level_is, iso_date_time_offset_converter, iterable, jdec, jenc, jpipe, json, json_converter, json_serializer, json_token, json_writer, json_any, json_coding_key, json_decoder, json_encoder, json_exception, json_generator, json_node, json_null, json_parser, json_reader, json_token_type, k_serializer, top_level_lambda, lazy, left, let, list, locale, lock, long, map, map_entry, metadata_property_handling, module, mutable, mutating, namespace, native, new, newtonsoft, nil, no, noexcept, nonatomic, top_level_none, none, top_level_nonlocal, nonmutating, no_such_method, top_level_not, not_eq, ns_error, ns_object, ns_string, null, top_level_null, nullptr, number, object, object_mapper, of, oneway, open, operator, optional, top_level_or, or_eq, out, override, package, params, top_level_pass, port, postfix, precedence, prefix, primitive_kind, top_level_print, printf, print_members, private, protected, protocol, top_level_protocol, public, quicktype, top_level_raise, range, readonly, ref, reg_exp, register, reinterpret_cast, repeat, require, required, requires, restrict, retain, rethrows, top_level_return, right, runtime_type, s, sbyte, sealed, sel, select, top_level_self, purple_self, sendable, serial_descriptor, serializable, serialize, serializer_provider, serial_name, set, short, signed, simple_module, sizeof, stackalloc, standards, static, static_assert, static_cast, std_deserializer, std_serializer, strictfp, string, struct, subscript, super, switch, symbol, synchronized, system, template, then, this, thread_local, throw, throws, time_only, time_only_converter, time_zone, to_json, top_level, to_string, transient, true, top_level_true, top_level_try, type, top_level_type, typealias, typedef, typeid, typename, typeof, uint, ulong, unchecked, undefined, union, unowned, unsafe, unsigned, use_serializers, ushort, using, utf8_json_reader, utf8_json_writer, uuid, var, virtual, void, volatile, wchar_t, weak, where, top_level_while, will_set, top_level_with, xor, xor_eq, yes, top_level_yield)
 
     def to_dict(self) -> dict:
         result: dict = {}
@@ -5702,6 +5798,8 @@ class TopLevel:
             result["JsonReader"] = from_union([to_float, lambda x: to_class(JSONReader, x), from_none], self.json_reader)
         if self.json_token_type is not None:
             result["JsonTokenType"] = from_union([to_float, lambda x: to_class(JSONTokenType, x), from_none], self.json_token_type)
+        if self.k_serializer is not None:
+            result["KSerializer"] = from_union([to_float, lambda x: to_class(KSerializer, x), from_none], self.k_serializer)
         if self.top_level_lambda is not None:
             result["lambda"] = from_union([to_float, lambda x: to_class(Lambda, x), from_none], self.top_level_lambda)
         if self.lazy is not None:
@@ -5810,6 +5908,8 @@ class TopLevel:
             result["precedence"] = from_union([to_float, lambda x: to_class(Precedence, x), from_none], self.precedence)
         if self.prefix is not None:
             result["prefix"] = from_union([to_float, lambda x: to_class(Prefix, x), from_none], self.prefix)
+        if self.primitive_kind is not None:
+            result["PrimitiveKind"] = from_union([to_float, lambda x: to_class(PrimitiveKind, x), from_none], self.primitive_kind)
         if self.top_level_print is not None:
             result["print"] = from_union([to_float, lambda x: to_class(Print, x), from_none], self.top_level_print)
         if self.printf is not None:
@@ -5878,10 +5978,16 @@ class TopLevel:
             result["self"] = from_union([to_float, lambda x: to_class(SelfClass, x), from_none], self.purple_self)
         if self.sendable is not None:
             result["Sendable"] = from_union([to_float, lambda x: to_class(Sendable, x), from_none], self.sendable)
+        if self.serial_descriptor is not None:
+            result["SerialDescriptor"] = from_union([to_float, lambda x: to_class(SerialDescriptor, x), from_none], self.serial_descriptor)
+        if self.serializable is not None:
+            result["Serializable"] = from_union([to_float, lambda x: to_class(Serializable, x), from_none], self.serializable)
         if self.serialize is not None:
             result["serialize"] = from_union([to_float, lambda x: to_class(Serialize, x), from_none], self.serialize)
         if self.serializer_provider is not None:
             result["SerializerProvider"] = from_union([to_float, lambda x: to_class(SerializerProvider, x), from_none], self.serializer_provider)
+        if self.serial_name is not None:
+            result["SerialName"] = from_union([to_float, lambda x: to_class(SerialName, x), from_none], self.serial_name)
         if self.set is not None:
             result["set"] = from_union([to_float, lambda x: to_class(Set, x), from_none], self.set)
         if self.short is not None:
@@ -5986,6 +6092,8 @@ class TopLevel:
             result["unsafe"] = from_union([to_float, lambda x: to_class(Unsafe, x), from_none], self.unsafe)
         if self.unsigned is not None:
             result["unsigned"] = from_union([to_float, lambda x: to_class(Unsigned, x), from_none], self.unsigned)
+        if self.use_serializers is not None:
+            result["UseSerializers"] = from_union([to_float, lambda x: to_class(UseSerializers, x), from_none], self.use_serializers)
         if self.ushort is not None:
             result["ushort"] = from_union([to_float, lambda x: to_class(Ushort, x), from_none], self.ushort)
         if self.using is not None:
diff --git a/base/schema-ruby/test/inputs/schema/keyword-enum.schema/default/TopLevel.rb b/head/schema-ruby/test/inputs/schema/keyword-enum.schema/default/TopLevel.rb
index e75d623..2f8bc98 100644
--- a/base/schema-ruby/test/inputs/schema/keyword-enum.schema/default/TopLevel.rb
+++ b/head/schema-ruby/test/inputs/schema/keyword-enum.schema/default/TopLevel.rb
@@ -17,7 +17,7 @@ module Types
 
   Hash   = Strict::Hash
   String = Strict::String
-  Enum   = Strict::String.enum("_", "_Bool", "_Complex", "_Imaginery", "abstract", "alignas", "alignof", "and", "and_eq", "any", "Any", "array", "as", "asm", "assert", "associatedtype", "associativity", "async", "atomic", "atomic_cancel", "atomic_commit", "atomic_noexcept", "auto", "await", "base", "bitand", "bitor", "BOOL", "bool", "boolean", "break", "bycopy", "byref", "byte", "Calendar", "case", "catch", "chan", "char", "char16_t", "char32_t", "checked", "class", "Class", "clone", "co_await", "co_return", "co_yield", "Codable", "CodingKey", "CodingKeys", "compl", "concept", "console", "const", "const_cast", "constexpr", "constructor", "continue", "convenience", "convert", "converter", "CultureInfo", "date", "date_parse_handling", "DateFormatter", "DateOnly", "DateOnlyConverter", "DateTime", "DateTimeStyles", "debugger", "decimal", "declare", "decltype", "decode_string", "Decoder", "DecodingError", "def", "default", "defer", "deinit", "del", "delegate", "delete", "dict", "dictionary", "didSet", "do", "double", "dynamic", "dynamic_cast", "elif", "else", "encode_quick_type", "Encoder", "enum", "EnumValues", "Equatable", "equalityContract", "event", "except", "exception", "explicit", "export", "exposing", "extends", "extension", "extern", "fallthrough", "false", "False", "fileprivate", "final", "finally", "fixed", "float", "for", "foreach", "FormatException", "friend", "from", "from_json", "func", "function", "get", "global", "go", "goto", "guard", "Hashable", "hashCode", "Hasher", "hasOwnProperty", "id", "if", "IMP", "implements", "implicit", "import", "in", "indirect", "infix", "init", "inline", "inout", "instanceof", "int", "interface", "internal", "IsoDateTimeOffsetConverter", "iterable", "is", "jdec", "jenc", "jpipe", "json", "json_converter", "json_serializer", "json_token", "json_writer", "JSONAny", "JSONCodingKey", "JSONDecoder", "JSONEncoder", "JsonException", "JsonGenerator", "JsonNode", "JSONNull", "JsonParser", "JsonReader", "JsonTokenType", "lambda", "lazy", "left", "let", "list", "Locale", "lock", "long", "map", "MapEntry", "metadata_property_handling", "module", "mutable", "mutating", "namespace", "native", "new", "newtonsoft", "nil", "NO", "noexcept", "nonatomic", "none", "None", "nonlocal", "nonmutating", "NSObject", "noSuchMethod", "not", "not_eq", "NSError", "NSString", "NULL", "null", "nullptr", "number", "object", "ObjectMapper", "of", "oneway", "open", "operator", "optional", "or", "or_eq", "out", "override", "package", "params", "pass", "port", "postfix", "precedence", "prefix", "print", "printf", "printMembers", "private", "protected", "Protocol", "protocol", "public", "quicktype", "raise", "range", "readonly", "ref", "RegExp", "register", "reinterpret_cast", "repeat", "require", "required", "requires", "restrict", "retain", "rethrows", "return", "right", "runtimeType", "s", "sbyte", "sealed", "SEL", "select", "Self", "self", "Sendable", "serialize", "SerializerProvider", "set", "short", "signed", "SimpleModule", "sizeof", "stackalloc", "Standards", "static", "static_assert", "static_cast", "StdDeserializer", "StdSerializer", "strictfp", "string", "struct", "subscript", "super", "switch", "symbol", "synchronized", "system", "template", "then", "this", "thread_local", "throw", "throws", "TimeOnly", "TimeOnlyConverter", "TimeZone", "to_json", "top_level", "toString", "transient", "True", "true", "try", "Type", "type", "typealias", "typedef", "typeid", "typename", "typeof", "uint", "ulong", "unchecked", "undefined", "union", "unowned", "unsafe", "unsigned", "ushort", "using", "Utf8JsonReader", "Utf8JsonWriter", "UUID", "var", "virtual", "void", "volatile", "wchar_t", "weak", "where", "while", "willSet", "with", "xor", "xor_eq", "YES", "yield", "dummy")
+  Enum   = Strict::String.enum("_", "_Bool", "_Complex", "_Imaginery", "abstract", "alignas", "alignof", "and", "and_eq", "any", "Any", "array", "as", "asm", "assert", "associatedtype", "associativity", "async", "atomic", "atomic_cancel", "atomic_commit", "atomic_noexcept", "auto", "await", "base", "bitand", "bitor", "BOOL", "bool", "boolean", "break", "bycopy", "byref", "byte", "Calendar", "case", "catch", "chan", "char", "char16_t", "char32_t", "checked", "class", "Class", "clone", "co_await", "co_return", "co_yield", "Codable", "CodingKey", "CodingKeys", "compl", "concept", "console", "const", "const_cast", "constexpr", "constructor", "continue", "convenience", "convert", "converter", "CultureInfo", "date", "date_parse_handling", "DateFormatter", "DateOnly", "DateOnlyConverter", "DateTime", "DateTimeStyles", "debugger", "decimal", "declare", "decltype", "decode_string", "Decoder", "DecodingError", "def", "default", "defer", "deinit", "del", "delegate", "delete", "dict", "dictionary", "didSet", "do", "double", "dynamic", "dynamic_cast", "elif", "else", "encode_quick_type", "Encoder", "enum", "EnumValues", "Equatable", "equalityContract", "event", "except", "exception", "explicit", "export", "exposing", "extends", "extension", "extern", "fallthrough", "false", "False", "fileprivate", "final", "finally", "fixed", "float", "for", "foreach", "FormatException", "friend", "from", "from_json", "func", "function", "get", "global", "go", "goto", "guard", "Hashable", "hashCode", "Hasher", "hasOwnProperty", "id", "if", "IMP", "implements", "implicit", "import", "in", "indirect", "infix", "init", "inline", "inout", "instanceof", "int", "interface", "internal", "IsoDateTimeOffsetConverter", "iterable", "is", "jdec", "jenc", "jpipe", "json", "json_converter", "json_serializer", "json_token", "json_writer", "JSONAny", "JSONCodingKey", "JSONDecoder", "JSONEncoder", "JsonException", "JsonGenerator", "JsonNode", "JSONNull", "JsonParser", "JsonReader", "JsonTokenType", "lambda", "lazy", "left", "let", "list", "Locale", "lock", "long", "map", "MapEntry", "metadata_property_handling", "module", "mutable", "mutating", "namespace", "native", "new", "newtonsoft", "nil", "NO", "noexcept", "nonatomic", "none", "None", "nonlocal", "nonmutating", "NSObject", "noSuchMethod", "not", "not_eq", "NSError", "NSString", "NULL", "null", "nullptr", "number", "object", "ObjectMapper", "of", "oneway", "open", "operator", "optional", "or", "or_eq", "out", "override", "package", "params", "pass", "port", "postfix", "precedence", "prefix", "print", "printf", "printMembers", "private", "protected", "Protocol", "protocol", "public", "quicktype", "raise", "range", "readonly", "ref", "RegExp", "register", "reinterpret_cast", "repeat", "require", "required", "requires", "restrict", "retain", "rethrows", "return", "right", "runtimeType", "s", "sbyte", "sealed", "SEL", "select", "Self", "Serializable", "self", "Sendable", "serialize", "SerialName", "KSerializer", "PrimitiveKind", "SerialDescriptor", "SerializerProvider", "set", "short", "signed", "SimpleModule", "sizeof", "stackalloc", "Standards", "static", "static_assert", "static_cast", "StdDeserializer", "StdSerializer", "strictfp", "string", "struct", "subscript", "super", "switch", "symbol", "synchronized", "system", "template", "then", "this", "thread_local", "throw", "throws", "TimeOnly", "TimeOnlyConverter", "TimeZone", "to_json", "top_level", "toString", "transient", "True", "true", "try", "Type", "type", "typealias", "typedef", "typeid", "typename", "typeof", "uint", "ulong", "unchecked", "undefined", "union", "UseSerializers", "unowned", "unsafe", "unsigned", "ushort", "using", "Utf8JsonReader", "Utf8JsonWriter", "UUID", "var", "virtual", "void", "volatile", "wchar_t", "weak", "where", "while", "willSet", "with", "xor", "xor_eq", "YES", "yield", "dummy")
 end
 
 module Enum
@@ -278,9 +278,14 @@ module Enum
   Sel                        = "SEL"
   Select                     = "select"
   Self                       = "Self"
+  Serializable               = "Serializable"
   EnumSelf                   = "self"
   Sendable                   = "Sendable"
   Serialize                  = "serialize"
+  SerialName                 = "SerialName"
+  KSerializer                = "KSerializer"
+  PrimitiveKind              = "PrimitiveKind"
+  SerialDescriptor           = "SerialDescriptor"
   SerializerProvider         = "SerializerProvider"
   Set                        = "set"
   Short                      = "short"
@@ -331,6 +336,7 @@ module Enum
   Unchecked                  = "unchecked"
   Undefined                  = "undefined"
   Union                      = "union"
+  UseSerializers             = "UseSerializers"
   Unowned                    = "unowned"
   Unsafe                     = "unsafe"
   Unsigned                   = "unsigned"
diff --git a/base/schema-ruby/test/inputs/schema/keyword-unions.schema/default/TopLevel.rb b/head/schema-ruby/test/inputs/schema/keyword-unions.schema/default/TopLevel.rb
index 852f2e1..d4b45aa 100644
--- a/base/schema-ruby/test/inputs/schema/keyword-unions.schema/default/TopLevel.rb
+++ b/head/schema-ruby/test/inputs/schema/keyword-unions.schema/default/TopLevel.rb
@@ -8740,6 +8740,63 @@ class UnionJSONWriter < Dry::Struct
   end
 end
 
+class KSerializer < Dry::Struct
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class UnionKSerializer < Dry::Struct
+  attribute :double,       Types::Double.optional
+  attribute :k_serializer, KSerializer.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, k_serializer: nil)
+    end
+    begin
+      value = KSerializer.from_dynamic!(d)
+      if schema.key(:k_serializer).type.right.valid? value
+        return new(k_serializer: value, double: nil)
+      end
+    rescue
+    end
+    raise "Invalid union"
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    if double != nil
+      double
+    elsif k_serializer != nil
+      k_serializer.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Lazy < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -11248,6 +11305,63 @@ class UnionPrefix < Dry::Struct
   end
 end
 
+class PrimitiveKind < Dry::Struct
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class UnionPrimitiveKind < Dry::Struct
+  attribute :double,         Types::Double.optional
+  attribute :primitive_kind, PrimitiveKind.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, primitive_kind: nil)
+    end
+    begin
+      value = PrimitiveKind.from_dynamic!(d)
+      if schema.key(:primitive_kind).type.right.valid? value
+        return new(primitive_kind: value, double: nil)
+      end
+    rescue
+    end
+    raise "Invalid union"
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    if double != nil
+      double
+    elsif primitive_kind != nil
+      primitive_kind.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class PrintMembers < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -12730,6 +12844,177 @@ class UnionSendable < Dry::Struct
   end
 end
 
+class SerialDescriptor < Dry::Struct
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class UnionSerialDescriptor < Dry::Struct
+  attribute :double,            Types::Double.optional
+  attribute :serial_descriptor, SerialDescriptor.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, serial_descriptor: nil)
+    end
+    begin
+      value = SerialDescriptor.from_dynamic!(d)
+      if schema.key(:serial_descriptor).type.right.valid? value
+        return new(serial_descriptor: value, double: nil)
+      end
+    rescue
+    end
+    raise "Invalid union"
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    if double != nil
+      double
+    elsif serial_descriptor != nil
+      serial_descriptor.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class SerialName < Dry::Struct
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class UnionSerialName < Dry::Struct
+  attribute :double,      Types::Double.optional
+  attribute :serial_name, SerialName.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, serial_name: nil)
+    end
+    begin
+      value = SerialName.from_dynamic!(d)
+      if schema.key(:serial_name).type.right.valid? value
+        return new(serial_name: value, double: nil)
+      end
+    rescue
+    end
+    raise "Invalid union"
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    if double != nil
+      double
+    elsif serial_name != nil
+      serial_name.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class Serializable < Dry::Struct
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class UnionSerializable < Dry::Struct
+  attribute :double,       Types::Double.optional
+  attribute :serializable, Serializable.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, serializable: nil)
+    end
+    begin
+      value = Serializable.from_dynamic!(d)
+      if schema.key(:serializable).type.right.valid? value
+        return new(serializable: value, double: nil)
+      end
+    rescue
+    end
+    raise "Invalid union"
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    if double != nil
+      double
+    elsif serializable != nil
+      serializable.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Serialize < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -18031,6 +18316,63 @@ class UnionUnsigned < Dry::Struct
   end
 end
 
+class UseSerializers < Dry::Struct
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class UnionUseSerializers < Dry::Struct
+  attribute :double,          Types::Double.optional
+  attribute :use_serializers, UseSerializers.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, use_serializers: nil)
+    end
+    begin
+      value = UseSerializers.from_dynamic!(d)
+      if schema.key(:use_serializers).type.right.valid? value
+        return new(use_serializers: value, double: nil)
+      end
+    rescue
+    end
+    raise "Invalid union"
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    if double != nil
+      double
+    elsif use_serializers != nil
+      use_serializers.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Ushort < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -19116,6 +19458,7 @@ class TopLevel < Dry::Struct
   attribute :json_parser,                    Types.Instance(UnionJSONParser).optional
   attribute :json_reader,                    Types.Instance(UnionJSONReader).optional
   attribute :json_token_type,                Types.Instance(UnionJSONTokenType).optional
+  attribute :k_serializer,                   Types.Instance(UnionKSerializer).optional
   attribute :top_level_lambda,               Types.Instance(UnionLambda).optional
   attribute :lazy,                           Types.Instance(UnionLazy).optional
   attribute :left,                           Types.Instance(UnionLeft).optional
@@ -19170,6 +19513,7 @@ class TopLevel < Dry::Struct
   attribute :postfix,                        Types.Instance(UnionPostfix).optional
   attribute :precedence,                     Types.Instance(UnionPrecedence).optional
   attribute :prefix,                         Types.Instance(UnionPrefix).optional
+  attribute :primitive_kind,                 Types.Instance(UnionPrimitiveKind).optional
   attribute :top_level_print,                Types.Instance(UnionPrint).optional
   attribute :top_level_printf,               Types.Instance(UnionPrintf).optional
   attribute :print_members,                  Types.Instance(UnionPrintMembers).optional
@@ -19204,8 +19548,11 @@ class TopLevel < Dry::Struct
   attribute :top_level_self,                 Types.Instance(UnionSelf).optional
   attribute :self_1,                         Types.Instance(UnionSelfUnion).optional
   attribute :sendable,                       Types.Instance(UnionSendable).optional
+  attribute :serial_descriptor,              Types.Instance(UnionSerialDescriptor).optional
+  attribute :serializable,                   Types.Instance(UnionSerializable).optional
   attribute :serialize,                      Types.Instance(UnionSerialize).optional
   attribute :serializer_provider,            Types.Instance(UnionSerializerProvider).optional
+  attribute :serial_name,                    Types.Instance(UnionSerialName).optional
   attribute :set,                            Types.Instance(UnionSet).optional
   attribute :short,                          Types.Instance(UnionShort).optional
   attribute :signed,                         Types.Instance(UnionSigned).optional
@@ -19258,6 +19605,7 @@ class TopLevel < Dry::Struct
   attribute :unowned,                        Types.Instance(UnionUnowned).optional
   attribute :unsafe,                         Types.Instance(UnionUnsafe).optional
   attribute :unsigned,                       Types.Instance(UnionUnsigned).optional
+  attribute :use_serializers,                Types.Instance(UnionUseSerializers).optional
   attribute :ushort,                         Types.Instance(UnionUshort).optional
   attribute :using,                          Types.Instance(UnionUsing).optional
   attribute :utf8_json_reader,               Types.Instance(UnionUtf8JSONReader).optional
@@ -19453,6 +19801,7 @@ class TopLevel < Dry::Struct
       json_parser:                    d.key?("JsonParser") ? UnionJSONParser.from_dynamic!(d["JsonParser"]) : nil,
       json_reader:                    d.key?("JsonReader") ? UnionJSONReader.from_dynamic!(d["JsonReader"]) : nil,
       json_token_type:                d.key?("JsonTokenType") ? UnionJSONTokenType.from_dynamic!(d["JsonTokenType"]) : nil,
+      k_serializer:                   d.key?("KSerializer") ? UnionKSerializer.from_dynamic!(d["KSerializer"]) : nil,
       top_level_lambda:               d.key?("lambda") ? UnionLambda.from_dynamic!(d["lambda"]) : nil,
       lazy:                           d.key?("lazy") ? UnionLazy.from_dynamic!(d["lazy"]) : nil,
       left:                           d.key?("left") ? UnionLeft.from_dynamic!(d["left"]) : nil,
@@ -19507,6 +19856,7 @@ class TopLevel < Dry::Struct
       postfix:                        d.key?("postfix") ? UnionPostfix.from_dynamic!(d["postfix"]) : nil,
       precedence:                     d.key?("precedence") ? UnionPrecedence.from_dynamic!(d["precedence"]) : nil,
       prefix:                         d.key?("prefix") ? UnionPrefix.from_dynamic!(d["prefix"]) : nil,
+      primitive_kind:                 d.key?("PrimitiveKind") ? UnionPrimitiveKind.from_dynamic!(d["PrimitiveKind"]) : nil,
       top_level_print:                d.key?("print") ? UnionPrint.from_dynamic!(d["print"]) : nil,
       top_level_printf:               d.key?("printf") ? UnionPrintf.from_dynamic!(d["printf"]) : nil,
       print_members:                  d.key?("printMembers") ? UnionPrintMembers.from_dynamic!(d["printMembers"]) : nil,
@@ -19541,8 +19891,11 @@ class TopLevel < Dry::Struct
       top_level_self:                 d.key?("Self") ? UnionSelf.from_dynamic!(d["Self"]) : nil,
       self_1:                         d.key?("self") ? UnionSelfUnion.from_dynamic!(d["self"]) : nil,
       sendable:                       d.key?("Sendable") ? UnionSendable.from_dynamic!(d["Sendable"]) : nil,
+      serial_descriptor:              d.key?("SerialDescriptor") ? UnionSerialDescriptor.from_dynamic!(d["SerialDescriptor"]) : nil,
+      serializable:                   d.key?("Serializable") ? UnionSerializable.from_dynamic!(d["Serializable"]) : nil,
       serialize:                      d.key?("serialize") ? UnionSerialize.from_dynamic!(d["serialize"]) : nil,
       serializer_provider:            d.key?("SerializerProvider") ? UnionSerializerProvider.from_dynamic!(d["SerializerProvider"]) : nil,
+      serial_name:                    d.key?("SerialName") ? UnionSerialName.from_dynamic!(d["SerialName"]) : nil,
       set:                            d.key?("set") ? UnionSet.from_dynamic!(d["set"]) : nil,
       short:                          d.key?("short") ? UnionShort.from_dynamic!(d["short"]) : nil,
       signed:                         d.key?("signed") ? UnionSigned.from_dynamic!(d["signed"]) : nil,
@@ -19595,6 +19948,7 @@ class TopLevel < Dry::Struct
       unowned:                        d.key?("unowned") ? UnionUnowned.from_dynamic!(d["unowned"]) : nil,
       unsafe:                         d.key?("unsafe") ? UnionUnsafe.from_dynamic!(d["unsafe"]) : nil,
       unsigned:                       d.key?("unsigned") ? UnionUnsigned.from_dynamic!(d["unsigned"]) : nil,
+      use_serializers:                d.key?("UseSerializers") ? UnionUseSerializers.from_dynamic!(d["UseSerializers"]) : nil,
       ushort:                         d.key?("ushort") ? UnionUshort.from_dynamic!(d["ushort"]) : nil,
       using:                          d.key?("using") ? UnionUsing.from_dynamic!(d["using"]) : nil,
       utf8_json_reader:               d.key?("Utf8JsonReader") ? UnionUtf8JSONReader.from_dynamic!(d["Utf8JsonReader"]) : nil,
@@ -19795,6 +20149,7 @@ class TopLevel < Dry::Struct
       "JsonParser"                 => json_parser&.to_dynamic,
       "JsonReader"                 => json_reader&.to_dynamic,
       "JsonTokenType"              => json_token_type&.to_dynamic,
+      "KSerializer"                => k_serializer&.to_dynamic,
       "lambda"                     => top_level_lambda&.to_dynamic,
       "lazy"                       => lazy&.to_dynamic,
       "left"                       => left&.to_dynamic,
@@ -19849,6 +20204,7 @@ class TopLevel < Dry::Struct
       "postfix"                    => postfix&.to_dynamic,
       "precedence"                 => precedence&.to_dynamic,
       "prefix"                     => prefix&.to_dynamic,
+      "PrimitiveKind"              => primitive_kind&.to_dynamic,
       "print"                      => top_level_print&.to_dynamic,
       "printf"                     => top_level_printf&.to_dynamic,
       "printMembers"               => print_members&.to_dynamic,
@@ -19883,8 +20239,11 @@ class TopLevel < Dry::Struct
       "Self"                       => top_level_self&.to_dynamic,
       "self"                       => self_1&.to_dynamic,
       "Sendable"                   => sendable&.to_dynamic,
+      "SerialDescriptor"           => serial_descriptor&.to_dynamic,
+      "Serializable"               => serializable&.to_dynamic,
       "serialize"                  => serialize&.to_dynamic,
       "SerializerProvider"         => serializer_provider&.to_dynamic,
+      "SerialName"                 => serial_name&.to_dynamic,
       "set"                        => set&.to_dynamic,
       "short"                      => short&.to_dynamic,
       "signed"                     => signed&.to_dynamic,
@@ -19937,6 +20296,7 @@ class TopLevel < Dry::Struct
       "unowned"                    => unowned&.to_dynamic,
       "unsafe"                     => unsafe&.to_dynamic,
       "unsigned"                   => unsigned&.to_dynamic,
+      "UseSerializers"             => use_serializers&.to_dynamic,
       "ushort"                     => ushort&.to_dynamic,
       "using"                      => using&.to_dynamic,
       "Utf8JsonReader"             => utf8_json_reader&.to_dynamic,
diff --git a/base/schema-ruby-syntax/test/inputs/schema/keyword-unions.schema/default/TopLevel.rb b/head/schema-ruby-syntax/test/inputs/schema/keyword-unions.schema/default/TopLevel.rb
index 852f2e1..d4b45aa 100644
--- a/base/schema-ruby-syntax/test/inputs/schema/keyword-unions.schema/default/TopLevel.rb
+++ b/head/schema-ruby-syntax/test/inputs/schema/keyword-unions.schema/default/TopLevel.rb
@@ -8740,6 +8740,63 @@ class UnionJSONWriter < Dry::Struct
   end
 end
 
+class KSerializer < Dry::Struct
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class UnionKSerializer < Dry::Struct
+  attribute :double,       Types::Double.optional
+  attribute :k_serializer, KSerializer.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, k_serializer: nil)
+    end
+    begin
+      value = KSerializer.from_dynamic!(d)
+      if schema.key(:k_serializer).type.right.valid? value
+        return new(k_serializer: value, double: nil)
+      end
+    rescue
+    end
+    raise "Invalid union"
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    if double != nil
+      double
+    elsif k_serializer != nil
+      k_serializer.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Lazy < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -11248,6 +11305,63 @@ class UnionPrefix < Dry::Struct
   end
 end
 
+class PrimitiveKind < Dry::Struct
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class UnionPrimitiveKind < Dry::Struct
+  attribute :double,         Types::Double.optional
+  attribute :primitive_kind, PrimitiveKind.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, primitive_kind: nil)
+    end
+    begin
+      value = PrimitiveKind.from_dynamic!(d)
+      if schema.key(:primitive_kind).type.right.valid? value
+        return new(primitive_kind: value, double: nil)
+      end
+    rescue
+    end
+    raise "Invalid union"
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    if double != nil
+      double
+    elsif primitive_kind != nil
+      primitive_kind.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class PrintMembers < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -12730,6 +12844,177 @@ class UnionSendable < Dry::Struct
   end
 end
 
+class SerialDescriptor < Dry::Struct
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class UnionSerialDescriptor < Dry::Struct
+  attribute :double,            Types::Double.optional
+  attribute :serial_descriptor, SerialDescriptor.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, serial_descriptor: nil)
+    end
+    begin
+      value = SerialDescriptor.from_dynamic!(d)
+      if schema.key(:serial_descriptor).type.right.valid? value
+        return new(serial_descriptor: value, double: nil)
+      end
+    rescue
+    end
+    raise "Invalid union"
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    if double != nil
+      double
+    elsif serial_descriptor != nil
+      serial_descriptor.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class SerialName < Dry::Struct
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class UnionSerialName < Dry::Struct
+  attribute :double,      Types::Double.optional
+  attribute :serial_name, SerialName.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, serial_name: nil)
+    end
+    begin
+      value = SerialName.from_dynamic!(d)
+      if schema.key(:serial_name).type.right.valid? value
+        return new(serial_name: value, double: nil)
+      end
+    rescue
+    end
+    raise "Invalid union"
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    if double != nil
+      double
+    elsif serial_name != nil
+      serial_name.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class Serializable < Dry::Struct
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class UnionSerializable < Dry::Struct
+  attribute :double,       Types::Double.optional
+  attribute :serializable, Serializable.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, serializable: nil)
+    end
+    begin
+      value = Serializable.from_dynamic!(d)
+      if schema.key(:serializable).type.right.valid? value
+        return new(serializable: value, double: nil)
+      end
+    rescue
+    end
+    raise "Invalid union"
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    if double != nil
+      double
+    elsif serializable != nil
+      serializable.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Serialize < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -18031,6 +18316,63 @@ class UnionUnsigned < Dry::Struct
   end
 end
 
+class UseSerializers < Dry::Struct
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class UnionUseSerializers < Dry::Struct
+  attribute :double,          Types::Double.optional
+  attribute :use_serializers, UseSerializers.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, use_serializers: nil)
+    end
+    begin
+      value = UseSerializers.from_dynamic!(d)
+      if schema.key(:use_serializers).type.right.valid? value
+        return new(use_serializers: value, double: nil)
+      end
+    rescue
+    end
+    raise "Invalid union"
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    if double != nil
+      double
+    elsif use_serializers != nil
+      use_serializers.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Ushort < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -19116,6 +19458,7 @@ class TopLevel < Dry::Struct
   attribute :json_parser,                    Types.Instance(UnionJSONParser).optional
   attribute :json_reader,                    Types.Instance(UnionJSONReader).optional
   attribute :json_token_type,                Types.Instance(UnionJSONTokenType).optional
+  attribute :k_serializer,                   Types.Instance(UnionKSerializer).optional
   attribute :top_level_lambda,               Types.Instance(UnionLambda).optional
   attribute :lazy,                           Types.Instance(UnionLazy).optional
   attribute :left,                           Types.Instance(UnionLeft).optional
@@ -19170,6 +19513,7 @@ class TopLevel < Dry::Struct
   attribute :postfix,                        Types.Instance(UnionPostfix).optional
   attribute :precedence,                     Types.Instance(UnionPrecedence).optional
   attribute :prefix,                         Types.Instance(UnionPrefix).optional
+  attribute :primitive_kind,                 Types.Instance(UnionPrimitiveKind).optional
   attribute :top_level_print,                Types.Instance(UnionPrint).optional
   attribute :top_level_printf,               Types.Instance(UnionPrintf).optional
   attribute :print_members,                  Types.Instance(UnionPrintMembers).optional
@@ -19204,8 +19548,11 @@ class TopLevel < Dry::Struct
   attribute :top_level_self,                 Types.Instance(UnionSelf).optional
   attribute :self_1,                         Types.Instance(UnionSelfUnion).optional
   attribute :sendable,                       Types.Instance(UnionSendable).optional
+  attribute :serial_descriptor,              Types.Instance(UnionSerialDescriptor).optional
+  attribute :serializable,                   Types.Instance(UnionSerializable).optional
   attribute :serialize,                      Types.Instance(UnionSerialize).optional
   attribute :serializer_provider,            Types.Instance(UnionSerializerProvider).optional
+  attribute :serial_name,                    Types.Instance(UnionSerialName).optional
   attribute :set,                            Types.Instance(UnionSet).optional
   attribute :short,                          Types.Instance(UnionShort).optional
   attribute :signed,                         Types.Instance(UnionSigned).optional
@@ -19258,6 +19605,7 @@ class TopLevel < Dry::Struct
   attribute :unowned,                        Types.Instance(UnionUnowned).optional
   attribute :unsafe,                         Types.Instance(UnionUnsafe).optional
   attribute :unsigned,                       Types.Instance(UnionUnsigned).optional
+  attribute :use_serializers,                Types.Instance(UnionUseSerializers).optional
   attribute :ushort,                         Types.Instance(UnionUshort).optional
   attribute :using,                          Types.Instance(UnionUsing).optional
   attribute :utf8_json_reader,               Types.Instance(UnionUtf8JSONReader).optional
@@ -19453,6 +19801,7 @@ class TopLevel < Dry::Struct
       json_parser:                    d.key?("JsonParser") ? UnionJSONParser.from_dynamic!(d["JsonParser"]) : nil,
       json_reader:                    d.key?("JsonReader") ? UnionJSONReader.from_dynamic!(d["JsonReader"]) : nil,
       json_token_type:                d.key?("JsonTokenType") ? UnionJSONTokenType.from_dynamic!(d["JsonTokenType"]) : nil,
+      k_serializer:                   d.key?("KSerializer") ? UnionKSerializer.from_dynamic!(d["KSerializer"]) : nil,
       top_level_lambda:               d.key?("lambda") ? UnionLambda.from_dynamic!(d["lambda"]) : nil,
       lazy:                           d.key?("lazy") ? UnionLazy.from_dynamic!(d["lazy"]) : nil,
       left:                           d.key?("left") ? UnionLeft.from_dynamic!(d["left"]) : nil,
@@ -19507,6 +19856,7 @@ class TopLevel < Dry::Struct
       postfix:                        d.key?("postfix") ? UnionPostfix.from_dynamic!(d["postfix"]) : nil,
       precedence:                     d.key?("precedence") ? UnionPrecedence.from_dynamic!(d["precedence"]) : nil,
       prefix:                         d.key?("prefix") ? UnionPrefix.from_dynamic!(d["prefix"]) : nil,
+      primitive_kind:                 d.key?("PrimitiveKind") ? UnionPrimitiveKind.from_dynamic!(d["PrimitiveKind"]) : nil,
       top_level_print:                d.key?("print") ? UnionPrint.from_dynamic!(d["print"]) : nil,
       top_level_printf:               d.key?("printf") ? UnionPrintf.from_dynamic!(d["printf"]) : nil,
       print_members:                  d.key?("printMembers") ? UnionPrintMembers.from_dynamic!(d["printMembers"]) : nil,
@@ -19541,8 +19891,11 @@ class TopLevel < Dry::Struct
       top_level_self:                 d.key?("Self") ? UnionSelf.from_dynamic!(d["Self"]) : nil,
       self_1:                         d.key?("self") ? UnionSelfUnion.from_dynamic!(d["self"]) : nil,
       sendable:                       d.key?("Sendable") ? UnionSendable.from_dynamic!(d["Sendable"]) : nil,
+      serial_descriptor:              d.key?("SerialDescriptor") ? UnionSerialDescriptor.from_dynamic!(d["SerialDescriptor"]) : nil,
+      serializable:                   d.key?("Serializable") ? UnionSerializable.from_dynamic!(d["Serializable"]) : nil,
       serialize:                      d.key?("serialize") ? UnionSerialize.from_dynamic!(d["serialize"]) : nil,
       serializer_provider:            d.key?("SerializerProvider") ? UnionSerializerProvider.from_dynamic!(d["SerializerProvider"]) : nil,
+      serial_name:                    d.key?("SerialName") ? UnionSerialName.from_dynamic!(d["SerialName"]) : nil,
       set:                            d.key?("set") ? UnionSet.from_dynamic!(d["set"]) : nil,
       short:                          d.key?("short") ? UnionShort.from_dynamic!(d["short"]) : nil,
       signed:                         d.key?("signed") ? UnionSigned.from_dynamic!(d["signed"]) : nil,
@@ -19595,6 +19948,7 @@ class TopLevel < Dry::Struct
       unowned:                        d.key?("unowned") ? UnionUnowned.from_dynamic!(d["unowned"]) : nil,
       unsafe:                         d.key?("unsafe") ? UnionUnsafe.from_dynamic!(d["unsafe"]) : nil,
       unsigned:                       d.key?("unsigned") ? UnionUnsigned.from_dynamic!(d["unsigned"]) : nil,
+      use_serializers:                d.key?("UseSerializers") ? UnionUseSerializers.from_dynamic!(d["UseSerializers"]) : nil,
       ushort:                         d.key?("ushort") ? UnionUshort.from_dynamic!(d["ushort"]) : nil,
       using:                          d.key?("using") ? UnionUsing.from_dynamic!(d["using"]) : nil,
       utf8_json_reader:               d.key?("Utf8JsonReader") ? UnionUtf8JSONReader.from_dynamic!(d["Utf8JsonReader"]) : nil,
@@ -19795,6 +20149,7 @@ class TopLevel < Dry::Struct
       "JsonParser"                 => json_parser&.to_dynamic,
       "JsonReader"                 => json_reader&.to_dynamic,
       "JsonTokenType"              => json_token_type&.to_dynamic,
+      "KSerializer"                => k_serializer&.to_dynamic,
       "lambda"                     => top_level_lambda&.to_dynamic,
       "lazy"                       => lazy&.to_dynamic,
       "left"                       => left&.to_dynamic,
@@ -19849,6 +20204,7 @@ class TopLevel < Dry::Struct
       "postfix"                    => postfix&.to_dynamic,
       "precedence"                 => precedence&.to_dynamic,
       "prefix"                     => prefix&.to_dynamic,
+      "PrimitiveKind"              => primitive_kind&.to_dynamic,
       "print"                      => top_level_print&.to_dynamic,
       "printf"                     => top_level_printf&.to_dynamic,
       "printMembers"               => print_members&.to_dynamic,
@@ -19883,8 +20239,11 @@ class TopLevel < Dry::Struct
       "Self"                       => top_level_self&.to_dynamic,
       "self"                       => self_1&.to_dynamic,
       "Sendable"                   => sendable&.to_dynamic,
+      "SerialDescriptor"           => serial_descriptor&.to_dynamic,
+      "Serializable"               => serializable&.to_dynamic,
       "serialize"                  => serialize&.to_dynamic,
       "SerializerProvider"         => serializer_provider&.to_dynamic,
+      "SerialName"                 => serial_name&.to_dynamic,
       "set"                        => set&.to_dynamic,
       "short"                      => short&.to_dynamic,
       "signed"                     => signed&.to_dynamic,
@@ -19937,6 +20296,7 @@ class TopLevel < Dry::Struct
       "unowned"                    => unowned&.to_dynamic,
       "unsafe"                     => unsafe&.to_dynamic,
       "unsigned"                   => unsigned&.to_dynamic,
+      "UseSerializers"             => use_serializers&.to_dynamic,
       "ushort"                     => ushort&.to_dynamic,
       "using"                      => using&.to_dynamic,
       "Utf8JsonReader"             => utf8_json_reader&.to_dynamic,
diff --git a/base/schema-rust/test/inputs/schema/keyword-enum.schema/default/module_under_test.rs b/head/schema-rust/test/inputs/schema/keyword-enum.schema/default/module_under_test.rs
index eaf8970..df50a60 100644
--- a/base/schema-rust/test/inputs/schema/keyword-enum.schema/default/module_under_test.rs
+++ b/head/schema-rust/test/inputs/schema/keyword-enum.schema/default/module_under_test.rs
@@ -622,6 +622,9 @@ pub enum Enum {
     #[serde(rename = "Self")]
     EnumSelf,
 
+    #[serde(rename = "Serializable")]
+    Serializable,
+
     #[serde(rename = "self")]
     PurpleSelf,
 
@@ -631,6 +634,18 @@ pub enum Enum {
     #[serde(rename = "serialize")]
     EnumSerialize,
 
+    #[serde(rename = "SerialName")]
+    SerialName,
+
+    #[serde(rename = "KSerializer")]
+    KSerializer,
+
+    #[serde(rename = "PrimitiveKind")]
+    PrimitiveKind,
+
+    #[serde(rename = "SerialDescriptor")]
+    SerialDescriptor,
+
     #[serde(rename = "SerializerProvider")]
     SerializerProvider,
 
@@ -750,6 +765,9 @@ pub enum Enum {
 
     Union,
 
+    #[serde(rename = "UseSerializers")]
+    UseSerializers,
+
     Unowned,
 
     Unsafe,
diff --git a/base/schema-rust/test/inputs/schema/keyword-unions.schema/default/module_under_test.rs b/head/schema-rust/test/inputs/schema/keyword-unions.schema/default/module_under_test.rs
index 9bac042..989dbbb 100644
--- a/base/schema-rust/test/inputs/schema/keyword-unions.schema/default/module_under_test.rs
+++ b/head/schema-rust/test/inputs/schema/keyword-unions.schema/default/module_under_test.rs
@@ -423,6 +423,9 @@ pub struct TopLevel {
     #[serde(rename = "JsonTokenType")]
     pub json_token_type: Option<UnionJsonTokenType>,
 
+    #[serde(rename = "KSerializer")]
+    pub k_serializer: Option<UnionKSerializer>,
+
     pub lambda: Option<UnionLambda>,
 
     pub lazy: Option<UnionLazy>,
@@ -545,6 +548,9 @@ pub struct TopLevel {
 
     pub prefix: Option<UnionPrefix>,
 
+    #[serde(rename = "PrimitiveKind")]
+    pub primitive_kind: Option<UnionPrimitiveKind>,
+
     pub print: Option<UnionPrint>,
 
     pub printf: Option<UnionPrintf>,
@@ -624,11 +630,20 @@ pub struct TopLevel {
     #[serde(rename = "Sendable")]
     pub sendable: Option<UnionSendable>,
 
+    #[serde(rename = "SerialDescriptor")]
+    pub serial_descriptor: Option<UnionSerialDescriptor>,
+
+    #[serde(rename = "Serializable")]
+    pub serializable: Option<UnionSerializable>,
+
     pub serialize: Option<UnionSerialize>,
 
     #[serde(rename = "SerializerProvider")]
     pub serializer_provider: Option<UnionSerializerProvider>,
 
+    #[serde(rename = "SerialName")]
+    pub serial_name: Option<UnionSerialName>,
+
     pub set: Option<UnionSet>,
 
     pub short: Option<UnionShort>,
@@ -752,6 +767,9 @@ pub struct TopLevel {
 
     pub unsigned: Option<UnionUnsigned>,
 
+    #[serde(rename = "UseSerializers")]
+    pub use_serializers: Option<UnionUseSerializers>,
+
     pub ushort: Option<UnionUshort>,
 
     pub using: Option<UnionUsing>,
@@ -2576,6 +2594,18 @@ pub enum UnionJsonWriter {
 pub struct JsonWriter {
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(untagged)]
+pub enum UnionKSerializer {
+    Double(f64),
+
+    KSerializer(KSerializer),
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct KSerializer {
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 #[serde(untagged)]
 pub enum UnionLambda {
@@ -3176,6 +3206,18 @@ pub enum UnionPrefix {
 pub struct Prefix {
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(untagged)]
+pub enum UnionPrimitiveKind {
+    Double(f64),
+
+    PrimitiveKind(PrimitiveKind),
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct PrimitiveKind {
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 #[serde(untagged)]
 pub enum UnionPrint {
@@ -3584,6 +3626,42 @@ pub enum UnionSendable {
 pub struct Sendable {
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(untagged)]
+pub enum UnionSerialDescriptor {
+    Double(f64),
+
+    SerialDescriptor(SerialDescriptor),
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct SerialDescriptor {
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(untagged)]
+pub enum UnionSerialName {
+    Double(f64),
+
+    SerialName(SerialName),
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct SerialName {
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(untagged)]
+pub enum UnionSerializable {
+    Double(f64),
+
+    Serializable(Serializable),
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct Serializable {
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 #[serde(untagged)]
 pub enum UnionSerialize {
@@ -4604,6 +4682,18 @@ pub enum UnionUnsigned {
 pub struct Unsigned {
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(untagged)]
+pub enum UnionUseSerializers {
+    Double(f64),
+
+    UseSerializers(UseSerializers),
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct UseSerializers {
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 #[serde(untagged)]
 pub enum UnionUshort {
diff --git a/base/schema-scala3/test/inputs/schema/keyword-enum.schema/default/TopLevel.scala b/head/schema-scala3/test/inputs/schema/keyword-enum.schema/default/TopLevel.scala
index 872cc6a..6760fcb 100644
--- a/base/schema-scala3/test/inputs/schema/keyword-enum.schema/default/TopLevel.scala
+++ b/head/schema-scala3/test/inputs/schema/keyword-enum.schema/default/TopLevel.scala
@@ -269,9 +269,14 @@ enum EnumEnum :
     case Sel
     case Select
     case Self
+    case Serializable
     case EnumSelf
     case Sendable
     case Serialize
+    case SerialName
+    case KSerializer
+    case PrimitiveKind
+    case SerialDescriptor
     case SerializerProvider
     case Set
     case EnumShort
@@ -322,6 +327,7 @@ enum EnumEnum :
     case Unchecked
     case Undefined
     case Union
+    case UseSerializers
     case Unowned
     case Unsafe
     case Unsigned
@@ -604,9 +610,14 @@ given Decoder[EnumEnum] = Decoder.decodeString.emap {
     case "SEL" => scala.Right(EnumEnum.Sel)
     case "select" => scala.Right(EnumEnum.Select)
     case "Self" => scala.Right(EnumEnum.Self)
+    case "Serializable" => scala.Right(EnumEnum.Serializable)
     case "self" => scala.Right(EnumEnum.EnumSelf)
     case "Sendable" => scala.Right(EnumEnum.Sendable)
     case "serialize" => scala.Right(EnumEnum.Serialize)
+    case "SerialName" => scala.Right(EnumEnum.SerialName)
+    case "KSerializer" => scala.Right(EnumEnum.KSerializer)
+    case "PrimitiveKind" => scala.Right(EnumEnum.PrimitiveKind)
+    case "SerialDescriptor" => scala.Right(EnumEnum.SerialDescriptor)
     case "SerializerProvider" => scala.Right(EnumEnum.SerializerProvider)
     case "set" => scala.Right(EnumEnum.Set)
     case "short" => scala.Right(EnumEnum.EnumShort)
@@ -657,6 +668,7 @@ given Decoder[EnumEnum] = Decoder.decodeString.emap {
     case "unchecked" => scala.Right(EnumEnum.Unchecked)
     case "undefined" => scala.Right(EnumEnum.Undefined)
     case "union" => scala.Right(EnumEnum.Union)
+    case "UseSerializers" => scala.Right(EnumEnum.UseSerializers)
     case "unowned" => scala.Right(EnumEnum.Unowned)
     case "unsafe" => scala.Right(EnumEnum.Unsafe)
     case "unsigned" => scala.Right(EnumEnum.Unsigned)
@@ -940,9 +952,14 @@ given Encoder[EnumEnum] = Encoder.encodeString.contramap {
     case EnumEnum.Sel => "SEL"
     case EnumEnum.Select => "select"
     case EnumEnum.Self => "Self"
+    case EnumEnum.Serializable => "Serializable"
     case EnumEnum.EnumSelf => "self"
     case EnumEnum.Sendable => "Sendable"
     case EnumEnum.Serialize => "serialize"
+    case EnumEnum.SerialName => "SerialName"
+    case EnumEnum.KSerializer => "KSerializer"
+    case EnumEnum.PrimitiveKind => "PrimitiveKind"
+    case EnumEnum.SerialDescriptor => "SerialDescriptor"
     case EnumEnum.SerializerProvider => "SerializerProvider"
     case EnumEnum.Set => "set"
     case EnumEnum.EnumShort => "short"
@@ -993,6 +1010,7 @@ given Encoder[EnumEnum] = Encoder.encodeString.contramap {
     case EnumEnum.Unchecked => "unchecked"
     case EnumEnum.Undefined => "undefined"
     case EnumEnum.Union => "union"
+    case EnumEnum.UseSerializers => "UseSerializers"
     case EnumEnum.Unowned => "unowned"
     case EnumEnum.Unsafe => "unsafe"
     case EnumEnum.Unsigned => "unsigned"
diff --git a/base/schema-scala3-upickle/test/inputs/schema/keyword-enum.schema/default/TopLevel.scala b/head/schema-scala3-upickle/test/inputs/schema/keyword-enum.schema/default/TopLevel.scala
index af7e54e..88b58d2 100644
--- a/base/schema-scala3-upickle/test/inputs/schema/keyword-enum.schema/default/TopLevel.scala
+++ b/head/schema-scala3-upickle/test/inputs/schema/keyword-enum.schema/default/TopLevel.scala
@@ -340,9 +340,14 @@ enum EnumEnum :
     case Sel
     case Select
     case Self
+    case Serializable
     case EnumSelf
     case Sendable
     case Serialize
+    case SerialName
+    case KSerializer
+    case PrimitiveKind
+    case SerialDescriptor
     case SerializerProvider
     case Set
     case EnumShort
@@ -393,6 +398,7 @@ enum EnumEnum :
     case Unchecked
     case Undefined
     case Union
+    case UseSerializers
     case Unowned
     case Unsafe
     case Unsigned
@@ -676,9 +682,14 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case EnumEnum.Sel => "SEL"
         case EnumEnum.Select => "select"
         case EnumEnum.Self => "Self"
+        case EnumEnum.Serializable => "Serializable"
         case EnumEnum.EnumSelf => "self"
         case EnumEnum.Sendable => "Sendable"
         case EnumEnum.Serialize => "serialize"
+        case EnumEnum.SerialName => "SerialName"
+        case EnumEnum.KSerializer => "KSerializer"
+        case EnumEnum.PrimitiveKind => "PrimitiveKind"
+        case EnumEnum.SerialDescriptor => "SerialDescriptor"
         case EnumEnum.SerializerProvider => "SerializerProvider"
         case EnumEnum.Set => "set"
         case EnumEnum.EnumShort => "short"
@@ -729,6 +740,7 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case EnumEnum.Unchecked => "unchecked"
         case EnumEnum.Undefined => "undefined"
         case EnumEnum.Union => "union"
+        case EnumEnum.UseSerializers => "UseSerializers"
         case EnumEnum.Unowned => "unowned"
         case EnumEnum.Unsafe => "unsafe"
         case EnumEnum.Unsigned => "unsigned"
@@ -1011,9 +1023,14 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case "SEL" => EnumEnum.Sel
         case "select" => EnumEnum.Select
         case "Self" => EnumEnum.Self
+        case "Serializable" => EnumEnum.Serializable
         case "self" => EnumEnum.EnumSelf
         case "Sendable" => EnumEnum.Sendable
         case "serialize" => EnumEnum.Serialize
+        case "SerialName" => EnumEnum.SerialName
+        case "KSerializer" => EnumEnum.KSerializer
+        case "PrimitiveKind" => EnumEnum.PrimitiveKind
+        case "SerialDescriptor" => EnumEnum.SerialDescriptor
         case "SerializerProvider" => EnumEnum.SerializerProvider
         case "set" => EnumEnum.Set
         case "short" => EnumEnum.EnumShort
@@ -1064,6 +1081,7 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case "unchecked" => EnumEnum.Unchecked
         case "undefined" => EnumEnum.Undefined
         case "union" => EnumEnum.Union
+        case "UseSerializers" => EnumEnum.UseSerializers
         case "unowned" => EnumEnum.Unowned
         case "unsafe" => EnumEnum.Unsafe
         case "unsigned" => EnumEnum.Unsigned
diff --git a/base/schema-schema/test/inputs/schema/keyword-enum.schema/default/TopLevel.schema b/head/schema-schema/test/inputs/schema/keyword-enum.schema/default/TopLevel.schema
index 08267f1..7067f2d 100644
--- a/base/schema-schema/test/inputs/schema/keyword-enum.schema/default/TopLevel.schema
+++ b/head/schema-schema/test/inputs/schema/keyword-enum.schema/default/TopLevel.schema
@@ -273,9 +273,14 @@
                 "SEL",
                 "select",
                 "Self",
+                "Serializable",
                 "self",
                 "Sendable",
                 "serialize",
+                "SerialName",
+                "KSerializer",
+                "PrimitiveKind",
+                "SerialDescriptor",
                 "SerializerProvider",
                 "set",
                 "short",
@@ -326,6 +331,7 @@
                 "unchecked",
                 "undefined",
                 "union",
+                "UseSerializers",
                 "unowned",
                 "unsafe",
                 "unsigned",
diff --git a/base/schema-schema/test/inputs/schema/keyword-unions.schema/default/TopLevel.schema b/head/schema-schema/test/inputs/schema/keyword-unions.schema/default/TopLevel.schema
index d8dde61..8a5ee5e 100644
--- a/base/schema-schema/test/inputs/schema/keyword-unions.schema/default/TopLevel.schema
+++ b/head/schema-schema/test/inputs/schema/keyword-unions.schema/default/TopLevel.schema
@@ -522,6 +522,9 @@
                 "JsonTokenType": {
                     "$ref": "#/definitions/UnionJSONTokenType"
                 },
+                "KSerializer": {
+                    "$ref": "#/definitions/UnionKSerializer"
+                },
                 "lambda": {
                     "$ref": "#/definitions/UnionLambda"
                 },
@@ -684,6 +687,9 @@
                 "prefix": {
                     "$ref": "#/definitions/UnionPrefix"
                 },
+                "PrimitiveKind": {
+                    "$ref": "#/definitions/UnionPrimitiveKind"
+                },
                 "print": {
                     "$ref": "#/definitions/UnionPrint"
                 },
@@ -786,12 +792,21 @@
                 "Sendable": {
                     "$ref": "#/definitions/UnionSendable"
                 },
+                "SerialDescriptor": {
+                    "$ref": "#/definitions/UnionSerialDescriptor"
+                },
+                "Serializable": {
+                    "$ref": "#/definitions/UnionSerializable"
+                },
                 "serialize": {
                     "$ref": "#/definitions/UnionSerialize"
                 },
                 "SerializerProvider": {
                     "$ref": "#/definitions/UnionSerializerProvider"
                 },
+                "SerialName": {
+                    "$ref": "#/definitions/UnionSerialName"
+                },
                 "set": {
                     "$ref": "#/definitions/UnionSet"
                 },
@@ -948,6 +963,9 @@
                 "unsigned": {
                     "$ref": "#/definitions/UnionUnsigned"
                 },
+                "UseSerializers": {
+                    "$ref": "#/definitions/UnionUseSerializers"
+                },
                 "ushort": {
                     "$ref": "#/definitions/UnionUshort"
                 },
@@ -1184,6 +1202,11 @@
             "additionalProperties": false,
             "title": "JSONTokenType"
         },
+        "KSerializer": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "KSerializer"
+        },
         "Locale": {
             "type": "object",
             "additionalProperties": false,
@@ -1229,6 +1252,11 @@
             "additionalProperties": false,
             "title": "ObjectMapper"
         },
+        "PrimitiveKind": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "PrimitiveKind"
+        },
         "Protocol": {
             "type": "object",
             "additionalProperties": false,
@@ -1254,6 +1282,21 @@
             "additionalProperties": false,
             "title": "Sendable"
         },
+        "SerialDescriptor": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "SerialDescriptor"
+        },
+        "SerialName": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "SerialName"
+        },
+        "Serializable": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "Serializable"
+        },
         "SerializerProvider": {
             "type": "object",
             "additionalProperties": false,
@@ -1309,6 +1352,11 @@
             "additionalProperties": false,
             "title": "UUID"
         },
+        "UseSerializers": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "UseSerializers"
+        },
         "Utf8JSONReader": {
             "type": "object",
             "additionalProperties": false,
@@ -3054,6 +3102,17 @@
             ],
             "title": "UnionJSONTokenType"
         },
+        "UnionKSerializer": {
+            "anyOf": [
+                {
+                    "$ref": "#/definitions/KSerializer"
+                },
+                {
+                    "type": "number"
+                }
+            ],
+            "title": "UnionKSerializer"
+        },
         "UnionLocale": {
             "anyOf": [
                 {
@@ -3153,6 +3212,17 @@
             ],
             "title": "UnionObjectMapper"
         },
+        "UnionPrimitiveKind": {
+            "anyOf": [
+                {
+                    "$ref": "#/definitions/PrimitiveKind"
+                },
+                {
+                    "type": "number"
+                }
+            ],
+            "title": "UnionPrimitiveKind"
+        },
         "UnionProtocol": {
             "anyOf": [
                 {
@@ -3208,6 +3278,39 @@
             ],
             "title": "UnionSendable"
         },
+        "UnionSerialDescriptor": {
+            "anyOf": [
+                {
+                    "$ref": "#/definitions/SerialDescriptor"
+                },
+                {
+                    "type": "number"
+                }
+            ],
+            "title": "UnionSerialDescriptor"
+        },
+        "UnionSerialName": {
+            "anyOf": [
+                {
+                    "$ref": "#/definitions/SerialName"
+                },
+                {
+                    "type": "number"
+                }
+            ],
+            "title": "UnionSerialName"
+        },
+        "UnionSerializable": {
+            "anyOf": [
+                {
+                    "$ref": "#/definitions/Serializable"
+                },
+                {
+                    "type": "number"
+                }
+            ],
+            "title": "UnionSerializable"
+        },
         "UnionSerializerProvider": {
             "anyOf": [
                 {
@@ -3329,6 +3432,17 @@
             ],
             "title": "UnionUUID"
         },
+        "UnionUseSerializers": {
+            "anyOf": [
+                {
+                    "$ref": "#/definitions/UseSerializers"
+                },
+                {
+                    "type": "number"
+                }
+            ],
+            "title": "UnionUseSerializers"
+        },
         "UnionUtf8JSONReader": {
             "anyOf": [
                 {
diff --git a/base/schema-swift/test/inputs/schema/keyword-enum.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/keyword-enum.schema/default/quicktype.swift
index 8222318..168057e 100644
--- a/base/schema-swift/test/inputs/schema/keyword-enum.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/keyword-enum.schema/default/quicktype.swift
@@ -307,9 +307,14 @@ enum Enum: String, Codable {
     case sel = "SEL"
     case select = "select"
     case enumSelf = "Self"
+    case serializable = "Serializable"
     case purpleSelf = "self"
     case sendable = "Sendable"
     case serialize = "serialize"
+    case serialName = "SerialName"
+    case kSerializer = "KSerializer"
+    case primitiveKind = "PrimitiveKind"
+    case serialDescriptor = "SerialDescriptor"
     case serializerProvider = "SerializerProvider"
     case enumSet = "set"
     case short = "short"
@@ -360,6 +365,7 @@ enum Enum: String, Codable {
     case unchecked = "unchecked"
     case undefined = "undefined"
     case union = "union"
+    case useSerializers = "UseSerializers"
     case enumUnowned = "unowned"
     case unsafe = "unsafe"
     case unsigned = "unsigned"
diff --git a/base/schema-swift/test/inputs/schema/keyword-unions.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/keyword-unions.schema/default/quicktype.swift
index dbe391a..5f01860 100644
--- a/base/schema-swift/test/inputs/schema/keyword-unions.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/keyword-unions.schema/default/quicktype.swift
@@ -179,6 +179,7 @@ struct TopLevel: Codable {
     let jsonParser: UnionJSONParser?
     let jsonReader: UnionJSONReader?
     let jsonTokenType: UnionJSONTokenType?
+    let kSerializer: UnionKSerializer?
     let lambda: UnionLambda?
     let topLevelLazy: UnionLazy?
     let topLevelLeft: UnionLeft?
@@ -233,6 +234,7 @@ struct TopLevel: Codable {
     let topLevelPostfix: UnionPostfix?
     let topLevelPrecedence: UnionPrecedence?
     let topLevelPrefix: UnionPrefix?
+    let primitiveKind: UnionPrimitiveKind?
     let print: UnionPrint?
     let printf: UnionPrintf?
     let printMembers: UnionPrintMembers?
@@ -267,8 +269,11 @@ struct TopLevel: Codable {
     let topLevelSelf: UnionSelf?
     let purpleSelf: UnionSelfUnion?
     let sendable: UnionSendable?
+    let serialDescriptor: UnionSerialDescriptor?
+    let serializable: UnionSerializable?
     let serialize: UnionSerialize?
     let serializerProvider: UnionSerializerProvider?
+    let serialName: UnionSerialName?
     let topLevelSet: UnionSet?
     let short: UnionShort?
     let signed: UnionSigned?
@@ -321,6 +326,7 @@ struct TopLevel: Codable {
     let topLevelUnowned: UnionUnowned?
     let unsafe: UnionUnsafe?
     let unsigned: UnionUnsigned?
+    let useSerializers: UnionUseSerializers?
     let ushort: UnionUshort?
     let using: UnionUsing?
     let utf8JSONReader: UnionUtf8JSONReader?
@@ -514,6 +520,7 @@ struct TopLevel: Codable {
         case jsonParser = "JsonParser"
         case jsonReader = "JsonReader"
         case jsonTokenType = "JsonTokenType"
+        case kSerializer = "KSerializer"
         case lambda = "lambda"
         case topLevelLazy = "lazy"
         case topLevelLeft = "left"
@@ -568,6 +575,7 @@ struct TopLevel: Codable {
         case topLevelPostfix = "postfix"
         case topLevelPrecedence = "precedence"
         case topLevelPrefix = "prefix"
+        case primitiveKind = "PrimitiveKind"
         case print = "print"
         case printf = "printf"
         case printMembers = "printMembers"
@@ -602,8 +610,11 @@ struct TopLevel: Codable {
         case topLevelSelf = "Self"
         case purpleSelf = "self"
         case sendable = "Sendable"
+        case serialDescriptor = "SerialDescriptor"
+        case serializable = "Serializable"
         case serialize = "serialize"
         case serializerProvider = "SerializerProvider"
+        case serialName = "SerialName"
         case topLevelSet = "set"
         case short = "short"
         case signed = "signed"
@@ -656,6 +667,7 @@ struct TopLevel: Codable {
         case topLevelUnowned = "unowned"
         case unsafe = "unsafe"
         case unsigned = "unsigned"
+        case useSerializers = "UseSerializers"
         case ushort = "ushort"
         case using = "using"
         case utf8JSONReader = "Utf8JsonReader"
@@ -869,6 +881,7 @@ extension TopLevel {
         jsonParser: UnionJSONParser?? = nil,
         jsonReader: UnionJSONReader?? = nil,
         jsonTokenType: UnionJSONTokenType?? = nil,
+        kSerializer: UnionKSerializer?? = nil,
         lambda: UnionLambda?? = nil,
         topLevelLazy: UnionLazy?? = nil,
         topLevelLeft: UnionLeft?? = nil,
@@ -923,6 +936,7 @@ extension TopLevel {
         topLevelPostfix: UnionPostfix?? = nil,
         topLevelPrecedence: UnionPrecedence?? = nil,
         topLevelPrefix: UnionPrefix?? = nil,
+        primitiveKind: UnionPrimitiveKind?? = nil,
         print: UnionPrint?? = nil,
         printf: UnionPrintf?? = nil,
         printMembers: UnionPrintMembers?? = nil,
@@ -957,8 +971,11 @@ extension TopLevel {
         topLevelSelf: UnionSelf?? = nil,
         purpleSelf: UnionSelfUnion?? = nil,
         sendable: UnionSendable?? = nil,
+        serialDescriptor: UnionSerialDescriptor?? = nil,
+        serializable: UnionSerializable?? = nil,
         serialize: UnionSerialize?? = nil,
         serializerProvider: UnionSerializerProvider?? = nil,
+        serialName: UnionSerialName?? = nil,
         topLevelSet: UnionSet?? = nil,
         short: UnionShort?? = nil,
         signed: UnionSigned?? = nil,
@@ -1011,6 +1028,7 @@ extension TopLevel {
         topLevelUnowned: UnionUnowned?? = nil,
         unsafe: UnionUnsafe?? = nil,
         unsigned: UnionUnsigned?? = nil,
+        useSerializers: UnionUseSerializers?? = nil,
         ushort: UnionUshort?? = nil,
         using: UnionUsing?? = nil,
         utf8JSONReader: UnionUtf8JSONReader?? = nil,
@@ -1204,6 +1222,7 @@ extension TopLevel {
             jsonParser: jsonParser ?? self.jsonParser,
             jsonReader: jsonReader ?? self.jsonReader,
             jsonTokenType: jsonTokenType ?? self.jsonTokenType,
+            kSerializer: kSerializer ?? self.kSerializer,
             lambda: lambda ?? self.lambda,
             topLevelLazy: topLevelLazy ?? self.topLevelLazy,
             topLevelLeft: topLevelLeft ?? self.topLevelLeft,
@@ -1258,6 +1277,7 @@ extension TopLevel {
             topLevelPostfix: topLevelPostfix ?? self.topLevelPostfix,
             topLevelPrecedence: topLevelPrecedence ?? self.topLevelPrecedence,
             topLevelPrefix: topLevelPrefix ?? self.topLevelPrefix,
+            primitiveKind: primitiveKind ?? self.primitiveKind,
             print: print ?? self.print,
             printf: printf ?? self.printf,
             printMembers: printMembers ?? self.printMembers,
@@ -1292,8 +1312,11 @@ extension TopLevel {
             topLevelSelf: topLevelSelf ?? self.topLevelSelf,
             purpleSelf: purpleSelf ?? self.purpleSelf,
             sendable: sendable ?? self.sendable,
+            serialDescriptor: serialDescriptor ?? self.serialDescriptor,
+            serializable: serializable ?? self.serializable,
             serialize: serialize ?? self.serialize,
             serializerProvider: serializerProvider ?? self.serializerProvider,
+            serialName: serialName ?? self.serialName,
             topLevelSet: topLevelSet ?? self.topLevelSet,
             short: short ?? self.short,
             signed: signed ?? self.signed,
@@ -1346,6 +1369,7 @@ extension TopLevel {
             topLevelUnowned: topLevelUnowned ?? self.topLevelUnowned,
             unsafe: unsafe ?? self.unsafe,
             unsigned: unsigned ?? self.unsigned,
+            useSerializers: useSerializers ?? self.useSerializers,
             ushort: ushort ?? self.ushort,
             using: using ?? self.using,
             utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader,
@@ -10536,6 +10560,77 @@ extension JSONWriter {
     }
 }
 
+enum UnionKSerializer: Codable {
+    case double(Double)
+    case kSerializer(KSerializer)
+
+    init(from decoder: Decoder) throws {
+        let container = try decoder.singleValueContainer()
+        if let x = try? container.decode(Double.self) {
+            self = .double(x)
+            return
+        }
+        if let x = try? container.decode(KSerializer.self) {
+            self = .kSerializer(x)
+            return
+        }
+        throw DecodingError.typeMismatch(UnionKSerializer.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for UnionKSerializer"))
+    }
+
+    func encode(to encoder: Encoder) throws {
+        var container = encoder.singleValueContainer()
+        switch self {
+        case .double(let x):
+            try container.encode(x)
+        case .kSerializer(let x):
+            try container.encode(x)
+        }
+    }
+}
+
+// MARK: - KSerializer
+struct KSerializer: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: KSerializer convenience initializers and mutators
+
+extension KSerializer {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(KSerializer.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+    ) -> KSerializer {
+        return KSerializer(
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
 enum UnionLambda: Codable {
     case double(Double)
     case lambda(Lambda)
@@ -13305,6 +13400,77 @@ extension Port {
     }
 }
 
+enum UnionPrimitiveKind: Codable {
+    case double(Double)
+    case primitiveKind(PrimitiveKind)
+
+    init(from decoder: Decoder) throws {
+        let container = try decoder.singleValueContainer()
+        if let x = try? container.decode(Double.self) {
+            self = .double(x)
+            return
+        }
+        if let x = try? container.decode(PrimitiveKind.self) {
+            self = .primitiveKind(x)
+            return
+        }
+        throw DecodingError.typeMismatch(UnionPrimitiveKind.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for UnionPrimitiveKind"))
+    }
+
+    func encode(to encoder: Encoder) throws {
+        var container = encoder.singleValueContainer()
+        switch self {
+        case .double(let x):
+            try container.encode(x)
+        case .primitiveKind(let x):
+            try container.encode(x)
+        }
+    }
+}
+
+// MARK: - PrimitiveKind
+struct PrimitiveKind: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: PrimitiveKind convenience initializers and mutators
+
+extension PrimitiveKind {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(PrimitiveKind.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+    ) -> PrimitiveKind {
+        return PrimitiveKind(
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
 enum UnionPrint: Codable {
     case double(Double)
     case print(Print)
@@ -15364,6 +15530,219 @@ extension Sendable {
     }
 }
 
+enum UnionSerialDescriptor: Codable {
+    case double(Double)
+    case serialDescriptor(SerialDescriptor)
+
+    init(from decoder: Decoder) throws {
+        let container = try decoder.singleValueContainer()
+        if let x = try? container.decode(Double.self) {
+            self = .double(x)
+            return
+        }
+        if let x = try? container.decode(SerialDescriptor.self) {
+            self = .serialDescriptor(x)
+            return
+        }
+        throw DecodingError.typeMismatch(UnionSerialDescriptor.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for UnionSerialDescriptor"))
+    }
+
+    func encode(to encoder: Encoder) throws {
+        var container = encoder.singleValueContainer()
+        switch self {
+        case .double(let x):
+            try container.encode(x)
+        case .serialDescriptor(let x):
+            try container.encode(x)
+        }
+    }
+}
+
+// MARK: - SerialDescriptor
+struct SerialDescriptor: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: SerialDescriptor convenience initializers and mutators
+
+extension SerialDescriptor {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(SerialDescriptor.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+    ) -> SerialDescriptor {
+        return SerialDescriptor(
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+enum UnionSerialName: Codable {
+    case double(Double)
+    case serialName(SerialName)
+
+    init(from decoder: Decoder) throws {
+        let container = try decoder.singleValueContainer()
+        if let x = try? container.decode(Double.self) {
+            self = .double(x)
+            return
+        }
+        if let x = try? container.decode(SerialName.self) {
+            self = .serialName(x)
+            return
+        }
+        throw DecodingError.typeMismatch(UnionSerialName.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for UnionSerialName"))
+    }
+
+    func encode(to encoder: Encoder) throws {
+        var container = encoder.singleValueContainer()
+        switch self {
+        case .double(let x):
+            try container.encode(x)
+        case .serialName(let x):
+            try container.encode(x)
+        }
+    }
+}
+
+// MARK: - SerialName
+struct SerialName: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: SerialName convenience initializers and mutators
+
+extension SerialName {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(SerialName.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+    ) -> SerialName {
+        return SerialName(
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+enum UnionSerializable: Codable {
+    case double(Double)
+    case serializable(Serializable)
+
+    init(from decoder: Decoder) throws {
+        let container = try decoder.singleValueContainer()
+        if let x = try? container.decode(Double.self) {
+            self = .double(x)
+            return
+        }
+        if let x = try? container.decode(Serializable.self) {
+            self = .serializable(x)
+            return
+        }
+        throw DecodingError.typeMismatch(UnionSerializable.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for UnionSerializable"))
+    }
+
+    func encode(to encoder: Encoder) throws {
+        var container = encoder.singleValueContainer()
+        switch self {
+        case .double(let x):
+            try container.encode(x)
+        case .serializable(let x):
+            try container.encode(x)
+        }
+    }
+}
+
+// MARK: - Serializable
+struct Serializable: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: Serializable convenience initializers and mutators
+
+extension Serializable {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Serializable.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+    ) -> Serializable {
+        return Serializable(
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
 enum UnionSerialize: Codable {
     case double(Double)
     case serialize(Serialize)
@@ -23955,6 +24334,77 @@ extension Unsigned {
     }
 }
 
+enum UnionUseSerializers: Codable {
+    case double(Double)
+    case useSerializers(UseSerializers)
+
+    init(from decoder: Decoder) throws {
+        let container = try decoder.singleValueContainer()
+        if let x = try? container.decode(Double.self) {
+            self = .double(x)
+            return
+        }
+        if let x = try? container.decode(UseSerializers.self) {
+            self = .useSerializers(x)
+            return
+        }
+        throw DecodingError.typeMismatch(UnionUseSerializers.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for UnionUseSerializers"))
+    }
+
+    func encode(to encoder: Encoder) throws {
+        var container = encoder.singleValueContainer()
+        switch self {
+        case .double(let x):
+            try container.encode(x)
+        case .useSerializers(let x):
+            try container.encode(x)
+        }
+    }
+}
+
+// MARK: - UseSerializers
+struct UseSerializers: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: UseSerializers convenience initializers and mutators
+
+extension UseSerializers {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(UseSerializers.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+    ) -> UseSerializers {
+        return UseSerializers(
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
 enum UnionUshort: Codable {
     case double(Double)
     case ushort(Ushort)
diff --git a/base/schema-typescript/test/inputs/schema/keyword-enum.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/keyword-enum.schema/default/TopLevel.ts
index e90b8c1..a2156ac 100644
--- a/base/schema-typescript/test/inputs/schema/keyword-enum.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/keyword-enum.schema/default/TopLevel.ts
@@ -12,7 +12,7 @@ export interface TopLevel {
     [property: string]: unknown;
 }
 
-export type Enum = "_" | "_Bool" | "_Complex" | "_Imaginery" | "abstract" | "alignas" | "alignof" | "and" | "and_eq" | "any" | "Any" | "array" | "as" | "asm" | "assert" | "associatedtype" | "associativity" | "async" | "atomic" | "atomic_cancel" | "atomic_commit" | "atomic_noexcept" | "auto" | "await" | "base" | "bitand" | "bitor" | "BOOL" | "bool" | "boolean" | "break" | "bycopy" | "byref" | "byte" | "Calendar" | "case" | "catch" | "chan" | "char" | "char16_t" | "char32_t" | "checked" | "class" | "Class" | "clone" | "co_await" | "co_return" | "co_yield" | "Codable" | "CodingKey" | "CodingKeys" | "compl" | "concept" | "console" | "const" | "const_cast" | "constexpr" | "constructor" | "continue" | "convenience" | "convert" | "converter" | "CultureInfo" | "date" | "date_parse_handling" | "DateFormatter" | "DateOnly" | "DateOnlyConverter" | "DateTime" | "DateTimeStyles" | "debugger" | "decimal" | "declare" | "decltype" | "decode_string" | "Decoder" | "DecodingError" | "def" | "default" | "defer" | "deinit" | "del" | "delegate" | "delete" | "dict" | "dictionary" | "didSet" | "do" | "double" | "dynamic" | "dynamic_cast" | "elif" | "else" | "encode_quick_type" | "Encoder" | "enum" | "EnumValues" | "Equatable" | "equalityContract" | "event" | "except" | "exception" | "explicit" | "export" | "exposing" | "extends" | "extension" | "extern" | "fallthrough" | "false" | "False" | "fileprivate" | "final" | "finally" | "fixed" | "float" | "for" | "foreach" | "FormatException" | "friend" | "from" | "from_json" | "func" | "function" | "get" | "global" | "go" | "goto" | "guard" | "Hashable" | "hashCode" | "Hasher" | "hasOwnProperty" | "id" | "if" | "IMP" | "implements" | "implicit" | "import" | "in" | "indirect" | "infix" | "init" | "inline" | "inout" | "instanceof" | "int" | "interface" | "internal" | "IsoDateTimeOffsetConverter" | "iterable" | "is" | "jdec" | "jenc" | "jpipe" | "json" | "json_converter" | "json_serializer" | "json_token" | "json_writer" | "JSONAny" | "JSONCodingKey" | "JSONDecoder" | "JSONEncoder" | "JsonException" | "JsonGenerator" | "JsonNode" | "JSONNull" | "JsonParser" | "JsonReader" | "JsonTokenType" | "lambda" | "lazy" | "left" | "let" | "list" | "Locale" | "lock" | "long" | "map" | "MapEntry" | "metadata_property_handling" | "module" | "mutable" | "mutating" | "namespace" | "native" | "new" | "newtonsoft" | "nil" | "NO" | "noexcept" | "nonatomic" | "none" | "None" | "nonlocal" | "nonmutating" | "NSObject" | "noSuchMethod" | "not" | "not_eq" | "NSError" | "NSString" | "NULL" | "null" | "nullptr" | "number" | "object" | "ObjectMapper" | "of" | "oneway" | "open" | "operator" | "optional" | "or" | "or_eq" | "out" | "override" | "package" | "params" | "pass" | "port" | "postfix" | "precedence" | "prefix" | "print" | "printf" | "printMembers" | "private" | "protected" | "Protocol" | "protocol" | "public" | "quicktype" | "raise" | "range" | "readonly" | "ref" | "RegExp" | "register" | "reinterpret_cast" | "repeat" | "require" | "required" | "requires" | "restrict" | "retain" | "rethrows" | "return" | "right" | "runtimeType" | "s" | "sbyte" | "sealed" | "SEL" | "select" | "Self" | "self" | "Sendable" | "serialize" | "SerializerProvider" | "set" | "short" | "signed" | "SimpleModule" | "sizeof" | "stackalloc" | "Standards" | "static" | "static_assert" | "static_cast" | "StdDeserializer" | "StdSerializer" | "strictfp" | "string" | "struct" | "subscript" | "super" | "switch" | "symbol" | "synchronized" | "system" | "template" | "then" | "this" | "thread_local" | "throw" | "throws" | "TimeOnly" | "TimeOnlyConverter" | "TimeZone" | "to_json" | "top_level" | "toString" | "transient" | "True" | "true" | "try" | "Type" | "type" | "typealias" | "typedef" | "typeid" | "typename" | "typeof" | "uint" | "ulong" | "unchecked" | "undefined" | "union" | "unowned" | "unsafe" | "unsigned" | "ushort" | "using" | "Utf8JsonReader" | "Utf8JsonWriter" | "UUID" | "var" | "virtual" | "void" | "volatile" | "wchar_t" | "weak" | "where" | "while" | "willSet" | "with" | "xor" | "xor_eq" | "YES" | "yield" | "dummy";
+export type Enum = "_" | "_Bool" | "_Complex" | "_Imaginery" | "abstract" | "alignas" | "alignof" | "and" | "and_eq" | "any" | "Any" | "array" | "as" | "asm" | "assert" | "associatedtype" | "associativity" | "async" | "atomic" | "atomic_cancel" | "atomic_commit" | "atomic_noexcept" | "auto" | "await" | "base" | "bitand" | "bitor" | "BOOL" | "bool" | "boolean" | "break" | "bycopy" | "byref" | "byte" | "Calendar" | "case" | "catch" | "chan" | "char" | "char16_t" | "char32_t" | "checked" | "class" | "Class" | "clone" | "co_await" | "co_return" | "co_yield" | "Codable" | "CodingKey" | "CodingKeys" | "compl" | "concept" | "console" | "const" | "const_cast" | "constexpr" | "constructor" | "continue" | "convenience" | "convert" | "converter" | "CultureInfo" | "date" | "date_parse_handling" | "DateFormatter" | "DateOnly" | "DateOnlyConverter" | "DateTime" | "DateTimeStyles" | "debugger" | "decimal" | "declare" | "decltype" | "decode_string" | "Decoder" | "DecodingError" | "def" | "default" | "defer" | "deinit" | "del" | "delegate" | "delete" | "dict" | "dictionary" | "didSet" | "do" | "double" | "dynamic" | "dynamic_cast" | "elif" | "else" | "encode_quick_type" | "Encoder" | "enum" | "EnumValues" | "Equatable" | "equalityContract" | "event" | "except" | "exception" | "explicit" | "export" | "exposing" | "extends" | "extension" | "extern" | "fallthrough" | "false" | "False" | "fileprivate" | "final" | "finally" | "fixed" | "float" | "for" | "foreach" | "FormatException" | "friend" | "from" | "from_json" | "func" | "function" | "get" | "global" | "go" | "goto" | "guard" | "Hashable" | "hashCode" | "Hasher" | "hasOwnProperty" | "id" | "if" | "IMP" | "implements" | "implicit" | "import" | "in" | "indirect" | "infix" | "init" | "inline" | "inout" | "instanceof" | "int" | "interface" | "internal" | "IsoDateTimeOffsetConverter" | "iterable" | "is" | "jdec" | "jenc" | "jpipe" | "json" | "json_converter" | "json_serializer" | "json_token" | "json_writer" | "JSONAny" | "JSONCodingKey" | "JSONDecoder" | "JSONEncoder" | "JsonException" | "JsonGenerator" | "JsonNode" | "JSONNull" | "JsonParser" | "JsonReader" | "JsonTokenType" | "lambda" | "lazy" | "left" | "let" | "list" | "Locale" | "lock" | "long" | "map" | "MapEntry" | "metadata_property_handling" | "module" | "mutable" | "mutating" | "namespace" | "native" | "new" | "newtonsoft" | "nil" | "NO" | "noexcept" | "nonatomic" | "none" | "None" | "nonlocal" | "nonmutating" | "NSObject" | "noSuchMethod" | "not" | "not_eq" | "NSError" | "NSString" | "NULL" | "null" | "nullptr" | "number" | "object" | "ObjectMapper" | "of" | "oneway" | "open" | "operator" | "optional" | "or" | "or_eq" | "out" | "override" | "package" | "params" | "pass" | "port" | "postfix" | "precedence" | "prefix" | "print" | "printf" | "printMembers" | "private" | "protected" | "Protocol" | "protocol" | "public" | "quicktype" | "raise" | "range" | "readonly" | "ref" | "RegExp" | "register" | "reinterpret_cast" | "repeat" | "require" | "required" | "requires" | "restrict" | "retain" | "rethrows" | "return" | "right" | "runtimeType" | "s" | "sbyte" | "sealed" | "SEL" | "select" | "Self" | "Serializable" | "self" | "Sendable" | "serialize" | "SerialName" | "KSerializer" | "PrimitiveKind" | "SerialDescriptor" | "SerializerProvider" | "set" | "short" | "signed" | "SimpleModule" | "sizeof" | "stackalloc" | "Standards" | "static" | "static_assert" | "static_cast" | "StdDeserializer" | "StdSerializer" | "strictfp" | "string" | "struct" | "subscript" | "super" | "switch" | "symbol" | "synchronized" | "system" | "template" | "then" | "this" | "thread_local" | "throw" | "throws" | "TimeOnly" | "TimeOnlyConverter" | "TimeZone" | "to_json" | "top_level" | "toString" | "transient" | "True" | "true" | "try" | "Type" | "type" | "typealias" | "typedef" | "typeid" | "typename" | "typeof" | "uint" | "ulong" | "unchecked" | "undefined" | "union" | "UseSerializers" | "unowned" | "unsafe" | "unsigned" | "ushort" | "using" | "Utf8JsonReader" | "Utf8JsonWriter" | "UUID" | "var" | "virtual" | "void" | "volatile" | "wchar_t" | "weak" | "where" | "while" | "willSet" | "with" | "xor" | "xor_eq" | "YES" | "yield" | "dummy";
 
 // Converts JSON strings to/from your types
 // and asserts the results of JSON.parse at runtime
@@ -462,9 +462,14 @@ const typeMap: any = {
         "SEL",
         "select",
         "Self",
+        "Serializable",
         "self",
         "Sendable",
         "serialize",
+        "SerialName",
+        "KSerializer",
+        "PrimitiveKind",
+        "SerialDescriptor",
         "SerializerProvider",
         "set",
         "short",
@@ -515,6 +520,7 @@ const typeMap: any = {
         "unchecked",
         "undefined",
         "union",
+        "UseSerializers",
         "unowned",
         "unsafe",
         "unsigned",
diff --git a/base/schema-typescript/test/inputs/schema/keyword-unions.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/keyword-unions.schema/default/TopLevel.ts
index 95fb785..0674cc9 100644
--- a/base/schema-typescript/test/inputs/schema/keyword-unions.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/keyword-unions.schema/default/TopLevel.ts
@@ -180,6 +180,7 @@ export interface TopLevel {
     JsonParser?:                 UnionJSONParser;
     JsonReader?:                 UnionJSONReader;
     JsonTokenType?:              UnionJSONTokenType;
+    KSerializer?:                UnionKSerializer;
     lambda?:                     UnionLambda;
     lazy?:                       UnionLazy;
     left?:                       UnionLeft;
@@ -234,6 +235,7 @@ export interface TopLevel {
     postfix?:                    UnionPostfix;
     precedence?:                 UnionPrecedence;
     prefix?:                     UnionPrefix;
+    PrimitiveKind?:              UnionPrimitiveKind;
     print?:                      UnionPrint;
     printf?:                     UnionPrintf;
     printMembers?:               UnionPrintMembers;
@@ -268,8 +270,11 @@ export interface TopLevel {
     Self?:                       UnionSelf;
     self?:                       UnionSelfUnion;
     Sendable?:                   UnionSendable;
+    SerialDescriptor?:           UnionSerialDescriptor;
+    Serializable?:               UnionSerializable;
     serialize?:                  UnionSerialize;
     SerializerProvider?:         UnionSerializerProvider;
+    SerialName?:                 UnionSerialName;
     set?:                        UnionSet;
     short?:                      UnionShort;
     signed?:                     UnionSigned;
@@ -322,6 +327,7 @@ export interface TopLevel {
     unowned?:                    UnionUnowned;
     unsafe?:                     UnionUnsafe;
     unsigned?:                   UnionUnsigned;
+    UseSerializers?:             UnionUseSerializers;
     ushort?:                     UnionUshort;
     using?:                      UnionUsing;
     Utf8JsonReader?:             UnionUtf8JSONReader;
@@ -414,6 +420,8 @@ export type UnionJSONReader = object | number;
 
 export type UnionJSONTokenType = object | number;
 
+export type UnionKSerializer = object | number;
+
 export type UnionLocale = object | number;
 
 export type UnionMapEntry = object | number;
@@ -432,6 +440,8 @@ export type UnionNone = object | number;
 
 export type UnionObjectMapper = object | number;
 
+export type UnionPrimitiveKind = object | number;
+
 export type UnionProtocol = object | number;
 
 export type UnionRegExp = object | number;
@@ -442,6 +452,12 @@ export type UnionSelf = object | number;
 
 export type UnionSendable = object | number;
 
+export type UnionSerialDescriptor = object | number;
+
+export type UnionSerialName = object | number;
+
+export type UnionSerializable = object | number;
+
 export type UnionSerializerProvider = object | number;
 
 export type UnionSimpleModule = object | number;
@@ -464,6 +480,8 @@ export type UnionType = object | number;
 
 export type UnionUUID = object | number;
 
+export type UnionUseSerializers = object | number;
+
 export type UnionUtf8JSONReader = object | number;
 
 export type UnionUtf8JSONWriter = object | number;
@@ -1368,6 +1386,7 @@ const typeMap: any = {
         { json: "JsonParser", js: "JsonParser", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "JsonReader", js: "JsonReader", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "JsonTokenType", js: "JsonTokenType", typ: u(undefined, u(m("any"), 3.14)) },
+        { json: "KSerializer", js: "KSerializer", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "lambda", js: "lambda", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "lazy", js: "lazy", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "left", js: "left", typ: u(undefined, u(m("any"), 3.14)) },
@@ -1422,6 +1441,7 @@ const typeMap: any = {
         { json: "postfix", js: "postfix", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "precedence", js: "precedence", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "prefix", js: "prefix", typ: u(undefined, u(m("any"), 3.14)) },
+        { json: "PrimitiveKind", js: "PrimitiveKind", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "print", js: "print", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "printf", js: "printf", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "printMembers", js: "printMembers", typ: u(undefined, u(m("any"), 3.14)) },
@@ -1456,8 +1476,11 @@ const typeMap: any = {
         { json: "Self", js: "Self", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "self", js: "self", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "Sendable", js: "Sendable", typ: u(undefined, u(m("any"), 3.14)) },
+        { json: "SerialDescriptor", js: "SerialDescriptor", typ: u(undefined, u(m("any"), 3.14)) },
+        { json: "Serializable", js: "Serializable", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "serialize", js: "serialize", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "SerializerProvider", js: "SerializerProvider", typ: u(undefined, u(m("any"), 3.14)) },
+        { json: "SerialName", js: "SerialName", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "set", js: "set", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "short", js: "short", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "signed", js: "signed", typ: u(undefined, u(m("any"), 3.14)) },
@@ -1510,6 +1533,7 @@ const typeMap: any = {
         { json: "unowned", js: "unowned", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "unsafe", js: "unsafe", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "unsigned", js: "unsigned", typ: u(undefined, u(m("any"), 3.14)) },
+        { json: "UseSerializers", js: "UseSerializers", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "ushort", js: "ushort", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "using", js: "using", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: u(undefined, u(m("any"), 3.14)) },
diff --git a/base/schema-typescript-effect-schema/test/inputs/schema/keyword-enum.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/schema/keyword-enum.schema/default/TopLevel.ts
index c126e27..a65db38 100644
--- a/base/schema-typescript-effect-schema/test/inputs/schema/keyword-enum.schema/default/TopLevel.ts
+++ b/head/schema-typescript-effect-schema/test/inputs/schema/keyword-enum.schema/default/TopLevel.ts
@@ -259,9 +259,14 @@ export const Enum = S.Literal(
     "SEL",
     "select",
     "Self",
+    "Serializable",
     "self",
     "Sendable",
     "serialize",
+    "SerialName",
+    "KSerializer",
+    "PrimitiveKind",
+    "SerialDescriptor",
     "SerializerProvider",
     "set",
     "short",
@@ -312,6 +317,7 @@ export const Enum = S.Literal(
     "unchecked",
     "undefined",
     "union",
+    "UseSerializers",
     "unowned",
     "unsafe",
     "unsigned",
diff --git a/base/schema-typescript-effect-schema/test/inputs/schema/keyword-unions.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/schema/keyword-unions.schema/default/TopLevel.ts
index 3adbb4b..a740754 100644
--- a/base/schema-typescript-effect-schema/test/inputs/schema/keyword-unions.schema/default/TopLevel.ts
+++ b/head/schema-typescript-effect-schema/test/inputs/schema/keyword-unions.schema/default/TopLevel.ts
@@ -58,6 +58,9 @@ export class Using extends S.Class<Using>("Using")(S.Struct({}).pipe(S.filter(va
 export class Ushort extends S.Class<Ushort>("Ushort")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
+export class UseSerializers extends S.Class<UseSerializers>("UseSerializers")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
 export class Unsigned extends S.Class<Unsigned>("Unsigned")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
@@ -244,6 +247,15 @@ export class SerializerProvider extends S.Class<SerializerProvider>("SerializerP
 export class Serialize extends S.Class<Serialize>("Serialize")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
+export class Serializable extends S.Class<Serializable>("Serializable")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
+export class SerialName extends S.Class<SerialName>("SerialName")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
+export class SerialDescriptor extends S.Class<SerialDescriptor>("SerialDescriptor")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
 export class Sendable extends S.Class<Sendable>("Sendable")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
@@ -343,6 +355,9 @@ export class PrintMembers extends S.Class<PrintMembers>("PrintMembers")(S.Struct
 export class Print extends S.Class<Print>("Print")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
+export class PrimitiveKind extends S.Class<PrimitiveKind>("PrimitiveKind")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
 export class Prefix extends S.Class<Prefix>("Prefix")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
@@ -499,6 +514,9 @@ export class Lazy extends S.Class<Lazy>("Lazy")(S.Struct({}).pipe(S.filter(value
 export class Lambda extends S.Class<Lambda>("Lambda")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
+export class KSerializer extends S.Class<KSerializer>("KSerializer")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
 export class JsonWriter extends S.Class<JsonWriter>("JsonWriter")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
@@ -1170,6 +1188,7 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "JsonParser": S.optional(S.Union(S.Number, JsonParser)),
     "JsonReader": S.optional(S.Union(S.Number, JsonReader)),
     "JsonTokenType": S.optional(S.Union(S.Number, JsonTokenType)),
+    "KSerializer": S.optional(S.Union(S.Number, KSerializer)),
     "lambda": S.optional(S.Union(S.Number, Lambda)),
     "lazy": S.optional(S.Union(S.Number, Lazy)),
     "left": S.optional(S.Union(S.Number, Left)),
@@ -1224,6 +1243,7 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "postfix": S.optional(S.Union(S.Number, Postfix)),
     "precedence": S.optional(S.Union(S.Number, Precedence)),
     "prefix": S.optional(S.Union(S.Number, Prefix)),
+    "PrimitiveKind": S.optional(S.Union(S.Number, PrimitiveKind)),
     "print": S.optional(S.Union(S.Number, Print)),
     "printf": S.optional(S.Union(S.Number, Printf)),
     "printMembers": S.optional(S.Union(S.Number, PrintMembers)),
@@ -1258,8 +1278,11 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "Self": S.optional(S.Union(S.Number, Self)),
     "self": S.optional(S.Union(S.Number, SelfClass)),
     "Sendable": S.optional(S.Union(S.Number, Sendable)),
+    "SerialDescriptor": S.optional(S.Union(S.Number, SerialDescriptor)),
+    "Serializable": S.optional(S.Union(S.Number, Serializable)),
     "serialize": S.optional(S.Union(S.Number, Serialize)),
     "SerializerProvider": S.optional(S.Union(S.Number, SerializerProvider)),
+    "SerialName": S.optional(S.Union(S.Number, SerialName)),
     "set": S.optional(S.Union(S.Number, Set)),
     "short": S.optional(S.Union(S.Number, Short)),
     "signed": S.optional(S.Union(S.Number, Signed)),
@@ -1312,6 +1335,7 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "unowned": S.optional(S.Union(S.Number, Unowned)),
     "unsafe": S.optional(S.Union(S.Number, Unsafe)),
     "unsigned": S.optional(S.Union(S.Number, Unsigned)),
+    "UseSerializers": S.optional(S.Union(S.Number, UseSerializers)),
     "ushort": S.optional(S.Union(S.Number, Ushort)),
     "using": S.optional(S.Union(S.Number, Using)),
     "Utf8JsonReader": S.optional(S.Union(S.Number, Utf8JsonReader)),
diff --git a/base/schema-typescript-zod/test/inputs/schema/keyword-enum.schema/default/TopLevel.ts b/head/schema-typescript-zod/test/inputs/schema/keyword-enum.schema/default/TopLevel.ts
index 453e512..32cbf29 100644
--- a/base/schema-typescript-zod/test/inputs/schema/keyword-enum.schema/default/TopLevel.ts
+++ b/head/schema-typescript-zod/test/inputs/schema/keyword-enum.schema/default/TopLevel.ts
@@ -259,9 +259,14 @@ export const EnumSchema = z.enum([
     "SEL",
     "select",
     "Self",
+    "Serializable",
     "self",
     "Sendable",
     "serialize",
+    "SerialName",
+    "KSerializer",
+    "PrimitiveKind",
+    "SerialDescriptor",
     "SerializerProvider",
     "set",
     "short",
@@ -312,6 +317,7 @@ export const EnumSchema = z.enum([
     "unchecked",
     "undefined",
     "union",
+    "UseSerializers",
     "unowned",
     "unsafe",
     "unsigned",
diff --git a/base/schema-typescript-zod/test/inputs/schema/keyword-unions.schema/default/TopLevel.ts b/head/schema-typescript-zod/test/inputs/schema/keyword-unions.schema/default/TopLevel.ts
index 00260a8..7da5fbe 100644
--- a/base/schema-typescript-zod/test/inputs/schema/keyword-unions.schema/default/TopLevel.ts
+++ b/head/schema-typescript-zod/test/inputs/schema/keyword-unions.schema/default/TopLevel.ts
@@ -665,6 +665,10 @@ export const JsonWriterSchema = z.object({
 });
 export type JsonWriter = z.infer<typeof JsonWriterSchema>;
 
+export const KSerializerSchema = z.object({
+});
+export type KSerializer = z.infer<typeof KSerializerSchema>;
+
 export const LambdaSchema = z.object({
 });
 export type Lambda = z.infer<typeof LambdaSchema>;
@@ -873,6 +877,10 @@ export const PrefixSchema = z.object({
 });
 export type Prefix = z.infer<typeof PrefixSchema>;
 
+export const PrimitiveKindSchema = z.object({
+});
+export type PrimitiveKind = z.infer<typeof PrimitiveKindSchema>;
+
 export const PrintSchema = z.object({
 });
 export type Print = z.infer<typeof PrintSchema>;
@@ -1005,6 +1013,18 @@ export const SendableSchema = z.object({
 });
 export type Sendable = z.infer<typeof SendableSchema>;
 
+export const SerialDescriptorSchema = z.object({
+});
+export type SerialDescriptor = z.infer<typeof SerialDescriptorSchema>;
+
+export const SerialNameSchema = z.object({
+});
+export type SerialName = z.infer<typeof SerialNameSchema>;
+
+export const SerializableSchema = z.object({
+});
+export type Serializable = z.infer<typeof SerializableSchema>;
+
 export const SerializeSchema = z.object({
 });
 export type Serialize = z.infer<typeof SerializeSchema>;
@@ -1253,6 +1273,10 @@ export const UnsignedSchema = z.object({
 });
 export type Unsigned = z.infer<typeof UnsignedSchema>;
 
+export const UseSerializersSchema = z.object({
+});
+export type UseSerializers = z.infer<typeof UseSerializersSchema>;
+
 export const UshortSchema = z.object({
 });
 export type Ushort = z.infer<typeof UshortSchema>;
@@ -1502,6 +1526,7 @@ export const TopLevelSchema = z.preprocess(value => typeof value === "object" &&
     "JsonParser": z.union([JsonParserSchema, z.number()]).optional(),
     "JsonReader": z.union([JsonReaderSchema, z.number()]).optional(),
     "JsonTokenType": z.union([JsonTokenTypeSchema, z.number()]).optional(),
+    "KSerializer": z.union([KSerializerSchema, z.number()]).optional(),
     "lambda": z.union([LambdaSchema, z.number()]).optional(),
     "lazy": z.union([LazySchema, z.number()]).optional(),
     "left": z.union([LeftSchema, z.number()]).optional(),
@@ -1556,6 +1581,7 @@ export const TopLevelSchema = z.preprocess(value => typeof value === "object" &&
     "postfix": z.union([PostfixSchema, z.number()]).optional(),
     "precedence": z.union([PrecedenceSchema, z.number()]).optional(),
     "prefix": z.union([PrefixSchema, z.number()]).optional(),
+    "PrimitiveKind": z.union([PrimitiveKindSchema, z.number()]).optional(),
     "print": z.union([PrintSchema, z.number()]).optional(),
     "printf": z.union([PrintfSchema, z.number()]).optional(),
     "printMembers": z.union([PrintMembersSchema, z.number()]).optional(),
@@ -1590,8 +1616,11 @@ export const TopLevelSchema = z.preprocess(value => typeof value === "object" &&
     "Self": z.union([SelfSchema, z.number()]).optional(),
     "self": z.union([SelfClassSchema, z.number()]).optional(),
     "Sendable": z.union([SendableSchema, z.number()]).optional(),
+    "SerialDescriptor": z.union([SerialDescriptorSchema, z.number()]).optional(),
+    "Serializable": z.union([SerializableSchema, z.number()]).optional(),
     "serialize": z.union([SerializeSchema, z.number()]).optional(),
     "SerializerProvider": z.union([SerializerProviderSchema, z.number()]).optional(),
+    "SerialName": z.union([SerialNameSchema, z.number()]).optional(),
     "set": z.union([SetSchema, z.number()]).optional(),
     "short": z.union([ShortSchema, z.number()]).optional(),
     "signed": z.union([SignedSchema, z.number()]).optional(),
@@ -1644,6 +1673,7 @@ export const TopLevelSchema = z.preprocess(value => typeof value === "object" &&
     "unowned": z.union([UnownedSchema, z.number()]).optional(),
     "unsafe": z.union([UnsafeSchema, z.number()]).optional(),
     "unsigned": z.union([UnsignedSchema, z.number()]).optional(),
+    "UseSerializers": z.union([UseSerializersSchema, z.number()]).optional(),
     "ushort": z.union([UshortSchema, z.number()]).optional(),
     "using": z.union([UsingSchema, z.number()]).optional(),
     "Utf8JsonReader": z.union([Utf8JsonReaderSchema, z.number()]).optional(),
diff --git a/base/swift/test/inputs/json/priority/keywords.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/keywords.json/default/quicktype.swift
index 31d5352..00d6aeb 100644
--- a/base/swift/test/inputs/json/priority/keywords.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/keywords.json/default/quicktype.swift
@@ -12545,6 +12545,7 @@ extension Select {
 // MARK: - Obj5
 struct Obj5: Codable {
     let dummy: Int
+    let kSerializer: KSerializer
     let obj5Self: SelfClass
     let obj5Set: Set
     let obj5Static: Static
@@ -12559,10 +12560,13 @@ struct Obj5: Codable {
     let obj5Type: Obj5Type
     let obj5Typealias: Typealias
     let obj5Unowned: Unowned
-    let obj5Var: Var
+    let primitiveKind: PrimitiveKind
     let purpleSelf: Obj5Self
     let purpleTrue: TrueClass
     let sendable: Sendable
+    let serialDescriptor: SerialDescriptor
+    let serialName: SerialName
+    let serializable: Serializable
     let serialize: Serialize
     let serializerProvider: SerializerProvider
     let short: Short
@@ -12603,15 +12607,12 @@ struct Obj5: Codable {
     let union: Union
     let unsafe: Unsafe
     let unsigned: Unsigned
+    let useSerializers: UseSerializers
     let ushort: Ushort
-    let using: Using
-    let utf8JSONReader: Utf8JSONReader
-    let utf8JSONWriter: Utf8JSONWriter
-    let uuid: UUIDClass
-    let virtual: Virtual
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
+        case kSerializer = "KSerializer"
         case obj5Self = "Self"
         case obj5Set = "set"
         case obj5Static = "static"
@@ -12626,10 +12627,13 @@ struct Obj5: Codable {
         case obj5Type = "type"
         case obj5Typealias = "typealias"
         case obj5Unowned = "unowned"
-        case obj5Var = "var"
+        case primitiveKind = "PrimitiveKind"
         case purpleSelf = "self"
         case purpleTrue = "true"
         case sendable = "Sendable"
+        case serialDescriptor = "SerialDescriptor"
+        case serialName = "SerialName"
+        case serializable = "Serializable"
         case serialize = "serialize"
         case serializerProvider = "SerializerProvider"
         case short = "short"
@@ -12670,12 +12674,8 @@ struct Obj5: Codable {
         case union = "union"
         case unsafe = "unsafe"
         case unsigned = "unsigned"
+        case useSerializers = "UseSerializers"
         case ushort = "ushort"
-        case using = "using"
-        case utf8JSONReader = "Utf8JsonReader"
-        case utf8JSONWriter = "Utf8JsonWriter"
-        case uuid = "UUID"
-        case virtual = "virtual"
     }
 }
 
@@ -12699,6 +12699,7 @@ extension Obj5 {
 
     func with(
         dummy: Int? = nil,
+        kSerializer: KSerializer? = nil,
         obj5Self: SelfClass? = nil,
         obj5Set: Set? = nil,
         obj5Static: Static? = nil,
@@ -12713,10 +12714,13 @@ extension Obj5 {
         obj5Type: Obj5Type? = nil,
         obj5Typealias: Typealias? = nil,
         obj5Unowned: Unowned? = nil,
-        obj5Var: Var? = nil,
+        primitiveKind: PrimitiveKind? = nil,
         purpleSelf: Obj5Self? = nil,
         purpleTrue: TrueClass? = nil,
         sendable: Sendable? = nil,
+        serialDescriptor: SerialDescriptor? = nil,
+        serialName: SerialName? = nil,
+        serializable: Serializable? = nil,
         serialize: Serialize? = nil,
         serializerProvider: SerializerProvider? = nil,
         short: Short? = nil,
@@ -12757,15 +12761,12 @@ extension Obj5 {
         union: Union? = nil,
         unsafe: Unsafe? = nil,
         unsigned: Unsigned? = nil,
-        ushort: Ushort? = nil,
-        using: Using? = nil,
-        utf8JSONReader: Utf8JSONReader? = nil,
-        utf8JSONWriter: Utf8JSONWriter? = nil,
-        uuid: UUIDClass? = nil,
-        virtual: Virtual? = nil
+        useSerializers: UseSerializers? = nil,
+        ushort: Ushort? = nil
     ) -> Obj5 {
         return Obj5(
             dummy: dummy ?? self.dummy,
+            kSerializer: kSerializer ?? self.kSerializer,
             obj5Self: obj5Self ?? self.obj5Self,
             obj5Set: obj5Set ?? self.obj5Set,
             obj5Static: obj5Static ?? self.obj5Static,
@@ -12780,10 +12781,13 @@ extension Obj5 {
             obj5Type: obj5Type ?? self.obj5Type,
             obj5Typealias: obj5Typealias ?? self.obj5Typealias,
             obj5Unowned: obj5Unowned ?? self.obj5Unowned,
-            obj5Var: obj5Var ?? self.obj5Var,
+            primitiveKind: primitiveKind ?? self.primitiveKind,
             purpleSelf: purpleSelf ?? self.purpleSelf,
             purpleTrue: purpleTrue ?? self.purpleTrue,
             sendable: sendable ?? self.sendable,
+            serialDescriptor: serialDescriptor ?? self.serialDescriptor,
+            serialName: serialName ?? self.serialName,
+            serializable: serializable ?? self.serializable,
             serialize: serialize ?? self.serialize,
             serializerProvider: serializerProvider ?? self.serializerProvider,
             short: short ?? self.short,
@@ -12824,12 +12828,52 @@ extension Obj5 {
             union: union ?? self.union,
             unsafe: unsafe ?? self.unsafe,
             unsigned: unsigned ?? self.unsigned,
-            ushort: ushort ?? self.ushort,
-            using: using ?? self.using,
-            utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader,
-            utf8JSONWriter: utf8JSONWriter ?? self.utf8JSONWriter,
-            uuid: uuid ?? self.uuid,
-            virtual: virtual ?? self.virtual
+            useSerializers: useSerializers ?? self.useSerializers,
+            ushort: ushort ?? self.ushort
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+// MARK: - KSerializer
+struct KSerializer: Codable {
+    let kSerializer: Int
+
+    enum CodingKeys: String, CodingKey {
+        case kSerializer = "KSerializer"
+    }
+}
+
+// MARK: KSerializer convenience initializers and mutators
+
+extension KSerializer {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(KSerializer.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        kSerializer: Int? = nil
+    ) -> KSerializer {
+        return KSerializer(
+            kSerializer: kSerializer ?? self.kSerializer
         )
     }
 
@@ -13458,20 +13502,20 @@ extension Unowned {
     }
 }
 
-// MARK: - Var
-struct Var: Codable {
-    let varVar: Int
+// MARK: - PrimitiveKind
+struct PrimitiveKind: Codable {
+    let primitiveKind: Int
 
     enum CodingKeys: String, CodingKey {
-        case varVar = "var"
+        case primitiveKind = "PrimitiveKind"
     }
 }
 
-// MARK: Var convenience initializers and mutators
+// MARK: PrimitiveKind convenience initializers and mutators
 
-extension Var {
+extension PrimitiveKind {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Var.self, from: data)
+        self = try newJSONDecoder().decode(PrimitiveKind.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13486,10 +13530,10 @@ extension Var {
     }
 
     func with(
-        varVar: Int? = nil
-    ) -> Var {
-        return Var(
-            varVar: varVar ?? self.varVar
+        primitiveKind: Int? = nil
+    ) -> PrimitiveKind {
+        return PrimitiveKind(
+            primitiveKind: primitiveKind ?? self.primitiveKind
         )
     }
 
@@ -13634,6 +13678,138 @@ extension Sendable {
     }
 }
 
+// MARK: - SerialDescriptor
+struct SerialDescriptor: Codable {
+    let serialDescriptor: Int
+
+    enum CodingKeys: String, CodingKey {
+        case serialDescriptor = "SerialDescriptor"
+    }
+}
+
+// MARK: SerialDescriptor convenience initializers and mutators
+
+extension SerialDescriptor {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(SerialDescriptor.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        serialDescriptor: Int? = nil
+    ) -> SerialDescriptor {
+        return SerialDescriptor(
+            serialDescriptor: serialDescriptor ?? self.serialDescriptor
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+// MARK: - SerialName
+struct SerialName: Codable {
+    let serialName: Int
+
+    enum CodingKeys: String, CodingKey {
+        case serialName = "SerialName"
+    }
+}
+
+// MARK: SerialName convenience initializers and mutators
+
+extension SerialName {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(SerialName.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        serialName: Int? = nil
+    ) -> SerialName {
+        return SerialName(
+            serialName: serialName ?? self.serialName
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+// MARK: - Serializable
+struct Serializable: Codable {
+    let serializable: Int
+
+    enum CodingKeys: String, CodingKey {
+        case serializable = "Serializable"
+    }
+}
+
+// MARK: Serializable convenience initializers and mutators
+
+extension Serializable {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Serializable.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        serializable: Int? = nil
+    ) -> Serializable {
+        return Serializable(
+            serializable: serializable ?? self.serializable
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
 // MARK: - Serialize
 struct Serialize: Codable {
     let serialize: Int
@@ -15394,20 +15570,20 @@ extension Unsigned {
     }
 }
 
-// MARK: - Ushort
-struct Ushort: Codable {
-    let ushort: Int
+// MARK: - UseSerializers
+struct UseSerializers: Codable {
+    let useSerializers: Int
 
     enum CodingKeys: String, CodingKey {
-        case ushort = "ushort"
+        case useSerializers = "UseSerializers"
     }
 }
 
-// MARK: Ushort convenience initializers and mutators
+// MARK: UseSerializers convenience initializers and mutators
 
-extension Ushort {
+extension UseSerializers {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Ushort.self, from: data)
+        self = try newJSONDecoder().decode(UseSerializers.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15422,10 +15598,10 @@ extension Ushort {
     }
 
     func with(
-        ushort: Int? = nil
-    ) -> Ushort {
-        return Ushort(
-            ushort: ushort ?? self.ushort
+        useSerializers: Int? = nil
+    ) -> UseSerializers {
+        return UseSerializers(
+            useSerializers: useSerializers ?? self.useSerializers
         )
     }
 
@@ -15438,20 +15614,20 @@ extension Ushort {
     }
 }
 
-// MARK: - Using
-struct Using: Codable {
-    let using: Int
+// MARK: - Ushort
+struct Ushort: Codable {
+    let ushort: Int
 
     enum CodingKeys: String, CodingKey {
-        case using = "using"
+        case ushort = "ushort"
     }
 }
 
-// MARK: Using convenience initializers and mutators
+// MARK: Ushort convenience initializers and mutators
 
-extension Using {
+extension Ushort {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Using.self, from: data)
+        self = try newJSONDecoder().decode(Ushort.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15466,10 +15642,10 @@ extension Using {
     }
 
     func with(
-        using: Int? = nil
-    ) -> Using {
-        return Using(
-            using: using ?? self.using
+        ushort: Int? = nil
+    ) -> Ushort {
+        return Ushort(
+            ushort: ushort ?? self.ushort
         )
     }
 
@@ -15482,20 +15658,56 @@ extension Using {
     }
 }
 
-// MARK: - Utf8JSONReader
-struct Utf8JSONReader: Codable {
-    let utf8JSONReader: Int
+// MARK: - Obj6
+struct Obj6: Codable {
+    let dummy: Int
+    let obj6Var: Var
+    let obj6Weak: Weak
+    let obj6Where: Where
+    let obj6While: While
+    let obj6WillSet: WillSet
+    let using: Using
+    let utf8JSONReader: Utf8JSONReader
+    let utf8JSONWriter: Utf8JSONWriter
+    let uuid: UUIDClass
+    let virtual: Virtual
+    let void: Void
+    let volatile: Volatile
+    let wcharT: WcharT
+    let with: With
+    let xor: Xor
+    let xorEq: XorEq
+    let yes: Yes
+    let yield: Yield
 
     enum CodingKeys: String, CodingKey {
+        case dummy = "dummy"
+        case obj6Var = "var"
+        case obj6Weak = "weak"
+        case obj6Where = "where"
+        case obj6While = "while"
+        case obj6WillSet = "willSet"
+        case using = "using"
         case utf8JSONReader = "Utf8JsonReader"
+        case utf8JSONWriter = "Utf8JsonWriter"
+        case uuid = "UUID"
+        case virtual = "virtual"
+        case void = "void"
+        case volatile = "volatile"
+        case wcharT = "wchar_t"
+        case with = "with"
+        case xor = "xor"
+        case xorEq = "xor_eq"
+        case yes = "YES"
+        case yield = "yield"
     }
 }
 
-// MARK: Utf8JSONReader convenience initializers and mutators
+// MARK: Obj6 convenience initializers and mutators
 
-extension Utf8JSONReader {
+extension Obj6 {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Utf8JSONReader.self, from: data)
+        self = try newJSONDecoder().decode(Obj6.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15510,36 +15722,72 @@ extension Utf8JSONReader {
     }
 
     func with(
-        utf8JSONReader: Int? = nil
-    ) -> Utf8JSONReader {
-        return Utf8JSONReader(
-            utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader
-        )
-    }
-
-    func jsonData() throws -> Data {
-        return try newJSONEncoder().encode(self)
-    }
-
-    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
-        return String(data: try self.jsonData(), encoding: encoding)
-    }
+        dummy: Int? = nil,
+        obj6Var: Var? = nil,
+        obj6Weak: Weak? = nil,
+        obj6Where: Where? = nil,
+        obj6While: While? = nil,
+        obj6WillSet: WillSet? = nil,
+        using: Using? = nil,
+        utf8JSONReader: Utf8JSONReader? = nil,
+        utf8JSONWriter: Utf8JSONWriter? = nil,
+        uuid: UUIDClass? = nil,
+        virtual: Virtual? = nil,
+        void: Void? = nil,
+        volatile: Volatile? = nil,
+        wcharT: WcharT? = nil,
+        with: With? = nil,
+        xor: Xor? = nil,
+        xorEq: XorEq? = nil,
+        yes: Yes? = nil,
+        yield: Yield? = nil
+    ) -> Obj6 {
+        return Obj6(
+            dummy: dummy ?? self.dummy,
+            obj6Var: obj6Var ?? self.obj6Var,
+            obj6Weak: obj6Weak ?? self.obj6Weak,
+            obj6Where: obj6Where ?? self.obj6Where,
+            obj6While: obj6While ?? self.obj6While,
+            obj6WillSet: obj6WillSet ?? self.obj6WillSet,
+            using: using ?? self.using,
+            utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader,
+            utf8JSONWriter: utf8JSONWriter ?? self.utf8JSONWriter,
+            uuid: uuid ?? self.uuid,
+            virtual: virtual ?? self.virtual,
+            void: void ?? self.void,
+            volatile: volatile ?? self.volatile,
+            wcharT: wcharT ?? self.wcharT,
+            with: with ?? self.with,
+            xor: xor ?? self.xor,
+            xorEq: xorEq ?? self.xorEq,
+            yes: yes ?? self.yes,
+            yield: yield ?? self.yield
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
 }
 
-// MARK: - Utf8JSONWriter
-struct Utf8JSONWriter: Codable {
-    let utf8JSONWriter: Int
+// MARK: - Var
+struct Var: Codable {
+    let varVar: Int
 
     enum CodingKeys: String, CodingKey {
-        case utf8JSONWriter = "Utf8JsonWriter"
+        case varVar = "var"
     }
 }
 
-// MARK: Utf8JSONWriter convenience initializers and mutators
+// MARK: Var convenience initializers and mutators
 
-extension Utf8JSONWriter {
+extension Var {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Utf8JSONWriter.self, from: data)
+        self = try newJSONDecoder().decode(Var.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15554,10 +15802,10 @@ extension Utf8JSONWriter {
     }
 
     func with(
-        utf8JSONWriter: Int? = nil
-    ) -> Utf8JSONWriter {
-        return Utf8JSONWriter(
-            utf8JSONWriter: utf8JSONWriter ?? self.utf8JSONWriter
+        varVar: Int? = nil
+    ) -> Var {
+        return Var(
+            varVar: varVar ?? self.varVar
         )
     }
 
@@ -15570,20 +15818,20 @@ extension Utf8JSONWriter {
     }
 }
 
-// MARK: - UUIDClass
-struct UUIDClass: Codable {
-    let uuid: Int
+// MARK: - Weak
+struct Weak: Codable {
+    let weakWeak: Int
 
     enum CodingKeys: String, CodingKey {
-        case uuid = "UUID"
+        case weakWeak = "weak"
     }
 }
 
-// MARK: UUIDClass convenience initializers and mutators
+// MARK: Weak convenience initializers and mutators
 
-extension UUIDClass {
+extension Weak {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(UUIDClass.self, from: data)
+        self = try newJSONDecoder().decode(Weak.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15598,10 +15846,10 @@ extension UUIDClass {
     }
 
     func with(
-        uuid: Int? = nil
-    ) -> UUIDClass {
-        return UUIDClass(
-            uuid: uuid ?? self.uuid
+        weakWeak: Int? = nil
+    ) -> Weak {
+        return Weak(
+            weakWeak: weakWeak ?? self.weakWeak
         )
     }
 
@@ -15614,20 +15862,20 @@ extension UUIDClass {
     }
 }
 
-// MARK: - Virtual
-struct Virtual: Codable {
-    let virtual: Int
+// MARK: - Where
+struct Where: Codable {
+    let whereWhere: Int
 
     enum CodingKeys: String, CodingKey {
-        case virtual = "virtual"
+        case whereWhere = "where"
     }
 }
 
-// MARK: Virtual convenience initializers and mutators
+// MARK: Where convenience initializers and mutators
 
-extension Virtual {
+extension Where {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Virtual.self, from: data)
+        self = try newJSONDecoder().decode(Where.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15642,10 +15890,10 @@ extension Virtual {
     }
 
     func with(
-        virtual: Int? = nil
-    ) -> Virtual {
-        return Virtual(
-            virtual: virtual ?? self.virtual
+        whereWhere: Int? = nil
+    ) -> Where {
+        return Where(
+            whereWhere: whereWhere ?? self.whereWhere
         )
     }
 
@@ -15658,44 +15906,20 @@ extension Virtual {
     }
 }
 
-// MARK: - Obj6
-struct Obj6: Codable {
-    let dummy: Int
-    let obj6Weak: Weak
-    let obj6Where: Where
-    let obj6While: While
-    let obj6WillSet: WillSet
-    let void: Void
-    let volatile: Volatile
-    let wcharT: WcharT
-    let with: With
-    let xor: Xor
-    let xorEq: XorEq
-    let yes: Yes
-    let yield: Yield
+// MARK: - While
+struct While: Codable {
+    let whileWhile: Int
 
     enum CodingKeys: String, CodingKey {
-        case dummy = "dummy"
-        case obj6Weak = "weak"
-        case obj6Where = "where"
-        case obj6While = "while"
-        case obj6WillSet = "willSet"
-        case void = "void"
-        case volatile = "volatile"
-        case wcharT = "wchar_t"
-        case with = "with"
-        case xor = "xor"
-        case xorEq = "xor_eq"
-        case yes = "YES"
-        case yield = "yield"
+        case whileWhile = "while"
     }
 }
 
-// MARK: Obj6 convenience initializers and mutators
+// MARK: While convenience initializers and mutators
 
-extension Obj6 {
+extension While {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Obj6.self, from: data)
+        self = try newJSONDecoder().decode(While.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15710,34 +15934,10 @@ extension Obj6 {
     }
 
     func with(
-        dummy: Int? = nil,
-        obj6Weak: Weak? = nil,
-        obj6Where: Where? = nil,
-        obj6While: While? = nil,
-        obj6WillSet: WillSet? = nil,
-        void: Void? = nil,
-        volatile: Volatile? = nil,
-        wcharT: WcharT? = nil,
-        with: With? = nil,
-        xor: Xor? = nil,
-        xorEq: XorEq? = nil,
-        yes: Yes? = nil,
-        yield: Yield? = nil
-    ) -> Obj6 {
-        return Obj6(
-            dummy: dummy ?? self.dummy,
-            obj6Weak: obj6Weak ?? self.obj6Weak,
-            obj6Where: obj6Where ?? self.obj6Where,
-            obj6While: obj6While ?? self.obj6While,
-            obj6WillSet: obj6WillSet ?? self.obj6WillSet,
-            void: void ?? self.void,
-            volatile: volatile ?? self.volatile,
-            wcharT: wcharT ?? self.wcharT,
-            with: with ?? self.with,
-            xor: xor ?? self.xor,
-            xorEq: xorEq ?? self.xorEq,
-            yes: yes ?? self.yes,
-            yield: yield ?? self.yield
+        whileWhile: Int? = nil
+    ) -> While {
+        return While(
+            whileWhile: whileWhile ?? self.whileWhile
         )
     }
 
@@ -15750,20 +15950,20 @@ extension Obj6 {
     }
 }
 
-// MARK: - Weak
-struct Weak: Codable {
-    let weakWeak: Int
+// MARK: - WillSet
+struct WillSet: Codable {
+    let willSetWillSet: Int
 
     enum CodingKeys: String, CodingKey {
-        case weakWeak = "weak"
+        case willSetWillSet = "willSet"
     }
 }
 
-// MARK: Weak convenience initializers and mutators
+// MARK: WillSet convenience initializers and mutators
 
-extension Weak {
+extension WillSet {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Weak.self, from: data)
+        self = try newJSONDecoder().decode(WillSet.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15778,10 +15978,10 @@ extension Weak {
     }
 
     func with(
-        weakWeak: Int? = nil
-    ) -> Weak {
-        return Weak(
-            weakWeak: weakWeak ?? self.weakWeak
+        willSetWillSet: Int? = nil
+    ) -> WillSet {
+        return WillSet(
+            willSetWillSet: willSetWillSet ?? self.willSetWillSet
         )
     }
 
@@ -15794,20 +15994,20 @@ extension Weak {
     }
 }
 
-// MARK: - Where
-struct Where: Codable {
-    let whereWhere: Int
+// MARK: - Using
+struct Using: Codable {
+    let using: Int
 
     enum CodingKeys: String, CodingKey {
-        case whereWhere = "where"
+        case using = "using"
     }
 }
 
-// MARK: Where convenience initializers and mutators
+// MARK: Using convenience initializers and mutators
 
-extension Where {
+extension Using {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Where.self, from: data)
+        self = try newJSONDecoder().decode(Using.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15822,10 +16022,10 @@ extension Where {
     }
 
     func with(
-        whereWhere: Int? = nil
-    ) -> Where {
-        return Where(
-            whereWhere: whereWhere ?? self.whereWhere
+        using: Int? = nil
+    ) -> Using {
+        return Using(
+            using: using ?? self.using
         )
     }
 
@@ -15838,20 +16038,20 @@ extension Where {
     }
 }
 
-// MARK: - While
-struct While: Codable {
-    let whileWhile: Int
+// MARK: - Utf8JSONReader
+struct Utf8JSONReader: Codable {
+    let utf8JSONReader: Int
 
     enum CodingKeys: String, CodingKey {
-        case whileWhile = "while"
+        case utf8JSONReader = "Utf8JsonReader"
     }
 }
 
-// MARK: While convenience initializers and mutators
+// MARK: Utf8JSONReader convenience initializers and mutators
 
-extension While {
+extension Utf8JSONReader {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(While.self, from: data)
+        self = try newJSONDecoder().decode(Utf8JSONReader.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15866,10 +16066,10 @@ extension While {
     }
 
     func with(
-        whileWhile: Int? = nil
-    ) -> While {
-        return While(
-            whileWhile: whileWhile ?? self.whileWhile
+        utf8JSONReader: Int? = nil
+    ) -> Utf8JSONReader {
+        return Utf8JSONReader(
+            utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader
         )
     }
 
@@ -15882,20 +16082,20 @@ extension While {
     }
 }
 
-// MARK: - WillSet
-struct WillSet: Codable {
-    let willSetWillSet: Int
+// MARK: - Utf8JSONWriter
+struct Utf8JSONWriter: Codable {
+    let utf8JSONWriter: Int
 
     enum CodingKeys: String, CodingKey {
-        case willSetWillSet = "willSet"
+        case utf8JSONWriter = "Utf8JsonWriter"
     }
 }
 
-// MARK: WillSet convenience initializers and mutators
+// MARK: Utf8JSONWriter convenience initializers and mutators
 
-extension WillSet {
+extension Utf8JSONWriter {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(WillSet.self, from: data)
+        self = try newJSONDecoder().decode(Utf8JSONWriter.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15910,10 +16110,98 @@ extension WillSet {
     }
 
     func with(
-        willSetWillSet: Int? = nil
-    ) -> WillSet {
-        return WillSet(
-            willSetWillSet: willSetWillSet ?? self.willSetWillSet
+        utf8JSONWriter: Int? = nil
+    ) -> Utf8JSONWriter {
+        return Utf8JSONWriter(
+            utf8JSONWriter: utf8JSONWriter ?? self.utf8JSONWriter
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+// MARK: - UUIDClass
+struct UUIDClass: Codable {
+    let uuid: Int
+
+    enum CodingKeys: String, CodingKey {
+        case uuid = "UUID"
+    }
+}
+
+// MARK: UUIDClass convenience initializers and mutators
+
+extension UUIDClass {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(UUIDClass.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        uuid: Int? = nil
+    ) -> UUIDClass {
+        return UUIDClass(
+            uuid: uuid ?? self.uuid
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+// MARK: - Virtual
+struct Virtual: Codable {
+    let virtual: Int
+
+    enum CodingKeys: String, CodingKey {
+        case virtual = "virtual"
+    }
+}
+
+// MARK: Virtual convenience initializers and mutators
+
+extension Virtual {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Virtual.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        virtual: Int? = nil
+    ) -> Virtual {
+        return Virtual(
+            virtual: virtual ?? self.virtual
         )
     }
 
diff --git a/base/swift/test/inputs/json/priority/keywords.json/objective-c-support-true__struct-or-class-class--f14372afa3e4/quicktype.swift b/head/swift/test/inputs/json/priority/keywords.json/objective-c-support-true__struct-or-class-class--f14372afa3e4/quicktype.swift
index 808607f..f443a99 100644
--- a/base/swift/test/inputs/json/priority/keywords.json/objective-c-support-true__struct-or-class-class--f14372afa3e4/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/keywords.json/objective-c-support-true__struct-or-class-class--f14372afa3e4/quicktype.swift
@@ -14112,6 +14112,7 @@ extension Select {
 // MARK: - Obj5
 @objcMembers class Obj5: NSObject, Codable {
     let dummy: Int
+    let kSerializer: KSerializer
     let obj5Self: SelfClass
     let obj5Set: Set
     let obj5Static: Static
@@ -14126,10 +14127,13 @@ extension Select {
     let obj5Type: Obj5Type
     let obj5Typealias: Typealias
     let obj5Unowned: Unowned
-    let obj5Var: Var
+    let primitiveKind: PrimitiveKind
     let purpleSelf: Obj5Self
     let purpleTrue: TrueClass
     let sendable: Sendable
+    let serialDescriptor: SerialDescriptor
+    let serialName: SerialName
+    let serializable: Serializable
     let serialize: Serialize
     let serializerProvider: SerializerProvider
     let short: Short
@@ -14170,15 +14174,12 @@ extension Select {
     let union: Union
     let unsafe: Unsafe
     let unsigned: Unsigned
+    let useSerializers: UseSerializers
     let ushort: Ushort
-    let using: Using
-    let utf8JSONReader: Utf8JSONReader
-    let utf8JSONWriter: Utf8JSONWriter
-    let uuid: UUIDClass
-    let virtual: Virtual
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
+        case kSerializer = "KSerializer"
         case obj5Self = "Self"
         case obj5Set = "set"
         case obj5Static = "static"
@@ -14193,10 +14194,13 @@ extension Select {
         case obj5Type = "type"
         case obj5Typealias = "typealias"
         case obj5Unowned = "unowned"
-        case obj5Var = "var"
+        case primitiveKind = "PrimitiveKind"
         case purpleSelf = "self"
         case purpleTrue = "true"
         case sendable = "Sendable"
+        case serialDescriptor = "SerialDescriptor"
+        case serialName = "SerialName"
+        case serializable = "Serializable"
         case serialize = "serialize"
         case serializerProvider = "SerializerProvider"
         case short = "short"
@@ -14237,16 +14241,13 @@ extension Select {
         case union = "union"
         case unsafe = "unsafe"
         case unsigned = "unsigned"
+        case useSerializers = "UseSerializers"
         case ushort = "ushort"
-        case using = "using"
-        case utf8JSONReader = "Utf8JsonReader"
-        case utf8JSONWriter = "Utf8JsonWriter"
-        case uuid = "UUID"
-        case virtual = "virtual"
     }
 
-    init(dummy: Int, obj5Self: SelfClass, obj5Set: Set, obj5Static: Static, obj5Struct: Struct, obj5Subscript: Subscript, obj5Super: Super, obj5Switch: Switch, obj5Throw: Throw, obj5Throws: Throws, obj5True: True, obj5Try: Try, obj5Type: Obj5Type, obj5Typealias: Typealias, obj5Unowned: Unowned, obj5Var: Var, purpleSelf: Obj5Self, purpleTrue: TrueClass, sendable: Sendable, serialize: Serialize, serializerProvider: SerializerProvider, short: Short, signed: Signed, simpleModule: SimpleModule, sizeof: Sizeof, stackalloc: Stackalloc, standards: Standards, staticAssert: StaticAssert, staticCast: StaticCast, stdDeserializer: StdDeserializer, stdSerializer: StdSerializer, strictfp: Strictfp, string: StringClass, symbol: Symbol, synchronized: Synchronized, system: System, template: Template, then: Then, this: This, threadLocal: ThreadLocal, timeOnly: TimeOnly, timeOnlyConverter: TimeOnlyConverter, timeZone: TimeZoneClass, toJSON: ToJSON, toString: ToString, topLevel: TopLevelClass, transient: Transient, type: TypeClass, typedef: Typedef, typeid: Typeid, typename: Typename, typeof: Typeof, uint: Uint, ulong: Ulong, unchecked: Unchecked, undefined: Undefined, union: Union, unsafe: Unsafe, unsigned: Unsigned, ushort: Ushort, using: Using, utf8JSONReader: Utf8JSONReader, utf8JSONWriter: Utf8JSONWriter, uuid: UUIDClass, virtual: Virtual) {
+    init(dummy: Int, kSerializer: KSerializer, obj5Self: SelfClass, obj5Set: Set, obj5Static: Static, obj5Struct: Struct, obj5Subscript: Subscript, obj5Super: Super, obj5Switch: Switch, obj5Throw: Throw, obj5Throws: Throws, obj5True: True, obj5Try: Try, obj5Type: Obj5Type, obj5Typealias: Typealias, obj5Unowned: Unowned, primitiveKind: PrimitiveKind, purpleSelf: Obj5Self, purpleTrue: TrueClass, sendable: Sendable, serialDescriptor: SerialDescriptor, serialName: SerialName, serializable: Serializable, serialize: Serialize, serializerProvider: SerializerProvider, short: Short, signed: Signed, simpleModule: SimpleModule, sizeof: Sizeof, stackalloc: Stackalloc, standards: Standards, staticAssert: StaticAssert, staticCast: StaticCast, stdDeserializer: StdDeserializer, stdSerializer: StdSerializer, strictfp: Strictfp, string: StringClass, symbol: Symbol, synchronized: Synchronized, system: System, template: Template, then: Then, this: This, threadLocal: ThreadLocal, timeOnly: TimeOnly, timeOnlyConverter: TimeOnlyConverter, timeZone: TimeZoneClass, toJSON: ToJSON, toString: ToString, topLevel: TopLevelClass, transient: Transient, type: TypeClass, typedef: Typedef, typeid: Typeid, typename: Typename, typeof: Typeof, uint: Uint, ulong: Ulong, unchecked: Unchecked, undefined: Undefined, union: Union, unsafe: Unsafe, unsigned: Unsigned, useSerializers: UseSerializers, ushort: Ushort) {
         self.dummy = dummy
+        self.kSerializer = kSerializer
         self.obj5Self = obj5Self
         self.obj5Set = obj5Set
         self.obj5Static = obj5Static
@@ -14261,10 +14262,13 @@ extension Select {
         self.obj5Type = obj5Type
         self.obj5Typealias = obj5Typealias
         self.obj5Unowned = obj5Unowned
-        self.obj5Var = obj5Var
+        self.primitiveKind = primitiveKind
         self.purpleSelf = purpleSelf
         self.purpleTrue = purpleTrue
         self.sendable = sendable
+        self.serialDescriptor = serialDescriptor
+        self.serialName = serialName
+        self.serializable = serializable
         self.serialize = serialize
         self.serializerProvider = serializerProvider
         self.short = short
@@ -14305,12 +14309,8 @@ extension Select {
         self.union = union
         self.unsafe = unsafe
         self.unsigned = unsigned
+        self.useSerializers = useSerializers
         self.ushort = ushort
-        self.using = using
-        self.utf8JSONReader = utf8JSONReader
-        self.utf8JSONWriter = utf8JSONWriter
-        self.uuid = uuid
-        self.virtual = virtual
     }
 }
 
@@ -14319,7 +14319,7 @@ extension Select {
 extension Obj5 {
     convenience init(data: Data) throws {
         let me = try newJSONDecoder().decode(Obj5.self, from: data)
-        self.init(dummy: me.dummy, obj5Self: me.obj5Self, obj5Set: me.obj5Set, obj5Static: me.obj5Static, obj5Struct: me.obj5Struct, obj5Subscript: me.obj5Subscript, obj5Super: me.obj5Super, obj5Switch: me.obj5Switch, obj5Throw: me.obj5Throw, obj5Throws: me.obj5Throws, obj5True: me.obj5True, obj5Try: me.obj5Try, obj5Type: me.obj5Type, obj5Typealias: me.obj5Typealias, obj5Unowned: me.obj5Unowned, obj5Var: me.obj5Var, purpleSelf: me.purpleSelf, purpleTrue: me.purpleTrue, sendable: me.sendable, serialize: me.serialize, serializerProvider: me.serializerProvider, short: me.short, signed: me.signed, simpleModule: me.simpleModule, sizeof: me.sizeof, stackalloc: me.stackalloc, standards: me.standards, staticAssert: me.staticAssert, staticCast: me.staticCast, stdDeserializer: me.stdDeserializer, stdSerializer: me.stdSerializer, strictfp: me.strictfp, string: me.string, symbol: me.symbol, synchronized: me.synchronized, system: me.system, template: me.template, then: me.then, this: me.this, threadLocal: me.threadLocal, timeOnly: me.timeOnly, timeOnlyConverter: me.timeOnlyConverter, timeZone: me.timeZone, toJSON: me.toJSON, toString: me.toString, topLevel: me.topLevel, transient: me.transient, type: me.type, typedef: me.typedef, typeid: me.typeid, typename: me.typename, typeof: me.typeof, uint: me.uint, ulong: me.ulong, unchecked: me.unchecked, undefined: me.undefined, union: me.union, unsafe: me.unsafe, unsigned: me.unsigned, ushort: me.ushort, using: me.using, utf8JSONReader: me.utf8JSONReader, utf8JSONWriter: me.utf8JSONWriter, uuid: me.uuid, virtual: me.virtual)
+        self.init(dummy: me.dummy, kSerializer: me.kSerializer, obj5Self: me.obj5Self, obj5Set: me.obj5Set, obj5Static: me.obj5Static, obj5Struct: me.obj5Struct, obj5Subscript: me.obj5Subscript, obj5Super: me.obj5Super, obj5Switch: me.obj5Switch, obj5Throw: me.obj5Throw, obj5Throws: me.obj5Throws, obj5True: me.obj5True, obj5Try: me.obj5Try, obj5Type: me.obj5Type, obj5Typealias: me.obj5Typealias, obj5Unowned: me.obj5Unowned, primitiveKind: me.primitiveKind, purpleSelf: me.purpleSelf, purpleTrue: me.purpleTrue, sendable: me.sendable, serialDescriptor: me.serialDescriptor, serialName: me.serialName, serializable: me.serializable, serialize: me.serialize, serializerProvider: me.serializerProvider, short: me.short, signed: me.signed, simpleModule: me.simpleModule, sizeof: me.sizeof, stackalloc: me.stackalloc, standards: me.standards, staticAssert: me.staticAssert, staticCast: me.staticCast, stdDeserializer: me.stdDeserializer, stdSerializer: me.stdSerializer, strictfp: me.strictfp, string: me.string, symbol: me.symbol, synchronized: me.synchronized, system: me.system, template: me.template, then: me.then, this: me.this, threadLocal: me.threadLocal, timeOnly: me.timeOnly, timeOnlyConverter: me.timeOnlyConverter, timeZone: me.timeZone, toJSON: me.toJSON, toString: me.toString, topLevel: me.topLevel, transient: me.transient, type: me.type, typedef: me.typedef, typeid: me.typeid, typename: me.typename, typeof: me.typeof, uint: me.uint, ulong: me.ulong, unchecked: me.unchecked, undefined: me.undefined, union: me.union, unsafe: me.unsafe, unsigned: me.unsigned, useSerializers: me.useSerializers, ushort: me.ushort)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -14335,6 +14335,7 @@ extension Obj5 {
 
     func with(
         dummy: Int? = nil,
+        kSerializer: KSerializer? = nil,
         obj5Self: SelfClass? = nil,
         obj5Set: Set? = nil,
         obj5Static: Static? = nil,
@@ -14349,10 +14350,13 @@ extension Obj5 {
         obj5Type: Obj5Type? = nil,
         obj5Typealias: Typealias? = nil,
         obj5Unowned: Unowned? = nil,
-        obj5Var: Var? = nil,
+        primitiveKind: PrimitiveKind? = nil,
         purpleSelf: Obj5Self? = nil,
         purpleTrue: TrueClass? = nil,
         sendable: Sendable? = nil,
+        serialDescriptor: SerialDescriptor? = nil,
+        serialName: SerialName? = nil,
+        serializable: Serializable? = nil,
         serialize: Serialize? = nil,
         serializerProvider: SerializerProvider? = nil,
         short: Short? = nil,
@@ -14393,15 +14397,12 @@ extension Obj5 {
         union: Union? = nil,
         unsafe: Unsafe? = nil,
         unsigned: Unsigned? = nil,
-        ushort: Ushort? = nil,
-        using: Using? = nil,
-        utf8JSONReader: Utf8JSONReader? = nil,
-        utf8JSONWriter: Utf8JSONWriter? = nil,
-        uuid: UUIDClass? = nil,
-        virtual: Virtual? = nil
+        useSerializers: UseSerializers? = nil,
+        ushort: Ushort? = nil
     ) -> Obj5 {
         return Obj5(
             dummy: dummy ?? self.dummy,
+            kSerializer: kSerializer ?? self.kSerializer,
             obj5Self: obj5Self ?? self.obj5Self,
             obj5Set: obj5Set ?? self.obj5Set,
             obj5Static: obj5Static ?? self.obj5Static,
@@ -14416,10 +14417,13 @@ extension Obj5 {
             obj5Type: obj5Type ?? self.obj5Type,
             obj5Typealias: obj5Typealias ?? self.obj5Typealias,
             obj5Unowned: obj5Unowned ?? self.obj5Unowned,
-            obj5Var: obj5Var ?? self.obj5Var,
+            primitiveKind: primitiveKind ?? self.primitiveKind,
             purpleSelf: purpleSelf ?? self.purpleSelf,
             purpleTrue: purpleTrue ?? self.purpleTrue,
             sendable: sendable ?? self.sendable,
+            serialDescriptor: serialDescriptor ?? self.serialDescriptor,
+            serialName: serialName ?? self.serialName,
+            serializable: serializable ?? self.serializable,
             serialize: serialize ?? self.serialize,
             serializerProvider: serializerProvider ?? self.serializerProvider,
             short: short ?? self.short,
@@ -14460,12 +14464,57 @@ extension Obj5 {
             union: union ?? self.union,
             unsafe: unsafe ?? self.unsafe,
             unsigned: unsigned ?? self.unsigned,
-            ushort: ushort ?? self.ushort,
-            using: using ?? self.using,
-            utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader,
-            utf8JSONWriter: utf8JSONWriter ?? self.utf8JSONWriter,
-            uuid: uuid ?? self.uuid,
-            virtual: virtual ?? self.virtual
+            useSerializers: useSerializers ?? self.useSerializers,
+            ushort: ushort ?? self.ushort
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+// MARK: - KSerializer
+@objcMembers class KSerializer: NSObject, Codable {
+    let kSerializer: Int
+
+    enum CodingKeys: String, CodingKey {
+        case kSerializer = "KSerializer"
+    }
+
+    init(kSerializer: Int) {
+        self.kSerializer = kSerializer
+    }
+}
+
+// MARK: KSerializer convenience initializers and mutators
+
+extension KSerializer {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(KSerializer.self, from: data)
+        self.init(kSerializer: me.kSerializer)
+    }
+
+    convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    convenience init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        kSerializer: Int? = nil
+    ) -> KSerializer {
+        return KSerializer(
+            kSerializer: kSerializer ?? self.kSerializer
         )
     }
 
@@ -15164,25 +15213,25 @@ extension Unowned {
     }
 }
 
-// MARK: - Var
-@objcMembers class Var: NSObject, Codable {
-    let varVar: Int
+// MARK: - PrimitiveKind
+@objcMembers class PrimitiveKind: NSObject, Codable {
+    let primitiveKind: Int
 
     enum CodingKeys: String, CodingKey {
-        case varVar = "var"
+        case primitiveKind = "PrimitiveKind"
     }
 
-    init(varVar: Int) {
-        self.varVar = varVar
+    init(primitiveKind: Int) {
+        self.primitiveKind = primitiveKind
     }
 }
 
-// MARK: Var convenience initializers and mutators
+// MARK: PrimitiveKind convenience initializers and mutators
 
-extension Var {
+extension PrimitiveKind {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Var.self, from: data)
-        self.init(varVar: me.varVar)
+        let me = try newJSONDecoder().decode(PrimitiveKind.self, from: data)
+        self.init(primitiveKind: me.primitiveKind)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15197,10 +15246,10 @@ extension Var {
     }
 
     func with(
-        varVar: Int? = nil
-    ) -> Var {
-        return Var(
-            varVar: varVar ?? self.varVar
+        primitiveKind: Int? = nil
+    ) -> PrimitiveKind {
+        return PrimitiveKind(
+            primitiveKind: primitiveKind ?? self.primitiveKind
         )
     }
 
@@ -15360,6 +15409,153 @@ extension Sendable {
     }
 }
 
+// MARK: - SerialDescriptor
+@objcMembers class SerialDescriptor: NSObject, Codable {
+    let serialDescriptor: Int
+
+    enum CodingKeys: String, CodingKey {
+        case serialDescriptor = "SerialDescriptor"
+    }
+
+    init(serialDescriptor: Int) {
+        self.serialDescriptor = serialDescriptor
+    }
+}
+
+// MARK: SerialDescriptor convenience initializers and mutators
+
+extension SerialDescriptor {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(SerialDescriptor.self, from: data)
+        self.init(serialDescriptor: me.serialDescriptor)
+    }
+
+    convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    convenience init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        serialDescriptor: Int? = nil
+    ) -> SerialDescriptor {
+        return SerialDescriptor(
+            serialDescriptor: serialDescriptor ?? self.serialDescriptor
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+// MARK: - SerialName
+@objcMembers class SerialName: NSObject, Codable {
+    let serialName: Int
+
+    enum CodingKeys: String, CodingKey {
+        case serialName = "SerialName"
+    }
+
+    init(serialName: Int) {
+        self.serialName = serialName
+    }
+}
+
+// MARK: SerialName convenience initializers and mutators
+
+extension SerialName {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(SerialName.self, from: data)
+        self.init(serialName: me.serialName)
+    }
+
+    convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    convenience init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        serialName: Int? = nil
+    ) -> SerialName {
+        return SerialName(
+            serialName: serialName ?? self.serialName
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+// MARK: - Serializable
+@objcMembers class Serializable: NSObject, Codable {
+    let serializable: Int
+
+    enum CodingKeys: String, CodingKey {
+        case serializable = "Serializable"
+    }
+
+    init(serializable: Int) {
+        self.serializable = serializable
+    }
+}
+
+// MARK: Serializable convenience initializers and mutators
+
+extension Serializable {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(Serializable.self, from: data)
+        self.init(serializable: me.serializable)
+    }
+
+    convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    convenience init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        serializable: Int? = nil
+    ) -> Serializable {
+        return Serializable(
+            serializable: serializable ?? self.serializable
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
 // MARK: - Serialize
 @objcMembers class Serialize: NSObject, Codable {
     let serialize: Int
@@ -17320,25 +17516,25 @@ extension Unsigned {
     }
 }
 
-// MARK: - Ushort
-@objcMembers class Ushort: NSObject, Codable {
-    let ushort: Int
+// MARK: - UseSerializers
+@objcMembers class UseSerializers: NSObject, Codable {
+    let useSerializers: Int
 
     enum CodingKeys: String, CodingKey {
-        case ushort = "ushort"
+        case useSerializers = "UseSerializers"
     }
 
-    init(ushort: Int) {
-        self.ushort = ushort
+    init(useSerializers: Int) {
+        self.useSerializers = useSerializers
     }
 }
 
-// MARK: Ushort convenience initializers and mutators
+// MARK: UseSerializers convenience initializers and mutators
 
-extension Ushort {
+extension UseSerializers {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Ushort.self, from: data)
-        self.init(ushort: me.ushort)
+        let me = try newJSONDecoder().decode(UseSerializers.self, from: data)
+        self.init(useSerializers: me.useSerializers)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17353,10 +17549,10 @@ extension Ushort {
     }
 
     func with(
-        ushort: Int? = nil
-    ) -> Ushort {
-        return Ushort(
-            ushort: ushort ?? self.ushort
+        useSerializers: Int? = nil
+    ) -> UseSerializers {
+        return UseSerializers(
+            useSerializers: useSerializers ?? self.useSerializers
         )
     }
 
@@ -17369,25 +17565,25 @@ extension Ushort {
     }
 }
 
-// MARK: - Using
-@objcMembers class Using: NSObject, Codable {
-    let using: Int
+// MARK: - Ushort
+@objcMembers class Ushort: NSObject, Codable {
+    let ushort: Int
 
     enum CodingKeys: String, CodingKey {
-        case using = "using"
+        case ushort = "ushort"
     }
 
-    init(using: Int) {
-        self.using = using
+    init(ushort: Int) {
+        self.ushort = ushort
     }
 }
 
-// MARK: Using convenience initializers and mutators
+// MARK: Ushort convenience initializers and mutators
 
-extension Using {
+extension Ushort {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Using.self, from: data)
-        self.init(using: me.using)
+        let me = try newJSONDecoder().decode(Ushort.self, from: data)
+        self.init(ushort: me.ushort)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17402,10 +17598,10 @@ extension Using {
     }
 
     func with(
-        using: Int? = nil
-    ) -> Using {
-        return Using(
-            using: using ?? self.using
+        ushort: Int? = nil
+    ) -> Ushort {
+        return Ushort(
+            ushort: ushort ?? self.ushort
         )
     }
 
@@ -17418,25 +17614,79 @@ extension Using {
     }
 }
 
-// MARK: - Utf8JSONReader
-@objcMembers class Utf8JSONReader: NSObject, Codable {
-    let utf8JSONReader: Int
+// MARK: - Obj6
+@objcMembers class Obj6: NSObject, Codable {
+    let dummy: Int
+    let obj6Var: Var
+    let obj6Weak: Weak
+    let obj6Where: Where
+    let obj6While: While
+    let obj6WillSet: WillSet
+    let using: Using
+    let utf8JSONReader: Utf8JSONReader
+    let utf8JSONWriter: Utf8JSONWriter
+    let uuid: UUIDClass
+    let virtual: Virtual
+    let void: Void
+    let volatile: Volatile
+    let wcharT: WcharT
+    let with: With
+    let xor: Xor
+    let xorEq: XorEq
+    let yes: Yes
+    let yield: Yield
 
     enum CodingKeys: String, CodingKey {
+        case dummy = "dummy"
+        case obj6Var = "var"
+        case obj6Weak = "weak"
+        case obj6Where = "where"
+        case obj6While = "while"
+        case obj6WillSet = "willSet"
+        case using = "using"
         case utf8JSONReader = "Utf8JsonReader"
-    }
-
-    init(utf8JSONReader: Int) {
-        self.utf8JSONReader = utf8JSONReader
-    }
-}
+        case utf8JSONWriter = "Utf8JsonWriter"
+        case uuid = "UUID"
+        case virtual = "virtual"
+        case void = "void"
+        case volatile = "volatile"
+        case wcharT = "wchar_t"
+        case with = "with"
+        case xor = "xor"
+        case xorEq = "xor_eq"
+        case yes = "YES"
+        case yield = "yield"
+    }
 
-// MARK: Utf8JSONReader convenience initializers and mutators
+    init(dummy: Int, obj6Var: Var, obj6Weak: Weak, obj6Where: Where, obj6While: While, obj6WillSet: WillSet, using: Using, utf8JSONReader: Utf8JSONReader, utf8JSONWriter: Utf8JSONWriter, uuid: UUIDClass, virtual: Virtual, void: Void, volatile: Volatile, wcharT: WcharT, with: With, xor: Xor, xorEq: XorEq, yes: Yes, yield: Yield) {
+        self.dummy = dummy
+        self.obj6Var = obj6Var
+        self.obj6Weak = obj6Weak
+        self.obj6Where = obj6Where
+        self.obj6While = obj6While
+        self.obj6WillSet = obj6WillSet
+        self.using = using
+        self.utf8JSONReader = utf8JSONReader
+        self.utf8JSONWriter = utf8JSONWriter
+        self.uuid = uuid
+        self.virtual = virtual
+        self.void = void
+        self.volatile = volatile
+        self.wcharT = wcharT
+        self.with = with
+        self.xor = xor
+        self.xorEq = xorEq
+        self.yes = yes
+        self.yield = yield
+    }
+}
 
-extension Utf8JSONReader {
+// MARK: Obj6 convenience initializers and mutators
+
+extension Obj6 {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Utf8JSONReader.self, from: data)
-        self.init(utf8JSONReader: me.utf8JSONReader)
+        let me = try newJSONDecoder().decode(Obj6.self, from: data)
+        self.init(dummy: me.dummy, obj6Var: me.obj6Var, obj6Weak: me.obj6Weak, obj6Where: me.obj6Where, obj6While: me.obj6While, obj6WillSet: me.obj6WillSet, using: me.using, utf8JSONReader: me.utf8JSONReader, utf8JSONWriter: me.utf8JSONWriter, uuid: me.uuid, virtual: me.virtual, void: me.void, volatile: me.volatile, wcharT: me.wcharT, with: me.with, xor: me.xor, xorEq: me.xorEq, yes: me.yes, yield: me.yield)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17451,10 +17701,46 @@ extension Utf8JSONReader {
     }
 
     func with(
-        utf8JSONReader: Int? = nil
-    ) -> Utf8JSONReader {
-        return Utf8JSONReader(
-            utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader
+        dummy: Int? = nil,
+        obj6Var: Var? = nil,
+        obj6Weak: Weak? = nil,
+        obj6Where: Where? = nil,
+        obj6While: While? = nil,
+        obj6WillSet: WillSet? = nil,
+        using: Using? = nil,
+        utf8JSONReader: Utf8JSONReader? = nil,
+        utf8JSONWriter: Utf8JSONWriter? = nil,
+        uuid: UUIDClass? = nil,
+        virtual: Virtual? = nil,
+        void: Void? = nil,
+        volatile: Volatile? = nil,
+        wcharT: WcharT? = nil,
+        with: With? = nil,
+        xor: Xor? = nil,
+        xorEq: XorEq? = nil,
+        yes: Yes? = nil,
+        yield: Yield? = nil
+    ) -> Obj6 {
+        return Obj6(
+            dummy: dummy ?? self.dummy,
+            obj6Var: obj6Var ?? self.obj6Var,
+            obj6Weak: obj6Weak ?? self.obj6Weak,
+            obj6Where: obj6Where ?? self.obj6Where,
+            obj6While: obj6While ?? self.obj6While,
+            obj6WillSet: obj6WillSet ?? self.obj6WillSet,
+            using: using ?? self.using,
+            utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader,
+            utf8JSONWriter: utf8JSONWriter ?? self.utf8JSONWriter,
+            uuid: uuid ?? self.uuid,
+            virtual: virtual ?? self.virtual,
+            void: void ?? self.void,
+            volatile: volatile ?? self.volatile,
+            wcharT: wcharT ?? self.wcharT,
+            with: with ?? self.with,
+            xor: xor ?? self.xor,
+            xorEq: xorEq ?? self.xorEq,
+            yes: yes ?? self.yes,
+            yield: yield ?? self.yield
         )
     }
 
@@ -17467,25 +17753,25 @@ extension Utf8JSONReader {
     }
 }
 
-// MARK: - Utf8JSONWriter
-@objcMembers class Utf8JSONWriter: NSObject, Codable {
-    let utf8JSONWriter: Int
+// MARK: - Var
+@objcMembers class Var: NSObject, Codable {
+    let varVar: Int
 
     enum CodingKeys: String, CodingKey {
-        case utf8JSONWriter = "Utf8JsonWriter"
+        case varVar = "var"
     }
 
-    init(utf8JSONWriter: Int) {
-        self.utf8JSONWriter = utf8JSONWriter
+    init(varVar: Int) {
+        self.varVar = varVar
     }
 }
 
-// MARK: Utf8JSONWriter convenience initializers and mutators
+// MARK: Var convenience initializers and mutators
 
-extension Utf8JSONWriter {
+extension Var {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Utf8JSONWriter.self, from: data)
-        self.init(utf8JSONWriter: me.utf8JSONWriter)
+        let me = try newJSONDecoder().decode(Var.self, from: data)
+        self.init(varVar: me.varVar)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17500,10 +17786,10 @@ extension Utf8JSONWriter {
     }
 
     func with(
-        utf8JSONWriter: Int? = nil
-    ) -> Utf8JSONWriter {
-        return Utf8JSONWriter(
-            utf8JSONWriter: utf8JSONWriter ?? self.utf8JSONWriter
+        varVar: Int? = nil
+    ) -> Var {
+        return Var(
+            varVar: varVar ?? self.varVar
         )
     }
 
@@ -17516,25 +17802,25 @@ extension Utf8JSONWriter {
     }
 }
 
-// MARK: - UUIDClass
-@objcMembers class UUIDClass: NSObject, Codable {
-    let uuid: Int
+// MARK: - Weak
+@objcMembers class Weak: NSObject, Codable {
+    let weakWeak: Int
 
     enum CodingKeys: String, CodingKey {
-        case uuid = "UUID"
+        case weakWeak = "weak"
     }
 
-    init(uuid: Int) {
-        self.uuid = uuid
+    init(weakWeak: Int) {
+        self.weakWeak = weakWeak
     }
 }
 
-// MARK: UUIDClass convenience initializers and mutators
+// MARK: Weak convenience initializers and mutators
 
-extension UUIDClass {
+extension Weak {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(UUIDClass.self, from: data)
-        self.init(uuid: me.uuid)
+        let me = try newJSONDecoder().decode(Weak.self, from: data)
+        self.init(weakWeak: me.weakWeak)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17549,10 +17835,10 @@ extension UUIDClass {
     }
 
     func with(
-        uuid: Int? = nil
-    ) -> UUIDClass {
-        return UUIDClass(
-            uuid: uuid ?? self.uuid
+        weakWeak: Int? = nil
+    ) -> Weak {
+        return Weak(
+            weakWeak: weakWeak ?? self.weakWeak
         )
     }
 
@@ -17565,25 +17851,25 @@ extension UUIDClass {
     }
 }
 
-// MARK: - Virtual
-@objcMembers class Virtual: NSObject, Codable {
-    let virtual: Int
+// MARK: - Where
+@objcMembers class Where: NSObject, Codable {
+    let whereWhere: Int
 
     enum CodingKeys: String, CodingKey {
-        case virtual = "virtual"
+        case whereWhere = "where"
     }
 
-    init(virtual: Int) {
-        self.virtual = virtual
+    init(whereWhere: Int) {
+        self.whereWhere = whereWhere
     }
 }
 
-// MARK: Virtual convenience initializers and mutators
+// MARK: Where convenience initializers and mutators
 
-extension Virtual {
+extension Where {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Virtual.self, from: data)
-        self.init(virtual: me.virtual)
+        let me = try newJSONDecoder().decode(Where.self, from: data)
+        self.init(whereWhere: me.whereWhere)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17598,10 +17884,10 @@ extension Virtual {
     }
 
     func with(
-        virtual: Int? = nil
-    ) -> Virtual {
-        return Virtual(
-            virtual: virtual ?? self.virtual
+        whereWhere: Int? = nil
+    ) -> Where {
+        return Where(
+            whereWhere: whereWhere ?? self.whereWhere
         )
     }
 
@@ -17614,61 +17900,25 @@ extension Virtual {
     }
 }
 
-// MARK: - Obj6
-@objcMembers class Obj6: NSObject, Codable {
-    let dummy: Int
-    let obj6Weak: Weak
-    let obj6Where: Where
-    let obj6While: While
-    let obj6WillSet: WillSet
-    let void: Void
-    let volatile: Volatile
-    let wcharT: WcharT
-    let with: With
-    let xor: Xor
-    let xorEq: XorEq
-    let yes: Yes
-    let yield: Yield
+// MARK: - While
+@objcMembers class While: NSObject, Codable {
+    let whileWhile: Int
 
     enum CodingKeys: String, CodingKey {
-        case dummy = "dummy"
-        case obj6Weak = "weak"
-        case obj6Where = "where"
-        case obj6While = "while"
-        case obj6WillSet = "willSet"
-        case void = "void"
-        case volatile = "volatile"
-        case wcharT = "wchar_t"
-        case with = "with"
-        case xor = "xor"
-        case xorEq = "xor_eq"
-        case yes = "YES"
-        case yield = "yield"
+        case whileWhile = "while"
     }
 
-    init(dummy: Int, obj6Weak: Weak, obj6Where: Where, obj6While: While, obj6WillSet: WillSet, void: Void, volatile: Volatile, wcharT: WcharT, with: With, xor: Xor, xorEq: XorEq, yes: Yes, yield: Yield) {
-        self.dummy = dummy
-        self.obj6Weak = obj6Weak
-        self.obj6Where = obj6Where
-        self.obj6While = obj6While
-        self.obj6WillSet = obj6WillSet
-        self.void = void
-        self.volatile = volatile
-        self.wcharT = wcharT
-        self.with = with
-        self.xor = xor
-        self.xorEq = xorEq
-        self.yes = yes
-        self.yield = yield
+    init(whileWhile: Int) {
+        self.whileWhile = whileWhile
     }
 }
 
-// MARK: Obj6 convenience initializers and mutators
+// MARK: While convenience initializers and mutators
 
-extension Obj6 {
+extension While {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Obj6.self, from: data)
-        self.init(dummy: me.dummy, obj6Weak: me.obj6Weak, obj6Where: me.obj6Where, obj6While: me.obj6While, obj6WillSet: me.obj6WillSet, void: me.void, volatile: me.volatile, wcharT: me.wcharT, with: me.with, xor: me.xor, xorEq: me.xorEq, yes: me.yes, yield: me.yield)
+        let me = try newJSONDecoder().decode(While.self, from: data)
+        self.init(whileWhile: me.whileWhile)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17683,34 +17933,10 @@ extension Obj6 {
     }
 
     func with(
-        dummy: Int? = nil,
-        obj6Weak: Weak? = nil,
-        obj6Where: Where? = nil,
-        obj6While: While? = nil,
-        obj6WillSet: WillSet? = nil,
-        void: Void? = nil,
-        volatile: Volatile? = nil,
-        wcharT: WcharT? = nil,
-        with: With? = nil,
-        xor: Xor? = nil,
-        xorEq: XorEq? = nil,
-        yes: Yes? = nil,
-        yield: Yield? = nil
-    ) -> Obj6 {
-        return Obj6(
-            dummy: dummy ?? self.dummy,
-            obj6Weak: obj6Weak ?? self.obj6Weak,
-            obj6Where: obj6Where ?? self.obj6Where,
-            obj6While: obj6While ?? self.obj6While,
-            obj6WillSet: obj6WillSet ?? self.obj6WillSet,
-            void: void ?? self.void,
-            volatile: volatile ?? self.volatile,
-            wcharT: wcharT ?? self.wcharT,
-            with: with ?? self.with,
-            xor: xor ?? self.xor,
-            xorEq: xorEq ?? self.xorEq,
-            yes: yes ?? self.yes,
-            yield: yield ?? self.yield
+        whileWhile: Int? = nil
+    ) -> While {
+        return While(
+            whileWhile: whileWhile ?? self.whileWhile
         )
     }
 
@@ -17723,25 +17949,25 @@ extension Obj6 {
     }
 }
 
-// MARK: - Weak
-@objcMembers class Weak: NSObject, Codable {
-    let weakWeak: Int
+// MARK: - WillSet
+@objcMembers class WillSet: NSObject, Codable {
+    let willSetWillSet: Int
 
     enum CodingKeys: String, CodingKey {
-        case weakWeak = "weak"
+        case willSetWillSet = "willSet"
     }
 
-    init(weakWeak: Int) {
-        self.weakWeak = weakWeak
+    init(willSetWillSet: Int) {
+        self.willSetWillSet = willSetWillSet
     }
 }
 
-// MARK: Weak convenience initializers and mutators
+// MARK: WillSet convenience initializers and mutators
 
-extension Weak {
+extension WillSet {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Weak.self, from: data)
-        self.init(weakWeak: me.weakWeak)
+        let me = try newJSONDecoder().decode(WillSet.self, from: data)
+        self.init(willSetWillSet: me.willSetWillSet)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17756,10 +17982,10 @@ extension Weak {
     }
 
     func with(
-        weakWeak: Int? = nil
-    ) -> Weak {
-        return Weak(
-            weakWeak: weakWeak ?? self.weakWeak
+        willSetWillSet: Int? = nil
+    ) -> WillSet {
+        return WillSet(
+            willSetWillSet: willSetWillSet ?? self.willSetWillSet
         )
     }
 
@@ -17772,25 +17998,25 @@ extension Weak {
     }
 }
 
-// MARK: - Where
-@objcMembers class Where: NSObject, Codable {
-    let whereWhere: Int
+// MARK: - Using
+@objcMembers class Using: NSObject, Codable {
+    let using: Int
 
     enum CodingKeys: String, CodingKey {
-        case whereWhere = "where"
+        case using = "using"
     }
 
-    init(whereWhere: Int) {
-        self.whereWhere = whereWhere
+    init(using: Int) {
+        self.using = using
     }
 }
 
-// MARK: Where convenience initializers and mutators
+// MARK: Using convenience initializers and mutators
 
-extension Where {
+extension Using {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Where.self, from: data)
-        self.init(whereWhere: me.whereWhere)
+        let me = try newJSONDecoder().decode(Using.self, from: data)
+        self.init(using: me.using)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17805,10 +18031,10 @@ extension Where {
     }
 
     func with(
-        whereWhere: Int? = nil
-    ) -> Where {
-        return Where(
-            whereWhere: whereWhere ?? self.whereWhere
+        using: Int? = nil
+    ) -> Using {
+        return Using(
+            using: using ?? self.using
         )
     }
 
@@ -17821,25 +18047,25 @@ extension Where {
     }
 }
 
-// MARK: - While
-@objcMembers class While: NSObject, Codable {
-    let whileWhile: Int
+// MARK: - Utf8JSONReader
+@objcMembers class Utf8JSONReader: NSObject, Codable {
+    let utf8JSONReader: Int
 
     enum CodingKeys: String, CodingKey {
-        case whileWhile = "while"
+        case utf8JSONReader = "Utf8JsonReader"
     }
 
-    init(whileWhile: Int) {
-        self.whileWhile = whileWhile
+    init(utf8JSONReader: Int) {
+        self.utf8JSONReader = utf8JSONReader
     }
 }
 
-// MARK: While convenience initializers and mutators
+// MARK: Utf8JSONReader convenience initializers and mutators
 
-extension While {
+extension Utf8JSONReader {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(While.self, from: data)
-        self.init(whileWhile: me.whileWhile)
+        let me = try newJSONDecoder().decode(Utf8JSONReader.self, from: data)
+        self.init(utf8JSONReader: me.utf8JSONReader)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17854,10 +18080,10 @@ extension While {
     }
 
     func with(
-        whileWhile: Int? = nil
-    ) -> While {
-        return While(
-            whileWhile: whileWhile ?? self.whileWhile
+        utf8JSONReader: Int? = nil
+    ) -> Utf8JSONReader {
+        return Utf8JSONReader(
+            utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader
         )
     }
 
@@ -17870,25 +18096,25 @@ extension While {
     }
 }
 
-// MARK: - WillSet
-@objcMembers class WillSet: NSObject, Codable {
-    let willSetWillSet: Int
+// MARK: - Utf8JSONWriter
+@objcMembers class Utf8JSONWriter: NSObject, Codable {
+    let utf8JSONWriter: Int
 
     enum CodingKeys: String, CodingKey {
-        case willSetWillSet = "willSet"
+        case utf8JSONWriter = "Utf8JsonWriter"
     }
 
-    init(willSetWillSet: Int) {
-        self.willSetWillSet = willSetWillSet
+    init(utf8JSONWriter: Int) {
+        self.utf8JSONWriter = utf8JSONWriter
     }
 }
 
-// MARK: WillSet convenience initializers and mutators
+// MARK: Utf8JSONWriter convenience initializers and mutators
 
-extension WillSet {
+extension Utf8JSONWriter {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(WillSet.self, from: data)
-        self.init(willSetWillSet: me.willSetWillSet)
+        let me = try newJSONDecoder().decode(Utf8JSONWriter.self, from: data)
+        self.init(utf8JSONWriter: me.utf8JSONWriter)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17903,10 +18129,108 @@ extension WillSet {
     }
 
     func with(
-        willSetWillSet: Int? = nil
-    ) -> WillSet {
-        return WillSet(
-            willSetWillSet: willSetWillSet ?? self.willSetWillSet
+        utf8JSONWriter: Int? = nil
+    ) -> Utf8JSONWriter {
+        return Utf8JSONWriter(
+            utf8JSONWriter: utf8JSONWriter ?? self.utf8JSONWriter
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+// MARK: - UUIDClass
+@objcMembers class UUIDClass: NSObject, Codable {
+    let uuid: Int
+
+    enum CodingKeys: String, CodingKey {
+        case uuid = "UUID"
+    }
+
+    init(uuid: Int) {
+        self.uuid = uuid
+    }
+}
+
+// MARK: UUIDClass convenience initializers and mutators
+
+extension UUIDClass {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(UUIDClass.self, from: data)
+        self.init(uuid: me.uuid)
+    }
+
+    convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    convenience init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        uuid: Int? = nil
+    ) -> UUIDClass {
+        return UUIDClass(
+            uuid: uuid ?? self.uuid
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+// MARK: - Virtual
+@objcMembers class Virtual: NSObject, Codable {
+    let virtual: Int
+
+    enum CodingKeys: String, CodingKey {
+        case virtual = "virtual"
+    }
+
+    init(virtual: Int) {
+        self.virtual = virtual
+    }
+}
+
+// MARK: Virtual convenience initializers and mutators
+
+extension Virtual {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(Virtual.self, from: data)
+        self.init(virtual: me.virtual)
+    }
+
+    convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    convenience init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        virtual: Int? = nil
+    ) -> Virtual {
+        return Virtual(
+            virtual: virtual ?? self.virtual
         )
     }
 
diff --git a/base/swift/test/inputs/json/priority/keywords.json/protocol-equatable--bd9068f466c1/quicktype.swift b/head/swift/test/inputs/json/priority/keywords.json/protocol-equatable--bd9068f466c1/quicktype.swift
index c8060f4..c98348b 100644
--- a/base/swift/test/inputs/json/priority/keywords.json/protocol-equatable--bd9068f466c1/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/keywords.json/protocol-equatable--bd9068f466c1/quicktype.swift
@@ -14117,6 +14117,7 @@ extension Select {
 // MARK: - Obj5
 struct Obj5: Codable, Equatable {
     let dummy: Int
+    let kSerializer: KSerializer
     let obj5Self: SelfClass
     let obj5Set: Set
     let obj5Static: Static
@@ -14131,10 +14132,13 @@ struct Obj5: Codable, Equatable {
     let obj5Type: Obj5Type
     let obj5Typealias: Typealias
     let obj5Unowned: Unowned
-    let obj5Var: Var
+    let primitiveKind: PrimitiveKind
     let purpleSelf: Obj5Self
     let purpleTrue: TrueClass
     let sendable: Sendable
+    let serialDescriptor: SerialDescriptor
+    let serialName: SerialName
+    let serializable: Serializable
     let serialize: Serialize
     let serializerProvider: SerializerProvider
     let short: Short
@@ -14175,15 +14179,12 @@ struct Obj5: Codable, Equatable {
     let union: Union
     let unsafe: Unsafe
     let unsigned: Unsigned
+    let useSerializers: UseSerializers
     let ushort: Ushort
-    let using: Using
-    let utf8JSONReader: Utf8JSONReader
-    let utf8JSONWriter: Utf8JSONWriter
-    let uuid: UUIDClass
-    let virtual: Virtual
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
+        case kSerializer = "KSerializer"
         case obj5Self = "Self"
         case obj5Set = "set"
         case obj5Static = "static"
@@ -14198,10 +14199,13 @@ struct Obj5: Codable, Equatable {
         case obj5Type = "type"
         case obj5Typealias = "typealias"
         case obj5Unowned = "unowned"
-        case obj5Var = "var"
+        case primitiveKind = "PrimitiveKind"
         case purpleSelf = "self"
         case purpleTrue = "true"
         case sendable = "Sendable"
+        case serialDescriptor = "SerialDescriptor"
+        case serialName = "SerialName"
+        case serializable = "Serializable"
         case serialize = "serialize"
         case serializerProvider = "SerializerProvider"
         case short = "short"
@@ -14242,12 +14246,8 @@ struct Obj5: Codable, Equatable {
         case union = "union"
         case unsafe = "unsafe"
         case unsigned = "unsigned"
+        case useSerializers = "UseSerializers"
         case ushort = "ushort"
-        case using = "using"
-        case utf8JSONReader = "Utf8JsonReader"
-        case utf8JSONWriter = "Utf8JsonWriter"
-        case uuid = "UUID"
-        case virtual = "virtual"
     }
 }
 
@@ -14271,6 +14271,7 @@ extension Obj5 {
 
     func with(
         dummy: Int? = nil,
+        kSerializer: KSerializer? = nil,
         obj5Self: SelfClass? = nil,
         obj5Set: Set? = nil,
         obj5Static: Static? = nil,
@@ -14285,10 +14286,13 @@ extension Obj5 {
         obj5Type: Obj5Type? = nil,
         obj5Typealias: Typealias? = nil,
         obj5Unowned: Unowned? = nil,
-        obj5Var: Var? = nil,
+        primitiveKind: PrimitiveKind? = nil,
         purpleSelf: Obj5Self? = nil,
         purpleTrue: TrueClass? = nil,
         sendable: Sendable? = nil,
+        serialDescriptor: SerialDescriptor? = nil,
+        serialName: SerialName? = nil,
+        serializable: Serializable? = nil,
         serialize: Serialize? = nil,
         serializerProvider: SerializerProvider? = nil,
         short: Short? = nil,
@@ -14329,15 +14333,12 @@ extension Obj5 {
         union: Union? = nil,
         unsafe: Unsafe? = nil,
         unsigned: Unsigned? = nil,
-        ushort: Ushort? = nil,
-        using: Using? = nil,
-        utf8JSONReader: Utf8JSONReader? = nil,
-        utf8JSONWriter: Utf8JSONWriter? = nil,
-        uuid: UUIDClass? = nil,
-        virtual: Virtual? = nil
+        useSerializers: UseSerializers? = nil,
+        ushort: Ushort? = nil
     ) -> Obj5 {
         return Obj5(
             dummy: dummy ?? self.dummy,
+            kSerializer: kSerializer ?? self.kSerializer,
             obj5Self: obj5Self ?? self.obj5Self,
             obj5Set: obj5Set ?? self.obj5Set,
             obj5Static: obj5Static ?? self.obj5Static,
@@ -14352,10 +14353,13 @@ extension Obj5 {
             obj5Type: obj5Type ?? self.obj5Type,
             obj5Typealias: obj5Typealias ?? self.obj5Typealias,
             obj5Unowned: obj5Unowned ?? self.obj5Unowned,
-            obj5Var: obj5Var ?? self.obj5Var,
+            primitiveKind: primitiveKind ?? self.primitiveKind,
             purpleSelf: purpleSelf ?? self.purpleSelf,
             purpleTrue: purpleTrue ?? self.purpleTrue,
             sendable: sendable ?? self.sendable,
+            serialDescriptor: serialDescriptor ?? self.serialDescriptor,
+            serialName: serialName ?? self.serialName,
+            serializable: serializable ?? self.serializable,
             serialize: serialize ?? self.serialize,
             serializerProvider: serializerProvider ?? self.serializerProvider,
             short: short ?? self.short,
@@ -14396,12 +14400,58 @@ extension Obj5 {
             union: union ?? self.union,
             unsafe: unsafe ?? self.unsafe,
             unsigned: unsigned ?? self.unsigned,
-            ushort: ushort ?? self.ushort,
-            using: using ?? self.using,
-            utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader,
-            utf8JSONWriter: utf8JSONWriter ?? self.utf8JSONWriter,
-            uuid: uuid ?? self.uuid,
-            virtual: virtual ?? self.virtual
+            useSerializers: useSerializers ?? self.useSerializers,
+            ushort: ushort ?? self.ushort
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+//
+// Hashable or Equatable:
+// The compiler will not be able to synthesize the implementation of Hashable or Equatable
+// for types that require the use of JSONAny, nor will the implementation of Hashable be
+// synthesized for types that have collections (such as arrays or dictionaries).
+
+// MARK: - KSerializer
+struct KSerializer: Codable, Equatable {
+    let kSerializer: Int
+
+    enum CodingKeys: String, CodingKey {
+        case kSerializer = "KSerializer"
+    }
+}
+
+// MARK: KSerializer convenience initializers and mutators
+
+extension KSerializer {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(KSerializer.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        kSerializer: Int? = nil
+    ) -> KSerializer {
+        return KSerializer(
+            kSerializer: kSerializer ?? self.kSerializer
         )
     }
 
@@ -15120,20 +15170,20 @@ extension Unowned {
 // for types that require the use of JSONAny, nor will the implementation of Hashable be
 // synthesized for types that have collections (such as arrays or dictionaries).
 
-// MARK: - Var
-struct Var: Codable, Equatable {
-    let varVar: Int
+// MARK: - PrimitiveKind
+struct PrimitiveKind: Codable, Equatable {
+    let primitiveKind: Int
 
     enum CodingKeys: String, CodingKey {
-        case varVar = "var"
+        case primitiveKind = "PrimitiveKind"
     }
 }
 
-// MARK: Var convenience initializers and mutators
+// MARK: PrimitiveKind convenience initializers and mutators
 
-extension Var {
+extension PrimitiveKind {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Var.self, from: data)
+        self = try newJSONDecoder().decode(PrimitiveKind.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15148,10 +15198,10 @@ extension Var {
     }
 
     func with(
-        varVar: Int? = nil
-    ) -> Var {
-        return Var(
-            varVar: varVar ?? self.varVar
+        primitiveKind: Int? = nil
+    ) -> PrimitiveKind {
+        return PrimitiveKind(
+            primitiveKind: primitiveKind ?? self.primitiveKind
         )
     }
 
@@ -15320,6 +15370,156 @@ extension Sendable {
 // for types that require the use of JSONAny, nor will the implementation of Hashable be
 // synthesized for types that have collections (such as arrays or dictionaries).
 
+// MARK: - SerialDescriptor
+struct SerialDescriptor: Codable, Equatable {
+    let serialDescriptor: Int
+
+    enum CodingKeys: String, CodingKey {
+        case serialDescriptor = "SerialDescriptor"
+    }
+}
+
+// MARK: SerialDescriptor convenience initializers and mutators
+
+extension SerialDescriptor {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(SerialDescriptor.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        serialDescriptor: Int? = nil
+    ) -> SerialDescriptor {
+        return SerialDescriptor(
+            serialDescriptor: serialDescriptor ?? self.serialDescriptor
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+//
+// Hashable or Equatable:
+// The compiler will not be able to synthesize the implementation of Hashable or Equatable
+// for types that require the use of JSONAny, nor will the implementation of Hashable be
+// synthesized for types that have collections (such as arrays or dictionaries).
+
+// MARK: - SerialName
+struct SerialName: Codable, Equatable {
+    let serialName: Int
+
+    enum CodingKeys: String, CodingKey {
+        case serialName = "SerialName"
+    }
+}
+
+// MARK: SerialName convenience initializers and mutators
+
+extension SerialName {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(SerialName.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        serialName: Int? = nil
+    ) -> SerialName {
+        return SerialName(
+            serialName: serialName ?? self.serialName
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+//
+// Hashable or Equatable:
+// The compiler will not be able to synthesize the implementation of Hashable or Equatable
+// for types that require the use of JSONAny, nor will the implementation of Hashable be
+// synthesized for types that have collections (such as arrays or dictionaries).
+
+// MARK: - Serializable
+struct Serializable: Codable, Equatable {
+    let serializable: Int
+
+    enum CodingKeys: String, CodingKey {
+        case serializable = "Serializable"
+    }
+}
+
+// MARK: Serializable convenience initializers and mutators
+
+extension Serializable {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Serializable.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        serializable: Int? = nil
+    ) -> Serializable {
+        return Serializable(
+            serializable: serializable ?? self.serializable
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+//
+// Hashable or Equatable:
+// The compiler will not be able to synthesize the implementation of Hashable or Equatable
+// for types that require the use of JSONAny, nor will the implementation of Hashable be
+// synthesized for types that have collections (such as arrays or dictionaries).
+
 // MARK: - Serialize
 struct Serialize: Codable, Equatable {
     let serialize: Int
@@ -17320,20 +17520,20 @@ extension Unsigned {
 // for types that require the use of JSONAny, nor will the implementation of Hashable be
 // synthesized for types that have collections (such as arrays or dictionaries).
 
-// MARK: - Ushort
-struct Ushort: Codable, Equatable {
-    let ushort: Int
+// MARK: - UseSerializers
+struct UseSerializers: Codable, Equatable {
+    let useSerializers: Int
 
     enum CodingKeys: String, CodingKey {
-        case ushort = "ushort"
+        case useSerializers = "UseSerializers"
     }
 }
 
-// MARK: Ushort convenience initializers and mutators
+// MARK: UseSerializers convenience initializers and mutators
 
-extension Ushort {
+extension UseSerializers {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Ushort.self, from: data)
+        self = try newJSONDecoder().decode(UseSerializers.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17348,10 +17548,10 @@ extension Ushort {
     }
 
     func with(
-        ushort: Int? = nil
-    ) -> Ushort {
-        return Ushort(
-            ushort: ushort ?? self.ushort
+        useSerializers: Int? = nil
+    ) -> UseSerializers {
+        return UseSerializers(
+            useSerializers: useSerializers ?? self.useSerializers
         )
     }
 
@@ -17370,20 +17570,20 @@ extension Ushort {
 // for types that require the use of JSONAny, nor will the implementation of Hashable be
 // synthesized for types that have collections (such as arrays or dictionaries).
 
-// MARK: - Using
-struct Using: Codable, Equatable {
-    let using: Int
+// MARK: - Ushort
+struct Ushort: Codable, Equatable {
+    let ushort: Int
 
     enum CodingKeys: String, CodingKey {
-        case using = "using"
+        case ushort = "ushort"
     }
 }
 
-// MARK: Using convenience initializers and mutators
+// MARK: Ushort convenience initializers and mutators
 
-extension Using {
+extension Ushort {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Using.self, from: data)
+        self = try newJSONDecoder().decode(Ushort.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17398,10 +17598,10 @@ extension Using {
     }
 
     func with(
-        using: Int? = nil
-    ) -> Using {
-        return Using(
-            using: using ?? self.using
+        ushort: Int? = nil
+    ) -> Ushort {
+        return Ushort(
+            ushort: ushort ?? self.ushort
         )
     }
 
@@ -17420,21 +17620,57 @@ extension Using {
 // for types that require the use of JSONAny, nor will the implementation of Hashable be
 // synthesized for types that have collections (such as arrays or dictionaries).
 
-// MARK: - Utf8JSONReader
-struct Utf8JSONReader: Codable, Equatable {
-    let utf8JSONReader: Int
+// MARK: - Obj6
+struct Obj6: Codable, Equatable {
+    let dummy: Int
+    let obj6Var: Var
+    let obj6Weak: Weak
+    let obj6Where: Where
+    let obj6While: While
+    let obj6WillSet: WillSet
+    let using: Using
+    let utf8JSONReader: Utf8JSONReader
+    let utf8JSONWriter: Utf8JSONWriter
+    let uuid: UUIDClass
+    let virtual: Virtual
+    let void: Void
+    let volatile: Volatile
+    let wcharT: WcharT
+    let with: With
+    let xor: Xor
+    let xorEq: XorEq
+    let yes: Yes
+    let yield: Yield
 
     enum CodingKeys: String, CodingKey {
+        case dummy = "dummy"
+        case obj6Var = "var"
+        case obj6Weak = "weak"
+        case obj6Where = "where"
+        case obj6While = "while"
+        case obj6WillSet = "willSet"
+        case using = "using"
         case utf8JSONReader = "Utf8JsonReader"
+        case utf8JSONWriter = "Utf8JsonWriter"
+        case uuid = "UUID"
+        case virtual = "virtual"
+        case void = "void"
+        case volatile = "volatile"
+        case wcharT = "wchar_t"
+        case with = "with"
+        case xor = "xor"
+        case xorEq = "xor_eq"
+        case yes = "YES"
+        case yield = "yield"
+    }
+}
+
+// MARK: Obj6 convenience initializers and mutators
+
+extension Obj6 {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Obj6.self, from: data)
     }
-}
-
-// MARK: Utf8JSONReader convenience initializers and mutators
-
-extension Utf8JSONReader {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Utf8JSONReader.self, from: data)
-    }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
         guard let data = json.data(using: encoding) else {
@@ -17448,10 +17684,46 @@ extension Utf8JSONReader {
     }
 
     func with(
-        utf8JSONReader: Int? = nil
-    ) -> Utf8JSONReader {
-        return Utf8JSONReader(
-            utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader
+        dummy: Int? = nil,
+        obj6Var: Var? = nil,
+        obj6Weak: Weak? = nil,
+        obj6Where: Where? = nil,
+        obj6While: While? = nil,
+        obj6WillSet: WillSet? = nil,
+        using: Using? = nil,
+        utf8JSONReader: Utf8JSONReader? = nil,
+        utf8JSONWriter: Utf8JSONWriter? = nil,
+        uuid: UUIDClass? = nil,
+        virtual: Virtual? = nil,
+        void: Void? = nil,
+        volatile: Volatile? = nil,
+        wcharT: WcharT? = nil,
+        with: With? = nil,
+        xor: Xor? = nil,
+        xorEq: XorEq? = nil,
+        yes: Yes? = nil,
+        yield: Yield? = nil
+    ) -> Obj6 {
+        return Obj6(
+            dummy: dummy ?? self.dummy,
+            obj6Var: obj6Var ?? self.obj6Var,
+            obj6Weak: obj6Weak ?? self.obj6Weak,
+            obj6Where: obj6Where ?? self.obj6Where,
+            obj6While: obj6While ?? self.obj6While,
+            obj6WillSet: obj6WillSet ?? self.obj6WillSet,
+            using: using ?? self.using,
+            utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader,
+            utf8JSONWriter: utf8JSONWriter ?? self.utf8JSONWriter,
+            uuid: uuid ?? self.uuid,
+            virtual: virtual ?? self.virtual,
+            void: void ?? self.void,
+            volatile: volatile ?? self.volatile,
+            wcharT: wcharT ?? self.wcharT,
+            with: with ?? self.with,
+            xor: xor ?? self.xor,
+            xorEq: xorEq ?? self.xorEq,
+            yes: yes ?? self.yes,
+            yield: yield ?? self.yield
         )
     }
 
@@ -17470,20 +17742,20 @@ extension Utf8JSONReader {
 // for types that require the use of JSONAny, nor will the implementation of Hashable be
 // synthesized for types that have collections (such as arrays or dictionaries).
 
-// MARK: - Utf8JSONWriter
-struct Utf8JSONWriter: Codable, Equatable {
-    let utf8JSONWriter: Int
+// MARK: - Var
+struct Var: Codable, Equatable {
+    let varVar: Int
 
     enum CodingKeys: String, CodingKey {
-        case utf8JSONWriter = "Utf8JsonWriter"
+        case varVar = "var"
     }
 }
 
-// MARK: Utf8JSONWriter convenience initializers and mutators
+// MARK: Var convenience initializers and mutators
 
-extension Utf8JSONWriter {
+extension Var {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Utf8JSONWriter.self, from: data)
+        self = try newJSONDecoder().decode(Var.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17498,10 +17770,10 @@ extension Utf8JSONWriter {
     }
 
     func with(
-        utf8JSONWriter: Int? = nil
-    ) -> Utf8JSONWriter {
-        return Utf8JSONWriter(
-            utf8JSONWriter: utf8JSONWriter ?? self.utf8JSONWriter
+        varVar: Int? = nil
+    ) -> Var {
+        return Var(
+            varVar: varVar ?? self.varVar
         )
     }
 
@@ -17520,20 +17792,20 @@ extension Utf8JSONWriter {
 // for types that require the use of JSONAny, nor will the implementation of Hashable be
 // synthesized for types that have collections (such as arrays or dictionaries).
 
-// MARK: - UUIDClass
-struct UUIDClass: Codable, Equatable {
-    let uuid: Int
+// MARK: - Weak
+struct Weak: Codable, Equatable {
+    let weakWeak: Int
 
     enum CodingKeys: String, CodingKey {
-        case uuid = "UUID"
+        case weakWeak = "weak"
     }
 }
 
-// MARK: UUIDClass convenience initializers and mutators
+// MARK: Weak convenience initializers and mutators
 
-extension UUIDClass {
+extension Weak {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(UUIDClass.self, from: data)
+        self = try newJSONDecoder().decode(Weak.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17548,10 +17820,10 @@ extension UUIDClass {
     }
 
     func with(
-        uuid: Int? = nil
-    ) -> UUIDClass {
-        return UUIDClass(
-            uuid: uuid ?? self.uuid
+        weakWeak: Int? = nil
+    ) -> Weak {
+        return Weak(
+            weakWeak: weakWeak ?? self.weakWeak
         )
     }
 
@@ -17570,20 +17842,20 @@ extension UUIDClass {
 // for types that require the use of JSONAny, nor will the implementation of Hashable be
 // synthesized for types that have collections (such as arrays or dictionaries).
 
-// MARK: - Virtual
-struct Virtual: Codable, Equatable {
-    let virtual: Int
+// MARK: - Where
+struct Where: Codable, Equatable {
+    let whereWhere: Int
 
     enum CodingKeys: String, CodingKey {
-        case virtual = "virtual"
+        case whereWhere = "where"
     }
 }
 
-// MARK: Virtual convenience initializers and mutators
+// MARK: Where convenience initializers and mutators
 
-extension Virtual {
+extension Where {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Virtual.self, from: data)
+        self = try newJSONDecoder().decode(Where.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17598,10 +17870,10 @@ extension Virtual {
     }
 
     func with(
-        virtual: Int? = nil
-    ) -> Virtual {
-        return Virtual(
-            virtual: virtual ?? self.virtual
+        whereWhere: Int? = nil
+    ) -> Where {
+        return Where(
+            whereWhere: whereWhere ?? self.whereWhere
         )
     }
 
@@ -17620,44 +17892,20 @@ extension Virtual {
 // for types that require the use of JSONAny, nor will the implementation of Hashable be
 // synthesized for types that have collections (such as arrays or dictionaries).
 
-// MARK: - Obj6
-struct Obj6: Codable, Equatable {
-    let dummy: Int
-    let obj6Weak: Weak
-    let obj6Where: Where
-    let obj6While: While
-    let obj6WillSet: WillSet
-    let void: Void
-    let volatile: Volatile
-    let wcharT: WcharT
-    let with: With
-    let xor: Xor
-    let xorEq: XorEq
-    let yes: Yes
-    let yield: Yield
+// MARK: - While
+struct While: Codable, Equatable {
+    let whileWhile: Int
 
     enum CodingKeys: String, CodingKey {
-        case dummy = "dummy"
-        case obj6Weak = "weak"
-        case obj6Where = "where"
-        case obj6While = "while"
-        case obj6WillSet = "willSet"
-        case void = "void"
-        case volatile = "volatile"
-        case wcharT = "wchar_t"
-        case with = "with"
-        case xor = "xor"
-        case xorEq = "xor_eq"
-        case yes = "YES"
-        case yield = "yield"
+        case whileWhile = "while"
     }
 }
 
-// MARK: Obj6 convenience initializers and mutators
+// MARK: While convenience initializers and mutators
 
-extension Obj6 {
+extension While {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Obj6.self, from: data)
+        self = try newJSONDecoder().decode(While.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17672,34 +17920,10 @@ extension Obj6 {
     }
 
     func with(
-        dummy: Int? = nil,
-        obj6Weak: Weak? = nil,
-        obj6Where: Where? = nil,
-        obj6While: While? = nil,
-        obj6WillSet: WillSet? = nil,
-        void: Void? = nil,
-        volatile: Volatile? = nil,
-        wcharT: WcharT? = nil,
-        with: With? = nil,
-        xor: Xor? = nil,
-        xorEq: XorEq? = nil,
-        yes: Yes? = nil,
-        yield: Yield? = nil
-    ) -> Obj6 {
-        return Obj6(
-            dummy: dummy ?? self.dummy,
-            obj6Weak: obj6Weak ?? self.obj6Weak,
-            obj6Where: obj6Where ?? self.obj6Where,
-            obj6While: obj6While ?? self.obj6While,
-            obj6WillSet: obj6WillSet ?? self.obj6WillSet,
-            void: void ?? self.void,
-            volatile: volatile ?? self.volatile,
-            wcharT: wcharT ?? self.wcharT,
-            with: with ?? self.with,
-            xor: xor ?? self.xor,
-            xorEq: xorEq ?? self.xorEq,
-            yes: yes ?? self.yes,
-            yield: yield ?? self.yield
+        whileWhile: Int? = nil
+    ) -> While {
+        return While(
+            whileWhile: whileWhile ?? self.whileWhile
         )
     }
 
@@ -17718,20 +17942,20 @@ extension Obj6 {
 // for types that require the use of JSONAny, nor will the implementation of Hashable be
 // synthesized for types that have collections (such as arrays or dictionaries).
 
-// MARK: - Weak
-struct Weak: Codable, Equatable {
-    let weakWeak: Int
+// MARK: - WillSet
+struct WillSet: Codable, Equatable {
+    let willSetWillSet: Int
 
     enum CodingKeys: String, CodingKey {
-        case weakWeak = "weak"
+        case willSetWillSet = "willSet"
     }
 }
 
-// MARK: Weak convenience initializers and mutators
+// MARK: WillSet convenience initializers and mutators
 
-extension Weak {
+extension WillSet {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Weak.self, from: data)
+        self = try newJSONDecoder().decode(WillSet.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17746,10 +17970,10 @@ extension Weak {
     }
 
     func with(
-        weakWeak: Int? = nil
-    ) -> Weak {
-        return Weak(
-            weakWeak: weakWeak ?? self.weakWeak
+        willSetWillSet: Int? = nil
+    ) -> WillSet {
+        return WillSet(
+            willSetWillSet: willSetWillSet ?? self.willSetWillSet
         )
     }
 
@@ -17768,20 +17992,20 @@ extension Weak {
 // for types that require the use of JSONAny, nor will the implementation of Hashable be
 // synthesized for types that have collections (such as arrays or dictionaries).
 
-// MARK: - Where
-struct Where: Codable, Equatable {
-    let whereWhere: Int
+// MARK: - Using
+struct Using: Codable, Equatable {
+    let using: Int
 
     enum CodingKeys: String, CodingKey {
-        case whereWhere = "where"
+        case using = "using"
     }
 }
 
-// MARK: Where convenience initializers and mutators
+// MARK: Using convenience initializers and mutators
 
-extension Where {
+extension Using {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Where.self, from: data)
+        self = try newJSONDecoder().decode(Using.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17796,10 +18020,10 @@ extension Where {
     }
 
     func with(
-        whereWhere: Int? = nil
-    ) -> Where {
-        return Where(
-            whereWhere: whereWhere ?? self.whereWhere
+        using: Int? = nil
+    ) -> Using {
+        return Using(
+            using: using ?? self.using
         )
     }
 
@@ -17818,20 +18042,20 @@ extension Where {
 // for types that require the use of JSONAny, nor will the implementation of Hashable be
 // synthesized for types that have collections (such as arrays or dictionaries).
 
-// MARK: - While
-struct While: Codable, Equatable {
-    let whileWhile: Int
+// MARK: - Utf8JSONReader
+struct Utf8JSONReader: Codable, Equatable {
+    let utf8JSONReader: Int
 
     enum CodingKeys: String, CodingKey {
-        case whileWhile = "while"
+        case utf8JSONReader = "Utf8JsonReader"
     }
 }
 
-// MARK: While convenience initializers and mutators
+// MARK: Utf8JSONReader convenience initializers and mutators
 
-extension While {
+extension Utf8JSONReader {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(While.self, from: data)
+        self = try newJSONDecoder().decode(Utf8JSONReader.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17846,10 +18070,10 @@ extension While {
     }
 
     func with(
-        whileWhile: Int? = nil
-    ) -> While {
-        return While(
-            whileWhile: whileWhile ?? self.whileWhile
+        utf8JSONReader: Int? = nil
+    ) -> Utf8JSONReader {
+        return Utf8JSONReader(
+            utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader
         )
     }
 
@@ -17868,20 +18092,20 @@ extension While {
 // for types that require the use of JSONAny, nor will the implementation of Hashable be
 // synthesized for types that have collections (such as arrays or dictionaries).
 
-// MARK: - WillSet
-struct WillSet: Codable, Equatable {
-    let willSetWillSet: Int
+// MARK: - Utf8JSONWriter
+struct Utf8JSONWriter: Codable, Equatable {
+    let utf8JSONWriter: Int
 
     enum CodingKeys: String, CodingKey {
-        case willSetWillSet = "willSet"
+        case utf8JSONWriter = "Utf8JsonWriter"
     }
 }
 
-// MARK: WillSet convenience initializers and mutators
+// MARK: Utf8JSONWriter convenience initializers and mutators
 
-extension WillSet {
+extension Utf8JSONWriter {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(WillSet.self, from: data)
+        self = try newJSONDecoder().decode(Utf8JSONWriter.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17896,10 +18120,110 @@ extension WillSet {
     }
 
     func with(
-        willSetWillSet: Int? = nil
-    ) -> WillSet {
-        return WillSet(
-            willSetWillSet: willSetWillSet ?? self.willSetWillSet
+        utf8JSONWriter: Int? = nil
+    ) -> Utf8JSONWriter {
+        return Utf8JSONWriter(
+            utf8JSONWriter: utf8JSONWriter ?? self.utf8JSONWriter
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+//
+// Hashable or Equatable:
+// The compiler will not be able to synthesize the implementation of Hashable or Equatable
+// for types that require the use of JSONAny, nor will the implementation of Hashable be
+// synthesized for types that have collections (such as arrays or dictionaries).
+
+// MARK: - UUIDClass
+struct UUIDClass: Codable, Equatable {
+    let uuid: Int
+
+    enum CodingKeys: String, CodingKey {
+        case uuid = "UUID"
+    }
+}
+
+// MARK: UUIDClass convenience initializers and mutators
+
+extension UUIDClass {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(UUIDClass.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        uuid: Int? = nil
+    ) -> UUIDClass {
+        return UUIDClass(
+            uuid: uuid ?? self.uuid
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+//
+// Hashable or Equatable:
+// The compiler will not be able to synthesize the implementation of Hashable or Equatable
+// for types that require the use of JSONAny, nor will the implementation of Hashable be
+// synthesized for types that have collections (such as arrays or dictionaries).
+
+// MARK: - Virtual
+struct Virtual: Codable, Equatable {
+    let virtual: Int
+
+    enum CodingKeys: String, CodingKey {
+        case virtual = "virtual"
+    }
+}
+
+// MARK: Virtual convenience initializers and mutators
+
+extension Virtual {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Virtual.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        virtual: Int? = nil
+    ) -> Virtual {
+        return Virtual(
+            virtual: virtual ?? self.virtual
         )
     }
 
diff --git a/base/swift/test/inputs/json/priority/keywords.json/sendable-true--1c3982c78639/quicktype.swift b/head/swift/test/inputs/json/priority/keywords.json/sendable-true--1c3982c78639/quicktype.swift
index 523dbd4..6194419 100644
--- a/base/swift/test/inputs/json/priority/keywords.json/sendable-true--1c3982c78639/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/keywords.json/sendable-true--1c3982c78639/quicktype.swift
@@ -12545,6 +12545,7 @@ extension Select {
 // MARK: - Obj5
 struct Obj5: Codable, Sendable {
     let dummy: Int
+    let kSerializer: KSerializer
     let obj5Self: SelfClass
     let obj5Set: Set
     let obj5Static: Static
@@ -12559,10 +12560,13 @@ struct Obj5: Codable, Sendable {
     let obj5Type: Obj5Type
     let obj5Typealias: Typealias
     let obj5Unowned: Unowned
-    let obj5Var: Var
+    let primitiveKind: PrimitiveKind
     let purpleSelf: Obj5Self
     let purpleTrue: TrueClass
     let sendable: SendableClass
+    let serialDescriptor: SerialDescriptor
+    let serialName: SerialName
+    let serializable: Serializable
     let serialize: Serialize
     let serializerProvider: SerializerProvider
     let short: Short
@@ -12603,15 +12607,12 @@ struct Obj5: Codable, Sendable {
     let union: Union
     let unsafe: Unsafe
     let unsigned: Unsigned
+    let useSerializers: UseSerializers
     let ushort: Ushort
-    let using: Using
-    let utf8JSONReader: Utf8JSONReader
-    let utf8JSONWriter: Utf8JSONWriter
-    let uuid: UUIDClass
-    let virtual: Virtual
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
+        case kSerializer = "KSerializer"
         case obj5Self = "Self"
         case obj5Set = "set"
         case obj5Static = "static"
@@ -12626,10 +12627,13 @@ struct Obj5: Codable, Sendable {
         case obj5Type = "type"
         case obj5Typealias = "typealias"
         case obj5Unowned = "unowned"
-        case obj5Var = "var"
+        case primitiveKind = "PrimitiveKind"
         case purpleSelf = "self"
         case purpleTrue = "true"
         case sendable = "Sendable"
+        case serialDescriptor = "SerialDescriptor"
+        case serialName = "SerialName"
+        case serializable = "Serializable"
         case serialize = "serialize"
         case serializerProvider = "SerializerProvider"
         case short = "short"
@@ -12670,12 +12674,8 @@ struct Obj5: Codable, Sendable {
         case union = "union"
         case unsafe = "unsafe"
         case unsigned = "unsigned"
+        case useSerializers = "UseSerializers"
         case ushort = "ushort"
-        case using = "using"
-        case utf8JSONReader = "Utf8JsonReader"
-        case utf8JSONWriter = "Utf8JsonWriter"
-        case uuid = "UUID"
-        case virtual = "virtual"
     }
 }
 
@@ -12699,6 +12699,7 @@ extension Obj5 {
 
     func with(
         dummy: Int? = nil,
+        kSerializer: KSerializer? = nil,
         obj5Self: SelfClass? = nil,
         obj5Set: Set? = nil,
         obj5Static: Static? = nil,
@@ -12713,10 +12714,13 @@ extension Obj5 {
         obj5Type: Obj5Type? = nil,
         obj5Typealias: Typealias? = nil,
         obj5Unowned: Unowned? = nil,
-        obj5Var: Var? = nil,
+        primitiveKind: PrimitiveKind? = nil,
         purpleSelf: Obj5Self? = nil,
         purpleTrue: TrueClass? = nil,
         sendable: SendableClass? = nil,
+        serialDescriptor: SerialDescriptor? = nil,
+        serialName: SerialName? = nil,
+        serializable: Serializable? = nil,
         serialize: Serialize? = nil,
         serializerProvider: SerializerProvider? = nil,
         short: Short? = nil,
@@ -12757,15 +12761,12 @@ extension Obj5 {
         union: Union? = nil,
         unsafe: Unsafe? = nil,
         unsigned: Unsigned? = nil,
-        ushort: Ushort? = nil,
-        using: Using? = nil,
-        utf8JSONReader: Utf8JSONReader? = nil,
-        utf8JSONWriter: Utf8JSONWriter? = nil,
-        uuid: UUIDClass? = nil,
-        virtual: Virtual? = nil
+        useSerializers: UseSerializers? = nil,
+        ushort: Ushort? = nil
     ) -> Obj5 {
         return Obj5(
             dummy: dummy ?? self.dummy,
+            kSerializer: kSerializer ?? self.kSerializer,
             obj5Self: obj5Self ?? self.obj5Self,
             obj5Set: obj5Set ?? self.obj5Set,
             obj5Static: obj5Static ?? self.obj5Static,
@@ -12780,10 +12781,13 @@ extension Obj5 {
             obj5Type: obj5Type ?? self.obj5Type,
             obj5Typealias: obj5Typealias ?? self.obj5Typealias,
             obj5Unowned: obj5Unowned ?? self.obj5Unowned,
-            obj5Var: obj5Var ?? self.obj5Var,
+            primitiveKind: primitiveKind ?? self.primitiveKind,
             purpleSelf: purpleSelf ?? self.purpleSelf,
             purpleTrue: purpleTrue ?? self.purpleTrue,
             sendable: sendable ?? self.sendable,
+            serialDescriptor: serialDescriptor ?? self.serialDescriptor,
+            serialName: serialName ?? self.serialName,
+            serializable: serializable ?? self.serializable,
             serialize: serialize ?? self.serialize,
             serializerProvider: serializerProvider ?? self.serializerProvider,
             short: short ?? self.short,
@@ -12824,12 +12828,52 @@ extension Obj5 {
             union: union ?? self.union,
             unsafe: unsafe ?? self.unsafe,
             unsigned: unsigned ?? self.unsigned,
-            ushort: ushort ?? self.ushort,
-            using: using ?? self.using,
-            utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader,
-            utf8JSONWriter: utf8JSONWriter ?? self.utf8JSONWriter,
-            uuid: uuid ?? self.uuid,
-            virtual: virtual ?? self.virtual
+            useSerializers: useSerializers ?? self.useSerializers,
+            ushort: ushort ?? self.ushort
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+// MARK: - KSerializer
+struct KSerializer: Codable, Sendable {
+    let kSerializer: Int
+
+    enum CodingKeys: String, CodingKey {
+        case kSerializer = "KSerializer"
+    }
+}
+
+// MARK: KSerializer convenience initializers and mutators
+
+extension KSerializer {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(KSerializer.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        kSerializer: Int? = nil
+    ) -> KSerializer {
+        return KSerializer(
+            kSerializer: kSerializer ?? self.kSerializer
         )
     }
 
@@ -13458,20 +13502,20 @@ extension Unowned {
     }
 }
 
-// MARK: - Var
-struct Var: Codable, Sendable {
-    let varVar: Int
+// MARK: - PrimitiveKind
+struct PrimitiveKind: Codable, Sendable {
+    let primitiveKind: Int
 
     enum CodingKeys: String, CodingKey {
-        case varVar = "var"
+        case primitiveKind = "PrimitiveKind"
     }
 }
 
-// MARK: Var convenience initializers and mutators
+// MARK: PrimitiveKind convenience initializers and mutators
 
-extension Var {
+extension PrimitiveKind {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Var.self, from: data)
+        self = try newJSONDecoder().decode(PrimitiveKind.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13486,10 +13530,10 @@ extension Var {
     }
 
     func with(
-        varVar: Int? = nil
-    ) -> Var {
-        return Var(
-            varVar: varVar ?? self.varVar
+        primitiveKind: Int? = nil
+    ) -> PrimitiveKind {
+        return PrimitiveKind(
+            primitiveKind: primitiveKind ?? self.primitiveKind
         )
     }
 
@@ -13634,6 +13678,138 @@ extension SendableClass {
     }
 }
 
+// MARK: - SerialDescriptor
+struct SerialDescriptor: Codable, Sendable {
+    let serialDescriptor: Int
+
+    enum CodingKeys: String, CodingKey {
+        case serialDescriptor = "SerialDescriptor"
+    }
+}
+
+// MARK: SerialDescriptor convenience initializers and mutators
+
+extension SerialDescriptor {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(SerialDescriptor.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        serialDescriptor: Int? = nil
+    ) -> SerialDescriptor {
+        return SerialDescriptor(
+            serialDescriptor: serialDescriptor ?? self.serialDescriptor
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+// MARK: - SerialName
+struct SerialName: Codable, Sendable {
+    let serialName: Int
+
+    enum CodingKeys: String, CodingKey {
+        case serialName = "SerialName"
+    }
+}
+
+// MARK: SerialName convenience initializers and mutators
+
+extension SerialName {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(SerialName.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        serialName: Int? = nil
+    ) -> SerialName {
+        return SerialName(
+            serialName: serialName ?? self.serialName
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+// MARK: - Serializable
+struct Serializable: Codable, Sendable {
+    let serializable: Int
+
+    enum CodingKeys: String, CodingKey {
+        case serializable = "Serializable"
+    }
+}
+
+// MARK: Serializable convenience initializers and mutators
+
+extension Serializable {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Serializable.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        serializable: Int? = nil
+    ) -> Serializable {
+        return Serializable(
+            serializable: serializable ?? self.serializable
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
 // MARK: - Serialize
 struct Serialize: Codable, Sendable {
     let serialize: Int
@@ -15394,20 +15570,20 @@ extension Unsigned {
     }
 }
 
-// MARK: - Ushort
-struct Ushort: Codable, Sendable {
-    let ushort: Int
+// MARK: - UseSerializers
+struct UseSerializers: Codable, Sendable {
+    let useSerializers: Int
 
     enum CodingKeys: String, CodingKey {
-        case ushort = "ushort"
+        case useSerializers = "UseSerializers"
     }
 }
 
-// MARK: Ushort convenience initializers and mutators
+// MARK: UseSerializers convenience initializers and mutators
 
-extension Ushort {
+extension UseSerializers {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Ushort.self, from: data)
+        self = try newJSONDecoder().decode(UseSerializers.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15422,10 +15598,10 @@ extension Ushort {
     }
 
     func with(
-        ushort: Int? = nil
-    ) -> Ushort {
-        return Ushort(
-            ushort: ushort ?? self.ushort
+        useSerializers: Int? = nil
+    ) -> UseSerializers {
+        return UseSerializers(
+            useSerializers: useSerializers ?? self.useSerializers
         )
     }
 
@@ -15438,20 +15614,20 @@ extension Ushort {
     }
 }
 
-// MARK: - Using
-struct Using: Codable, Sendable {
-    let using: Int
+// MARK: - Ushort
+struct Ushort: Codable, Sendable {
+    let ushort: Int
 
     enum CodingKeys: String, CodingKey {
-        case using = "using"
+        case ushort = "ushort"
     }
 }
 
-// MARK: Using convenience initializers and mutators
+// MARK: Ushort convenience initializers and mutators
 
-extension Using {
+extension Ushort {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Using.self, from: data)
+        self = try newJSONDecoder().decode(Ushort.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15466,10 +15642,10 @@ extension Using {
     }
 
     func with(
-        using: Int? = nil
-    ) -> Using {
-        return Using(
-            using: using ?? self.using
+        ushort: Int? = nil
+    ) -> Ushort {
+        return Ushort(
+            ushort: ushort ?? self.ushort
         )
     }
 
@@ -15482,20 +15658,56 @@ extension Using {
     }
 }
 
-// MARK: - Utf8JSONReader
-struct Utf8JSONReader: Codable, Sendable {
-    let utf8JSONReader: Int
+// MARK: - Obj6
+struct Obj6: Codable, Sendable {
+    let dummy: Int
+    let obj6Var: Var
+    let obj6Weak: Weak
+    let obj6Where: Where
+    let obj6While: While
+    let obj6WillSet: WillSet
+    let using: Using
+    let utf8JSONReader: Utf8JSONReader
+    let utf8JSONWriter: Utf8JSONWriter
+    let uuid: UUIDClass
+    let virtual: Virtual
+    let void: Void
+    let volatile: Volatile
+    let wcharT: WcharT
+    let with: With
+    let xor: Xor
+    let xorEq: XorEq
+    let yes: Yes
+    let yield: Yield
 
     enum CodingKeys: String, CodingKey {
+        case dummy = "dummy"
+        case obj6Var = "var"
+        case obj6Weak = "weak"
+        case obj6Where = "where"
+        case obj6While = "while"
+        case obj6WillSet = "willSet"
+        case using = "using"
         case utf8JSONReader = "Utf8JsonReader"
+        case utf8JSONWriter = "Utf8JsonWriter"
+        case uuid = "UUID"
+        case virtual = "virtual"
+        case void = "void"
+        case volatile = "volatile"
+        case wcharT = "wchar_t"
+        case with = "with"
+        case xor = "xor"
+        case xorEq = "xor_eq"
+        case yes = "YES"
+        case yield = "yield"
     }
 }
 
-// MARK: Utf8JSONReader convenience initializers and mutators
+// MARK: Obj6 convenience initializers and mutators
 
-extension Utf8JSONReader {
+extension Obj6 {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Utf8JSONReader.self, from: data)
+        self = try newJSONDecoder().decode(Obj6.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15510,36 +15722,72 @@ extension Utf8JSONReader {
     }
 
     func with(
-        utf8JSONReader: Int? = nil
-    ) -> Utf8JSONReader {
-        return Utf8JSONReader(
-            utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader
-        )
-    }
-
-    func jsonData() throws -> Data {
-        return try newJSONEncoder().encode(self)
-    }
-
-    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
-        return String(data: try self.jsonData(), encoding: encoding)
-    }
+        dummy: Int? = nil,
+        obj6Var: Var? = nil,
+        obj6Weak: Weak? = nil,
+        obj6Where: Where? = nil,
+        obj6While: While? = nil,
+        obj6WillSet: WillSet? = nil,
+        using: Using? = nil,
+        utf8JSONReader: Utf8JSONReader? = nil,
+        utf8JSONWriter: Utf8JSONWriter? = nil,
+        uuid: UUIDClass? = nil,
+        virtual: Virtual? = nil,
+        void: Void? = nil,
+        volatile: Volatile? = nil,
+        wcharT: WcharT? = nil,
+        with: With? = nil,
+        xor: Xor? = nil,
+        xorEq: XorEq? = nil,
+        yes: Yes? = nil,
+        yield: Yield? = nil
+    ) -> Obj6 {
+        return Obj6(
+            dummy: dummy ?? self.dummy,
+            obj6Var: obj6Var ?? self.obj6Var,
+            obj6Weak: obj6Weak ?? self.obj6Weak,
+            obj6Where: obj6Where ?? self.obj6Where,
+            obj6While: obj6While ?? self.obj6While,
+            obj6WillSet: obj6WillSet ?? self.obj6WillSet,
+            using: using ?? self.using,
+            utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader,
+            utf8JSONWriter: utf8JSONWriter ?? self.utf8JSONWriter,
+            uuid: uuid ?? self.uuid,
+            virtual: virtual ?? self.virtual,
+            void: void ?? self.void,
+            volatile: volatile ?? self.volatile,
+            wcharT: wcharT ?? self.wcharT,
+            with: with ?? self.with,
+            xor: xor ?? self.xor,
+            xorEq: xorEq ?? self.xorEq,
+            yes: yes ?? self.yes,
+            yield: yield ?? self.yield
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
 }
 
-// MARK: - Utf8JSONWriter
-struct Utf8JSONWriter: Codable, Sendable {
-    let utf8JSONWriter: Int
+// MARK: - Var
+struct Var: Codable, Sendable {
+    let varVar: Int
 
     enum CodingKeys: String, CodingKey {
-        case utf8JSONWriter = "Utf8JsonWriter"
+        case varVar = "var"
     }
 }
 
-// MARK: Utf8JSONWriter convenience initializers and mutators
+// MARK: Var convenience initializers and mutators
 
-extension Utf8JSONWriter {
+extension Var {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Utf8JSONWriter.self, from: data)
+        self = try newJSONDecoder().decode(Var.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15554,10 +15802,10 @@ extension Utf8JSONWriter {
     }
 
     func with(
-        utf8JSONWriter: Int? = nil
-    ) -> Utf8JSONWriter {
-        return Utf8JSONWriter(
-            utf8JSONWriter: utf8JSONWriter ?? self.utf8JSONWriter
+        varVar: Int? = nil
+    ) -> Var {
+        return Var(
+            varVar: varVar ?? self.varVar
         )
     }
 
@@ -15570,20 +15818,20 @@ extension Utf8JSONWriter {
     }
 }
 
-// MARK: - UUIDClass
-struct UUIDClass: Codable, Sendable {
-    let uuid: Int
+// MARK: - Weak
+struct Weak: Codable, Sendable {
+    let weakWeak: Int
 
     enum CodingKeys: String, CodingKey {
-        case uuid = "UUID"
+        case weakWeak = "weak"
     }
 }
 
-// MARK: UUIDClass convenience initializers and mutators
+// MARK: Weak convenience initializers and mutators
 
-extension UUIDClass {
+extension Weak {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(UUIDClass.self, from: data)
+        self = try newJSONDecoder().decode(Weak.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15598,10 +15846,10 @@ extension UUIDClass {
     }
 
     func with(
-        uuid: Int? = nil
-    ) -> UUIDClass {
-        return UUIDClass(
-            uuid: uuid ?? self.uuid
+        weakWeak: Int? = nil
+    ) -> Weak {
+        return Weak(
+            weakWeak: weakWeak ?? self.weakWeak
         )
     }
 
@@ -15614,20 +15862,20 @@ extension UUIDClass {
     }
 }
 
-// MARK: - Virtual
-struct Virtual: Codable, Sendable {
-    let virtual: Int
+// MARK: - Where
+struct Where: Codable, Sendable {
+    let whereWhere: Int
 
     enum CodingKeys: String, CodingKey {
-        case virtual = "virtual"
+        case whereWhere = "where"
     }
 }
 
-// MARK: Virtual convenience initializers and mutators
+// MARK: Where convenience initializers and mutators
 
-extension Virtual {
+extension Where {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Virtual.self, from: data)
+        self = try newJSONDecoder().decode(Where.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15642,10 +15890,10 @@ extension Virtual {
     }
 
     func with(
-        virtual: Int? = nil
-    ) -> Virtual {
-        return Virtual(
-            virtual: virtual ?? self.virtual
+        whereWhere: Int? = nil
+    ) -> Where {
+        return Where(
+            whereWhere: whereWhere ?? self.whereWhere
         )
     }
 
@@ -15658,44 +15906,20 @@ extension Virtual {
     }
 }
 
-// MARK: - Obj6
-struct Obj6: Codable, Sendable {
-    let dummy: Int
-    let obj6Weak: Weak
-    let obj6Where: Where
-    let obj6While: While
-    let obj6WillSet: WillSet
-    let void: Void
-    let volatile: Volatile
-    let wcharT: WcharT
-    let with: With
-    let xor: Xor
-    let xorEq: XorEq
-    let yes: Yes
-    let yield: Yield
+// MARK: - While
+struct While: Codable, Sendable {
+    let whileWhile: Int
 
     enum CodingKeys: String, CodingKey {
-        case dummy = "dummy"
-        case obj6Weak = "weak"
-        case obj6Where = "where"
-        case obj6While = "while"
-        case obj6WillSet = "willSet"
-        case void = "void"
-        case volatile = "volatile"
-        case wcharT = "wchar_t"
-        case with = "with"
-        case xor = "xor"
-        case xorEq = "xor_eq"
-        case yes = "YES"
-        case yield = "yield"
+        case whileWhile = "while"
     }
 }
 
-// MARK: Obj6 convenience initializers and mutators
+// MARK: While convenience initializers and mutators
 
-extension Obj6 {
+extension While {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Obj6.self, from: data)
+        self = try newJSONDecoder().decode(While.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15710,34 +15934,10 @@ extension Obj6 {
     }
 
     func with(
-        dummy: Int? = nil,
-        obj6Weak: Weak? = nil,
-        obj6Where: Where? = nil,
-        obj6While: While? = nil,
-        obj6WillSet: WillSet? = nil,
-        void: Void? = nil,
-        volatile: Volatile? = nil,
-        wcharT: WcharT? = nil,
-        with: With? = nil,
-        xor: Xor? = nil,
-        xorEq: XorEq? = nil,
-        yes: Yes? = nil,
-        yield: Yield? = nil
-    ) -> Obj6 {
-        return Obj6(
-            dummy: dummy ?? self.dummy,
-            obj6Weak: obj6Weak ?? self.obj6Weak,
-            obj6Where: obj6Where ?? self.obj6Where,
-            obj6While: obj6While ?? self.obj6While,
-            obj6WillSet: obj6WillSet ?? self.obj6WillSet,
-            void: void ?? self.void,
-            volatile: volatile ?? self.volatile,
-            wcharT: wcharT ?? self.wcharT,
-            with: with ?? self.with,
-            xor: xor ?? self.xor,
-            xorEq: xorEq ?? self.xorEq,
-            yes: yes ?? self.yes,
-            yield: yield ?? self.yield
+        whileWhile: Int? = nil
+    ) -> While {
+        return While(
+            whileWhile: whileWhile ?? self.whileWhile
         )
     }
 
@@ -15750,20 +15950,20 @@ extension Obj6 {
     }
 }
 
-// MARK: - Weak
-struct Weak: Codable, Sendable {
-    let weakWeak: Int
+// MARK: - WillSet
+struct WillSet: Codable, Sendable {
+    let willSetWillSet: Int
 
     enum CodingKeys: String, CodingKey {
-        case weakWeak = "weak"
+        case willSetWillSet = "willSet"
     }
 }
 
-// MARK: Weak convenience initializers and mutators
+// MARK: WillSet convenience initializers and mutators
 
-extension Weak {
+extension WillSet {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Weak.self, from: data)
+        self = try newJSONDecoder().decode(WillSet.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15778,10 +15978,10 @@ extension Weak {
     }
 
     func with(
-        weakWeak: Int? = nil
-    ) -> Weak {
-        return Weak(
-            weakWeak: weakWeak ?? self.weakWeak
+        willSetWillSet: Int? = nil
+    ) -> WillSet {
+        return WillSet(
+            willSetWillSet: willSetWillSet ?? self.willSetWillSet
         )
     }
 
@@ -15794,20 +15994,20 @@ extension Weak {
     }
 }
 
-// MARK: - Where
-struct Where: Codable, Sendable {
-    let whereWhere: Int
+// MARK: - Using
+struct Using: Codable, Sendable {
+    let using: Int
 
     enum CodingKeys: String, CodingKey {
-        case whereWhere = "where"
+        case using = "using"
     }
 }
 
-// MARK: Where convenience initializers and mutators
+// MARK: Using convenience initializers and mutators
 
-extension Where {
+extension Using {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Where.self, from: data)
+        self = try newJSONDecoder().decode(Using.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15822,10 +16022,10 @@ extension Where {
     }
 
     func with(
-        whereWhere: Int? = nil
-    ) -> Where {
-        return Where(
-            whereWhere: whereWhere ?? self.whereWhere
+        using: Int? = nil
+    ) -> Using {
+        return Using(
+            using: using ?? self.using
         )
     }
 
@@ -15838,20 +16038,20 @@ extension Where {
     }
 }
 
-// MARK: - While
-struct While: Codable, Sendable {
-    let whileWhile: Int
+// MARK: - Utf8JSONReader
+struct Utf8JSONReader: Codable, Sendable {
+    let utf8JSONReader: Int
 
     enum CodingKeys: String, CodingKey {
-        case whileWhile = "while"
+        case utf8JSONReader = "Utf8JsonReader"
     }
 }
 
-// MARK: While convenience initializers and mutators
+// MARK: Utf8JSONReader convenience initializers and mutators
 
-extension While {
+extension Utf8JSONReader {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(While.self, from: data)
+        self = try newJSONDecoder().decode(Utf8JSONReader.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15866,10 +16066,10 @@ extension While {
     }
 
     func with(
-        whileWhile: Int? = nil
-    ) -> While {
-        return While(
-            whileWhile: whileWhile ?? self.whileWhile
+        utf8JSONReader: Int? = nil
+    ) -> Utf8JSONReader {
+        return Utf8JSONReader(
+            utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader
         )
     }
 
@@ -15882,20 +16082,20 @@ extension While {
     }
 }
 
-// MARK: - WillSet
-struct WillSet: Codable, Sendable {
-    let willSetWillSet: Int
+// MARK: - Utf8JSONWriter
+struct Utf8JSONWriter: Codable, Sendable {
+    let utf8JSONWriter: Int
 
     enum CodingKeys: String, CodingKey {
-        case willSetWillSet = "willSet"
+        case utf8JSONWriter = "Utf8JsonWriter"
     }
 }
 
-// MARK: WillSet convenience initializers and mutators
+// MARK: Utf8JSONWriter convenience initializers and mutators
 
-extension WillSet {
+extension Utf8JSONWriter {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(WillSet.self, from: data)
+        self = try newJSONDecoder().decode(Utf8JSONWriter.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15910,10 +16110,98 @@ extension WillSet {
     }
 
     func with(
-        willSetWillSet: Int? = nil
-    ) -> WillSet {
-        return WillSet(
-            willSetWillSet: willSetWillSet ?? self.willSetWillSet
+        utf8JSONWriter: Int? = nil
+    ) -> Utf8JSONWriter {
+        return Utf8JSONWriter(
+            utf8JSONWriter: utf8JSONWriter ?? self.utf8JSONWriter
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+// MARK: - UUIDClass
+struct UUIDClass: Codable, Sendable {
+    let uuid: Int
+
+    enum CodingKeys: String, CodingKey {
+        case uuid = "UUID"
+    }
+}
+
+// MARK: UUIDClass convenience initializers and mutators
+
+extension UUIDClass {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(UUIDClass.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        uuid: Int? = nil
+    ) -> UUIDClass {
+        return UUIDClass(
+            uuid: uuid ?? self.uuid
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+// MARK: - Virtual
+struct Virtual: Codable, Sendable {
+    let virtual: Int
+
+    enum CodingKeys: String, CodingKey {
+        case virtual = "virtual"
+    }
+}
+
+// MARK: Virtual convenience initializers and mutators
+
+extension Virtual {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Virtual.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        virtual: Int? = nil
+    ) -> Virtual {
+        return Virtual(
+            virtual: virtual ?? self.virtual
         )
     }
 
diff --git a/base/typescript/test/inputs/json/priority/keywords.json/default/TopLevel.ts b/head/typescript/test/inputs/json/priority/keywords.json/default/TopLevel.ts
index 9534f60..a7d34bb 100644
--- a/base/typescript/test/inputs/json/priority/keywords.json/default/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/keywords.json/default/TopLevel.ts
@@ -1316,8 +1316,13 @@ export interface Select {
 }
 
 export interface Obj5 {
+    KSerializer:        KSerializer;
+    PrimitiveKind:      PrimitiveKind;
     Self:               Self;
     Sendable:           Sendable;
+    SerialDescriptor:   SerialDescriptor;
+    SerialName:         SerialName;
+    Serializable:       Serializable;
     SerializerProvider: SerializerProvider;
     SimpleModule:       SimpleModule;
     Standards:          Standards;
@@ -1328,9 +1333,7 @@ export interface Obj5 {
     TimeZone:           TimeZone;
     True:               True;
     Type:               Type;
-    UUID:               UUID;
-    Utf8JsonReader:     Utf8JSONReader;
-    Utf8JsonWriter:     Utf8JSONWriter;
+    UseSerializers:     UseSerializers;
     dummy:              number;
     self:               SelfClass;
     serialize:          Serialize;
@@ -1378,9 +1381,14 @@ export interface Obj5 {
     unsafe:             Unsafe;
     unsigned:           Unsigned;
     ushort:             Ushort;
-    using:              Using;
-    var:                Var;
-    virtual:            Virtual;
+}
+
+export interface KSerializer {
+    KSerializer: number;
+}
+
+export interface PrimitiveKind {
+    PrimitiveKind: number;
 }
 
 export interface Self {
@@ -1391,6 +1399,18 @@ export interface Sendable {
     Sendable: number;
 }
 
+export interface SerialDescriptor {
+    SerialDescriptor: number;
+}
+
+export interface SerialName {
+    SerialName: number;
+}
+
+export interface Serializable {
+    Serializable: number;
+}
+
 export interface SerializerProvider {
     SerializerProvider: number;
 }
@@ -1431,16 +1451,8 @@ export interface Type {
     Type: number;
 }
 
-export interface UUID {
-    UUID: number;
-}
-
-export interface Utf8JSONReader {
-    Utf8JsonReader: number;
-}
-
-export interface Utf8JSONWriter {
-    Utf8JsonWriter: number;
+export interface UseSerializers {
+    UseSerializers: number;
 }
 
 export interface SelfClass {
@@ -1627,38 +1639,56 @@ export interface Ushort {
     ushort: number;
 }
 
-export interface Using {
-    using: number;
+export interface Obj6 {
+    UUID:           UUID;
+    Utf8JsonReader: Utf8JSONReader;
+    Utf8JsonWriter: Utf8JSONWriter;
+    YES:            Yes;
+    dummy:          number;
+    using:          Using;
+    var:            Var;
+    virtual:        Virtual;
+    void:           Void;
+    volatile:       Volatile;
+    wchar_t:        WcharT;
+    weak:           Weak;
+    where:          Where;
+    while:          While;
+    willSet:        WillSet;
+    with:           With;
+    xor:            Xor;
+    xor_eq:         XorEq;
+    yield:          Yield;
 }
 
-export interface Var {
-    var: number;
+export interface UUID {
+    UUID: number;
 }
 
-export interface Virtual {
-    virtual: number;
+export interface Utf8JSONReader {
+    Utf8JsonReader: number;
 }
 
-export interface Obj6 {
-    YES:      Yes;
-    dummy:    number;
-    void:     Void;
-    volatile: Volatile;
-    wchar_t:  WcharT;
-    weak:     Weak;
-    where:    Where;
-    while:    While;
-    willSet:  WillSet;
-    with:     With;
-    xor:      Xor;
-    xor_eq:   XorEq;
-    yield:    Yield;
+export interface Utf8JSONWriter {
+    Utf8JsonWriter: number;
 }
 
 export interface Yes {
     YES: number;
 }
 
+export interface Using {
+    using: number;
+}
+
+export interface Var {
+    var: number;
+}
+
+export interface Virtual {
+    virtual: number;
+}
+
 export interface Void {
     void: number;
 }
@@ -2937,8 +2967,13 @@ const typeMap: any = {
         { json: "select", js: "select", typ: i(0) },
     ], false),
     "Obj5": o([
+        { json: "KSerializer", js: "KSerializer", typ: r("KSerializer") },
+        { json: "PrimitiveKind", js: "PrimitiveKind", typ: r("PrimitiveKind") },
         { json: "Self", js: "Self", typ: r("Self") },
         { json: "Sendable", js: "Sendable", typ: r("Sendable") },
+        { json: "SerialDescriptor", js: "SerialDescriptor", typ: r("SerialDescriptor") },
+        { json: "SerialName", js: "SerialName", typ: r("SerialName") },
+        { json: "Serializable", js: "Serializable", typ: r("Serializable") },
         { json: "SerializerProvider", js: "SerializerProvider", typ: r("SerializerProvider") },
         { json: "SimpleModule", js: "SimpleModule", typ: r("SimpleModule") },
         { json: "Standards", js: "Standards", typ: r("Standards") },
@@ -2949,9 +2984,7 @@ const typeMap: any = {
         { json: "TimeZone", js: "TimeZone", typ: r("TimeZone") },
         { json: "True", js: "True", typ: r("True") },
         { json: "Type", js: "Type", typ: r("Type") },
-        { json: "UUID", js: "UUID", typ: r("UUID") },
-        { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: r("Utf8JSONReader") },
-        { json: "Utf8JsonWriter", js: "Utf8JsonWriter", typ: r("Utf8JSONWriter") },
+        { json: "UseSerializers", js: "UseSerializers", typ: r("UseSerializers") },
         { json: "dummy", js: "dummy", typ: i(0) },
         { json: "self", js: "self", typ: r("SelfClass") },
         { json: "serialize", js: "serialize", typ: r("Serialize") },
@@ -2999,9 +3032,12 @@ const typeMap: any = {
         { json: "unsafe", js: "unsafe", typ: r("Unsafe") },
         { json: "unsigned", js: "unsigned", typ: r("Unsigned") },
         { json: "ushort", js: "ushort", typ: r("Ushort") },
-        { json: "using", js: "using", typ: r("Using") },
-        { json: "var", js: "var", typ: r("Var") },
-        { json: "virtual", js: "virtual", typ: r("Virtual") },
+    ], false),
+    "KSerializer": o([
+        { json: "KSerializer", js: "KSerializer", typ: i(0) },
+    ], false),
+    "PrimitiveKind": o([
+        { json: "PrimitiveKind", js: "PrimitiveKind", typ: i(0) },
     ], false),
     "Self": o([
         { json: "Self", js: "Self", typ: i(0) },
@@ -3009,6 +3045,15 @@ const typeMap: any = {
     "Sendable": o([
         { json: "Sendable", js: "Sendable", typ: i(0) },
     ], false),
+    "SerialDescriptor": o([
+        { json: "SerialDescriptor", js: "SerialDescriptor", typ: i(0) },
+    ], false),
+    "SerialName": o([
+        { json: "SerialName", js: "SerialName", typ: i(0) },
+    ], false),
+    "Serializable": o([
+        { json: "Serializable", js: "Serializable", typ: i(0) },
+    ], false),
     "SerializerProvider": o([
         { json: "SerializerProvider", js: "SerializerProvider", typ: i(0) },
     ], false),
@@ -3039,14 +3084,8 @@ const typeMap: any = {
     "Type": o([
         { json: "Type", js: "Type", typ: i(0) },
     ], false),
-    "UUID": o([
-        { json: "UUID", js: "UUID", typ: i(0) },
-    ], false),
-    "Utf8JSONReader": o([
-        { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: i(0) },
-    ], false),
-    "Utf8JSONWriter": o([
-        { json: "Utf8JsonWriter", js: "Utf8JsonWriter", typ: i(0) },
+    "UseSerializers": o([
+        { json: "UseSerializers", js: "UseSerializers", typ: i(0) },
     ], false),
     "SelfClass": o([
         { json: "self", js: "self", typ: i(0) },
@@ -3186,18 +3225,15 @@ const typeMap: any = {
     "Ushort": o([
         { json: "ushort", js: "ushort", typ: i(0) },
     ], false),
-    "Using": o([
-        { json: "using", js: "using", typ: i(0) },
-    ], false),
-    "Var": o([
-        { json: "var", js: "var", typ: i(0) },
-    ], false),
-    "Virtual": o([
-        { json: "virtual", js: "virtual", typ: i(0) },
-    ], false),
     "Obj6": o([
+        { json: "UUID", js: "UUID", typ: r("UUID") },
+        { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: r("Utf8JSONReader") },
+        { json: "Utf8JsonWriter", js: "Utf8JsonWriter", typ: r("Utf8JSONWriter") },
         { json: "YES", js: "YES", typ: r("Yes") },
         { json: "dummy", js: "dummy", typ: i(0) },
+        { json: "using", js: "using", typ: r("Using") },
+        { json: "var", js: "var", typ: r("Var") },
+        { json: "virtual", js: "virtual", typ: r("Virtual") },
         { json: "void", js: "void", typ: r("Void") },
         { json: "volatile", js: "volatile", typ: r("Volatile") },
         { json: "wchar_t", js: "wchar_t", typ: r("WcharT") },
@@ -3210,9 +3246,27 @@ const typeMap: any = {
         { json: "xor_eq", js: "xor_eq", typ: r("XorEq") },
         { json: "yield", js: "yield", typ: r("Yield") },
     ], false),
+    "UUID": o([
+        { json: "UUID", js: "UUID", typ: i(0) },
+    ], false),
+    "Utf8JSONReader": o([
+        { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: i(0) },
+    ], false),
+    "Utf8JSONWriter": o([
+        { json: "Utf8JsonWriter", js: "Utf8JsonWriter", typ: i(0) },
+    ], false),
     "Yes": o([
         { json: "YES", js: "YES", typ: i(0) },
     ], false),
+    "Using": o([
+        { json: "using", js: "using", typ: i(0) },
+    ], false),
+    "Var": o([
+        { json: "var", js: "var", typ: i(0) },
+    ], false),
+    "Virtual": o([
+        { json: "virtual", js: "virtual", typ: i(0) },
+    ], false),
     "Void": o([
         { json: "void", js: "void", typ: i(0) },
     ], false),
diff --git a/base/typescript/test/inputs/json/priority/keywords.json/prefer-types-true--df33e18681f9/TopLevel.ts b/head/typescript/test/inputs/json/priority/keywords.json/prefer-types-true--df33e18681f9/TopLevel.ts
index f1590b7..abeb673 100644
--- a/base/typescript/test/inputs/json/priority/keywords.json/prefer-types-true--df33e18681f9/TopLevel.ts
+++ b/head/typescript/test/inputs/json/priority/keywords.json/prefer-types-true--df33e18681f9/TopLevel.ts
@@ -1316,8 +1316,13 @@ export type Select = {
 }
 
 export type Obj5 = {
+    KSerializer:        KSerializer;
+    PrimitiveKind:      PrimitiveKind;
     Self:               Self;
     Sendable:           Sendable;
+    SerialDescriptor:   SerialDescriptor;
+    SerialName:         SerialName;
+    Serializable:       Serializable;
     SerializerProvider: SerializerProvider;
     SimpleModule:       SimpleModule;
     Standards:          Standards;
@@ -1328,9 +1333,7 @@ export type Obj5 = {
     TimeZone:           TimeZone;
     True:               True;
     Type:               Type;
-    UUID:               UUID;
-    Utf8JsonReader:     Utf8JSONReader;
-    Utf8JsonWriter:     Utf8JSONWriter;
+    UseSerializers:     UseSerializers;
     dummy:              number;
     self:               SelfClass;
     serialize:          Serialize;
@@ -1378,9 +1381,14 @@ export type Obj5 = {
     unsafe:             Unsafe;
     unsigned:           Unsigned;
     ushort:             Ushort;
-    using:              Using;
-    var:                Var;
-    virtual:            Virtual;
+}
+
+export type KSerializer = {
+    KSerializer: number;
+}
+
+export type PrimitiveKind = {
+    PrimitiveKind: number;
 }
 
 export type Self = {
@@ -1391,6 +1399,18 @@ export type Sendable = {
     Sendable: number;
 }
 
+export type SerialDescriptor = {
+    SerialDescriptor: number;
+}
+
+export type SerialName = {
+    SerialName: number;
+}
+
+export type Serializable = {
+    Serializable: number;
+}
+
 export type SerializerProvider = {
     SerializerProvider: number;
 }
@@ -1431,16 +1451,8 @@ export type Type = {
     Type: number;
 }
 
-export type UUID = {
-    UUID: number;
-}
-
-export type Utf8JSONReader = {
-    Utf8JsonReader: number;
-}
-
-export type Utf8JSONWriter = {
-    Utf8JsonWriter: number;
+export type UseSerializers = {
+    UseSerializers: number;
 }
 
 export type SelfClass = {
@@ -1627,38 +1639,56 @@ export type Ushort = {
     ushort: number;
 }
 
-export type Using = {
-    using: number;
+export type Obj6 = {
+    UUID:           UUID;
+    Utf8JsonReader: Utf8JSONReader;
+    Utf8JsonWriter: Utf8JSONWriter;
+    YES:            Yes;
+    dummy:          number;
+    using:          Using;
+    var:            Var;
+    virtual:        Virtual;
+    void:           Void;
+    volatile:       Volatile;
+    wchar_t:        WcharT;
+    weak:           Weak;
+    where:          Where;
+    while:          While;
+    willSet:        WillSet;
+    with:           With;
+    xor:            Xor;
+    xor_eq:         XorEq;
+    yield:          Yield;
 }
 
-export type Var = {
-    var: number;
+export type UUID = {
+    UUID: number;
 }
 
-export type Virtual = {
-    virtual: number;
+export type Utf8JSONReader = {
+    Utf8JsonReader: number;
 }
 
-export type Obj6 = {
-    YES:      Yes;
-    dummy:    number;
-    void:     Void;
-    volatile: Volatile;
-    wchar_t:  WcharT;
-    weak:     Weak;
-    where:    Where;
-    while:    While;
-    willSet:  WillSet;
-    with:     With;
-    xor:      Xor;
-    xor_eq:   XorEq;
-    yield:    Yield;
+export type Utf8JSONWriter = {
+    Utf8JsonWriter: number;
 }
 
 export type Yes = {
     YES: number;
 }
 
+export type Using = {
+    using: number;
+}
+
+export type Var = {
+    var: number;
+}
+
+export type Virtual = {
+    virtual: number;
+}
+
 export type Void = {
     void: number;
 }
@@ -2937,8 +2967,13 @@ const typeMap: any = {
         { json: "select", js: "select", typ: i(0) },
     ], false),
     "Obj5": o([
+        { json: "KSerializer", js: "KSerializer", typ: r("KSerializer") },
+        { json: "PrimitiveKind", js: "PrimitiveKind", typ: r("PrimitiveKind") },
         { json: "Self", js: "Self", typ: r("Self") },
         { json: "Sendable", js: "Sendable", typ: r("Sendable") },
+        { json: "SerialDescriptor", js: "SerialDescriptor", typ: r("SerialDescriptor") },
+        { json: "SerialName", js: "SerialName", typ: r("SerialName") },
+        { json: "Serializable", js: "Serializable", typ: r("Serializable") },
         { json: "SerializerProvider", js: "SerializerProvider", typ: r("SerializerProvider") },
         { json: "SimpleModule", js: "SimpleModule", typ: r("SimpleModule") },
         { json: "Standards", js: "Standards", typ: r("Standards") },
@@ -2949,9 +2984,7 @@ const typeMap: any = {
         { json: "TimeZone", js: "TimeZone", typ: r("TimeZone") },
         { json: "True", js: "True", typ: r("True") },
         { json: "Type", js: "Type", typ: r("Type") },
-        { json: "UUID", js: "UUID", typ: r("UUID") },
-        { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: r("Utf8JSONReader") },
-        { json: "Utf8JsonWriter", js: "Utf8JsonWriter", typ: r("Utf8JSONWriter") },
+        { json: "UseSerializers", js: "UseSerializers", typ: r("UseSerializers") },
         { json: "dummy", js: "dummy", typ: i(0) },
         { json: "self", js: "self", typ: r("SelfClass") },
         { json: "serialize", js: "serialize", typ: r("Serialize") },
@@ -2999,9 +3032,12 @@ const typeMap: any = {
         { json: "unsafe", js: "unsafe", typ: r("Unsafe") },
         { json: "unsigned", js: "unsigned", typ: r("Unsigned") },
         { json: "ushort", js: "ushort", typ: r("Ushort") },
-        { json: "using", js: "using", typ: r("Using") },
-        { json: "var", js: "var", typ: r("Var") },
-        { json: "virtual", js: "virtual", typ: r("Virtual") },
+    ], false),
+    "KSerializer": o([
+        { json: "KSerializer", js: "KSerializer", typ: i(0) },
+    ], false),
+    "PrimitiveKind": o([
+        { json: "PrimitiveKind", js: "PrimitiveKind", typ: i(0) },
     ], false),
     "Self": o([
         { json: "Self", js: "Self", typ: i(0) },
@@ -3009,6 +3045,15 @@ const typeMap: any = {
     "Sendable": o([
         { json: "Sendable", js: "Sendable", typ: i(0) },
     ], false),
+    "SerialDescriptor": o([
+        { json: "SerialDescriptor", js: "SerialDescriptor", typ: i(0) },
+    ], false),
+    "SerialName": o([
+        { json: "SerialName", js: "SerialName", typ: i(0) },
+    ], false),
+    "Serializable": o([
+        { json: "Serializable", js: "Serializable", typ: i(0) },
+    ], false),
     "SerializerProvider": o([
         { json: "SerializerProvider", js: "SerializerProvider", typ: i(0) },
     ], false),
@@ -3039,14 +3084,8 @@ const typeMap: any = {
     "Type": o([
         { json: "Type", js: "Type", typ: i(0) },
     ], false),
-    "UUID": o([
-        { json: "UUID", js: "UUID", typ: i(0) },
-    ], false),
-    "Utf8JSONReader": o([
-        { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: i(0) },
-    ], false),
-    "Utf8JSONWriter": o([
-        { json: "Utf8JsonWriter", js: "Utf8JsonWriter", typ: i(0) },
+    "UseSerializers": o([
+        { json: "UseSerializers", js: "UseSerializers", typ: i(0) },
     ], false),
     "SelfClass": o([
         { json: "self", js: "self", typ: i(0) },
@@ -3186,18 +3225,15 @@ const typeMap: any = {
     "Ushort": o([
         { json: "ushort", js: "ushort", typ: i(0) },
     ], false),
-    "Using": o([
-        { json: "using", js: "using", typ: i(0) },
-    ], false),
-    "Var": o([
-        { json: "var", js: "var", typ: i(0) },
-    ], false),
-    "Virtual": o([
-        { json: "virtual", js: "virtual", typ: i(0) },
-    ], false),
     "Obj6": o([
+        { json: "UUID", js: "UUID", typ: r("UUID") },
+        { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: r("Utf8JSONReader") },
+        { json: "Utf8JsonWriter", js: "Utf8JsonWriter", typ: r("Utf8JSONWriter") },
         { json: "YES", js: "YES", typ: r("Yes") },
         { json: "dummy", js: "dummy", typ: i(0) },
+        { json: "using", js: "using", typ: r("Using") },
+        { json: "var", js: "var", typ: r("Var") },
+        { json: "virtual", js: "virtual", typ: r("Virtual") },
         { json: "void", js: "void", typ: r("Void") },
         { json: "volatile", js: "volatile", typ: r("Volatile") },
         { json: "wchar_t", js: "wchar_t", typ: r("WcharT") },
@@ -3210,9 +3246,27 @@ const typeMap: any = {
         { json: "xor_eq", js: "xor_eq", typ: r("XorEq") },
         { json: "yield", js: "yield", typ: r("Yield") },
     ], false),
+    "UUID": o([
+        { json: "UUID", js: "UUID", typ: i(0) },
+    ], false),
+    "Utf8JSONReader": o([
+        { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: i(0) },
+    ], false),
+    "Utf8JSONWriter": o([
+        { json: "Utf8JsonWriter", js: "Utf8JsonWriter", typ: i(0) },
+    ], false),
     "Yes": o([
         { json: "YES", js: "YES", typ: i(0) },
     ], false),
+    "Using": o([
+        { json: "using", js: "using", typ: i(0) },
+    ], false),
+    "Var": o([
+        { json: "var", js: "var", typ: i(0) },
+    ], false),
+    "Virtual": o([
+        { json: "virtual", js: "virtual", typ: i(0) },
+    ], false),
     "Void": o([
         { json: "void", js: "void", typ: i(0) },
     ], false),
diff --git a/base/typescript-effect-schema/test/inputs/json/priority/keywords.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/priority/keywords.json/default/TopLevel.ts
index f6366a4..cd9445d 100644
--- a/base/typescript-effect-schema/test/inputs/json/priority/keywords.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/priority/keywords.json/default/TopLevel.ts
@@ -55,22 +55,6 @@ export class Void extends S.Class<Void>("Void")({
     "void": S.Int,
 }) {}
 
-export class Obj6 extends S.Class<Obj6>("Obj6")({
-    "dummy": S.Int,
-    "void": Void,
-    "volatile": Volatile,
-    "wchar_t": WcharT,
-    "weak": Weak,
-    "where": Where,
-    "while": While,
-    "willSet": WillSet,
-    "with": With,
-    "xor": Xor,
-    "xor_eq": XorEq,
-    "YES": Yes,
-    "yield": Yield,
-}) {}
-
 export class Virtual extends S.Class<Virtual>("Virtual")({
     "virtual": S.Int,
 }) {}
@@ -95,10 +79,36 @@ export class Using extends S.Class<Using>("Using")({
     "using": S.Int,
 }) {}
 
+export class Obj6 extends S.Class<Obj6>("Obj6")({
+    "dummy": S.Int,
+    "using": Using,
+    "Utf8JsonReader": Utf8JsonReader,
+    "Utf8JsonWriter": Utf8JsonWriter,
+    "UUID": Uuid,
+    "var": Var,
+    "virtual": Virtual,
+    "void": Void,
+    "volatile": Volatile,
+    "wchar_t": WcharT,
+    "weak": Weak,
+    "where": Where,
+    "while": While,
+    "willSet": WillSet,
+    "with": With,
+    "xor": Xor,
+    "xor_eq": XorEq,
+    "YES": Yes,
+    "yield": Yield,
+}) {}
+
 export class Ushort extends S.Class<Ushort>("Ushort")({
     "ushort": S.Int,
 }) {}
 
+export class UseSerializers extends S.Class<UseSerializers>("UseSerializers")({
+    "UseSerializers": S.Int,
+}) {}
+
 export class Unsigned extends S.Class<Unsigned>("Unsigned")({
     "unsigned": S.Int,
 }) {}
@@ -308,6 +318,18 @@ export class Serialize extends S.Class<Serialize>("Serialize")({
     "serialize": S.Int,
 }) {}
 
+export class Serializable extends S.Class<Serializable>("Serializable")({
+    "Serializable": S.Int,
+}) {}
+
+export class SerialName extends S.Class<SerialName>("SerialName")({
+    "SerialName": S.Int,
+}) {}
+
+export class SerialDescriptor extends S.Class<SerialDescriptor>("SerialDescriptor")({
+    "SerialDescriptor": S.Int,
+}) {}
+
 export class Sendable extends S.Class<Sendable>("Sendable")({
     "Sendable": S.Int,
 }) {}
@@ -316,6 +338,10 @@ export class Self extends S.Class<Self>("Self")({
     "Self": S.Int,
 }) {}
 
+export class PrimitiveKind extends S.Class<PrimitiveKind>("PrimitiveKind")({
+    "PrimitiveKind": S.Int,
+}) {}
+
 export class TypeClass extends S.Class<TypeClass>("TypeClass")({
     "type": S.Int,
 }) {}
@@ -328,13 +354,22 @@ export class SelfClass extends S.Class<SelfClass>("SelfClass")({
     "self": S.Int,
 }) {}
 
+export class KSerializer extends S.Class<KSerializer>("KSerializer")({
+    "KSerializer": S.Int,
+}) {}
+
 export class Obj5 extends S.Class<Obj5>("Obj5")({
     "dummy": S.Int,
+    "KSerializer": KSerializer,
     "self": SelfClass,
     "true": TrueClass,
     "type": TypeClass,
+    "PrimitiveKind": PrimitiveKind,
     "Self": Self,
     "Sendable": Sendable,
+    "SerialDescriptor": SerialDescriptor,
+    "SerialName": SerialName,
+    "Serializable": Serializable,
     "serialize": Serialize,
     "SerializerProvider": SerializerProvider,
     "set": Set,
@@ -387,13 +422,8 @@ export class Obj5 extends S.Class<Obj5>("Obj5")({
     "unowned": Unowned,
     "unsafe": Unsafe,
     "unsigned": Unsigned,
+    "UseSerializers": UseSerializers,
     "ushort": Ushort,
-    "using": Using,
-    "Utf8JsonReader": Utf8JsonReader,
-    "Utf8JsonWriter": Utf8JsonWriter,
-    "UUID": Uuid,
-    "var": Var,
-    "virtual": Virtual,
 }) {}
 Object.defineProperty(Obj5.prototype, "toString", { writable: true });
 
diff --git a/base/typescript-zod/test/inputs/json/priority/keywords.json/default/TopLevel.ts b/head/typescript-zod/test/inputs/json/priority/keywords.json/default/TopLevel.ts
index a06c975..2c30235 100644
--- a/base/typescript-zod/test/inputs/json/priority/keywords.json/default/TopLevel.ts
+++ b/head/typescript-zod/test/inputs/json/priority/keywords.json/default/TopLevel.ts
@@ -1287,6 +1287,11 @@ export const SelectSchema = z.object({
 });
 export type Select = z.infer<typeof SelectSchema>;
 
+export const KSerializerSchema = z.object({
+    "KSerializer": z.number().int(),
+});
+export type KSerializer = z.infer<typeof KSerializerSchema>;
+
 export const SelfClassSchema = z.object({
     "self": z.number().int(),
 });
@@ -1302,6 +1307,11 @@ export const TypeClassSchema = z.object({
 });
 export type TypeClass = z.infer<typeof TypeClassSchema>;
 
+export const PrimitiveKindSchema = z.object({
+    "PrimitiveKind": z.number().int(),
+});
+export type PrimitiveKind = z.infer<typeof PrimitiveKindSchema>;
+
 export const SelfSchema = z.object({
     "Self": z.number().int(),
 });
@@ -1312,6 +1322,21 @@ export const SendableSchema = z.object({
 });
 export type Sendable = z.infer<typeof SendableSchema>;
 
+export const SerialDescriptorSchema = z.object({
+    "SerialDescriptor": z.number().int(),
+});
+export type SerialDescriptor = z.infer<typeof SerialDescriptorSchema>;
+
+export const SerialNameSchema = z.object({
+    "SerialName": z.number().int(),
+});
+export type SerialName = z.infer<typeof SerialNameSchema>;
+
+export const SerializableSchema = z.object({
+    "Serializable": z.number().int(),
+});
+export type Serializable = z.infer<typeof SerializableSchema>;
+
 export const SerializeSchema = z.object({
     "serialize": z.number().int(),
 });
@@ -1572,6 +1597,11 @@ export const UnsignedSchema = z.object({
 });
 export type Unsigned = z.infer<typeof UnsignedSchema>;
 
+export const UseSerializersSchema = z.object({
+    "UseSerializers": z.number().int(),
+});
+export type UseSerializers = z.infer<typeof UseSerializersSchema>;
+
 export const UshortSchema = z.object({
     "ushort": z.number().int(),
 });
@@ -1945,11 +1975,16 @@ export type Obj4 = z.infer<typeof Obj4Schema>;
 
 export const Obj5Schema = z.object({
     "dummy": z.number().int(),
+    "KSerializer": KSerializerSchema,
     "self": SelfClassSchema,
     "true": TrueClassSchema,
     "type": TypeClassSchema,
+    "PrimitiveKind": PrimitiveKindSchema,
     "Self": SelfSchema,
     "Sendable": SendableSchema,
+    "SerialDescriptor": SerialDescriptorSchema,
+    "SerialName": SerialNameSchema,
+    "Serializable": SerializableSchema,
     "serialize": SerializeSchema,
     "SerializerProvider": SerializerProviderSchema,
     "set": SetSchema,
@@ -2002,18 +2037,19 @@ export const Obj5Schema = z.object({
     "unowned": UnownedSchema,
     "unsafe": UnsafeSchema,
     "unsigned": UnsignedSchema,
+    "UseSerializers": UseSerializersSchema,
     "ushort": UshortSchema,
+});
+export type Obj5 = z.infer<typeof Obj5Schema>;
+
+export const Obj6Schema = z.object({
+    "dummy": z.number().int(),
     "using": UsingSchema,
     "Utf8JsonReader": Utf8JsonReaderSchema,
     "Utf8JsonWriter": Utf8JsonWriterSchema,
     "UUID": UuidSchema,
     "var": VarSchema,
     "virtual": VirtualSchema,
-});
-export type Obj5 = z.infer<typeof Obj5Schema>;
-
-export const Obj6Schema = z.object({
-    "dummy": z.number().int(),
     "void": VoidSchema,
     "volatile": VolatileSchema,
     "wchar_t": WcharTSchema,
