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..f23b95d 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
@@ -188,6 +188,61 @@ void cJSON_DeleteArrayClass(struct ArrayClass * x) {
     }
 }
 
+struct ArrayNode * cJSON_ParseArrayNode(const char * s) {
+    struct ArrayNode * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetArrayNodeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct ArrayNode * cJSON_GetArrayNodeValue(const cJSON * j) {
+    struct ArrayNode * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct ArrayNode)))) {
+            memset(x, 0, sizeof(struct ArrayNode));
+            if (!cJSON_HasObjectItem(j, "ArrayNode")) { cJSON_DeleteArrayNode(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "ArrayNode")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "ArrayNode"))) { cJSON_DeleteArrayNode(x); return NULL; }
+                x->array_node = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "ArrayNode"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateArrayNode(const struct ArrayNode * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "ArrayNode", x->array_node);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintArrayNode(const struct ArrayNode * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateArrayNode(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteArrayNode(struct ArrayNode * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct As * cJSON_ParseAs(const char * s) {
     struct As * x = NULL;
     if (NULL != s) {
@@ -683,6 +738,61 @@ void cJSON_DeleteBoolean(struct Boolean * x) {
     }
 }
 
+struct BooleanNode * cJSON_ParseBooleanNode(const char * s) {
+    struct BooleanNode * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetBooleanNodeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct BooleanNode * cJSON_GetBooleanNodeValue(const cJSON * j) {
+    struct BooleanNode * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct BooleanNode)))) {
+            memset(x, 0, sizeof(struct BooleanNode));
+            if (!cJSON_HasObjectItem(j, "BooleanNode")) { cJSON_DeleteBooleanNode(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "BooleanNode")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "BooleanNode"))) { cJSON_DeleteBooleanNode(x); return NULL; }
+                x->boolean_node = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "BooleanNode"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateBooleanNode(const struct BooleanNode * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "BooleanNode", x->boolean_node);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintBooleanNode(const struct BooleanNode * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateBooleanNode(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteBooleanNode(struct BooleanNode * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Bycopy * cJSON_ParseBycopy(const char * s) {
     struct Bycopy * x = NULL;
     if (NULL != s) {
@@ -1563,116 +1673,6 @@ void cJSON_DeleteConverter(struct Converter * x) {
     }
 }
 
-struct CultureInfo * cJSON_ParseCultureInfo(const char * s) {
-    struct CultureInfo * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetCultureInfoValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct CultureInfo * cJSON_GetCultureInfoValue(const cJSON * j) {
-    struct CultureInfo * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct CultureInfo)))) {
-            memset(x, 0, sizeof(struct CultureInfo));
-            if (!cJSON_HasObjectItem(j, "CultureInfo")) { cJSON_DeleteCultureInfo(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "CultureInfo")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "CultureInfo"))) { cJSON_DeleteCultureInfo(x); return NULL; }
-                x->culture_info = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "CultureInfo"));
-            }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateCultureInfo(const struct CultureInfo * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "CultureInfo", x->culture_info);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintCultureInfo(const struct CultureInfo * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateCultureInfo(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteCultureInfo(struct CultureInfo * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
-struct Date * cJSON_ParseDate(const char * s) {
-    struct Date * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetDateValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct Date * cJSON_GetDateValue(const cJSON * j) {
-    struct Date * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Date)))) {
-            memset(x, 0, sizeof(struct Date));
-            if (!cJSON_HasObjectItem(j, "date")) { cJSON_DeleteDate(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "date")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "date"))) { cJSON_DeleteDate(x); return NULL; }
-                x->date = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "date"));
-            }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateDate(const struct Date * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "date", x->date);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintDate(const struct Date * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateDate(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteDate(struct Date * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
 struct Empty * cJSON_ParseEmpty(const char * s) {
     struct Empty * x = NULL;
     if (NULL != s) {
@@ -3578,6 +3578,12 @@ struct Obj1 * cJSON_GetObj1Value(const cJSON * j) {
                 x->array = cJSON_GetArrayClassValue(cJSON_GetObjectItemCaseSensitive(j, "array"));
                 if (NULL == x->array) { cJSON_DeleteObj1(x); return NULL; }
             }
+            if (!cJSON_HasObjectItem(j, "ArrayNode")) { cJSON_DeleteObj1(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "ArrayNode")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "ArrayNode"))) { cJSON_DeleteObj1(x); return NULL; }
+                x->array_node = cJSON_GetArrayNodeValue(cJSON_GetObjectItemCaseSensitive(j, "ArrayNode"));
+                if (NULL == x->array_node) { cJSON_DeleteObj1(x); return NULL; }
+            }
             if (!cJSON_HasObjectItem(j, "as")) { cJSON_DeleteObj1(x); return NULL; }
             if (cJSON_HasObjectItem(j, "as")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "as"))) { cJSON_DeleteObj1(x); return NULL; }
@@ -3632,6 +3638,12 @@ struct Obj1 * cJSON_GetObj1Value(const cJSON * j) {
                 x->boolean = cJSON_GetBooleanValue(cJSON_GetObjectItemCaseSensitive(j, "boolean"));
                 if (NULL == x->boolean) { cJSON_DeleteObj1(x); return NULL; }
             }
+            if (!cJSON_HasObjectItem(j, "BooleanNode")) { cJSON_DeleteObj1(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "BooleanNode")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "BooleanNode"))) { cJSON_DeleteObj1(x); return NULL; }
+                x->boolean_node = cJSON_GetBooleanNodeValue(cJSON_GetObjectItemCaseSensitive(j, "BooleanNode"));
+                if (NULL == x->boolean_node) { cJSON_DeleteObj1(x); return NULL; }
+            }
             if (!cJSON_HasObjectItem(j, "bycopy")) { cJSON_DeleteObj1(x); return NULL; }
             if (cJSON_HasObjectItem(j, "bycopy")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "bycopy"))) { cJSON_DeleteObj1(x); return NULL; }
@@ -3728,18 +3740,6 @@ struct Obj1 * cJSON_GetObj1Value(const cJSON * j) {
                 x->converter = cJSON_GetConverterValue(cJSON_GetObjectItemCaseSensitive(j, "converter"));
                 if (NULL == x->converter) { cJSON_DeleteObj1(x); return NULL; }
             }
-            if (!cJSON_HasObjectItem(j, "CultureInfo")) { cJSON_DeleteObj1(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "CultureInfo")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "CultureInfo"))) { cJSON_DeleteObj1(x); return NULL; }
-                x->culture_info = cJSON_GetCultureInfoValue(cJSON_GetObjectItemCaseSensitive(j, "CultureInfo"));
-                if (NULL == x->culture_info) { cJSON_DeleteObj1(x); return NULL; }
-            }
-            if (!cJSON_HasObjectItem(j, "date")) { cJSON_DeleteObj1(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "date")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "date"))) { cJSON_DeleteObj1(x); return NULL; }
-                x->date = cJSON_GetDateValue(cJSON_GetObjectItemCaseSensitive(j, "date"));
-                if (NULL == x->date) { cJSON_DeleteObj1(x); return NULL; }
-            }
             if (!cJSON_HasObjectItem(j, "dummy")) { cJSON_DeleteObj1(x); return NULL; }
             if (cJSON_HasObjectItem(j, "dummy")) {
                 if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "dummy"))) { cJSON_DeleteObj1(x); return NULL; }
@@ -3961,6 +3961,7 @@ cJSON * cJSON_CreateObj1(const struct Obj1 * x) {
             cJSON_AddItemToObject(j, "abstract", cJSON_CreateAbstract(x->abstract));
             cJSON_AddItemToObject(j, "Any", cJSON_CreateAny(x->any));
             cJSON_AddItemToObject(j, "array", cJSON_CreateArrayClass(x->array));
+            cJSON_AddItemToObject(j, "ArrayNode", cJSON_CreateArrayNode(x->array_node));
             cJSON_AddItemToObject(j, "as", cJSON_CreateAs(x->as));
             cJSON_AddItemToObject(j, "assert", cJSON_CreateAssert(x->assert));
             cJSON_AddItemToObject(j, "associatedtype", cJSON_CreateAssociatedtype(x->associatedtype));
@@ -3970,6 +3971,7 @@ cJSON * cJSON_CreateObj1(const struct Obj1 * x) {
             cJSON_AddItemToObject(j, "await", cJSON_CreateAwait(x->await));
             cJSON_AddItemToObject(j, "base", cJSON_CreateBase(x->base));
             cJSON_AddItemToObject(j, "boolean", cJSON_CreateBoolean(x->boolean));
+            cJSON_AddItemToObject(j, "BooleanNode", cJSON_CreateBooleanNode(x->boolean_node));
             cJSON_AddItemToObject(j, "bycopy", cJSON_CreateBycopy(x->bycopy));
             cJSON_AddItemToObject(j, "byref", cJSON_CreateByref(x->byref));
             cJSON_AddItemToObject(j, "byte", cJSON_CreateByte(x->byte));
@@ -3986,8 +3988,6 @@ cJSON * cJSON_CreateObj1(const struct Obj1 * x) {
             cJSON_AddItemToObject(j, "convenience", cJSON_CreateConvenience(x->convenience));
             cJSON_AddItemToObject(j, "convert", cJSON_CreateConvert(x->convert));
             cJSON_AddItemToObject(j, "converter", cJSON_CreateConverter(x->converter));
-            cJSON_AddItemToObject(j, "CultureInfo", cJSON_CreateCultureInfo(x->culture_info));
-            cJSON_AddItemToObject(j, "date", cJSON_CreateDate(x->date));
             cJSON_AddNumberToObject(j, "dummy", x->dummy);
             cJSON_AddItemToObject(j, "_", cJSON_CreateEmpty(x->empty));
             cJSON_AddItemToObject(j, "bool", cJSON_CreateObj1BoolClass(x->fluffy_bool));
@@ -4051,6 +4051,9 @@ void cJSON_DeleteObj1(struct Obj1 * x) {
         if (NULL != x->array) {
             cJSON_DeleteArrayClass(x->array);
         }
+        if (NULL != x->array_node) {
+            cJSON_DeleteArrayNode(x->array_node);
+        }
         if (NULL != x->as) {
             cJSON_DeleteAs(x->as);
         }
@@ -4078,6 +4081,9 @@ void cJSON_DeleteObj1(struct Obj1 * x) {
         if (NULL != x->boolean) {
             cJSON_DeleteBoolean(x->boolean);
         }
+        if (NULL != x->boolean_node) {
+            cJSON_DeleteBooleanNode(x->boolean_node);
+        }
         if (NULL != x->bycopy) {
             cJSON_DeleteBycopy(x->bycopy);
         }
@@ -4126,12 +4132,6 @@ void cJSON_DeleteObj1(struct Obj1 * x) {
         if (NULL != x->converter) {
             cJSON_DeleteConverter(x->converter);
         }
-        if (NULL != x->culture_info) {
-            cJSON_DeleteCultureInfo(x->culture_info);
-        }
-        if (NULL != x->date) {
-            cJSON_DeleteDate(x->date);
-        }
         if (NULL != x->empty) {
             cJSON_DeleteEmpty(x->empty);
         }
@@ -4238,47 +4238,47 @@ void cJSON_DeleteObj1(struct Obj1 * x) {
     }
 }
 
-struct DateFormatter * cJSON_ParseDateFormatter(const char * s) {
-    struct DateFormatter * x = NULL;
+struct CultureInfo * cJSON_ParseCultureInfo(const char * s) {
+    struct CultureInfo * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetDateFormatterValue(j);
+            x = cJSON_GetCultureInfoValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct DateFormatter * cJSON_GetDateFormatterValue(const cJSON * j) {
-    struct DateFormatter * x = NULL;
+struct CultureInfo * cJSON_GetCultureInfoValue(const cJSON * j) {
+    struct CultureInfo * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct DateFormatter)))) {
-            memset(x, 0, sizeof(struct DateFormatter));
-            if (!cJSON_HasObjectItem(j, "DateFormatter")) { cJSON_DeleteDateFormatter(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "DateFormatter")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "DateFormatter"))) { cJSON_DeleteDateFormatter(x); return NULL; }
-                x->date_formatter = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "DateFormatter"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct CultureInfo)))) {
+            memset(x, 0, sizeof(struct CultureInfo));
+            if (!cJSON_HasObjectItem(j, "CultureInfo")) { cJSON_DeleteCultureInfo(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "CultureInfo")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "CultureInfo"))) { cJSON_DeleteCultureInfo(x); return NULL; }
+                x->culture_info = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "CultureInfo"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateDateFormatter(const struct DateFormatter * x) {
+cJSON * cJSON_CreateCultureInfo(const struct CultureInfo * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "DateFormatter", x->date_formatter);
+            cJSON_AddNumberToObject(j, "CultureInfo", x->culture_info);
         }
     }
     return j;
 }
 
-char * cJSON_PrintDateFormatter(const struct DateFormatter * x) {
+char * cJSON_PrintCultureInfo(const struct CultureInfo * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateDateFormatter(x);
+        cJSON * j = cJSON_CreateCultureInfo(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -4287,35 +4287,145 @@ char * cJSON_PrintDateFormatter(const struct DateFormatter * x) {
     return s;
 }
 
-void cJSON_DeleteDateFormatter(struct DateFormatter * x) {
+void cJSON_DeleteCultureInfo(struct CultureInfo * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct DateOnly * cJSON_ParseDateOnly(const char * s) {
-    struct DateOnly * x = NULL;
+struct Date * cJSON_ParseDate(const char * s) {
+    struct Date * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetDateOnlyValue(j);
+            x = cJSON_GetDateValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct DateOnly * cJSON_GetDateOnlyValue(const cJSON * j) {
-    struct DateOnly * x = NULL;
+struct Date * cJSON_GetDateValue(const cJSON * j) {
+    struct Date * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct DateOnly)))) {
-            memset(x, 0, sizeof(struct DateOnly));
-            if (!cJSON_HasObjectItem(j, "DateOnly")) { cJSON_DeleteDateOnly(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "DateOnly")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "DateOnly"))) { cJSON_DeleteDateOnly(x); return NULL; }
-                x->date_only = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "DateOnly"));
-            }
-        }
+        if (NULL != (x = cJSON_malloc(sizeof(struct Date)))) {
+            memset(x, 0, sizeof(struct Date));
+            if (!cJSON_HasObjectItem(j, "date")) { cJSON_DeleteDate(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "date")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "date"))) { cJSON_DeleteDate(x); return NULL; }
+                x->date = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "date"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateDate(const struct Date * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "date", x->date);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintDate(const struct Date * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateDate(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteDate(struct Date * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct DateFormatter * cJSON_ParseDateFormatter(const char * s) {
+    struct DateFormatter * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetDateFormatterValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct DateFormatter * cJSON_GetDateFormatterValue(const cJSON * j) {
+    struct DateFormatter * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct DateFormatter)))) {
+            memset(x, 0, sizeof(struct DateFormatter));
+            if (!cJSON_HasObjectItem(j, "DateFormatter")) { cJSON_DeleteDateFormatter(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "DateFormatter")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "DateFormatter"))) { cJSON_DeleteDateFormatter(x); return NULL; }
+                x->date_formatter = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "DateFormatter"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateDateFormatter(const struct DateFormatter * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "DateFormatter", x->date_formatter);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintDateFormatter(const struct DateFormatter * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateDateFormatter(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteDateFormatter(struct DateFormatter * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct DateOnly * cJSON_ParseDateOnly(const char * s) {
+    struct DateOnly * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetDateOnlyValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct DateOnly * cJSON_GetDateOnlyValue(const cJSON * j) {
+    struct DateOnly * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct DateOnly)))) {
+            memset(x, 0, sizeof(struct DateOnly));
+            if (!cJSON_HasObjectItem(j, "DateOnly")) { cJSON_DeleteDateOnly(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "DateOnly")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "DateOnly"))) { cJSON_DeleteDateOnly(x); return NULL; }
+                x->date_only = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "DateOnly"));
+            }
+        }
     }
     return x;
 }
@@ -5186,6 +5296,61 @@ void cJSON_DeleteDelegate(struct Delegate * x) {
     }
 }
 
+struct DeserializationFeature * cJSON_ParseDeserializationFeature(const char * s) {
+    struct DeserializationFeature * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetDeserializationFeatureValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct DeserializationFeature * cJSON_GetDeserializationFeatureValue(const cJSON * j) {
+    struct DeserializationFeature * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct DeserializationFeature)))) {
+            memset(x, 0, sizeof(struct DeserializationFeature));
+            if (!cJSON_HasObjectItem(j, "DeserializationFeature")) { cJSON_DeleteDeserializationFeature(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "DeserializationFeature")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "DeserializationFeature"))) { cJSON_DeleteDeserializationFeature(x); return NULL; }
+                x->deserialization_feature = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "DeserializationFeature"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateDeserializationFeature(const struct DeserializationFeature * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "DeserializationFeature", x->deserialization_feature);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintDeserializationFeature(const struct DeserializationFeature * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateDeserializationFeature(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteDeserializationFeature(struct DeserializationFeature * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Dict * cJSON_ParseDict(const char * s) {
     struct Dict * x = NULL;
     if (NULL != s) {
@@ -5351,6 +5516,61 @@ void cJSON_DeleteDidSet(struct DidSet * x) {
     }
 }
 
+struct DoubleNode * cJSON_ParseDoubleNode(const char * s) {
+    struct DoubleNode * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetDoubleNodeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct DoubleNode * cJSON_GetDoubleNodeValue(const cJSON * j) {
+    struct DoubleNode * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct DoubleNode)))) {
+            memset(x, 0, sizeof(struct DoubleNode));
+            if (!cJSON_HasObjectItem(j, "DoubleNode")) { cJSON_DeleteDoubleNode(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "DoubleNode")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "DoubleNode"))) { cJSON_DeleteDoubleNode(x); return NULL; }
+                x->double_node = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "DoubleNode"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateDoubleNode(const struct DoubleNode * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "DoubleNode", x->double_node);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintDoubleNode(const struct DoubleNode * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateDoubleNode(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteDoubleNode(struct DoubleNode * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Dynamic * cJSON_ParseDynamic(const char * s) {
     struct Dynamic * x = NULL;
     if (NULL != s) {
@@ -6648,47 +6868,47 @@ void cJSON_DeleteFunction(struct Function * x) {
     }
 }
 
-struct Get * cJSON_ParseGet(const char * s) {
-    struct Get * x = NULL;
+struct Decltype * cJSON_ParseDecltype(const char * s) {
+    struct Decltype * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetGetValue(j);
+            x = cJSON_GetDecltypeValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Get * cJSON_GetGetValue(const cJSON * j) {
-    struct Get * x = NULL;
+struct Decltype * cJSON_GetDecltypeValue(const cJSON * j) {
+    struct Decltype * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Get)))) {
-            memset(x, 0, sizeof(struct Get));
-            if (!cJSON_HasObjectItem(j, "get")) { cJSON_DeleteGet(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "get")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "get"))) { cJSON_DeleteGet(x); return NULL; }
-                x->get = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "get"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Decltype)))) {
+            memset(x, 0, sizeof(struct Decltype));
+            if (!cJSON_HasObjectItem(j, "decltype")) { cJSON_DeleteDecltype(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "decltype")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "decltype"))) { cJSON_DeleteDecltype(x); return NULL; }
+                x->decltype_decltype = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "decltype"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateGet(const struct Get * x) {
+cJSON * cJSON_CreateDecltype(const struct Decltype * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "get", x->get);
+            cJSON_AddNumberToObject(j, "decltype", x->decltype_decltype);
         }
     }
     return j;
 }
 
-char * cJSON_PrintGet(const struct Get * x) {
+char * cJSON_PrintDecltype(const struct Decltype * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateGet(x);
+        cJSON * j = cJSON_CreateDecltype(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -6697,215 +6917,50 @@ char * cJSON_PrintGet(const struct Get * x) {
     return s;
 }
 
-void cJSON_DeleteGet(struct Get * x) {
+void cJSON_DeleteDecltype(struct Decltype * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Global * cJSON_ParseGlobal(const char * s) {
-    struct Global * x = NULL;
+struct Default * cJSON_ParseDefault(const char * s) {
+    struct Default * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetGlobalValue(j);
+            x = cJSON_GetDefaultValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Global * cJSON_GetGlobalValue(const cJSON * j) {
-    struct Global * x = NULL;
+struct Default * cJSON_GetDefaultValue(const cJSON * j) {
+    struct Default * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Global)))) {
-            memset(x, 0, sizeof(struct Global));
-            if (!cJSON_HasObjectItem(j, "global")) { cJSON_DeleteGlobal(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "global")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "global"))) { cJSON_DeleteGlobal(x); return NULL; }
-                x->global = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "global"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Default)))) {
+            memset(x, 0, sizeof(struct Default));
+            if (!cJSON_HasObjectItem(j, "default")) { cJSON_DeleteDefault(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "default")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "default"))) { cJSON_DeleteDefault(x); return NULL; }
+                x->default_default = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "default"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateGlobal(const struct Global * x) {
+cJSON * cJSON_CreateDefault(const struct Default * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "global", x->global);
+            cJSON_AddNumberToObject(j, "default", x->default_default);
         }
     }
     return j;
 }
 
-char * cJSON_PrintGlobal(const struct Global * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateGlobal(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteGlobal(struct Global * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
-struct Go * cJSON_ParseGo(const char * s) {
-    struct Go * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetGoValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct Go * cJSON_GetGoValue(const cJSON * j) {
-    struct Go * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Go)))) {
-            memset(x, 0, sizeof(struct Go));
-            if (!cJSON_HasObjectItem(j, "go")) { cJSON_DeleteGo(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "go")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "go"))) { cJSON_DeleteGo(x); return NULL; }
-                x->go = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "go"));
-            }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateGo(const struct Go * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "go", x->go);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintGo(const struct Go * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateGo(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteGo(struct Go * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
-struct Decltype * cJSON_ParseDecltype(const char * s) {
-    struct Decltype * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetDecltypeValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct Decltype * cJSON_GetDecltypeValue(const cJSON * j) {
-    struct Decltype * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Decltype)))) {
-            memset(x, 0, sizeof(struct Decltype));
-            if (!cJSON_HasObjectItem(j, "decltype")) { cJSON_DeleteDecltype(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "decltype")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "decltype"))) { cJSON_DeleteDecltype(x); return NULL; }
-                x->decltype_decltype = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "decltype"));
-            }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateDecltype(const struct Decltype * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "decltype", x->decltype_decltype);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintDecltype(const struct Decltype * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateDecltype(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteDecltype(struct Decltype * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
-struct Default * cJSON_ParseDefault(const char * s) {
-    struct Default * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetDefaultValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct Default * cJSON_GetDefaultValue(const cJSON * j) {
-    struct Default * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Default)))) {
-            memset(x, 0, sizeof(struct Default));
-            if (!cJSON_HasObjectItem(j, "default")) { cJSON_DeleteDefault(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "default")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "default"))) { cJSON_DeleteDefault(x); return NULL; }
-                x->default_default = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "default"));
-            }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateDefault(const struct Default * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "default", x->default_default);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintDefault(const struct Default * x) {
+char * cJSON_PrintDefault(const struct Default * x) {
     char * s = NULL;
     if (NULL != x) {
         cJSON * j = cJSON_CreateDefault(x);
@@ -7693,61 +7748,6 @@ void cJSON_DeleteFriend(struct Friend * x) {
     }
 }
 
-struct Goto * cJSON_ParseGoto(const char * s) {
-    struct Goto * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetGotoValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct Goto * cJSON_GetGotoValue(const cJSON * j) {
-    struct Goto * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Goto)))) {
-            memset(x, 0, sizeof(struct Goto));
-            if (!cJSON_HasObjectItem(j, "goto")) { cJSON_DeleteGoto(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "goto")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "goto"))) { cJSON_DeleteGoto(x); return NULL; }
-                x->goto_goto = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "goto"));
-            }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateGoto(const struct Goto * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "goto", x->goto_goto);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintGoto(const struct Goto * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateGoto(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteGoto(struct Goto * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
 struct Obj2False * cJSON_ParseObj2False(const char * s) {
     struct Obj2False * x = NULL;
     if (NULL != s) {
@@ -7820,6 +7820,18 @@ struct Obj2 * cJSON_GetObj2Value(const cJSON * j) {
     if (NULL != j) {
         if (NULL != (x = cJSON_malloc(sizeof(struct Obj2)))) {
             memset(x, 0, sizeof(struct Obj2));
+            if (!cJSON_HasObjectItem(j, "CultureInfo")) { cJSON_DeleteObj2(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "CultureInfo")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "CultureInfo"))) { cJSON_DeleteObj2(x); return NULL; }
+                x->culture_info = cJSON_GetCultureInfoValue(cJSON_GetObjectItemCaseSensitive(j, "CultureInfo"));
+                if (NULL == x->culture_info) { cJSON_DeleteObj2(x); return NULL; }
+            }
+            if (!cJSON_HasObjectItem(j, "date")) { cJSON_DeleteObj2(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "date")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "date"))) { cJSON_DeleteObj2(x); return NULL; }
+                x->date = cJSON_GetDateValue(cJSON_GetObjectItemCaseSensitive(j, "date"));
+                if (NULL == x->date) { cJSON_DeleteObj2(x); return NULL; }
+            }
             if (!cJSON_HasObjectItem(j, "DateFormatter")) { cJSON_DeleteObj2(x); return NULL; }
             if (cJSON_HasObjectItem(j, "DateFormatter")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "DateFormatter"))) { cJSON_DeleteObj2(x); return NULL; }
@@ -7922,6 +7934,12 @@ struct Obj2 * cJSON_GetObj2Value(const cJSON * j) {
                 x->delegate = cJSON_GetDelegateValue(cJSON_GetObjectItemCaseSensitive(j, "delegate"));
                 if (NULL == x->delegate) { cJSON_DeleteObj2(x); return NULL; }
             }
+            if (!cJSON_HasObjectItem(j, "DeserializationFeature")) { cJSON_DeleteObj2(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "DeserializationFeature")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "DeserializationFeature"))) { cJSON_DeleteObj2(x); return NULL; }
+                x->deserialization_feature = cJSON_GetDeserializationFeatureValue(cJSON_GetObjectItemCaseSensitive(j, "DeserializationFeature"));
+                if (NULL == x->deserialization_feature) { cJSON_DeleteObj2(x); return NULL; }
+            }
             if (!cJSON_HasObjectItem(j, "dict")) { cJSON_DeleteObj2(x); return NULL; }
             if (cJSON_HasObjectItem(j, "dict")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "dict"))) { cJSON_DeleteObj2(x); return NULL; }
@@ -7940,6 +7958,12 @@ struct Obj2 * cJSON_GetObj2Value(const cJSON * j) {
                 x->did_set = cJSON_GetDidSetValue(cJSON_GetObjectItemCaseSensitive(j, "didSet"));
                 if (NULL == x->did_set) { cJSON_DeleteObj2(x); return NULL; }
             }
+            if (!cJSON_HasObjectItem(j, "DoubleNode")) { cJSON_DeleteObj2(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "DoubleNode")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "DoubleNode"))) { cJSON_DeleteObj2(x); return NULL; }
+                x->double_node = cJSON_GetDoubleNodeValue(cJSON_GetObjectItemCaseSensitive(j, "DoubleNode"));
+                if (NULL == x->double_node) { cJSON_DeleteObj2(x); return NULL; }
+            }
             if (!cJSON_HasObjectItem(j, "dummy")) { cJSON_DeleteObj2(x); return NULL; }
             if (cJSON_HasObjectItem(j, "dummy")) {
                 if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "dummy"))) { cJSON_DeleteObj2(x); return NULL; }
@@ -8083,24 +8107,6 @@ struct Obj2 * cJSON_GetObj2Value(const cJSON * j) {
                 x->function = cJSON_GetFunctionValue(cJSON_GetObjectItemCaseSensitive(j, "function"));
                 if (NULL == x->function) { cJSON_DeleteObj2(x); return NULL; }
             }
-            if (!cJSON_HasObjectItem(j, "get")) { cJSON_DeleteObj2(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "get")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "get"))) { cJSON_DeleteObj2(x); return NULL; }
-                x->get = cJSON_GetGetValue(cJSON_GetObjectItemCaseSensitive(j, "get"));
-                if (NULL == x->get) { cJSON_DeleteObj2(x); return NULL; }
-            }
-            if (!cJSON_HasObjectItem(j, "global")) { cJSON_DeleteObj2(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "global")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "global"))) { cJSON_DeleteObj2(x); return NULL; }
-                x->global = cJSON_GetGlobalValue(cJSON_GetObjectItemCaseSensitive(j, "global"));
-                if (NULL == x->global) { cJSON_DeleteObj2(x); return NULL; }
-            }
-            if (!cJSON_HasObjectItem(j, "go")) { cJSON_DeleteObj2(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "go")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "go"))) { cJSON_DeleteObj2(x); return NULL; }
-                x->go = cJSON_GetGoValue(cJSON_GetObjectItemCaseSensitive(j, "go"));
-                if (NULL == x->go) { cJSON_DeleteObj2(x); return NULL; }
-            }
             if (!cJSON_HasObjectItem(j, "decltype")) { cJSON_DeleteObj2(x); return NULL; }
             if (cJSON_HasObjectItem(j, "decltype")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "decltype"))) { cJSON_DeleteObj2(x); return NULL; }
@@ -8197,12 +8203,6 @@ struct Obj2 * cJSON_GetObj2Value(const cJSON * j) {
                 x->obj2_friend = cJSON_GetFriendValue(cJSON_GetObjectItemCaseSensitive(j, "friend"));
                 if (NULL == x->obj2_friend) { cJSON_DeleteObj2(x); return NULL; }
             }
-            if (!cJSON_HasObjectItem(j, "goto")) { cJSON_DeleteObj2(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "goto")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "goto"))) { cJSON_DeleteObj2(x); return NULL; }
-                x->obj2_goto = cJSON_GetGotoValue(cJSON_GetObjectItemCaseSensitive(j, "goto"));
-                if (NULL == x->obj2_goto) { cJSON_DeleteObj2(x); return NULL; }
-            }
             if (!cJSON_HasObjectItem(j, "false")) { cJSON_DeleteObj2(x); return NULL; }
             if (cJSON_HasObjectItem(j, "false")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "false"))) { cJSON_DeleteObj2(x); return NULL; }
@@ -8218,6 +8218,8 @@ cJSON * cJSON_CreateObj2(const struct Obj2 * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddItemToObject(j, "CultureInfo", cJSON_CreateCultureInfo(x->culture_info));
+            cJSON_AddItemToObject(j, "date", cJSON_CreateDate(x->date));
             cJSON_AddItemToObject(j, "DateFormatter", cJSON_CreateDateFormatter(x->date_formatter));
             cJSON_AddItemToObject(j, "DateOnly", cJSON_CreateDateOnly(x->date_only));
             cJSON_AddItemToObject(j, "DateOnlyConverter", cJSON_CreateDateOnlyConverter(x->date_only_converter));
@@ -8235,9 +8237,11 @@ cJSON * cJSON_CreateObj2(const struct Obj2 * x) {
             cJSON_AddItemToObject(j, "deinit", cJSON_CreateDeinit(x->deinit));
             cJSON_AddItemToObject(j, "del", cJSON_CreateDel(x->del));
             cJSON_AddItemToObject(j, "delegate", cJSON_CreateDelegate(x->delegate));
+            cJSON_AddItemToObject(j, "DeserializationFeature", cJSON_CreateDeserializationFeature(x->deserialization_feature));
             cJSON_AddItemToObject(j, "dict", cJSON_CreateDict(x->dict));
             cJSON_AddItemToObject(j, "dictionary", cJSON_CreateDictionary(x->dictionary));
             cJSON_AddItemToObject(j, "didSet", cJSON_CreateDidSet(x->did_set));
+            cJSON_AddItemToObject(j, "DoubleNode", cJSON_CreateDoubleNode(x->double_node));
             cJSON_AddNumberToObject(j, "dummy", x->dummy);
             cJSON_AddItemToObject(j, "dynamic", cJSON_CreateDynamic(x->dynamic));
             cJSON_AddItemToObject(j, "elif", cJSON_CreateElif(x->elif));
@@ -8262,9 +8266,6 @@ cJSON * cJSON_CreateObj2(const struct Obj2 * x) {
             cJSON_AddItemToObject(j, "from_json", cJSON_CreateFromJson(x->from_json));
             cJSON_AddItemToObject(j, "func", cJSON_CreateFunc(x->func));
             cJSON_AddItemToObject(j, "function", cJSON_CreateFunction(x->function));
-            cJSON_AddItemToObject(j, "get", cJSON_CreateGet(x->get));
-            cJSON_AddItemToObject(j, "global", cJSON_CreateGlobal(x->global));
-            cJSON_AddItemToObject(j, "go", cJSON_CreateGo(x->go));
             cJSON_AddItemToObject(j, "decltype", cJSON_CreateDecltype(x->obj2_decltype));
             cJSON_AddItemToObject(j, "default", cJSON_CreateDefault(x->obj2_default));
             cJSON_AddItemToObject(j, "delete", cJSON_CreateDelete(x->obj2_delete));
@@ -8281,7 +8282,6 @@ cJSON * cJSON_CreateObj2(const struct Obj2 * x) {
             cJSON_AddItemToObject(j, "float", cJSON_CreateFloat(x->obj2_float));
             cJSON_AddItemToObject(j, "for", cJSON_CreateFor(x->obj2_for));
             cJSON_AddItemToObject(j, "friend", cJSON_CreateFriend(x->obj2_friend));
-            cJSON_AddItemToObject(j, "goto", cJSON_CreateGoto(x->obj2_goto));
             cJSON_AddItemToObject(j, "false", cJSON_CreateObj2False(x->purple_false));
         }
     }
@@ -8302,6 +8302,12 @@ char * cJSON_PrintObj2(const struct Obj2 * x) {
 
 void cJSON_DeleteObj2(struct Obj2 * x) {
     if (NULL != x) {
+        if (NULL != x->culture_info) {
+            cJSON_DeleteCultureInfo(x->culture_info);
+        }
+        if (NULL != x->date) {
+            cJSON_DeleteDate(x->date);
+        }
         if (NULL != x->date_formatter) {
             cJSON_DeleteDateFormatter(x->date_formatter);
         }
@@ -8353,6 +8359,9 @@ void cJSON_DeleteObj2(struct Obj2 * x) {
         if (NULL != x->delegate) {
             cJSON_DeleteDelegate(x->delegate);
         }
+        if (NULL != x->deserialization_feature) {
+            cJSON_DeleteDeserializationFeature(x->deserialization_feature);
+        }
         if (NULL != x->dict) {
             cJSON_DeleteDict(x->dict);
         }
@@ -8362,6 +8371,9 @@ void cJSON_DeleteObj2(struct Obj2 * x) {
         if (NULL != x->did_set) {
             cJSON_DeleteDidSet(x->did_set);
         }
+        if (NULL != x->double_node) {
+            cJSON_DeleteDoubleNode(x->double_node);
+        }
         if (NULL != x->dynamic) {
             cJSON_DeleteDynamic(x->dynamic);
         }
@@ -8431,17 +8443,8 @@ void cJSON_DeleteObj2(struct Obj2 * x) {
         if (NULL != x->function) {
             cJSON_DeleteFunction(x->function);
         }
-        if (NULL != x->get) {
-            cJSON_DeleteGet(x->get);
-        }
-        if (NULL != x->global) {
-            cJSON_DeleteGlobal(x->global);
-        }
-        if (NULL != x->go) {
-            cJSON_DeleteGo(x->go);
-        }
-        if (NULL != x->obj2_decltype) {
-            cJSON_DeleteDecltype(x->obj2_decltype);
+        if (NULL != x->obj2_decltype) {
+            cJSON_DeleteDecltype(x->obj2_decltype);
         }
         if (NULL != x->obj2_default) {
             cJSON_DeleteDefault(x->obj2_default);
@@ -8488,9 +8491,6 @@ void cJSON_DeleteObj2(struct Obj2 * x) {
         if (NULL != x->obj2_friend) {
             cJSON_DeleteFriend(x->obj2_friend);
         }
-        if (NULL != x->obj2_goto) {
-            cJSON_DeleteGoto(x->obj2_goto);
-        }
         if (NULL != x->purple_false) {
             cJSON_DeleteObj2False(x->purple_false);
         }
@@ -8498,6 +8498,171 @@ void cJSON_DeleteObj2(struct Obj2 * x) {
     }
 }
 
+struct Get * cJSON_ParseGet(const char * s) {
+    struct Get * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetGetValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct Get * cJSON_GetGetValue(const cJSON * j) {
+    struct Get * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct Get)))) {
+            memset(x, 0, sizeof(struct Get));
+            if (!cJSON_HasObjectItem(j, "get")) { cJSON_DeleteGet(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "get")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "get"))) { cJSON_DeleteGet(x); return NULL; }
+                x->get = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "get"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateGet(const struct Get * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "get", x->get);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintGet(const struct Get * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateGet(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteGet(struct Get * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct Global * cJSON_ParseGlobal(const char * s) {
+    struct Global * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetGlobalValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct Global * cJSON_GetGlobalValue(const cJSON * j) {
+    struct Global * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct Global)))) {
+            memset(x, 0, sizeof(struct Global));
+            if (!cJSON_HasObjectItem(j, "global")) { cJSON_DeleteGlobal(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "global")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "global"))) { cJSON_DeleteGlobal(x); return NULL; }
+                x->global = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "global"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateGlobal(const struct Global * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "global", x->global);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintGlobal(const struct Global * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateGlobal(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteGlobal(struct Global * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct Go * cJSON_ParseGo(const char * s) {
+    struct Go * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetGoValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct Go * cJSON_GetGoValue(const cJSON * j) {
+    struct Go * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct Go)))) {
+            memset(x, 0, sizeof(struct Go));
+            if (!cJSON_HasObjectItem(j, "go")) { cJSON_DeleteGo(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "go")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "go"))) { cJSON_DeleteGo(x); return NULL; }
+                x->go = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "go"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateGo(const struct Go * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "go", x->go);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintGo(const struct Go * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateGo(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteGo(struct Go * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Guard * cJSON_ParseGuard(const char * s) {
     struct Guard * x = NULL;
     if (NULL != s) {
@@ -9323,6 +9488,61 @@ void cJSON_DeleteInstanceof(struct Instanceof * x) {
     }
 }
 
+struct IntNode * cJSON_ParseIntNode(const char * s) {
+    struct IntNode * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetIntNodeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct IntNode * cJSON_GetIntNodeValue(const cJSON * j) {
+    struct IntNode * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct IntNode)))) {
+            memset(x, 0, sizeof(struct IntNode));
+            if (!cJSON_HasObjectItem(j, "IntNode")) { cJSON_DeleteIntNode(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "IntNode")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "IntNode"))) { cJSON_DeleteIntNode(x); return NULL; }
+                x->int_node = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "IntNode"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateIntNode(const struct IntNode * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "IntNode", x->int_node);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintIntNode(const struct IntNode * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateIntNode(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteIntNode(struct IntNode * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Interface * cJSON_ParseInterface(const char * s) {
     struct Interface * x = NULL;
     if (NULL != s) {
@@ -11031,6 +11251,61 @@ void cJSON_DeleteLock(struct Lock * x) {
     }
 }
 
+struct LongNode * cJSON_ParseLongNode(const char * s) {
+    struct LongNode * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetLongNodeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct LongNode * cJSON_GetLongNodeValue(const cJSON * j) {
+    struct LongNode * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct LongNode)))) {
+            memset(x, 0, sizeof(struct LongNode));
+            if (!cJSON_HasObjectItem(j, "LongNode")) { cJSON_DeleteLongNode(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "LongNode")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "LongNode"))) { cJSON_DeleteLongNode(x); return NULL; }
+                x->long_node = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "LongNode"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateLongNode(const struct LongNode * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "LongNode", x->long_node);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintLongNode(const struct LongNode * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateLongNode(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteLongNode(struct LongNode * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Map * cJSON_ParseMap(const char * s) {
     struct Map * x = NULL;
     if (NULL != s) {
@@ -11251,212 +11526,47 @@ void cJSON_DeleteMutating(struct Mutating * x) {
     }
 }
 
-struct Native * cJSON_ParseNative(const char * s) {
-    struct Native * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetNativeValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct Native * cJSON_GetNativeValue(const cJSON * j) {
-    struct Native * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Native)))) {
-            memset(x, 0, sizeof(struct Native));
-            if (!cJSON_HasObjectItem(j, "native")) { cJSON_DeleteNative(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "native")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "native"))) { cJSON_DeleteNative(x); return NULL; }
-                x->native = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "native"));
-            }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateNative(const struct Native * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "native", x->native);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintNative(const struct Native * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateNative(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteNative(struct Native * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
-struct Newtonsoft * cJSON_ParseNewtonsoft(const char * s) {
-    struct Newtonsoft * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetNewtonsoftValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct Newtonsoft * cJSON_GetNewtonsoftValue(const cJSON * j) {
-    struct Newtonsoft * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Newtonsoft)))) {
-            memset(x, 0, sizeof(struct Newtonsoft));
-            if (!cJSON_HasObjectItem(j, "newtonsoft")) { cJSON_DeleteNewtonsoft(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "newtonsoft")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "newtonsoft"))) { cJSON_DeleteNewtonsoft(x); return NULL; }
-                x->newtonsoft = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "newtonsoft"));
-            }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateNewtonsoft(const struct Newtonsoft * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "newtonsoft", x->newtonsoft);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintNewtonsoft(const struct Newtonsoft * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateNewtonsoft(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteNewtonsoft(struct Newtonsoft * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
-struct Nil * cJSON_ParseNil(const char * s) {
-    struct Nil * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetNilValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct Nil * cJSON_GetNilValue(const cJSON * j) {
-    struct Nil * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Nil)))) {
-            memset(x, 0, sizeof(struct Nil));
-            if (!cJSON_HasObjectItem(j, "nil")) { cJSON_DeleteNil(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "nil")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "nil"))) { cJSON_DeleteNil(x); return NULL; }
-                x->nil = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "nil"));
-            }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateNil(const struct Nil * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "nil", x->nil);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintNil(const struct Nil * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateNil(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteNil(struct Nil * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
-struct No * cJSON_ParseNo(const char * s) {
-    struct No * x = NULL;
+struct Goto * cJSON_ParseGoto(const char * s) {
+    struct Goto * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetNoValue(j);
+            x = cJSON_GetGotoValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct No * cJSON_GetNoValue(const cJSON * j) {
-    struct No * x = NULL;
+struct Goto * cJSON_GetGotoValue(const cJSON * j) {
+    struct Goto * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct No)))) {
-            memset(x, 0, sizeof(struct No));
-            if (!cJSON_HasObjectItem(j, "NO")) { cJSON_DeleteNo(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "NO")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "NO"))) { cJSON_DeleteNo(x); return NULL; }
-                x->no = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "NO"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Goto)))) {
+            memset(x, 0, sizeof(struct Goto));
+            if (!cJSON_HasObjectItem(j, "goto")) { cJSON_DeleteGoto(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "goto")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "goto"))) { cJSON_DeleteGoto(x); return NULL; }
+                x->goto_goto = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "goto"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateNo(const struct No * x) {
+cJSON * cJSON_CreateGoto(const struct Goto * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "NO", x->no);
+            cJSON_AddNumberToObject(j, "goto", x->goto_goto);
         }
     }
     return j;
 }
 
-char * cJSON_PrintNo(const struct No * x) {
+char * cJSON_PrintGoto(const struct Goto * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateNo(x);
+        cJSON * j = cJSON_CreateGoto(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -11465,7 +11575,7 @@ char * cJSON_PrintNo(const struct No * x) {
     return s;
 }
 
-void cJSON_DeleteNo(struct No * x) {
+void cJSON_DeleteGoto(struct Goto * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
@@ -11911,137 +12021,45 @@ void cJSON_DeleteNamespace(struct Namespace * x) {
     }
 }
 
-struct New * cJSON_ParseNew(const char * s) {
-    struct New * x = NULL;
+struct Obj3 * cJSON_ParseObj3(const char * s) {
+    struct Obj3 * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetNewValue(j);
+            x = cJSON_GetObj3Value(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct New * cJSON_GetNewValue(const cJSON * j) {
-    struct New * x = NULL;
+struct Obj3 * cJSON_GetObj3Value(const cJSON * j) {
+    struct Obj3 * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct New)))) {
-            memset(x, 0, sizeof(struct New));
-            if (!cJSON_HasObjectItem(j, "new")) { cJSON_DeleteNew(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "new")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "new"))) { cJSON_DeleteNew(x); return NULL; }
-                x->new_new = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "new"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Obj3)))) {
+            memset(x, 0, sizeof(struct Obj3));
+            if (!cJSON_HasObjectItem(j, "dummy")) { cJSON_DeleteObj3(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "dummy")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "dummy"))) { cJSON_DeleteObj3(x); return NULL; }
+                x->dummy = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "dummy"));
             }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateNew(const struct New * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "new", x->new_new);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintNew(const struct New * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateNew(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteNew(struct New * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
-struct Noexcept * cJSON_ParseNoexcept(const char * s) {
-    struct Noexcept * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetNoexceptValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct Noexcept * cJSON_GetNoexceptValue(const cJSON * j) {
-    struct Noexcept * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Noexcept)))) {
-            memset(x, 0, sizeof(struct Noexcept));
-            if (!cJSON_HasObjectItem(j, "noexcept")) { cJSON_DeleteNoexcept(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "noexcept")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "noexcept"))) { cJSON_DeleteNoexcept(x); return NULL; }
-                x->noexcept_noexcept = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "noexcept"));
+            if (!cJSON_HasObjectItem(j, "get")) { cJSON_DeleteObj3(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "get")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "get"))) { cJSON_DeleteObj3(x); return NULL; }
+                x->get = cJSON_GetGetValue(cJSON_GetObjectItemCaseSensitive(j, "get"));
+                if (NULL == x->get) { cJSON_DeleteObj3(x); return NULL; }
             }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateNoexcept(const struct Noexcept * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "noexcept", x->noexcept_noexcept);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintNoexcept(const struct Noexcept * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateNoexcept(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteNoexcept(struct Noexcept * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
-struct Obj3 * cJSON_ParseObj3(const char * s) {
-    struct Obj3 * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetObj3Value(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct Obj3 * cJSON_GetObj3Value(const cJSON * j) {
-    struct Obj3 * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Obj3)))) {
-            memset(x, 0, sizeof(struct Obj3));
-            if (!cJSON_HasObjectItem(j, "dummy")) { cJSON_DeleteObj3(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "dummy")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "dummy"))) { cJSON_DeleteObj3(x); return NULL; }
-                x->dummy = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "dummy"));
+            if (!cJSON_HasObjectItem(j, "global")) { cJSON_DeleteObj3(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "global")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "global"))) { cJSON_DeleteObj3(x); return NULL; }
+                x->global = cJSON_GetGlobalValue(cJSON_GetObjectItemCaseSensitive(j, "global"));
+                if (NULL == x->global) { cJSON_DeleteObj3(x); return NULL; }
+            }
+            if (!cJSON_HasObjectItem(j, "go")) { cJSON_DeleteObj3(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "go")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "go"))) { cJSON_DeleteObj3(x); return NULL; }
+                x->go = cJSON_GetGoValue(cJSON_GetObjectItemCaseSensitive(j, "go"));
+                if (NULL == x->go) { cJSON_DeleteObj3(x); return NULL; }
             }
             if (!cJSON_HasObjectItem(j, "guard")) { cJSON_DeleteObj3(x); return NULL; }
             if (cJSON_HasObjectItem(j, "guard")) {
@@ -12133,6 +12151,12 @@ struct Obj3 * cJSON_GetObj3Value(const cJSON * j) {
                 x->instanceof = cJSON_GetInstanceofValue(cJSON_GetObjectItemCaseSensitive(j, "instanceof"));
                 if (NULL == x->instanceof) { cJSON_DeleteObj3(x); return NULL; }
             }
+            if (!cJSON_HasObjectItem(j, "IntNode")) { cJSON_DeleteObj3(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "IntNode")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "IntNode"))) { cJSON_DeleteObj3(x); return NULL; }
+                x->int_node = cJSON_GetIntNodeValue(cJSON_GetObjectItemCaseSensitive(j, "IntNode"));
+                if (NULL == x->int_node) { cJSON_DeleteObj3(x); return NULL; }
+            }
             if (!cJSON_HasObjectItem(j, "interface")) { cJSON_DeleteObj3(x); return NULL; }
             if (cJSON_HasObjectItem(j, "interface")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "interface"))) { cJSON_DeleteObj3(x); return NULL; }
@@ -12319,6 +12343,12 @@ struct Obj3 * cJSON_GetObj3Value(const cJSON * j) {
                 x->lock = cJSON_GetLockValue(cJSON_GetObjectItemCaseSensitive(j, "lock"));
                 if (NULL == x->lock) { cJSON_DeleteObj3(x); return NULL; }
             }
+            if (!cJSON_HasObjectItem(j, "LongNode")) { cJSON_DeleteObj3(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "LongNode")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "LongNode"))) { cJSON_DeleteObj3(x); return NULL; }
+                x->long_node = cJSON_GetLongNodeValue(cJSON_GetObjectItemCaseSensitive(j, "LongNode"));
+                if (NULL == x->long_node) { cJSON_DeleteObj3(x); return NULL; }
+            }
             if (!cJSON_HasObjectItem(j, "map")) { cJSON_DeleteObj3(x); return NULL; }
             if (cJSON_HasObjectItem(j, "map")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "map"))) { cJSON_DeleteObj3(x); return NULL; }
@@ -12343,29 +12373,11 @@ struct Obj3 * cJSON_GetObj3Value(const cJSON * j) {
                 x->mutating = cJSON_GetMutatingValue(cJSON_GetObjectItemCaseSensitive(j, "mutating"));
                 if (NULL == x->mutating) { cJSON_DeleteObj3(x); return NULL; }
             }
-            if (!cJSON_HasObjectItem(j, "native")) { cJSON_DeleteObj3(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "native")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "native"))) { cJSON_DeleteObj3(x); return NULL; }
-                x->native = cJSON_GetNativeValue(cJSON_GetObjectItemCaseSensitive(j, "native"));
-                if (NULL == x->native) { cJSON_DeleteObj3(x); return NULL; }
-            }
-            if (!cJSON_HasObjectItem(j, "newtonsoft")) { cJSON_DeleteObj3(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "newtonsoft")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "newtonsoft"))) { cJSON_DeleteObj3(x); return NULL; }
-                x->newtonsoft = cJSON_GetNewtonsoftValue(cJSON_GetObjectItemCaseSensitive(j, "newtonsoft"));
-                if (NULL == x->newtonsoft) { cJSON_DeleteObj3(x); return NULL; }
-            }
-            if (!cJSON_HasObjectItem(j, "nil")) { cJSON_DeleteObj3(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "nil")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "nil"))) { cJSON_DeleteObj3(x); return NULL; }
-                x->nil = cJSON_GetNilValue(cJSON_GetObjectItemCaseSensitive(j, "nil"));
-                if (NULL == x->nil) { cJSON_DeleteObj3(x); return NULL; }
-            }
-            if (!cJSON_HasObjectItem(j, "NO")) { cJSON_DeleteObj3(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "NO")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "NO"))) { cJSON_DeleteObj3(x); return NULL; }
-                x->no = cJSON_GetNoValue(cJSON_GetObjectItemCaseSensitive(j, "NO"));
-                if (NULL == x->no) { cJSON_DeleteObj3(x); return NULL; }
+            if (!cJSON_HasObjectItem(j, "goto")) { cJSON_DeleteObj3(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "goto")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "goto"))) { cJSON_DeleteObj3(x); return NULL; }
+                x->obj3_goto = cJSON_GetGotoValue(cJSON_GetObjectItemCaseSensitive(j, "goto"));
+                if (NULL == x->obj3_goto) { cJSON_DeleteObj3(x); return NULL; }
             }
             if (!cJSON_HasObjectItem(j, "if")) { cJSON_DeleteObj3(x); return NULL; }
             if (cJSON_HasObjectItem(j, "if")) {
@@ -12415,18 +12427,6 @@ struct Obj3 * cJSON_GetObj3Value(const cJSON * j) {
                 x->obj3_namespace = cJSON_GetNamespaceValue(cJSON_GetObjectItemCaseSensitive(j, "namespace"));
                 if (NULL == x->obj3_namespace) { cJSON_DeleteObj3(x); return NULL; }
             }
-            if (!cJSON_HasObjectItem(j, "new")) { cJSON_DeleteObj3(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "new")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "new"))) { cJSON_DeleteObj3(x); return NULL; }
-                x->obj3_new = cJSON_GetNewValue(cJSON_GetObjectItemCaseSensitive(j, "new"));
-                if (NULL == x->obj3_new) { cJSON_DeleteObj3(x); return NULL; }
-            }
-            if (!cJSON_HasObjectItem(j, "noexcept")) { cJSON_DeleteObj3(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "noexcept")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "noexcept"))) { cJSON_DeleteObj3(x); return NULL; }
-                x->obj3_noexcept = cJSON_GetNoexceptValue(cJSON_GetObjectItemCaseSensitive(j, "noexcept"));
-                if (NULL == x->obj3_noexcept) { cJSON_DeleteObj3(x); return NULL; }
-            }
         }
     }
     return x;
@@ -12437,6 +12437,9 @@ cJSON * cJSON_CreateObj3(const struct Obj3 * x) {
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
             cJSON_AddNumberToObject(j, "dummy", x->dummy);
+            cJSON_AddItemToObject(j, "get", cJSON_CreateGet(x->get));
+            cJSON_AddItemToObject(j, "global", cJSON_CreateGlobal(x->global));
+            cJSON_AddItemToObject(j, "go", cJSON_CreateGo(x->go));
             cJSON_AddItemToObject(j, "guard", cJSON_CreateGuard(x->guard));
             cJSON_AddItemToObject(j, "hasOwnProperty", cJSON_CreateHasOwnProperty(x->has_own_property));
             cJSON_AddItemToObject(j, "hashCode", cJSON_CreateHashCode(x->hash_code));
@@ -12452,6 +12455,7 @@ cJSON * cJSON_CreateObj3(const struct Obj3 * x) {
             cJSON_AddItemToObject(j, "init", cJSON_CreateInit(x->init));
             cJSON_AddItemToObject(j, "inout", cJSON_CreateInout(x->inout));
             cJSON_AddItemToObject(j, "instanceof", cJSON_CreateInstanceof(x->instanceof));
+            cJSON_AddItemToObject(j, "IntNode", cJSON_CreateIntNode(x->int_node));
             cJSON_AddItemToObject(j, "interface", cJSON_CreateInterface(x->interface));
             cJSON_AddItemToObject(j, "internal", cJSON_CreateInternal(x->internal));
             cJSON_AddItemToObject(j, "is", cJSON_CreateIs(x->is));
@@ -12483,14 +12487,12 @@ cJSON * cJSON_CreateObj3(const struct Obj3 * x) {
             cJSON_AddItemToObject(j, "list", cJSON_CreateList(x->list));
             cJSON_AddItemToObject(j, "Locale", cJSON_CreateLocale(x->locale));
             cJSON_AddItemToObject(j, "lock", cJSON_CreateLock(x->lock));
+            cJSON_AddItemToObject(j, "LongNode", cJSON_CreateLongNode(x->long_node));
             cJSON_AddItemToObject(j, "map", cJSON_CreateMap(x->map));
             cJSON_AddItemToObject(j, "MapEntry", cJSON_CreateMapEntry(x->map_entry));
             cJSON_AddItemToObject(j, "metadata_property_handling", cJSON_CreateMetadataPropertyHandling(x->metadata_property_handling));
             cJSON_AddItemToObject(j, "mutating", cJSON_CreateMutating(x->mutating));
-            cJSON_AddItemToObject(j, "native", cJSON_CreateNative(x->native));
-            cJSON_AddItemToObject(j, "newtonsoft", cJSON_CreateNewtonsoft(x->newtonsoft));
-            cJSON_AddItemToObject(j, "nil", cJSON_CreateNil(x->nil));
-            cJSON_AddItemToObject(j, "NO", cJSON_CreateNo(x->no));
+            cJSON_AddItemToObject(j, "goto", cJSON_CreateGoto(x->obj3_goto));
             cJSON_AddItemToObject(j, "if", cJSON_CreateIf(x->obj3_if));
             cJSON_AddItemToObject(j, "import", cJSON_CreateImport(x->obj3_import));
             cJSON_AddItemToObject(j, "inline", cJSON_CreateInline(x->obj3_inline));
@@ -12499,8 +12501,6 @@ cJSON * cJSON_CreateObj3(const struct Obj3 * x) {
             cJSON_AddItemToObject(j, "module", cJSON_CreateModule(x->obj3_module));
             cJSON_AddItemToObject(j, "mutable", cJSON_CreateMutable(x->obj3_mutable));
             cJSON_AddItemToObject(j, "namespace", cJSON_CreateNamespace(x->obj3_namespace));
-            cJSON_AddItemToObject(j, "new", cJSON_CreateNew(x->obj3_new));
-            cJSON_AddItemToObject(j, "noexcept", cJSON_CreateNoexcept(x->obj3_noexcept));
         }
     }
     return j;
@@ -12520,6 +12520,15 @@ char * cJSON_PrintObj3(const struct Obj3 * x) {
 
 void cJSON_DeleteObj3(struct Obj3 * x) {
     if (NULL != x) {
+        if (NULL != x->get) {
+            cJSON_DeleteGet(x->get);
+        }
+        if (NULL != x->global) {
+            cJSON_DeleteGlobal(x->global);
+        }
+        if (NULL != x->go) {
+            cJSON_DeleteGo(x->go);
+        }
         if (NULL != x->guard) {
             cJSON_DeleteGuard(x->guard);
         }
@@ -12565,6 +12574,9 @@ void cJSON_DeleteObj3(struct Obj3 * x) {
         if (NULL != x->instanceof) {
             cJSON_DeleteInstanceof(x->instanceof);
         }
+        if (NULL != x->int_node) {
+            cJSON_DeleteIntNode(x->int_node);
+        }
         if (NULL != x->interface) {
             cJSON_DeleteInterface(x->interface);
         }
@@ -12658,6 +12670,9 @@ void cJSON_DeleteObj3(struct Obj3 * x) {
         if (NULL != x->lock) {
             cJSON_DeleteLock(x->lock);
         }
+        if (NULL != x->long_node) {
+            cJSON_DeleteLongNode(x->long_node);
+        }
         if (NULL != x->map) {
             cJSON_DeleteMap(x->map);
         }
@@ -12670,17 +12685,8 @@ void cJSON_DeleteObj3(struct Obj3 * x) {
         if (NULL != x->mutating) {
             cJSON_DeleteMutating(x->mutating);
         }
-        if (NULL != x->native) {
-            cJSON_DeleteNative(x->native);
-        }
-        if (NULL != x->newtonsoft) {
-            cJSON_DeleteNewtonsoft(x->newtonsoft);
-        }
-        if (NULL != x->nil) {
-            cJSON_DeleteNil(x->nil);
-        }
-        if (NULL != x->no) {
-            cJSON_DeleteNo(x->no);
+        if (NULL != x->obj3_goto) {
+            cJSON_DeleteGoto(x->obj3_goto);
         }
         if (NULL != x->obj3_if) {
             cJSON_DeleteIf(x->obj3_if);
@@ -12706,57 +12712,51 @@ void cJSON_DeleteObj3(struct Obj3 * x) {
         if (NULL != x->obj3_namespace) {
             cJSON_DeleteNamespace(x->obj3_namespace);
         }
-        if (NULL != x->obj3_new) {
-            cJSON_DeleteNew(x->obj3_new);
-        }
-        if (NULL != x->obj3_noexcept) {
-            cJSON_DeleteNoexcept(x->obj3_noexcept);
-        }
         cJSON_free(x);
     }
 }
 
-struct NoSuchMethod * cJSON_ParseNoSuchMethod(const char * s) {
-    struct NoSuchMethod * x = NULL;
+struct Native * cJSON_ParseNative(const char * s) {
+    struct Native * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetNoSuchMethodValue(j);
+            x = cJSON_GetNativeValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct NoSuchMethod * cJSON_GetNoSuchMethodValue(const cJSON * j) {
-    struct NoSuchMethod * x = NULL;
+struct Native * cJSON_GetNativeValue(const cJSON * j) {
+    struct Native * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct NoSuchMethod)))) {
-            memset(x, 0, sizeof(struct NoSuchMethod));
-            if (!cJSON_HasObjectItem(j, "noSuchMethod")) { cJSON_DeleteNoSuchMethod(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "noSuchMethod")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "noSuchMethod"))) { cJSON_DeleteNoSuchMethod(x); return NULL; }
-                x->no_such_method = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "noSuchMethod"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Native)))) {
+            memset(x, 0, sizeof(struct Native));
+            if (!cJSON_HasObjectItem(j, "native")) { cJSON_DeleteNative(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "native")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "native"))) { cJSON_DeleteNative(x); return NULL; }
+                x->native = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "native"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateNoSuchMethod(const struct NoSuchMethod * x) {
+cJSON * cJSON_CreateNative(const struct Native * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "noSuchMethod", x->no_such_method);
+            cJSON_AddNumberToObject(j, "native", x->native);
         }
     }
     return j;
 }
 
-char * cJSON_PrintNoSuchMethod(const struct NoSuchMethod * x) {
+char * cJSON_PrintNative(const struct Native * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateNoSuchMethod(x);
+        cJSON * j = cJSON_CreateNative(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -12765,53 +12765,53 @@ char * cJSON_PrintNoSuchMethod(const struct NoSuchMethod * x) {
     return s;
 }
 
-void cJSON_DeleteNoSuchMethod(struct NoSuchMethod * x) {
+void cJSON_DeleteNative(struct Native * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Nonatomic * cJSON_ParseNonatomic(const char * s) {
-    struct Nonatomic * x = NULL;
+struct Newtonsoft * cJSON_ParseNewtonsoft(const char * s) {
+    struct Newtonsoft * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetNonatomicValue(j);
+            x = cJSON_GetNewtonsoftValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Nonatomic * cJSON_GetNonatomicValue(const cJSON * j) {
-    struct Nonatomic * x = NULL;
+struct Newtonsoft * cJSON_GetNewtonsoftValue(const cJSON * j) {
+    struct Newtonsoft * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Nonatomic)))) {
-            memset(x, 0, sizeof(struct Nonatomic));
-            if (!cJSON_HasObjectItem(j, "nonatomic")) { cJSON_DeleteNonatomic(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "nonatomic")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "nonatomic"))) { cJSON_DeleteNonatomic(x); return NULL; }
-                x->nonatomic = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "nonatomic"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Newtonsoft)))) {
+            memset(x, 0, sizeof(struct Newtonsoft));
+            if (!cJSON_HasObjectItem(j, "newtonsoft")) { cJSON_DeleteNewtonsoft(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "newtonsoft")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "newtonsoft"))) { cJSON_DeleteNewtonsoft(x); return NULL; }
+                x->newtonsoft = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "newtonsoft"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateNonatomic(const struct Nonatomic * x) {
+cJSON * cJSON_CreateNewtonsoft(const struct Newtonsoft * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "nonatomic", x->nonatomic);
+            cJSON_AddNumberToObject(j, "newtonsoft", x->newtonsoft);
         }
     }
     return j;
 }
 
-char * cJSON_PrintNonatomic(const struct Nonatomic * x) {
+char * cJSON_PrintNewtonsoft(const struct Newtonsoft * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateNonatomic(x);
+        cJSON * j = cJSON_CreateNewtonsoft(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -12820,53 +12820,53 @@ char * cJSON_PrintNonatomic(const struct Nonatomic * x) {
     return s;
 }
 
-void cJSON_DeleteNonatomic(struct Nonatomic * x) {
+void cJSON_DeleteNewtonsoft(struct Newtonsoft * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct None * cJSON_ParseNone(const char * s) {
-    struct None * x = NULL;
+struct Nil * cJSON_ParseNil(const char * s) {
+    struct Nil * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetNoneValue(j);
+            x = cJSON_GetNilValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct None * cJSON_GetNoneValue(const cJSON * j) {
-    struct None * x = NULL;
+struct Nil * cJSON_GetNilValue(const cJSON * j) {
+    struct Nil * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct None)))) {
-            memset(x, 0, sizeof(struct None));
-            if (!cJSON_HasObjectItem(j, "None")) { cJSON_DeleteNone(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "None")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "None"))) { cJSON_DeleteNone(x); return NULL; }
-                x->none = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "None"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Nil)))) {
+            memset(x, 0, sizeof(struct Nil));
+            if (!cJSON_HasObjectItem(j, "nil")) { cJSON_DeleteNil(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "nil")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "nil"))) { cJSON_DeleteNil(x); return NULL; }
+                x->nil = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "nil"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateNone(const struct None * x) {
+cJSON * cJSON_CreateNil(const struct Nil * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "None", x->none);
+            cJSON_AddNumberToObject(j, "nil", x->nil);
         }
     }
     return j;
 }
 
-char * cJSON_PrintNone(const struct None * x) {
+char * cJSON_PrintNil(const struct Nil * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateNone(x);
+        cJSON * j = cJSON_CreateNil(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -12875,53 +12875,53 @@ char * cJSON_PrintNone(const struct None * x) {
     return s;
 }
 
-void cJSON_DeleteNone(struct None * x) {
+void cJSON_DeleteNil(struct Nil * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Nonlocal * cJSON_ParseNonlocal(const char * s) {
-    struct Nonlocal * x = NULL;
+struct No * cJSON_ParseNo(const char * s) {
+    struct No * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetNonlocalValue(j);
+            x = cJSON_GetNoValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Nonlocal * cJSON_GetNonlocalValue(const cJSON * j) {
-    struct Nonlocal * x = NULL;
+struct No * cJSON_GetNoValue(const cJSON * j) {
+    struct No * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Nonlocal)))) {
-            memset(x, 0, sizeof(struct Nonlocal));
-            if (!cJSON_HasObjectItem(j, "nonlocal")) { cJSON_DeleteNonlocal(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "nonlocal")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "nonlocal"))) { cJSON_DeleteNonlocal(x); return NULL; }
-                x->nonlocal = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "nonlocal"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct No)))) {
+            memset(x, 0, sizeof(struct No));
+            if (!cJSON_HasObjectItem(j, "NO")) { cJSON_DeleteNo(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "NO")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "NO"))) { cJSON_DeleteNo(x); return NULL; }
+                x->no = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "NO"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateNonlocal(const struct Nonlocal * x) {
+cJSON * cJSON_CreateNo(const struct No * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "nonlocal", x->nonlocal);
+            cJSON_AddNumberToObject(j, "NO", x->no);
         }
     }
     return j;
 }
 
-char * cJSON_PrintNonlocal(const struct Nonlocal * x) {
+char * cJSON_PrintNo(const struct No * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateNonlocal(x);
+        cJSON * j = cJSON_CreateNo(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -12930,14 +12930,234 @@ char * cJSON_PrintNonlocal(const struct Nonlocal * x) {
     return s;
 }
 
-void cJSON_DeleteNonlocal(struct Nonlocal * x) {
+void cJSON_DeleteNo(struct No * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Nonmutating * cJSON_ParseNonmutating(const char * s) {
-    struct Nonmutating * x = NULL;
+struct NoSuchMethod * cJSON_ParseNoSuchMethod(const char * s) {
+    struct NoSuchMethod * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetNoSuchMethodValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct NoSuchMethod * cJSON_GetNoSuchMethodValue(const cJSON * j) {
+    struct NoSuchMethod * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct NoSuchMethod)))) {
+            memset(x, 0, sizeof(struct NoSuchMethod));
+            if (!cJSON_HasObjectItem(j, "noSuchMethod")) { cJSON_DeleteNoSuchMethod(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "noSuchMethod")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "noSuchMethod"))) { cJSON_DeleteNoSuchMethod(x); return NULL; }
+                x->no_such_method = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "noSuchMethod"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateNoSuchMethod(const struct NoSuchMethod * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "noSuchMethod", x->no_such_method);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintNoSuchMethod(const struct NoSuchMethod * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateNoSuchMethod(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteNoSuchMethod(struct NoSuchMethod * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct Nonatomic * cJSON_ParseNonatomic(const char * s) {
+    struct Nonatomic * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetNonatomicValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct Nonatomic * cJSON_GetNonatomicValue(const cJSON * j) {
+    struct Nonatomic * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct Nonatomic)))) {
+            memset(x, 0, sizeof(struct Nonatomic));
+            if (!cJSON_HasObjectItem(j, "nonatomic")) { cJSON_DeleteNonatomic(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "nonatomic")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "nonatomic"))) { cJSON_DeleteNonatomic(x); return NULL; }
+                x->nonatomic = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "nonatomic"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateNonatomic(const struct Nonatomic * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "nonatomic", x->nonatomic);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintNonatomic(const struct Nonatomic * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateNonatomic(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteNonatomic(struct Nonatomic * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct None * cJSON_ParseNone(const char * s) {
+    struct None * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetNoneValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct None * cJSON_GetNoneValue(const cJSON * j) {
+    struct None * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct None)))) {
+            memset(x, 0, sizeof(struct None));
+            if (!cJSON_HasObjectItem(j, "None")) { cJSON_DeleteNone(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "None")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "None"))) { cJSON_DeleteNone(x); return NULL; }
+                x->none = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "None"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateNone(const struct None * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "None", x->none);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintNone(const struct None * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateNone(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteNone(struct None * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct Nonlocal * cJSON_ParseNonlocal(const char * s) {
+    struct Nonlocal * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetNonlocalValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct Nonlocal * cJSON_GetNonlocalValue(const cJSON * j) {
+    struct Nonlocal * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct Nonlocal)))) {
+            memset(x, 0, sizeof(struct Nonlocal));
+            if (!cJSON_HasObjectItem(j, "nonlocal")) { cJSON_DeleteNonlocal(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "nonlocal")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "nonlocal"))) { cJSON_DeleteNonlocal(x); return NULL; }
+                x->nonlocal = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "nonlocal"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateNonlocal(const struct Nonlocal * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "nonlocal", x->nonlocal);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintNonlocal(const struct Nonlocal * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateNonlocal(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteNonlocal(struct Nonlocal * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct Nonmutating * cJSON_ParseNonmutating(const char * s) {
+    struct Nonmutating * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
@@ -13211,47 +13431,47 @@ void cJSON_DeleteNullClass(struct NullClass * x) {
     }
 }
 
-struct NumberClass * cJSON_ParseNumberClass(const char * s) {
-    struct NumberClass * x = NULL;
+struct NullNode * cJSON_ParseNullNode(const char * s) {
+    struct NullNode * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetNumberClassValue(j);
+            x = cJSON_GetNullNodeValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct NumberClass * cJSON_GetNumberClassValue(const cJSON * j) {
-    struct NumberClass * x = NULL;
+struct NullNode * cJSON_GetNullNodeValue(const cJSON * j) {
+    struct NullNode * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct NumberClass)))) {
-            memset(x, 0, sizeof(struct NumberClass));
-            if (!cJSON_HasObjectItem(j, "number")) { cJSON_DeleteNumberClass(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "number")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "number"))) { cJSON_DeleteNumberClass(x); return NULL; }
-                x->number = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "number"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct NullNode)))) {
+            memset(x, 0, sizeof(struct NullNode));
+            if (!cJSON_HasObjectItem(j, "NullNode")) { cJSON_DeleteNullNode(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "NullNode")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "NullNode"))) { cJSON_DeleteNullNode(x); return NULL; }
+                x->null_node = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "NullNode"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateNumberClass(const struct NumberClass * x) {
+cJSON * cJSON_CreateNullNode(const struct NullNode * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "number", x->number);
+            cJSON_AddNumberToObject(j, "NullNode", x->null_node);
         }
     }
     return j;
 }
 
-char * cJSON_PrintNumberClass(const struct NumberClass * x) {
+char * cJSON_PrintNullNode(const struct NullNode * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateNumberClass(x);
+        cJSON * j = cJSON_CreateNullNode(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -13260,37 +13480,202 @@ char * cJSON_PrintNumberClass(const struct NumberClass * x) {
     return s;
 }
 
-void cJSON_DeleteNumberClass(struct NumberClass * x) {
+void cJSON_DeleteNullNode(struct NullNode * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct NoneClass * cJSON_ParseNoneClass(const char * s) {
-    struct NoneClass * x = NULL;
+struct NumberClass * cJSON_ParseNumberClass(const char * s) {
+    struct NumberClass * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetNoneClassValue(j);
+            x = cJSON_GetNumberClassValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct NoneClass * cJSON_GetNoneClassValue(const cJSON * j) {
-    struct NoneClass * x = NULL;
+struct NumberClass * cJSON_GetNumberClassValue(const cJSON * j) {
+    struct NumberClass * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct NoneClass)))) {
-            memset(x, 0, sizeof(struct NoneClass));
-            if (!cJSON_HasObjectItem(j, "none")) { cJSON_DeleteNoneClass(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "none")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "none"))) { cJSON_DeleteNoneClass(x); return NULL; }
-                x->none = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "none"));
-            }
-        }
-    }
-    return x;
+        if (NULL != (x = cJSON_malloc(sizeof(struct NumberClass)))) {
+            memset(x, 0, sizeof(struct NumberClass));
+            if (!cJSON_HasObjectItem(j, "number")) { cJSON_DeleteNumberClass(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "number")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "number"))) { cJSON_DeleteNumberClass(x); return NULL; }
+                x->number = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "number"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateNumberClass(const struct NumberClass * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "number", x->number);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintNumberClass(const struct NumberClass * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateNumberClass(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteNumberClass(struct NumberClass * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct New * cJSON_ParseNew(const char * s) {
+    struct New * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetNewValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct New * cJSON_GetNewValue(const cJSON * j) {
+    struct New * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct New)))) {
+            memset(x, 0, sizeof(struct New));
+            if (!cJSON_HasObjectItem(j, "new")) { cJSON_DeleteNew(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "new")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "new"))) { cJSON_DeleteNew(x); return NULL; }
+                x->new_new = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "new"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateNew(const struct New * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "new", x->new_new);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintNew(const struct New * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateNew(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteNew(struct New * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct Noexcept * cJSON_ParseNoexcept(const char * s) {
+    struct Noexcept * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetNoexceptValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct Noexcept * cJSON_GetNoexceptValue(const cJSON * j) {
+    struct Noexcept * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct Noexcept)))) {
+            memset(x, 0, sizeof(struct Noexcept));
+            if (!cJSON_HasObjectItem(j, "noexcept")) { cJSON_DeleteNoexcept(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "noexcept")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "noexcept"))) { cJSON_DeleteNoexcept(x); return NULL; }
+                x->noexcept_noexcept = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "noexcept"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateNoexcept(const struct Noexcept * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "noexcept", x->noexcept_noexcept);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintNoexcept(const struct Noexcept * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateNoexcept(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteNoexcept(struct Noexcept * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct NoneClass * cJSON_ParseNoneClass(const char * s) {
+    struct NoneClass * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetNoneClassValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct NoneClass * cJSON_GetNoneClassValue(const cJSON * j) {
+    struct NoneClass * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct NoneClass)))) {
+            memset(x, 0, sizeof(struct NoneClass));
+            if (!cJSON_HasObjectItem(j, "none")) { cJSON_DeleteNoneClass(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "none")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "none"))) { cJSON_DeleteNoneClass(x); return NULL; }
+                x->none = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "none"));
+            }
+        }
+    }
+    return x;
 }
 
 cJSON * cJSON_CreateNoneClass(const struct NoneClass * x) {
@@ -14201,47 +14586,47 @@ void cJSON_DeleteRestrict(struct Restrict * x) {
     }
 }
 
-struct Return * cJSON_ParseReturn(const char * s) {
-    struct Return * x = NULL;
+struct ObjectClass * cJSON_ParseObjectClass(const char * s) {
+    struct ObjectClass * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetReturnValue(j);
+            x = cJSON_GetObjectClassValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Return * cJSON_GetReturnValue(const cJSON * j) {
-    struct Return * x = NULL;
+struct ObjectClass * cJSON_GetObjectClassValue(const cJSON * j) {
+    struct ObjectClass * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Return)))) {
-            memset(x, 0, sizeof(struct Return));
-            if (!cJSON_HasObjectItem(j, "return")) { cJSON_DeleteReturn(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "return")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "return"))) { cJSON_DeleteReturn(x); return NULL; }
-                x->return_return = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "return"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct ObjectClass)))) {
+            memset(x, 0, sizeof(struct ObjectClass));
+            if (!cJSON_HasObjectItem(j, "object")) { cJSON_DeleteObjectClass(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "object")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "object"))) { cJSON_DeleteObjectClass(x); return NULL; }
+                x->object = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "object"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateReturn(const struct Return * x) {
+cJSON * cJSON_CreateObjectClass(const struct ObjectClass * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "return", x->return_return);
+            cJSON_AddNumberToObject(j, "object", x->object);
         }
     }
     return j;
 }
 
-char * cJSON_PrintReturn(const struct Return * x) {
+char * cJSON_PrintObjectClass(const struct ObjectClass * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateReturn(x);
+        cJSON * j = cJSON_CreateObjectClass(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -14250,53 +14635,53 @@ char * cJSON_PrintReturn(const struct Return * x) {
     return s;
 }
 
-void cJSON_DeleteReturn(struct Return * x) {
+void cJSON_DeleteObjectClass(struct ObjectClass * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct ObjectClass * cJSON_ParseObjectClass(const char * s) {
-    struct ObjectClass * x = NULL;
+struct ObjectMapper * cJSON_ParseObjectMapper(const char * s) {
+    struct ObjectMapper * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetObjectClassValue(j);
+            x = cJSON_GetObjectMapperValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct ObjectClass * cJSON_GetObjectClassValue(const cJSON * j) {
-    struct ObjectClass * x = NULL;
+struct ObjectMapper * cJSON_GetObjectMapperValue(const cJSON * j) {
+    struct ObjectMapper * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct ObjectClass)))) {
-            memset(x, 0, sizeof(struct ObjectClass));
-            if (!cJSON_HasObjectItem(j, "object")) { cJSON_DeleteObjectClass(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "object")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "object"))) { cJSON_DeleteObjectClass(x); return NULL; }
-                x->object = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "object"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct ObjectMapper)))) {
+            memset(x, 0, sizeof(struct ObjectMapper));
+            if (!cJSON_HasObjectItem(j, "ObjectMapper")) { cJSON_DeleteObjectMapper(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "ObjectMapper")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "ObjectMapper"))) { cJSON_DeleteObjectMapper(x); return NULL; }
+                x->object_mapper = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "ObjectMapper"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateObjectClass(const struct ObjectClass * x) {
+cJSON * cJSON_CreateObjectMapper(const struct ObjectMapper * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "object", x->object);
+            cJSON_AddNumberToObject(j, "ObjectMapper", x->object_mapper);
         }
     }
     return j;
 }
 
-char * cJSON_PrintObjectClass(const struct ObjectClass * x) {
+char * cJSON_PrintObjectMapper(const struct ObjectMapper * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateObjectClass(x);
+        cJSON * j = cJSON_CreateObjectMapper(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -14305,53 +14690,53 @@ char * cJSON_PrintObjectClass(const struct ObjectClass * x) {
     return s;
 }
 
-void cJSON_DeleteObjectClass(struct ObjectClass * x) {
+void cJSON_DeleteObjectMapper(struct ObjectMapper * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct ObjectMapper * cJSON_ParseObjectMapper(const char * s) {
-    struct ObjectMapper * x = NULL;
+struct ObjectNode * cJSON_ParseObjectNode(const char * s) {
+    struct ObjectNode * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetObjectMapperValue(j);
+            x = cJSON_GetObjectNodeValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct ObjectMapper * cJSON_GetObjectMapperValue(const cJSON * j) {
-    struct ObjectMapper * x = NULL;
+struct ObjectNode * cJSON_GetObjectNodeValue(const cJSON * j) {
+    struct ObjectNode * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct ObjectMapper)))) {
-            memset(x, 0, sizeof(struct ObjectMapper));
-            if (!cJSON_HasObjectItem(j, "ObjectMapper")) { cJSON_DeleteObjectMapper(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "ObjectMapper")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "ObjectMapper"))) { cJSON_DeleteObjectMapper(x); return NULL; }
-                x->object_mapper = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "ObjectMapper"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct ObjectNode)))) {
+            memset(x, 0, sizeof(struct ObjectNode));
+            if (!cJSON_HasObjectItem(j, "ObjectNode")) { cJSON_DeleteObjectNode(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "ObjectNode")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "ObjectNode"))) { cJSON_DeleteObjectNode(x); return NULL; }
+                x->object_node = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "ObjectNode"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateObjectMapper(const struct ObjectMapper * x) {
+cJSON * cJSON_CreateObjectNode(const struct ObjectNode * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "ObjectMapper", x->object_mapper);
+            cJSON_AddNumberToObject(j, "ObjectNode", x->object_node);
         }
     }
     return j;
 }
 
-char * cJSON_PrintObjectMapper(const struct ObjectMapper * x) {
+char * cJSON_PrintObjectNode(const struct ObjectNode * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateObjectMapper(x);
+        cJSON * j = cJSON_CreateObjectNode(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -14360,7 +14745,7 @@ char * cJSON_PrintObjectMapper(const struct ObjectMapper * x) {
     return s;
 }
 
-void cJSON_DeleteObjectMapper(struct ObjectMapper * x) {
+void cJSON_DeleteObjectNode(struct ObjectNode * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
@@ -15864,412 +16249,51 @@ void cJSON_DeleteRethrows(struct Rethrows * x) {
     }
 }
 
-struct Right * cJSON_ParseRight(const char * s) {
-    struct Right * x = NULL;
+struct Obj4 * cJSON_ParseObj4(const char * s) {
+    struct Obj4 * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetRightValue(j);
+            x = cJSON_GetObj4Value(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Right * cJSON_GetRightValue(const cJSON * j) {
-    struct Right * x = NULL;
+struct Obj4 * cJSON_GetObj4Value(const cJSON * j) {
+    struct Obj4 * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Right)))) {
-            memset(x, 0, sizeof(struct Right));
-            if (!cJSON_HasObjectItem(j, "right")) { cJSON_DeleteRight(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "right")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "right"))) { cJSON_DeleteRight(x); return NULL; }
-                x->right = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "right"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Obj4)))) {
+            memset(x, 0, sizeof(struct Obj4));
+            if (!cJSON_HasObjectItem(j, "dummy")) { cJSON_DeleteObj4(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "dummy")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "dummy"))) { cJSON_DeleteObj4(x); return NULL; }
+                x->dummy = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "dummy"));
             }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateRight(const struct Right * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "right", x->right);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintRight(const struct Right * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateRight(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteRight(struct Right * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
-struct RuntimeType * cJSON_ParseRuntimeType(const char * s) {
-    struct RuntimeType * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetRuntimeTypeValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct RuntimeType * cJSON_GetRuntimeTypeValue(const cJSON * j) {
-    struct RuntimeType * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct RuntimeType)))) {
-            memset(x, 0, sizeof(struct RuntimeType));
-            if (!cJSON_HasObjectItem(j, "runtimeType")) { cJSON_DeleteRuntimeType(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "runtimeType")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "runtimeType"))) { cJSON_DeleteRuntimeType(x); return NULL; }
-                x->runtime_type = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "runtimeType"));
+            if (!cJSON_HasObjectItem(j, "native")) { cJSON_DeleteObj4(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "native")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "native"))) { cJSON_DeleteObj4(x); return NULL; }
+                x->native = cJSON_GetNativeValue(cJSON_GetObjectItemCaseSensitive(j, "native"));
+                if (NULL == x->native) { cJSON_DeleteObj4(x); return NULL; }
             }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateRuntimeType(const struct RuntimeType * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "runtimeType", x->runtime_type);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintRuntimeType(const struct RuntimeType * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateRuntimeType(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteRuntimeType(struct RuntimeType * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
-struct S * cJSON_ParseS(const char * s) {
-    struct S * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetSValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct S * cJSON_GetSValue(const cJSON * j) {
-    struct S * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct S)))) {
-            memset(x, 0, sizeof(struct S));
-            if (!cJSON_HasObjectItem(j, "s")) { cJSON_DeleteS(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "s")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "s"))) { cJSON_DeleteS(x); return NULL; }
-                x->s = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "s"));
+            if (!cJSON_HasObjectItem(j, "newtonsoft")) { cJSON_DeleteObj4(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "newtonsoft")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "newtonsoft"))) { cJSON_DeleteObj4(x); return NULL; }
+                x->newtonsoft = cJSON_GetNewtonsoftValue(cJSON_GetObjectItemCaseSensitive(j, "newtonsoft"));
+                if (NULL == x->newtonsoft) { cJSON_DeleteObj4(x); return NULL; }
             }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateS(const struct S * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "s", x->s);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintS(const struct S * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateS(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteS(struct S * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
-struct Sbyte * cJSON_ParseSbyte(const char * s) {
-    struct Sbyte * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetSbyteValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct Sbyte * cJSON_GetSbyteValue(const cJSON * j) {
-    struct Sbyte * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Sbyte)))) {
-            memset(x, 0, sizeof(struct Sbyte));
-            if (!cJSON_HasObjectItem(j, "sbyte")) { cJSON_DeleteSbyte(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "sbyte")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "sbyte"))) { cJSON_DeleteSbyte(x); return NULL; }
-                x->sbyte = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "sbyte"));
+            if (!cJSON_HasObjectItem(j, "nil")) { cJSON_DeleteObj4(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "nil")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "nil"))) { cJSON_DeleteObj4(x); return NULL; }
+                x->nil = cJSON_GetNilValue(cJSON_GetObjectItemCaseSensitive(j, "nil"));
+                if (NULL == x->nil) { cJSON_DeleteObj4(x); return NULL; }
             }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateSbyte(const struct Sbyte * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "sbyte", x->sbyte);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintSbyte(const struct Sbyte * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateSbyte(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteSbyte(struct Sbyte * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
-struct Sealed * cJSON_ParseSealed(const char * s) {
-    struct Sealed * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetSealedValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct Sealed * cJSON_GetSealedValue(const cJSON * j) {
-    struct Sealed * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Sealed)))) {
-            memset(x, 0, sizeof(struct Sealed));
-            if (!cJSON_HasObjectItem(j, "sealed")) { cJSON_DeleteSealed(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "sealed")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "sealed"))) { cJSON_DeleteSealed(x); return NULL; }
-                x->sealed = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "sealed"));
-            }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateSealed(const struct Sealed * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "sealed", x->sealed);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintSealed(const struct Sealed * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateSealed(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteSealed(struct Sealed * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
-struct Sel * cJSON_ParseSel(const char * s) {
-    struct Sel * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetSelValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct Sel * cJSON_GetSelValue(const cJSON * j) {
-    struct Sel * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Sel)))) {
-            memset(x, 0, sizeof(struct Sel));
-            if (!cJSON_HasObjectItem(j, "SEL")) { cJSON_DeleteSel(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "SEL")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "SEL"))) { cJSON_DeleteSel(x); return NULL; }
-                x->sel = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "SEL"));
-            }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateSel(const struct Sel * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "SEL", x->sel);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintSel(const struct Sel * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateSel(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteSel(struct Sel * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
-struct Select * cJSON_ParseSelect(const char * s) {
-    struct Select * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetSelectValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct Select * cJSON_GetSelectValue(const cJSON * j) {
-    struct Select * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Select)))) {
-            memset(x, 0, sizeof(struct Select));
-            if (!cJSON_HasObjectItem(j, "select")) { cJSON_DeleteSelect(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "select")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "select"))) { cJSON_DeleteSelect(x); return NULL; }
-                x->select = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "select"));
-            }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateSelect(const struct Select * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "select", x->select);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintSelect(const struct Select * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateSelect(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteSelect(struct Select * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
-struct Obj4 * cJSON_ParseObj4(const char * s) {
-    struct Obj4 * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetObj4Value(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct Obj4 * cJSON_GetObj4Value(const cJSON * j) {
-    struct Obj4 * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Obj4)))) {
-            memset(x, 0, sizeof(struct Obj4));
-            if (!cJSON_HasObjectItem(j, "dummy")) { cJSON_DeleteObj4(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "dummy")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "dummy"))) { cJSON_DeleteObj4(x); return NULL; }
-                x->dummy = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "dummy"));
+            if (!cJSON_HasObjectItem(j, "NO")) { cJSON_DeleteObj4(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "NO")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "NO"))) { cJSON_DeleteObj4(x); return NULL; }
+                x->no = cJSON_GetNoValue(cJSON_GetObjectItemCaseSensitive(j, "NO"));
+                if (NULL == x->no) { cJSON_DeleteObj4(x); return NULL; }
             }
             if (!cJSON_HasObjectItem(j, "noSuchMethod")) { cJSON_DeleteObj4(x); return NULL; }
             if (cJSON_HasObjectItem(j, "noSuchMethod")) {
@@ -16325,12 +16349,30 @@ struct Obj4 * cJSON_GetObj4Value(const cJSON * j) {
                 x->null = cJSON_GetNullClassValue(cJSON_GetObjectItemCaseSensitive(j, "NULL"));
                 if (NULL == x->null) { cJSON_DeleteObj4(x); return NULL; }
             }
+            if (!cJSON_HasObjectItem(j, "NullNode")) { cJSON_DeleteObj4(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "NullNode")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "NullNode"))) { cJSON_DeleteObj4(x); return NULL; }
+                x->null_node = cJSON_GetNullNodeValue(cJSON_GetObjectItemCaseSensitive(j, "NullNode"));
+                if (NULL == x->null_node) { cJSON_DeleteObj4(x); return NULL; }
+            }
             if (!cJSON_HasObjectItem(j, "number")) { cJSON_DeleteObj4(x); return NULL; }
             if (cJSON_HasObjectItem(j, "number")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "number"))) { cJSON_DeleteObj4(x); return NULL; }
                 x->number = cJSON_GetNumberClassValue(cJSON_GetObjectItemCaseSensitive(j, "number"));
                 if (NULL == x->number) { cJSON_DeleteObj4(x); return NULL; }
             }
+            if (!cJSON_HasObjectItem(j, "new")) { cJSON_DeleteObj4(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "new")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "new"))) { cJSON_DeleteObj4(x); return NULL; }
+                x->obj4_new = cJSON_GetNewValue(cJSON_GetObjectItemCaseSensitive(j, "new"));
+                if (NULL == x->obj4_new) { cJSON_DeleteObj4(x); return NULL; }
+            }
+            if (!cJSON_HasObjectItem(j, "noexcept")) { cJSON_DeleteObj4(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "noexcept")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "noexcept"))) { cJSON_DeleteObj4(x); return NULL; }
+                x->obj4_noexcept = cJSON_GetNoexceptValue(cJSON_GetObjectItemCaseSensitive(j, "noexcept"));
+                if (NULL == x->obj4_noexcept) { cJSON_DeleteObj4(x); return NULL; }
+            }
             if (!cJSON_HasObjectItem(j, "none")) { cJSON_DeleteObj4(x); return NULL; }
             if (cJSON_HasObjectItem(j, "none")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "none"))) { cJSON_DeleteObj4(x); return NULL; }
@@ -16433,12 +16475,6 @@ struct Obj4 * cJSON_GetObj4Value(const cJSON * j) {
                 x->obj4_restrict = cJSON_GetRestrictValue(cJSON_GetObjectItemCaseSensitive(j, "restrict"));
                 if (NULL == x->obj4_restrict) { cJSON_DeleteObj4(x); return NULL; }
             }
-            if (!cJSON_HasObjectItem(j, "return")) { cJSON_DeleteObj4(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "return")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "return"))) { cJSON_DeleteObj4(x); return NULL; }
-                x->obj4_return = cJSON_GetReturnValue(cJSON_GetObjectItemCaseSensitive(j, "return"));
-                if (NULL == x->obj4_return) { cJSON_DeleteObj4(x); return NULL; }
-            }
             if (!cJSON_HasObjectItem(j, "object")) { cJSON_DeleteObj4(x); return NULL; }
             if (cJSON_HasObjectItem(j, "object")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "object"))) { cJSON_DeleteObj4(x); return NULL; }
@@ -16451,6 +16487,12 @@ struct Obj4 * cJSON_GetObj4Value(const cJSON * j) {
                 x->object_mapper = cJSON_GetObjectMapperValue(cJSON_GetObjectItemCaseSensitive(j, "ObjectMapper"));
                 if (NULL == x->object_mapper) { cJSON_DeleteObj4(x); return NULL; }
             }
+            if (!cJSON_HasObjectItem(j, "ObjectNode")) { cJSON_DeleteObj4(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "ObjectNode")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "ObjectNode"))) { cJSON_DeleteObj4(x); return NULL; }
+                x->object_node = cJSON_GetObjectNodeValue(cJSON_GetObjectItemCaseSensitive(j, "ObjectNode"));
+                if (NULL == x->object_node) { cJSON_DeleteObj4(x); return NULL; }
+            }
             if (!cJSON_HasObjectItem(j, "of")) { cJSON_DeleteObj4(x); return NULL; }
             if (cJSON_HasObjectItem(j, "of")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "of"))) { cJSON_DeleteObj4(x); return NULL; }
@@ -16613,48 +16655,6 @@ struct Obj4 * cJSON_GetObj4Value(const cJSON * j) {
                 x->rethrows = cJSON_GetRethrowsValue(cJSON_GetObjectItemCaseSensitive(j, "rethrows"));
                 if (NULL == x->rethrows) { cJSON_DeleteObj4(x); return NULL; }
             }
-            if (!cJSON_HasObjectItem(j, "right")) { cJSON_DeleteObj4(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "right")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "right"))) { cJSON_DeleteObj4(x); return NULL; }
-                x->right = cJSON_GetRightValue(cJSON_GetObjectItemCaseSensitive(j, "right"));
-                if (NULL == x->right) { cJSON_DeleteObj4(x); return NULL; }
-            }
-            if (!cJSON_HasObjectItem(j, "runtimeType")) { cJSON_DeleteObj4(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "runtimeType")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "runtimeType"))) { cJSON_DeleteObj4(x); return NULL; }
-                x->runtime_type = cJSON_GetRuntimeTypeValue(cJSON_GetObjectItemCaseSensitive(j, "runtimeType"));
-                if (NULL == x->runtime_type) { cJSON_DeleteObj4(x); return NULL; }
-            }
-            if (!cJSON_HasObjectItem(j, "s")) { cJSON_DeleteObj4(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "s")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "s"))) { cJSON_DeleteObj4(x); return NULL; }
-                x->s = cJSON_GetSValue(cJSON_GetObjectItemCaseSensitive(j, "s"));
-                if (NULL == x->s) { cJSON_DeleteObj4(x); return NULL; }
-            }
-            if (!cJSON_HasObjectItem(j, "sbyte")) { cJSON_DeleteObj4(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "sbyte")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "sbyte"))) { cJSON_DeleteObj4(x); return NULL; }
-                x->sbyte = cJSON_GetSbyteValue(cJSON_GetObjectItemCaseSensitive(j, "sbyte"));
-                if (NULL == x->sbyte) { cJSON_DeleteObj4(x); return NULL; }
-            }
-            if (!cJSON_HasObjectItem(j, "sealed")) { cJSON_DeleteObj4(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "sealed")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "sealed"))) { cJSON_DeleteObj4(x); return NULL; }
-                x->sealed = cJSON_GetSealedValue(cJSON_GetObjectItemCaseSensitive(j, "sealed"));
-                if (NULL == x->sealed) { cJSON_DeleteObj4(x); return NULL; }
-            }
-            if (!cJSON_HasObjectItem(j, "SEL")) { cJSON_DeleteObj4(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "SEL")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "SEL"))) { cJSON_DeleteObj4(x); return NULL; }
-                x->sel = cJSON_GetSelValue(cJSON_GetObjectItemCaseSensitive(j, "SEL"));
-                if (NULL == x->sel) { cJSON_DeleteObj4(x); return NULL; }
-            }
-            if (!cJSON_HasObjectItem(j, "select")) { cJSON_DeleteObj4(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "select")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "select"))) { cJSON_DeleteObj4(x); return NULL; }
-                x->select = cJSON_GetSelectValue(cJSON_GetObjectItemCaseSensitive(j, "select"));
-                if (NULL == x->select) { cJSON_DeleteObj4(x); return NULL; }
-            }
         }
     }
     return x;
@@ -16665,6 +16665,10 @@ cJSON * cJSON_CreateObj4(const struct Obj4 * x) {
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
             cJSON_AddNumberToObject(j, "dummy", x->dummy);
+            cJSON_AddItemToObject(j, "native", cJSON_CreateNative(x->native));
+            cJSON_AddItemToObject(j, "newtonsoft", cJSON_CreateNewtonsoft(x->newtonsoft));
+            cJSON_AddItemToObject(j, "nil", cJSON_CreateNil(x->nil));
+            cJSON_AddItemToObject(j, "NO", cJSON_CreateNo(x->no));
             cJSON_AddItemToObject(j, "noSuchMethod", cJSON_CreateNoSuchMethod(x->no_such_method));
             cJSON_AddItemToObject(j, "nonatomic", cJSON_CreateNonatomic(x->nonatomic));
             cJSON_AddItemToObject(j, "None", cJSON_CreateNone(x->none));
@@ -16674,7 +16678,10 @@ cJSON * cJSON_CreateObj4(const struct Obj4 * x) {
             cJSON_AddItemToObject(j, "NSObject", cJSON_CreateNsObject(x->ns_object));
             cJSON_AddItemToObject(j, "NSString", cJSON_CreateNsString(x->ns_string));
             cJSON_AddItemToObject(j, "NULL", cJSON_CreateNullClass(x->null));
+            cJSON_AddItemToObject(j, "NullNode", cJSON_CreateNullNode(x->null_node));
             cJSON_AddItemToObject(j, "number", cJSON_CreateNumberClass(x->number));
+            cJSON_AddItemToObject(j, "new", cJSON_CreateNew(x->obj4_new));
+            cJSON_AddItemToObject(j, "noexcept", cJSON_CreateNoexcept(x->obj4_noexcept));
             cJSON_AddItemToObject(j, "none", cJSON_CreateNoneClass(x->obj4_none));
             cJSON_AddItemToObject(j, "not", cJSON_CreateNot(x->obj4_not));
             cJSON_AddItemToObject(j, "not_eq", cJSON_CreateNotEq(x->obj4_not_eq));
@@ -16692,9 +16699,9 @@ cJSON * cJSON_CreateObj4(const struct Obj4 * x) {
             cJSON_AddItemToObject(j, "reinterpret_cast", cJSON_CreateReinterpretCast(x->obj4_reinterpret_cast));
             cJSON_AddItemToObject(j, "requires", cJSON_CreateRequires(x->obj4_requires));
             cJSON_AddItemToObject(j, "restrict", cJSON_CreateRestrict(x->obj4_restrict));
-            cJSON_AddItemToObject(j, "return", cJSON_CreateReturn(x->obj4_return));
             cJSON_AddItemToObject(j, "object", cJSON_CreateObjectClass(x->object));
             cJSON_AddItemToObject(j, "ObjectMapper", cJSON_CreateObjectMapper(x->object_mapper));
+            cJSON_AddItemToObject(j, "ObjectNode", cJSON_CreateObjectNode(x->object_node));
             cJSON_AddItemToObject(j, "of", cJSON_CreateOf(x->of));
             cJSON_AddItemToObject(j, "oneway", cJSON_CreateOneway(x->oneway));
             cJSON_AddItemToObject(j, "open", cJSON_CreateOpen(x->open));
@@ -16722,13 +16729,6 @@ cJSON * cJSON_CreateObj4(const struct Obj4 * x) {
             cJSON_AddItemToObject(j, "required", cJSON_CreateRequired(x->required));
             cJSON_AddItemToObject(j, "retain", cJSON_CreateRetain(x->retain));
             cJSON_AddItemToObject(j, "rethrows", cJSON_CreateRethrows(x->rethrows));
-            cJSON_AddItemToObject(j, "right", cJSON_CreateRight(x->right));
-            cJSON_AddItemToObject(j, "runtimeType", cJSON_CreateRuntimeType(x->runtime_type));
-            cJSON_AddItemToObject(j, "s", cJSON_CreateS(x->s));
-            cJSON_AddItemToObject(j, "sbyte", cJSON_CreateSbyte(x->sbyte));
-            cJSON_AddItemToObject(j, "sealed", cJSON_CreateSealed(x->sealed));
-            cJSON_AddItemToObject(j, "SEL", cJSON_CreateSel(x->sel));
-            cJSON_AddItemToObject(j, "select", cJSON_CreateSelect(x->select));
         }
     }
     return j;
@@ -16748,6 +16748,18 @@ char * cJSON_PrintObj4(const struct Obj4 * x) {
 
 void cJSON_DeleteObj4(struct Obj4 * x) {
     if (NULL != x) {
+        if (NULL != x->native) {
+            cJSON_DeleteNative(x->native);
+        }
+        if (NULL != x->newtonsoft) {
+            cJSON_DeleteNewtonsoft(x->newtonsoft);
+        }
+        if (NULL != x->nil) {
+            cJSON_DeleteNil(x->nil);
+        }
+        if (NULL != x->no) {
+            cJSON_DeleteNo(x->no);
+        }
         if (NULL != x->no_such_method) {
             cJSON_DeleteNoSuchMethod(x->no_such_method);
         }
@@ -16775,9 +16787,18 @@ void cJSON_DeleteObj4(struct Obj4 * x) {
         if (NULL != x->null) {
             cJSON_DeleteNullClass(x->null);
         }
+        if (NULL != x->null_node) {
+            cJSON_DeleteNullNode(x->null_node);
+        }
         if (NULL != x->number) {
             cJSON_DeleteNumberClass(x->number);
         }
+        if (NULL != x->obj4_new) {
+            cJSON_DeleteNew(x->obj4_new);
+        }
+        if (NULL != x->obj4_noexcept) {
+            cJSON_DeleteNoexcept(x->obj4_noexcept);
+        }
         if (NULL != x->obj4_none) {
             cJSON_DeleteNoneClass(x->obj4_none);
         }
@@ -16829,15 +16850,15 @@ void cJSON_DeleteObj4(struct Obj4 * x) {
         if (NULL != x->obj4_restrict) {
             cJSON_DeleteRestrict(x->obj4_restrict);
         }
-        if (NULL != x->obj4_return) {
-            cJSON_DeleteReturn(x->obj4_return);
-        }
         if (NULL != x->object) {
             cJSON_DeleteObjectClass(x->object);
         }
         if (NULL != x->object_mapper) {
             cJSON_DeleteObjectMapper(x->object_mapper);
         }
+        if (NULL != x->object_node) {
+            cJSON_DeleteObjectNode(x->object_node);
+        }
         if (NULL != x->of) {
             cJSON_DeleteOf(x->of);
         }
@@ -16919,59 +16940,93 @@ void cJSON_DeleteObj4(struct Obj4 * x) {
         if (NULL != x->rethrows) {
             cJSON_DeleteRethrows(x->rethrows);
         }
-        if (NULL != x->right) {
-            cJSON_DeleteRight(x->right);
-        }
-        if (NULL != x->runtime_type) {
-            cJSON_DeleteRuntimeType(x->runtime_type);
-        }
-        if (NULL != x->s) {
-            cJSON_DeleteS(x->s);
-        }
-        if (NULL != x->sbyte) {
-            cJSON_DeleteSbyte(x->sbyte);
-        }
-        if (NULL != x->sealed) {
-            cJSON_DeleteSealed(x->sealed);
-        }
-        if (NULL != x->sel) {
-            cJSON_DeleteSel(x->sel);
-        }
-        if (NULL != x->select) {
-            cJSON_DeleteSelect(x->select);
-        }
         cJSON_free(x);
     }
 }
 
-struct SelfClass * cJSON_ParseSelfClass(const char * s) {
-    struct SelfClass * x = NULL;
+struct Return * cJSON_ParseReturn(const char * s) {
+    struct Return * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetSelfClassValue(j);
+            x = cJSON_GetReturnValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct SelfClass * cJSON_GetSelfClassValue(const cJSON * j) {
-    struct SelfClass * x = NULL;
+struct Return * cJSON_GetReturnValue(const cJSON * j) {
+    struct Return * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct SelfClass)))) {
-            memset(x, 0, sizeof(struct SelfClass));
-            if (!cJSON_HasObjectItem(j, "self")) { cJSON_DeleteSelfClass(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "self")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "self"))) { cJSON_DeleteSelfClass(x); return NULL; }
-                x->self = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "self"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Return)))) {
+            memset(x, 0, sizeof(struct Return));
+            if (!cJSON_HasObjectItem(j, "return")) { cJSON_DeleteReturn(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "return")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "return"))) { cJSON_DeleteReturn(x); return NULL; }
+                x->return_return = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "return"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateSelfClass(const struct SelfClass * x) {
+cJSON * cJSON_CreateReturn(const struct Return * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "return", x->return_return);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintReturn(const struct Return * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateReturn(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteReturn(struct Return * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct SelfClass * cJSON_ParseSelfClass(const char * s) {
+    struct SelfClass * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetSelfClassValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct SelfClass * cJSON_GetSelfClassValue(const cJSON * j) {
+    struct SelfClass * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct SelfClass)))) {
+            memset(x, 0, sizeof(struct SelfClass));
+            if (!cJSON_HasObjectItem(j, "self")) { cJSON_DeleteSelfClass(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "self")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "self"))) { cJSON_DeleteSelfClass(x); return NULL; }
+                x->self = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "self"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateSelfClass(const struct SelfClass * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
@@ -18154,47 +18209,47 @@ void cJSON_DeleteUnion(struct Union * x) {
     }
 }
 
-struct Unsigned * cJSON_ParseUnsigned(const char * s) {
-    struct Unsigned * x = NULL;
+struct Obj5True * cJSON_ParseObj5True(const char * s) {
+    struct Obj5True * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetUnsignedValue(j);
+            x = cJSON_GetObj5TrueValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Unsigned * cJSON_GetUnsignedValue(const cJSON * j) {
-    struct Unsigned * x = NULL;
+struct Obj5True * cJSON_GetObj5TrueValue(const cJSON * j) {
+    struct Obj5True * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Unsigned)))) {
-            memset(x, 0, sizeof(struct Unsigned));
-            if (!cJSON_HasObjectItem(j, "unsigned")) { cJSON_DeleteUnsigned(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "unsigned")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "unsigned"))) { cJSON_DeleteUnsigned(x); return NULL; }
-                x->unsigned_unsigned = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "unsigned"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Obj5True)))) {
+            memset(x, 0, sizeof(struct Obj5True));
+            if (!cJSON_HasObjectItem(j, "true")) { cJSON_DeleteObj5True(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "true")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "true"))) { cJSON_DeleteObj5True(x); return NULL; }
+                x->true_true = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "true"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateUnsigned(const struct Unsigned * x) {
+cJSON * cJSON_CreateObj5True(const struct Obj5True * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "unsigned", x->unsigned_unsigned);
+            cJSON_AddNumberToObject(j, "true", x->true_true);
         }
     }
     return j;
 }
 
-char * cJSON_PrintUnsigned(const struct Unsigned * x) {
+char * cJSON_PrintObj5True(const struct Obj5True * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateUnsigned(x);
+        cJSON * j = cJSON_CreateObj5True(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -18203,53 +18258,53 @@ char * cJSON_PrintUnsigned(const struct Unsigned * x) {
     return s;
 }
 
-void cJSON_DeleteUnsigned(struct Unsigned * x) {
+void cJSON_DeleteObj5True(struct Obj5True * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Using * cJSON_ParseUsing(const char * s) {
-    struct Using * x = NULL;
+struct Right * cJSON_ParseRight(const char * s) {
+    struct Right * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetUsingValue(j);
+            x = cJSON_GetRightValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Using * cJSON_GetUsingValue(const cJSON * j) {
-    struct Using * x = NULL;
+struct Right * cJSON_GetRightValue(const cJSON * j) {
+    struct Right * 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 = cJSON_malloc(sizeof(struct Right)))) {
+            memset(x, 0, sizeof(struct Right));
+            if (!cJSON_HasObjectItem(j, "right")) { cJSON_DeleteRight(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "right")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "right"))) { cJSON_DeleteRight(x); return NULL; }
+                x->right = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "right"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateUsing(const struct Using * x) {
+cJSON * cJSON_CreateRight(const struct Right * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "using", x->using_using);
+            cJSON_AddNumberToObject(j, "right", x->right);
         }
     }
     return j;
 }
 
-char * cJSON_PrintUsing(const struct Using * x) {
+char * cJSON_PrintRight(const struct Right * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateUsing(x);
+        cJSON * j = cJSON_CreateRight(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -18258,53 +18313,53 @@ char * cJSON_PrintUsing(const struct Using * x) {
     return s;
 }
 
-void cJSON_DeleteUsing(struct Using * x) {
+void cJSON_DeleteRight(struct Right * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Virtual * cJSON_ParseVirtual(const char * s) {
-    struct Virtual * x = NULL;
+struct RuntimeType * cJSON_ParseRuntimeType(const char * s) {
+    struct RuntimeType * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetVirtualValue(j);
+            x = cJSON_GetRuntimeTypeValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Virtual * cJSON_GetVirtualValue(const cJSON * j) {
-    struct Virtual * x = NULL;
+struct RuntimeType * cJSON_GetRuntimeTypeValue(const cJSON * j) {
+    struct RuntimeType * 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 RuntimeType)))) {
+            memset(x, 0, sizeof(struct RuntimeType));
+            if (!cJSON_HasObjectItem(j, "runtimeType")) { cJSON_DeleteRuntimeType(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "runtimeType")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "runtimeType"))) { cJSON_DeleteRuntimeType(x); return NULL; }
+                x->runtime_type = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "runtimeType"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateVirtual(const struct Virtual * x) {
+cJSON * cJSON_CreateRuntimeType(const struct RuntimeType * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "virtual", x->virtual_virtual);
+            cJSON_AddNumberToObject(j, "runtimeType", x->runtime_type);
         }
     }
     return j;
 }
 
-char * cJSON_PrintVirtual(const struct Virtual * x) {
+char * cJSON_PrintRuntimeType(const struct RuntimeType * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateVirtual(x);
+        cJSON * j = cJSON_CreateRuntimeType(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -18313,53 +18368,53 @@ char * cJSON_PrintVirtual(const struct Virtual * x) {
     return s;
 }
 
-void cJSON_DeleteVirtual(struct Virtual * x) {
+void cJSON_DeleteRuntimeType(struct RuntimeType * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Obj5True * cJSON_ParseObj5True(const char * s) {
-    struct Obj5True * x = NULL;
+struct S * cJSON_ParseS(const char * s) {
+    struct S * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetObj5TrueValue(j);
+            x = cJSON_GetSValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Obj5True * cJSON_GetObj5TrueValue(const cJSON * j) {
-    struct Obj5True * x = NULL;
+struct S * cJSON_GetSValue(const cJSON * j) {
+    struct S * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Obj5True)))) {
-            memset(x, 0, sizeof(struct Obj5True));
-            if (!cJSON_HasObjectItem(j, "true")) { cJSON_DeleteObj5True(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "true")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "true"))) { cJSON_DeleteObj5True(x); return NULL; }
-                x->true_true = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "true"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct S)))) {
+            memset(x, 0, sizeof(struct S));
+            if (!cJSON_HasObjectItem(j, "s")) { cJSON_DeleteS(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "s")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "s"))) { cJSON_DeleteS(x); return NULL; }
+                x->s = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "s"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateObj5True(const struct Obj5True * x) {
+cJSON * cJSON_CreateS(const struct S * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "true", x->true_true);
+            cJSON_AddNumberToObject(j, "s", x->s);
         }
     }
     return j;
 }
 
-char * cJSON_PrintObj5True(const struct Obj5True * x) {
+char * cJSON_PrintS(const struct S * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateObj5True(x);
+        cJSON * j = cJSON_CreateS(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -18368,53 +18423,53 @@ char * cJSON_PrintObj5True(const struct Obj5True * x) {
     return s;
 }
 
-void cJSON_DeleteObj5True(struct Obj5True * x) {
+void cJSON_DeleteS(struct S * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Self * cJSON_ParseSelf(const char * s) {
-    struct Self * x = NULL;
+struct Sbyte * cJSON_ParseSbyte(const char * s) {
+    struct Sbyte * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetSelfValue(j);
+            x = cJSON_GetSbyteValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Self * cJSON_GetSelfValue(const cJSON * j) {
-    struct Self * x = NULL;
+struct Sbyte * cJSON_GetSbyteValue(const cJSON * j) {
+    struct Sbyte * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Self)))) {
-            memset(x, 0, sizeof(struct Self));
-            if (!cJSON_HasObjectItem(j, "Self")) { cJSON_DeleteSelf(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "Self")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "Self"))) { cJSON_DeleteSelf(x); return NULL; }
-                x->self = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "Self"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Sbyte)))) {
+            memset(x, 0, sizeof(struct Sbyte));
+            if (!cJSON_HasObjectItem(j, "sbyte")) { cJSON_DeleteSbyte(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "sbyte")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "sbyte"))) { cJSON_DeleteSbyte(x); return NULL; }
+                x->sbyte = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "sbyte"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateSelf(const struct Self * x) {
+cJSON * cJSON_CreateSbyte(const struct Sbyte * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "Self", x->self);
+            cJSON_AddNumberToObject(j, "sbyte", x->sbyte);
         }
     }
     return j;
 }
 
-char * cJSON_PrintSelf(const struct Self * x) {
+char * cJSON_PrintSbyte(const struct Sbyte * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateSelf(x);
+        cJSON * j = cJSON_CreateSbyte(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -18423,53 +18478,53 @@ char * cJSON_PrintSelf(const struct Self * x) {
     return s;
 }
 
-void cJSON_DeleteSelf(struct Self * x) {
+void cJSON_DeleteSbyte(struct Sbyte * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Sendable * cJSON_ParseSendable(const char * s) {
-    struct Sendable * x = NULL;
+struct Sealed * cJSON_ParseSealed(const char * s) {
+    struct Sealed * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetSendableValue(j);
+            x = cJSON_GetSealedValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Sendable * cJSON_GetSendableValue(const cJSON * j) {
-    struct Sendable * x = NULL;
+struct Sealed * cJSON_GetSealedValue(const cJSON * j) {
+    struct Sealed * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Sendable)))) {
-            memset(x, 0, sizeof(struct Sendable));
-            if (!cJSON_HasObjectItem(j, "Sendable")) { cJSON_DeleteSendable(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "Sendable")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "Sendable"))) { cJSON_DeleteSendable(x); return NULL; }
-                x->sendable = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "Sendable"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Sealed)))) {
+            memset(x, 0, sizeof(struct Sealed));
+            if (!cJSON_HasObjectItem(j, "sealed")) { cJSON_DeleteSealed(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "sealed")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "sealed"))) { cJSON_DeleteSealed(x); return NULL; }
+                x->sealed = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "sealed"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateSendable(const struct Sendable * x) {
+cJSON * cJSON_CreateSealed(const struct Sealed * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "Sendable", x->sendable);
+            cJSON_AddNumberToObject(j, "sealed", x->sealed);
         }
     }
     return j;
 }
 
-char * cJSON_PrintSendable(const struct Sendable * x) {
+char * cJSON_PrintSealed(const struct Sealed * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateSendable(x);
+        cJSON * j = cJSON_CreateSealed(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -18478,53 +18533,53 @@ char * cJSON_PrintSendable(const struct Sendable * x) {
     return s;
 }
 
-void cJSON_DeleteSendable(struct Sendable * x) {
+void cJSON_DeleteSealed(struct Sealed * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Serialize * cJSON_ParseSerialize(const char * s) {
-    struct Serialize * x = NULL;
+struct Sel * cJSON_ParseSel(const char * s) {
+    struct Sel * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetSerializeValue(j);
+            x = cJSON_GetSelValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Serialize * cJSON_GetSerializeValue(const cJSON * j) {
-    struct Serialize * x = NULL;
-    if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Serialize)))) {
-            memset(x, 0, sizeof(struct Serialize));
-            if (!cJSON_HasObjectItem(j, "serialize")) { cJSON_DeleteSerialize(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "serialize")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "serialize"))) { cJSON_DeleteSerialize(x); return NULL; }
-                x->serialize = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "serialize"));
+struct Sel * cJSON_GetSelValue(const cJSON * j) {
+    struct Sel * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct Sel)))) {
+            memset(x, 0, sizeof(struct Sel));
+            if (!cJSON_HasObjectItem(j, "SEL")) { cJSON_DeleteSel(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "SEL")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "SEL"))) { cJSON_DeleteSel(x); return NULL; }
+                x->sel = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "SEL"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateSerialize(const struct Serialize * x) {
+cJSON * cJSON_CreateSel(const struct Sel * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "serialize", x->serialize);
+            cJSON_AddNumberToObject(j, "SEL", x->sel);
         }
     }
     return j;
 }
 
-char * cJSON_PrintSerialize(const struct Serialize * x) {
+char * cJSON_PrintSel(const struct Sel * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateSerialize(x);
+        cJSON * j = cJSON_CreateSel(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -18533,53 +18588,53 @@ char * cJSON_PrintSerialize(const struct Serialize * x) {
     return s;
 }
 
-void cJSON_DeleteSerialize(struct Serialize * x) {
+void cJSON_DeleteSel(struct Sel * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct SerializerProvider * cJSON_ParseSerializerProvider(const char * s) {
-    struct SerializerProvider * x = NULL;
+struct Select * cJSON_ParseSelect(const char * s) {
+    struct Select * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetSerializerProviderValue(j);
+            x = cJSON_GetSelectValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct SerializerProvider * cJSON_GetSerializerProviderValue(const cJSON * j) {
-    struct SerializerProvider * x = NULL;
+struct Select * cJSON_GetSelectValue(const cJSON * j) {
+    struct Select * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct SerializerProvider)))) {
-            memset(x, 0, sizeof(struct SerializerProvider));
-            if (!cJSON_HasObjectItem(j, "SerializerProvider")) { cJSON_DeleteSerializerProvider(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "SerializerProvider")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "SerializerProvider"))) { cJSON_DeleteSerializerProvider(x); return NULL; }
-                x->serializer_provider = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "SerializerProvider"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Select)))) {
+            memset(x, 0, sizeof(struct Select));
+            if (!cJSON_HasObjectItem(j, "select")) { cJSON_DeleteSelect(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "select")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "select"))) { cJSON_DeleteSelect(x); return NULL; }
+                x->select = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "select"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateSerializerProvider(const struct SerializerProvider * x) {
+cJSON * cJSON_CreateSelect(const struct Select * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "SerializerProvider", x->serializer_provider);
+            cJSON_AddNumberToObject(j, "select", x->select);
         }
     }
     return j;
 }
 
-char * cJSON_PrintSerializerProvider(const struct SerializerProvider * x) {
+char * cJSON_PrintSelect(const struct Select * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateSerializerProvider(x);
+        cJSON * j = cJSON_CreateSelect(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -18588,53 +18643,53 @@ char * cJSON_PrintSerializerProvider(const struct SerializerProvider * x) {
     return s;
 }
 
-void cJSON_DeleteSerializerProvider(struct SerializerProvider * x) {
+void cJSON_DeleteSelect(struct Select * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Set * cJSON_ParseSet(const char * s) {
-    struct Set * x = NULL;
+struct Self * cJSON_ParseSelf(const char * s) {
+    struct Self * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetSetValue(j);
+            x = cJSON_GetSelfValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Set * cJSON_GetSetValue(const cJSON * j) {
-    struct Set * x = NULL;
+struct Self * cJSON_GetSelfValue(const cJSON * j) {
+    struct Self * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Set)))) {
-            memset(x, 0, sizeof(struct Set));
-            if (!cJSON_HasObjectItem(j, "set")) { cJSON_DeleteSet(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "set")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "set"))) { cJSON_DeleteSet(x); return NULL; }
-                x->set = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "set"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Self)))) {
+            memset(x, 0, sizeof(struct Self));
+            if (!cJSON_HasObjectItem(j, "Self")) { cJSON_DeleteSelf(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "Self")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "Self"))) { cJSON_DeleteSelf(x); return NULL; }
+                x->self = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "Self"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateSet(const struct Set * x) {
+cJSON * cJSON_CreateSelf(const struct Self * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "set", x->set);
+            cJSON_AddNumberToObject(j, "Self", x->self);
         }
     }
     return j;
 }
 
-char * cJSON_PrintSet(const struct Set * x) {
+char * cJSON_PrintSelf(const struct Self * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateSet(x);
+        cJSON * j = cJSON_CreateSelf(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -18643,53 +18698,53 @@ char * cJSON_PrintSet(const struct Set * x) {
     return s;
 }
 
-void cJSON_DeleteSet(struct Set * x) {
+void cJSON_DeleteSelf(struct Self * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct SimpleModule * cJSON_ParseSimpleModule(const char * s) {
-    struct SimpleModule * x = NULL;
+struct Sendable * cJSON_ParseSendable(const char * s) {
+    struct Sendable * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetSimpleModuleValue(j);
+            x = cJSON_GetSendableValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct SimpleModule * cJSON_GetSimpleModuleValue(const cJSON * j) {
-    struct SimpleModule * x = NULL;
+struct Sendable * cJSON_GetSendableValue(const cJSON * j) {
+    struct Sendable * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct SimpleModule)))) {
-            memset(x, 0, sizeof(struct SimpleModule));
-            if (!cJSON_HasObjectItem(j, "SimpleModule")) { cJSON_DeleteSimpleModule(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "SimpleModule")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "SimpleModule"))) { cJSON_DeleteSimpleModule(x); return NULL; }
-                x->simple_module = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "SimpleModule"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Sendable)))) {
+            memset(x, 0, sizeof(struct Sendable));
+            if (!cJSON_HasObjectItem(j, "Sendable")) { cJSON_DeleteSendable(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "Sendable")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "Sendable"))) { cJSON_DeleteSendable(x); return NULL; }
+                x->sendable = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "Sendable"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateSimpleModule(const struct SimpleModule * x) {
+cJSON * cJSON_CreateSendable(const struct Sendable * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "SimpleModule", x->simple_module);
+            cJSON_AddNumberToObject(j, "Sendable", x->sendable);
         }
     }
     return j;
 }
 
-char * cJSON_PrintSimpleModule(const struct SimpleModule * x) {
+char * cJSON_PrintSendable(const struct Sendable * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateSimpleModule(x);
+        cJSON * j = cJSON_CreateSendable(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -18698,53 +18753,53 @@ char * cJSON_PrintSimpleModule(const struct SimpleModule * x) {
     return s;
 }
 
-void cJSON_DeleteSimpleModule(struct SimpleModule * x) {
+void cJSON_DeleteSendable(struct Sendable * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Stackalloc * cJSON_ParseStackalloc(const char * s) {
-    struct Stackalloc * x = NULL;
+struct SerializationFeature * cJSON_ParseSerializationFeature(const char * s) {
+    struct SerializationFeature * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetStackallocValue(j);
+            x = cJSON_GetSerializationFeatureValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Stackalloc * cJSON_GetStackallocValue(const cJSON * j) {
-    struct Stackalloc * x = NULL;
+struct SerializationFeature * cJSON_GetSerializationFeatureValue(const cJSON * j) {
+    struct SerializationFeature * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Stackalloc)))) {
-            memset(x, 0, sizeof(struct Stackalloc));
-            if (!cJSON_HasObjectItem(j, "stackalloc")) { cJSON_DeleteStackalloc(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "stackalloc")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "stackalloc"))) { cJSON_DeleteStackalloc(x); return NULL; }
-                x->stackalloc = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "stackalloc"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct SerializationFeature)))) {
+            memset(x, 0, sizeof(struct SerializationFeature));
+            if (!cJSON_HasObjectItem(j, "SerializationFeature")) { cJSON_DeleteSerializationFeature(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "SerializationFeature")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "SerializationFeature"))) { cJSON_DeleteSerializationFeature(x); return NULL; }
+                x->serialization_feature = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "SerializationFeature"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateStackalloc(const struct Stackalloc * x) {
+cJSON * cJSON_CreateSerializationFeature(const struct SerializationFeature * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "stackalloc", x->stackalloc);
+            cJSON_AddNumberToObject(j, "SerializationFeature", x->serialization_feature);
         }
     }
     return j;
 }
 
-char * cJSON_PrintStackalloc(const struct Stackalloc * x) {
+char * cJSON_PrintSerializationFeature(const struct SerializationFeature * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateStackalloc(x);
+        cJSON * j = cJSON_CreateSerializationFeature(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -18753,53 +18808,53 @@ char * cJSON_PrintStackalloc(const struct Stackalloc * x) {
     return s;
 }
 
-void cJSON_DeleteStackalloc(struct Stackalloc * x) {
+void cJSON_DeleteSerializationFeature(struct SerializationFeature * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Standards * cJSON_ParseStandards(const char * s) {
-    struct Standards * x = NULL;
+struct Serialize * cJSON_ParseSerialize(const char * s) {
+    struct Serialize * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetStandardsValue(j);
+            x = cJSON_GetSerializeValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Standards * cJSON_GetStandardsValue(const cJSON * j) {
-    struct Standards * x = NULL;
+struct Serialize * cJSON_GetSerializeValue(const cJSON * j) {
+    struct Serialize * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Standards)))) {
-            memset(x, 0, sizeof(struct Standards));
-            if (!cJSON_HasObjectItem(j, "Standards")) { cJSON_DeleteStandards(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "Standards")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "Standards"))) { cJSON_DeleteStandards(x); return NULL; }
-                x->standards = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "Standards"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Serialize)))) {
+            memset(x, 0, sizeof(struct Serialize));
+            if (!cJSON_HasObjectItem(j, "serialize")) { cJSON_DeleteSerialize(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "serialize")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "serialize"))) { cJSON_DeleteSerialize(x); return NULL; }
+                x->serialize = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "serialize"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateStandards(const struct Standards * x) {
+cJSON * cJSON_CreateSerialize(const struct Serialize * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "Standards", x->standards);
+            cJSON_AddNumberToObject(j, "serialize", x->serialize);
         }
     }
     return j;
 }
 
-char * cJSON_PrintStandards(const struct Standards * x) {
+char * cJSON_PrintSerialize(const struct Serialize * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateStandards(x);
+        cJSON * j = cJSON_CreateSerialize(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -18808,53 +18863,53 @@ char * cJSON_PrintStandards(const struct Standards * x) {
     return s;
 }
 
-void cJSON_DeleteStandards(struct Standards * x) {
+void cJSON_DeleteSerialize(struct Serialize * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct StdDeserializer * cJSON_ParseStdDeserializer(const char * s) {
-    struct StdDeserializer * x = NULL;
+struct SerializerProvider * cJSON_ParseSerializerProvider(const char * s) {
+    struct SerializerProvider * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetStdDeserializerValue(j);
+            x = cJSON_GetSerializerProviderValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct StdDeserializer * cJSON_GetStdDeserializerValue(const cJSON * j) {
-    struct StdDeserializer * x = NULL;
+struct SerializerProvider * cJSON_GetSerializerProviderValue(const cJSON * j) {
+    struct SerializerProvider * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct StdDeserializer)))) {
-            memset(x, 0, sizeof(struct StdDeserializer));
-            if (!cJSON_HasObjectItem(j, "StdDeserializer")) { cJSON_DeleteStdDeserializer(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "StdDeserializer")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "StdDeserializer"))) { cJSON_DeleteStdDeserializer(x); return NULL; }
-                x->std_deserializer = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "StdDeserializer"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct SerializerProvider)))) {
+            memset(x, 0, sizeof(struct SerializerProvider));
+            if (!cJSON_HasObjectItem(j, "SerializerProvider")) { cJSON_DeleteSerializerProvider(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "SerializerProvider")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "SerializerProvider"))) { cJSON_DeleteSerializerProvider(x); return NULL; }
+                x->serializer_provider = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "SerializerProvider"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateStdDeserializer(const struct StdDeserializer * x) {
+cJSON * cJSON_CreateSerializerProvider(const struct SerializerProvider * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "StdDeserializer", x->std_deserializer);
+            cJSON_AddNumberToObject(j, "SerializerProvider", x->serializer_provider);
         }
     }
     return j;
 }
 
-char * cJSON_PrintStdDeserializer(const struct StdDeserializer * x) {
+char * cJSON_PrintSerializerProvider(const struct SerializerProvider * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateStdDeserializer(x);
+        cJSON * j = cJSON_CreateSerializerProvider(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -18863,53 +18918,53 @@ char * cJSON_PrintStdDeserializer(const struct StdDeserializer * x) {
     return s;
 }
 
-void cJSON_DeleteStdDeserializer(struct StdDeserializer * x) {
+void cJSON_DeleteSerializerProvider(struct SerializerProvider * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct StdSerializer * cJSON_ParseStdSerializer(const char * s) {
-    struct StdSerializer * x = NULL;
+struct Set * cJSON_ParseSet(const char * s) {
+    struct Set * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetStdSerializerValue(j);
+            x = cJSON_GetSetValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct StdSerializer * cJSON_GetStdSerializerValue(const cJSON * j) {
-    struct StdSerializer * x = NULL;
+struct Set * cJSON_GetSetValue(const cJSON * j) {
+    struct Set * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct StdSerializer)))) {
-            memset(x, 0, sizeof(struct StdSerializer));
-            if (!cJSON_HasObjectItem(j, "StdSerializer")) { cJSON_DeleteStdSerializer(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "StdSerializer")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "StdSerializer"))) { cJSON_DeleteStdSerializer(x); return NULL; }
-                x->std_serializer = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "StdSerializer"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Set)))) {
+            memset(x, 0, sizeof(struct Set));
+            if (!cJSON_HasObjectItem(j, "set")) { cJSON_DeleteSet(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "set")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "set"))) { cJSON_DeleteSet(x); return NULL; }
+                x->set = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "set"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateStdSerializer(const struct StdSerializer * x) {
+cJSON * cJSON_CreateSet(const struct Set * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "StdSerializer", x->std_serializer);
+            cJSON_AddNumberToObject(j, "set", x->set);
         }
     }
     return j;
 }
 
-char * cJSON_PrintStdSerializer(const struct StdSerializer * x) {
+char * cJSON_PrintSet(const struct Set * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateStdSerializer(x);
+        cJSON * j = cJSON_CreateSet(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -18918,53 +18973,53 @@ char * cJSON_PrintStdSerializer(const struct StdSerializer * x) {
     return s;
 }
 
-void cJSON_DeleteStdSerializer(struct StdSerializer * x) {
+void cJSON_DeleteSet(struct Set * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Strictfp * cJSON_ParseStrictfp(const char * s) {
-    struct Strictfp * x = NULL;
+struct SimpleModule * cJSON_ParseSimpleModule(const char * s) {
+    struct SimpleModule * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetStrictfpValue(j);
+            x = cJSON_GetSimpleModuleValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Strictfp * cJSON_GetStrictfpValue(const cJSON * j) {
-    struct Strictfp * x = NULL;
+struct SimpleModule * cJSON_GetSimpleModuleValue(const cJSON * j) {
+    struct SimpleModule * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Strictfp)))) {
-            memset(x, 0, sizeof(struct Strictfp));
-            if (!cJSON_HasObjectItem(j, "strictfp")) { cJSON_DeleteStrictfp(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "strictfp")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "strictfp"))) { cJSON_DeleteStrictfp(x); return NULL; }
-                x->strictfp = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "strictfp"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct SimpleModule)))) {
+            memset(x, 0, sizeof(struct SimpleModule));
+            if (!cJSON_HasObjectItem(j, "SimpleModule")) { cJSON_DeleteSimpleModule(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "SimpleModule")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "SimpleModule"))) { cJSON_DeleteSimpleModule(x); return NULL; }
+                x->simple_module = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "SimpleModule"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateStrictfp(const struct Strictfp * x) {
+cJSON * cJSON_CreateSimpleModule(const struct SimpleModule * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "strictfp", x->strictfp);
+            cJSON_AddNumberToObject(j, "SimpleModule", x->simple_module);
         }
     }
     return j;
 }
 
-char * cJSON_PrintStrictfp(const struct Strictfp * x) {
+char * cJSON_PrintSimpleModule(const struct SimpleModule * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateStrictfp(x);
+        cJSON * j = cJSON_CreateSimpleModule(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -18973,53 +19028,53 @@ char * cJSON_PrintStrictfp(const struct Strictfp * x) {
     return s;
 }
 
-void cJSON_DeleteStrictfp(struct Strictfp * x) {
+void cJSON_DeleteSimpleModule(struct SimpleModule * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct StringClass * cJSON_ParseStringClass(const char * s) {
-    struct StringClass * x = NULL;
+struct Stackalloc * cJSON_ParseStackalloc(const char * s) {
+    struct Stackalloc * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetStringClassValue(j);
+            x = cJSON_GetStackallocValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct StringClass * cJSON_GetStringClassValue(const cJSON * j) {
-    struct StringClass * x = NULL;
+struct Stackalloc * cJSON_GetStackallocValue(const cJSON * j) {
+    struct Stackalloc * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct StringClass)))) {
-            memset(x, 0, sizeof(struct StringClass));
-            if (!cJSON_HasObjectItem(j, "string")) { cJSON_DeleteStringClass(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "string")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "string"))) { cJSON_DeleteStringClass(x); return NULL; }
-                x->string = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "string"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Stackalloc)))) {
+            memset(x, 0, sizeof(struct Stackalloc));
+            if (!cJSON_HasObjectItem(j, "stackalloc")) { cJSON_DeleteStackalloc(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "stackalloc")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "stackalloc"))) { cJSON_DeleteStackalloc(x); return NULL; }
+                x->stackalloc = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "stackalloc"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateStringClass(const struct StringClass * x) {
+cJSON * cJSON_CreateStackalloc(const struct Stackalloc * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "string", x->string);
+            cJSON_AddNumberToObject(j, "stackalloc", x->stackalloc);
         }
     }
     return j;
 }
 
-char * cJSON_PrintStringClass(const struct StringClass * x) {
+char * cJSON_PrintStackalloc(const struct Stackalloc * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateStringClass(x);
+        cJSON * j = cJSON_CreateStackalloc(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -19028,53 +19083,53 @@ char * cJSON_PrintStringClass(const struct StringClass * x) {
     return s;
 }
 
-void cJSON_DeleteStringClass(struct StringClass * x) {
+void cJSON_DeleteStackalloc(struct Stackalloc * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Subscript * cJSON_ParseSubscript(const char * s) {
-    struct Subscript * x = NULL;
+struct Standards * cJSON_ParseStandards(const char * s) {
+    struct Standards * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetSubscriptValue(j);
+            x = cJSON_GetStandardsValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Subscript * cJSON_GetSubscriptValue(const cJSON * j) {
-    struct Subscript * x = NULL;
+struct Standards * cJSON_GetStandardsValue(const cJSON * j) {
+    struct Standards * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Subscript)))) {
-            memset(x, 0, sizeof(struct Subscript));
-            if (!cJSON_HasObjectItem(j, "subscript")) { cJSON_DeleteSubscript(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "subscript")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "subscript"))) { cJSON_DeleteSubscript(x); return NULL; }
-                x->subscript = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "subscript"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Standards)))) {
+            memset(x, 0, sizeof(struct Standards));
+            if (!cJSON_HasObjectItem(j, "Standards")) { cJSON_DeleteStandards(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "Standards")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "Standards"))) { cJSON_DeleteStandards(x); return NULL; }
+                x->standards = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "Standards"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateSubscript(const struct Subscript * x) {
+cJSON * cJSON_CreateStandards(const struct Standards * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "subscript", x->subscript);
+            cJSON_AddNumberToObject(j, "Standards", x->standards);
         }
     }
     return j;
 }
 
-char * cJSON_PrintSubscript(const struct Subscript * x) {
+char * cJSON_PrintStandards(const struct Standards * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateSubscript(x);
+        cJSON * j = cJSON_CreateStandards(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -19083,53 +19138,53 @@ char * cJSON_PrintSubscript(const struct Subscript * x) {
     return s;
 }
 
-void cJSON_DeleteSubscript(struct Subscript * x) {
+void cJSON_DeleteStandards(struct Standards * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Super * cJSON_ParseSuper(const char * s) {
-    struct Super * x = NULL;
+struct StdDeserializer * cJSON_ParseStdDeserializer(const char * s) {
+    struct StdDeserializer * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetSuperValue(j);
+            x = cJSON_GetStdDeserializerValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Super * cJSON_GetSuperValue(const cJSON * j) {
-    struct Super * x = NULL;
+struct StdDeserializer * cJSON_GetStdDeserializerValue(const cJSON * j) {
+    struct StdDeserializer * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Super)))) {
-            memset(x, 0, sizeof(struct Super));
-            if (!cJSON_HasObjectItem(j, "super")) { cJSON_DeleteSuper(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "super")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "super"))) { cJSON_DeleteSuper(x); return NULL; }
-                x->super = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "super"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct StdDeserializer)))) {
+            memset(x, 0, sizeof(struct StdDeserializer));
+            if (!cJSON_HasObjectItem(j, "StdDeserializer")) { cJSON_DeleteStdDeserializer(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "StdDeserializer")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "StdDeserializer"))) { cJSON_DeleteStdDeserializer(x); return NULL; }
+                x->std_deserializer = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "StdDeserializer"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateSuper(const struct Super * x) {
+cJSON * cJSON_CreateStdDeserializer(const struct StdDeserializer * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "super", x->super);
+            cJSON_AddNumberToObject(j, "StdDeserializer", x->std_deserializer);
         }
     }
     return j;
 }
 
-char * cJSON_PrintSuper(const struct Super * x) {
+char * cJSON_PrintStdDeserializer(const struct StdDeserializer * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateSuper(x);
+        cJSON * j = cJSON_CreateStdDeserializer(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -19138,53 +19193,53 @@ char * cJSON_PrintSuper(const struct Super * x) {
     return s;
 }
 
-void cJSON_DeleteSuper(struct Super * x) {
+void cJSON_DeleteStdDeserializer(struct StdDeserializer * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Symbol * cJSON_ParseSymbol(const char * s) {
-    struct Symbol * x = NULL;
+struct StdSerializer * cJSON_ParseStdSerializer(const char * s) {
+    struct StdSerializer * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetSymbolValue(j);
+            x = cJSON_GetStdSerializerValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Symbol * cJSON_GetSymbolValue(const cJSON * j) {
-    struct Symbol * x = NULL;
+struct StdSerializer * cJSON_GetStdSerializerValue(const cJSON * j) {
+    struct StdSerializer * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Symbol)))) {
-            memset(x, 0, sizeof(struct Symbol));
-            if (!cJSON_HasObjectItem(j, "symbol")) { cJSON_DeleteSymbol(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "symbol")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "symbol"))) { cJSON_DeleteSymbol(x); return NULL; }
-                x->symbol = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "symbol"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct StdSerializer)))) {
+            memset(x, 0, sizeof(struct StdSerializer));
+            if (!cJSON_HasObjectItem(j, "StdSerializer")) { cJSON_DeleteStdSerializer(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "StdSerializer")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "StdSerializer"))) { cJSON_DeleteStdSerializer(x); return NULL; }
+                x->std_serializer = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "StdSerializer"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateSymbol(const struct Symbol * x) {
+cJSON * cJSON_CreateStdSerializer(const struct StdSerializer * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "symbol", x->symbol);
+            cJSON_AddNumberToObject(j, "StdSerializer", x->std_serializer);
         }
     }
     return j;
 }
 
-char * cJSON_PrintSymbol(const struct Symbol * x) {
+char * cJSON_PrintStdSerializer(const struct StdSerializer * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateSymbol(x);
+        cJSON * j = cJSON_CreateStdSerializer(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -19193,53 +19248,53 @@ char * cJSON_PrintSymbol(const struct Symbol * x) {
     return s;
 }
 
-void cJSON_DeleteSymbol(struct Symbol * x) {
+void cJSON_DeleteStdSerializer(struct StdSerializer * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct System * cJSON_ParseSystem(const char * s) {
-    struct System * x = NULL;
+struct Strictfp * cJSON_ParseStrictfp(const char * s) {
+    struct Strictfp * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetSystemValue(j);
+            x = cJSON_GetStrictfpValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct System * cJSON_GetSystemValue(const cJSON * j) {
-    struct System * x = NULL;
+struct Strictfp * cJSON_GetStrictfpValue(const cJSON * j) {
+    struct Strictfp * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct System)))) {
-            memset(x, 0, sizeof(struct System));
-            if (!cJSON_HasObjectItem(j, "system")) { cJSON_DeleteSystem(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "system")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "system"))) { cJSON_DeleteSystem(x); return NULL; }
-                x->system = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "system"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Strictfp)))) {
+            memset(x, 0, sizeof(struct Strictfp));
+            if (!cJSON_HasObjectItem(j, "strictfp")) { cJSON_DeleteStrictfp(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "strictfp")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "strictfp"))) { cJSON_DeleteStrictfp(x); return NULL; }
+                x->strictfp = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "strictfp"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateSystem(const struct System * x) {
+cJSON * cJSON_CreateStrictfp(const struct Strictfp * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "system", x->system);
+            cJSON_AddNumberToObject(j, "strictfp", x->strictfp);
         }
     }
     return j;
 }
 
-char * cJSON_PrintSystem(const struct System * x) {
+char * cJSON_PrintStrictfp(const struct Strictfp * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateSystem(x);
+        cJSON * j = cJSON_CreateStrictfp(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -19248,53 +19303,53 @@ char * cJSON_PrintSystem(const struct System * x) {
     return s;
 }
 
-void cJSON_DeleteSystem(struct System * x) {
+void cJSON_DeleteStrictfp(struct Strictfp * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Then * cJSON_ParseThen(const char * s) {
-    struct Then * x = NULL;
+struct StringClass * cJSON_ParseStringClass(const char * s) {
+    struct StringClass * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetThenValue(j);
+            x = cJSON_GetStringClassValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Then * cJSON_GetThenValue(const cJSON * j) {
-    struct Then * x = NULL;
+struct StringClass * cJSON_GetStringClassValue(const cJSON * j) {
+    struct StringClass * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Then)))) {
-            memset(x, 0, sizeof(struct Then));
-            if (!cJSON_HasObjectItem(j, "then")) { cJSON_DeleteThen(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "then")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "then"))) { cJSON_DeleteThen(x); return NULL; }
-                x->then = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "then"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct StringClass)))) {
+            memset(x, 0, sizeof(struct StringClass));
+            if (!cJSON_HasObjectItem(j, "string")) { cJSON_DeleteStringClass(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "string")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "string"))) { cJSON_DeleteStringClass(x); return NULL; }
+                x->string = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "string"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateThen(const struct Then * x) {
+cJSON * cJSON_CreateStringClass(const struct StringClass * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "then", x->then);
+            cJSON_AddNumberToObject(j, "string", x->string);
         }
     }
     return j;
 }
 
-char * cJSON_PrintThen(const struct Then * x) {
+char * cJSON_PrintStringClass(const struct StringClass * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateThen(x);
+        cJSON * j = cJSON_CreateStringClass(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -19303,53 +19358,53 @@ char * cJSON_PrintThen(const struct Then * x) {
     return s;
 }
 
-void cJSON_DeleteThen(struct Then * x) {
+void cJSON_DeleteStringClass(struct StringClass * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Throws * cJSON_ParseThrows(const char * s) {
-    struct Throws * x = NULL;
+struct Subscript * cJSON_ParseSubscript(const char * s) {
+    struct Subscript * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetThrowsValue(j);
+            x = cJSON_GetSubscriptValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Throws * cJSON_GetThrowsValue(const cJSON * j) {
-    struct Throws * x = NULL;
+struct Subscript * cJSON_GetSubscriptValue(const cJSON * j) {
+    struct Subscript * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Throws)))) {
-            memset(x, 0, sizeof(struct Throws));
-            if (!cJSON_HasObjectItem(j, "throws")) { cJSON_DeleteThrows(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "throws")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "throws"))) { cJSON_DeleteThrows(x); return NULL; }
-                x->throws = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "throws"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Subscript)))) {
+            memset(x, 0, sizeof(struct Subscript));
+            if (!cJSON_HasObjectItem(j, "subscript")) { cJSON_DeleteSubscript(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "subscript")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "subscript"))) { cJSON_DeleteSubscript(x); return NULL; }
+                x->subscript = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "subscript"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateThrows(const struct Throws * x) {
+cJSON * cJSON_CreateSubscript(const struct Subscript * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "throws", x->throws);
+            cJSON_AddNumberToObject(j, "subscript", x->subscript);
         }
     }
     return j;
 }
 
-char * cJSON_PrintThrows(const struct Throws * x) {
+char * cJSON_PrintSubscript(const struct Subscript * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateThrows(x);
+        cJSON * j = cJSON_CreateSubscript(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -19358,53 +19413,53 @@ char * cJSON_PrintThrows(const struct Throws * x) {
     return s;
 }
 
-void cJSON_DeleteThrows(struct Throws * x) {
+void cJSON_DeleteSubscript(struct Subscript * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct TimeOnly * cJSON_ParseTimeOnly(const char * s) {
-    struct TimeOnly * x = NULL;
+struct Super * cJSON_ParseSuper(const char * s) {
+    struct Super * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetTimeOnlyValue(j);
+            x = cJSON_GetSuperValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct TimeOnly * cJSON_GetTimeOnlyValue(const cJSON * j) {
-    struct TimeOnly * x = NULL;
+struct Super * cJSON_GetSuperValue(const cJSON * j) {
+    struct Super * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct TimeOnly)))) {
-            memset(x, 0, sizeof(struct TimeOnly));
-            if (!cJSON_HasObjectItem(j, "TimeOnly")) { cJSON_DeleteTimeOnly(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "TimeOnly")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "TimeOnly"))) { cJSON_DeleteTimeOnly(x); return NULL; }
-                x->time_only = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "TimeOnly"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Super)))) {
+            memset(x, 0, sizeof(struct Super));
+            if (!cJSON_HasObjectItem(j, "super")) { cJSON_DeleteSuper(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "super")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "super"))) { cJSON_DeleteSuper(x); return NULL; }
+                x->super = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "super"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateTimeOnly(const struct TimeOnly * x) {
+cJSON * cJSON_CreateSuper(const struct Super * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "TimeOnly", x->time_only);
+            cJSON_AddNumberToObject(j, "super", x->super);
         }
     }
     return j;
 }
 
-char * cJSON_PrintTimeOnly(const struct TimeOnly * x) {
+char * cJSON_PrintSuper(const struct Super * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateTimeOnly(x);
+        cJSON * j = cJSON_CreateSuper(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -19413,53 +19468,53 @@ char * cJSON_PrintTimeOnly(const struct TimeOnly * x) {
     return s;
 }
 
-void cJSON_DeleteTimeOnly(struct TimeOnly * x) {
+void cJSON_DeleteSuper(struct Super * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct TimeOnlyConverter * cJSON_ParseTimeOnlyConverter(const char * s) {
-    struct TimeOnlyConverter * x = NULL;
+struct Symbol * cJSON_ParseSymbol(const char * s) {
+    struct Symbol * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetTimeOnlyConverterValue(j);
+            x = cJSON_GetSymbolValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct TimeOnlyConverter * cJSON_GetTimeOnlyConverterValue(const cJSON * j) {
-    struct TimeOnlyConverter * x = NULL;
+struct Symbol * cJSON_GetSymbolValue(const cJSON * j) {
+    struct Symbol * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct TimeOnlyConverter)))) {
-            memset(x, 0, sizeof(struct TimeOnlyConverter));
-            if (!cJSON_HasObjectItem(j, "TimeOnlyConverter")) { cJSON_DeleteTimeOnlyConverter(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "TimeOnlyConverter")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "TimeOnlyConverter"))) { cJSON_DeleteTimeOnlyConverter(x); return NULL; }
-                x->time_only_converter = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "TimeOnlyConverter"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Symbol)))) {
+            memset(x, 0, sizeof(struct Symbol));
+            if (!cJSON_HasObjectItem(j, "symbol")) { cJSON_DeleteSymbol(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "symbol")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "symbol"))) { cJSON_DeleteSymbol(x); return NULL; }
+                x->symbol = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "symbol"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateTimeOnlyConverter(const struct TimeOnlyConverter * x) {
+cJSON * cJSON_CreateSymbol(const struct Symbol * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "TimeOnlyConverter", x->time_only_converter);
+            cJSON_AddNumberToObject(j, "symbol", x->symbol);
         }
     }
     return j;
 }
 
-char * cJSON_PrintTimeOnlyConverter(const struct TimeOnlyConverter * x) {
+char * cJSON_PrintSymbol(const struct Symbol * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateTimeOnlyConverter(x);
+        cJSON * j = cJSON_CreateSymbol(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -19468,53 +19523,53 @@ char * cJSON_PrintTimeOnlyConverter(const struct TimeOnlyConverter * x) {
     return s;
 }
 
-void cJSON_DeleteTimeOnlyConverter(struct TimeOnlyConverter * x) {
+void cJSON_DeleteSymbol(struct Symbol * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct TimeZone * cJSON_ParseTimeZone(const char * s) {
-    struct TimeZone * x = NULL;
+struct System * cJSON_ParseSystem(const char * s) {
+    struct System * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetTimeZoneValue(j);
+            x = cJSON_GetSystemValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct TimeZone * cJSON_GetTimeZoneValue(const cJSON * j) {
-    struct TimeZone * x = NULL;
+struct System * cJSON_GetSystemValue(const cJSON * j) {
+    struct System * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct TimeZone)))) {
-            memset(x, 0, sizeof(struct TimeZone));
-            if (!cJSON_HasObjectItem(j, "TimeZone")) { cJSON_DeleteTimeZone(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "TimeZone")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "TimeZone"))) { cJSON_DeleteTimeZone(x); return NULL; }
-                x->time_zone = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "TimeZone"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct System)))) {
+            memset(x, 0, sizeof(struct System));
+            if (!cJSON_HasObjectItem(j, "system")) { cJSON_DeleteSystem(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "system")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "system"))) { cJSON_DeleteSystem(x); return NULL; }
+                x->system = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "system"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateTimeZone(const struct TimeZone * x) {
+cJSON * cJSON_CreateSystem(const struct System * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "TimeZone", x->time_zone);
+            cJSON_AddNumberToObject(j, "system", x->system);
         }
     }
     return j;
 }
 
-char * cJSON_PrintTimeZone(const struct TimeZone * x) {
+char * cJSON_PrintSystem(const struct System * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateTimeZone(x);
+        cJSON * j = cJSON_CreateSystem(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -19523,53 +19578,53 @@ char * cJSON_PrintTimeZone(const struct TimeZone * x) {
     return s;
 }
 
-void cJSON_DeleteTimeZone(struct TimeZone * x) {
+void cJSON_DeleteSystem(struct System * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct ToJson * cJSON_ParseToJson(const char * s) {
-    struct ToJson * x = NULL;
+struct TextNode * cJSON_ParseTextNode(const char * s) {
+    struct TextNode * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetToJsonValue(j);
+            x = cJSON_GetTextNodeValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct ToJson * cJSON_GetToJsonValue(const cJSON * j) {
-    struct ToJson * x = NULL;
+struct TextNode * cJSON_GetTextNodeValue(const cJSON * j) {
+    struct TextNode * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct ToJson)))) {
-            memset(x, 0, sizeof(struct ToJson));
-            if (!cJSON_HasObjectItem(j, "to_json")) { cJSON_DeleteToJson(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "to_json")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "to_json"))) { cJSON_DeleteToJson(x); return NULL; }
-                x->to_json = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "to_json"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct TextNode)))) {
+            memset(x, 0, sizeof(struct TextNode));
+            if (!cJSON_HasObjectItem(j, "TextNode")) { cJSON_DeleteTextNode(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "TextNode")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "TextNode"))) { cJSON_DeleteTextNode(x); return NULL; }
+                x->text_node = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "TextNode"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateToJson(const struct ToJson * x) {
+cJSON * cJSON_CreateTextNode(const struct TextNode * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "to_json", x->to_json);
+            cJSON_AddNumberToObject(j, "TextNode", x->text_node);
         }
     }
     return j;
 }
 
-char * cJSON_PrintToJson(const struct ToJson * x) {
+char * cJSON_PrintTextNode(const struct TextNode * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateToJson(x);
+        cJSON * j = cJSON_CreateTextNode(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -19578,53 +19633,53 @@ char * cJSON_PrintToJson(const struct ToJson * x) {
     return s;
 }
 
-void cJSON_DeleteToJson(struct ToJson * x) {
+void cJSON_DeleteTextNode(struct TextNode * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct ToString * cJSON_ParseToString(const char * s) {
-    struct ToString * x = NULL;
+struct Then * cJSON_ParseThen(const char * s) {
+    struct Then * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetToStringValue(j);
+            x = cJSON_GetThenValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct ToString * cJSON_GetToStringValue(const cJSON * j) {
-    struct ToString * x = NULL;
+struct Then * cJSON_GetThenValue(const cJSON * j) {
+    struct Then * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct ToString)))) {
-            memset(x, 0, sizeof(struct ToString));
-            if (!cJSON_HasObjectItem(j, "toString")) { cJSON_DeleteToString(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "toString")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "toString"))) { cJSON_DeleteToString(x); return NULL; }
-                x->to_string = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "toString"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Then)))) {
+            memset(x, 0, sizeof(struct Then));
+            if (!cJSON_HasObjectItem(j, "then")) { cJSON_DeleteThen(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "then")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "then"))) { cJSON_DeleteThen(x); return NULL; }
+                x->then = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "then"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateToString(const struct ToString * x) {
+cJSON * cJSON_CreateThen(const struct Then * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "toString", x->to_string);
+            cJSON_AddNumberToObject(j, "then", x->then);
         }
     }
     return j;
 }
 
-char * cJSON_PrintToString(const struct ToString * x) {
+char * cJSON_PrintThen(const struct Then * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateToString(x);
+        cJSON * j = cJSON_CreateThen(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -19633,53 +19688,53 @@ char * cJSON_PrintToString(const struct ToString * x) {
     return s;
 }
 
-void cJSON_DeleteToString(struct ToString * x) {
+void cJSON_DeleteThen(struct Then * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct TopLevelClass * cJSON_ParseTopLevelClass(const char * s) {
-    struct TopLevelClass * x = NULL;
+struct Throws * cJSON_ParseThrows(const char * s) {
+    struct Throws * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetTopLevelClassValue(j);
+            x = cJSON_GetThrowsValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct TopLevelClass * cJSON_GetTopLevelClassValue(const cJSON * j) {
-    struct TopLevelClass * x = NULL;
+struct Throws * cJSON_GetThrowsValue(const cJSON * j) {
+    struct Throws * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct TopLevelClass)))) {
-            memset(x, 0, sizeof(struct TopLevelClass));
-            if (!cJSON_HasObjectItem(j, "top_level")) { cJSON_DeleteTopLevelClass(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "top_level")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "top_level"))) { cJSON_DeleteTopLevelClass(x); return NULL; }
-                x->top_level = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "top_level"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Throws)))) {
+            memset(x, 0, sizeof(struct Throws));
+            if (!cJSON_HasObjectItem(j, "throws")) { cJSON_DeleteThrows(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "throws")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "throws"))) { cJSON_DeleteThrows(x); return NULL; }
+                x->throws = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "throws"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateTopLevelClass(const struct TopLevelClass * x) {
+cJSON * cJSON_CreateThrows(const struct Throws * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "top_level", x->top_level);
+            cJSON_AddNumberToObject(j, "throws", x->throws);
         }
     }
     return j;
 }
 
-char * cJSON_PrintTopLevelClass(const struct TopLevelClass * x) {
+char * cJSON_PrintThrows(const struct Throws * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateTopLevelClass(x);
+        cJSON * j = cJSON_CreateThrows(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -19688,53 +19743,53 @@ char * cJSON_PrintTopLevelClass(const struct TopLevelClass * x) {
     return s;
 }
 
-void cJSON_DeleteTopLevelClass(struct TopLevelClass * x) {
+void cJSON_DeleteThrows(struct Throws * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Transient * cJSON_ParseTransient(const char * s) {
-    struct Transient * x = NULL;
+struct TimeOnly * cJSON_ParseTimeOnly(const char * s) {
+    struct TimeOnly * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetTransientValue(j);
+            x = cJSON_GetTimeOnlyValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Transient * cJSON_GetTransientValue(const cJSON * j) {
-    struct Transient * x = NULL;
+struct TimeOnly * cJSON_GetTimeOnlyValue(const cJSON * j) {
+    struct TimeOnly * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Transient)))) {
-            memset(x, 0, sizeof(struct Transient));
-            if (!cJSON_HasObjectItem(j, "transient")) { cJSON_DeleteTransient(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "transient")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "transient"))) { cJSON_DeleteTransient(x); return NULL; }
-                x->transient = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "transient"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct TimeOnly)))) {
+            memset(x, 0, sizeof(struct TimeOnly));
+            if (!cJSON_HasObjectItem(j, "TimeOnly")) { cJSON_DeleteTimeOnly(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "TimeOnly")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "TimeOnly"))) { cJSON_DeleteTimeOnly(x); return NULL; }
+                x->time_only = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "TimeOnly"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateTransient(const struct Transient * x) {
+cJSON * cJSON_CreateTimeOnly(const struct TimeOnly * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "transient", x->transient);
+            cJSON_AddNumberToObject(j, "TimeOnly", x->time_only);
         }
     }
     return j;
 }
 
-char * cJSON_PrintTransient(const struct Transient * x) {
+char * cJSON_PrintTimeOnly(const struct TimeOnly * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateTransient(x);
+        cJSON * j = cJSON_CreateTimeOnly(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -19743,53 +19798,53 @@ char * cJSON_PrintTransient(const struct Transient * x) {
     return s;
 }
 
-void cJSON_DeleteTransient(struct Transient * x) {
+void cJSON_DeleteTimeOnly(struct TimeOnly * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Type * cJSON_ParseType(const char * s) {
-    struct Type * x = NULL;
+struct TimeOnlyConverter * cJSON_ParseTimeOnlyConverter(const char * s) {
+    struct TimeOnlyConverter * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetTypeValue(j);
+            x = cJSON_GetTimeOnlyConverterValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Type * cJSON_GetTypeValue(const cJSON * j) {
-    struct Type * x = NULL;
+struct TimeOnlyConverter * cJSON_GetTimeOnlyConverterValue(const cJSON * j) {
+    struct TimeOnlyConverter * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Type)))) {
-            memset(x, 0, sizeof(struct Type));
-            if (!cJSON_HasObjectItem(j, "Type")) { cJSON_DeleteType(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "Type")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "Type"))) { cJSON_DeleteType(x); return NULL; }
-                x->type = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "Type"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct TimeOnlyConverter)))) {
+            memset(x, 0, sizeof(struct TimeOnlyConverter));
+            if (!cJSON_HasObjectItem(j, "TimeOnlyConverter")) { cJSON_DeleteTimeOnlyConverter(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "TimeOnlyConverter")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "TimeOnlyConverter"))) { cJSON_DeleteTimeOnlyConverter(x); return NULL; }
+                x->time_only_converter = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "TimeOnlyConverter"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateType(const struct Type * x) {
+cJSON * cJSON_CreateTimeOnlyConverter(const struct TimeOnlyConverter * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "Type", x->type);
+            cJSON_AddNumberToObject(j, "TimeOnlyConverter", x->time_only_converter);
         }
     }
     return j;
 }
 
-char * cJSON_PrintType(const struct Type * x) {
+char * cJSON_PrintTimeOnlyConverter(const struct TimeOnlyConverter * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateType(x);
+        cJSON * j = cJSON_CreateTimeOnlyConverter(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -19798,53 +19853,53 @@ char * cJSON_PrintType(const struct Type * x) {
     return s;
 }
 
-void cJSON_DeleteType(struct Type * x) {
+void cJSON_DeleteTimeOnlyConverter(struct TimeOnlyConverter * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Typealias * cJSON_ParseTypealias(const char * s) {
-    struct Typealias * x = NULL;
+struct TimeZone * cJSON_ParseTimeZone(const char * s) {
+    struct TimeZone * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetTypealiasValue(j);
+            x = cJSON_GetTimeZoneValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Typealias * cJSON_GetTypealiasValue(const cJSON * j) {
-    struct Typealias * x = NULL;
+struct TimeZone * cJSON_GetTimeZoneValue(const cJSON * j) {
+    struct TimeZone * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Typealias)))) {
-            memset(x, 0, sizeof(struct Typealias));
-            if (!cJSON_HasObjectItem(j, "typealias")) { cJSON_DeleteTypealias(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "typealias")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "typealias"))) { cJSON_DeleteTypealias(x); return NULL; }
-                x->typealias = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "typealias"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct TimeZone)))) {
+            memset(x, 0, sizeof(struct TimeZone));
+            if (!cJSON_HasObjectItem(j, "TimeZone")) { cJSON_DeleteTimeZone(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "TimeZone")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "TimeZone"))) { cJSON_DeleteTimeZone(x); return NULL; }
+                x->time_zone = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "TimeZone"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateTypealias(const struct Typealias * x) {
+cJSON * cJSON_CreateTimeZone(const struct TimeZone * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "typealias", x->typealias);
+            cJSON_AddNumberToObject(j, "TimeZone", x->time_zone);
         }
     }
     return j;
 }
 
-char * cJSON_PrintTypealias(const struct Typealias * x) {
+char * cJSON_PrintTimeZone(const struct TimeZone * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateTypealias(x);
+        cJSON * j = cJSON_CreateTimeZone(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -19853,53 +19908,53 @@ char * cJSON_PrintTypealias(const struct Typealias * x) {
     return s;
 }
 
-void cJSON_DeleteTypealias(struct Typealias * x) {
+void cJSON_DeleteTimeZone(struct TimeZone * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Uint * cJSON_ParseUint(const char * s) {
-    struct Uint * x = NULL;
+struct ToJson * cJSON_ParseToJson(const char * s) {
+    struct ToJson * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetUintValue(j);
+            x = cJSON_GetToJsonValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Uint * cJSON_GetUintValue(const cJSON * j) {
-    struct Uint * x = NULL;
+struct ToJson * cJSON_GetToJsonValue(const cJSON * j) {
+    struct ToJson * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Uint)))) {
-            memset(x, 0, sizeof(struct Uint));
-            if (!cJSON_HasObjectItem(j, "uint")) { cJSON_DeleteUint(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "uint")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "uint"))) { cJSON_DeleteUint(x); return NULL; }
-                x->uint = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "uint"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct ToJson)))) {
+            memset(x, 0, sizeof(struct ToJson));
+            if (!cJSON_HasObjectItem(j, "to_json")) { cJSON_DeleteToJson(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "to_json")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "to_json"))) { cJSON_DeleteToJson(x); return NULL; }
+                x->to_json = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "to_json"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateUint(const struct Uint * x) {
+cJSON * cJSON_CreateToJson(const struct ToJson * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "uint", x->uint);
+            cJSON_AddNumberToObject(j, "to_json", x->to_json);
         }
     }
     return j;
 }
 
-char * cJSON_PrintUint(const struct Uint * x) {
+char * cJSON_PrintToJson(const struct ToJson * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateUint(x);
+        cJSON * j = cJSON_CreateToJson(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -19908,53 +19963,53 @@ char * cJSON_PrintUint(const struct Uint * x) {
     return s;
 }
 
-void cJSON_DeleteUint(struct Uint * x) {
+void cJSON_DeleteToJson(struct ToJson * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Ulong * cJSON_ParseUlong(const char * s) {
-    struct Ulong * x = NULL;
+struct ToString * cJSON_ParseToString(const char * s) {
+    struct ToString * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetUlongValue(j);
+            x = cJSON_GetToStringValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Ulong * cJSON_GetUlongValue(const cJSON * j) {
-    struct Ulong * x = NULL;
+struct ToString * cJSON_GetToStringValue(const cJSON * j) {
+    struct ToString * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Ulong)))) {
-            memset(x, 0, sizeof(struct Ulong));
-            if (!cJSON_HasObjectItem(j, "ulong")) { cJSON_DeleteUlong(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "ulong")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "ulong"))) { cJSON_DeleteUlong(x); return NULL; }
-                x->ulong = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "ulong"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct ToString)))) {
+            memset(x, 0, sizeof(struct ToString));
+            if (!cJSON_HasObjectItem(j, "toString")) { cJSON_DeleteToString(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "toString")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "toString"))) { cJSON_DeleteToString(x); return NULL; }
+                x->to_string = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "toString"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateUlong(const struct Ulong * x) {
+cJSON * cJSON_CreateToString(const struct ToString * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "ulong", x->ulong);
+            cJSON_AddNumberToObject(j, "toString", x->to_string);
         }
     }
     return j;
 }
 
-char * cJSON_PrintUlong(const struct Ulong * x) {
+char * cJSON_PrintToString(const struct ToString * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateUlong(x);
+        cJSON * j = cJSON_CreateToString(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -19963,53 +20018,53 @@ char * cJSON_PrintUlong(const struct Ulong * x) {
     return s;
 }
 
-void cJSON_DeleteUlong(struct Ulong * x) {
+void cJSON_DeleteToString(struct ToString * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Unchecked * cJSON_ParseUnchecked(const char * s) {
-    struct Unchecked * x = NULL;
+struct TopLevelClass * cJSON_ParseTopLevelClass(const char * s) {
+    struct TopLevelClass * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetUncheckedValue(j);
+            x = cJSON_GetTopLevelClassValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Unchecked * cJSON_GetUncheckedValue(const cJSON * j) {
-    struct Unchecked * x = NULL;
+struct TopLevelClass * cJSON_GetTopLevelClassValue(const cJSON * j) {
+    struct TopLevelClass * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Unchecked)))) {
-            memset(x, 0, sizeof(struct Unchecked));
-            if (!cJSON_HasObjectItem(j, "unchecked")) { cJSON_DeleteUnchecked(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "unchecked")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "unchecked"))) { cJSON_DeleteUnchecked(x); return NULL; }
-                x->unchecked = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "unchecked"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct TopLevelClass)))) {
+            memset(x, 0, sizeof(struct TopLevelClass));
+            if (!cJSON_HasObjectItem(j, "top_level")) { cJSON_DeleteTopLevelClass(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "top_level")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "top_level"))) { cJSON_DeleteTopLevelClass(x); return NULL; }
+                x->top_level = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "top_level"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateUnchecked(const struct Unchecked * x) {
+cJSON * cJSON_CreateTopLevelClass(const struct TopLevelClass * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "unchecked", x->unchecked);
+            cJSON_AddNumberToObject(j, "top_level", x->top_level);
         }
     }
     return j;
 }
 
-char * cJSON_PrintUnchecked(const struct Unchecked * x) {
+char * cJSON_PrintTopLevelClass(const struct TopLevelClass * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateUnchecked(x);
+        cJSON * j = cJSON_CreateTopLevelClass(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -20018,53 +20073,53 @@ char * cJSON_PrintUnchecked(const struct Unchecked * x) {
     return s;
 }
 
-void cJSON_DeleteUnchecked(struct Unchecked * x) {
+void cJSON_DeleteTopLevelClass(struct TopLevelClass * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Undefined * cJSON_ParseUndefined(const char * s) {
-    struct Undefined * x = NULL;
+struct Transient * cJSON_ParseTransient(const char * s) {
+    struct Transient * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetUndefinedValue(j);
+            x = cJSON_GetTransientValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Undefined * cJSON_GetUndefinedValue(const cJSON * j) {
-    struct Undefined * x = NULL;
+struct Transient * cJSON_GetTransientValue(const cJSON * j) {
+    struct Transient * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Undefined)))) {
-            memset(x, 0, sizeof(struct Undefined));
-            if (!cJSON_HasObjectItem(j, "undefined")) { cJSON_DeleteUndefined(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "undefined")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "undefined"))) { cJSON_DeleteUndefined(x); return NULL; }
-                x->undefined = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "undefined"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Transient)))) {
+            memset(x, 0, sizeof(struct Transient));
+            if (!cJSON_HasObjectItem(j, "transient")) { cJSON_DeleteTransient(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "transient")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "transient"))) { cJSON_DeleteTransient(x); return NULL; }
+                x->transient = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "transient"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateUndefined(const struct Undefined * x) {
+cJSON * cJSON_CreateTransient(const struct Transient * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "undefined", x->undefined);
+            cJSON_AddNumberToObject(j, "transient", x->transient);
         }
     }
     return j;
 }
 
-char * cJSON_PrintUndefined(const struct Undefined * x) {
+char * cJSON_PrintTransient(const struct Transient * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateUndefined(x);
+        cJSON * j = cJSON_CreateTransient(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -20073,53 +20128,53 @@ char * cJSON_PrintUndefined(const struct Undefined * x) {
     return s;
 }
 
-void cJSON_DeleteUndefined(struct Undefined * x) {
+void cJSON_DeleteTransient(struct Transient * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Unowned * cJSON_ParseUnowned(const char * s) {
-    struct Unowned * x = NULL;
+struct Type * cJSON_ParseType(const char * s) {
+    struct Type * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetUnownedValue(j);
+            x = cJSON_GetTypeValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Unowned * cJSON_GetUnownedValue(const cJSON * j) {
-    struct Unowned * x = NULL;
+struct Type * cJSON_GetTypeValue(const cJSON * j) {
+    struct Type * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Unowned)))) {
-            memset(x, 0, sizeof(struct Unowned));
-            if (!cJSON_HasObjectItem(j, "unowned")) { cJSON_DeleteUnowned(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "unowned")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "unowned"))) { cJSON_DeleteUnowned(x); return NULL; }
-                x->unowned = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "unowned"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Type)))) {
+            memset(x, 0, sizeof(struct Type));
+            if (!cJSON_HasObjectItem(j, "Type")) { cJSON_DeleteType(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "Type")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "Type"))) { cJSON_DeleteType(x); return NULL; }
+                x->type = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "Type"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateUnowned(const struct Unowned * x) {
+cJSON * cJSON_CreateType(const struct Type * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "unowned", x->unowned);
+            cJSON_AddNumberToObject(j, "Type", x->type);
         }
     }
     return j;
 }
 
-char * cJSON_PrintUnowned(const struct Unowned * x) {
+char * cJSON_PrintType(const struct Type * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateUnowned(x);
+        cJSON * j = cJSON_CreateType(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -20128,53 +20183,53 @@ char * cJSON_PrintUnowned(const struct Unowned * x) {
     return s;
 }
 
-void cJSON_DeleteUnowned(struct Unowned * x) {
+void cJSON_DeleteType(struct Type * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Unsafe * cJSON_ParseUnsafe(const char * s) {
-    struct Unsafe * x = NULL;
+struct Typealias * cJSON_ParseTypealias(const char * s) {
+    struct Typealias * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetUnsafeValue(j);
+            x = cJSON_GetTypealiasValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Unsafe * cJSON_GetUnsafeValue(const cJSON * j) {
-    struct Unsafe * x = NULL;
+struct Typealias * cJSON_GetTypealiasValue(const cJSON * j) {
+    struct Typealias * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Unsafe)))) {
-            memset(x, 0, sizeof(struct Unsafe));
-            if (!cJSON_HasObjectItem(j, "unsafe")) { cJSON_DeleteUnsafe(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "unsafe")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "unsafe"))) { cJSON_DeleteUnsafe(x); return NULL; }
-                x->unsafe = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "unsafe"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Typealias)))) {
+            memset(x, 0, sizeof(struct Typealias));
+            if (!cJSON_HasObjectItem(j, "typealias")) { cJSON_DeleteTypealias(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "typealias")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "typealias"))) { cJSON_DeleteTypealias(x); return NULL; }
+                x->typealias = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "typealias"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateUnsafe(const struct Unsafe * x) {
+cJSON * cJSON_CreateTypealias(const struct Typealias * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "unsafe", x->unsafe);
+            cJSON_AddNumberToObject(j, "typealias", x->typealias);
         }
     }
     return j;
 }
 
-char * cJSON_PrintUnsafe(const struct Unsafe * x) {
+char * cJSON_PrintTypealias(const struct Typealias * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateUnsafe(x);
+        cJSON * j = cJSON_CreateTypealias(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -20183,53 +20238,53 @@ char * cJSON_PrintUnsafe(const struct Unsafe * x) {
     return s;
 }
 
-void cJSON_DeleteUnsafe(struct Unsafe * x) {
+void cJSON_DeleteTypealias(struct Typealias * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Ushort * cJSON_ParseUshort(const char * s) {
-    struct Ushort * x = NULL;
+struct Uint * cJSON_ParseUint(const char * s) {
+    struct Uint * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetUshortValue(j);
+            x = cJSON_GetUintValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Ushort * cJSON_GetUshortValue(const cJSON * j) {
-    struct Ushort * x = NULL;
+struct Uint * cJSON_GetUintValue(const cJSON * j) {
+    struct Uint * 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 Uint)))) {
+            memset(x, 0, sizeof(struct Uint));
+            if (!cJSON_HasObjectItem(j, "uint")) { cJSON_DeleteUint(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "uint")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "uint"))) { cJSON_DeleteUint(x); return NULL; }
+                x->uint = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "uint"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateUshort(const struct Ushort * x) {
+cJSON * cJSON_CreateUint(const struct Uint * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "ushort", x->ushort);
+            cJSON_AddNumberToObject(j, "uint", x->uint);
         }
     }
     return j;
 }
 
-char * cJSON_PrintUshort(const struct Ushort * x) {
+char * cJSON_PrintUint(const struct Uint * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateUshort(x);
+        cJSON * j = cJSON_CreateUint(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -20238,53 +20293,53 @@ char * cJSON_PrintUshort(const struct Ushort * x) {
     return s;
 }
 
-void cJSON_DeleteUshort(struct Ushort * x) {
+void cJSON_DeleteUint(struct Uint * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Utf8JsonReader * cJSON_ParseUtf8JsonReader(const char * s) {
-    struct Utf8JsonReader * x = NULL;
+struct Ulong * cJSON_ParseUlong(const char * s) {
+    struct Ulong * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetUtf8JsonReaderValue(j);
+            x = cJSON_GetUlongValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Utf8JsonReader * cJSON_GetUtf8JsonReaderValue(const cJSON * j) {
-    struct Utf8JsonReader * x = NULL;
+struct Ulong * cJSON_GetUlongValue(const cJSON * j) {
+    struct Ulong * 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"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Ulong)))) {
+            memset(x, 0, sizeof(struct Ulong));
+            if (!cJSON_HasObjectItem(j, "ulong")) { cJSON_DeleteUlong(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "ulong")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "ulong"))) { cJSON_DeleteUlong(x); return NULL; }
+                x->ulong = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "ulong"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateUtf8JsonReader(const struct Utf8JsonReader * x) {
+cJSON * cJSON_CreateUlong(const struct Ulong * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "Utf8JsonReader", x->utf8_json_reader);
+            cJSON_AddNumberToObject(j, "ulong", x->ulong);
         }
     }
     return j;
 }
 
-char * cJSON_PrintUtf8JsonReader(const struct Utf8JsonReader * x) {
+char * cJSON_PrintUlong(const struct Ulong * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateUtf8JsonReader(x);
+        cJSON * j = cJSON_CreateUlong(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -20293,108 +20348,53 @@ char * cJSON_PrintUtf8JsonReader(const struct Utf8JsonReader * x) {
     return s;
 }
 
-void cJSON_DeleteUtf8JsonReader(struct Utf8JsonReader * x) {
+void cJSON_DeleteUlong(struct Ulong * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Utf8JsonWriter * cJSON_ParseUtf8JsonWriter(const char * s) {
-    struct Utf8JsonWriter * x = NULL;
+struct Unchecked * cJSON_ParseUnchecked(const char * s) {
+    struct Unchecked * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetUtf8JsonWriterValue(j);
+            x = cJSON_GetUncheckedValue(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;
+struct Unchecked * cJSON_GetUncheckedValue(const cJSON * j) {
+    struct Unchecked * 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"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Unchecked)))) {
+            memset(x, 0, sizeof(struct Unchecked));
+            if (!cJSON_HasObjectItem(j, "unchecked")) { cJSON_DeleteUnchecked(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "unchecked")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "unchecked"))) { cJSON_DeleteUnchecked(x); return NULL; }
+                x->unchecked = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "unchecked"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateUuid(const struct Uuid * x) {
+cJSON * cJSON_CreateUnchecked(const struct Unchecked * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "UUID", x->uuid);
+            cJSON_AddNumberToObject(j, "unchecked", x->unchecked);
         }
     }
     return j;
 }
 
-char * cJSON_PrintUuid(const struct Uuid * x) {
+char * cJSON_PrintUnchecked(const struct Unchecked * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateUuid(x);
+        cJSON * j = cJSON_CreateUnchecked(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -20403,53 +20403,53 @@ char * cJSON_PrintUuid(const struct Uuid * x) {
     return s;
 }
 
-void cJSON_DeleteUuid(struct Uuid * x) {
+void cJSON_DeleteUnchecked(struct Unchecked * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Var * cJSON_ParseVar(const char * s) {
-    struct Var * x = NULL;
+struct Undefined * cJSON_ParseUndefined(const char * s) {
+    struct Undefined * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetVarValue(j);
+            x = cJSON_GetUndefinedValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Var * cJSON_GetVarValue(const cJSON * j) {
-    struct Var * x = NULL;
+struct Undefined * cJSON_GetUndefinedValue(const cJSON * j) {
+    struct Undefined * 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 Undefined)))) {
+            memset(x, 0, sizeof(struct Undefined));
+            if (!cJSON_HasObjectItem(j, "undefined")) { cJSON_DeleteUndefined(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "undefined")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "undefined"))) { cJSON_DeleteUndefined(x); return NULL; }
+                x->undefined = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "undefined"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateVar(const struct Var * x) {
+cJSON * cJSON_CreateUndefined(const struct Undefined * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "var", x->var);
+            cJSON_AddNumberToObject(j, "undefined", x->undefined);
         }
     }
     return j;
 }
 
-char * cJSON_PrintVar(const struct Var * x) {
+char * cJSON_PrintUndefined(const struct Undefined * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateVar(x);
+        cJSON * j = cJSON_CreateUndefined(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_DeleteUndefined(struct Undefined * 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, "return")) { cJSON_DeleteObj5(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "return")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "return"))) { cJSON_DeleteObj5(x); return NULL; }
+                x->obj5_return = cJSON_GetReturnValue(cJSON_GetObjectItemCaseSensitive(j, "return"));
+                if (NULL == x->obj5_return) { 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; }
@@ -20618,30 +20624,54 @@ struct Obj5 * cJSON_GetObj5Value(const cJSON * j) {
                 x->obj5_union = cJSON_GetUnionValue(cJSON_GetObjectItemCaseSensitive(j, "union"));
                 if (NULL == x->obj5_union) { cJSON_DeleteObj5(x); return NULL; }
             }
-            if (!cJSON_HasObjectItem(j, "unsigned")) { cJSON_DeleteObj5(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "unsigned")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "unsigned"))) { cJSON_DeleteObj5(x); return NULL; }
-                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, "true")) { cJSON_DeleteObj5(x); return NULL; }
             if (cJSON_HasObjectItem(j, "true")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "true"))) { cJSON_DeleteObj5(x); return NULL; }
                 x->purple_true = cJSON_GetObj5TrueValue(cJSON_GetObjectItemCaseSensitive(j, "true"));
                 if (NULL == x->purple_true) { cJSON_DeleteObj5(x); return NULL; }
             }
+            if (!cJSON_HasObjectItem(j, "right")) { cJSON_DeleteObj5(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "right")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "right"))) { cJSON_DeleteObj5(x); return NULL; }
+                x->right = cJSON_GetRightValue(cJSON_GetObjectItemCaseSensitive(j, "right"));
+                if (NULL == x->right) { cJSON_DeleteObj5(x); return NULL; }
+            }
+            if (!cJSON_HasObjectItem(j, "runtimeType")) { cJSON_DeleteObj5(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "runtimeType")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "runtimeType"))) { cJSON_DeleteObj5(x); return NULL; }
+                x->runtime_type = cJSON_GetRuntimeTypeValue(cJSON_GetObjectItemCaseSensitive(j, "runtimeType"));
+                if (NULL == x->runtime_type) { cJSON_DeleteObj5(x); return NULL; }
+            }
+            if (!cJSON_HasObjectItem(j, "s")) { cJSON_DeleteObj5(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "s")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "s"))) { cJSON_DeleteObj5(x); return NULL; }
+                x->s = cJSON_GetSValue(cJSON_GetObjectItemCaseSensitive(j, "s"));
+                if (NULL == x->s) { cJSON_DeleteObj5(x); return NULL; }
+            }
+            if (!cJSON_HasObjectItem(j, "sbyte")) { cJSON_DeleteObj5(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "sbyte")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "sbyte"))) { cJSON_DeleteObj5(x); return NULL; }
+                x->sbyte = cJSON_GetSbyteValue(cJSON_GetObjectItemCaseSensitive(j, "sbyte"));
+                if (NULL == x->sbyte) { cJSON_DeleteObj5(x); return NULL; }
+            }
+            if (!cJSON_HasObjectItem(j, "sealed")) { cJSON_DeleteObj5(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "sealed")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "sealed"))) { cJSON_DeleteObj5(x); return NULL; }
+                x->sealed = cJSON_GetSealedValue(cJSON_GetObjectItemCaseSensitive(j, "sealed"));
+                if (NULL == x->sealed) { cJSON_DeleteObj5(x); return NULL; }
+            }
+            if (!cJSON_HasObjectItem(j, "SEL")) { cJSON_DeleteObj5(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "SEL")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "SEL"))) { cJSON_DeleteObj5(x); return NULL; }
+                x->sel = cJSON_GetSelValue(cJSON_GetObjectItemCaseSensitive(j, "SEL"));
+                if (NULL == x->sel) { cJSON_DeleteObj5(x); return NULL; }
+            }
+            if (!cJSON_HasObjectItem(j, "select")) { cJSON_DeleteObj5(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "select")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "select"))) { cJSON_DeleteObj5(x); return NULL; }
+                x->select = cJSON_GetSelectValue(cJSON_GetObjectItemCaseSensitive(j, "select"));
+                if (NULL == x->select) { 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; }
@@ -20654,6 +20684,12 @@ 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, "SerializationFeature")) { cJSON_DeleteObj5(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "SerializationFeature")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "SerializationFeature"))) { cJSON_DeleteObj5(x); return NULL; }
+                x->serialization_feature = cJSON_GetSerializationFeatureValue(cJSON_GetObjectItemCaseSensitive(j, "SerializationFeature"));
+                if (NULL == x->serialization_feature) { 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; }
@@ -20738,6 +20774,12 @@ struct Obj5 * cJSON_GetObj5Value(const cJSON * j) {
                 x->system = cJSON_GetSystemValue(cJSON_GetObjectItemCaseSensitive(j, "system"));
                 if (NULL == x->system) { cJSON_DeleteObj5(x); return NULL; }
             }
+            if (!cJSON_HasObjectItem(j, "TextNode")) { cJSON_DeleteObj5(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "TextNode")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "TextNode"))) { cJSON_DeleteObj5(x); return NULL; }
+                x->text_node = cJSON_GetTextNodeValue(cJSON_GetObjectItemCaseSensitive(j, "TextNode"));
+                if (NULL == x->text_node) { cJSON_DeleteObj5(x); return NULL; }
+            }
             if (!cJSON_HasObjectItem(j, "then")) { cJSON_DeleteObj5(x); return NULL; }
             if (cJSON_HasObjectItem(j, "then")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "then"))) { cJSON_DeleteObj5(x); return NULL; }
@@ -20828,48 +20870,6 @@ struct Obj5 * cJSON_GetObj5Value(const cJSON * j) {
                 x->undefined = cJSON_GetUndefinedValue(cJSON_GetObjectItemCaseSensitive(j, "undefined"));
                 if (NULL == x->undefined) { cJSON_DeleteObj5(x); return NULL; }
             }
-            if (!cJSON_HasObjectItem(j, "unowned")) { cJSON_DeleteObj5(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "unowned")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "unowned"))) { cJSON_DeleteObj5(x); return NULL; }
-                x->unowned = cJSON_GetUnownedValue(cJSON_GetObjectItemCaseSensitive(j, "unowned"));
-                if (NULL == x->unowned) { cJSON_DeleteObj5(x); return NULL; }
-            }
-            if (!cJSON_HasObjectItem(j, "unsafe")) { cJSON_DeleteObj5(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "unsafe")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "unsafe"))) { cJSON_DeleteObj5(x); return NULL; }
-                x->unsafe = cJSON_GetUnsafeValue(cJSON_GetObjectItemCaseSensitive(j, "unsafe"));
-                if (NULL == x->unsafe) { 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, "return", cJSON_CreateReturn(x->obj5_return));
             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));
@@ -20902,12 +20903,17 @@ cJSON * cJSON_CreateObj5(const struct Obj5 * x) {
             cJSON_AddItemToObject(j, "typename", cJSON_CreateTypename(x->obj5_typename));
             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, "true", cJSON_CreateObj5True(x->purple_true));
+            cJSON_AddItemToObject(j, "right", cJSON_CreateRight(x->right));
+            cJSON_AddItemToObject(j, "runtimeType", cJSON_CreateRuntimeType(x->runtime_type));
+            cJSON_AddItemToObject(j, "s", cJSON_CreateS(x->s));
+            cJSON_AddItemToObject(j, "sbyte", cJSON_CreateSbyte(x->sbyte));
+            cJSON_AddItemToObject(j, "sealed", cJSON_CreateSealed(x->sealed));
+            cJSON_AddItemToObject(j, "SEL", cJSON_CreateSel(x->sel));
+            cJSON_AddItemToObject(j, "select", cJSON_CreateSelect(x->select));
             cJSON_AddItemToObject(j, "Self", cJSON_CreateSelf(x->self));
             cJSON_AddItemToObject(j, "Sendable", cJSON_CreateSendable(x->sendable));
+            cJSON_AddItemToObject(j, "SerializationFeature", cJSON_CreateSerializationFeature(x->serialization_feature));
             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));
@@ -20922,6 +20928,7 @@ cJSON * cJSON_CreateObj5(const struct Obj5 * x) {
             cJSON_AddItemToObject(j, "super", cJSON_CreateSuper(x->super));
             cJSON_AddItemToObject(j, "symbol", cJSON_CreateSymbol(x->symbol));
             cJSON_AddItemToObject(j, "system", cJSON_CreateSystem(x->system));
+            cJSON_AddItemToObject(j, "TextNode", cJSON_CreateTextNode(x->text_node));
             cJSON_AddItemToObject(j, "then", cJSON_CreateThen(x->then));
             cJSON_AddItemToObject(j, "throws", cJSON_CreateThrows(x->throws));
             cJSON_AddItemToObject(j, "TimeOnly", cJSON_CreateTimeOnly(x->time_only));
@@ -20937,22 +20944,702 @@ cJSON * cJSON_CreateObj5(const struct Obj5 * x) {
             cJSON_AddItemToObject(j, "ulong", cJSON_CreateUlong(x->ulong));
             cJSON_AddItemToObject(j, "unchecked", cJSON_CreateUnchecked(x->unchecked));
             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, "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;
 }
 
-char * cJSON_PrintObj5(const struct Obj5 * x) {
+char * cJSON_PrintObj5(const struct Obj5 * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateObj5(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteObj5(struct Obj5 * x) {
+    if (NULL != x) {
+        if (NULL != x->obj5_return) {
+            cJSON_DeleteReturn(x->obj5_return);
+        }
+        if (NULL != x->obj5_self) {
+            cJSON_DeleteSelfClass(x->obj5_self);
+        }
+        if (NULL != x->obj5_short) {
+            cJSON_DeleteShort(x->obj5_short);
+        }
+        if (NULL != x->obj5_signed) {
+            cJSON_DeleteSigned(x->obj5_signed);
+        }
+        if (NULL != x->obj5_sizeof) {
+            cJSON_DeleteSizeof(x->obj5_sizeof);
+        }
+        if (NULL != x->obj5_static) {
+            cJSON_DeleteStatic(x->obj5_static);
+        }
+        if (NULL != x->obj5_static_assert) {
+            cJSON_DeleteStaticAssert(x->obj5_static_assert);
+        }
+        if (NULL != x->obj5_static_cast) {
+            cJSON_DeleteStaticCast(x->obj5_static_cast);
+        }
+        if (NULL != x->obj5_struct) {
+            cJSON_DeleteStruct(x->obj5_struct);
+        }
+        if (NULL != x->obj5_switch) {
+            cJSON_DeleteSwitch(x->obj5_switch);
+        }
+        if (NULL != x->obj5_synchronized) {
+            cJSON_DeleteSynchronized(x->obj5_synchronized);
+        }
+        if (NULL != x->obj5_template) {
+            cJSON_DeleteTemplate(x->obj5_template);
+        }
+        if (NULL != x->obj5_this) {
+            cJSON_DeleteThis(x->obj5_this);
+        }
+        if (NULL != x->obj5_thread_local) {
+            cJSON_DeleteThreadLocal(x->obj5_thread_local);
+        }
+        if (NULL != x->obj5_throw) {
+            cJSON_DeleteThrow(x->obj5_throw);
+        }
+        if (NULL != x->obj5_true) {
+            cJSON_DeleteTrueClass(x->obj5_true);
+        }
+        if (NULL != x->obj5_try) {
+            cJSON_DeleteTry(x->obj5_try);
+        }
+        if (NULL != x->obj5_type) {
+            cJSON_DeleteTypeClass(x->obj5_type);
+        }
+        if (NULL != x->obj5_typedef) {
+            cJSON_DeleteTypedef(x->obj5_typedef);
+        }
+        if (NULL != x->obj5_typeid) {
+            cJSON_DeleteTypeid(x->obj5_typeid);
+        }
+        if (NULL != x->obj5_typename) {
+            cJSON_DeleteTypename(x->obj5_typename);
+        }
+        if (NULL != x->obj5_typeof) {
+            cJSON_DeleteTypeof(x->obj5_typeof);
+        }
+        if (NULL != x->obj5_union) {
+            cJSON_DeleteUnion(x->obj5_union);
+        }
+        if (NULL != x->purple_true) {
+            cJSON_DeleteObj5True(x->purple_true);
+        }
+        if (NULL != x->right) {
+            cJSON_DeleteRight(x->right);
+        }
+        if (NULL != x->runtime_type) {
+            cJSON_DeleteRuntimeType(x->runtime_type);
+        }
+        if (NULL != x->s) {
+            cJSON_DeleteS(x->s);
+        }
+        if (NULL != x->sbyte) {
+            cJSON_DeleteSbyte(x->sbyte);
+        }
+        if (NULL != x->sealed) {
+            cJSON_DeleteSealed(x->sealed);
+        }
+        if (NULL != x->sel) {
+            cJSON_DeleteSel(x->sel);
+        }
+        if (NULL != x->select) {
+            cJSON_DeleteSelect(x->select);
+        }
+        if (NULL != x->self) {
+            cJSON_DeleteSelf(x->self);
+        }
+        if (NULL != x->sendable) {
+            cJSON_DeleteSendable(x->sendable);
+        }
+        if (NULL != x->serialization_feature) {
+            cJSON_DeleteSerializationFeature(x->serialization_feature);
+        }
+        if (NULL != x->serialize) {
+            cJSON_DeleteSerialize(x->serialize);
+        }
+        if (NULL != x->serializer_provider) {
+            cJSON_DeleteSerializerProvider(x->serializer_provider);
+        }
+        if (NULL != x->set) {
+            cJSON_DeleteSet(x->set);
+        }
+        if (NULL != x->simple_module) {
+            cJSON_DeleteSimpleModule(x->simple_module);
+        }
+        if (NULL != x->stackalloc) {
+            cJSON_DeleteStackalloc(x->stackalloc);
+        }
+        if (NULL != x->standards) {
+            cJSON_DeleteStandards(x->standards);
+        }
+        if (NULL != x->std_deserializer) {
+            cJSON_DeleteStdDeserializer(x->std_deserializer);
+        }
+        if (NULL != x->std_serializer) {
+            cJSON_DeleteStdSerializer(x->std_serializer);
+        }
+        if (NULL != x->strictfp) {
+            cJSON_DeleteStrictfp(x->strictfp);
+        }
+        if (NULL != x->string) {
+            cJSON_DeleteStringClass(x->string);
+        }
+        if (NULL != x->subscript) {
+            cJSON_DeleteSubscript(x->subscript);
+        }
+        if (NULL != x->super) {
+            cJSON_DeleteSuper(x->super);
+        }
+        if (NULL != x->symbol) {
+            cJSON_DeleteSymbol(x->symbol);
+        }
+        if (NULL != x->system) {
+            cJSON_DeleteSystem(x->system);
+        }
+        if (NULL != x->text_node) {
+            cJSON_DeleteTextNode(x->text_node);
+        }
+        if (NULL != x->then) {
+            cJSON_DeleteThen(x->then);
+        }
+        if (NULL != x->throws) {
+            cJSON_DeleteThrows(x->throws);
+        }
+        if (NULL != x->time_only) {
+            cJSON_DeleteTimeOnly(x->time_only);
+        }
+        if (NULL != x->time_only_converter) {
+            cJSON_DeleteTimeOnlyConverter(x->time_only_converter);
+        }
+        if (NULL != x->time_zone) {
+            cJSON_DeleteTimeZone(x->time_zone);
+        }
+        if (NULL != x->to_json) {
+            cJSON_DeleteToJson(x->to_json);
+        }
+        if (NULL != x->to_string) {
+            cJSON_DeleteToString(x->to_string);
+        }
+        if (NULL != x->top_level) {
+            cJSON_DeleteTopLevelClass(x->top_level);
+        }
+        if (NULL != x->transient) {
+            cJSON_DeleteTransient(x->transient);
+        }
+        if (NULL != x->type) {
+            cJSON_DeleteType(x->type);
+        }
+        if (NULL != x->typealias) {
+            cJSON_DeleteTypealias(x->typealias);
+        }
+        if (NULL != x->uint) {
+            cJSON_DeleteUint(x->uint);
+        }
+        if (NULL != x->ulong) {
+            cJSON_DeleteUlong(x->ulong);
+        }
+        if (NULL != x->unchecked) {
+            cJSON_DeleteUnchecked(x->unchecked);
+        }
+        if (NULL != x->undefined) {
+            cJSON_DeleteUndefined(x->undefined);
+        }
+        cJSON_free(x);
+    }
+}
+
+struct Unsigned * cJSON_ParseUnsigned(const char * s) {
+    struct Unsigned * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetUnsignedValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct Unsigned * cJSON_GetUnsignedValue(const cJSON * j) {
+    struct Unsigned * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct Unsigned)))) {
+            memset(x, 0, sizeof(struct Unsigned));
+            if (!cJSON_HasObjectItem(j, "unsigned")) { cJSON_DeleteUnsigned(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "unsigned")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "unsigned"))) { cJSON_DeleteUnsigned(x); return NULL; }
+                x->unsigned_unsigned = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "unsigned"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateUnsigned(const struct Unsigned * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "unsigned", x->unsigned_unsigned);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintUnsigned(const struct Unsigned * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateUnsigned(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteUnsigned(struct Unsigned * x) {
+    if (NULL != x) {
+        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);
+        }
+    }
+    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;
+    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);
+    }
+}
+
+struct Void * cJSON_ParseVoid(const char * s) {
+    struct Void * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetVoidValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct Void * cJSON_GetVoidValue(const cJSON * j) {
+    struct Void * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct Void)))) {
+            memset(x, 0, sizeof(struct Void));
+            if (!cJSON_HasObjectItem(j, "void")) { cJSON_DeleteVoid(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "void")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "void"))) { cJSON_DeleteVoid(x); return NULL; }
+                x->void_void = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "void"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateVoid(const struct Void * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "void", x->void_void);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintVoid(const struct Void * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateVoid(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteVoid(struct Void * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct Volatile * cJSON_ParseVolatile(const char * s) {
+    struct Volatile * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetVolatileValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct Volatile * cJSON_GetVolatileValue(const cJSON * j) {
+    struct Volatile * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct Volatile)))) {
+            memset(x, 0, sizeof(struct Volatile));
+            if (!cJSON_HasObjectItem(j, "volatile")) { cJSON_DeleteVolatile(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "volatile")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "volatile"))) { cJSON_DeleteVolatile(x); return NULL; }
+                x->volatile_volatile = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "volatile"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateVolatile(const struct Volatile * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "volatile", x->volatile_volatile);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintVolatile(const struct Volatile * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateVolatile(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteVolatile(struct Volatile * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct WcharT * cJSON_ParseWcharT(const char * s) {
+    struct WcharT * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetWcharTValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct WcharT * cJSON_GetWcharTValue(const cJSON * j) {
+    struct WcharT * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct WcharT)))) {
+            memset(x, 0, sizeof(struct WcharT));
+            if (!cJSON_HasObjectItem(j, "wchar_t")) { cJSON_DeleteWcharT(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "wchar_t")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "wchar_t"))) { cJSON_DeleteWcharT(x); return NULL; }
+                x->wchar_t_wchar_t = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "wchar_t"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateWcharT(const struct WcharT * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "wchar_t", x->wchar_t_wchar_t);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintWcharT(const struct WcharT * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateWcharT(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteWcharT(struct WcharT * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct While * cJSON_ParseWhile(const char * s) {
+    struct While * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetWhileValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct While * cJSON_GetWhileValue(const cJSON * j) {
+    struct While * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct While)))) {
+            memset(x, 0, sizeof(struct While));
+            if (!cJSON_HasObjectItem(j, "while")) { cJSON_DeleteWhile(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "while")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "while"))) { cJSON_DeleteWhile(x); return NULL; }
+                x->while_while = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "while"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateWhile(const struct While * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "while", x->while_while);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintWhile(const struct While * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateWhile(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteWhile(struct While * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct Xor * cJSON_ParseXor(const char * s) {
+    struct Xor * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetXorValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct Xor * cJSON_GetXorValue(const cJSON * j) {
+    struct Xor * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct Xor)))) {
+            memset(x, 0, sizeof(struct Xor));
+            if (!cJSON_HasObjectItem(j, "xor")) { cJSON_DeleteXor(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "xor")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "xor"))) { cJSON_DeleteXor(x); return NULL; }
+                x->xor_xor = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "xor"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateXor(const struct Xor * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "xor", x->xor_xor);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintXor(const struct Xor * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateXor(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteXor(struct Xor * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct XorEq * cJSON_ParseXorEq(const char * s) {
+    struct XorEq * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetXorEqValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct XorEq * cJSON_GetXorEqValue(const cJSON * j) {
+    struct XorEq * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct XorEq)))) {
+            memset(x, 0, sizeof(struct XorEq));
+            if (!cJSON_HasObjectItem(j, "xor_eq")) { cJSON_DeleteXorEq(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "xor_eq")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "xor_eq"))) { cJSON_DeleteXorEq(x); return NULL; }
+                x->xor_eq_xor_eq = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "xor_eq"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateXorEq(const struct XorEq * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "xor_eq", x->xor_eq_xor_eq);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintXorEq(const struct XorEq * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateObj5(x);
+        cJSON * j = cJSON_CreateXorEq(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -20961,245 +21648,108 @@ char * cJSON_PrintObj5(const struct Obj5 * x) {
     return s;
 }
 
-void cJSON_DeleteObj5(struct Obj5 * x) {
+void cJSON_DeleteXorEq(struct XorEq * x) {
     if (NULL != x) {
-        if (NULL != x->obj5_self) {
-            cJSON_DeleteSelfClass(x->obj5_self);
-        }
-        if (NULL != x->obj5_short) {
-            cJSON_DeleteShort(x->obj5_short);
-        }
-        if (NULL != x->obj5_signed) {
-            cJSON_DeleteSigned(x->obj5_signed);
-        }
-        if (NULL != x->obj5_sizeof) {
-            cJSON_DeleteSizeof(x->obj5_sizeof);
-        }
-        if (NULL != x->obj5_static) {
-            cJSON_DeleteStatic(x->obj5_static);
-        }
-        if (NULL != x->obj5_static_assert) {
-            cJSON_DeleteStaticAssert(x->obj5_static_assert);
-        }
-        if (NULL != x->obj5_static_cast) {
-            cJSON_DeleteStaticCast(x->obj5_static_cast);
-        }
-        if (NULL != x->obj5_struct) {
-            cJSON_DeleteStruct(x->obj5_struct);
-        }
-        if (NULL != x->obj5_switch) {
-            cJSON_DeleteSwitch(x->obj5_switch);
-        }
-        if (NULL != x->obj5_synchronized) {
-            cJSON_DeleteSynchronized(x->obj5_synchronized);
-        }
-        if (NULL != x->obj5_template) {
-            cJSON_DeleteTemplate(x->obj5_template);
-        }
-        if (NULL != x->obj5_this) {
-            cJSON_DeleteThis(x->obj5_this);
-        }
-        if (NULL != x->obj5_thread_local) {
-            cJSON_DeleteThreadLocal(x->obj5_thread_local);
-        }
-        if (NULL != x->obj5_throw) {
-            cJSON_DeleteThrow(x->obj5_throw);
-        }
-        if (NULL != x->obj5_true) {
-            cJSON_DeleteTrueClass(x->obj5_true);
-        }
-        if (NULL != x->obj5_try) {
-            cJSON_DeleteTry(x->obj5_try);
-        }
-        if (NULL != x->obj5_type) {
-            cJSON_DeleteTypeClass(x->obj5_type);
-        }
-        if (NULL != x->obj5_typedef) {
-            cJSON_DeleteTypedef(x->obj5_typedef);
-        }
-        if (NULL != x->obj5_typeid) {
-            cJSON_DeleteTypeid(x->obj5_typeid);
-        }
-        if (NULL != x->obj5_typename) {
-            cJSON_DeleteTypename(x->obj5_typename);
-        }
-        if (NULL != x->obj5_typeof) {
-            cJSON_DeleteTypeof(x->obj5_typeof);
-        }
-        if (NULL != x->obj5_union) {
-            cJSON_DeleteUnion(x->obj5_union);
-        }
-        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->purple_true) {
-            cJSON_DeleteObj5True(x->purple_true);
-        }
-        if (NULL != x->self) {
-            cJSON_DeleteSelf(x->self);
-        }
-        if (NULL != x->sendable) {
-            cJSON_DeleteSendable(x->sendable);
-        }
-        if (NULL != x->serialize) {
-            cJSON_DeleteSerialize(x->serialize);
-        }
-        if (NULL != x->serializer_provider) {
-            cJSON_DeleteSerializerProvider(x->serializer_provider);
-        }
-        if (NULL != x->set) {
-            cJSON_DeleteSet(x->set);
-        }
-        if (NULL != x->simple_module) {
-            cJSON_DeleteSimpleModule(x->simple_module);
-        }
-        if (NULL != x->stackalloc) {
-            cJSON_DeleteStackalloc(x->stackalloc);
-        }
-        if (NULL != x->standards) {
-            cJSON_DeleteStandards(x->standards);
-        }
-        if (NULL != x->std_deserializer) {
-            cJSON_DeleteStdDeserializer(x->std_deserializer);
-        }
-        if (NULL != x->std_serializer) {
-            cJSON_DeleteStdSerializer(x->std_serializer);
-        }
-        if (NULL != x->strictfp) {
-            cJSON_DeleteStrictfp(x->strictfp);
-        }
-        if (NULL != x->string) {
-            cJSON_DeleteStringClass(x->string);
-        }
-        if (NULL != x->subscript) {
-            cJSON_DeleteSubscript(x->subscript);
-        }
-        if (NULL != x->super) {
-            cJSON_DeleteSuper(x->super);
-        }
-        if (NULL != x->symbol) {
-            cJSON_DeleteSymbol(x->symbol);
-        }
-        if (NULL != x->system) {
-            cJSON_DeleteSystem(x->system);
-        }
-        if (NULL != x->then) {
-            cJSON_DeleteThen(x->then);
-        }
-        if (NULL != x->throws) {
-            cJSON_DeleteThrows(x->throws);
-        }
-        if (NULL != x->time_only) {
-            cJSON_DeleteTimeOnly(x->time_only);
-        }
-        if (NULL != x->time_only_converter) {
-            cJSON_DeleteTimeOnlyConverter(x->time_only_converter);
-        }
-        if (NULL != x->time_zone) {
-            cJSON_DeleteTimeZone(x->time_zone);
-        }
-        if (NULL != x->to_json) {
-            cJSON_DeleteToJson(x->to_json);
-        }
-        if (NULL != x->to_string) {
-            cJSON_DeleteToString(x->to_string);
-        }
-        if (NULL != x->top_level) {
-            cJSON_DeleteTopLevelClass(x->top_level);
-        }
-        if (NULL != x->transient) {
-            cJSON_DeleteTransient(x->transient);
-        }
-        if (NULL != x->type) {
-            cJSON_DeleteType(x->type);
-        }
-        if (NULL != x->typealias) {
-            cJSON_DeleteTypealias(x->typealias);
-        }
-        if (NULL != x->uint) {
-            cJSON_DeleteUint(x->uint);
-        }
-        if (NULL != x->ulong) {
-            cJSON_DeleteUlong(x->ulong);
-        }
-        if (NULL != x->unchecked) {
-            cJSON_DeleteUnchecked(x->unchecked);
-        }
-        if (NULL != x->undefined) {
-            cJSON_DeleteUndefined(x->undefined);
-        }
-        if (NULL != x->unowned) {
-            cJSON_DeleteUnowned(x->unowned);
-        }
-        if (NULL != x->unsafe) {
-            cJSON_DeleteUnsafe(x->unsafe);
-        }
-        if (NULL != x->ushort) {
-            cJSON_DeleteUshort(x->ushort);
-        }
-        if (NULL != x->utf8_json_reader) {
-            cJSON_DeleteUtf8JsonReader(x->utf8_json_reader);
+        cJSON_free(x);
+    }
+}
+
+struct Unowned * cJSON_ParseUnowned(const char * s) {
+    struct Unowned * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetUnownedValue(j);
+            cJSON_Delete(j);
         }
-        if (NULL != x->utf8_json_writer) {
-            cJSON_DeleteUtf8JsonWriter(x->utf8_json_writer);
+    }
+    return x;
+}
+
+struct Unowned * cJSON_GetUnownedValue(const cJSON * j) {
+    struct Unowned * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct Unowned)))) {
+            memset(x, 0, sizeof(struct Unowned));
+            if (!cJSON_HasObjectItem(j, "unowned")) { cJSON_DeleteUnowned(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "unowned")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "unowned"))) { cJSON_DeleteUnowned(x); return NULL; }
+                x->unowned = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "unowned"));
+            }
         }
-        if (NULL != x->uuid) {
-            cJSON_DeleteUuid(x->uuid);
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateUnowned(const struct Unowned * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "unowned", x->unowned);
         }
-        if (NULL != x->var) {
-            cJSON_DeleteVar(x->var);
+    }
+    return j;
+}
+
+char * cJSON_PrintUnowned(const struct Unowned * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateUnowned(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
         }
+    }
+    return s;
+}
+
+void cJSON_DeleteUnowned(struct Unowned * x) {
+    if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Void * cJSON_ParseVoid(const char * s) {
-    struct Void * x = NULL;
+struct Unsafe * cJSON_ParseUnsafe(const char * s) {
+    struct Unsafe * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetVoidValue(j);
+            x = cJSON_GetUnsafeValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Void * cJSON_GetVoidValue(const cJSON * j) {
-    struct Void * x = NULL;
+struct Unsafe * cJSON_GetUnsafeValue(const cJSON * j) {
+    struct Unsafe * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Void)))) {
-            memset(x, 0, sizeof(struct Void));
-            if (!cJSON_HasObjectItem(j, "void")) { cJSON_DeleteVoid(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "void")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "void"))) { cJSON_DeleteVoid(x); return NULL; }
-                x->void_void = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "void"));
+        if (NULL != (x = cJSON_malloc(sizeof(struct Unsafe)))) {
+            memset(x, 0, sizeof(struct Unsafe));
+            if (!cJSON_HasObjectItem(j, "unsafe")) { cJSON_DeleteUnsafe(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "unsafe")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "unsafe"))) { cJSON_DeleteUnsafe(x); return NULL; }
+                x->unsafe = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "unsafe"));
             }
         }
     }
     return x;
 }
 
-cJSON * cJSON_CreateVoid(const struct Void * x) {
+cJSON * cJSON_CreateUnsafe(const struct Unsafe * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "void", x->void_void);
+            cJSON_AddNumberToObject(j, "unsafe", x->unsafe);
         }
     }
     return j;
 }
 
-char * cJSON_PrintVoid(const struct Void * x) {
+char * cJSON_PrintUnsafe(const struct Unsafe * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateVoid(x);
+        cJSON * j = cJSON_CreateUnsafe(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -21208,53 +21758,53 @@ char * cJSON_PrintVoid(const struct Void * x) {
     return s;
 }
 
-void cJSON_DeleteVoid(struct Void * x) {
+void cJSON_DeleteUnsafe(struct Unsafe * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Volatile * cJSON_ParseVolatile(const char * s) {
-    struct Volatile * 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_GetVolatileValue(j);
+            x = cJSON_GetUshortValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Volatile * cJSON_GetVolatileValue(const cJSON * j) {
-    struct Volatile * x = NULL;
+struct Ushort * cJSON_GetUshortValue(const cJSON * j) {
+    struct Ushort * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Volatile)))) {
-            memset(x, 0, sizeof(struct Volatile));
-            if (!cJSON_HasObjectItem(j, "volatile")) { cJSON_DeleteVolatile(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "volatile")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "volatile"))) { cJSON_DeleteVolatile(x); return NULL; }
-                x->volatile_volatile = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "volatile"));
+        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_CreateVolatile(const struct Volatile * x) {
+cJSON * cJSON_CreateUshort(const struct Ushort * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "volatile", x->volatile_volatile);
+            cJSON_AddNumberToObject(j, "ushort", x->ushort);
         }
     }
     return j;
 }
 
-char * cJSON_PrintVolatile(const struct Volatile * x) {
+char * cJSON_PrintUshort(const struct Ushort * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateVolatile(x);
+        cJSON * j = cJSON_CreateUshort(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -21263,53 +21813,53 @@ char * cJSON_PrintVolatile(const struct Volatile * x) {
     return s;
 }
 
-void cJSON_DeleteVolatile(struct Volatile * x) {
+void cJSON_DeleteUshort(struct Ushort * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct WcharT * cJSON_ParseWcharT(const char * s) {
-    struct WcharT * x = NULL;
+struct Utf8JsonReader * cJSON_ParseUtf8JsonReader(const char * s) {
+    struct Utf8JsonReader * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetWcharTValue(j);
+            x = cJSON_GetUtf8JsonReaderValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct WcharT * cJSON_GetWcharTValue(const cJSON * j) {
-    struct WcharT * x = NULL;
+struct Utf8JsonReader * cJSON_GetUtf8JsonReaderValue(const cJSON * j) {
+    struct Utf8JsonReader * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct WcharT)))) {
-            memset(x, 0, sizeof(struct WcharT));
-            if (!cJSON_HasObjectItem(j, "wchar_t")) { cJSON_DeleteWcharT(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "wchar_t")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "wchar_t"))) { cJSON_DeleteWcharT(x); return NULL; }
-                x->wchar_t_wchar_t = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "wchar_t"));
+        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_CreateWcharT(const struct WcharT * x) {
+cJSON * cJSON_CreateUtf8JsonReader(const struct Utf8JsonReader * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "wchar_t", x->wchar_t_wchar_t);
+            cJSON_AddNumberToObject(j, "Utf8JsonReader", x->utf8_json_reader);
         }
     }
     return j;
 }
 
-char * cJSON_PrintWcharT(const struct WcharT * x) {
+char * cJSON_PrintUtf8JsonReader(const struct Utf8JsonReader * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateWcharT(x);
+        cJSON * j = cJSON_CreateUtf8JsonReader(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -21318,53 +21868,53 @@ char * cJSON_PrintWcharT(const struct WcharT * x) {
     return s;
 }
 
-void cJSON_DeleteWcharT(struct WcharT * x) {
+void cJSON_DeleteUtf8JsonReader(struct Utf8JsonReader * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct While * cJSON_ParseWhile(const char * s) {
-    struct While * x = NULL;
+struct Utf8JsonWriter * cJSON_ParseUtf8JsonWriter(const char * s) {
+    struct Utf8JsonWriter * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetWhileValue(j);
+            x = cJSON_GetUtf8JsonWriterValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct While * cJSON_GetWhileValue(const cJSON * j) {
-    struct While * x = NULL;
+struct Utf8JsonWriter * cJSON_GetUtf8JsonWriterValue(const cJSON * j) {
+    struct Utf8JsonWriter * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct While)))) {
-            memset(x, 0, sizeof(struct While));
-            if (!cJSON_HasObjectItem(j, "while")) { cJSON_DeleteWhile(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "while")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "while"))) { cJSON_DeleteWhile(x); return NULL; }
-                x->while_while = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "while"));
+        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_CreateWhile(const struct While * x) {
+cJSON * cJSON_CreateUtf8JsonWriter(const struct Utf8JsonWriter * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "while", x->while_while);
+            cJSON_AddNumberToObject(j, "Utf8JsonWriter", x->utf8_json_writer);
         }
     }
     return j;
 }
 
-char * cJSON_PrintWhile(const struct While * x) {
+char * cJSON_PrintUtf8JsonWriter(const struct Utf8JsonWriter * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateWhile(x);
+        cJSON * j = cJSON_CreateUtf8JsonWriter(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -21373,53 +21923,53 @@ char * cJSON_PrintWhile(const struct While * x) {
     return s;
 }
 
-void cJSON_DeleteWhile(struct While * x) {
+void cJSON_DeleteUtf8JsonWriter(struct Utf8JsonWriter * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct Xor * cJSON_ParseXor(const char * s) {
-    struct Xor * x = NULL;
+struct Uuid * cJSON_ParseUuid(const char * s) {
+    struct Uuid * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetXorValue(j);
+            x = cJSON_GetUuidValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Xor * cJSON_GetXorValue(const cJSON * j) {
-    struct Xor * x = NULL;
+struct Uuid * cJSON_GetUuidValue(const cJSON * j) {
+    struct Uuid * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct Xor)))) {
-            memset(x, 0, sizeof(struct Xor));
-            if (!cJSON_HasObjectItem(j, "xor")) { cJSON_DeleteXor(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "xor")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "xor"))) { cJSON_DeleteXor(x); return NULL; }
-                x->xor_xor = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "xor"));
+        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_CreateXor(const struct Xor * x) {
+cJSON * cJSON_CreateUuid(const struct Uuid * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "xor", x->xor_xor);
+            cJSON_AddNumberToObject(j, "UUID", x->uuid);
         }
     }
     return j;
 }
 
-char * cJSON_PrintXor(const struct Xor * x) {
+char * cJSON_PrintUuid(const struct Uuid * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateXor(x);
+        cJSON * j = cJSON_CreateUuid(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -21428,53 +21978,53 @@ char * cJSON_PrintXor(const struct Xor * x) {
     return s;
 }
 
-void cJSON_DeleteXor(struct Xor * x) {
+void cJSON_DeleteUuid(struct Uuid * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
 }
 
-struct XorEq * cJSON_ParseXorEq(const char * s) {
-    struct XorEq * x = NULL;
+struct Var * cJSON_ParseVar(const char * s) {
+    struct Var * x = NULL;
     if (NULL != s) {
         cJSON * j = cJSON_Parse(s);
         if (NULL != j) {
-            x = cJSON_GetXorEqValue(j);
+            x = cJSON_GetVarValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct XorEq * cJSON_GetXorEqValue(const cJSON * j) {
-    struct XorEq * x = NULL;
+struct Var * cJSON_GetVarValue(const cJSON * j) {
+    struct Var * x = NULL;
     if (NULL != j) {
-        if (NULL != (x = cJSON_malloc(sizeof(struct XorEq)))) {
-            memset(x, 0, sizeof(struct XorEq));
-            if (!cJSON_HasObjectItem(j, "xor_eq")) { cJSON_DeleteXorEq(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "xor_eq")) {
-                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "xor_eq"))) { cJSON_DeleteXorEq(x); return NULL; }
-                x->xor_eq_xor_eq = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "xor_eq"));
+        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_CreateXorEq(const struct XorEq * x) {
+cJSON * cJSON_CreateVar(const struct Var * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "xor_eq", x->xor_eq_xor_eq);
+            cJSON_AddNumberToObject(j, "var", x->var);
         }
     }
     return j;
 }
 
-char * cJSON_PrintXorEq(const struct XorEq * x) {
+char * cJSON_PrintVar(const struct Var * x) {
     char * s = NULL;
     if (NULL != x) {
-        cJSON * j = cJSON_CreateXorEq(x);
+        cJSON * j = cJSON_CreateVar(x);
         if (NULL != j) {
             s = cJSON_Print(j);
             cJSON_Delete(j);
@@ -21483,7 +22033,7 @@ char * cJSON_PrintXorEq(const struct XorEq * x) {
     return s;
 }
 
-void cJSON_DeleteXorEq(struct XorEq * x) {
+void cJSON_DeleteVar(struct Var * x) {
     if (NULL != x) {
         cJSON_free(x);
     }
@@ -21841,6 +22391,24 @@ 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, "unsigned")) { cJSON_DeleteObj6(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "unsigned")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "unsigned"))) { cJSON_DeleteObj6(x); return NULL; }
+                x->obj6_unsigned = cJSON_GetUnsignedValue(cJSON_GetObjectItemCaseSensitive(j, "unsigned"));
+                if (NULL == x->obj6_unsigned) { cJSON_DeleteObj6(x); return NULL; }
+            }
+            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 +22445,48 @@ 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, "unowned")) { cJSON_DeleteObj6(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "unowned")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "unowned"))) { cJSON_DeleteObj6(x); return NULL; }
+                x->unowned = cJSON_GetUnownedValue(cJSON_GetObjectItemCaseSensitive(j, "unowned"));
+                if (NULL == x->unowned) { cJSON_DeleteObj6(x); return NULL; }
+            }
+            if (!cJSON_HasObjectItem(j, "unsafe")) { cJSON_DeleteObj6(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "unsafe")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "unsafe"))) { cJSON_DeleteObj6(x); return NULL; }
+                x->unsafe = cJSON_GetUnsafeValue(cJSON_GetObjectItemCaseSensitive(j, "unsafe"));
+                if (NULL == x->unsafe) { cJSON_DeleteObj6(x); return NULL; }
+            }
+            if (!cJSON_HasObjectItem(j, "ushort")) { cJSON_DeleteObj6(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "ushort")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "ushort"))) { cJSON_DeleteObj6(x); return NULL; }
+                x->ushort = cJSON_GetUshortValue(cJSON_GetObjectItemCaseSensitive(j, "ushort"));
+                if (NULL == x->ushort) { 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 +22533,22 @@ cJSON * cJSON_CreateObj6(const struct Obj6 * x) {
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
             cJSON_AddNumberToObject(j, "dummy", x->dummy);
+            cJSON_AddItemToObject(j, "unsigned", cJSON_CreateUnsigned(x->obj6_unsigned));
+            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, "unowned", cJSON_CreateUnowned(x->unowned));
+            cJSON_AddItemToObject(j, "unsafe", cJSON_CreateUnsafe(x->unsafe));
+            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));
             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 +22574,15 @@ char * cJSON_PrintObj6(const struct Obj6 * x) {
 
 void cJSON_DeleteObj6(struct Obj6 * x) {
     if (NULL != x) {
+        if (NULL != x->obj6_unsigned) {
+            cJSON_DeleteUnsigned(x->obj6_unsigned);
+        }
+        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 +22601,27 @@ void cJSON_DeleteObj6(struct Obj6 * x) {
         if (NULL != x->obj6_xor_eq) {
             cJSON_DeleteXorEq(x->obj6_xor_eq);
         }
+        if (NULL != x->unowned) {
+            cJSON_DeleteUnowned(x->unowned);
+        }
+        if (NULL != x->unsafe) {
+            cJSON_DeleteUnsafe(x->unsafe);
+        }
+        if (NULL != x->ushort) {
+            cJSON_DeleteUshort(x->ushort);
+        }
+        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..c580645 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
@@ -60,6 +60,10 @@ struct ArrayClass {
     int64_t array;
 };
 
+struct ArrayNode {
+    int64_t array_node;
+};
+
 struct As {
     int64_t as;
 };
@@ -96,6 +100,10 @@ struct Boolean {
     int64_t boolean;
 };
 
+struct BooleanNode {
+    int64_t boolean_node;
+};
+
 struct Bycopy {
     int64_t bycopy;
 };
@@ -160,14 +168,6 @@ struct Converter {
     int64_t converter;
 };
 
-struct CultureInfo {
-    int64_t culture_info;
-};
-
-struct Date {
-    int64_t date;
-};
-
 struct Empty {
     int64_t empty;
 };
@@ -308,6 +308,7 @@ struct Obj1 {
     struct Abstract * abstract;
     struct Any * any;
     struct ArrayClass * array;
+    struct ArrayNode * array_node;
     struct As * as;
     struct Assert * assert;
     struct Associatedtype * associatedtype;
@@ -317,6 +318,7 @@ struct Obj1 {
     struct Await * await;
     struct Base * base;
     struct Boolean * boolean;
+    struct BooleanNode * boolean_node;
     struct Bycopy * bycopy;
     struct Byref * byref;
     struct Byte * byte;
@@ -333,8 +335,6 @@ struct Obj1 {
     struct Convenience * convenience;
     struct Convert * convert;
     struct Converter * converter;
-    struct CultureInfo * culture_info;
-    struct Date * date;
     int64_t dummy;
     struct Empty * empty;
     struct Obj1BoolClass * fluffy_bool;
@@ -372,6 +372,14 @@ struct Obj1 {
     struct ClassClass * purple_class;
 };
 
+struct CultureInfo {
+    int64_t culture_info;
+};
+
+struct Date {
+    int64_t date;
+};
+
 struct DateFormatter {
     int64_t date_formatter;
 };
@@ -440,6 +448,10 @@ struct Delegate {
     int64_t delegate;
 };
 
+struct DeserializationFeature {
+    int64_t deserialization_feature;
+};
+
 struct Dict {
     int64_t dict;
 };
@@ -452,6 +464,10 @@ struct DidSet {
     int64_t did_set;
 };
 
+struct DoubleNode {
+    int64_t double_node;
+};
+
 struct Dynamic {
     int64_t dynamic;
 };
@@ -549,18 +565,6 @@ struct Function {
     int64_t function;
 };
 
-struct Get {
-    int64_t get;
-};
-
-struct Global {
-    int64_t global;
-};
-
-struct Go {
-    int64_t go;
-};
-
 struct Decltype {
     int64_t decltype_decltype;
 };
@@ -625,15 +629,13 @@ struct Friend {
     int64_t friend_friend;
 };
 
-struct Goto {
-    int64_t goto_goto;
-};
-
 struct Obj2False {
     int64_t false_false;
 };
 
 struct Obj2 {
+    struct CultureInfo * culture_info;
+    struct Date * date;
     struct DateFormatter * date_formatter;
     struct DateOnly * date_only;
     struct DateOnlyConverter * date_only_converter;
@@ -651,9 +653,11 @@ struct Obj2 {
     struct Deinit * deinit;
     struct Del * del;
     struct Delegate * delegate;
+    struct DeserializationFeature * deserialization_feature;
     struct Dict * dict;
     struct Dictionary * dictionary;
     struct DidSet * did_set;
+    struct DoubleNode * double_node;
     int64_t dummy;
     struct Dynamic * dynamic;
     struct Elif * elif;
@@ -678,9 +682,6 @@ struct Obj2 {
     struct FromJson * from_json;
     struct Func * func;
     struct Function * function;
-    struct Get * get;
-    struct Global * global;
-    struct Go * go;
     struct Decltype * obj2_decltype;
     struct Default * obj2_default;
     struct Delete * obj2_delete;
@@ -697,10 +698,21 @@ struct Obj2 {
     struct Float * obj2_float;
     struct For * obj2_for;
     struct Friend * obj2_friend;
-    struct Goto * obj2_goto;
     struct Obj2False * purple_false;
 };
 
+struct Get {
+    int64_t get;
+};
+
+struct Global {
+    int64_t global;
+};
+
+struct Go {
+    int64_t go;
+};
+
 struct Guard {
     int64_t guard;
 };
@@ -761,6 +773,10 @@ struct Instanceof {
     int64_t instanceof;
 };
 
+struct IntNode {
+    int64_t int_node;
+};
+
 struct Interface {
     int64_t interface;
 };
@@ -885,6 +901,10 @@ struct Lock {
     int64_t lock;
 };
 
+struct LongNode {
+    int64_t long_node;
+};
+
 struct Map {
     int64_t map;
 };
@@ -901,20 +921,8 @@ struct Mutating {
     int64_t mutating;
 };
 
-struct Native {
-    int64_t native;
-};
-
-struct Newtonsoft {
-    int64_t newtonsoft;
-};
-
-struct Nil {
-    int64_t nil;
-};
-
-struct No {
-    int64_t no;
+struct Goto {
+    int64_t goto_goto;
 };
 
 struct If {
@@ -949,16 +957,11 @@ struct Namespace {
     int64_t namespace_namespace;
 };
 
-struct New {
-    int64_t new_new;
-};
-
-struct Noexcept {
-    int64_t noexcept_noexcept;
-};
-
 struct Obj3 {
     int64_t dummy;
+    struct Get * get;
+    struct Global * global;
+    struct Go * go;
     struct Guard * guard;
     struct HasOwnProperty * has_own_property;
     struct HashCode * hash_code;
@@ -974,6 +977,7 @@ struct Obj3 {
     struct Init * init;
     struct Inout * inout;
     struct Instanceof * instanceof;
+    struct IntNode * int_node;
     struct Interface * interface;
     struct Internal * internal;
     struct Is * is;
@@ -1005,14 +1009,12 @@ struct Obj3 {
     struct List * list;
     struct Locale * locale;
     struct Lock * lock;
+    struct LongNode * long_node;
     struct Map * map;
     struct MapEntry * map_entry;
     struct MetadataPropertyHandling * metadata_property_handling;
     struct Mutating * mutating;
-    struct Native * native;
-    struct Newtonsoft * newtonsoft;
-    struct Nil * nil;
-    struct No * no;
+    struct Goto * obj3_goto;
     struct If * obj3_if;
     struct Import * obj3_import;
     struct Inline * obj3_inline;
@@ -1021,8 +1023,22 @@ struct Obj3 {
     struct Module * obj3_module;
     struct Mutable * obj3_mutable;
     struct Namespace * obj3_namespace;
-    struct New * obj3_new;
-    struct Noexcept * obj3_noexcept;
+};
+
+struct Native {
+    int64_t native;
+};
+
+struct Newtonsoft {
+    int64_t newtonsoft;
+};
+
+struct Nil {
+    int64_t nil;
+};
+
+struct No {
+    int64_t no;
 };
 
 struct NoSuchMethod {
@@ -1061,10 +1077,22 @@ struct NullClass {
     int64_t null;
 };
 
+struct NullNode {
+    int64_t null_node;
+};
+
 struct NumberClass {
     int64_t number;
 };
 
+struct New {
+    int64_t new_new;
+};
+
+struct Noexcept {
+    int64_t noexcept_noexcept;
+};
+
 struct NoneClass {
     int64_t none;
 };
@@ -1133,10 +1161,6 @@ struct Restrict {
     int64_t restrict_restrict;
 };
 
-struct Return {
-    int64_t return_return;
-};
-
 struct ObjectClass {
     int64_t object;
 };
@@ -1145,6 +1169,10 @@ struct ObjectMapper {
     int64_t object_mapper;
 };
 
+struct ObjectNode {
+    int64_t object_node;
+};
+
 struct Of {
     int64_t of;
 };
@@ -1253,36 +1281,12 @@ struct Rethrows {
     int64_t rethrows;
 };
 
-struct Right {
-    int64_t right;
-};
-
-struct RuntimeType {
-    int64_t runtime_type;
-};
-
-struct S {
-    int64_t s;
-};
-
-struct Sbyte {
-    int64_t sbyte;
-};
-
-struct Sealed {
-    int64_t sealed;
-};
-
-struct Sel {
-    int64_t sel;
-};
-
-struct Select {
-    int64_t select;
-};
-
 struct Obj4 {
     int64_t dummy;
+    struct Native * native;
+    struct Newtonsoft * newtonsoft;
+    struct Nil * nil;
+    struct No * no;
     struct NoSuchMethod * no_such_method;
     struct Nonatomic * nonatomic;
     struct None * none;
@@ -1292,7 +1296,10 @@ struct Obj4 {
     struct NsObject * ns_object;
     struct NsString * ns_string;
     struct NullClass * null;
+    struct NullNode * null_node;
     struct NumberClass * number;
+    struct New * obj4_new;
+    struct Noexcept * obj4_noexcept;
     struct NoneClass * obj4_none;
     struct Not * obj4_not;
     struct NotEq * obj4_not_eq;
@@ -1310,9 +1317,9 @@ struct Obj4 {
     struct ReinterpretCast * obj4_reinterpret_cast;
     struct Requires * obj4_requires;
     struct Restrict * obj4_restrict;
-    struct Return * obj4_return;
     struct ObjectClass * object;
     struct ObjectMapper * object_mapper;
+    struct ObjectNode * object_node;
     struct Of * of;
     struct Oneway * oneway;
     struct Open * open;
@@ -1340,13 +1347,10 @@ struct Obj4 {
     struct Required * required;
     struct Retain * retain;
     struct Rethrows * rethrows;
-    struct Right * right;
-    struct RuntimeType * runtime_type;
-    struct S * s;
-    struct Sbyte * sbyte;
-    struct Sealed * sealed;
-    struct Sel * sel;
-    struct Select * select;
+};
+
+struct Return {
+    int64_t return_return;
 };
 
 struct SelfClass {
@@ -1437,20 +1441,36 @@ struct Union {
     int64_t union_union;
 };
 
-struct Unsigned {
-    int64_t unsigned_unsigned;
+struct Obj5True {
+    int64_t true_true;
 };
 
-struct Using {
-    int64_t using_using;
+struct Right {
+    int64_t right;
 };
 
-struct Virtual {
-    int64_t virtual_virtual;
+struct RuntimeType {
+    int64_t runtime_type;
 };
 
-struct Obj5True {
-    int64_t true_true;
+struct S {
+    int64_t s;
+};
+
+struct Sbyte {
+    int64_t sbyte;
+};
+
+struct Sealed {
+    int64_t sealed;
+};
+
+struct Sel {
+    int64_t sel;
+};
+
+struct Select {
+    int64_t select;
 };
 
 struct Self {
@@ -1461,6 +1481,10 @@ struct Sendable {
     int64_t sendable;
 };
 
+struct SerializationFeature {
+    int64_t serialization_feature;
+};
+
 struct Serialize {
     int64_t serialize;
 };
@@ -1517,6 +1541,10 @@ struct System {
     int64_t system;
 };
 
+struct TextNode {
+    int64_t text_node;
+};
+
 struct Then {
     int64_t then;
 };
@@ -1577,36 +1605,9 @@ struct Undefined {
     int64_t undefined;
 };
 
-struct Unowned {
-    int64_t unowned;
-};
-
-struct Unsafe {
-    int64_t unsafe;
-};
-
-struct Ushort {
-    int64_t ushort;
-};
-
-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 Obj5 {
     int64_t dummy;
+    struct Return * obj5_return;
     struct SelfClass * obj5_self;
     struct Short * obj5_short;
     struct Signed * obj5_signed;
@@ -1629,12 +1630,17 @@ struct Obj5 {
     struct Typename * obj5_typename;
     struct Typeof * obj5_typeof;
     struct Union * obj5_union;
-    struct Unsigned * obj5_unsigned;
-    struct Using * obj5_using;
-    struct Virtual * obj5_virtual;
     struct Obj5True * purple_true;
+    struct Right * right;
+    struct RuntimeType * runtime_type;
+    struct S * s;
+    struct Sbyte * sbyte;
+    struct Sealed * sealed;
+    struct Sel * sel;
+    struct Select * select;
     struct Self * self;
     struct Sendable * sendable;
+    struct SerializationFeature * serialization_feature;
     struct Serialize * serialize;
     struct SerializerProvider * serializer_provider;
     struct Set * set;
@@ -1649,6 +1655,7 @@ struct Obj5 {
     struct Super * super;
     struct Symbol * symbol;
     struct System * system;
+    struct TextNode * text_node;
     struct Then * then;
     struct Throws * throws;
     struct TimeOnly * time_only;
@@ -1664,24 +1671,29 @@ struct Obj5 {
     struct Ulong * ulong;
     struct Unchecked * unchecked;
     struct Undefined * undefined;
-    struct Unowned * unowned;
-    struct Unsafe * unsafe;
-    struct Ushort * ushort;
-    struct Utf8JsonReader * utf8_json_reader;
-    struct Utf8JsonWriter * utf8_json_writer;
-    struct Uuid * uuid;
-    struct Var * var;
 };
 
-struct Void {
-    int64_t void_void;
+struct Unsigned {
+    int64_t unsigned_unsigned;
 };
 
-struct Volatile {
-    int64_t volatile_volatile;
+struct Using {
+    int64_t using_using;
 };
 
-struct WcharT {
+struct Virtual {
+    int64_t virtual_virtual;
+};
+
+struct Void {
+    int64_t void_void;
+};
+
+struct Volatile {
+    int64_t volatile_volatile;
+};
+
+struct WcharT {
     int64_t wchar_t_wchar_t;
 };
 
@@ -1697,6 +1709,34 @@ struct XorEq {
     int64_t xor_eq_xor_eq;
 };
 
+struct Unowned {
+    int64_t unowned;
+};
+
+struct Unsafe {
+    int64_t unsafe;
+};
+
+struct Ushort {
+    int64_t ushort;
+};
+
+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 +1763,22 @@ struct Yield {
 
 struct Obj6 {
     int64_t dummy;
+    struct Unsigned * obj6_unsigned;
+    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 Unowned * unowned;
+    struct Unsafe * unsafe;
+    struct Ushort * ushort;
+    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;
@@ -1768,6 +1818,12 @@ cJSON * cJSON_CreateArrayClass(const struct ArrayClass * x);
 char * cJSON_PrintArrayClass(const struct ArrayClass * x);
 void cJSON_DeleteArrayClass(struct ArrayClass * x);
 
+struct ArrayNode * cJSON_ParseArrayNode(const char * s);
+struct ArrayNode * cJSON_GetArrayNodeValue(const cJSON * j);
+cJSON * cJSON_CreateArrayNode(const struct ArrayNode * x);
+char * cJSON_PrintArrayNode(const struct ArrayNode * x);
+void cJSON_DeleteArrayNode(struct ArrayNode * x);
+
 struct As * cJSON_ParseAs(const char * s);
 struct As * cJSON_GetAsValue(const cJSON * j);
 cJSON * cJSON_CreateAs(const struct As * x);
@@ -1822,6 +1878,12 @@ cJSON * cJSON_CreateBoolean(const struct Boolean * x);
 char * cJSON_PrintBoolean(const struct Boolean * x);
 void cJSON_DeleteBoolean(struct Boolean * x);
 
+struct BooleanNode * cJSON_ParseBooleanNode(const char * s);
+struct BooleanNode * cJSON_GetBooleanNodeValue(const cJSON * j);
+cJSON * cJSON_CreateBooleanNode(const struct BooleanNode * x);
+char * cJSON_PrintBooleanNode(const struct BooleanNode * x);
+void cJSON_DeleteBooleanNode(struct BooleanNode * x);
+
 struct Bycopy * cJSON_ParseBycopy(const char * s);
 struct Bycopy * cJSON_GetBycopyValue(const cJSON * j);
 cJSON * cJSON_CreateBycopy(const struct Bycopy * x);
@@ -1918,18 +1980,6 @@ cJSON * cJSON_CreateConverter(const struct Converter * x);
 char * cJSON_PrintConverter(const struct Converter * x);
 void cJSON_DeleteConverter(struct Converter * x);
 
-struct CultureInfo * cJSON_ParseCultureInfo(const char * s);
-struct CultureInfo * cJSON_GetCultureInfoValue(const cJSON * j);
-cJSON * cJSON_CreateCultureInfo(const struct CultureInfo * x);
-char * cJSON_PrintCultureInfo(const struct CultureInfo * x);
-void cJSON_DeleteCultureInfo(struct CultureInfo * x);
-
-struct Date * cJSON_ParseDate(const char * s);
-struct Date * cJSON_GetDateValue(const cJSON * j);
-cJSON * cJSON_CreateDate(const struct Date * x);
-char * cJSON_PrintDate(const struct Date * x);
-void cJSON_DeleteDate(struct Date * x);
-
 struct Empty * cJSON_ParseEmpty(const char * s);
 struct Empty * cJSON_GetEmptyValue(const cJSON * j);
 cJSON * cJSON_CreateEmpty(const struct Empty * x);
@@ -2140,6 +2190,18 @@ cJSON * cJSON_CreateObj1(const struct Obj1 * x);
 char * cJSON_PrintObj1(const struct Obj1 * x);
 void cJSON_DeleteObj1(struct Obj1 * x);
 
+struct CultureInfo * cJSON_ParseCultureInfo(const char * s);
+struct CultureInfo * cJSON_GetCultureInfoValue(const cJSON * j);
+cJSON * cJSON_CreateCultureInfo(const struct CultureInfo * x);
+char * cJSON_PrintCultureInfo(const struct CultureInfo * x);
+void cJSON_DeleteCultureInfo(struct CultureInfo * x);
+
+struct Date * cJSON_ParseDate(const char * s);
+struct Date * cJSON_GetDateValue(const cJSON * j);
+cJSON * cJSON_CreateDate(const struct Date * x);
+char * cJSON_PrintDate(const struct Date * x);
+void cJSON_DeleteDate(struct Date * x);
+
 struct DateFormatter * cJSON_ParseDateFormatter(const char * s);
 struct DateFormatter * cJSON_GetDateFormatterValue(const cJSON * j);
 cJSON * cJSON_CreateDateFormatter(const struct DateFormatter * x);
@@ -2242,6 +2304,12 @@ cJSON * cJSON_CreateDelegate(const struct Delegate * x);
 char * cJSON_PrintDelegate(const struct Delegate * x);
 void cJSON_DeleteDelegate(struct Delegate * x);
 
+struct DeserializationFeature * cJSON_ParseDeserializationFeature(const char * s);
+struct DeserializationFeature * cJSON_GetDeserializationFeatureValue(const cJSON * j);
+cJSON * cJSON_CreateDeserializationFeature(const struct DeserializationFeature * x);
+char * cJSON_PrintDeserializationFeature(const struct DeserializationFeature * x);
+void cJSON_DeleteDeserializationFeature(struct DeserializationFeature * x);
+
 struct Dict * cJSON_ParseDict(const char * s);
 struct Dict * cJSON_GetDictValue(const cJSON * j);
 cJSON * cJSON_CreateDict(const struct Dict * x);
@@ -2260,6 +2328,12 @@ cJSON * cJSON_CreateDidSet(const struct DidSet * x);
 char * cJSON_PrintDidSet(const struct DidSet * x);
 void cJSON_DeleteDidSet(struct DidSet * x);
 
+struct DoubleNode * cJSON_ParseDoubleNode(const char * s);
+struct DoubleNode * cJSON_GetDoubleNodeValue(const cJSON * j);
+cJSON * cJSON_CreateDoubleNode(const struct DoubleNode * x);
+char * cJSON_PrintDoubleNode(const struct DoubleNode * x);
+void cJSON_DeleteDoubleNode(struct DoubleNode * x);
+
 struct Dynamic * cJSON_ParseDynamic(const char * s);
 struct Dynamic * cJSON_GetDynamicValue(const cJSON * j);
 cJSON * cJSON_CreateDynamic(const struct Dynamic * x);
@@ -2398,24 +2472,6 @@ cJSON * cJSON_CreateFunction(const struct Function * x);
 char * cJSON_PrintFunction(const struct Function * x);
 void cJSON_DeleteFunction(struct Function * x);
 
-struct Get * cJSON_ParseGet(const char * s);
-struct Get * cJSON_GetGetValue(const cJSON * j);
-cJSON * cJSON_CreateGet(const struct Get * x);
-char * cJSON_PrintGet(const struct Get * x);
-void cJSON_DeleteGet(struct Get * x);
-
-struct Global * cJSON_ParseGlobal(const char * s);
-struct Global * cJSON_GetGlobalValue(const cJSON * j);
-cJSON * cJSON_CreateGlobal(const struct Global * x);
-char * cJSON_PrintGlobal(const struct Global * x);
-void cJSON_DeleteGlobal(struct Global * x);
-
-struct Go * cJSON_ParseGo(const char * s);
-struct Go * cJSON_GetGoValue(const cJSON * j);
-cJSON * cJSON_CreateGo(const struct Go * x);
-char * cJSON_PrintGo(const struct Go * x);
-void cJSON_DeleteGo(struct Go * x);
-
 struct Decltype * cJSON_ParseDecltype(const char * s);
 struct Decltype * cJSON_GetDecltypeValue(const cJSON * j);
 cJSON * cJSON_CreateDecltype(const struct Decltype * x);
@@ -2512,12 +2568,6 @@ cJSON * cJSON_CreateFriend(const struct Friend * x);
 char * cJSON_PrintFriend(const struct Friend * x);
 void cJSON_DeleteFriend(struct Friend * x);
 
-struct Goto * cJSON_ParseGoto(const char * s);
-struct Goto * cJSON_GetGotoValue(const cJSON * j);
-cJSON * cJSON_CreateGoto(const struct Goto * x);
-char * cJSON_PrintGoto(const struct Goto * x);
-void cJSON_DeleteGoto(struct Goto * x);
-
 struct Obj2False * cJSON_ParseObj2False(const char * s);
 struct Obj2False * cJSON_GetObj2FalseValue(const cJSON * j);
 cJSON * cJSON_CreateObj2False(const struct Obj2False * x);
@@ -2530,6 +2580,24 @@ cJSON * cJSON_CreateObj2(const struct Obj2 * x);
 char * cJSON_PrintObj2(const struct Obj2 * x);
 void cJSON_DeleteObj2(struct Obj2 * x);
 
+struct Get * cJSON_ParseGet(const char * s);
+struct Get * cJSON_GetGetValue(const cJSON * j);
+cJSON * cJSON_CreateGet(const struct Get * x);
+char * cJSON_PrintGet(const struct Get * x);
+void cJSON_DeleteGet(struct Get * x);
+
+struct Global * cJSON_ParseGlobal(const char * s);
+struct Global * cJSON_GetGlobalValue(const cJSON * j);
+cJSON * cJSON_CreateGlobal(const struct Global * x);
+char * cJSON_PrintGlobal(const struct Global * x);
+void cJSON_DeleteGlobal(struct Global * x);
+
+struct Go * cJSON_ParseGo(const char * s);
+struct Go * cJSON_GetGoValue(const cJSON * j);
+cJSON * cJSON_CreateGo(const struct Go * x);
+char * cJSON_PrintGo(const struct Go * x);
+void cJSON_DeleteGo(struct Go * x);
+
 struct Guard * cJSON_ParseGuard(const char * s);
 struct Guard * cJSON_GetGuardValue(const cJSON * j);
 cJSON * cJSON_CreateGuard(const struct Guard * x);
@@ -2620,6 +2688,12 @@ cJSON * cJSON_CreateInstanceof(const struct Instanceof * x);
 char * cJSON_PrintInstanceof(const struct Instanceof * x);
 void cJSON_DeleteInstanceof(struct Instanceof * x);
 
+struct IntNode * cJSON_ParseIntNode(const char * s);
+struct IntNode * cJSON_GetIntNodeValue(const cJSON * j);
+cJSON * cJSON_CreateIntNode(const struct IntNode * x);
+char * cJSON_PrintIntNode(const struct IntNode * x);
+void cJSON_DeleteIntNode(struct IntNode * x);
+
 struct Interface * cJSON_ParseInterface(const char * s);
 struct Interface * cJSON_GetInterfaceValue(const cJSON * j);
 cJSON * cJSON_CreateInterface(const struct Interface * x);
@@ -2806,6 +2880,12 @@ cJSON * cJSON_CreateLock(const struct Lock * x);
 char * cJSON_PrintLock(const struct Lock * x);
 void cJSON_DeleteLock(struct Lock * x);
 
+struct LongNode * cJSON_ParseLongNode(const char * s);
+struct LongNode * cJSON_GetLongNodeValue(const cJSON * j);
+cJSON * cJSON_CreateLongNode(const struct LongNode * x);
+char * cJSON_PrintLongNode(const struct LongNode * x);
+void cJSON_DeleteLongNode(struct LongNode * x);
+
 struct Map * cJSON_ParseMap(const char * s);
 struct Map * cJSON_GetMapValue(const cJSON * j);
 cJSON * cJSON_CreateMap(const struct Map * x);
@@ -2830,29 +2910,11 @@ cJSON * cJSON_CreateMutating(const struct Mutating * x);
 char * cJSON_PrintMutating(const struct Mutating * x);
 void cJSON_DeleteMutating(struct Mutating * x);
 
-struct Native * cJSON_ParseNative(const char * s);
-struct Native * cJSON_GetNativeValue(const cJSON * j);
-cJSON * cJSON_CreateNative(const struct Native * x);
-char * cJSON_PrintNative(const struct Native * x);
-void cJSON_DeleteNative(struct Native * x);
-
-struct Newtonsoft * cJSON_ParseNewtonsoft(const char * s);
-struct Newtonsoft * cJSON_GetNewtonsoftValue(const cJSON * j);
-cJSON * cJSON_CreateNewtonsoft(const struct Newtonsoft * x);
-char * cJSON_PrintNewtonsoft(const struct Newtonsoft * x);
-void cJSON_DeleteNewtonsoft(struct Newtonsoft * x);
-
-struct Nil * cJSON_ParseNil(const char * s);
-struct Nil * cJSON_GetNilValue(const cJSON * j);
-cJSON * cJSON_CreateNil(const struct Nil * x);
-char * cJSON_PrintNil(const struct Nil * x);
-void cJSON_DeleteNil(struct Nil * x);
-
-struct No * cJSON_ParseNo(const char * s);
-struct No * cJSON_GetNoValue(const cJSON * j);
-cJSON * cJSON_CreateNo(const struct No * x);
-char * cJSON_PrintNo(const struct No * x);
-void cJSON_DeleteNo(struct No * x);
+struct Goto * cJSON_ParseGoto(const char * s);
+struct Goto * cJSON_GetGotoValue(const cJSON * j);
+cJSON * cJSON_CreateGoto(const struct Goto * x);
+char * cJSON_PrintGoto(const struct Goto * x);
+void cJSON_DeleteGoto(struct Goto * x);
 
 struct If * cJSON_ParseIf(const char * s);
 struct If * cJSON_GetIfValue(const cJSON * j);
@@ -2902,24 +2964,36 @@ cJSON * cJSON_CreateNamespace(const struct Namespace * x);
 char * cJSON_PrintNamespace(const struct Namespace * x);
 void cJSON_DeleteNamespace(struct Namespace * x);
 
-struct New * cJSON_ParseNew(const char * s);
-struct New * cJSON_GetNewValue(const cJSON * j);
-cJSON * cJSON_CreateNew(const struct New * x);
-char * cJSON_PrintNew(const struct New * x);
-void cJSON_DeleteNew(struct New * x);
-
-struct Noexcept * cJSON_ParseNoexcept(const char * s);
-struct Noexcept * cJSON_GetNoexceptValue(const cJSON * j);
-cJSON * cJSON_CreateNoexcept(const struct Noexcept * x);
-char * cJSON_PrintNoexcept(const struct Noexcept * x);
-void cJSON_DeleteNoexcept(struct Noexcept * x);
-
 struct Obj3 * cJSON_ParseObj3(const char * s);
 struct Obj3 * cJSON_GetObj3Value(const cJSON * j);
 cJSON * cJSON_CreateObj3(const struct Obj3 * x);
 char * cJSON_PrintObj3(const struct Obj3 * x);
 void cJSON_DeleteObj3(struct Obj3 * x);
 
+struct Native * cJSON_ParseNative(const char * s);
+struct Native * cJSON_GetNativeValue(const cJSON * j);
+cJSON * cJSON_CreateNative(const struct Native * x);
+char * cJSON_PrintNative(const struct Native * x);
+void cJSON_DeleteNative(struct Native * x);
+
+struct Newtonsoft * cJSON_ParseNewtonsoft(const char * s);
+struct Newtonsoft * cJSON_GetNewtonsoftValue(const cJSON * j);
+cJSON * cJSON_CreateNewtonsoft(const struct Newtonsoft * x);
+char * cJSON_PrintNewtonsoft(const struct Newtonsoft * x);
+void cJSON_DeleteNewtonsoft(struct Newtonsoft * x);
+
+struct Nil * cJSON_ParseNil(const char * s);
+struct Nil * cJSON_GetNilValue(const cJSON * j);
+cJSON * cJSON_CreateNil(const struct Nil * x);
+char * cJSON_PrintNil(const struct Nil * x);
+void cJSON_DeleteNil(struct Nil * x);
+
+struct No * cJSON_ParseNo(const char * s);
+struct No * cJSON_GetNoValue(const cJSON * j);
+cJSON * cJSON_CreateNo(const struct No * x);
+char * cJSON_PrintNo(const struct No * x);
+void cJSON_DeleteNo(struct No * x);
+
 struct NoSuchMethod * cJSON_ParseNoSuchMethod(const char * s);
 struct NoSuchMethod * cJSON_GetNoSuchMethodValue(const cJSON * j);
 cJSON * cJSON_CreateNoSuchMethod(const struct NoSuchMethod * x);
@@ -2974,12 +3048,30 @@ cJSON * cJSON_CreateNullClass(const struct NullClass * x);
 char * cJSON_PrintNullClass(const struct NullClass * x);
 void cJSON_DeleteNullClass(struct NullClass * x);
 
+struct NullNode * cJSON_ParseNullNode(const char * s);
+struct NullNode * cJSON_GetNullNodeValue(const cJSON * j);
+cJSON * cJSON_CreateNullNode(const struct NullNode * x);
+char * cJSON_PrintNullNode(const struct NullNode * x);
+void cJSON_DeleteNullNode(struct NullNode * x);
+
 struct NumberClass * cJSON_ParseNumberClass(const char * s);
 struct NumberClass * cJSON_GetNumberClassValue(const cJSON * j);
 cJSON * cJSON_CreateNumberClass(const struct NumberClass * x);
 char * cJSON_PrintNumberClass(const struct NumberClass * x);
 void cJSON_DeleteNumberClass(struct NumberClass * x);
 
+struct New * cJSON_ParseNew(const char * s);
+struct New * cJSON_GetNewValue(const cJSON * j);
+cJSON * cJSON_CreateNew(const struct New * x);
+char * cJSON_PrintNew(const struct New * x);
+void cJSON_DeleteNew(struct New * x);
+
+struct Noexcept * cJSON_ParseNoexcept(const char * s);
+struct Noexcept * cJSON_GetNoexceptValue(const cJSON * j);
+cJSON * cJSON_CreateNoexcept(const struct Noexcept * x);
+char * cJSON_PrintNoexcept(const struct Noexcept * x);
+void cJSON_DeleteNoexcept(struct Noexcept * x);
+
 struct NoneClass * cJSON_ParseNoneClass(const char * s);
 struct NoneClass * cJSON_GetNoneClassValue(const cJSON * j);
 cJSON * cJSON_CreateNoneClass(const struct NoneClass * x);
@@ -3082,12 +3174,6 @@ cJSON * cJSON_CreateRestrict(const struct Restrict * x);
 char * cJSON_PrintRestrict(const struct Restrict * x);
 void cJSON_DeleteRestrict(struct Restrict * x);
 
-struct Return * cJSON_ParseReturn(const char * s);
-struct Return * cJSON_GetReturnValue(const cJSON * j);
-cJSON * cJSON_CreateReturn(const struct Return * x);
-char * cJSON_PrintReturn(const struct Return * x);
-void cJSON_DeleteReturn(struct Return * x);
-
 struct ObjectClass * cJSON_ParseObjectClass(const char * s);
 struct ObjectClass * cJSON_GetObjectClassValue(const cJSON * j);
 cJSON * cJSON_CreateObjectClass(const struct ObjectClass * x);
@@ -3100,6 +3186,12 @@ cJSON * cJSON_CreateObjectMapper(const struct ObjectMapper * x);
 char * cJSON_PrintObjectMapper(const struct ObjectMapper * x);
 void cJSON_DeleteObjectMapper(struct ObjectMapper * x);
 
+struct ObjectNode * cJSON_ParseObjectNode(const char * s);
+struct ObjectNode * cJSON_GetObjectNodeValue(const cJSON * j);
+cJSON * cJSON_CreateObjectNode(const struct ObjectNode * x);
+char * cJSON_PrintObjectNode(const struct ObjectNode * x);
+void cJSON_DeleteObjectNode(struct ObjectNode * x);
+
 struct Of * cJSON_ParseOf(const char * s);
 struct Of * cJSON_GetOfValue(const cJSON * j);
 cJSON * cJSON_CreateOf(const struct Of * x);
@@ -3262,54 +3354,18 @@ cJSON * cJSON_CreateRethrows(const struct Rethrows * x);
 char * cJSON_PrintRethrows(const struct Rethrows * x);
 void cJSON_DeleteRethrows(struct Rethrows * x);
 
-struct Right * cJSON_ParseRight(const char * s);
-struct Right * cJSON_GetRightValue(const cJSON * j);
-cJSON * cJSON_CreateRight(const struct Right * x);
-char * cJSON_PrintRight(const struct Right * x);
-void cJSON_DeleteRight(struct Right * x);
-
-struct RuntimeType * cJSON_ParseRuntimeType(const char * s);
-struct RuntimeType * cJSON_GetRuntimeTypeValue(const cJSON * j);
-cJSON * cJSON_CreateRuntimeType(const struct RuntimeType * x);
-char * cJSON_PrintRuntimeType(const struct RuntimeType * x);
-void cJSON_DeleteRuntimeType(struct RuntimeType * x);
-
-struct S * cJSON_ParseS(const char * s);
-struct S * cJSON_GetSValue(const cJSON * j);
-cJSON * cJSON_CreateS(const struct S * x);
-char * cJSON_PrintS(const struct S * x);
-void cJSON_DeleteS(struct S * x);
-
-struct Sbyte * cJSON_ParseSbyte(const char * s);
-struct Sbyte * cJSON_GetSbyteValue(const cJSON * j);
-cJSON * cJSON_CreateSbyte(const struct Sbyte * x);
-char * cJSON_PrintSbyte(const struct Sbyte * x);
-void cJSON_DeleteSbyte(struct Sbyte * x);
-
-struct Sealed * cJSON_ParseSealed(const char * s);
-struct Sealed * cJSON_GetSealedValue(const cJSON * j);
-cJSON * cJSON_CreateSealed(const struct Sealed * x);
-char * cJSON_PrintSealed(const struct Sealed * x);
-void cJSON_DeleteSealed(struct Sealed * x);
-
-struct Sel * cJSON_ParseSel(const char * s);
-struct Sel * cJSON_GetSelValue(const cJSON * j);
-cJSON * cJSON_CreateSel(const struct Sel * x);
-char * cJSON_PrintSel(const struct Sel * x);
-void cJSON_DeleteSel(struct Sel * x);
-
-struct Select * cJSON_ParseSelect(const char * s);
-struct Select * cJSON_GetSelectValue(const cJSON * j);
-cJSON * cJSON_CreateSelect(const struct Select * x);
-char * cJSON_PrintSelect(const struct Select * x);
-void cJSON_DeleteSelect(struct Select * x);
-
 struct Obj4 * cJSON_ParseObj4(const char * s);
 struct Obj4 * cJSON_GetObj4Value(const cJSON * j);
 cJSON * cJSON_CreateObj4(const struct Obj4 * x);
 char * cJSON_PrintObj4(const struct Obj4 * x);
 void cJSON_DeleteObj4(struct Obj4 * x);
 
+struct Return * cJSON_ParseReturn(const char * s);
+struct Return * cJSON_GetReturnValue(const cJSON * j);
+cJSON * cJSON_CreateReturn(const struct Return * x);
+char * cJSON_PrintReturn(const struct Return * x);
+void cJSON_DeleteReturn(struct Return * x);
+
 struct SelfClass * cJSON_ParseSelfClass(const char * s);
 struct SelfClass * cJSON_GetSelfClassValue(const cJSON * j);
 cJSON * cJSON_CreateSelfClass(const struct SelfClass * x);
@@ -3442,30 +3498,54 @@ cJSON * cJSON_CreateUnion(const struct Union * x);
 char * cJSON_PrintUnion(const struct Union * x);
 void cJSON_DeleteUnion(struct Union * x);
 
-struct Unsigned * cJSON_ParseUnsigned(const char * s);
-struct Unsigned * cJSON_GetUnsignedValue(const cJSON * j);
-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 Obj5True * cJSON_ParseObj5True(const char * s);
 struct Obj5True * cJSON_GetObj5TrueValue(const cJSON * j);
 cJSON * cJSON_CreateObj5True(const struct Obj5True * x);
 char * cJSON_PrintObj5True(const struct Obj5True * x);
 void cJSON_DeleteObj5True(struct Obj5True * x);
 
+struct Right * cJSON_ParseRight(const char * s);
+struct Right * cJSON_GetRightValue(const cJSON * j);
+cJSON * cJSON_CreateRight(const struct Right * x);
+char * cJSON_PrintRight(const struct Right * x);
+void cJSON_DeleteRight(struct Right * x);
+
+struct RuntimeType * cJSON_ParseRuntimeType(const char * s);
+struct RuntimeType * cJSON_GetRuntimeTypeValue(const cJSON * j);
+cJSON * cJSON_CreateRuntimeType(const struct RuntimeType * x);
+char * cJSON_PrintRuntimeType(const struct RuntimeType * x);
+void cJSON_DeleteRuntimeType(struct RuntimeType * x);
+
+struct S * cJSON_ParseS(const char * s);
+struct S * cJSON_GetSValue(const cJSON * j);
+cJSON * cJSON_CreateS(const struct S * x);
+char * cJSON_PrintS(const struct S * x);
+void cJSON_DeleteS(struct S * x);
+
+struct Sbyte * cJSON_ParseSbyte(const char * s);
+struct Sbyte * cJSON_GetSbyteValue(const cJSON * j);
+cJSON * cJSON_CreateSbyte(const struct Sbyte * x);
+char * cJSON_PrintSbyte(const struct Sbyte * x);
+void cJSON_DeleteSbyte(struct Sbyte * x);
+
+struct Sealed * cJSON_ParseSealed(const char * s);
+struct Sealed * cJSON_GetSealedValue(const cJSON * j);
+cJSON * cJSON_CreateSealed(const struct Sealed * x);
+char * cJSON_PrintSealed(const struct Sealed * x);
+void cJSON_DeleteSealed(struct Sealed * x);
+
+struct Sel * cJSON_ParseSel(const char * s);
+struct Sel * cJSON_GetSelValue(const cJSON * j);
+cJSON * cJSON_CreateSel(const struct Sel * x);
+char * cJSON_PrintSel(const struct Sel * x);
+void cJSON_DeleteSel(struct Sel * x);
+
+struct Select * cJSON_ParseSelect(const char * s);
+struct Select * cJSON_GetSelectValue(const cJSON * j);
+cJSON * cJSON_CreateSelect(const struct Select * x);
+char * cJSON_PrintSelect(const struct Select * x);
+void cJSON_DeleteSelect(struct Select * x);
+
 struct Self * cJSON_ParseSelf(const char * s);
 struct Self * cJSON_GetSelfValue(const cJSON * j);
 cJSON * cJSON_CreateSelf(const struct Self * x);
@@ -3478,6 +3558,12 @@ cJSON * cJSON_CreateSendable(const struct Sendable * x);
 char * cJSON_PrintSendable(const struct Sendable * x);
 void cJSON_DeleteSendable(struct Sendable * x);
 
+struct SerializationFeature * cJSON_ParseSerializationFeature(const char * s);
+struct SerializationFeature * cJSON_GetSerializationFeatureValue(const cJSON * j);
+cJSON * cJSON_CreateSerializationFeature(const struct SerializationFeature * x);
+char * cJSON_PrintSerializationFeature(const struct SerializationFeature * x);
+void cJSON_DeleteSerializationFeature(struct SerializationFeature * x);
+
 struct Serialize * cJSON_ParseSerialize(const char * s);
 struct Serialize * cJSON_GetSerializeValue(const cJSON * j);
 cJSON * cJSON_CreateSerialize(const struct Serialize * x);
@@ -3562,6 +3648,12 @@ cJSON * cJSON_CreateSystem(const struct System * x);
 char * cJSON_PrintSystem(const struct System * x);
 void cJSON_DeleteSystem(struct System * x);
 
+struct TextNode * cJSON_ParseTextNode(const char * s);
+struct TextNode * cJSON_GetTextNodeValue(const cJSON * j);
+cJSON * cJSON_CreateTextNode(const struct TextNode * x);
+char * cJSON_PrintTextNode(const struct TextNode * x);
+void cJSON_DeleteTextNode(struct TextNode * x);
+
 struct Then * cJSON_ParseThen(const char * s);
 struct Then * cJSON_GetThenValue(const cJSON * j);
 cJSON * cJSON_CreateThen(const struct Then * x);
@@ -3652,54 +3744,30 @@ cJSON * cJSON_CreateUndefined(const struct Undefined * x);
 char * cJSON_PrintUndefined(const struct Undefined * x);
 void cJSON_DeleteUndefined(struct Undefined * x);
 
-struct Unowned * cJSON_ParseUnowned(const char * s);
-struct Unowned * cJSON_GetUnownedValue(const cJSON * j);
-cJSON * cJSON_CreateUnowned(const struct Unowned * x);
-char * cJSON_PrintUnowned(const struct Unowned * x);
-void cJSON_DeleteUnowned(struct Unowned * x);
-
-struct Unsafe * cJSON_ParseUnsafe(const char * s);
-struct Unsafe * cJSON_GetUnsafeValue(const cJSON * j);
-cJSON * cJSON_CreateUnsafe(const struct Unsafe * x);
-char * cJSON_PrintUnsafe(const struct Unsafe * x);
-void cJSON_DeleteUnsafe(struct Unsafe * 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 Unsigned * cJSON_ParseUnsigned(const char * s);
+struct Unsigned * cJSON_GetUnsignedValue(const cJSON * j);
+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 Void * cJSON_ParseVoid(const char * s);
 struct Void * cJSON_GetVoidValue(const cJSON * j);
 cJSON * cJSON_CreateVoid(const struct Void * x);
@@ -3736,6 +3804,48 @@ cJSON * cJSON_CreateXorEq(const struct XorEq * x);
 char * cJSON_PrintXorEq(const struct XorEq * x);
 void cJSON_DeleteXorEq(struct XorEq * x);
 
+struct Unowned * cJSON_ParseUnowned(const char * s);
+struct Unowned * cJSON_GetUnownedValue(const cJSON * j);
+cJSON * cJSON_CreateUnowned(const struct Unowned * x);
+char * cJSON_PrintUnowned(const struct Unowned * x);
+void cJSON_DeleteUnowned(struct Unowned * x);
+
+struct Unsafe * cJSON_ParseUnsafe(const char * s);
+struct Unsafe * cJSON_GetUnsafeValue(const cJSON * j);
+cJSON * cJSON_CreateUnsafe(const struct Unsafe * x);
+char * cJSON_PrintUnsafe(const struct Unsafe * x);
+void cJSON_DeleteUnsafe(struct Unsafe * 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 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..144b607 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
@@ -73,6 +73,20 @@ namespace quicktype {
         void set_array(const int64_t & value) { this->array = value; }
     };
 
+    class ArrayNode {
+        public:
+        ArrayNode() = default;
+        virtual ~ArrayNode() = default;
+
+        private:
+        int64_t array_node;
+
+        public:
+        const int64_t & get_array_node() const { return array_node; }
+        int64_t & get_mutable_array_node() { return array_node; }
+        void set_array_node(const int64_t & value) { this->array_node = value; }
+    };
+
     class As {
         public:
         As() = default;
@@ -199,6 +213,20 @@ namespace quicktype {
         void set_boolean(const int64_t & value) { this->boolean = value; }
     };
 
+    class BooleanNode {
+        public:
+        BooleanNode() = default;
+        virtual ~BooleanNode() = default;
+
+        private:
+        int64_t boolean_node;
+
+        public:
+        const int64_t & get_boolean_node() const { return boolean_node; }
+        int64_t & get_mutable_boolean_node() { return boolean_node; }
+        void set_boolean_node(const int64_t & value) { this->boolean_node = value; }
+    };
+
     class Bycopy {
         public:
         Bycopy() = default;
@@ -423,34 +451,6 @@ namespace quicktype {
         void set_converter(const int64_t & value) { this->converter = value; }
     };
 
-    class CultureInfo {
-        public:
-        CultureInfo() = default;
-        virtual ~CultureInfo() = default;
-
-        private:
-        int64_t culture_info;
-
-        public:
-        const int64_t & get_culture_info() const { return culture_info; }
-        int64_t & get_mutable_culture_info() { return culture_info; }
-        void set_culture_info(const int64_t & value) { this->culture_info = value; }
-    };
-
-    class Date {
-        public:
-        Date() = default;
-        virtual ~Date() = default;
-
-        private:
-        int64_t date;
-
-        public:
-        const int64_t & get_date() const { return date; }
-        int64_t & get_mutable_date() { return date; }
-        void set_date(const int64_t & value) { this->date = value; }
-    };
-
     class Empty {
         public:
         Empty() = default;
@@ -936,6 +936,7 @@ namespace quicktype {
         Abstract abstract;
         Any any;
         Array array;
+        ArrayNode array_node;
         As as;
         Assert assert;
         Associatedtype associatedtype;
@@ -945,6 +946,7 @@ namespace quicktype {
         Await await;
         Base base;
         Boolean boolean;
+        BooleanNode boolean_node;
         Bycopy bycopy;
         Byref byref;
         Byte byte;
@@ -961,8 +963,6 @@ namespace quicktype {
         Convenience convenience;
         Convert convert;
         Converter converter;
-        CultureInfo culture_info;
-        Date date;
         int64_t dummy;
         Empty empty;
         Obj1Bool fluffy_bool;
@@ -1012,6 +1012,10 @@ namespace quicktype {
         Array & get_mutable_array() { return array; }
         void set_array(const Array & value) { this->array = value; }
 
+        const ArrayNode & get_array_node() const { return array_node; }
+        ArrayNode & get_mutable_array_node() { return array_node; }
+        void set_array_node(const ArrayNode & value) { this->array_node = value; }
+
         const As & get_as() const { return as; }
         As & get_mutable_as() { return as; }
         void set_as(const As & value) { this->as = value; }
@@ -1048,6 +1052,10 @@ namespace quicktype {
         Boolean & get_mutable_boolean() { return boolean; }
         void set_boolean(const Boolean & value) { this->boolean = value; }
 
+        const BooleanNode & get_boolean_node() const { return boolean_node; }
+        BooleanNode & get_mutable_boolean_node() { return boolean_node; }
+        void set_boolean_node(const BooleanNode & value) { this->boolean_node = value; }
+
         const Bycopy & get_bycopy() const { return bycopy; }
         Bycopy & get_mutable_bycopy() { return bycopy; }
         void set_bycopy(const Bycopy & value) { this->bycopy = value; }
@@ -1112,14 +1120,6 @@ namespace quicktype {
         Converter & get_mutable_converter() { return converter; }
         void set_converter(const Converter & value) { this->converter = value; }
 
-        const CultureInfo & get_culture_info() const { return culture_info; }
-        CultureInfo & get_mutable_culture_info() { return culture_info; }
-        void set_culture_info(const CultureInfo & value) { this->culture_info = value; }
-
-        const Date & get_date() const { return date; }
-        Date & get_mutable_date() { return date; }
-        void set_date(const Date & value) { this->date = value; }
-
         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; }
@@ -1261,6 +1261,34 @@ namespace quicktype {
         void set_purple_class(const ClassClass & value) { this->purple_class = value; }
     };
 
+    class CultureInfo {
+        public:
+        CultureInfo() = default;
+        virtual ~CultureInfo() = default;
+
+        private:
+        int64_t culture_info;
+
+        public:
+        const int64_t & get_culture_info() const { return culture_info; }
+        int64_t & get_mutable_culture_info() { return culture_info; }
+        void set_culture_info(const int64_t & value) { this->culture_info = value; }
+    };
+
+    class Date {
+        public:
+        Date() = default;
+        virtual ~Date() = default;
+
+        private:
+        int64_t date;
+
+        public:
+        const int64_t & get_date() const { return date; }
+        int64_t & get_mutable_date() { return date; }
+        void set_date(const int64_t & value) { this->date = value; }
+    };
+
     class DateFormatter {
         public:
         DateFormatter() = default;
@@ -1499,6 +1527,20 @@ namespace quicktype {
         void set_delegate(const int64_t & value) { this->delegate = value; }
     };
 
+    class DeserializationFeature {
+        public:
+        DeserializationFeature() = default;
+        virtual ~DeserializationFeature() = default;
+
+        private:
+        int64_t deserialization_feature;
+
+        public:
+        const int64_t & get_deserialization_feature() const { return deserialization_feature; }
+        int64_t & get_mutable_deserialization_feature() { return deserialization_feature; }
+        void set_deserialization_feature(const int64_t & value) { this->deserialization_feature = value; }
+    };
+
     class Dict {
         public:
         Dict() = default;
@@ -1541,6 +1583,20 @@ namespace quicktype {
         void set_did_set(const int64_t & value) { this->did_set = value; }
     };
 
+    class DoubleNode {
+        public:
+        DoubleNode() = default;
+        virtual ~DoubleNode() = default;
+
+        private:
+        int64_t double_node;
+
+        public:
+        const int64_t & get_double_node() const { return double_node; }
+        int64_t & get_mutable_double_node() { return double_node; }
+        void set_double_node(const int64_t & value) { this->double_node = value; }
+    };
+
     class Dynamic {
         public:
         Dynamic() = default;
@@ -1865,48 +1921,6 @@ namespace quicktype {
         void set_function(const int64_t & value) { this->function = value; }
     };
 
-    class Get {
-        public:
-        Get() = default;
-        virtual ~Get() = default;
-
-        private:
-        int64_t get;
-
-        public:
-        const int64_t & get_get() const { return get; }
-        int64_t & get_mutable_get() { return get; }
-        void set_get(const int64_t & value) { this->get = value; }
-    };
-
-    class Global {
-        public:
-        Global() = default;
-        virtual ~Global() = default;
-
-        private:
-        int64_t global;
-
-        public:
-        const int64_t & get_global() const { return global; }
-        int64_t & get_mutable_global() { return global; }
-        void set_global(const int64_t & value) { this->global = value; }
-    };
-
-    class Go {
-        public:
-        Go() = default;
-        virtual ~Go() = default;
-
-        private:
-        int64_t go;
-
-        public:
-        const int64_t & get_go() const { return go; }
-        int64_t & get_mutable_go() { return go; }
-        void set_go(const int64_t & value) { this->go = value; }
-    };
-
     class Decltype {
         public:
         Decltype() = default;
@@ -2131,20 +2145,6 @@ namespace quicktype {
         void set_friend_friend(const int64_t & value) { this->friend_friend = value; }
     };
 
-    class Goto {
-        public:
-        Goto() = default;
-        virtual ~Goto() = default;
-
-        private:
-        int64_t goto_goto;
-
-        public:
-        const int64_t & get_goto_goto() const { return goto_goto; }
-        int64_t & get_mutable_goto_goto() { return goto_goto; }
-        void set_goto_goto(const int64_t & value) { this->goto_goto = value; }
-    };
-
     class FalseClass {
         public:
         FalseClass() = default;
@@ -2165,6 +2165,8 @@ namespace quicktype {
         virtual ~Obj2() = default;
 
         private:
+        CultureInfo culture_info;
+        Date date;
         DateFormatter date_formatter;
         DateOnly date_only;
         DateOnlyConverter date_only_converter;
@@ -2182,9 +2184,11 @@ namespace quicktype {
         Deinit deinit;
         Del del;
         Delegate delegate;
+        DeserializationFeature deserialization_feature;
         Dict dict;
         Dictionary dictionary;
         DidSet did_set;
+        DoubleNode double_node;
         int64_t dummy;
         Dynamic dynamic;
         Elif elif;
@@ -2209,9 +2213,6 @@ namespace quicktype {
         FromJson from_json;
         Func func;
         Function function;
-        Get get;
-        Global global;
-        Go go;
         Decltype obj2_decltype;
         Default obj2_default;
         Delete obj2_delete;
@@ -2228,10 +2229,17 @@ namespace quicktype {
         Float obj2_float;
         For obj2_for;
         Friend obj2_friend;
-        Goto obj2_goto;
         FalseClass purple_false;
 
         public:
+        const CultureInfo & get_culture_info() const { return culture_info; }
+        CultureInfo & get_mutable_culture_info() { return culture_info; }
+        void set_culture_info(const CultureInfo & value) { this->culture_info = value; }
+
+        const Date & get_date() const { return date; }
+        Date & get_mutable_date() { return date; }
+        void set_date(const Date & value) { this->date = value; }
+
         const DateFormatter & get_date_formatter() const { return date_formatter; }
         DateFormatter & get_mutable_date_formatter() { return date_formatter; }
         void set_date_formatter(const DateFormatter & value) { this->date_formatter = value; }
@@ -2300,6 +2308,10 @@ namespace quicktype {
         Delegate & get_mutable_delegate() { return delegate; }
         void set_delegate(const Delegate & value) { this->delegate = value; }
 
+        const DeserializationFeature & get_deserialization_feature() const { return deserialization_feature; }
+        DeserializationFeature & get_mutable_deserialization_feature() { return deserialization_feature; }
+        void set_deserialization_feature(const DeserializationFeature & value) { this->deserialization_feature = value; }
+
         const Dict & get_dict() const { return dict; }
         Dict & get_mutable_dict() { return dict; }
         void set_dict(const Dict & value) { this->dict = value; }
@@ -2312,6 +2324,10 @@ namespace quicktype {
         DidSet & get_mutable_did_set() { return did_set; }
         void set_did_set(const DidSet & value) { this->did_set = value; }
 
+        const DoubleNode & get_double_node() const { return double_node; }
+        DoubleNode & get_mutable_double_node() { return double_node; }
+        void set_double_node(const DoubleNode & value) { this->double_node = value; }
+
         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; }
@@ -2408,18 +2424,6 @@ namespace quicktype {
         Function & get_mutable_function() { return function; }
         void set_function(const Function & value) { this->function = value; }
 
-        const Get & get_get() const { return get; }
-        Get & get_mutable_get() { return get; }
-        void set_get(const Get & value) { this->get = value; }
-
-        const Global & get_global() const { return global; }
-        Global & get_mutable_global() { return global; }
-        void set_global(const Global & value) { this->global = value; }
-
-        const Go & get_go() const { return go; }
-        Go & get_mutable_go() { return go; }
-        void set_go(const Go & value) { this->go = value; }
-
         const Decltype & get_obj2_decltype() const { return obj2_decltype; }
         Decltype & get_mutable_obj2_decltype() { return obj2_decltype; }
         void set_obj2_decltype(const Decltype & value) { this->obj2_decltype = value; }
@@ -2484,15 +2488,53 @@ namespace quicktype {
         Friend & get_mutable_obj2_friend() { return obj2_friend; }
         void set_obj2_friend(const Friend & value) { this->obj2_friend = value; }
 
-        const Goto & get_obj2_goto() const { return obj2_goto; }
-        Goto & get_mutable_obj2_goto() { return obj2_goto; }
-        void set_obj2_goto(const Goto & value) { this->obj2_goto = value; }
-
         const FalseClass & get_purple_false() const { return purple_false; }
         FalseClass & get_mutable_purple_false() { return purple_false; }
         void set_purple_false(const FalseClass & value) { this->purple_false = value; }
     };
 
+    class Get {
+        public:
+        Get() = default;
+        virtual ~Get() = default;
+
+        private:
+        int64_t get;
+
+        public:
+        const int64_t & get_get() const { return get; }
+        int64_t & get_mutable_get() { return get; }
+        void set_get(const int64_t & value) { this->get = value; }
+    };
+
+    class Global {
+        public:
+        Global() = default;
+        virtual ~Global() = default;
+
+        private:
+        int64_t global;
+
+        public:
+        const int64_t & get_global() const { return global; }
+        int64_t & get_mutable_global() { return global; }
+        void set_global(const int64_t & value) { this->global = value; }
+    };
+
+    class Go {
+        public:
+        Go() = default;
+        virtual ~Go() = default;
+
+        private:
+        int64_t go;
+
+        public:
+        const int64_t & get_go() const { return go; }
+        int64_t & get_mutable_go() { return go; }
+        void set_go(const int64_t & value) { this->go = value; }
+    };
+
     class Guard {
         public:
         Guard() = default;
@@ -2703,6 +2745,20 @@ namespace quicktype {
         void set_instanceof(const int64_t & value) { this->instanceof = value; }
     };
 
+    class IntNode {
+        public:
+        IntNode() = default;
+        virtual ~IntNode() = default;
+
+        private:
+        int64_t int_node;
+
+        public:
+        const int64_t & get_int_node() const { return int_node; }
+        int64_t & get_mutable_int_node() { return int_node; }
+        void set_int_node(const int64_t & value) { this->int_node = value; }
+    };
+
     class Interface {
         public:
         Interface() = default;
@@ -3137,6 +3193,20 @@ namespace quicktype {
         void set_lock(const int64_t & value) { this->lock = value; }
     };
 
+    class LongNode {
+        public:
+        LongNode() = default;
+        virtual ~LongNode() = default;
+
+        private:
+        int64_t long_node;
+
+        public:
+        const int64_t & get_long_node() const { return long_node; }
+        int64_t & get_mutable_long_node() { return long_node; }
+        void set_long_node(const int64_t & value) { this->long_node = value; }
+    };
+
     class Map {
         public:
         Map() = default;
@@ -3193,66 +3263,24 @@ namespace quicktype {
         void set_mutating(const int64_t & value) { this->mutating = value; }
     };
 
-    class Native {
+    class Goto {
         public:
-        Native() = default;
-        virtual ~Native() = default;
+        Goto() = default;
+        virtual ~Goto() = default;
 
         private:
-        int64_t native;
+        int64_t goto_goto;
 
         public:
-        const int64_t & get_native() const { return native; }
-        int64_t & get_mutable_native() { return native; }
-        void set_native(const int64_t & value) { this->native = value; }
+        const int64_t & get_goto_goto() const { return goto_goto; }
+        int64_t & get_mutable_goto_goto() { return goto_goto; }
+        void set_goto_goto(const int64_t & value) { this->goto_goto = value; }
     };
 
-    class Newtonsoft {
+    class If {
         public:
-        Newtonsoft() = default;
-        virtual ~Newtonsoft() = default;
-
-        private:
-        int64_t newtonsoft;
-
-        public:
-        const int64_t & get_newtonsoft() const { return newtonsoft; }
-        int64_t & get_mutable_newtonsoft() { return newtonsoft; }
-        void set_newtonsoft(const int64_t & value) { this->newtonsoft = value; }
-    };
-
-    class Nil {
-        public:
-        Nil() = default;
-        virtual ~Nil() = default;
-
-        private:
-        int64_t nil;
-
-        public:
-        const int64_t & get_nil() const { return nil; }
-        int64_t & get_mutable_nil() { return nil; }
-        void set_nil(const int64_t & value) { this->nil = value; }
-    };
-
-    class No {
-        public:
-        No() = default;
-        virtual ~No() = default;
-
-        private:
-        int64_t no;
-
-        public:
-        const int64_t & get_no() const { return no; }
-        int64_t & get_mutable_no() { return no; }
-        void set_no(const int64_t & value) { this->no = value; }
-    };
-
-    class If {
-        public:
-        If() = default;
-        virtual ~If() = default;
+        If() = default;
+        virtual ~If() = default;
 
         private:
         int64_t if_if;
@@ -3361,34 +3389,6 @@ namespace quicktype {
         void set_namespace_namespace(const int64_t & value) { this->namespace_namespace = value; }
     };
 
-    class New {
-        public:
-        New() = default;
-        virtual ~New() = default;
-
-        private:
-        int64_t new_new;
-
-        public:
-        const int64_t & get_new_new() const { return new_new; }
-        int64_t & get_mutable_new_new() { return new_new; }
-        void set_new_new(const int64_t & value) { this->new_new = value; }
-    };
-
-    class Noexcept {
-        public:
-        Noexcept() = default;
-        virtual ~Noexcept() = default;
-
-        private:
-        int64_t noexcept_noexcept;
-
-        public:
-        const int64_t & get_noexcept_noexcept() const { return noexcept_noexcept; }
-        int64_t & get_mutable_noexcept_noexcept() { return noexcept_noexcept; }
-        void set_noexcept_noexcept(const int64_t & value) { this->noexcept_noexcept = value; }
-    };
-
     class Obj3 {
         public:
         Obj3() = default;
@@ -3396,6 +3396,9 @@ namespace quicktype {
 
         private:
         int64_t dummy;
+        Get get;
+        Global global;
+        Go go;
         Guard guard;
         HasOwnProperty has_own_property;
         HashCode hash_code;
@@ -3411,6 +3414,7 @@ namespace quicktype {
         Init init;
         Inout inout;
         Instanceof instanceof;
+        IntNode int_node;
         Interface interface;
         Internal internal;
         Is is;
@@ -3442,14 +3446,12 @@ namespace quicktype {
         List list;
         Locale locale;
         Lock lock;
+        LongNode long_node;
         Map map;
         MapEntry map_entry;
         MetadataPropertyHandling metadata_property_handling;
         Mutating mutating;
-        Native native;
-        Newtonsoft newtonsoft;
-        Nil nil;
-        No no;
+        Goto obj3_goto;
         If obj3_if;
         Import obj3_import;
         Inline obj3_inline;
@@ -3458,14 +3460,24 @@ namespace quicktype {
         Module obj3_module;
         Mutable obj3_mutable;
         Namespace obj3_namespace;
-        New obj3_new;
-        Noexcept obj3_noexcept;
 
         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 Get & get_get() const { return get; }
+        Get & get_mutable_get() { return get; }
+        void set_get(const Get & value) { this->get = value; }
+
+        const Global & get_global() const { return global; }
+        Global & get_mutable_global() { return global; }
+        void set_global(const Global & value) { this->global = value; }
+
+        const Go & get_go() const { return go; }
+        Go & get_mutable_go() { return go; }
+        void set_go(const Go & value) { this->go = value; }
+
         const Guard & get_guard() const { return guard; }
         Guard & get_mutable_guard() { return guard; }
         void set_guard(const Guard & value) { this->guard = value; }
@@ -3526,6 +3538,10 @@ namespace quicktype {
         Instanceof & get_mutable_instanceof() { return instanceof; }
         void set_instanceof(const Instanceof & value) { this->instanceof = value; }
 
+        const IntNode & get_int_node() const { return int_node; }
+        IntNode & get_mutable_int_node() { return int_node; }
+        void set_int_node(const IntNode & value) { this->int_node = value; }
+
         const Interface & get_interface() const { return interface; }
         Interface & get_mutable_interface() { return interface; }
         void set_interface(const Interface & value) { this->interface = value; }
@@ -3650,6 +3666,10 @@ namespace quicktype {
         Lock & get_mutable_lock() { return lock; }
         void set_lock(const Lock & value) { this->lock = value; }
 
+        const LongNode & get_long_node() const { return long_node; }
+        LongNode & get_mutable_long_node() { return long_node; }
+        void set_long_node(const LongNode & value) { this->long_node = value; }
+
         const Map & get_map() const { return map; }
         Map & get_mutable_map() { return map; }
         void set_map(const Map & value) { this->map = value; }
@@ -3666,21 +3686,9 @@ namespace quicktype {
         Mutating & get_mutable_mutating() { return mutating; }
         void set_mutating(const Mutating & value) { this->mutating = value; }
 
-        const Native & get_native() const { return native; }
-        Native & get_mutable_native() { return native; }
-        void set_native(const Native & value) { this->native = value; }
-
-        const Newtonsoft & get_newtonsoft() const { return newtonsoft; }
-        Newtonsoft & get_mutable_newtonsoft() { return newtonsoft; }
-        void set_newtonsoft(const Newtonsoft & value) { this->newtonsoft = value; }
-
-        const Nil & get_nil() const { return nil; }
-        Nil & get_mutable_nil() { return nil; }
-        void set_nil(const Nil & value) { this->nil = value; }
-
-        const No & get_no() const { return no; }
-        No & get_mutable_no() { return no; }
-        void set_no(const No & value) { this->no = value; }
+        const Goto & get_obj3_goto() const { return obj3_goto; }
+        Goto & get_mutable_obj3_goto() { return obj3_goto; }
+        void set_obj3_goto(const Goto & value) { this->obj3_goto = value; }
 
         const If & get_obj3_if() const { return obj3_if; }
         If & get_mutable_obj3_if() { return obj3_if; }
@@ -3713,14 +3721,62 @@ namespace quicktype {
         const Namespace & get_obj3_namespace() const { return obj3_namespace; }
         Namespace & get_mutable_obj3_namespace() { return obj3_namespace; }
         void set_obj3_namespace(const Namespace & value) { this->obj3_namespace = value; }
+    };
+
+    class Native {
+        public:
+        Native() = default;
+        virtual ~Native() = default;
+
+        private:
+        int64_t native;
+
+        public:
+        const int64_t & get_native() const { return native; }
+        int64_t & get_mutable_native() { return native; }
+        void set_native(const int64_t & value) { this->native = value; }
+    };
+
+    class Newtonsoft {
+        public:
+        Newtonsoft() = default;
+        virtual ~Newtonsoft() = default;
+
+        private:
+        int64_t newtonsoft;
+
+        public:
+        const int64_t & get_newtonsoft() const { return newtonsoft; }
+        int64_t & get_mutable_newtonsoft() { return newtonsoft; }
+        void set_newtonsoft(const int64_t & value) { this->newtonsoft = value; }
+    };
+
+    class Nil {
+        public:
+        Nil() = default;
+        virtual ~Nil() = default;
+
+        private:
+        int64_t nil;
+
+        public:
+        const int64_t & get_nil() const { return nil; }
+        int64_t & get_mutable_nil() { return nil; }
+        void set_nil(const int64_t & value) { this->nil = value; }
+    };
+
+    class No {
+        public:
+        No() = default;
+        virtual ~No() = default;
 
-        const New & get_obj3_new() const { return obj3_new; }
-        New & get_mutable_obj3_new() { return obj3_new; }
-        void set_obj3_new(const New & value) { this->obj3_new = value; }
+        private:
+        int64_t no;
 
-        const Noexcept & get_obj3_noexcept() const { return obj3_noexcept; }
-        Noexcept & get_mutable_obj3_noexcept() { return obj3_noexcept; }
-        void set_obj3_noexcept(const Noexcept & value) { this->obj3_noexcept = value; }
+        public:
+        const int64_t & get_no() const { return no; }
+        int64_t & get_mutable_no() { return no; }
+        void set_no(const int64_t & value) { this->no = value; }
     };
 
     class NoSuchMethod {
@@ -3849,6 +3905,20 @@ namespace quicktype {
         void set_null(const int64_t & value) { this->null = value; }
     };
 
+    class NullNode {
+        public:
+        NullNode() = default;
+        virtual ~NullNode() = default;
+
+        private:
+        int64_t null_node;
+
+        public:
+        const int64_t & get_null_node() const { return null_node; }
+        int64_t & get_mutable_null_node() { return null_node; }
+        void set_null_node(const int64_t & value) { this->null_node = value; }
+    };
+
     class Number {
         public:
         Number() = default;
@@ -3863,6 +3933,34 @@ namespace quicktype {
         void set_number(const int64_t & value) { this->number = value; }
     };
 
+    class New {
+        public:
+        New() = default;
+        virtual ~New() = default;
+
+        private:
+        int64_t new_new;
+
+        public:
+        const int64_t & get_new_new() const { return new_new; }
+        int64_t & get_mutable_new_new() { return new_new; }
+        void set_new_new(const int64_t & value) { this->new_new = value; }
+    };
+
+    class Noexcept {
+        public:
+        Noexcept() = default;
+        virtual ~Noexcept() = default;
+
+        private:
+        int64_t noexcept_noexcept;
+
+        public:
+        const int64_t & get_noexcept_noexcept() const { return noexcept_noexcept; }
+        int64_t & get_mutable_noexcept_noexcept() { return noexcept_noexcept; }
+        void set_noexcept_noexcept(const int64_t & value) { this->noexcept_noexcept = value; }
+    };
+
     class NoneClass {
         public:
         NoneClass() = default;
@@ -4087,20 +4185,6 @@ namespace quicktype {
         void set_requires_requires(const int64_t & value) { this->requires_requires = value; }
     };
 
-    class Return {
-        public:
-        Return() = default;
-        virtual ~Return() = default;
-
-        private:
-        int64_t return_return;
-
-        public:
-        const int64_t & get_return_return() const { return return_return; }
-        int64_t & get_mutable_return_return() { return return_return; }
-        void set_return_return(const int64_t & value) { this->return_return = value; }
-    };
-
     class Object {
         public:
         Object() = default;
@@ -4129,6 +4213,20 @@ namespace quicktype {
         void set_object_mapper(const int64_t & value) { this->object_mapper = value; }
     };
 
+    class ObjectNode {
+        public:
+        ObjectNode() = default;
+        virtual ~ObjectNode() = default;
+
+        private:
+        int64_t object_node;
+
+        public:
+        const int64_t & get_object_node() const { return object_node; }
+        int64_t & get_mutable_object_node() { return object_node; }
+        void set_object_node(const int64_t & value) { this->object_node = value; }
+    };
+
     class Of {
         public:
         Of() = default;
@@ -4521,111 +4619,17 @@ namespace quicktype {
         void set_rethrows(const int64_t & value) { this->rethrows = value; }
     };
 
-    class Right {
-        public:
-        Right() = default;
-        virtual ~Right() = default;
-
-        private:
-        int64_t right;
-
-        public:
-        const int64_t & get_right() const { return right; }
-        int64_t & get_mutable_right() { return right; }
-        void set_right(const int64_t & value) { this->right = value; }
-    };
-
-    class RuntimeType {
-        public:
-        RuntimeType() = default;
-        virtual ~RuntimeType() = default;
-
-        private:
-        int64_t runtime_type;
-
-        public:
-        const int64_t & get_runtime_type() const { return runtime_type; }
-        int64_t & get_mutable_runtime_type() { return runtime_type; }
-        void set_runtime_type(const int64_t & value) { this->runtime_type = value; }
-    };
-
-    class S {
+    class Obj4 {
         public:
-        S() = default;
-        virtual ~S() = default;
-
-        private:
-        int64_t s;
-
-        public:
-        const int64_t & get_s() const { return s; }
-        int64_t & get_mutable_s() { return s; }
-        void set_s(const int64_t & value) { this->s = value; }
-    };
-
-    class Sbyte {
-        public:
-        Sbyte() = default;
-        virtual ~Sbyte() = default;
-
-        private:
-        int64_t sbyte;
-
-        public:
-        const int64_t & get_sbyte() const { return sbyte; }
-        int64_t & get_mutable_sbyte() { return sbyte; }
-        void set_sbyte(const int64_t & value) { this->sbyte = value; }
-    };
-
-    class Sealed {
-        public:
-        Sealed() = default;
-        virtual ~Sealed() = default;
-
-        private:
-        int64_t sealed;
-
-        public:
-        const int64_t & get_sealed() const { return sealed; }
-        int64_t & get_mutable_sealed() { return sealed; }
-        void set_sealed(const int64_t & value) { this->sealed = value; }
-    };
-
-    class Sel {
-        public:
-        Sel() = default;
-        virtual ~Sel() = default;
-
-        private:
-        int64_t sel;
-
-        public:
-        const int64_t & get_sel() const { return sel; }
-        int64_t & get_mutable_sel() { return sel; }
-        void set_sel(const int64_t & value) { this->sel = value; }
-    };
-
-    class Select {
-        public:
-        Select() = default;
-        virtual ~Select() = default;
-
-        private:
-        int64_t select;
-
-        public:
-        const int64_t & get_select() const { return select; }
-        int64_t & get_mutable_select() { return select; }
-        void set_select(const int64_t & value) { this->select = value; }
-    };
-
-    class Obj4 {
-        public:
-        Obj4() = default;
-        virtual ~Obj4() = default;
+        Obj4() = default;
+        virtual ~Obj4() = default;
 
         private:
         int64_t dummy;
+        Native native;
+        Newtonsoft newtonsoft;
+        Nil nil;
+        No no;
         NoSuchMethod no_such_method;
         Nonatomic nonatomic;
         None none;
@@ -4635,7 +4639,10 @@ namespace quicktype {
         NsObject ns_object;
         NsString ns_string;
         Null null;
+        NullNode null_node;
         Number number;
+        New obj4_new;
+        Noexcept obj4_noexcept;
         NoneClass obj4_none;
         Not obj4_not;
         NotEq obj4_not_eq;
@@ -4652,9 +4659,9 @@ namespace quicktype {
         Register obj4_register;
         ReinterpretCast obj4_reinterpret_cast;
         Requires obj4_requires;
-        Return obj4_return;
         Object object;
         ObjectMapper object_mapper;
+        ObjectNode object_node;
         Of of;
         Oneway oneway;
         Open open;
@@ -4683,19 +4690,28 @@ namespace quicktype {
         Restrict restrict;
         Retain retain;
         Rethrows rethrows;
-        Right right;
-        RuntimeType runtime_type;
-        S s;
-        Sbyte sbyte;
-        Sealed sealed;
-        Sel sel;
-        Select select;
 
         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 Native & get_native() const { return native; }
+        Native & get_mutable_native() { return native; }
+        void set_native(const Native & value) { this->native = value; }
+
+        const Newtonsoft & get_newtonsoft() const { return newtonsoft; }
+        Newtonsoft & get_mutable_newtonsoft() { return newtonsoft; }
+        void set_newtonsoft(const Newtonsoft & value) { this->newtonsoft = value; }
+
+        const Nil & get_nil() const { return nil; }
+        Nil & get_mutable_nil() { return nil; }
+        void set_nil(const Nil & value) { this->nil = value; }
+
+        const No & get_no() const { return no; }
+        No & get_mutable_no() { return no; }
+        void set_no(const No & value) { this->no = value; }
+
         const NoSuchMethod & get_no_such_method() const { return no_such_method; }
         NoSuchMethod & get_mutable_no_such_method() { return no_such_method; }
         void set_no_such_method(const NoSuchMethod & value) { this->no_such_method = value; }
@@ -4732,10 +4748,22 @@ namespace quicktype {
         Null & get_mutable_null() { return null; }
         void set_null(const Null & value) { this->null = value; }
 
+        const NullNode & get_null_node() const { return null_node; }
+        NullNode & get_mutable_null_node() { return null_node; }
+        void set_null_node(const NullNode & value) { this->null_node = value; }
+
         const Number & get_number() const { return number; }
         Number & get_mutable_number() { return number; }
         void set_number(const Number & value) { this->number = value; }
 
+        const New & get_obj4_new() const { return obj4_new; }
+        New & get_mutable_obj4_new() { return obj4_new; }
+        void set_obj4_new(const New & value) { this->obj4_new = value; }
+
+        const Noexcept & get_obj4_noexcept() const { return obj4_noexcept; }
+        Noexcept & get_mutable_obj4_noexcept() { return obj4_noexcept; }
+        void set_obj4_noexcept(const Noexcept & value) { this->obj4_noexcept = value; }
+
         const NoneClass & get_obj4_none() const { return obj4_none; }
         NoneClass & get_mutable_obj4_none() { return obj4_none; }
         void set_obj4_none(const NoneClass & value) { this->obj4_none = value; }
@@ -4800,10 +4828,6 @@ namespace quicktype {
         Requires & get_mutable_obj4_requires() { return obj4_requires; }
         void set_obj4_requires(const Requires & value) { this->obj4_requires = value; }
 
-        const Return & get_obj4_return() const { return obj4_return; }
-        Return & get_mutable_obj4_return() { return obj4_return; }
-        void set_obj4_return(const Return & value) { this->obj4_return = value; }
-
         const Object & get_object() const { return object; }
         Object & get_mutable_object() { return object; }
         void set_object(const Object & value) { this->object = value; }
@@ -4812,6 +4836,10 @@ namespace quicktype {
         ObjectMapper & get_mutable_object_mapper() { return object_mapper; }
         void set_object_mapper(const ObjectMapper & value) { this->object_mapper = value; }
 
+        const ObjectNode & get_object_node() const { return object_node; }
+        ObjectNode & get_mutable_object_node() { return object_node; }
+        void set_object_node(const ObjectNode & value) { this->object_node = value; }
+
         const Of & get_of() const { return of; }
         Of & get_mutable_of() { return of; }
         void set_of(const Of & value) { this->of = value; }
@@ -4923,34 +4951,20 @@ namespace quicktype {
         const Rethrows & get_rethrows() const { return rethrows; }
         Rethrows & get_mutable_rethrows() { return rethrows; }
         void set_rethrows(const Rethrows & value) { this->rethrows = value; }
+    };
 
-        const Right & get_right() const { return right; }
-        Right & get_mutable_right() { return right; }
-        void set_right(const Right & value) { this->right = value; }
-
-        const RuntimeType & get_runtime_type() const { return runtime_type; }
-        RuntimeType & get_mutable_runtime_type() { return runtime_type; }
-        void set_runtime_type(const RuntimeType & value) { this->runtime_type = value; }
-
-        const S & get_s() const { return s; }
-        S & get_mutable_s() { return s; }
-        void set_s(const S & value) { this->s = value; }
-
-        const Sbyte & get_sbyte() const { return sbyte; }
-        Sbyte & get_mutable_sbyte() { return sbyte; }
-        void set_sbyte(const Sbyte & value) { this->sbyte = value; }
-
-        const Sealed & get_sealed() const { return sealed; }
-        Sealed & get_mutable_sealed() { return sealed; }
-        void set_sealed(const Sealed & value) { this->sealed = value; }
+    class Return {
+        public:
+        Return() = default;
+        virtual ~Return() = default;
 
-        const Sel & get_sel() const { return sel; }
-        Sel & get_mutable_sel() { return sel; }
-        void set_sel(const Sel & value) { this->sel = value; }
+        private:
+        int64_t return_return;
 
-        const Select & get_select() const { return select; }
-        Select & get_mutable_select() { return select; }
-        void set_select(const Select & value) { this->select = value; }
+        public:
+        const int64_t & get_return_return() const { return return_return; }
+        int64_t & get_mutable_return_return() { return return_return; }
+        void set_return_return(const int64_t & value) { this->return_return = value; }
     };
 
     class SelfClass {
@@ -5247,60 +5261,116 @@ namespace quicktype {
         void set_union_union(const int64_t & value) { this->union_union = value; }
     };
 
-    class Unsigned {
+    class TrueClass {
         public:
-        Unsigned() = default;
-        virtual ~Unsigned() = default;
+        TrueClass() = default;
+        virtual ~TrueClass() = default;
 
         private:
-        int64_t unsigned_unsigned;
+        int64_t true_true;
 
         public:
-        const int64_t & get_unsigned_unsigned() const { return unsigned_unsigned; }
-        int64_t & get_mutable_unsigned_unsigned() { return unsigned_unsigned; }
-        void set_unsigned_unsigned(const int64_t & value) { this->unsigned_unsigned = value; }
+        const int64_t & get_true_true() const { return true_true; }
+        int64_t & get_mutable_true_true() { return true_true; }
+        void set_true_true(const int64_t & value) { this->true_true = value; }
     };
 
-    class Using {
+    class Right {
         public:
-        Using() = default;
-        virtual ~Using() = default;
+        Right() = default;
+        virtual ~Right() = default;
 
         private:
-        int64_t using_using;
+        int64_t right;
 
         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 int64_t & get_right() const { return right; }
+        int64_t & get_mutable_right() { return right; }
+        void set_right(const int64_t & value) { this->right = value; }
     };
 
-    class Virtual {
+    class RuntimeType {
         public:
-        Virtual() = default;
-        virtual ~Virtual() = default;
+        RuntimeType() = default;
+        virtual ~RuntimeType() = default;
 
         private:
-        int64_t virtual_virtual;
+        int64_t runtime_type;
 
         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_runtime_type() const { return runtime_type; }
+        int64_t & get_mutable_runtime_type() { return runtime_type; }
+        void set_runtime_type(const int64_t & value) { this->runtime_type = value; }
     };
 
-    class TrueClass {
+    class S {
         public:
-        TrueClass() = default;
-        virtual ~TrueClass() = default;
+        S() = default;
+        virtual ~S() = default;
 
         private:
-        int64_t true_true;
+        int64_t s;
 
         public:
-        const int64_t & get_true_true() const { return true_true; }
-        int64_t & get_mutable_true_true() { return true_true; }
-        void set_true_true(const int64_t & value) { this->true_true = value; }
+        const int64_t & get_s() const { return s; }
+        int64_t & get_mutable_s() { return s; }
+        void set_s(const int64_t & value) { this->s = value; }
+    };
+
+    class Sbyte {
+        public:
+        Sbyte() = default;
+        virtual ~Sbyte() = default;
+
+        private:
+        int64_t sbyte;
+
+        public:
+        const int64_t & get_sbyte() const { return sbyte; }
+        int64_t & get_mutable_sbyte() { return sbyte; }
+        void set_sbyte(const int64_t & value) { this->sbyte = value; }
+    };
+
+    class Sealed {
+        public:
+        Sealed() = default;
+        virtual ~Sealed() = default;
+
+        private:
+        int64_t sealed;
+
+        public:
+        const int64_t & get_sealed() const { return sealed; }
+        int64_t & get_mutable_sealed() { return sealed; }
+        void set_sealed(const int64_t & value) { this->sealed = value; }
+    };
+
+    class Sel {
+        public:
+        Sel() = default;
+        virtual ~Sel() = default;
+
+        private:
+        int64_t sel;
+
+        public:
+        const int64_t & get_sel() const { return sel; }
+        int64_t & get_mutable_sel() { return sel; }
+        void set_sel(const int64_t & value) { this->sel = value; }
+    };
+
+    class Select {
+        public:
+        Select() = default;
+        virtual ~Select() = default;
+
+        private:
+        int64_t select;
+
+        public:
+        const int64_t & get_select() const { return select; }
+        int64_t & get_mutable_select() { return select; }
+        void set_select(const int64_t & value) { this->select = value; }
     };
 
     class Self {
@@ -5331,6 +5401,20 @@ namespace quicktype {
         void set_sendable(const int64_t & value) { this->sendable = value; }
     };
 
+    class SerializationFeature {
+        public:
+        SerializationFeature() = default;
+        virtual ~SerializationFeature() = default;
+
+        private:
+        int64_t serialization_feature;
+
+        public:
+        const int64_t & get_serialization_feature() const { return serialization_feature; }
+        int64_t & get_mutable_serialization_feature() { return serialization_feature; }
+        void set_serialization_feature(const int64_t & value) { this->serialization_feature = value; }
+    };
+
     class Serialize {
         public:
         Serialize() = default;
@@ -5527,16 +5611,30 @@ namespace quicktype {
         void set_system(const int64_t & value) { this->system = value; }
     };
 
-    class Then {
+    class TextNode {
         public:
-        Then() = default;
-        virtual ~Then() = default;
+        TextNode() = default;
+        virtual ~TextNode() = default;
 
         private:
-        int64_t then;
+        int64_t text_node;
 
         public:
-        const int64_t & get_then() const { return then; }
+        const int64_t & get_text_node() const { return text_node; }
+        int64_t & get_mutable_text_node() { return text_node; }
+        void set_text_node(const int64_t & value) { this->text_node = value; }
+    };
+
+    class Then {
+        public:
+        Then() = default;
+        virtual ~Then() = default;
+
+        private:
+        int64_t then;
+
+        public:
+        const int64_t & get_then() const { return then; }
         int64_t & get_mutable_then() { return then; }
         void set_then(const int64_t & value) { this->then = value; }
     };
@@ -5751,104 +5849,6 @@ namespace quicktype {
         void set_undefined(const int64_t & value) { this->undefined = value; }
     };
 
-    class Unowned {
-        public:
-        Unowned() = default;
-        virtual ~Unowned() = default;
-
-        private:
-        int64_t unowned;
-
-        public:
-        const int64_t & get_unowned() const { return unowned; }
-        int64_t & get_mutable_unowned() { return unowned; }
-        void set_unowned(const int64_t & value) { this->unowned = value; }
-    };
-
-    class Unsafe {
-        public:
-        Unsafe() = default;
-        virtual ~Unsafe() = default;
-
-        private:
-        int64_t unsafe;
-
-        public:
-        const int64_t & get_unsafe() const { return unsafe; }
-        int64_t & get_mutable_unsafe() { return unsafe; }
-        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 {
-        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 Obj5 {
         public:
         Obj5() = default;
@@ -5856,6 +5856,7 @@ namespace quicktype {
 
         private:
         int64_t dummy;
+        Return obj5_return;
         SelfClass obj5_self;
         Short obj5_short;
         Signed obj5_signed;
@@ -5877,12 +5878,17 @@ namespace quicktype {
         Typeid obj5_typeid;
         Typename obj5_typename;
         Union obj5_union;
-        Unsigned obj5_unsigned;
-        Using obj5_using;
-        Virtual obj5_virtual;
         TrueClass purple_true;
+        Right right;
+        RuntimeType runtime_type;
+        S s;
+        Sbyte sbyte;
+        Sealed sealed;
+        Sel sel;
+        Select select;
         Self self;
         Sendable sendable;
+        SerializationFeature serialization_feature;
         Serialize serialize;
         SerializerProvider serializer_provider;
         Set set;
@@ -5897,6 +5903,7 @@ namespace quicktype {
         Super super;
         Symbol symbol;
         System system;
+        TextNode text_node;
         Then then;
         Throws throws;
         TimeOnly time_only;
@@ -5913,19 +5920,16 @@ namespace quicktype {
         Ulong ulong;
         Unchecked unchecked;
         Undefined undefined;
-        Unowned unowned;
-        Unsafe unsafe;
-        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 Return & get_obj5_return() const { return obj5_return; }
+        Return & get_mutable_obj5_return() { return obj5_return; }
+        void set_obj5_return(const Return & value) { this->obj5_return = 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; }
@@ -6010,22 +6014,38 @@ namespace quicktype {
         Union & get_mutable_obj5_union() { return obj5_union; }
         void set_obj5_union(const Union & value) { this->obj5_union = value; }
 
-        const Unsigned & get_obj5_unsigned() const { return obj5_unsigned; }
-        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 TrueClass & get_purple_true() const { return purple_true; }
         TrueClass & get_mutable_purple_true() { return purple_true; }
         void set_purple_true(const TrueClass & value) { this->purple_true = value; }
 
+        const Right & get_right() const { return right; }
+        Right & get_mutable_right() { return right; }
+        void set_right(const Right & value) { this->right = value; }
+
+        const RuntimeType & get_runtime_type() const { return runtime_type; }
+        RuntimeType & get_mutable_runtime_type() { return runtime_type; }
+        void set_runtime_type(const RuntimeType & value) { this->runtime_type = value; }
+
+        const S & get_s() const { return s; }
+        S & get_mutable_s() { return s; }
+        void set_s(const S & value) { this->s = value; }
+
+        const Sbyte & get_sbyte() const { return sbyte; }
+        Sbyte & get_mutable_sbyte() { return sbyte; }
+        void set_sbyte(const Sbyte & value) { this->sbyte = value; }
+
+        const Sealed & get_sealed() const { return sealed; }
+        Sealed & get_mutable_sealed() { return sealed; }
+        void set_sealed(const Sealed & value) { this->sealed = value; }
+
+        const Sel & get_sel() const { return sel; }
+        Sel & get_mutable_sel() { return sel; }
+        void set_sel(const Sel & value) { this->sel = value; }
+
+        const Select & get_select() const { return select; }
+        Select & get_mutable_select() { return select; }
+        void set_select(const Select & value) { this->select = value; }
+
         const Self & get_self() const { return self; }
         Self & get_mutable_self() { return self; }
         void set_self(const Self & value) { this->self = value; }
@@ -6034,6 +6054,10 @@ namespace quicktype {
         Sendable & get_mutable_sendable() { return sendable; }
         void set_sendable(const Sendable & value) { this->sendable = value; }
 
+        const SerializationFeature & get_serialization_feature() const { return serialization_feature; }
+        SerializationFeature & get_mutable_serialization_feature() { return serialization_feature; }
+        void set_serialization_feature(const SerializationFeature & value) { this->serialization_feature = value; }
+
         const Serialize & get_serialize() const { return serialize; }
         Serialize & get_mutable_serialize() { return serialize; }
         void set_serialize(const Serialize & value) { this->serialize = value; }
@@ -6090,6 +6114,10 @@ namespace quicktype {
         System & get_mutable_system() { return system; }
         void set_system(const System & value) { this->system = value; }
 
+        const TextNode & get_text_node() const { return text_node; }
+        TextNode & get_mutable_text_node() { return text_node; }
+        void set_text_node(const TextNode & value) { this->text_node = value; }
+
         const Then & get_then() const { return then; }
         Then & get_mutable_then() { return then; }
         void set_then(const Then & value) { this->then = value; }
@@ -6153,34 +6181,48 @@ namespace quicktype {
         const Undefined & get_undefined() const { return undefined; }
         Undefined & get_mutable_undefined() { return undefined; }
         void set_undefined(const Undefined & value) { this->undefined = value; }
+    };
 
-        const Unowned & get_unowned() const { return unowned; }
-        Unowned & get_mutable_unowned() { return unowned; }
-        void set_unowned(const Unowned & value) { this->unowned = value; }
+    class Unsigned {
+        public:
+        Unsigned() = default;
+        virtual ~Unsigned() = default;
 
-        const Unsafe & get_unsafe() const { return unsafe; }
-        Unsafe & get_mutable_unsafe() { return unsafe; }
-        void set_unsafe(const Unsafe & value) { this->unsafe = value; }
+        private:
+        int64_t unsigned_unsigned;
 
-        const Ushort & get_ushort() const { return ushort; }
-        Ushort & get_mutable_ushort() { return ushort; }
-        void set_ushort(const Ushort & value) { this->ushort = value; }
+        public:
+        const int64_t & get_unsigned_unsigned() const { return unsigned_unsigned; }
+        int64_t & get_mutable_unsigned_unsigned() { return unsigned_unsigned; }
+        void set_unsigned_unsigned(const int64_t & value) { this->unsigned_unsigned = 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 +6309,104 @@ namespace quicktype {
         void set_xor_eq_xor_eq(const int64_t & value) { this->xor_eq_xor_eq = value; }
     };
 
+    class Unowned {
+        public:
+        Unowned() = default;
+        virtual ~Unowned() = default;
+
+        private:
+        int64_t unowned;
+
+        public:
+        const int64_t & get_unowned() const { return unowned; }
+        int64_t & get_mutable_unowned() { return unowned; }
+        void set_unowned(const int64_t & value) { this->unowned = value; }
+    };
+
+    class Unsafe {
+        public:
+        Unsafe() = default;
+        virtual ~Unsafe() = default;
+
+        private:
+        int64_t unsafe;
+
+        public:
+        const int64_t & get_unsafe() const { return unsafe; }
+        int64_t & get_mutable_unsafe() { return unsafe; }
+        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 {
+        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 +6498,22 @@ namespace quicktype {
 
         private:
         int64_t dummy;
+        Unsigned obj6_unsigned;
+        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;
+        Unowned unowned;
+        Unsafe unsafe;
+        Ushort ushort;
+        Utf8JsonReader utf8_json_reader;
+        Utf8JsonWriter utf8_json_writer;
+        Uuid uuid;
+        Var var;
         Weak weak;
         Where where;
         WillSet will_set;
@@ -6376,6 +6526,18 @@ namespace quicktype {
         int64_t & get_mutable_dummy() { return dummy; }
         void set_dummy(const int64_t & value) { this->dummy = value; }
 
+        const Unsigned & get_obj6_unsigned() const { return obj6_unsigned; }
+        Unsigned & get_mutable_obj6_unsigned() { return obj6_unsigned; }
+        void set_obj6_unsigned(const Unsigned & value) { this->obj6_unsigned = 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 +6562,34 @@ 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 Unowned & get_unowned() const { return unowned; }
+        Unowned & get_mutable_unowned() { return unowned; }
+        void set_unowned(const Unowned & value) { this->unowned = value; }
+
+        const Unsafe & get_unsafe() const { return unsafe; }
+        Unsafe & get_mutable_unsafe() { return unsafe; }
+        void set_unsafe(const Unsafe & value) { this->unsafe = 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; }
+
+        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; }
@@ -6480,6 +6670,9 @@ namespace quicktype {
     void from_json(const json & j, Array & x);
     void to_json(json & j, const Array & x);
 
+    void from_json(const json & j, ArrayNode & x);
+    void to_json(json & j, const ArrayNode & x);
+
     void from_json(const json & j, As & x);
     void to_json(json & j, const As & x);
 
@@ -6507,6 +6700,9 @@ namespace quicktype {
     void from_json(const json & j, Boolean & x);
     void to_json(json & j, const Boolean & x);
 
+    void from_json(const json & j, BooleanNode & x);
+    void to_json(json & j, const BooleanNode & x);
+
     void from_json(const json & j, Bycopy & x);
     void to_json(json & j, const Bycopy & x);
 
@@ -6555,12 +6751,6 @@ namespace quicktype {
     void from_json(const json & j, Converter & x);
     void to_json(json & j, const Converter & x);
 
-    void from_json(const json & j, CultureInfo & x);
-    void to_json(json & j, const CultureInfo & x);
-
-    void from_json(const json & j, Date & x);
-    void to_json(json & j, const Date & x);
-
     void from_json(const json & j, Empty & x);
     void to_json(json & j, const Empty & x);
 
@@ -6666,6 +6856,12 @@ namespace quicktype {
     void from_json(const json & j, Obj1 & x);
     void to_json(json & j, const Obj1 & x);
 
+    void from_json(const json & j, CultureInfo & x);
+    void to_json(json & j, const CultureInfo & x);
+
+    void from_json(const json & j, Date & x);
+    void to_json(json & j, const Date & x);
+
     void from_json(const json & j, DateFormatter & x);
     void to_json(json & j, const DateFormatter & x);
 
@@ -6717,6 +6913,9 @@ namespace quicktype {
     void from_json(const json & j, Delegate & x);
     void to_json(json & j, const Delegate & x);
 
+    void from_json(const json & j, DeserializationFeature & x);
+    void to_json(json & j, const DeserializationFeature & x);
+
     void from_json(const json & j, Dict & x);
     void to_json(json & j, const Dict & x);
 
@@ -6726,6 +6925,9 @@ namespace quicktype {
     void from_json(const json & j, DidSet & x);
     void to_json(json & j, const DidSet & x);
 
+    void from_json(const json & j, DoubleNode & x);
+    void to_json(json & j, const DoubleNode & x);
+
     void from_json(const json & j, Dynamic & x);
     void to_json(json & j, const Dynamic & x);
 
@@ -6795,15 +6997,6 @@ namespace quicktype {
     void from_json(const json & j, Function & x);
     void to_json(json & j, const Function & x);
 
-    void from_json(const json & j, Get & x);
-    void to_json(json & j, const Get & x);
-
-    void from_json(const json & j, Global & x);
-    void to_json(json & j, const Global & x);
-
-    void from_json(const json & j, Go & x);
-    void to_json(json & j, const Go & x);
-
     void from_json(const json & j, Decltype & x);
     void to_json(json & j, const Decltype & x);
 
@@ -6852,15 +7045,21 @@ namespace quicktype {
     void from_json(const json & j, Friend & x);
     void to_json(json & j, const Friend & x);
 
-    void from_json(const json & j, Goto & x);
-    void to_json(json & j, const Goto & x);
-
     void from_json(const json & j, FalseClass & x);
     void to_json(json & j, const FalseClass & x);
 
     void from_json(const json & j, Obj2 & x);
     void to_json(json & j, const Obj2 & x);
 
+    void from_json(const json & j, Get & x);
+    void to_json(json & j, const Get & x);
+
+    void from_json(const json & j, Global & x);
+    void to_json(json & j, const Global & x);
+
+    void from_json(const json & j, Go & x);
+    void to_json(json & j, const Go & x);
+
     void from_json(const json & j, Guard & x);
     void to_json(json & j, const Guard & x);
 
@@ -6906,6 +7105,9 @@ namespace quicktype {
     void from_json(const json & j, Instanceof & x);
     void to_json(json & j, const Instanceof & x);
 
+    void from_json(const json & j, IntNode & x);
+    void to_json(json & j, const IntNode & x);
+
     void from_json(const json & j, Interface & x);
     void to_json(json & j, const Interface & x);
 
@@ -6999,6 +7201,9 @@ namespace quicktype {
     void from_json(const json & j, Lock & x);
     void to_json(json & j, const Lock & x);
 
+    void from_json(const json & j, LongNode & x);
+    void to_json(json & j, const LongNode & x);
+
     void from_json(const json & j, Map & x);
     void to_json(json & j, const Map & x);
 
@@ -7011,17 +7216,8 @@ namespace quicktype {
     void from_json(const json & j, Mutating & x);
     void to_json(json & j, const Mutating & x);
 
-    void from_json(const json & j, Native & x);
-    void to_json(json & j, const Native & x);
-
-    void from_json(const json & j, Newtonsoft & x);
-    void to_json(json & j, const Newtonsoft & x);
-
-    void from_json(const json & j, Nil & x);
-    void to_json(json & j, const Nil & x);
-
-    void from_json(const json & j, No & x);
-    void to_json(json & j, const No & x);
+    void from_json(const json & j, Goto & x);
+    void to_json(json & j, const Goto & x);
 
     void from_json(const json & j, If & x);
     void to_json(json & j, const If & x);
@@ -7047,15 +7243,21 @@ namespace quicktype {
     void from_json(const json & j, Namespace & x);
     void to_json(json & j, const Namespace & x);
 
-    void from_json(const json & j, New & x);
-    void to_json(json & j, const New & x);
-
-    void from_json(const json & j, Noexcept & x);
-    void to_json(json & j, const Noexcept & x);
-
     void from_json(const json & j, Obj3 & x);
     void to_json(json & j, const Obj3 & x);
 
+    void from_json(const json & j, Native & x);
+    void to_json(json & j, const Native & x);
+
+    void from_json(const json & j, Newtonsoft & x);
+    void to_json(json & j, const Newtonsoft & x);
+
+    void from_json(const json & j, Nil & x);
+    void to_json(json & j, const Nil & x);
+
+    void from_json(const json & j, No & x);
+    void to_json(json & j, const No & x);
+
     void from_json(const json & j, NoSuchMethod & x);
     void to_json(json & j, const NoSuchMethod & x);
 
@@ -7083,9 +7285,18 @@ namespace quicktype {
     void from_json(const json & j, Null & x);
     void to_json(json & j, const Null & x);
 
+    void from_json(const json & j, NullNode & x);
+    void to_json(json & j, const NullNode & x);
+
     void from_json(const json & j, Number & x);
     void to_json(json & j, const Number & x);
 
+    void from_json(const json & j, New & x);
+    void to_json(json & j, const New & x);
+
+    void from_json(const json & j, Noexcept & x);
+    void to_json(json & j, const Noexcept & x);
+
     void from_json(const json & j, NoneClass & x);
     void to_json(json & j, const NoneClass & x);
 
@@ -7134,15 +7345,15 @@ namespace quicktype {
     void from_json(const json & j, Requires & x);
     void to_json(json & j, const Requires & x);
 
-    void from_json(const json & j, Return & x);
-    void to_json(json & j, const Return & x);
-
     void from_json(const json & j, Object & x);
     void to_json(json & j, const Object & x);
 
     void from_json(const json & j, ObjectMapper & x);
     void to_json(json & j, const ObjectMapper & x);
 
+    void from_json(const json & j, ObjectNode & x);
+    void to_json(json & j, const ObjectNode & x);
+
     void from_json(const json & j, Of & x);
     void to_json(json & j, const Of & x);
 
@@ -7227,30 +7438,12 @@ namespace quicktype {
     void from_json(const json & j, Rethrows & x);
     void to_json(json & j, const Rethrows & x);
 
-    void from_json(const json & j, Right & x);
-    void to_json(json & j, const Right & x);
-
-    void from_json(const json & j, RuntimeType & x);
-    void to_json(json & j, const RuntimeType & x);
-
-    void from_json(const json & j, S & x);
-    void to_json(json & j, const S & x);
-
-    void from_json(const json & j, Sbyte & x);
-    void to_json(json & j, const Sbyte & x);
-
-    void from_json(const json & j, Sealed & x);
-    void to_json(json & j, const Sealed & x);
-
-    void from_json(const json & j, Sel & x);
-    void to_json(json & j, const Sel & x);
-
-    void from_json(const json & j, Select & x);
-    void to_json(json & j, const Select & x);
-
     void from_json(const json & j, Obj4 & x);
     void to_json(json & j, const Obj4 & x);
 
+    void from_json(const json & j, Return & x);
+    void to_json(json & j, const Return & x);
+
     void from_json(const json & j, SelfClass & x);
     void to_json(json & j, const SelfClass & x);
 
@@ -7314,17 +7507,29 @@ namespace quicktype {
     void from_json(const json & j, Union & x);
     void to_json(json & j, const Union & x);
 
-    void from_json(const json & j, Unsigned & x);
-    void to_json(json & j, const Unsigned & x);
+    void from_json(const json & j, TrueClass & x);
+    void to_json(json & j, const TrueClass & x);
 
-    void from_json(const json & j, Using & x);
-    void to_json(json & j, const Using & x);
+    void from_json(const json & j, Right & x);
+    void to_json(json & j, const Right & x);
 
-    void from_json(const json & j, Virtual & x);
-    void to_json(json & j, const Virtual & x);
+    void from_json(const json & j, RuntimeType & x);
+    void to_json(json & j, const RuntimeType & x);
 
-    void from_json(const json & j, TrueClass & x);
-    void to_json(json & j, const TrueClass & x);
+    void from_json(const json & j, S & x);
+    void to_json(json & j, const S & x);
+
+    void from_json(const json & j, Sbyte & x);
+    void to_json(json & j, const Sbyte & x);
+
+    void from_json(const json & j, Sealed & x);
+    void to_json(json & j, const Sealed & x);
+
+    void from_json(const json & j, Sel & x);
+    void to_json(json & j, const Sel & x);
+
+    void from_json(const json & j, Select & x);
+    void to_json(json & j, const Select & x);
 
     void from_json(const json & j, Self & x);
     void to_json(json & j, const Self & x);
@@ -7332,6 +7537,9 @@ namespace quicktype {
     void from_json(const json & j, Sendable & x);
     void to_json(json & j, const Sendable & x);
 
+    void from_json(const json & j, SerializationFeature & x);
+    void to_json(json & j, const SerializationFeature & x);
+
     void from_json(const json & j, Serialize & x);
     void to_json(json & j, const Serialize & x);
 
@@ -7374,6 +7582,9 @@ namespace quicktype {
     void from_json(const json & j, System & x);
     void to_json(json & j, const System & x);
 
+    void from_json(const json & j, TextNode & x);
+    void to_json(json & j, const TextNode & x);
+
     void from_json(const json & j, Then & x);
     void to_json(json & j, const Then & x);
 
@@ -7422,29 +7633,17 @@ namespace quicktype {
     void from_json(const json & j, Undefined & x);
     void to_json(json & j, const Undefined & x);
 
-    void from_json(const json & j, Unowned & x);
-    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, 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, Obj5 & x);
+    void to_json(json & j, const Obj5 & x);
 
-    void from_json(const json & j, Uuid & x);
-    void to_json(json & j, const Uuid & x);
+    void from_json(const json & j, Unsigned & x);
+    void to_json(json & j, const Unsigned & x);
 
-    void from_json(const json & j, Var & x);
-    void to_json(json & j, const Var & x);
+    void from_json(const json & j, Using & x);
+    void to_json(json & j, const Using & x);
 
-    void from_json(const json & j, Obj5 & x);
-    void to_json(json & j, const Obj5 & 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 +7663,27 @@ namespace quicktype {
     void from_json(const json & j, XorEq & x);
     void to_json(json & j, const XorEq & x);
 
+    void from_json(const json & j, Unowned & x);
+    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, 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, Weak & x);
     void to_json(json & j, const Weak & x);
 
@@ -7524,6 +7744,17 @@ namespace quicktype {
         j["array"] = x.get_array();
     }
 
+    inline void from_json(const json & j, ArrayNode& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("ArrayNode") != j.end() && !j.at("ArrayNode").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_array_node(j.at("ArrayNode").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const ArrayNode & x) {
+        j = json::object();
+        j["ArrayNode"] = x.get_array_node();
+    }
+
     inline void from_json(const json & j, As& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("as") != j.end() && !j.at("as").is_number_integer()) throw std::runtime_error("Expected integer");
@@ -7623,6 +7854,17 @@ namespace quicktype {
         j["boolean"] = x.get_boolean();
     }
 
+    inline void from_json(const json & j, BooleanNode& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("BooleanNode") != j.end() && !j.at("BooleanNode").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_boolean_node(j.at("BooleanNode").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const BooleanNode & x) {
+        j = json::object();
+        j["BooleanNode"] = x.get_boolean_node();
+    }
+
     inline void from_json(const json & j, Bycopy& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("bycopy") != j.end() && !j.at("bycopy").is_number_integer()) throw std::runtime_error("Expected integer");
@@ -7777,48 +8019,26 @@ namespace quicktype {
         j["convenience"] = x.get_convenience();
     }
 
-    inline void from_json(const json & j, Convert& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("convert") != j.end() && !j.at("convert").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_convert(j.at("convert").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const Convert & x) {
-        j = json::object();
-        j["convert"] = x.get_convert();
-    }
-
-    inline void from_json(const json & j, Converter& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("converter") != j.end() && !j.at("converter").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_converter(j.at("converter").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const Converter & x) {
-        j = json::object();
-        j["converter"] = x.get_converter();
-    }
-
-    inline void from_json(const json & j, CultureInfo& x) {
+    inline void from_json(const json & j, Convert& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("CultureInfo") != j.end() && !j.at("CultureInfo").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_culture_info(j.at("CultureInfo").get<int64_t>());
+        if (j.find("convert") != j.end() && !j.at("convert").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_convert(j.at("convert").get<int64_t>());
     }
 
-    inline void to_json(json & j, const CultureInfo & x) {
+    inline void to_json(json & j, const Convert & x) {
         j = json::object();
-        j["CultureInfo"] = x.get_culture_info();
+        j["convert"] = x.get_convert();
     }
 
-    inline void from_json(const json & j, Date& x) {
+    inline void from_json(const json & j, Converter& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("date") != j.end() && !j.at("date").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_date(j.at("date").get<int64_t>());
+        if (j.find("converter") != j.end() && !j.at("converter").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_converter(j.at("converter").get<int64_t>());
     }
 
-    inline void to_json(json & j, const Date & x) {
+    inline void to_json(json & j, const Converter & x) {
         j = json::object();
-        j["date"] = x.get_date();
+        j["converter"] = x.get_converter();
     }
 
     inline void from_json(const json & j, Empty& x) {
@@ -8200,6 +8420,7 @@ namespace quicktype {
         x.set_abstract(j.at("abstract").get<Abstract>());
         x.set_any(j.at("Any").get<Any>());
         x.set_array(j.at("array").get<Array>());
+        x.set_array_node(j.at("ArrayNode").get<ArrayNode>());
         x.set_as(j.at("as").get<As>());
         x.set_assert(j.at("assert").get<Assert>());
         x.set_associatedtype(j.at("associatedtype").get<Associatedtype>());
@@ -8209,6 +8430,7 @@ namespace quicktype {
         x.set_await(j.at("await").get<Await>());
         x.set_base(j.at("base").get<Base>());
         x.set_boolean(j.at("boolean").get<Boolean>());
+        x.set_boolean_node(j.at("BooleanNode").get<BooleanNode>());
         x.set_bycopy(j.at("bycopy").get<Bycopy>());
         x.set_byref(j.at("byref").get<Byref>());
         x.set_byte(j.at("byte").get<Byte>());
@@ -8225,8 +8447,6 @@ namespace quicktype {
         x.set_convenience(j.at("convenience").get<Convenience>());
         x.set_convert(j.at("convert").get<Convert>());
         x.set_converter(j.at("converter").get<Converter>());
-        x.set_culture_info(j.at("CultureInfo").get<CultureInfo>());
-        x.set_date(j.at("date").get<Date>());
         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_empty(j.at("_").get<Empty>());
@@ -8270,6 +8490,7 @@ namespace quicktype {
         j["abstract"] = x.get_abstract();
         j["Any"] = x.get_any();
         j["array"] = x.get_array();
+        j["ArrayNode"] = x.get_array_node();
         j["as"] = x.get_as();
         j["assert"] = x.get_assert();
         j["associatedtype"] = x.get_associatedtype();
@@ -8279,6 +8500,7 @@ namespace quicktype {
         j["await"] = x.get_await();
         j["base"] = x.get_base();
         j["boolean"] = x.get_boolean();
+        j["BooleanNode"] = x.get_boolean_node();
         j["bycopy"] = x.get_bycopy();
         j["byref"] = x.get_byref();
         j["byte"] = x.get_byte();
@@ -8295,8 +8517,6 @@ namespace quicktype {
         j["convenience"] = x.get_convenience();
         j["convert"] = x.get_convert();
         j["converter"] = x.get_converter();
-        j["CultureInfo"] = x.get_culture_info();
-        j["date"] = x.get_date();
         j["dummy"] = x.get_dummy();
         j["_"] = x.get_empty();
         j["bool"] = x.get_fluffy_bool();
@@ -8334,6 +8554,28 @@ namespace quicktype {
         j["class"] = x.get_purple_class();
     }
 
+    inline void from_json(const json & j, CultureInfo& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("CultureInfo") != j.end() && !j.at("CultureInfo").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_culture_info(j.at("CultureInfo").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const CultureInfo & x) {
+        j = json::object();
+        j["CultureInfo"] = x.get_culture_info();
+    }
+
+    inline void from_json(const json & j, Date& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("date") != j.end() && !j.at("date").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_date(j.at("date").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const Date & x) {
+        j = json::object();
+        j["date"] = x.get_date();
+    }
+
     inline void from_json(const json & j, DateFormatter& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("DateFormatter") != j.end() && !j.at("DateFormatter").is_number_integer()) throw std::runtime_error("Expected integer");
@@ -8521,6 +8763,17 @@ namespace quicktype {
         j["delegate"] = x.get_delegate();
     }
 
+    inline void from_json(const json & j, DeserializationFeature& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("DeserializationFeature") != j.end() && !j.at("DeserializationFeature").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_deserialization_feature(j.at("DeserializationFeature").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const DeserializationFeature & x) {
+        j = json::object();
+        j["DeserializationFeature"] = x.get_deserialization_feature();
+    }
+
     inline void from_json(const json & j, Dict& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("dict") != j.end() && !j.at("dict").is_number_integer()) throw std::runtime_error("Expected integer");
@@ -8554,6 +8807,17 @@ namespace quicktype {
         j["didSet"] = x.get_did_set();
     }
 
+    inline void from_json(const json & j, DoubleNode& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("DoubleNode") != j.end() && !j.at("DoubleNode").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_double_node(j.at("DoubleNode").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const DoubleNode & x) {
+        j = json::object();
+        j["DoubleNode"] = x.get_double_node();
+    }
+
     inline void from_json(const json & j, Dynamic& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("dynamic") != j.end() && !j.at("dynamic").is_number_integer()) throw std::runtime_error("Expected integer");
@@ -8806,39 +9070,6 @@ namespace quicktype {
         j["function"] = x.get_function();
     }
 
-    inline void from_json(const json & j, Get& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("get") != j.end() && !j.at("get").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_get(j.at("get").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const Get & x) {
-        j = json::object();
-        j["get"] = x.get_get();
-    }
-
-    inline void from_json(const json & j, Global& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("global") != j.end() && !j.at("global").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_global(j.at("global").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const Global & x) {
-        j = json::object();
-        j["global"] = x.get_global();
-    }
-
-    inline void from_json(const json & j, Go& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("go") != j.end() && !j.at("go").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_go(j.at("go").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const Go & x) {
-        j = json::object();
-        j["go"] = x.get_go();
-    }
-
     inline void from_json(const json & j, Decltype& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("decltype") != j.end() && !j.at("decltype").is_number_integer()) throw std::runtime_error("Expected integer");
@@ -9015,17 +9246,6 @@ namespace quicktype {
         j["friend"] = x.get_friend_friend();
     }
 
-    inline void from_json(const json & j, Goto& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("goto") != j.end() && !j.at("goto").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_goto_goto(j.at("goto").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const Goto & x) {
-        j = json::object();
-        j["goto"] = x.get_goto_goto();
-    }
-
     inline void from_json(const json & j, FalseClass& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("false") != j.end() && !j.at("false").is_number_integer()) throw std::runtime_error("Expected integer");
@@ -9039,6 +9259,8 @@ namespace quicktype {
 
     inline void from_json(const json & j, Obj2& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
+        x.set_culture_info(j.at("CultureInfo").get<CultureInfo>());
+        x.set_date(j.at("date").get<Date>());
         x.set_date_formatter(j.at("DateFormatter").get<DateFormatter>());
         x.set_date_only(j.at("DateOnly").get<DateOnly>());
         x.set_date_only_converter(j.at("DateOnlyConverter").get<DateOnlyConverter>());
@@ -9056,9 +9278,11 @@ namespace quicktype {
         x.set_deinit(j.at("deinit").get<Deinit>());
         x.set_del(j.at("del").get<Del>());
         x.set_delegate(j.at("delegate").get<Delegate>());
+        x.set_deserialization_feature(j.at("DeserializationFeature").get<DeserializationFeature>());
         x.set_dict(j.at("dict").get<Dict>());
         x.set_dictionary(j.at("dictionary").get<Dictionary>());
         x.set_did_set(j.at("didSet").get<DidSet>());
+        x.set_double_node(j.at("DoubleNode").get<DoubleNode>());
         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_dynamic(j.at("dynamic").get<Dynamic>());
@@ -9084,9 +9308,6 @@ namespace quicktype {
         x.set_from_json(j.at("from_json").get<FromJson>());
         x.set_func(j.at("func").get<Func>());
         x.set_function(j.at("function").get<Function>());
-        x.set_get(j.at("get").get<Get>());
-        x.set_global(j.at("global").get<Global>());
-        x.set_go(j.at("go").get<Go>());
         x.set_obj2_decltype(j.at("decltype").get<Decltype>());
         x.set_obj2_default(j.at("default").get<Default>());
         x.set_obj2_delete(j.at("delete").get<Delete>());
@@ -9103,12 +9324,13 @@ namespace quicktype {
         x.set_obj2_float(j.at("float").get<Float>());
         x.set_obj2_for(j.at("for").get<For>());
         x.set_obj2_friend(j.at("friend").get<Friend>());
-        x.set_obj2_goto(j.at("goto").get<Goto>());
         x.set_purple_false(j.at("false").get<FalseClass>());
     }
 
     inline void to_json(json & j, const Obj2 & x) {
         j = json::object();
+        j["CultureInfo"] = x.get_culture_info();
+        j["date"] = x.get_date();
         j["DateFormatter"] = x.get_date_formatter();
         j["DateOnly"] = x.get_date_only();
         j["DateOnlyConverter"] = x.get_date_only_converter();
@@ -9126,9 +9348,11 @@ namespace quicktype {
         j["deinit"] = x.get_deinit();
         j["del"] = x.get_del();
         j["delegate"] = x.get_delegate();
+        j["DeserializationFeature"] = x.get_deserialization_feature();
         j["dict"] = x.get_dict();
         j["dictionary"] = x.get_dictionary();
         j["didSet"] = x.get_did_set();
+        j["DoubleNode"] = x.get_double_node();
         j["dummy"] = x.get_dummy();
         j["dynamic"] = x.get_dynamic();
         j["elif"] = x.get_elif();
@@ -9153,9 +9377,6 @@ namespace quicktype {
         j["from_json"] = x.get_from_json();
         j["func"] = x.get_func();
         j["function"] = x.get_function();
-        j["get"] = x.get_get();
-        j["global"] = x.get_global();
-        j["go"] = x.get_go();
         j["decltype"] = x.get_obj2_decltype();
         j["default"] = x.get_obj2_default();
         j["delete"] = x.get_obj2_delete();
@@ -9172,10 +9393,42 @@ namespace quicktype {
         j["float"] = x.get_obj2_float();
         j["for"] = x.get_obj2_for();
         j["friend"] = x.get_obj2_friend();
-        j["goto"] = x.get_obj2_goto();
         j["false"] = x.get_purple_false();
     }
 
+    inline void from_json(const json & j, Get& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("get") != j.end() && !j.at("get").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_get(j.at("get").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const Get & x) {
+        j = json::object();
+        j["get"] = x.get_get();
+    }
+
+    inline void from_json(const json & j, Global& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("global") != j.end() && !j.at("global").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_global(j.at("global").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const Global & x) {
+        j = json::object();
+        j["global"] = x.get_global();
+    }
+
+    inline void from_json(const json & j, Go& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("go") != j.end() && !j.at("go").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_go(j.at("go").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const Go & x) {
+        j = json::object();
+        j["go"] = x.get_go();
+    }
+
     inline void from_json(const json & j, Guard& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("guard") != j.end() && !j.at("guard").is_number_integer()) throw std::runtime_error("Expected integer");
@@ -9341,6 +9594,17 @@ namespace quicktype {
         j["instanceof"] = x.get_instanceof();
     }
 
+    inline void from_json(const json & j, IntNode& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("IntNode") != j.end() && !j.at("IntNode").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_int_node(j.at("IntNode").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const IntNode & x) {
+        j = json::object();
+        j["IntNode"] = x.get_int_node();
+    }
+
     inline void from_json(const json & j, Interface& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("interface") != j.end() && !j.at("interface").is_number_integer()) throw std::runtime_error("Expected integer");
@@ -9681,6 +9945,17 @@ namespace quicktype {
         j["lock"] = x.get_lock();
     }
 
+    inline void from_json(const json & j, LongNode& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("LongNode") != j.end() && !j.at("LongNode").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_long_node(j.at("LongNode").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const LongNode & x) {
+        j = json::object();
+        j["LongNode"] = x.get_long_node();
+    }
+
     inline void from_json(const json & j, Map& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("map") != j.end() && !j.at("map").is_number_integer()) throw std::runtime_error("Expected integer");
@@ -9725,48 +10000,15 @@ namespace quicktype {
         j["mutating"] = x.get_mutating();
     }
 
-    inline void from_json(const json & j, Native& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("native") != j.end() && !j.at("native").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_native(j.at("native").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const Native & x) {
-        j = json::object();
-        j["native"] = x.get_native();
-    }
-
-    inline void from_json(const json & j, Newtonsoft& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("newtonsoft") != j.end() && !j.at("newtonsoft").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_newtonsoft(j.at("newtonsoft").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const Newtonsoft & x) {
-        j = json::object();
-        j["newtonsoft"] = x.get_newtonsoft();
-    }
-
-    inline void from_json(const json & j, Nil& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("nil") != j.end() && !j.at("nil").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_nil(j.at("nil").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const Nil & x) {
-        j = json::object();
-        j["nil"] = x.get_nil();
-    }
-
-    inline void from_json(const json & j, No& x) {
+    inline void from_json(const json & j, Goto& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("NO") != j.end() && !j.at("NO").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_no(j.at("NO").get<int64_t>());
+        if (j.find("goto") != j.end() && !j.at("goto").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_goto_goto(j.at("goto").get<int64_t>());
     }
 
-    inline void to_json(json & j, const No & x) {
+    inline void to_json(json & j, const Goto & x) {
         j = json::object();
-        j["NO"] = x.get_no();
+        j["goto"] = x.get_goto_goto();
     }
 
     inline void from_json(const json & j, If& x) {
@@ -9857,32 +10099,13 @@ namespace quicktype {
         j["namespace"] = x.get_namespace_namespace();
     }
 
-    inline void from_json(const json & j, New& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("new") != j.end() && !j.at("new").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_new_new(j.at("new").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const New & x) {
-        j = json::object();
-        j["new"] = x.get_new_new();
-    }
-
-    inline void from_json(const json & j, Noexcept& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("noexcept") != j.end() && !j.at("noexcept").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_noexcept_noexcept(j.at("noexcept").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const Noexcept & x) {
-        j = json::object();
-        j["noexcept"] = x.get_noexcept_noexcept();
-    }
-
     inline void from_json(const json & j, Obj3& 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_get(j.at("get").get<Get>());
+        x.set_global(j.at("global").get<Global>());
+        x.set_go(j.at("go").get<Go>());
         x.set_guard(j.at("guard").get<Guard>());
         x.set_has_own_property(j.at("hasOwnProperty").get<HasOwnProperty>());
         x.set_hash_code(j.at("hashCode").get<HashCode>());
@@ -9898,6 +10121,7 @@ namespace quicktype {
         x.set_init(j.at("init").get<Init>());
         x.set_inout(j.at("inout").get<Inout>());
         x.set_instanceof(j.at("instanceof").get<Instanceof>());
+        x.set_int_node(j.at("IntNode").get<IntNode>());
         x.set_interface(j.at("interface").get<Interface>());
         x.set_internal(j.at("internal").get<Internal>());
         x.set_is(j.at("is").get<Is>());
@@ -9929,14 +10153,12 @@ namespace quicktype {
         x.set_list(j.at("list").get<List>());
         x.set_locale(j.at("Locale").get<Locale>());
         x.set_lock(j.at("lock").get<Lock>());
+        x.set_long_node(j.at("LongNode").get<LongNode>());
         x.set_map(j.at("map").get<Map>());
         x.set_map_entry(j.at("MapEntry").get<MapEntry>());
         x.set_metadata_property_handling(j.at("metadata_property_handling").get<MetadataPropertyHandling>());
         x.set_mutating(j.at("mutating").get<Mutating>());
-        x.set_native(j.at("native").get<Native>());
-        x.set_newtonsoft(j.at("newtonsoft").get<Newtonsoft>());
-        x.set_nil(j.at("nil").get<Nil>());
-        x.set_no(j.at("NO").get<No>());
+        x.set_obj3_goto(j.at("goto").get<Goto>());
         x.set_obj3_if(j.at("if").get<If>());
         x.set_obj3_import(j.at("import").get<Import>());
         x.set_obj3_inline(j.at("inline").get<Inline>());
@@ -9945,13 +10167,14 @@ namespace quicktype {
         x.set_obj3_module(j.at("module").get<Module>());
         x.set_obj3_mutable(j.at("mutable").get<Mutable>());
         x.set_obj3_namespace(j.at("namespace").get<Namespace>());
-        x.set_obj3_new(j.at("new").get<New>());
-        x.set_obj3_noexcept(j.at("noexcept").get<Noexcept>());
     }
 
     inline void to_json(json & j, const Obj3 & x) {
         j = json::object();
         j["dummy"] = x.get_dummy();
+        j["get"] = x.get_get();
+        j["global"] = x.get_global();
+        j["go"] = x.get_go();
         j["guard"] = x.get_guard();
         j["hasOwnProperty"] = x.get_has_own_property();
         j["hashCode"] = x.get_hash_code();
@@ -9967,6 +10190,7 @@ namespace quicktype {
         j["init"] = x.get_init();
         j["inout"] = x.get_inout();
         j["instanceof"] = x.get_instanceof();
+        j["IntNode"] = x.get_int_node();
         j["interface"] = x.get_interface();
         j["internal"] = x.get_internal();
         j["is"] = x.get_is();
@@ -9998,24 +10222,64 @@ namespace quicktype {
         j["list"] = x.get_list();
         j["Locale"] = x.get_locale();
         j["lock"] = x.get_lock();
+        j["LongNode"] = x.get_long_node();
         j["map"] = x.get_map();
         j["MapEntry"] = x.get_map_entry();
         j["metadata_property_handling"] = x.get_metadata_property_handling();
         j["mutating"] = x.get_mutating();
+        j["goto"] = x.get_obj3_goto();
+        j["if"] = x.get_obj3_if();
+        j["import"] = x.get_obj3_import();
+        j["inline"] = x.get_obj3_inline();
+        j["int"] = x.get_obj3_int();
+        j["long"] = x.get_obj3_long();
+        j["module"] = x.get_obj3_module();
+        j["mutable"] = x.get_obj3_mutable();
+        j["namespace"] = x.get_obj3_namespace();
+    }
+
+    inline void from_json(const json & j, Native& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("native") != j.end() && !j.at("native").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_native(j.at("native").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const Native & x) {
+        j = json::object();
         j["native"] = x.get_native();
+    }
+
+    inline void from_json(const json & j, Newtonsoft& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("newtonsoft") != j.end() && !j.at("newtonsoft").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_newtonsoft(j.at("newtonsoft").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const Newtonsoft & x) {
+        j = json::object();
         j["newtonsoft"] = x.get_newtonsoft();
+    }
+
+    inline void from_json(const json & j, Nil& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("nil") != j.end() && !j.at("nil").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_nil(j.at("nil").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const Nil & x) {
+        j = json::object();
         j["nil"] = x.get_nil();
+    }
+
+    inline void from_json(const json & j, No& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("NO") != j.end() && !j.at("NO").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_no(j.at("NO").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const No & x) {
+        j = json::object();
         j["NO"] = x.get_no();
-        j["if"] = x.get_obj3_if();
-        j["import"] = x.get_obj3_import();
-        j["inline"] = x.get_obj3_inline();
-        j["int"] = x.get_obj3_int();
-        j["long"] = x.get_obj3_long();
-        j["module"] = x.get_obj3_module();
-        j["mutable"] = x.get_obj3_mutable();
-        j["namespace"] = x.get_obj3_namespace();
-        j["new"] = x.get_obj3_new();
-        j["noexcept"] = x.get_obj3_noexcept();
     }
 
     inline void from_json(const json & j, NoSuchMethod& x) {
@@ -10117,6 +10381,17 @@ namespace quicktype {
         j["NULL"] = x.get_null();
     }
 
+    inline void from_json(const json & j, NullNode& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("NullNode") != j.end() && !j.at("NullNode").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_null_node(j.at("NullNode").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const NullNode & x) {
+        j = json::object();
+        j["NullNode"] = x.get_null_node();
+    }
+
     inline void from_json(const json & j, Number& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("number") != j.end() && !j.at("number").is_number_integer()) throw std::runtime_error("Expected integer");
@@ -10128,6 +10403,28 @@ namespace quicktype {
         j["number"] = x.get_number();
     }
 
+    inline void from_json(const json & j, New& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("new") != j.end() && !j.at("new").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_new_new(j.at("new").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const New & x) {
+        j = json::object();
+        j["new"] = x.get_new_new();
+    }
+
+    inline void from_json(const json & j, Noexcept& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("noexcept") != j.end() && !j.at("noexcept").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_noexcept_noexcept(j.at("noexcept").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const Noexcept & x) {
+        j = json::object();
+        j["noexcept"] = x.get_noexcept_noexcept();
+    }
+
     inline void from_json(const json & j, NoneClass& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("none") != j.end() && !j.at("none").is_number_integer()) throw std::runtime_error("Expected integer");
@@ -10304,17 +10601,6 @@ namespace quicktype {
         j["requires"] = x.get_requires_requires();
     }
 
-    inline void from_json(const json & j, Return& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("return") != j.end() && !j.at("return").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_return_return(j.at("return").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const Return & x) {
-        j = json::object();
-        j["return"] = x.get_return_return();
-    }
-
     inline void from_json(const json & j, Object& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("object") != j.end() && !j.at("object").is_number_integer()) throw std::runtime_error("Expected integer");
@@ -10337,6 +10623,17 @@ namespace quicktype {
         j["ObjectMapper"] = x.get_object_mapper();
     }
 
+    inline void from_json(const json & j, ObjectNode& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("ObjectNode") != j.end() && !j.at("ObjectNode").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_object_node(j.at("ObjectNode").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const ObjectNode & x) {
+        j = json::object();
+        j["ObjectNode"] = x.get_object_node();
+    }
+
     inline void from_json(const json & j, Of& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("of") != j.end() && !j.at("of").is_number_integer()) throw std::runtime_error("Expected integer");
@@ -10645,87 +10942,14 @@ namespace quicktype {
         j["rethrows"] = x.get_rethrows();
     }
 
-    inline void from_json(const json & j, Right& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("right") != j.end() && !j.at("right").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_right(j.at("right").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const Right & x) {
-        j = json::object();
-        j["right"] = x.get_right();
-    }
-
-    inline void from_json(const json & j, RuntimeType& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("runtimeType") != j.end() && !j.at("runtimeType").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_runtime_type(j.at("runtimeType").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const RuntimeType & x) {
-        j = json::object();
-        j["runtimeType"] = x.get_runtime_type();
-    }
-
-    inline void from_json(const json & j, S& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("s") != j.end() && !j.at("s").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_s(j.at("s").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const S & x) {
-        j = json::object();
-        j["s"] = x.get_s();
-    }
-
-    inline void from_json(const json & j, Sbyte& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("sbyte") != j.end() && !j.at("sbyte").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_sbyte(j.at("sbyte").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const Sbyte & x) {
-        j = json::object();
-        j["sbyte"] = x.get_sbyte();
-    }
-
-    inline void from_json(const json & j, Sealed& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("sealed") != j.end() && !j.at("sealed").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_sealed(j.at("sealed").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const Sealed & x) {
-        j = json::object();
-        j["sealed"] = x.get_sealed();
-    }
-
-    inline void from_json(const json & j, Sel& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("SEL") != j.end() && !j.at("SEL").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_sel(j.at("SEL").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const Sel & x) {
-        j = json::object();
-        j["SEL"] = x.get_sel();
-    }
-
-    inline void from_json(const json & j, Select& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("select") != j.end() && !j.at("select").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_select(j.at("select").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const Select & x) {
-        j = json::object();
-        j["select"] = x.get_select();
-    }
-
     inline void from_json(const json & j, Obj4& 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_native(j.at("native").get<Native>());
+        x.set_newtonsoft(j.at("newtonsoft").get<Newtonsoft>());
+        x.set_nil(j.at("nil").get<Nil>());
+        x.set_no(j.at("NO").get<No>());
         x.set_no_such_method(j.at("noSuchMethod").get<NoSuchMethod>());
         x.set_nonatomic(j.at("nonatomic").get<Nonatomic>());
         x.set_none(j.at("None").get<None>());
@@ -10735,7 +10959,10 @@ namespace quicktype {
         x.set_ns_object(j.at("NSObject").get<NsObject>());
         x.set_ns_string(j.at("NSString").get<NsString>());
         x.set_null(j.at("NULL").get<Null>());
+        x.set_null_node(j.at("NullNode").get<NullNode>());
         x.set_number(j.at("number").get<Number>());
+        x.set_obj4_new(j.at("new").get<New>());
+        x.set_obj4_noexcept(j.at("noexcept").get<Noexcept>());
         x.set_obj4_none(j.at("none").get<NoneClass>());
         x.set_obj4_not(j.at("not").get<Not>());
         x.set_obj4_not_eq(j.at("not_eq").get<NotEq>());
@@ -10752,9 +10979,9 @@ namespace quicktype {
         x.set_obj4_register(j.at("register").get<Register>());
         x.set_obj4_reinterpret_cast(j.at("reinterpret_cast").get<ReinterpretCast>());
         x.set_obj4_requires(j.at("requires").get<Requires>());
-        x.set_obj4_return(j.at("return").get<Return>());
         x.set_object(j.at("object").get<Object>());
         x.set_object_mapper(j.at("ObjectMapper").get<ObjectMapper>());
+        x.set_object_node(j.at("ObjectNode").get<ObjectNode>());
         x.set_of(j.at("of").get<Of>());
         x.set_oneway(j.at("oneway").get<Oneway>());
         x.set_open(j.at("open").get<Open>());
@@ -10783,18 +11010,15 @@ namespace quicktype {
         x.set_restrict(j.at("restrict").get<Restrict>());
         x.set_retain(j.at("retain").get<Retain>());
         x.set_rethrows(j.at("rethrows").get<Rethrows>());
-        x.set_right(j.at("right").get<Right>());
-        x.set_runtime_type(j.at("runtimeType").get<RuntimeType>());
-        x.set_s(j.at("s").get<S>());
-        x.set_sbyte(j.at("sbyte").get<Sbyte>());
-        x.set_sealed(j.at("sealed").get<Sealed>());
-        x.set_sel(j.at("SEL").get<Sel>());
-        x.set_select(j.at("select").get<Select>());
     }
 
     inline void to_json(json & j, const Obj4 & x) {
         j = json::object();
         j["dummy"] = x.get_dummy();
+        j["native"] = x.get_native();
+        j["newtonsoft"] = x.get_newtonsoft();
+        j["nil"] = x.get_nil();
+        j["NO"] = x.get_no();
         j["noSuchMethod"] = x.get_no_such_method();
         j["nonatomic"] = x.get_nonatomic();
         j["None"] = x.get_none();
@@ -10804,7 +11028,10 @@ namespace quicktype {
         j["NSObject"] = x.get_ns_object();
         j["NSString"] = x.get_ns_string();
         j["NULL"] = x.get_null();
+        j["NullNode"] = x.get_null_node();
         j["number"] = x.get_number();
+        j["new"] = x.get_obj4_new();
+        j["noexcept"] = x.get_obj4_noexcept();
         j["none"] = x.get_obj4_none();
         j["not"] = x.get_obj4_not();
         j["not_eq"] = x.get_obj4_not_eq();
@@ -10821,9 +11048,9 @@ namespace quicktype {
         j["register"] = x.get_obj4_register();
         j["reinterpret_cast"] = x.get_obj4_reinterpret_cast();
         j["requires"] = x.get_obj4_requires();
-        j["return"] = x.get_obj4_return();
         j["object"] = x.get_object();
         j["ObjectMapper"] = x.get_object_mapper();
+        j["ObjectNode"] = x.get_object_node();
         j["of"] = x.get_of();
         j["oneway"] = x.get_oneway();
         j["open"] = x.get_open();
@@ -10852,13 +11079,17 @@ namespace quicktype {
         j["restrict"] = x.get_restrict();
         j["retain"] = x.get_retain();
         j["rethrows"] = x.get_rethrows();
-        j["right"] = x.get_right();
-        j["runtimeType"] = x.get_runtime_type();
-        j["s"] = x.get_s();
-        j["sbyte"] = x.get_sbyte();
-        j["sealed"] = x.get_sealed();
-        j["SEL"] = x.get_sel();
-        j["select"] = x.get_select();
+    }
+
+    inline void from_json(const json & j, Return& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("return") != j.end() && !j.at("return").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_return_return(j.at("return").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const Return & x) {
+        j = json::object();
+        j["return"] = x.get_return_return();
     }
 
     inline void from_json(const json & j, SelfClass& x) {
@@ -11092,48 +11323,92 @@ namespace quicktype {
         j["union"] = x.get_union_union();
     }
 
-    inline void from_json(const json & j, Unsigned& x) {
+    inline void from_json(const json & j, TrueClass& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("unsigned") != j.end() && !j.at("unsigned").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_unsigned_unsigned(j.at("unsigned").get<int64_t>());
+        if (j.find("true") != j.end() && !j.at("true").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_true_true(j.at("true").get<int64_t>());
     }
 
-    inline void to_json(json & j, const Unsigned & x) {
+    inline void to_json(json & j, const TrueClass & x) {
         j = json::object();
-        j["unsigned"] = x.get_unsigned_unsigned();
+        j["true"] = x.get_true_true();
     }
 
-    inline void from_json(const json & j, Using& x) {
+    inline void from_json(const json & j, Right& 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>());
+        if (j.find("right") != j.end() && !j.at("right").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_right(j.at("right").get<int64_t>());
     }
 
-    inline void to_json(json & j, const Using & x) {
+    inline void to_json(json & j, const Right & x) {
         j = json::object();
-        j["using"] = x.get_using_using();
+        j["right"] = x.get_right();
     }
 
-    inline void from_json(const json & j, Virtual& x) {
+    inline void from_json(const json & j, RuntimeType& 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("runtimeType") != j.end() && !j.at("runtimeType").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_runtime_type(j.at("runtimeType").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const RuntimeType & x) {
+        j = json::object();
+        j["runtimeType"] = x.get_runtime_type();
+    }
+
+    inline void from_json(const json & j, S& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("s") != j.end() && !j.at("s").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_s(j.at("s").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const S & x) {
+        j = json::object();
+        j["s"] = x.get_s();
+    }
+
+    inline void from_json(const json & j, Sbyte& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("sbyte") != j.end() && !j.at("sbyte").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_sbyte(j.at("sbyte").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const Sbyte & x) {
+        j = json::object();
+        j["sbyte"] = x.get_sbyte();
+    }
+
+    inline void from_json(const json & j, Sealed& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("sealed") != j.end() && !j.at("sealed").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_sealed(j.at("sealed").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const Sealed & x) {
+        j = json::object();
+        j["sealed"] = x.get_sealed();
+    }
+
+    inline void from_json(const json & j, Sel& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("SEL") != j.end() && !j.at("SEL").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_sel(j.at("SEL").get<int64_t>());
     }
 
-    inline void to_json(json & j, const Virtual & x) {
+    inline void to_json(json & j, const Sel & x) {
         j = json::object();
-        j["virtual"] = x.get_virtual_virtual();
+        j["SEL"] = x.get_sel();
     }
 
-    inline void from_json(const json & j, TrueClass& x) {
+    inline void from_json(const json & j, Select& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("true") != j.end() && !j.at("true").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_true_true(j.at("true").get<int64_t>());
+        if (j.find("select") != j.end() && !j.at("select").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_select(j.at("select").get<int64_t>());
     }
 
-    inline void to_json(json & j, const TrueClass & x) {
+    inline void to_json(json & j, const Select & x) {
         j = json::object();
-        j["true"] = x.get_true_true();
+        j["select"] = x.get_select();
     }
 
     inline void from_json(const json & j, Self& x) {
@@ -11158,6 +11433,17 @@ namespace quicktype {
         j["Sendable"] = x.get_sendable();
     }
 
+    inline void from_json(const json & j, SerializationFeature& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("SerializationFeature") != j.end() && !j.at("SerializationFeature").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_serialization_feature(j.at("SerializationFeature").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const SerializationFeature & x) {
+        j = json::object();
+        j["SerializationFeature"] = x.get_serialization_feature();
+    }
+
     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");
@@ -11312,6 +11598,17 @@ namespace quicktype {
         j["system"] = x.get_system();
     }
 
+    inline void from_json(const json & j, TextNode& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("TextNode") != j.end() && !j.at("TextNode").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_text_node(j.at("TextNode").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const TextNode & x) {
+        j = json::object();
+        j["TextNode"] = x.get_text_node();
+    }
+
     inline void from_json(const json & j, Then& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("then") != j.end() && !j.at("then").is_number_integer()) throw std::runtime_error("Expected integer");
@@ -11488,87 +11785,11 @@ namespace quicktype {
         j["undefined"] = x.get_undefined();
     }
 
-    inline void from_json(const json & j, Unowned& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("unowned") != j.end() && !j.at("unowned").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_unowned(j.at("unowned").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const Unowned & x) {
-        j = json::object();
-        j["unowned"] = x.get_unowned();
-    }
-
-    inline void from_json(const json & j, Unsafe& x) {
-        if (!j.is_object()) throw std::runtime_error("Expected object");
-        if (j.find("unsafe") != j.end() && !j.at("unsafe").is_number_integer()) throw std::runtime_error("Expected integer");
-        x.set_unsafe(j.at("unsafe").get<int64_t>());
-    }
-
-    inline void to_json(json & j, const Unsafe & x) {
-        j = json::object();
-        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) {
-        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, 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_obj5_return(j.at("return").get<Return>());
         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>());
@@ -11590,12 +11811,17 @@ namespace quicktype {
         x.set_obj5_typeid(j.at("typeid").get<Typeid>());
         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_purple_true(j.at("true").get<TrueClass>());
+        x.set_right(j.at("right").get<Right>());
+        x.set_runtime_type(j.at("runtimeType").get<RuntimeType>());
+        x.set_s(j.at("s").get<S>());
+        x.set_sbyte(j.at("sbyte").get<Sbyte>());
+        x.set_sealed(j.at("sealed").get<Sealed>());
+        x.set_sel(j.at("SEL").get<Sel>());
+        x.set_select(j.at("select").get<Select>());
         x.set_self(j.at("Self").get<Self>());
         x.set_sendable(j.at("Sendable").get<Sendable>());
+        x.set_serialization_feature(j.at("SerializationFeature").get<SerializationFeature>());
         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>());
@@ -11610,6 +11836,7 @@ namespace quicktype {
         x.set_super(j.at("super").get<Super>());
         x.set_symbol(j.at("symbol").get<Symbol>());
         x.set_system(j.at("system").get<System>());
+        x.set_text_node(j.at("TextNode").get<TextNode>());
         x.set_then(j.at("then").get<Then>());
         x.set_throws(j.at("throws").get<Throws>());
         x.set_time_only(j.at("TimeOnly").get<TimeOnly>());
@@ -11626,18 +11853,12 @@ namespace quicktype {
         x.set_ulong(j.at("ulong").get<Ulong>());
         x.set_unchecked(j.at("unchecked").get<Unchecked>());
         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_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["return"] = x.get_obj5_return();
         j["self"] = x.get_obj5_self();
         j["short"] = x.get_obj5_short();
         j["signed"] = x.get_obj5_signed();
@@ -11659,12 +11880,17 @@ namespace quicktype {
         j["typeid"] = x.get_obj5_typeid();
         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["true"] = x.get_purple_true();
+        j["right"] = x.get_right();
+        j["runtimeType"] = x.get_runtime_type();
+        j["s"] = x.get_s();
+        j["sbyte"] = x.get_sbyte();
+        j["sealed"] = x.get_sealed();
+        j["SEL"] = x.get_sel();
+        j["select"] = x.get_select();
         j["Self"] = x.get_self();
         j["Sendable"] = x.get_sendable();
+        j["SerializationFeature"] = x.get_serialization_feature();
         j["serialize"] = x.get_serialize();
         j["SerializerProvider"] = x.get_serializer_provider();
         j["set"] = x.get_set();
@@ -11679,6 +11905,7 @@ namespace quicktype {
         j["super"] = x.get_super();
         j["symbol"] = x.get_symbol();
         j["system"] = x.get_system();
+        j["TextNode"] = x.get_text_node();
         j["then"] = x.get_then();
         j["throws"] = x.get_throws();
         j["TimeOnly"] = x.get_time_only();
@@ -11695,13 +11922,39 @@ namespace quicktype {
         j["ulong"] = x.get_ulong();
         j["unchecked"] = x.get_unchecked();
         j["undefined"] = x.get_undefined();
-        j["unowned"] = x.get_unowned();
-        j["unsafe"] = x.get_unsafe();
-        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, Unsigned& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("unsigned") != j.end() && !j.at("unsigned").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_unsigned_unsigned(j.at("unsigned").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const Unsigned & x) {
+        j = json::object();
+        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) {
+        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 +12023,83 @@ namespace quicktype {
         j["xor_eq"] = x.get_xor_eq_xor_eq();
     }
 
+    inline void from_json(const json & j, Unowned& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("unowned") != j.end() && !j.at("unowned").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_unowned(j.at("unowned").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const Unowned & x) {
+        j = json::object();
+        j["unowned"] = x.get_unowned();
+    }
+
+    inline void from_json(const json & j, Unsafe& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("unsafe") != j.end() && !j.at("unsafe").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_unsafe(j.at("unsafe").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const Unsafe & x) {
+        j = json::object();
+        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) {
+        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 +12170,22 @@ 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_unsigned(j.at("unsigned").get<Unsigned>());
+        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_unowned(j.at("unowned").get<Unowned>());
+        x.set_unsafe(j.at("unsafe").get<Unsafe>());
+        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>());
         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 +12197,22 @@ namespace quicktype {
     inline void to_json(json & j, const Obj6 & x) {
         j = json::object();
         j["dummy"] = x.get_dummy();
+        j["unsigned"] = x.get_obj6_unsigned();
+        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["unowned"] = x.get_unowned();
+        j["unsafe"] = x.get_unsafe();
+        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();
         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..a21ca2c 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
@@ -34,6 +34,9 @@ class Obj1
 
   property array : ArrayClass
 
+  @[JSON::Field(key: "ArrayNode")]
+  property array_node : ArrayNode
+
   property assert : Assert
 
   property associatedtype : Associatedtype
@@ -65,6 +68,9 @@ class Obj1
 
   property boolean : Boolean
 
+  @[JSON::Field(key: "BooleanNode")]
+  property boolean_node : BooleanNode
+
   property bycopy : Bycopy
 
   property byref : Byref
@@ -128,11 +134,6 @@ class Obj1
 
   property converter : Converter
 
-  @[JSON::Field(key: "CultureInfo")]
-  property culture_info : CultureInfo
-
-  property date : Date
-
   property dummy : Int64
 
   @[JSON::Field(key: "_")]
@@ -209,6 +210,13 @@ class ArrayClass
   property array : Int64
 end
 
+class ArrayNode
+  include JSON::Serializable
+
+  @[JSON::Field(key: "ArrayNode")]
+  property array_node : Int64
+end
+
 class Assert
   include JSON::Serializable
 
@@ -300,6 +308,13 @@ class Boolean
   property boolean : Int64
 end
 
+class BooleanNode
+  include JSON::Serializable
+
+  @[JSON::Field(key: "BooleanNode")]
+  property boolean_node : Int64
+end
+
 class Bycopy
   include JSON::Serializable
 
@@ -479,19 +494,6 @@ class Converter
   property converter : Int64
 end
 
-class CultureInfo
-  include JSON::Serializable
-
-  @[JSON::Field(key: "CultureInfo")]
-  property culture_info : Int64
-end
-
-class Date
-  include JSON::Serializable
-
-  property date : Int64
-end
-
 class Empty
   include JSON::Serializable
 
@@ -577,6 +579,11 @@ end
 class Obj2
   include JSON::Serializable
 
+  @[JSON::Field(key: "CultureInfo")]
+  property culture_info : CultureInfo
+
+  property date : Date
+
   @[JSON::Field(key: "DateFormatter")]
   property date_formatter : DateFormatter
 
@@ -622,6 +629,9 @@ class Obj2
 
   property delete : Delete
 
+  @[JSON::Field(key: "DeserializationFeature")]
+  property deserialization_feature : DeserializationFeature
+
   property dict : Dict
 
   property dictionary : Dictionary
@@ -631,6 +641,9 @@ class Obj2
 
   property double : Double
 
+  @[JSON::Field(key: "DoubleNode")]
+  property double_node : DoubleNode
+
   property dummy : Int64
 
   property dynamic : Dynamic
@@ -698,14 +711,6 @@ class Obj2
 
   property function : Function
 
-  property get : Get
-
-  property global : Global
-
-  property go : Go
-
-  property goto : Goto
-
   @[JSON::Field(key: "def")]
   property obj2_def : Def
 
@@ -728,6 +733,19 @@ class Obj2
   property purple_false : FalseClass
 end
 
+class CultureInfo
+  include JSON::Serializable
+
+  @[JSON::Field(key: "CultureInfo")]
+  property culture_info : Int64
+end
+
+class Date
+  include JSON::Serializable
+
+  property date : Int64
+end
+
 class DateFormatter
   include JSON::Serializable
 
@@ -849,6 +867,13 @@ class Delete
   property delete : Int64
 end
 
+class DeserializationFeature
+  include JSON::Serializable
+
+  @[JSON::Field(key: "DeserializationFeature")]
+  property deserialization_feature : Int64
+end
+
 class Dict
   include JSON::Serializable
 
@@ -874,6 +899,13 @@ class Double
   property double : Int64
 end
 
+class DoubleNode
+  include JSON::Serializable
+
+  @[JSON::Field(key: "DoubleNode")]
+  property double_node : Int64
+end
+
 class Dynamic
   include JSON::Serializable
 
@@ -1059,30 +1091,6 @@ class Function
   property function : Int64
 end
 
-class Get
-  include JSON::Serializable
-
-  property get : Int64
-end
-
-class Global
-  include JSON::Serializable
-
-  property global : Int64
-end
-
-class Go
-  include JSON::Serializable
-
-  property go : Int64
-end
-
-class Goto
-  include JSON::Serializable
-
-  property goto : Int64
-end
-
 class Def
   include JSON::Serializable
 
@@ -1137,6 +1145,14 @@ class Obj3
 
   property dummy : Int64
 
+  property get : Get
+
+  property global : Global
+
+  property go : Go
+
+  property goto : Goto
+
   property guard : Guard
 
   @[JSON::Field(key: "hasOwnProperty")]
@@ -1176,6 +1192,9 @@ class Obj3
 
   property int : IntClass
 
+  @[JSON::Field(key: "IntNode")]
+  property int_node : IntNode
+
   property interface : Interface
 
   property internal : Internal
@@ -1253,6 +1272,9 @@ class Obj3
 
   property long : Long
 
+  @[JSON::Field(key: "LongNode")]
+  property long_node : LongNode
+
   property map : Map
 
   @[JSON::Field(key: "MapEntry")]
@@ -1266,17 +1288,6 @@ class Obj3
 
   property namespace : Namespace
 
-  property native : Native
-
-  property new : New
-
-  property newtonsoft : Newtonsoft
-
-  @[JSON::Field(key: "NO")]
-  property no : No
-
-  property noexcept : Noexcept
-
   @[JSON::Field(key: "if")]
   property obj3_if : If
 
@@ -1285,9 +1296,30 @@ class Obj3
 
   @[JSON::Field(key: "module")]
   property obj3_module : Module
+end
 
-  @[JSON::Field(key: "nil")]
-  property obj3_nil : NilClass
+class Get
+  include JSON::Serializable
+
+  property get : Int64
+end
+
+class Global
+  include JSON::Serializable
+
+  property global : Int64
+end
+
+class Go
+  include JSON::Serializable
+
+  property go : Int64
+end
+
+class Goto
+  include JSON::Serializable
+
+  property goto : Int64
 end
 
 class Guard
@@ -1397,6 +1429,13 @@ class IntClass
   property int : Int64
 end
 
+class IntNode
+  include JSON::Serializable
+
+  @[JSON::Field(key: "IntNode")]
+  property int_node : Int64
+end
+
 class Interface
   include JSON::Serializable
 
@@ -1602,6 +1641,13 @@ class Long
   property long : Int64
 end
 
+class LongNode
+  include JSON::Serializable
+
+  @[JSON::Field(key: "LongNode")]
+  property long_node : Int64
+end
+
 class Map
   include JSON::Serializable
 
@@ -1639,37 +1685,6 @@ class Namespace
   property namespace : Int64
 end
 
-class Native
-  include JSON::Serializable
-
-  property native : Int64
-end
-
-class New
-  include JSON::Serializable
-
-  property new : Int64
-end
-
-class Newtonsoft
-  include JSON::Serializable
-
-  property newtonsoft : Int64
-end
-
-class No
-  include JSON::Serializable
-
-  @[JSON::Field(key: "NO")]
-  property no : Int64
-end
-
-class Noexcept
-  include JSON::Serializable
-
-  property noexcept : Int64
-end
-
 class If
   include JSON::Serializable
 
@@ -1691,21 +1706,25 @@ class Module
   property module_module : Int64
 end
 
-class NilClass
-  include JSON::Serializable
-
-  @[JSON::Field(key: "nil")]
-  property nil_nil : Int64
-end
-
 class Obj4
   include JSON::Serializable
 
   property dummy : Int64
 
+  property native : Native
+
+  property new : New
+
+  property newtonsoft : Newtonsoft
+
+  @[JSON::Field(key: "NO")]
+  property no : No
+
   @[JSON::Field(key: "noSuchMethod")]
   property no_such_method : NoSuchMethod
 
+  property noexcept : Noexcept
+
   property nonatomic : Nonatomic
 
   @[JSON::Field(key: "None")]
@@ -1731,10 +1750,16 @@ class Obj4
   @[JSON::Field(key: "NULL")]
   property null : Null
 
+  @[JSON::Field(key: "NullNode")]
+  property null_node : NullNode
+
   property nullptr : Nullptr
 
   property number : NumberClass
 
+  @[JSON::Field(key: "nil")]
+  property obj4_nil : NilClass
+
   @[JSON::Field(key: "none")]
   property obj4_none : NoneClass
 
@@ -1759,17 +1784,14 @@ class Obj4
   @[JSON::Field(key: "require")]
   property obj4_require : Require
 
-  @[JSON::Field(key: "return")]
-  property obj4_return : Return
-
-  @[JSON::Field(key: "select")]
-  property obj4_select : Select
-
   property object : ObjectClass
 
   @[JSON::Field(key: "ObjectMapper")]
   property object_mapper : ObjectMapper
 
+  @[JSON::Field(key: "ObjectNode")]
+  property object_node : ObjectNode
+
   property oneway : Oneway
 
   property open : Open
@@ -1838,20 +1860,31 @@ class Obj4
   property retain : Retain
 
   property rethrows : Rethrows
+end
 
-  property right : Right
+class Native
+  include JSON::Serializable
 
-  @[JSON::Field(key: "runtimeType")]
-  property runtime_type : RuntimeType
+  property native : Int64
+end
 
-  property s : S
+class New
+  include JSON::Serializable
 
-  property sbyte : Sbyte
+  property new : Int64
+end
 
-  property sealed : Sealed
+class Newtonsoft
+  include JSON::Serializable
 
-  @[JSON::Field(key: "SEL")]
-  property sel : Sel
+  property newtonsoft : Int64
+end
+
+class No
+  include JSON::Serializable
+
+  @[JSON::Field(key: "NO")]
+  property no : Int64
 end
 
 class NoSuchMethod
@@ -1861,6 +1894,12 @@ class NoSuchMethod
   property no_such_method : Int64
 end
 
+class Noexcept
+  include JSON::Serializable
+
+  property noexcept : Int64
+end
+
 class Nonatomic
   include JSON::Serializable
 
@@ -1926,6 +1965,13 @@ class Null
   property null : Int64
 end
 
+class NullNode
+  include JSON::Serializable
+
+  @[JSON::Field(key: "NullNode")]
+  property null_node : Int64
+end
+
 class Nullptr
   include JSON::Serializable
 
@@ -1938,6 +1984,13 @@ class NumberClass
   property number : Int64
 end
 
+class NilClass
+  include JSON::Serializable
+
+  @[JSON::Field(key: "nil")]
+  property nil_nil : Int64
+end
+
 class NoneClass
   include JSON::Serializable
 
@@ -1991,20 +2044,6 @@ class Require
   property require_require : Int64
 end
 
-class Return
-  include JSON::Serializable
-
-  @[JSON::Field(key: "return")]
-  property return_return : Int64
-end
-
-class Select
-  include JSON::Serializable
-
-  @[JSON::Field(key: "select")]
-  property select_select : Int64
-end
-
 class ObjectClass
   include JSON::Serializable
 
@@ -2018,6 +2057,13 @@ class ObjectMapper
   property object_mapper : Int64
 end
 
+class ObjectNode
+  include JSON::Serializable
+
+  @[JSON::Field(key: "ObjectNode")]
+  property object_node : Int64
+end
+
 class Oneway
   include JSON::Serializable
 
@@ -2219,49 +2265,17 @@ class Rethrows
   property rethrows : Int64
 end
 
-class Right
-  include JSON::Serializable
-
-  property right : Int64
-end
-
-class RuntimeType
-  include JSON::Serializable
-
-  @[JSON::Field(key: "runtimeType")]
-  property runtime_type : Int64
-end
-
-class S
-  include JSON::Serializable
-
-  property s : Int64
-end
-
-class Sbyte
-  include JSON::Serializable
-
-  property sbyte : Int64
-end
-
-class Sealed
-  include JSON::Serializable
-
-  property sealed : Int64
-end
-
-class Sel
-  include JSON::Serializable
-
-  @[JSON::Field(key: "SEL")]
-  property sel : Int64
-end
-
 class Obj5
   include JSON::Serializable
 
   property dummy : Int64
 
+  @[JSON::Field(key: "return")]
+  property obj5_return : Return
+
+  @[JSON::Field(key: "select")]
+  property obj5_select : Select
+
   @[JSON::Field(key: "Self")]
   property obj5_self : Self
 
@@ -2301,9 +2315,26 @@ class Obj5
   @[JSON::Field(key: "type")]
   property purple_type : TypeClass
 
+  property right : Right
+
+  @[JSON::Field(key: "runtimeType")]
+  property runtime_type : RuntimeType
+
+  property s : S
+
+  property sbyte : Sbyte
+
+  property sealed : Sealed
+
+  @[JSON::Field(key: "SEL")]
+  property sel : Sel
+
   @[JSON::Field(key: "Sendable")]
   property sendable : Sendable
 
+  @[JSON::Field(key: "SerializationFeature")]
+  property serialization_feature : SerializationFeature
+
   property serialize : Serialize
 
   @[JSON::Field(key: "SerializerProvider")]
@@ -2351,6 +2382,9 @@ class Obj5
 
   property template : Template
 
+  @[JSON::Field(key: "TextNode")]
+  property text_node : TextNode
+
   property this : This
 
   property thread_local : ThreadLocalClass
@@ -2392,29 +2426,20 @@ class Obj5
   property unchecked : Unchecked
 
   property undefined : Undefined
+end
 
-  property unowned : Unowned
-
-  property unsafe : Unsafe
-
-  property unsigned : Unsigned
-
-  property ushort : Ushort
-
-  property using : Using
-
-  @[JSON::Field(key: "Utf8JsonReader")]
-  property utf8_json_reader : Utf8JsonReader
-
-  @[JSON::Field(key: "Utf8JsonWriter")]
-  property utf8_json_writer : Utf8JsonWriter
+class Return
+  include JSON::Serializable
 
-  @[JSON::Field(key: "UUID")]
-  property uuid : Uuid
+  @[JSON::Field(key: "return")]
+  property return_return : Int64
+end
 
-  property var : Var
+class Select
+  include JSON::Serializable
 
-  property virtual : Virtual
+  @[JSON::Field(key: "select")]
+  property select_select : Int64
 end
 
 class Self
@@ -2508,6 +2533,44 @@ class TypeClass
   property type_type : Int64
 end
 
+class Right
+  include JSON::Serializable
+
+  property right : Int64
+end
+
+class RuntimeType
+  include JSON::Serializable
+
+  @[JSON::Field(key: "runtimeType")]
+  property runtime_type : Int64
+end
+
+class S
+  include JSON::Serializable
+
+  property s : Int64
+end
+
+class Sbyte
+  include JSON::Serializable
+
+  property sbyte : Int64
+end
+
+class Sealed
+  include JSON::Serializable
+
+  property sealed : Int64
+end
+
+class Sel
+  include JSON::Serializable
+
+  @[JSON::Field(key: "SEL")]
+  property sel : Int64
+end
+
 class Sendable
   include JSON::Serializable
 
@@ -2515,6 +2578,13 @@ class Sendable
   property sendable : Int64
 end
 
+class SerializationFeature
+  include JSON::Serializable
+
+  @[JSON::Field(key: "SerializationFeature")]
+  property serialization_feature : Int64
+end
+
 class Serialize
   include JSON::Serializable
 
@@ -2646,6 +2716,13 @@ class Template
   property template : Int64
 end
 
+class TextNode
+  include JSON::Serializable
+
+  @[JSON::Field(key: "TextNode")]
+  property text_node : Int64
+end
+
 class This
   include JSON::Serializable
 
@@ -2764,6 +2841,85 @@ class Undefined
   property undefined : Int64
 end
 
+class Obj6
+  include JSON::Serializable
+
+  property dummy : Int64
+
+  @[JSON::Field(key: "while")]
+  property obj6_while : While
+
+  @[JSON::Field(key: "with")]
+  property obj6_with : With
+
+  @[JSON::Field(key: "yield")]
+  property obj6_yield : Yield
+
+  property unowned : Unowned
+
+  property unsafe : Unsafe
+
+  property unsigned : Unsigned
+
+  property ushort : Ushort
+
+  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
+
+  property wchar_t : WcharT
+
+  property weak : Weak
+
+  property where : Where
+
+  @[JSON::Field(key: "willSet")]
+  property will_set : WillSet
+
+  property xor : Xor
+
+  property xor_eq : XorEq
+
+  @[JSON::Field(key: "YES")]
+  property yes : Yes
+end
+
+class While
+  include JSON::Serializable
+
+  @[JSON::Field(key: "while")]
+  property while_while : Int64
+end
+
+class With
+  include JSON::Serializable
+
+  @[JSON::Field(key: "with")]
+  property with_with : Int64
+end
+
+class Yield
+  include JSON::Serializable
+
+  @[JSON::Field(key: "yield")]
+  property yield_yield : Int64
+end
+
 class Unowned
   include JSON::Serializable
 
@@ -2827,62 +2983,6 @@ class Virtual
   property virtual : Int64
 end
 
-class Obj6
-  include JSON::Serializable
-
-  property dummy : Int64
-
-  @[JSON::Field(key: "while")]
-  property obj6_while : While
-
-  @[JSON::Field(key: "with")]
-  property obj6_with : With
-
-  @[JSON::Field(key: "yield")]
-  property obj6_yield : Yield
-
-  property void : VoidClass
-
-  property volatile : Volatile
-
-  property wchar_t : WcharT
-
-  property weak : Weak
-
-  property where : Where
-
-  @[JSON::Field(key: "willSet")]
-  property will_set : WillSet
-
-  property xor : Xor
-
-  property xor_eq : XorEq
-
-  @[JSON::Field(key: "YES")]
-  property yes : Yes
-end
-
-class While
-  include JSON::Serializable
-
-  @[JSON::Field(key: "while")]
-  property while_while : Int64
-end
-
-class With
-  include JSON::Serializable
-
-  @[JSON::Field(key: "with")]
-  property with_with : Int64
-end
-
-class Yield
-  include JSON::Serializable
-
-  @[JSON::Field(key: "yield")]
-  property yield_yield : 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..10f5f37 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
@@ -70,6 +70,9 @@ namespace QuickType
         [JsonProperty("array", Required = Required.Always)]
         public Array Array { get; set; }
 
+        [JsonProperty("ArrayNode", Required = Required.Always)]
+        public ArrayNode ArrayNode { get; set; }
+
         [JsonProperty("as", Required = Required.Always)]
         public As As { get; set; }
 
@@ -121,6 +124,9 @@ namespace QuickType
         [JsonProperty("boolean", Required = Required.Always)]
         public Boolean Boolean { get; set; }
 
+        [JsonProperty("BooleanNode", Required = Required.Always)]
+        public BooleanNode BooleanNode { get; set; }
+
         [JsonProperty("break", Required = Required.Always)]
         public Break Break { get; set; }
 
@@ -217,12 +223,6 @@ namespace QuickType
         [JsonProperty("converter", Required = Required.Always)]
         public ConverterClass Converter { get; set; }
 
-        [JsonProperty("CultureInfo", Required = Required.Always)]
-        public CultureInfo CultureInfo { get; set; }
-
-        [JsonProperty("date", Required = Required.Always)]
-        public Date Date { get; set; }
-
         [JsonProperty("dummy", Required = Required.Always)]
         public long Dummy { get; set; }
 
@@ -287,6 +287,12 @@ namespace QuickType
         public long ArrayArray { get; set; }
     }
 
+    public partial class ArrayNode
+    {
+        [JsonProperty("ArrayNode", Required = Required.Always)]
+        public long ArrayNodeArrayNode { get; set; }
+    }
+
     public partial class As
     {
         [JsonProperty("as", Required = Required.Always)]
@@ -389,6 +395,12 @@ namespace QuickType
         public long BooleanBoolean { get; set; }
     }
 
+    public partial class BooleanNode
+    {
+        [JsonProperty("BooleanNode", Required = Required.Always)]
+        public long BooleanNodeBooleanNode { get; set; }
+    }
+
     public partial class Break
     {
         [JsonProperty("break", Required = Required.Always)]
@@ -581,18 +593,6 @@ namespace QuickType
         public long Converter { get; set; }
     }
 
-    public partial class CultureInfo
-    {
-        [JsonProperty("CultureInfo", Required = Required.Always)]
-        public long CultureInfoCultureInfo { get; set; }
-    }
-
-    public partial class Date
-    {
-        [JsonProperty("date", Required = Required.Always)]
-        public long DateDate { get; set; }
-    }
-
     public partial class Empty
     {
         [JsonProperty("_", Required = Required.Always)]
@@ -631,6 +631,12 @@ namespace QuickType
 
     public partial class Obj2
     {
+        [JsonProperty("CultureInfo", Required = Required.Always)]
+        public CultureInfo CultureInfo { get; set; }
+
+        [JsonProperty("date", Required = Required.Always)]
+        public Date Date { get; set; }
+
         [JsonProperty("DateFormatter", Required = Required.Always)]
         public DateFormatter DateFormatter { get; set; }
 
@@ -691,6 +697,9 @@ namespace QuickType
         [JsonProperty("delete", Required = Required.Always)]
         public Delete Delete { get; set; }
 
+        [JsonProperty("DeserializationFeature", Required = Required.Always)]
+        public DeserializationFeature DeserializationFeature { get; set; }
+
         [JsonProperty("dict", Required = Required.Always)]
         public Dict Dict { get; set; }
 
@@ -706,6 +715,9 @@ namespace QuickType
         [JsonProperty("double", Required = Required.Always)]
         public Double Double { get; set; }
 
+        [JsonProperty("DoubleNode", Required = Required.Always)]
+        public DoubleNode DoubleNode { get; set; }
+
         [JsonProperty("dummy", Required = Required.Always)]
         public long Dummy { get; set; }
 
@@ -808,18 +820,6 @@ namespace QuickType
         [JsonProperty("function", Required = Required.Always)]
         public Function Function { get; set; }
 
-        [JsonProperty("get", Required = Required.Always)]
-        public Get Get { get; set; }
-
-        [JsonProperty("global", Required = Required.Always)]
-        public Global Global { get; set; }
-
-        [JsonProperty("go", Required = Required.Always)]
-        public Go Go { get; set; }
-
-        [JsonProperty("goto", Required = Required.Always)]
-        public Goto Goto { get; set; }
-
         [JsonProperty("false", Required = Required.Always)]
         public FalseClass Obj2False { get; set; }
 
@@ -827,6 +827,18 @@ namespace QuickType
         public FromJsonClass Obj2FromJson { get; set; }
     }
 
+    public partial class CultureInfo
+    {
+        [JsonProperty("CultureInfo", Required = Required.Always)]
+        public long CultureInfoCultureInfo { get; set; }
+    }
+
+    public partial class Date
+    {
+        [JsonProperty("date", Required = Required.Always)]
+        public long DateDate { get; set; }
+    }
+
     public partial class DateFormatter
     {
         [JsonProperty("DateFormatter", Required = Required.Always)]
@@ -947,6 +959,12 @@ namespace QuickType
         public long DeleteDelete { get; set; }
     }
 
+    public partial class DeserializationFeature
+    {
+        [JsonProperty("DeserializationFeature", Required = Required.Always)]
+        public long DeserializationFeatureDeserializationFeature { get; set; }
+    }
+
     public partial class Dict
     {
         [JsonProperty("dict", Required = Required.Always)]
@@ -977,6 +995,12 @@ namespace QuickType
         public long DoubleDouble { get; set; }
     }
 
+    public partial class DoubleNode
+    {
+        [JsonProperty("DoubleNode", Required = Required.Always)]
+        public long DoubleNodeDoubleNode { get; set; }
+    }
+
     public partial class Dynamic
     {
         [JsonProperty("dynamic", Required = Required.Always)]
@@ -1175,30 +1199,6 @@ namespace QuickType
         public long FunctionFunction { get; set; }
     }
 
-    public partial class Get
-    {
-        [JsonProperty("get", Required = Required.Always)]
-        public long GetGet { get; set; }
-    }
-
-    public partial class Global
-    {
-        [JsonProperty("global", Required = Required.Always)]
-        public long GlobalGlobal { get; set; }
-    }
-
-    public partial class Go
-    {
-        [JsonProperty("go", Required = Required.Always)]
-        public long GoGo { get; set; }
-    }
-
-    public partial class Goto
-    {
-        [JsonProperty("goto", Required = Required.Always)]
-        public long GotoGoto { get; set; }
-    }
-
     public partial class FalseClass
     {
         [JsonProperty("false", Required = Required.Always)]
@@ -1216,6 +1216,18 @@ namespace QuickType
         [JsonProperty("dummy", Required = Required.Always)]
         public long Dummy { get; set; }
 
+        [JsonProperty("get", Required = Required.Always)]
+        public Get Get { get; set; }
+
+        [JsonProperty("global", Required = Required.Always)]
+        public Global Global { get; set; }
+
+        [JsonProperty("go", Required = Required.Always)]
+        public Go Go { get; set; }
+
+        [JsonProperty("goto", Required = Required.Always)]
+        public Goto Goto { get; set; }
+
         [JsonProperty("guard", Required = Required.Always)]
         public Guard Guard { get; set; }
 
@@ -1273,6 +1285,9 @@ namespace QuickType
         [JsonProperty("int", Required = Required.Always)]
         public Int Int { get; set; }
 
+        [JsonProperty("IntNode", Required = Required.Always)]
+        public IntNode IntNode { get; set; }
+
         [JsonProperty("interface", Required = Required.Always)]
         public Interface Interface { get; set; }
 
@@ -1369,6 +1384,9 @@ namespace QuickType
         [JsonProperty("long", Required = Required.Always)]
         public Long Long { get; set; }
 
+        [JsonProperty("LongNode", Required = Required.Always)]
+        public LongNode LongNode { get; set; }
+
         [JsonProperty("map", Required = Required.Always)]
         public Map Map { get; set; }
 
@@ -1389,24 +1407,30 @@ namespace QuickType
 
         [JsonProperty("namespace", Required = Required.Always)]
         public Namespace Namespace { get; set; }
+    }
 
-        [JsonProperty("native", Required = Required.Always)]
-        public Native Native { get; set; }
-
-        [JsonProperty("new", Required = Required.Always)]
-        public New New { get; set; }
-
-        [JsonProperty("newtonsoft", Required = Required.Always)]
-        public NewtonsoftClass Newtonsoft { get; set; }
+    public partial class Get
+    {
+        [JsonProperty("get", Required = Required.Always)]
+        public long GetGet { get; set; }
+    }
 
-        [JsonProperty("nil", Required = Required.Always)]
-        public Nil Nil { get; set; }
+    public partial class Global
+    {
+        [JsonProperty("global", Required = Required.Always)]
+        public long GlobalGlobal { get; set; }
+    }
 
-        [JsonProperty("NO", Required = Required.Always)]
-        public No No { get; set; }
+    public partial class Go
+    {
+        [JsonProperty("go", Required = Required.Always)]
+        public long GoGo { get; set; }
+    }
 
-        [JsonProperty("noexcept", Required = Required.Always)]
-        public Noexcept Noexcept { get; set; }
+    public partial class Goto
+    {
+        [JsonProperty("goto", Required = Required.Always)]
+        public long GotoGoto { get; set; }
     }
 
     public partial class Guard
@@ -1523,6 +1547,12 @@ namespace QuickType
         public long IntInt { get; set; }
     }
 
+    public partial class IntNode
+    {
+        [JsonProperty("IntNode", Required = Required.Always)]
+        public long IntNodeIntNode { get; set; }
+    }
+
     public partial class Interface
     {
         [JsonProperty("interface", Required = Required.Always)]
@@ -1715,6 +1745,12 @@ namespace QuickType
         public long LongLong { get; set; }
     }
 
+    public partial class LongNode
+    {
+        [JsonProperty("LongNode", Required = Required.Always)]
+        public long LongNodeLongNode { get; set; }
+    }
+
     public partial class Map
     {
         [JsonProperty("map", Required = Required.Always)]
@@ -1757,50 +1793,32 @@ namespace QuickType
         public long NamespaceNamespace { get; set; }
     }
 
-    public partial class Native
+    public partial class Obj4
     {
+        [JsonProperty("dummy", Required = Required.Always)]
+        public long Dummy { get; set; }
+
         [JsonProperty("native", Required = Required.Always)]
-        public long NativeNative { get; set; }
-    }
+        public Native Native { get; set; }
 
-    public partial class New
-    {
         [JsonProperty("new", Required = Required.Always)]
-        public long NewNew { get; set; }
-    }
+        public New New { get; set; }
 
-    public partial class NewtonsoftClass
-    {
         [JsonProperty("newtonsoft", Required = Required.Always)]
-        public long Newtonsoft { get; set; }
-    }
+        public NewtonsoftClass Newtonsoft { get; set; }
 
-    public partial class Nil
-    {
         [JsonProperty("nil", Required = Required.Always)]
-        public long NilNil { get; set; }
-    }
+        public Nil Nil { get; set; }
 
-    public partial class No
-    {
         [JsonProperty("NO", Required = Required.Always)]
-        public long NoNo { get; set; }
-    }
-
-    public partial class Noexcept
-    {
-        [JsonProperty("noexcept", Required = Required.Always)]
-        public long NoexceptNoexcept { get; set; }
-    }
-
-    public partial class Obj4
-    {
-        [JsonProperty("dummy", Required = Required.Always)]
-        public long Dummy { get; set; }
+        public No No { get; set; }
 
         [JsonProperty("noSuchMethod", Required = Required.Always)]
         public NoSuchMethod NoSuchMethod { get; set; }
 
+        [JsonProperty("noexcept", Required = Required.Always)]
+        public Noexcept Noexcept { get; set; }
+
         [JsonProperty("nonatomic", Required = Required.Always)]
         public Nonatomic Nonatomic { get; set; }
 
@@ -1831,6 +1849,9 @@ namespace QuickType
         [JsonProperty("NULL", Required = Required.Always)]
         public Null Null { get; set; }
 
+        [JsonProperty("NullNode", Required = Required.Always)]
+        public NullNode NullNode { get; set; }
+
         [JsonProperty("nullptr", Required = Required.Always)]
         public Nullptr Nullptr { get; set; }
 
@@ -1855,6 +1876,9 @@ namespace QuickType
         [JsonProperty("ObjectMapper", Required = Required.Always)]
         public ObjectMapper ObjectMapper { get; set; }
 
+        [JsonProperty("ObjectNode", Required = Required.Always)]
+        public ObjectNode ObjectNode { get; set; }
+
         [JsonProperty("of", Required = Required.Always)]
         public Of Of { get; set; }
 
@@ -1965,30 +1989,36 @@ namespace QuickType
 
         [JsonProperty("rethrows", Required = Required.Always)]
         public Rethrows Rethrows { get; set; }
+    }
 
-        [JsonProperty("return", Required = Required.Always)]
-        public Return Return { get; set; }
-
-        [JsonProperty("right", Required = Required.Always)]
-        public Right Right { get; set; }
-
-        [JsonProperty("runtimeType", Required = Required.Always)]
-        public RuntimeType RuntimeType { get; set; }
-
-        [JsonProperty("s", Required = Required.Always)]
-        public S S { get; set; }
+    public partial class Native
+    {
+        [JsonProperty("native", Required = Required.Always)]
+        public long NativeNative { get; set; }
+    }
 
-        [JsonProperty("sbyte", Required = Required.Always)]
-        public Sbyte Sbyte { get; set; }
+    public partial class New
+    {
+        [JsonProperty("new", Required = Required.Always)]
+        public long NewNew { get; set; }
+    }
 
-        [JsonProperty("sealed", Required = Required.Always)]
-        public Sealed Sealed { get; set; }
+    public partial class NewtonsoftClass
+    {
+        [JsonProperty("newtonsoft", Required = Required.Always)]
+        public long Newtonsoft { get; set; }
+    }
 
-        [JsonProperty("SEL", Required = Required.Always)]
-        public Sel Sel { get; set; }
+    public partial class Nil
+    {
+        [JsonProperty("nil", Required = Required.Always)]
+        public long NilNil { get; set; }
+    }
 
-        [JsonProperty("select", Required = Required.Always)]
-        public Select Select { get; set; }
+    public partial class No
+    {
+        [JsonProperty("NO", Required = Required.Always)]
+        public long NoNo { get; set; }
     }
 
     public partial class NoSuchMethod
@@ -1997,6 +2027,12 @@ namespace QuickType
         public long NoSuchMethodNoSuchMethod { get; set; }
     }
 
+    public partial class Noexcept
+    {
+        [JsonProperty("noexcept", Required = Required.Always)]
+        public long NoexceptNoexcept { get; set; }
+    }
+
     public partial class Nonatomic
     {
         [JsonProperty("nonatomic", Required = Required.Always)]
@@ -2057,6 +2093,12 @@ namespace QuickType
         public long NullNull { get; set; }
     }
 
+    public partial class NullNode
+    {
+        [JsonProperty("NullNode", Required = Required.Always)]
+        public long NullNodeNullNode { get; set; }
+    }
+
     public partial class Nullptr
     {
         [JsonProperty("nullptr", Required = Required.Always)]
@@ -2105,6 +2147,12 @@ namespace QuickType
         public long ObjectMapperObjectMapper { get; set; }
     }
 
+    public partial class ObjectNode
+    {
+        [JsonProperty("ObjectNode", Required = Required.Always)]
+        public long ObjectNodeObjectNode { get; set; }
+    }
+
     public partial class Of
     {
         [JsonProperty("of", Required = Required.Always)]
@@ -2327,61 +2375,13 @@ namespace QuickType
         public long RethrowsRethrows { get; set; }
     }
 
-    public partial class Return
+    public partial class Obj5
     {
-        [JsonProperty("return", Required = Required.Always)]
-        public long ReturnReturn { get; set; }
-    }
+        [JsonProperty("dummy", Required = Required.Always)]
+        public long Dummy { get; set; }
 
-    public partial class Right
-    {
-        [JsonProperty("right", Required = Required.Always)]
-        public long RightRight { get; set; }
-    }
-
-    public partial class RuntimeType
-    {
-        [JsonProperty("runtimeType", Required = Required.Always)]
-        public long RuntimeTypeRuntimeType { get; set; }
-    }
-
-    public partial class S
-    {
-        [JsonProperty("s", Required = Required.Always)]
-        public long SS { get; set; }
-    }
-
-    public partial class Sbyte
-    {
-        [JsonProperty("sbyte", Required = Required.Always)]
-        public long SbyteSbyte { get; set; }
-    }
-
-    public partial class Sealed
-    {
-        [JsonProperty("sealed", Required = Required.Always)]
-        public long SealedSealed { get; set; }
-    }
-
-    public partial class Sel
-    {
-        [JsonProperty("SEL", Required = Required.Always)]
-        public long SelSel { get; set; }
-    }
-
-    public partial class Select
-    {
-        [JsonProperty("select", Required = Required.Always)]
-        public long SelectSelect { get; set; }
-    }
-
-    public partial class Obj5
-    {
-        [JsonProperty("dummy", Required = Required.Always)]
-        public long Dummy { get; set; }
-
-        [JsonProperty("self", Required = Required.Always)]
-        public SelfClass Obj5Self { get; set; }
+        [JsonProperty("self", Required = Required.Always)]
+        public SelfClass Obj5Self { get; set; }
 
         [JsonProperty("to_json", Required = Required.Always)]
         public ToJson Obj5ToJson { get; set; }
@@ -2395,12 +2395,39 @@ namespace QuickType
         [JsonProperty("type", Required = Required.Always)]
         public Obj5Type Obj5Type { get; set; }
 
+        [JsonProperty("return", Required = Required.Always)]
+        public Return Return { get; set; }
+
+        [JsonProperty("right", Required = Required.Always)]
+        public Right Right { get; set; }
+
+        [JsonProperty("runtimeType", Required = Required.Always)]
+        public RuntimeType RuntimeType { get; set; }
+
+        [JsonProperty("s", Required = Required.Always)]
+        public S S { get; set; }
+
+        [JsonProperty("sbyte", Required = Required.Always)]
+        public Sbyte Sbyte { get; set; }
+
+        [JsonProperty("sealed", Required = Required.Always)]
+        public Sealed Sealed { get; set; }
+
+        [JsonProperty("SEL", Required = Required.Always)]
+        public Sel Sel { get; set; }
+
+        [JsonProperty("select", Required = Required.Always)]
+        public Select Select { get; set; }
+
         [JsonProperty("Self", Required = Required.Always)]
         public Self Self { get; set; }
 
         [JsonProperty("Sendable", Required = Required.Always)]
         public Sendable Sendable { get; set; }
 
+        [JsonProperty("SerializationFeature", Required = Required.Always)]
+        public SerializationFeature SerializationFeature { get; set; }
+
         [JsonProperty("serialize", Required = Required.Always)]
         public SerializeClass Serialize { get; set; }
 
@@ -2473,6 +2500,9 @@ namespace QuickType
         [JsonProperty("template", Required = Required.Always)]
         public Template Template { get; set; }
 
+        [JsonProperty("TextNode", Required = Required.Always)]
+        public TextNode TextNode { get; set; }
+
         [JsonProperty("then", Required = Required.Always)]
         public Then Then { get; set; }
 
@@ -2541,36 +2571,6 @@ namespace QuickType
 
         [JsonProperty("union", Required = Required.Always)]
         public Union Union { get; set; }
-
-        [JsonProperty("unowned", Required = Required.Always)]
-        public Unowned Unowned { get; set; }
-
-        [JsonProperty("unsafe", Required = Required.Always)]
-        public Unsafe Unsafe { get; set; }
-
-        [JsonProperty("unsigned", Required = Required.Always)]
-        public Unsigned Unsigned { 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 SelfClass
@@ -2603,6 +2603,54 @@ namespace QuickType
         public long Type { get; set; }
     }
 
+    public partial class Return
+    {
+        [JsonProperty("return", Required = Required.Always)]
+        public long ReturnReturn { get; set; }
+    }
+
+    public partial class Right
+    {
+        [JsonProperty("right", Required = Required.Always)]
+        public long RightRight { get; set; }
+    }
+
+    public partial class RuntimeType
+    {
+        [JsonProperty("runtimeType", Required = Required.Always)]
+        public long RuntimeTypeRuntimeType { get; set; }
+    }
+
+    public partial class S
+    {
+        [JsonProperty("s", Required = Required.Always)]
+        public long SS { get; set; }
+    }
+
+    public partial class Sbyte
+    {
+        [JsonProperty("sbyte", Required = Required.Always)]
+        public long SbyteSbyte { get; set; }
+    }
+
+    public partial class Sealed
+    {
+        [JsonProperty("sealed", Required = Required.Always)]
+        public long SealedSealed { get; set; }
+    }
+
+    public partial class Sel
+    {
+        [JsonProperty("SEL", Required = Required.Always)]
+        public long SelSel { get; set; }
+    }
+
+    public partial class Select
+    {
+        [JsonProperty("select", Required = Required.Always)]
+        public long SelectSelect { get; set; }
+    }
+
     public partial class Self
     {
         [JsonProperty("Self", Required = Required.Always)]
@@ -2615,6 +2663,12 @@ namespace QuickType
         public long SendableSendable { get; set; }
     }
 
+    public partial class SerializationFeature
+    {
+        [JsonProperty("SerializationFeature", Required = Required.Always)]
+        public long SerializationFeatureSerializationFeature { get; set; }
+    }
+
     public partial class SerializeClass
     {
         [JsonProperty("serialize", Required = Required.Always)]
@@ -2759,6 +2813,12 @@ namespace QuickType
         public long TemplateTemplate { get; set; }
     }
 
+    public partial class TextNode
+    {
+        [JsonProperty("TextNode", Required = Required.Always)]
+        public long TextNodeTextNode { get; set; }
+    }
+
     public partial class Then
     {
         [JsonProperty("then", Required = Required.Always)]
@@ -2897,6 +2957,78 @@ namespace QuickType
         public long UnionUnion { get; set; }
     }
 
+    public partial class Obj6
+    {
+        [JsonProperty("dummy", Required = Required.Always)]
+        public long Dummy { get; set; }
+
+        [JsonProperty("unowned", Required = Required.Always)]
+        public Unowned Unowned { get; set; }
+
+        [JsonProperty("unsafe", Required = Required.Always)]
+        public Unsafe Unsafe { get; set; }
+
+        [JsonProperty("unsigned", Required = Required.Always)]
+        public Unsigned Unsigned { 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; }
+
+        [JsonProperty("void", Required = Required.Always)]
+        public Void Void { get; set; }
+
+        [JsonProperty("volatile", Required = Required.Always)]
+        public Volatile Volatile { get; set; }
+
+        [JsonProperty("wchar_t", Required = Required.Always)]
+        public WcharT WcharT { get; set; }
+
+        [JsonProperty("weak", Required = Required.Always)]
+        public Weak Weak { get; set; }
+
+        [JsonProperty("where", Required = Required.Always)]
+        public Where Where { get; set; }
+
+        [JsonProperty("while", Required = Required.Always)]
+        public While While { get; set; }
+
+        [JsonProperty("willSet", Required = Required.Always)]
+        public WillSet WillSet { get; set; }
+
+        [JsonProperty("with", Required = Required.Always)]
+        public With With { get; set; }
+
+        [JsonProperty("xor", Required = Required.Always)]
+        public Xor Xor { get; set; }
+
+        [JsonProperty("xor_eq", Required = Required.Always)]
+        public XorEq XorEq { get; set; }
+
+        [JsonProperty("YES", Required = Required.Always)]
+        public Yes Yes { get; set; }
+
+        [JsonProperty("yield", Required = Required.Always)]
+        public Yield Yield { get; set; }
+    }
+
     public partial class Unowned
     {
         [JsonProperty("unowned", Required = Required.Always)]
@@ -2957,48 +3089,6 @@ namespace QuickType
         public long VirtualVirtual { get; set; }
     }
 
-    public partial class Obj6
-    {
-        [JsonProperty("dummy", Required = Required.Always)]
-        public long Dummy { get; set; }
-
-        [JsonProperty("void", Required = Required.Always)]
-        public Void Void { get; set; }
-
-        [JsonProperty("volatile", Required = Required.Always)]
-        public Volatile Volatile { get; set; }
-
-        [JsonProperty("wchar_t", Required = Required.Always)]
-        public WcharT WcharT { get; set; }
-
-        [JsonProperty("weak", Required = Required.Always)]
-        public Weak Weak { get; set; }
-
-        [JsonProperty("where", Required = Required.Always)]
-        public Where Where { get; set; }
-
-        [JsonProperty("while", Required = Required.Always)]
-        public While While { get; set; }
-
-        [JsonProperty("willSet", Required = Required.Always)]
-        public WillSet WillSet { get; set; }
-
-        [JsonProperty("with", Required = Required.Always)]
-        public With With { get; set; }
-
-        [JsonProperty("xor", Required = Required.Always)]
-        public Xor Xor { get; set; }
-
-        [JsonProperty("xor_eq", Required = Required.Always)]
-        public XorEq XorEq { get; set; }
-
-        [JsonProperty("YES", Required = Required.Always)]
-        public Yes Yes { get; set; }
-
-        [JsonProperty("yield", Required = Required.Always)]
-        public Yield Yield { 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..8dc9811 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
@@ -81,6 +81,10 @@ namespace QuickType
         [JsonPropertyName("array")]
         public Array Array { get; set; }
 
+        [JsonRequired]
+        [JsonPropertyName("ArrayNode")]
+        public ArrayNode ArrayNode { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("as")]
         public As As { get; set; }
@@ -149,6 +153,10 @@ namespace QuickType
         [JsonPropertyName("boolean")]
         public Boolean Boolean { get; set; }
 
+        [JsonRequired]
+        [JsonPropertyName("BooleanNode")]
+        public BooleanNode BooleanNode { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("break")]
         public Break Break { get; set; }
@@ -277,14 +285,6 @@ namespace QuickType
         [JsonPropertyName("converter")]
         public ConverterClass Converter { get; set; }
 
-        [JsonRequired]
-        [JsonPropertyName("CultureInfo")]
-        public CultureInfoClass CultureInfo { get; set; }
-
-        [JsonRequired]
-        [JsonPropertyName("date")]
-        public Date Date { get; set; }
-
         [JsonRequired]
         [JsonPropertyName("dummy")]
         public long Dummy { get; set; }
@@ -363,6 +363,13 @@ namespace QuickType
         public long ArrayArray { get; set; }
     }
 
+    public partial class ArrayNode
+    {
+        [JsonRequired]
+        [JsonPropertyName("ArrayNode")]
+        public long ArrayNodeArrayNode { get; set; }
+    }
+
     public partial class As
     {
         [JsonRequired]
@@ -482,6 +489,13 @@ namespace QuickType
         public long BooleanBoolean { get; set; }
     }
 
+    public partial class BooleanNode
+    {
+        [JsonRequired]
+        [JsonPropertyName("BooleanNode")]
+        public long BooleanNodeBooleanNode { get; set; }
+    }
+
     public partial class Break
     {
         [JsonRequired]
@@ -706,20 +720,6 @@ namespace QuickType
         public long Converter { get; set; }
     }
 
-    public partial class CultureInfoClass
-    {
-        [JsonRequired]
-        [JsonPropertyName("CultureInfo")]
-        public long CultureInfo { get; set; }
-    }
-
-    public partial class Date
-    {
-        [JsonRequired]
-        [JsonPropertyName("date")]
-        public long DateDate { get; set; }
-    }
-
     public partial class Empty
     {
         [JsonRequired]
@@ -764,6 +764,14 @@ namespace QuickType
 
     public partial class Obj2
     {
+        [JsonRequired]
+        [JsonPropertyName("CultureInfo")]
+        public CultureInfoClass CultureInfo { get; set; }
+
+        [JsonRequired]
+        [JsonPropertyName("date")]
+        public Date Date { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("DateFormatter")]
         public DateFormatter DateFormatter { get; set; }
@@ -844,6 +852,10 @@ namespace QuickType
         [JsonPropertyName("delete")]
         public Delete Delete { get; set; }
 
+        [JsonRequired]
+        [JsonPropertyName("DeserializationFeature")]
+        public DeserializationFeature DeserializationFeature { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("dict")]
         public Dict Dict { get; set; }
@@ -864,6 +876,10 @@ namespace QuickType
         [JsonPropertyName("double")]
         public Double Double { get; set; }
 
+        [JsonRequired]
+        [JsonPropertyName("DoubleNode")]
+        public DoubleNode DoubleNode { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("dummy")]
         public long Dummy { get; set; }
@@ -1000,22 +1016,6 @@ namespace QuickType
         [JsonPropertyName("function")]
         public Function Function { get; set; }
 
-        [JsonRequired]
-        [JsonPropertyName("get")]
-        public Get Get { get; set; }
-
-        [JsonRequired]
-        [JsonPropertyName("global")]
-        public Global Global { get; set; }
-
-        [JsonRequired]
-        [JsonPropertyName("go")]
-        public Go Go { get; set; }
-
-        [JsonRequired]
-        [JsonPropertyName("goto")]
-        public Goto Goto { get; set; }
-
         [JsonRequired]
         [JsonPropertyName("false")]
         public FalseClass Obj2False { get; set; }
@@ -1025,6 +1025,20 @@ namespace QuickType
         public FromJsonClass Obj2FromJson { get; set; }
     }
 
+    public partial class CultureInfoClass
+    {
+        [JsonRequired]
+        [JsonPropertyName("CultureInfo")]
+        public long CultureInfo { get; set; }
+    }
+
+    public partial class Date
+    {
+        [JsonRequired]
+        [JsonPropertyName("date")]
+        public long DateDate { get; set; }
+    }
+
     public partial class DateFormatter
     {
         [JsonRequired]
@@ -1165,6 +1179,13 @@ namespace QuickType
         public long DeleteDelete { get; set; }
     }
 
+    public partial class DeserializationFeature
+    {
+        [JsonRequired]
+        [JsonPropertyName("DeserializationFeature")]
+        public long DeserializationFeatureDeserializationFeature { get; set; }
+    }
+
     public partial class Dict
     {
         [JsonRequired]
@@ -1200,6 +1221,13 @@ namespace QuickType
         public long DoubleDouble { get; set; }
     }
 
+    public partial class DoubleNode
+    {
+        [JsonRequired]
+        [JsonPropertyName("DoubleNode")]
+        public long DoubleNodeDoubleNode { get; set; }
+    }
+
     public partial class Dynamic
     {
         [JsonRequired]
@@ -1431,34 +1459,6 @@ namespace QuickType
         public long FunctionFunction { get; set; }
     }
 
-    public partial class Get
-    {
-        [JsonRequired]
-        [JsonPropertyName("get")]
-        public long GetGet { get; set; }
-    }
-
-    public partial class Global
-    {
-        [JsonRequired]
-        [JsonPropertyName("global")]
-        public long GlobalGlobal { get; set; }
-    }
-
-    public partial class Go
-    {
-        [JsonRequired]
-        [JsonPropertyName("go")]
-        public long GoGo { get; set; }
-    }
-
-    public partial class Goto
-    {
-        [JsonRequired]
-        [JsonPropertyName("goto")]
-        public long GotoGoto { get; set; }
-    }
-
     public partial class FalseClass
     {
         [JsonRequired]
@@ -1479,6 +1479,22 @@ namespace QuickType
         [JsonPropertyName("dummy")]
         public long Dummy { get; set; }
 
+        [JsonRequired]
+        [JsonPropertyName("get")]
+        public Get Get { get; set; }
+
+        [JsonRequired]
+        [JsonPropertyName("global")]
+        public Global Global { get; set; }
+
+        [JsonRequired]
+        [JsonPropertyName("go")]
+        public Go Go { get; set; }
+
+        [JsonRequired]
+        [JsonPropertyName("goto")]
+        public Goto Goto { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("guard")]
         public Guard Guard { get; set; }
@@ -1555,6 +1571,10 @@ namespace QuickType
         [JsonPropertyName("int")]
         public Int Int { get; set; }
 
+        [JsonRequired]
+        [JsonPropertyName("IntNode")]
+        public IntNode IntNode { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("interface")]
         public Interface Interface { get; set; }
@@ -1683,6 +1703,10 @@ namespace QuickType
         [JsonPropertyName("long")]
         public Long Long { get; set; }
 
+        [JsonRequired]
+        [JsonPropertyName("LongNode")]
+        public LongNode LongNode { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("map")]
         public Map Map { get; set; }
@@ -1710,30 +1734,34 @@ namespace QuickType
         [JsonRequired]
         [JsonPropertyName("namespace")]
         public Namespace Namespace { get; set; }
+    }
 
+    public partial class Get
+    {
         [JsonRequired]
-        [JsonPropertyName("native")]
-        public Native Native { get; set; }
-
-        [JsonRequired]
-        [JsonPropertyName("new")]
-        public New New { get; set; }
-
-        [JsonRequired]
-        [JsonPropertyName("newtonsoft")]
-        public Newtonsoft Newtonsoft { get; set; }
+        [JsonPropertyName("get")]
+        public long GetGet { get; set; }
+    }
 
+    public partial class Global
+    {
         [JsonRequired]
-        [JsonPropertyName("nil")]
-        public Nil Nil { get; set; }
+        [JsonPropertyName("global")]
+        public long GlobalGlobal { get; set; }
+    }
 
+    public partial class Go
+    {
         [JsonRequired]
-        [JsonPropertyName("NO")]
-        public No No { get; set; }
+        [JsonPropertyName("go")]
+        public long GoGo { get; set; }
+    }
 
+    public partial class Goto
+    {
         [JsonRequired]
-        [JsonPropertyName("noexcept")]
-        public Noexcept Noexcept { get; set; }
+        [JsonPropertyName("goto")]
+        public long GotoGoto { get; set; }
     }
 
     public partial class Guard
@@ -1869,6 +1897,13 @@ namespace QuickType
         public long IntInt { get; set; }
     }
 
+    public partial class IntNode
+    {
+        [JsonRequired]
+        [JsonPropertyName("IntNode")]
+        public long IntNodeIntNode { get; set; }
+    }
+
     public partial class Interface
     {
         [JsonRequired]
@@ -2093,6 +2128,13 @@ namespace QuickType
         public long LongLong { get; set; }
     }
 
+    public partial class LongNode
+    {
+        [JsonRequired]
+        [JsonPropertyName("LongNode")]
+        public long LongNodeLongNode { get; set; }
+    }
+
     public partial class Map
     {
         [JsonRequired]
@@ -2142,58 +2184,40 @@ namespace QuickType
         public long NamespaceNamespace { get; set; }
     }
 
-    public partial class Native
+    public partial class Obj4
     {
+        [JsonRequired]
+        [JsonPropertyName("dummy")]
+        public long Dummy { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("native")]
-        public long NativeNative { get; set; }
-    }
+        public Native Native { get; set; }
 
-    public partial class New
-    {
         [JsonRequired]
         [JsonPropertyName("new")]
-        public long NewNew { get; set; }
-    }
+        public New New { get; set; }
 
-    public partial class Newtonsoft
-    {
         [JsonRequired]
         [JsonPropertyName("newtonsoft")]
-        public long NewtonsoftNewtonsoft { get; set; }
-    }
+        public Newtonsoft Newtonsoft { get; set; }
 
-    public partial class Nil
-    {
         [JsonRequired]
         [JsonPropertyName("nil")]
-        public long NilNil { get; set; }
-    }
+        public Nil Nil { get; set; }
 
-    public partial class No
-    {
         [JsonRequired]
         [JsonPropertyName("NO")]
-        public long NoNo { get; set; }
-    }
-
-    public partial class Noexcept
-    {
-        [JsonRequired]
-        [JsonPropertyName("noexcept")]
-        public long NoexceptNoexcept { get; set; }
-    }
-
-    public partial class Obj4
-    {
-        [JsonRequired]
-        [JsonPropertyName("dummy")]
-        public long Dummy { get; set; }
+        public No No { get; set; }
 
         [JsonRequired]
         [JsonPropertyName("noSuchMethod")]
         public NoSuchMethod NoSuchMethod { get; set; }
 
+        [JsonRequired]
+        [JsonPropertyName("noexcept")]
+        public Noexcept Noexcept { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("nonatomic")]
         public Nonatomic Nonatomic { get; set; }
@@ -2234,6 +2258,10 @@ namespace QuickType
         [JsonPropertyName("NULL")]
         public Null Null { get; set; }
 
+        [JsonRequired]
+        [JsonPropertyName("NullNode")]
+        public NullNode NullNode { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("nullptr")]
         public Nullptr Nullptr { get; set; }
@@ -2266,6 +2294,10 @@ namespace QuickType
         [JsonPropertyName("ObjectMapper")]
         public ObjectMapper ObjectMapper { get; set; }
 
+        [JsonRequired]
+        [JsonPropertyName("ObjectNode")]
+        public ObjectNode ObjectNode { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("of")]
         public Of Of { get; set; }
@@ -2413,38 +2445,41 @@ namespace QuickType
         [JsonRequired]
         [JsonPropertyName("rethrows")]
         public Rethrows Rethrows { get; set; }
+    }
 
+    public partial class Native
+    {
         [JsonRequired]
-        [JsonPropertyName("return")]
-        public Return Return { get; set; }
+        [JsonPropertyName("native")]
+        public long NativeNative { get; set; }
+    }
 
+    public partial class New
+    {
         [JsonRequired]
-        [JsonPropertyName("right")]
-        public Right Right { get; set; }
+        [JsonPropertyName("new")]
+        public long NewNew { get; set; }
+    }
 
+    public partial class Newtonsoft
+    {
         [JsonRequired]
-        [JsonPropertyName("runtimeType")]
-        public RuntimeType RuntimeType { get; set; }
+        [JsonPropertyName("newtonsoft")]
+        public long NewtonsoftNewtonsoft { get; set; }
+    }
 
+    public partial class Nil
+    {
         [JsonRequired]
-        [JsonPropertyName("s")]
-        public S S { get; set; }
-
-        [JsonRequired]
-        [JsonPropertyName("sbyte")]
-        public Sbyte Sbyte { get; set; }
-
-        [JsonRequired]
-        [JsonPropertyName("sealed")]
-        public Sealed Sealed { get; set; }
-
-        [JsonRequired]
-        [JsonPropertyName("SEL")]
-        public Sel Sel { get; set; }
+        [JsonPropertyName("nil")]
+        public long NilNil { get; set; }
+    }
 
+    public partial class No
+    {
         [JsonRequired]
-        [JsonPropertyName("select")]
-        public Select Select { get; set; }
+        [JsonPropertyName("NO")]
+        public long NoNo { get; set; }
     }
 
     public partial class NoSuchMethod
@@ -2454,6 +2489,13 @@ namespace QuickType
         public long NoSuchMethodNoSuchMethod { get; set; }
     }
 
+    public partial class Noexcept
+    {
+        [JsonRequired]
+        [JsonPropertyName("noexcept")]
+        public long NoexceptNoexcept { get; set; }
+    }
+
     public partial class Nonatomic
     {
         [JsonRequired]
@@ -2524,6 +2566,13 @@ namespace QuickType
         public long NullNull { get; set; }
     }
 
+    public partial class NullNode
+    {
+        [JsonRequired]
+        [JsonPropertyName("NullNode")]
+        public long NullNodeNullNode { get; set; }
+    }
+
     public partial class Nullptr
     {
         [JsonRequired]
@@ -2580,6 +2629,13 @@ namespace QuickType
         public long ObjectMapperObjectMapper { get; set; }
     }
 
+    public partial class ObjectNode
+    {
+        [JsonRequired]
+        [JsonPropertyName("ObjectNode")]
+        public long ObjectNodeObjectNode { get; set; }
+    }
+
     public partial class Of
     {
         [JsonRequired]
@@ -2839,87 +2895,63 @@ namespace QuickType
         public long RethrowsRethrows { get; set; }
     }
 
-    public partial class Return
+    public partial class Obj5
     {
         [JsonRequired]
-        [JsonPropertyName("return")]
-        public long ReturnReturn { get; set; }
-    }
+        [JsonPropertyName("dummy")]
+        public long Dummy { get; set; }
 
-    public partial class Right
-    {
         [JsonRequired]
-        [JsonPropertyName("right")]
-        public long RightRight { get; set; }
-    }
+        [JsonPropertyName("self")]
+        public SelfClass Obj5Self { get; set; }
 
-    public partial class RuntimeType
-    {
         [JsonRequired]
-        [JsonPropertyName("runtimeType")]
-        public long RuntimeTypeRuntimeType { get; set; }
-    }
+        [JsonPropertyName("to_json")]
+        public ToJson Obj5ToJson { get; set; }
 
-    public partial class S
-    {
         [JsonRequired]
-        [JsonPropertyName("s")]
-        public long SS { get; set; }
-    }
+        [JsonPropertyName("toString")]
+        public ToString Obj5ToString { get; set; }
 
-    public partial class Sbyte
-    {
         [JsonRequired]
-        [JsonPropertyName("sbyte")]
-        public long SbyteSbyte { get; set; }
-    }
+        [JsonPropertyName("true")]
+        public TrueClass Obj5True { get; set; }
 
-    public partial class Sealed
-    {
         [JsonRequired]
-        [JsonPropertyName("sealed")]
-        public long SealedSealed { get; set; }
-    }
+        [JsonPropertyName("type")]
+        public Obj5Type Obj5Type { get; set; }
 
-    public partial class Sel
-    {
         [JsonRequired]
-        [JsonPropertyName("SEL")]
-        public long SelSel { get; set; }
-    }
+        [JsonPropertyName("return")]
+        public Return Return { get; set; }
 
-    public partial class Select
-    {
         [JsonRequired]
-        [JsonPropertyName("select")]
-        public long SelectSelect { get; set; }
-    }
+        [JsonPropertyName("right")]
+        public Right Right { get; set; }
 
-    public partial class Obj5
-    {
         [JsonRequired]
-        [JsonPropertyName("dummy")]
-        public long Dummy { get; set; }
+        [JsonPropertyName("runtimeType")]
+        public RuntimeType RuntimeType { get; set; }
 
         [JsonRequired]
-        [JsonPropertyName("self")]
-        public SelfClass Obj5Self { get; set; }
+        [JsonPropertyName("s")]
+        public S S { get; set; }
 
         [JsonRequired]
-        [JsonPropertyName("to_json")]
-        public ToJson Obj5ToJson { get; set; }
+        [JsonPropertyName("sbyte")]
+        public Sbyte Sbyte { get; set; }
 
         [JsonRequired]
-        [JsonPropertyName("toString")]
-        public ToString Obj5ToString { get; set; }
+        [JsonPropertyName("sealed")]
+        public Sealed Sealed { get; set; }
 
         [JsonRequired]
-        [JsonPropertyName("true")]
-        public TrueClass Obj5True { get; set; }
+        [JsonPropertyName("SEL")]
+        public Sel Sel { get; set; }
 
         [JsonRequired]
-        [JsonPropertyName("type")]
-        public Obj5Type Obj5Type { get; set; }
+        [JsonPropertyName("select")]
+        public Select Select { get; set; }
 
         [JsonRequired]
         [JsonPropertyName("Self")]
@@ -2929,6 +2961,10 @@ namespace QuickType
         [JsonPropertyName("Sendable")]
         public Sendable Sendable { get; set; }
 
+        [JsonRequired]
+        [JsonPropertyName("SerializationFeature")]
+        public SerializationFeature SerializationFeature { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("serialize")]
         public SerializeClass Serialize { get; set; }
@@ -3025,6 +3061,10 @@ namespace QuickType
         [JsonPropertyName("template")]
         public Template Template { get; set; }
 
+        [JsonRequired]
+        [JsonPropertyName("TextNode")]
+        public TextNode TextNode { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("then")]
         public Then Then { get; set; }
@@ -3116,81 +3156,97 @@ namespace QuickType
         [JsonRequired]
         [JsonPropertyName("union")]
         public Union Union { get; set; }
+    }
 
+    public partial class SelfClass
+    {
         [JsonRequired]
-        [JsonPropertyName("unowned")]
-        public Unowned Unowned { get; set; }
-
-        [JsonRequired]
-        [JsonPropertyName("unsafe")]
-        public Unsafe Unsafe { get; set; }
-
-        [JsonRequired]
-        [JsonPropertyName("unsigned")]
-        public Unsigned Unsigned { get; set; }
+        [JsonPropertyName("self")]
+        public long Self { get; set; }
+    }
 
+    public partial class ToJson
+    {
         [JsonRequired]
-        [JsonPropertyName("ushort")]
-        public Ushort Ushort { get; set; }
+        [JsonPropertyName("to_json")]
+        public long ToJsonToJson { get; set; }
+    }
 
+    public partial class ToString
+    {
         [JsonRequired]
-        [JsonPropertyName("using")]
-        public Using Using { get; set; }
+        [JsonPropertyName("toString")]
+        public long ToStringToString { get; set; }
+    }
 
+    public partial class TrueClass
+    {
         [JsonRequired]
-        [JsonPropertyName("Utf8JsonReader")]
-        public Utf8JsonReaderClass Utf8JsonReader { get; set; }
+        [JsonPropertyName("true")]
+        public long True { get; set; }
+    }
 
+    public partial class Obj5Type
+    {
         [JsonRequired]
-        [JsonPropertyName("Utf8JsonWriter")]
-        public Utf8JsonWriterClass Utf8JsonWriter { get; set; }
+        [JsonPropertyName("type")]
+        public long Type { get; set; }
+    }
 
+    public partial class Return
+    {
         [JsonRequired]
-        [JsonPropertyName("UUID")]
-        public Uuid Uuid { get; set; }
+        [JsonPropertyName("return")]
+        public long ReturnReturn { get; set; }
+    }
 
+    public partial class Right
+    {
         [JsonRequired]
-        [JsonPropertyName("var")]
-        public Var Var { get; set; }
+        [JsonPropertyName("right")]
+        public long RightRight { get; set; }
+    }
 
+    public partial class RuntimeType
+    {
         [JsonRequired]
-        [JsonPropertyName("virtual")]
-        public Virtual Virtual { get; set; }
+        [JsonPropertyName("runtimeType")]
+        public long RuntimeTypeRuntimeType { get; set; }
     }
 
-    public partial class SelfClass
+    public partial class S
     {
         [JsonRequired]
-        [JsonPropertyName("self")]
-        public long Self { get; set; }
+        [JsonPropertyName("s")]
+        public long SS { get; set; }
     }
 
-    public partial class ToJson
+    public partial class Sbyte
     {
         [JsonRequired]
-        [JsonPropertyName("to_json")]
-        public long ToJsonToJson { get; set; }
+        [JsonPropertyName("sbyte")]
+        public long SbyteSbyte { get; set; }
     }
 
-    public partial class ToString
+    public partial class Sealed
     {
         [JsonRequired]
-        [JsonPropertyName("toString")]
-        public long ToStringToString { get; set; }
+        [JsonPropertyName("sealed")]
+        public long SealedSealed { get; set; }
     }
 
-    public partial class TrueClass
+    public partial class Sel
     {
         [JsonRequired]
-        [JsonPropertyName("true")]
-        public long True { get; set; }
+        [JsonPropertyName("SEL")]
+        public long SelSel { get; set; }
     }
 
-    public partial class Obj5Type
+    public partial class Select
     {
         [JsonRequired]
-        [JsonPropertyName("type")]
-        public long Type { get; set; }
+        [JsonPropertyName("select")]
+        public long SelectSelect { get; set; }
     }
 
     public partial class Self
@@ -3207,6 +3263,13 @@ namespace QuickType
         public long SendableSendable { get; set; }
     }
 
+    public partial class SerializationFeature
+    {
+        [JsonRequired]
+        [JsonPropertyName("SerializationFeature")]
+        public long SerializationFeatureSerializationFeature { get; set; }
+    }
+
     public partial class SerializeClass
     {
         [JsonRequired]
@@ -3375,6 +3438,13 @@ namespace QuickType
         public long TemplateTemplate { get; set; }
     }
 
+    public partial class TextNode
+    {
+        [JsonRequired]
+        [JsonPropertyName("TextNode")]
+        public long TextNodeTextNode { get; set; }
+    }
+
     public partial class Then
     {
         [JsonRequired]
@@ -3536,81 +3606,51 @@ namespace QuickType
         public long UnionUnion { get; set; }
     }
 
-    public partial class Unowned
+    public partial class Obj6
     {
+        [JsonRequired]
+        [JsonPropertyName("dummy")]
+        public long Dummy { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("unowned")]
-        public long UnownedUnowned { get; set; }
-    }
+        public Unowned Unowned { get; set; }
 
-    public partial class Unsafe
-    {
         [JsonRequired]
         [JsonPropertyName("unsafe")]
-        public long UnsafeUnsafe { get; set; }
-    }
+        public Unsafe Unsafe { get; set; }
 
-    public partial class Unsigned
-    {
         [JsonRequired]
         [JsonPropertyName("unsigned")]
-        public long UnsignedUnsigned { get; set; }
-    }
+        public Unsigned Unsigned { get; set; }
 
-    public partial class Ushort
-    {
         [JsonRequired]
         [JsonPropertyName("ushort")]
-        public long UshortUshort { get; set; }
-    }
+        public Ushort Ushort { get; set; }
 
-    public partial class Using
-    {
         [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 +3701,76 @@ namespace QuickType
         public Yield Yield { get; set; }
     }
 
+    public partial class Unowned
+    {
+        [JsonRequired]
+        [JsonPropertyName("unowned")]
+        public long UnownedUnowned { get; set; }
+    }
+
+    public partial class Unsafe
+    {
+        [JsonRequired]
+        [JsonPropertyName("unsafe")]
+        public long UnsafeUnsafe { get; set; }
+    }
+
+    public partial class Unsigned
+    {
+        [JsonRequired]
+        [JsonPropertyName("unsigned")]
+        public long UnsignedUnsigned { get; set; }
+    }
+
+    public partial class Ushort
+    {
+        [JsonRequired]
+        [JsonPropertyName("ushort")]
+        public long UshortUshort { 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..dbeb425 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
@@ -70,6 +70,9 @@ namespace QuickType
         [JsonProperty("array", Required = Required.Always)]
         public Array Array { get; set; }
 
+        [JsonProperty("ArrayNode", Required = Required.Always)]
+        public ArrayNode ArrayNode { get; set; }
+
         [JsonProperty("as", Required = Required.Always)]
         public As As { get; set; }
 
@@ -121,6 +124,9 @@ namespace QuickType
         [JsonProperty("boolean", Required = Required.Always)]
         public Boolean Boolean { get; set; }
 
+        [JsonProperty("BooleanNode", Required = Required.Always)]
+        public BooleanNode BooleanNode { get; set; }
+
         [JsonProperty("break", Required = Required.Always)]
         public Break Break { get; set; }
 
@@ -214,12 +220,6 @@ namespace QuickType
         [JsonProperty("converter", Required = Required.Always)]
         public ConverterClass Converter { get; set; }
 
-        [JsonProperty("CultureInfo", Required = Required.Always)]
-        public CultureInfo CultureInfo { get; set; }
-
-        [JsonProperty("date", Required = Required.Always)]
-        public Date Date { get; set; }
-
         [JsonProperty("dummy", Required = Required.Always)]
         public long Dummy { get; set; }
 
@@ -287,6 +287,12 @@ namespace QuickType
         public long ArrayArray { get; set; }
     }
 
+    public partial record ArrayNode
+    {
+        [JsonProperty("ArrayNode", Required = Required.Always)]
+        public long ArrayNodeArrayNode { get; set; }
+    }
+
     public partial record As
     {
         [JsonProperty("as", Required = Required.Always)]
@@ -389,6 +395,12 @@ namespace QuickType
         public long BooleanBoolean { get; set; }
     }
 
+    public partial record BooleanNode
+    {
+        [JsonProperty("BooleanNode", Required = Required.Always)]
+        public long BooleanNodeBooleanNode { get; set; }
+    }
+
     public partial record Break
     {
         [JsonProperty("break", Required = Required.Always)]
@@ -575,18 +587,6 @@ namespace QuickType
         public long Converter { get; set; }
     }
 
-    public partial record CultureInfo
-    {
-        [JsonProperty("CultureInfo", Required = Required.Always)]
-        public long CultureInfoCultureInfo { get; set; }
-    }
-
-    public partial record Date
-    {
-        [JsonProperty("date", Required = Required.Always)]
-        public long DateDate { get; set; }
-    }
-
     public partial record Empty
     {
         [JsonProperty("_", Required = Required.Always)]
@@ -631,6 +631,12 @@ namespace QuickType
 
     public partial record Obj2
     {
+        [JsonProperty("CultureInfo", Required = Required.Always)]
+        public CultureInfo CultureInfo { get; set; }
+
+        [JsonProperty("date", Required = Required.Always)]
+        public Date Date { get; set; }
+
         [JsonProperty("DateFormatter", Required = Required.Always)]
         public DateFormatter DateFormatter { get; set; }
 
@@ -691,6 +697,9 @@ namespace QuickType
         [JsonProperty("delete", Required = Required.Always)]
         public Delete Delete { get; set; }
 
+        [JsonProperty("DeserializationFeature", Required = Required.Always)]
+        public DeserializationFeature DeserializationFeature { get; set; }
+
         [JsonProperty("dict", Required = Required.Always)]
         public Dict Dict { get; set; }
 
@@ -706,6 +715,9 @@ namespace QuickType
         [JsonProperty("double", Required = Required.Always)]
         public Double Double { get; set; }
 
+        [JsonProperty("DoubleNode", Required = Required.Always)]
+        public DoubleNode DoubleNode { get; set; }
+
         [JsonProperty("dummy", Required = Required.Always)]
         public long Dummy { get; set; }
 
@@ -805,18 +817,6 @@ namespace QuickType
         [JsonProperty("function", Required = Required.Always)]
         public Function Function { get; set; }
 
-        [JsonProperty("get", Required = Required.Always)]
-        public Get Get { get; set; }
-
-        [JsonProperty("global", Required = Required.Always)]
-        public Global Global { get; set; }
-
-        [JsonProperty("go", Required = Required.Always)]
-        public Go Go { get; set; }
-
-        [JsonProperty("goto", Required = Required.Always)]
-        public Goto Goto { get; set; }
-
         [JsonProperty("equalityContract", Required = Required.Always)]
         public EqualityContractClass Obj2EqualityContract { get; set; }
 
@@ -827,6 +827,18 @@ namespace QuickType
         public FromJsonClass Obj2FromJson { get; set; }
     }
 
+    public partial record CultureInfo
+    {
+        [JsonProperty("CultureInfo", Required = Required.Always)]
+        public long CultureInfoCultureInfo { get; set; }
+    }
+
+    public partial record Date
+    {
+        [JsonProperty("date", Required = Required.Always)]
+        public long DateDate { get; set; }
+    }
+
     public partial record DateFormatter
     {
         [JsonProperty("DateFormatter", Required = Required.Always)]
@@ -947,6 +959,12 @@ namespace QuickType
         public long DeleteDelete { get; set; }
     }
 
+    public partial record DeserializationFeature
+    {
+        [JsonProperty("DeserializationFeature", Required = Required.Always)]
+        public long DeserializationFeatureDeserializationFeature { get; set; }
+    }
+
     public partial record Dict
     {
         [JsonProperty("dict", Required = Required.Always)]
@@ -977,6 +995,12 @@ namespace QuickType
         public long DoubleDouble { get; set; }
     }
 
+    public partial record DoubleNode
+    {
+        [JsonProperty("DoubleNode", Required = Required.Always)]
+        public long DoubleNodeDoubleNode { get; set; }
+    }
+
     public partial record Dynamic
     {
         [JsonProperty("dynamic", Required = Required.Always)]
@@ -1169,30 +1193,6 @@ namespace QuickType
         public long FunctionFunction { get; set; }
     }
 
-    public partial record Get
-    {
-        [JsonProperty("get", Required = Required.Always)]
-        public long GetGet { get; set; }
-    }
-
-    public partial record Global
-    {
-        [JsonProperty("global", Required = Required.Always)]
-        public long GlobalGlobal { get; set; }
-    }
-
-    public partial record Go
-    {
-        [JsonProperty("go", Required = Required.Always)]
-        public long GoGo { get; set; }
-    }
-
-    public partial record Goto
-    {
-        [JsonProperty("goto", Required = Required.Always)]
-        public long GotoGoto { get; set; }
-    }
-
     public partial record EqualityContractClass
     {
         [JsonProperty("equalityContract", Required = Required.Always)]
@@ -1216,6 +1216,18 @@ namespace QuickType
         [JsonProperty("dummy", Required = Required.Always)]
         public long Dummy { get; set; }
 
+        [JsonProperty("get", Required = Required.Always)]
+        public Get Get { get; set; }
+
+        [JsonProperty("global", Required = Required.Always)]
+        public Global Global { get; set; }
+
+        [JsonProperty("go", Required = Required.Always)]
+        public Go Go { get; set; }
+
+        [JsonProperty("goto", Required = Required.Always)]
+        public Goto Goto { get; set; }
+
         [JsonProperty("guard", Required = Required.Always)]
         public Guard Guard { get; set; }
 
@@ -1273,6 +1285,9 @@ namespace QuickType
         [JsonProperty("int", Required = Required.Always)]
         public Int Int { get; set; }
 
+        [JsonProperty("IntNode", Required = Required.Always)]
+        public IntNode IntNode { get; set; }
+
         [JsonProperty("interface", Required = Required.Always)]
         public Interface Interface { get; set; }
 
@@ -1369,6 +1384,9 @@ namespace QuickType
         [JsonProperty("long", Required = Required.Always)]
         public Long Long { get; set; }
 
+        [JsonProperty("LongNode", Required = Required.Always)]
+        public LongNode LongNode { get; set; }
+
         [JsonProperty("map", Required = Required.Always)]
         public Map Map { get; set; }
 
@@ -1389,24 +1407,30 @@ namespace QuickType
 
         [JsonProperty("namespace", Required = Required.Always)]
         public Namespace Namespace { get; set; }
+    }
 
-        [JsonProperty("native", Required = Required.Always)]
-        public Native Native { get; set; }
-
-        [JsonProperty("new", Required = Required.Always)]
-        public New New { get; set; }
-
-        [JsonProperty("newtonsoft", Required = Required.Always)]
-        public NewtonsoftClass Newtonsoft { get; set; }
+    public partial record Get
+    {
+        [JsonProperty("get", Required = Required.Always)]
+        public long GetGet { get; set; }
+    }
 
-        [JsonProperty("nil", Required = Required.Always)]
-        public Nil Nil { get; set; }
+    public partial record Global
+    {
+        [JsonProperty("global", Required = Required.Always)]
+        public long GlobalGlobal { get; set; }
+    }
 
-        [JsonProperty("NO", Required = Required.Always)]
-        public No No { get; set; }
+    public partial record Go
+    {
+        [JsonProperty("go", Required = Required.Always)]
+        public long GoGo { get; set; }
+    }
 
-        [JsonProperty("noexcept", Required = Required.Always)]
-        public Noexcept Noexcept { get; set; }
+    public partial record Goto
+    {
+        [JsonProperty("goto", Required = Required.Always)]
+        public long GotoGoto { get; set; }
     }
 
     public partial record Guard
@@ -1523,6 +1547,12 @@ namespace QuickType
         public long IntInt { get; set; }
     }
 
+    public partial record IntNode
+    {
+        [JsonProperty("IntNode", Required = Required.Always)]
+        public long IntNodeIntNode { get; set; }
+    }
+
     public partial record Interface
     {
         [JsonProperty("interface", Required = Required.Always)]
@@ -1715,6 +1745,12 @@ namespace QuickType
         public long LongLong { get; set; }
     }
 
+    public partial record LongNode
+    {
+        [JsonProperty("LongNode", Required = Required.Always)]
+        public long LongNodeLongNode { get; set; }
+    }
+
     public partial record Map
     {
         [JsonProperty("map", Required = Required.Always)]
@@ -1757,50 +1793,32 @@ namespace QuickType
         public long NamespaceNamespace { get; set; }
     }
 
-    public partial record Native
+    public partial record Obj4
     {
+        [JsonProperty("dummy", Required = Required.Always)]
+        public long Dummy { get; set; }
+
         [JsonProperty("native", Required = Required.Always)]
-        public long NativeNative { get; set; }
-    }
+        public Native Native { get; set; }
 
-    public partial record New
-    {
         [JsonProperty("new", Required = Required.Always)]
-        public long NewNew { get; set; }
-    }
+        public New New { get; set; }
 
-    public partial record NewtonsoftClass
-    {
         [JsonProperty("newtonsoft", Required = Required.Always)]
-        public long Newtonsoft { get; set; }
-    }
+        public NewtonsoftClass Newtonsoft { get; set; }
 
-    public partial record Nil
-    {
         [JsonProperty("nil", Required = Required.Always)]
-        public long NilNil { get; set; }
-    }
+        public Nil Nil { get; set; }
 
-    public partial record No
-    {
         [JsonProperty("NO", Required = Required.Always)]
-        public long NoNo { get; set; }
-    }
-
-    public partial record Noexcept
-    {
-        [JsonProperty("noexcept", Required = Required.Always)]
-        public long NoexceptNoexcept { get; set; }
-    }
-
-    public partial record Obj4
-    {
-        [JsonProperty("dummy", Required = Required.Always)]
-        public long Dummy { get; set; }
+        public No No { get; set; }
 
         [JsonProperty("noSuchMethod", Required = Required.Always)]
         public NoSuchMethod NoSuchMethod { get; set; }
 
+        [JsonProperty("noexcept", Required = Required.Always)]
+        public Noexcept Noexcept { get; set; }
+
         [JsonProperty("nonatomic", Required = Required.Always)]
         public Nonatomic Nonatomic { get; set; }
 
@@ -1831,6 +1849,9 @@ namespace QuickType
         [JsonProperty("NULL", Required = Required.Always)]
         public Null Null { get; set; }
 
+        [JsonProperty("NullNode", Required = Required.Always)]
+        public NullNode NullNode { get; set; }
+
         [JsonProperty("nullptr", Required = Required.Always)]
         public Nullptr Nullptr { get; set; }
 
@@ -1858,6 +1879,9 @@ namespace QuickType
         [JsonProperty("ObjectMapper", Required = Required.Always)]
         public ObjectMapper ObjectMapper { get; set; }
 
+        [JsonProperty("ObjectNode", Required = Required.Always)]
+        public ObjectNode ObjectNode { get; set; }
+
         [JsonProperty("of", Required = Required.Always)]
         public Of Of { get; set; }
 
@@ -1965,30 +1989,36 @@ namespace QuickType
 
         [JsonProperty("rethrows", Required = Required.Always)]
         public Rethrows Rethrows { get; set; }
+    }
 
-        [JsonProperty("return", Required = Required.Always)]
-        public Return Return { get; set; }
-
-        [JsonProperty("right", Required = Required.Always)]
-        public Right Right { get; set; }
-
-        [JsonProperty("runtimeType", Required = Required.Always)]
-        public RuntimeType RuntimeType { get; set; }
-
-        [JsonProperty("s", Required = Required.Always)]
-        public S S { get; set; }
+    public partial record Native
+    {
+        [JsonProperty("native", Required = Required.Always)]
+        public long NativeNative { get; set; }
+    }
 
-        [JsonProperty("sbyte", Required = Required.Always)]
-        public Sbyte Sbyte { get; set; }
+    public partial record New
+    {
+        [JsonProperty("new", Required = Required.Always)]
+        public long NewNew { get; set; }
+    }
 
-        [JsonProperty("sealed", Required = Required.Always)]
-        public Sealed Sealed { get; set; }
+    public partial record NewtonsoftClass
+    {
+        [JsonProperty("newtonsoft", Required = Required.Always)]
+        public long Newtonsoft { get; set; }
+    }
 
-        [JsonProperty("SEL", Required = Required.Always)]
-        public Sel Sel { get; set; }
+    public partial record Nil
+    {
+        [JsonProperty("nil", Required = Required.Always)]
+        public long NilNil { get; set; }
+    }
 
-        [JsonProperty("select", Required = Required.Always)]
-        public Select Select { get; set; }
+    public partial record No
+    {
+        [JsonProperty("NO", Required = Required.Always)]
+        public long NoNo { get; set; }
     }
 
     public partial record NoSuchMethod
@@ -1997,6 +2027,12 @@ namespace QuickType
         public long NoSuchMethodNoSuchMethod { get; set; }
     }
 
+    public partial record Noexcept
+    {
+        [JsonProperty("noexcept", Required = Required.Always)]
+        public long NoexceptNoexcept { get; set; }
+    }
+
     public partial record Nonatomic
     {
         [JsonProperty("nonatomic", Required = Required.Always)]
@@ -2057,6 +2093,12 @@ namespace QuickType
         public long NullNull { get; set; }
     }
 
+    public partial record NullNode
+    {
+        [JsonProperty("NullNode", Required = Required.Always)]
+        public long NullNodeNullNode { get; set; }
+    }
+
     public partial record Nullptr
     {
         [JsonProperty("nullptr", Required = Required.Always)]
@@ -2111,6 +2153,12 @@ namespace QuickType
         public long ObjectMapperObjectMapper { get; set; }
     }
 
+    public partial record ObjectNode
+    {
+        [JsonProperty("ObjectNode", Required = Required.Always)]
+        public long ObjectNodeObjectNode { get; set; }
+    }
+
     public partial record Of
     {
         [JsonProperty("of", Required = Required.Always)]
@@ -2327,61 +2375,13 @@ namespace QuickType
         public long RethrowsRethrows { get; set; }
     }
 
-    public partial record Return
+    public partial record Obj5
     {
-        [JsonProperty("return", Required = Required.Always)]
-        public long ReturnReturn { get; set; }
-    }
+        [JsonProperty("dummy", Required = Required.Always)]
+        public long Dummy { get; set; }
 
-    public partial record Right
-    {
-        [JsonProperty("right", Required = Required.Always)]
-        public long RightRight { get; set; }
-    }
-
-    public partial record RuntimeType
-    {
-        [JsonProperty("runtimeType", Required = Required.Always)]
-        public long RuntimeTypeRuntimeType { get; set; }
-    }
-
-    public partial record S
-    {
-        [JsonProperty("s", Required = Required.Always)]
-        public long SS { get; set; }
-    }
-
-    public partial record Sbyte
-    {
-        [JsonProperty("sbyte", Required = Required.Always)]
-        public long SbyteSbyte { get; set; }
-    }
-
-    public partial record Sealed
-    {
-        [JsonProperty("sealed", Required = Required.Always)]
-        public long SealedSealed { get; set; }
-    }
-
-    public partial record Sel
-    {
-        [JsonProperty("SEL", Required = Required.Always)]
-        public long SelSel { get; set; }
-    }
-
-    public partial record Select
-    {
-        [JsonProperty("select", Required = Required.Always)]
-        public long SelectSelect { get; set; }
-    }
-
-    public partial record Obj5
-    {
-        [JsonProperty("dummy", Required = Required.Always)]
-        public long Dummy { get; set; }
-
-        [JsonProperty("self", Required = Required.Always)]
-        public SelfClass Obj5Self { get; set; }
+        [JsonProperty("self", Required = Required.Always)]
+        public SelfClass Obj5Self { get; set; }
 
         [JsonProperty("to_json", Required = Required.Always)]
         public ToJson Obj5ToJson { get; set; }
@@ -2395,12 +2395,39 @@ namespace QuickType
         [JsonProperty("type", Required = Required.Always)]
         public Obj5Type Obj5Type { get; set; }
 
+        [JsonProperty("return", Required = Required.Always)]
+        public Return Return { get; set; }
+
+        [JsonProperty("right", Required = Required.Always)]
+        public Right Right { get; set; }
+
+        [JsonProperty("runtimeType", Required = Required.Always)]
+        public RuntimeType RuntimeType { get; set; }
+
+        [JsonProperty("s", Required = Required.Always)]
+        public S S { get; set; }
+
+        [JsonProperty("sbyte", Required = Required.Always)]
+        public Sbyte Sbyte { get; set; }
+
+        [JsonProperty("sealed", Required = Required.Always)]
+        public Sealed Sealed { get; set; }
+
+        [JsonProperty("SEL", Required = Required.Always)]
+        public Sel Sel { get; set; }
+
+        [JsonProperty("select", Required = Required.Always)]
+        public Select Select { get; set; }
+
         [JsonProperty("Self", Required = Required.Always)]
         public Self Self { get; set; }
 
         [JsonProperty("Sendable", Required = Required.Always)]
         public Sendable Sendable { get; set; }
 
+        [JsonProperty("SerializationFeature", Required = Required.Always)]
+        public SerializationFeature SerializationFeature { get; set; }
+
         [JsonProperty("serialize", Required = Required.Always)]
         public SerializeClass Serialize { get; set; }
 
@@ -2473,6 +2500,9 @@ namespace QuickType
         [JsonProperty("template", Required = Required.Always)]
         public Template Template { get; set; }
 
+        [JsonProperty("TextNode", Required = Required.Always)]
+        public TextNode TextNode { get; set; }
+
         [JsonProperty("then", Required = Required.Always)]
         public Then Then { get; set; }
 
@@ -2541,36 +2571,6 @@ namespace QuickType
 
         [JsonProperty("union", Required = Required.Always)]
         public Union Union { get; set; }
-
-        [JsonProperty("unowned", Required = Required.Always)]
-        public Unowned Unowned { get; set; }
-
-        [JsonProperty("unsafe", Required = Required.Always)]
-        public Unsafe Unsafe { get; set; }
-
-        [JsonProperty("unsigned", Required = Required.Always)]
-        public Unsigned Unsigned { 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 SelfClass
@@ -2603,6 +2603,54 @@ namespace QuickType
         public long Type { get; set; }
     }
 
+    public partial record Return
+    {
+        [JsonProperty("return", Required = Required.Always)]
+        public long ReturnReturn { get; set; }
+    }
+
+    public partial record Right
+    {
+        [JsonProperty("right", Required = Required.Always)]
+        public long RightRight { get; set; }
+    }
+
+    public partial record RuntimeType
+    {
+        [JsonProperty("runtimeType", Required = Required.Always)]
+        public long RuntimeTypeRuntimeType { get; set; }
+    }
+
+    public partial record S
+    {
+        [JsonProperty("s", Required = Required.Always)]
+        public long SS { get; set; }
+    }
+
+    public partial record Sbyte
+    {
+        [JsonProperty("sbyte", Required = Required.Always)]
+        public long SbyteSbyte { get; set; }
+    }
+
+    public partial record Sealed
+    {
+        [JsonProperty("sealed", Required = Required.Always)]
+        public long SealedSealed { get; set; }
+    }
+
+    public partial record Sel
+    {
+        [JsonProperty("SEL", Required = Required.Always)]
+        public long SelSel { get; set; }
+    }
+
+    public partial record Select
+    {
+        [JsonProperty("select", Required = Required.Always)]
+        public long SelectSelect { get; set; }
+    }
+
     public partial record Self
     {
         [JsonProperty("Self", Required = Required.Always)]
@@ -2615,6 +2663,12 @@ namespace QuickType
         public long SendableSendable { get; set; }
     }
 
+    public partial record SerializationFeature
+    {
+        [JsonProperty("SerializationFeature", Required = Required.Always)]
+        public long SerializationFeatureSerializationFeature { get; set; }
+    }
+
     public partial record SerializeClass
     {
         [JsonProperty("serialize", Required = Required.Always)]
@@ -2759,6 +2813,12 @@ namespace QuickType
         public long TemplateTemplate { get; set; }
     }
 
+    public partial record TextNode
+    {
+        [JsonProperty("TextNode", Required = Required.Always)]
+        public long TextNodeTextNode { get; set; }
+    }
+
     public partial record Then
     {
         [JsonProperty("then", Required = Required.Always)]
@@ -2897,6 +2957,78 @@ namespace QuickType
         public long UnionUnion { get; set; }
     }
 
+    public partial record Obj6
+    {
+        [JsonProperty("dummy", Required = Required.Always)]
+        public long Dummy { get; set; }
+
+        [JsonProperty("unowned", Required = Required.Always)]
+        public Unowned Unowned { get; set; }
+
+        [JsonProperty("unsafe", Required = Required.Always)]
+        public Unsafe Unsafe { get; set; }
+
+        [JsonProperty("unsigned", Required = Required.Always)]
+        public Unsigned Unsigned { 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; }
+
+        [JsonProperty("void", Required = Required.Always)]
+        public Void Void { get; set; }
+
+        [JsonProperty("volatile", Required = Required.Always)]
+        public Volatile Volatile { get; set; }
+
+        [JsonProperty("wchar_t", Required = Required.Always)]
+        public WcharT WcharT { get; set; }
+
+        [JsonProperty("weak", Required = Required.Always)]
+        public Weak Weak { get; set; }
+
+        [JsonProperty("where", Required = Required.Always)]
+        public Where Where { get; set; }
+
+        [JsonProperty("while", Required = Required.Always)]
+        public While While { get; set; }
+
+        [JsonProperty("willSet", Required = Required.Always)]
+        public WillSet WillSet { get; set; }
+
+        [JsonProperty("with", Required = Required.Always)]
+        public With With { get; set; }
+
+        [JsonProperty("xor", Required = Required.Always)]
+        public Xor Xor { get; set; }
+
+        [JsonProperty("xor_eq", Required = Required.Always)]
+        public XorEq XorEq { get; set; }
+
+        [JsonProperty("YES", Required = Required.Always)]
+        public Yes Yes { get; set; }
+
+        [JsonProperty("yield", Required = Required.Always)]
+        public Yield Yield { get; set; }
+    }
+
     public partial record Unowned
     {
         [JsonProperty("unowned", Required = Required.Always)]
@@ -2957,48 +3089,6 @@ namespace QuickType
         public long VirtualVirtual { get; set; }
     }
 
-    public partial record Obj6
-    {
-        [JsonProperty("dummy", Required = Required.Always)]
-        public long Dummy { get; set; }
-
-        [JsonProperty("void", Required = Required.Always)]
-        public Void Void { get; set; }
-
-        [JsonProperty("volatile", Required = Required.Always)]
-        public Volatile Volatile { get; set; }
-
-        [JsonProperty("wchar_t", Required = Required.Always)]
-        public WcharT WcharT { get; set; }
-
-        [JsonProperty("weak", Required = Required.Always)]
-        public Weak Weak { get; set; }
-
-        [JsonProperty("where", Required = Required.Always)]
-        public Where Where { get; set; }
-
-        [JsonProperty("while", Required = Required.Always)]
-        public While While { get; set; }
-
-        [JsonProperty("willSet", Required = Required.Always)]
-        public WillSet WillSet { get; set; }
-
-        [JsonProperty("with", Required = Required.Always)]
-        public With With { get; set; }
-
-        [JsonProperty("xor", Required = Required.Always)]
-        public Xor Xor { get; set; }
-
-        [JsonProperty("xor_eq", Required = Required.Always)]
-        public XorEq XorEq { get; set; }
-
-        [JsonProperty("YES", Required = Required.Always)]
-        public Yes Yes { get; set; }
-
-        [JsonProperty("yield", Required = Required.Always)]
-        public Yield Yield { 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..172b094 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
@@ -55,6 +55,7 @@ class Obj1 {
     final AndEq andEq;
     final Any any;
     final Array array;
+    final ArrayNode arrayNode;
     final Asm asm;
     final Associatedtype associatedtype;
     final Associativity associativity;
@@ -67,6 +68,7 @@ class Obj1 {
     final Bitand bitand;
     final Bitor bitor;
     final Boolean boolean;
+    final BooleanNode booleanNode;
     final Bycopy bycopy;
     final Byref byref;
     final Byte byte;
@@ -93,8 +95,6 @@ class Obj1 {
     final Convenience convenience;
     final Convert convert;
     final Converter converter;
-    final CultureInfo cultureInfo;
-    final Date date;
     final int dummy;
     final Empty empty;
     final Obj1Bool fluffyBool;
@@ -122,6 +122,7 @@ class Obj1 {
         required this.andEq,
         required this.any,
         required this.array,
+        required this.arrayNode,
         required this.asm,
         required this.associatedtype,
         required this.associativity,
@@ -134,6 +135,7 @@ class Obj1 {
         required this.bitand,
         required this.bitor,
         required this.boolean,
+        required this.booleanNode,
         required this.bycopy,
         required this.byref,
         required this.byte,
@@ -160,8 +162,6 @@ class Obj1 {
         required this.convenience,
         required this.convert,
         required this.converter,
-        required this.cultureInfo,
-        required this.date,
         required this.dummy,
         required this.empty,
         required this.fluffyBool,
@@ -190,6 +190,7 @@ class Obj1 {
         andEq: AndEq.fromJson(json["and_eq"]),
         any: Any.fromJson(json["Any"]),
         array: Array.fromJson(json["array"]),
+        arrayNode: ArrayNode.fromJson(json["ArrayNode"]),
         asm: Asm.fromJson(json["asm"]),
         associatedtype: Associatedtype.fromJson(json["associatedtype"]),
         associativity: Associativity.fromJson(json["associativity"]),
@@ -202,6 +203,7 @@ class Obj1 {
         bitand: Bitand.fromJson(json["bitand"]),
         bitor: Bitor.fromJson(json["bitor"]),
         boolean: Boolean.fromJson(json["boolean"]),
+        booleanNode: BooleanNode.fromJson(json["BooleanNode"]),
         bycopy: Bycopy.fromJson(json["bycopy"]),
         byref: Byref.fromJson(json["byref"]),
         byte: Byte.fromJson(json["byte"]),
@@ -228,8 +230,6 @@ class Obj1 {
         convenience: Convenience.fromJson(json["convenience"]),
         convert: Convert.fromJson(json["convert"]),
         converter: Converter.fromJson(json["converter"]),
-        cultureInfo: CultureInfo.fromJson(json["CultureInfo"]),
-        date: Date.fromJson(json["date"]),
         dummy: json["dummy"],
         empty: Empty.fromJson(json["_"]),
         fluffyBool: Obj1Bool.fromJson(json["bool"]),
@@ -258,6 +258,7 @@ class Obj1 {
         "and_eq": andEq.toJson(),
         "Any": any.toJson(),
         "array": array.toJson(),
+        "ArrayNode": arrayNode.toJson(),
         "asm": asm.toJson(),
         "associatedtype": associatedtype.toJson(),
         "associativity": associativity.toJson(),
@@ -270,6 +271,7 @@ class Obj1 {
         "bitand": bitand.toJson(),
         "bitor": bitor.toJson(),
         "boolean": boolean.toJson(),
+        "BooleanNode": booleanNode.toJson(),
         "bycopy": bycopy.toJson(),
         "byref": byref.toJson(),
         "byte": byte.toJson(),
@@ -296,8 +298,6 @@ class Obj1 {
         "convenience": convenience.toJson(),
         "convert": convert.toJson(),
         "converter": converter.toJson(),
-        "CultureInfo": cultureInfo.toJson(),
-        "date": date.toJson(),
         "dummy": dummy,
         "_": empty.toJson(),
         "bool": fluffyBool.toJson(),
@@ -416,6 +416,22 @@ class Array {
     };
 }
 
+class ArrayNode {
+    final int arrayNode;
+
+    ArrayNode({
+        required this.arrayNode,
+    });
+
+    factory ArrayNode.fromJson(Map<String, dynamic> json) => ArrayNode(
+        arrayNode: json["ArrayNode"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "ArrayNode": arrayNode,
+    };
+}
+
 class Asm {
     final int asm;
 
@@ -608,6 +624,22 @@ class Boolean {
     };
 }
 
+class BooleanNode {
+    final int booleanNode;
+
+    BooleanNode({
+        required this.booleanNode,
+    });
+
+    factory BooleanNode.fromJson(Map<String, dynamic> json) => BooleanNode(
+        booleanNode: json["BooleanNode"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "BooleanNode": booleanNode,
+    };
+}
+
 class Bycopy {
     final int bycopy;
 
@@ -1024,38 +1056,6 @@ class Converter {
     };
 }
 
-class CultureInfo {
-    final int cultureInfo;
-
-    CultureInfo({
-        required this.cultureInfo,
-    });
-
-    factory CultureInfo.fromJson(Map<String, dynamic> json) => CultureInfo(
-        cultureInfo: json["CultureInfo"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "CultureInfo": cultureInfo,
-    };
-}
-
-class Date {
-    final int date;
-
-    Date({
-        required this.date,
-    });
-
-    factory Date.fromJson(Map<String, dynamic> json) => Date(
-        date: json["date"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "date": date,
-    };
-}
-
 class Empty {
     final int empty;
 
@@ -1345,6 +1345,8 @@ class ClassClass {
 }
 
 class Obj2 {
+    final CultureInfo cultureInfo;
+    final Date date;
     final DateFormatter dateFormatter;
     final DateOnly dateOnly;
     final DateOnlyConverter dateOnlyConverter;
@@ -1364,9 +1366,11 @@ class Obj2 {
     final Del del;
     final Delegate delegate;
     final Delete delete;
+    final DeserializationFeature deserializationFeature;
     final Dict dict;
     final Dictionary dictionary;
     final DidSet didSet;
+    final DoubleNode doubleNode;
     final int dummy;
     final DynamicCast dynamicCast;
     final Elif elif;
@@ -1392,9 +1396,6 @@ class Obj2 {
     final From from;
     final Func func;
     final FunctionClass function;
-    final Global global;
-    final Go go;
-    final Goto goto;
     final Default obj2Default;
     final Do obj2Do;
     final Double obj2Double;
@@ -1408,10 +1409,11 @@ class Obj2 {
     final Finally obj2Finally;
     final For obj2For;
     final FromJson obj2FromJson;
-    final Get obj2Get;
     final FalseClass purpleFalse;
 
     Obj2({
+        required this.cultureInfo,
+        required this.date,
         required this.dateFormatter,
         required this.dateOnly,
         required this.dateOnlyConverter,
@@ -1431,9 +1433,11 @@ class Obj2 {
         required this.del,
         required this.delegate,
         required this.delete,
+        required this.deserializationFeature,
         required this.dict,
         required this.dictionary,
         required this.didSet,
+        required this.doubleNode,
         required this.dummy,
         required this.dynamicCast,
         required this.elif,
@@ -1459,9 +1463,6 @@ class Obj2 {
         required this.from,
         required this.func,
         required this.function,
-        required this.global,
-        required this.go,
-        required this.goto,
         required this.obj2Default,
         required this.obj2Do,
         required this.obj2Double,
@@ -1475,11 +1476,12 @@ class Obj2 {
         required this.obj2Finally,
         required this.obj2For,
         required this.obj2FromJson,
-        required this.obj2Get,
         required this.purpleFalse,
     });
 
     factory Obj2.fromJson(Map<String, dynamic> json) => Obj2(
+        cultureInfo: CultureInfo.fromJson(json["CultureInfo"]),
+        date: Date.fromJson(json["date"]),
         dateFormatter: DateFormatter.fromJson(json["DateFormatter"]),
         dateOnly: DateOnly.fromJson(json["DateOnly"]),
         dateOnlyConverter: DateOnlyConverter.fromJson(json["DateOnlyConverter"]),
@@ -1499,9 +1501,11 @@ class Obj2 {
         del: Del.fromJson(json["del"]),
         delegate: Delegate.fromJson(json["delegate"]),
         delete: Delete.fromJson(json["delete"]),
+        deserializationFeature: DeserializationFeature.fromJson(json["DeserializationFeature"]),
         dict: Dict.fromJson(json["dict"]),
         dictionary: Dictionary.fromJson(json["dictionary"]),
         didSet: DidSet.fromJson(json["didSet"]),
+        doubleNode: DoubleNode.fromJson(json["DoubleNode"]),
         dummy: json["dummy"],
         dynamicCast: DynamicCast.fromJson(json["dynamic_cast"]),
         elif: Elif.fromJson(json["elif"]),
@@ -1527,9 +1531,6 @@ class Obj2 {
         from: From.fromJson(json["from"]),
         func: Func.fromJson(json["func"]),
         function: FunctionClass.fromJson(json["function"]),
-        global: Global.fromJson(json["global"]),
-        go: Go.fromJson(json["go"]),
-        goto: Goto.fromJson(json["goto"]),
         obj2Default: Default.fromJson(json["default"]),
         obj2Do: Do.fromJson(json["do"]),
         obj2Double: Double.fromJson(json["double"]),
@@ -1543,11 +1544,12 @@ class Obj2 {
         obj2Finally: Finally.fromJson(json["finally"]),
         obj2For: For.fromJson(json["for"]),
         obj2FromJson: FromJson.fromJson(json["from_json"]),
-        obj2Get: Get.fromJson(json["get"]),
         purpleFalse: FalseClass.fromJson(json["false"]),
     );
 
     Map<String, dynamic> toJson() => {
+        "CultureInfo": cultureInfo.toJson(),
+        "date": date.toJson(),
         "DateFormatter": dateFormatter.toJson(),
         "DateOnly": dateOnly.toJson(),
         "DateOnlyConverter": dateOnlyConverter.toJson(),
@@ -1567,9 +1569,11 @@ class Obj2 {
         "del": del.toJson(),
         "delegate": delegate.toJson(),
         "delete": delete.toJson(),
+        "DeserializationFeature": deserializationFeature.toJson(),
         "dict": dict.toJson(),
         "dictionary": dictionary.toJson(),
         "didSet": didSet.toJson(),
+        "DoubleNode": doubleNode.toJson(),
         "dummy": dummy,
         "dynamic_cast": dynamicCast.toJson(),
         "elif": elif.toJson(),
@@ -1595,9 +1599,6 @@ class Obj2 {
         "from": from.toJson(),
         "func": func.toJson(),
         "function": function.toJson(),
-        "global": global.toJson(),
-        "go": go.toJson(),
-        "goto": goto.toJson(),
         "default": obj2Default.toJson(),
         "do": obj2Do.toJson(),
         "double": obj2Double.toJson(),
@@ -1611,11 +1612,42 @@ class Obj2 {
         "finally": obj2Finally.toJson(),
         "for": obj2For.toJson(),
         "from_json": obj2FromJson.toJson(),
-        "get": obj2Get.toJson(),
         "false": purpleFalse.toJson(),
     };
 }
 
+class CultureInfo {
+    final int cultureInfo;
+
+    CultureInfo({
+        required this.cultureInfo,
+    });
+
+    factory CultureInfo.fromJson(Map<String, dynamic> json) => CultureInfo(
+        cultureInfo: json["CultureInfo"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "CultureInfo": cultureInfo,
+    };
+}
+
+class Date {
+    final int date;
+
+    Date({
+        required this.date,
+    });
+
+    factory Date.fromJson(Map<String, dynamic> json) => Date(
+        date: json["date"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "date": date,
+    };
+}
+
 class DateFormatter {
     final int dateFormatter;
 
@@ -1920,6 +1952,22 @@ class Delete {
     };
 }
 
+class DeserializationFeature {
+    final int deserializationFeature;
+
+    DeserializationFeature({
+        required this.deserializationFeature,
+    });
+
+    factory DeserializationFeature.fromJson(Map<String, dynamic> json) => DeserializationFeature(
+        deserializationFeature: json["DeserializationFeature"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "DeserializationFeature": deserializationFeature,
+    };
+}
+
 class Dict {
     final int dict;
 
@@ -1968,6 +2016,22 @@ class DidSet {
     };
 }
 
+class DoubleNode {
+    final int doubleNode;
+
+    DoubleNode({
+        required this.doubleNode,
+    });
+
+    factory DoubleNode.fromJson(Map<String, dynamic> json) => DoubleNode(
+        doubleNode: json["DoubleNode"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "DoubleNode": doubleNode,
+    };
+}
+
 class DynamicCast {
     final int dynamicCast;
 
@@ -2362,54 +2426,6 @@ class FunctionClass {
     };
 }
 
-class Global {
-    final int global;
-
-    Global({
-        required this.global,
-    });
-
-    factory Global.fromJson(Map<String, dynamic> json) => Global(
-        global: json["global"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "global": global,
-    };
-}
-
-class Go {
-    final int go;
-
-    Go({
-        required this.go,
-    });
-
-    factory Go.fromJson(Map<String, dynamic> json) => Go(
-        go: json["go"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "go": go,
-    };
-}
-
-class Goto {
-    final int goto;
-
-    Goto({
-        required this.goto,
-    });
-
-    factory Goto.fromJson(Map<String, dynamic> json) => Goto(
-        goto: json["goto"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "goto": goto,
-    };
-}
-
 class Default {
     final int defaultDefault;
 
@@ -2618,22 +2634,6 @@ class FromJson {
     };
 }
 
-class Get {
-    final int getGet;
-
-    Get({
-        required this.getGet,
-    });
-
-    factory Get.fromJson(Map<String, dynamic> json) => Get(
-        getGet: json["get"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "get": getGet,
-    };
-}
-
 class FalseClass {
     final int falseFalse;
 
@@ -2652,6 +2652,9 @@ class FalseClass {
 
 class Obj3 {
     final int dummy;
+    final Global global;
+    final Go go;
+    final Goto goto;
     final Guard guard;
     final HasOwnProperty hasOwnProperty;
     final Hashable hashable;
@@ -2665,6 +2668,7 @@ class Obj3 {
     final Inline inline;
     final Inout inout;
     final Instanceof instanceof;
+    final IntNode intNode;
     final Internal internal;
     final IsoDateTimeOffsetConverter isoDateTimeOffsetConverter;
     final Iterable iterable;
@@ -2695,6 +2699,7 @@ class Obj3 {
     final Locale locale;
     final Lock lock;
     final Long long;
+    final LongNode longNode;
     final MapClass map;
     final MapEntryClass mapEntry;
     final MetadataPropertyHandling metadataPropertyHandling;
@@ -2702,11 +2707,7 @@ class Obj3 {
     final Mutable mutable;
     final Mutating mutating;
     final Namespace namespace;
-    final Native native;
-    final Newtonsoft newtonsoft;
-    final Nil nil;
-    final No no;
-    final Noexcept noexcept;
+    final Get obj3Get;
     final HashCode obj3HashCode;
     final If obj3If;
     final Implements obj3Implements;
@@ -2715,10 +2716,12 @@ class Obj3 {
     final Int obj3Int;
     final Interface obj3Interface;
     final Is obj3Is;
-    final New obj3New;
 
     Obj3({
         required this.dummy,
+        required this.global,
+        required this.go,
+        required this.goto,
         required this.guard,
         required this.hasOwnProperty,
         required this.hashable,
@@ -2732,6 +2735,7 @@ class Obj3 {
         required this.inline,
         required this.inout,
         required this.instanceof,
+        required this.intNode,
         required this.internal,
         required this.isoDateTimeOffsetConverter,
         required this.iterable,
@@ -2762,6 +2766,7 @@ class Obj3 {
         required this.locale,
         required this.lock,
         required this.long,
+        required this.longNode,
         required this.map,
         required this.mapEntry,
         required this.metadataPropertyHandling,
@@ -2769,11 +2774,7 @@ class Obj3 {
         required this.mutable,
         required this.mutating,
         required this.namespace,
-        required this.native,
-        required this.newtonsoft,
-        required this.nil,
-        required this.no,
-        required this.noexcept,
+        required this.obj3Get,
         required this.obj3HashCode,
         required this.obj3If,
         required this.obj3Implements,
@@ -2782,11 +2783,13 @@ class Obj3 {
         required this.obj3Int,
         required this.obj3Interface,
         required this.obj3Is,
-        required this.obj3New,
     });
 
     factory Obj3.fromJson(Map<String, dynamic> json) => Obj3(
         dummy: json["dummy"],
+        global: Global.fromJson(json["global"]),
+        go: Go.fromJson(json["go"]),
+        goto: Goto.fromJson(json["goto"]),
         guard: Guard.fromJson(json["guard"]),
         hasOwnProperty: HasOwnProperty.fromJson(json["hasOwnProperty"]),
         hashable: Hashable.fromJson(json["Hashable"]),
@@ -2800,6 +2803,7 @@ class Obj3 {
         inline: Inline.fromJson(json["inline"]),
         inout: Inout.fromJson(json["inout"]),
         instanceof: Instanceof.fromJson(json["instanceof"]),
+        intNode: IntNode.fromJson(json["IntNode"]),
         internal: Internal.fromJson(json["internal"]),
         isoDateTimeOffsetConverter: IsoDateTimeOffsetConverter.fromJson(json["IsoDateTimeOffsetConverter"]),
         iterable: Iterable.fromJson(json["iterable"]),
@@ -2830,6 +2834,7 @@ class Obj3 {
         locale: Locale.fromJson(json["Locale"]),
         lock: Lock.fromJson(json["lock"]),
         long: Long.fromJson(json["long"]),
+        longNode: LongNode.fromJson(json["LongNode"]),
         map: MapClass.fromJson(json["map"]),
         mapEntry: MapEntryClass.fromJson(json["MapEntry"]),
         metadataPropertyHandling: MetadataPropertyHandling.fromJson(json["metadata_property_handling"]),
@@ -2837,11 +2842,7 @@ class Obj3 {
         mutable: Mutable.fromJson(json["mutable"]),
         mutating: Mutating.fromJson(json["mutating"]),
         namespace: Namespace.fromJson(json["namespace"]),
-        native: Native.fromJson(json["native"]),
-        newtonsoft: Newtonsoft.fromJson(json["newtonsoft"]),
-        nil: Nil.fromJson(json["nil"]),
-        no: No.fromJson(json["NO"]),
-        noexcept: Noexcept.fromJson(json["noexcept"]),
+        obj3Get: Get.fromJson(json["get"]),
         obj3HashCode: HashCode.fromJson(json["hashCode"]),
         obj3If: If.fromJson(json["if"]),
         obj3Implements: Implements.fromJson(json["implements"]),
@@ -2850,11 +2851,13 @@ class Obj3 {
         obj3Int: Int.fromJson(json["int"]),
         obj3Interface: Interface.fromJson(json["interface"]),
         obj3Is: Is.fromJson(json["is"]),
-        obj3New: New.fromJson(json["new"]),
     );
 
     Map<String, dynamic> toJson() => {
         "dummy": dummy,
+        "global": global.toJson(),
+        "go": go.toJson(),
+        "goto": goto.toJson(),
         "guard": guard.toJson(),
         "hasOwnProperty": hasOwnProperty.toJson(),
         "Hashable": hashable.toJson(),
@@ -2868,6 +2871,7 @@ class Obj3 {
         "inline": inline.toJson(),
         "inout": inout.toJson(),
         "instanceof": instanceof.toJson(),
+        "IntNode": intNode.toJson(),
         "internal": internal.toJson(),
         "IsoDateTimeOffsetConverter": isoDateTimeOffsetConverter.toJson(),
         "iterable": iterable.toJson(),
@@ -2898,6 +2902,7 @@ class Obj3 {
         "Locale": locale.toJson(),
         "lock": lock.toJson(),
         "long": long.toJson(),
+        "LongNode": longNode.toJson(),
         "map": map.toJson(),
         "MapEntry": mapEntry.toJson(),
         "metadata_property_handling": metadataPropertyHandling.toJson(),
@@ -2905,11 +2910,7 @@ class Obj3 {
         "mutable": mutable.toJson(),
         "mutating": mutating.toJson(),
         "namespace": namespace.toJson(),
-        "native": native.toJson(),
-        "newtonsoft": newtonsoft.toJson(),
-        "nil": nil.toJson(),
-        "NO": no.toJson(),
-        "noexcept": noexcept.toJson(),
+        "get": obj3Get.toJson(),
         "hashCode": obj3HashCode.toJson(),
         "if": obj3If.toJson(),
         "implements": obj3Implements.toJson(),
@@ -2918,44 +2919,91 @@ class Obj3 {
         "int": obj3Int.toJson(),
         "interface": obj3Interface.toJson(),
         "is": obj3Is.toJson(),
-        "new": obj3New.toJson(),
     };
 }
 
-class Guard {
-    final int guard;
+class Global {
+    final int global;
 
-    Guard({
-        required this.guard,
+    Global({
+        required this.global,
     });
 
-    factory Guard.fromJson(Map<String, dynamic> json) => Guard(
-        guard: json["guard"],
+    factory Global.fromJson(Map<String, dynamic> json) => Global(
+        global: json["global"],
     );
 
     Map<String, dynamic> toJson() => {
-        "guard": guard,
+        "global": global,
     };
 }
 
-class HasOwnProperty {
-    final int hasOwnProperty;
+class Go {
+    final int go;
 
-    HasOwnProperty({
-        required this.hasOwnProperty,
+    Go({
+        required this.go,
     });
 
-    factory HasOwnProperty.fromJson(Map<String, dynamic> json) => HasOwnProperty(
-        hasOwnProperty: json["hasOwnProperty"],
+    factory Go.fromJson(Map<String, dynamic> json) => Go(
+        go: json["go"],
     );
 
     Map<String, dynamic> toJson() => {
-        "hasOwnProperty": hasOwnProperty,
+        "go": go,
     };
 }
 
-class Hashable {
-    final int hashable;
+class Goto {
+    final int goto;
+
+    Goto({
+        required this.goto,
+    });
+
+    factory Goto.fromJson(Map<String, dynamic> json) => Goto(
+        goto: json["goto"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "goto": goto,
+    };
+}
+
+class Guard {
+    final int guard;
+
+    Guard({
+        required this.guard,
+    });
+
+    factory Guard.fromJson(Map<String, dynamic> json) => Guard(
+        guard: json["guard"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "guard": guard,
+    };
+}
+
+class HasOwnProperty {
+    final int hasOwnProperty;
+
+    HasOwnProperty({
+        required this.hasOwnProperty,
+    });
+
+    factory HasOwnProperty.fromJson(Map<String, dynamic> json) => HasOwnProperty(
+        hasOwnProperty: json["hasOwnProperty"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "hasOwnProperty": hasOwnProperty,
+    };
+}
+
+class Hashable {
+    final int hashable;
 
     Hashable({
         required this.hashable,
@@ -3130,6 +3178,22 @@ class Instanceof {
     };
 }
 
+class IntNode {
+    final int intNode;
+
+    IntNode({
+        required this.intNode,
+    });
+
+    factory IntNode.fromJson(Map<String, dynamic> json) => IntNode(
+        intNode: json["IntNode"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "IntNode": intNode,
+    };
+}
+
 class Internal {
     final int internal;
 
@@ -3610,6 +3674,22 @@ class Long {
     };
 }
 
+class LongNode {
+    final int longNode;
+
+    LongNode({
+        required this.longNode,
+    });
+
+    factory LongNode.fromJson(Map<String, dynamic> json) => LongNode(
+        longNode: json["LongNode"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "LongNode": longNode,
+    };
+}
+
 class MapClass {
     final int map;
 
@@ -3722,83 +3802,19 @@ class Namespace {
     };
 }
 
-class Native {
-    final int native;
-
-    Native({
-        required this.native,
-    });
-
-    factory Native.fromJson(Map<String, dynamic> json) => Native(
-        native: json["native"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "native": native,
-    };
-}
-
-class Newtonsoft {
-    final int newtonsoft;
-
-    Newtonsoft({
-        required this.newtonsoft,
-    });
-
-    factory Newtonsoft.fromJson(Map<String, dynamic> json) => Newtonsoft(
-        newtonsoft: json["newtonsoft"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "newtonsoft": newtonsoft,
-    };
-}
-
-class Nil {
-    final int nil;
-
-    Nil({
-        required this.nil,
-    });
-
-    factory Nil.fromJson(Map<String, dynamic> json) => Nil(
-        nil: json["nil"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "nil": nil,
-    };
-}
-
-class No {
-    final int no;
-
-    No({
-        required this.no,
-    });
-
-    factory No.fromJson(Map<String, dynamic> json) => No(
-        no: json["NO"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "NO": no,
-    };
-}
-
-class Noexcept {
-    final int noexcept;
+class Get {
+    final int getGet;
 
-    Noexcept({
-        required this.noexcept,
+    Get({
+        required this.getGet,
     });
 
-    factory Noexcept.fromJson(Map<String, dynamic> json) => Noexcept(
-        noexcept: json["noexcept"],
+    factory Get.fromJson(Map<String, dynamic> json) => Get(
+        getGet: json["get"],
     );
 
     Map<String, dynamic> toJson() => {
-        "noexcept": noexcept,
+        "get": getGet,
     };
 }
 
@@ -3930,24 +3946,13 @@ class Is {
     };
 }
 
-class New {
-    final int newNew;
-
-    New({
-        required this.newNew,
-    });
-
-    factory New.fromJson(Map<String, dynamic> json) => New(
-        newNew: json["new"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "new": newNew,
-    };
-}
-
 class Obj4 {
     final int dummy;
+    final Native native;
+    final Newtonsoft newtonsoft;
+    final Nil nil;
+    final No no;
+    final Noexcept noexcept;
     final Nonatomic nonatomic;
     final None none;
     final Nonlocal nonlocal;
@@ -3957,17 +3962,18 @@ class Obj4 {
     final NsError nsError;
     final NsObject nsObject;
     final NsString nsString;
+    final NullNode nullNode;
     final Nullptr nullptr;
     final Number number;
+    final New obj4New;
     final NoSuchMethod obj4NoSuchMethod;
     final NoneClass obj4None;
     final Null obj4Null;
     final Operator obj4Operator;
     final ProtocolClass obj4Protocol;
-    final Return obj4Return;
-    final RuntimeType obj4RuntimeType;
     final Object object;
     final ObjectMapper objectMapper;
+    final ObjectNode objectNode;
     final Of of;
     final Oneway oneway;
     final Open open;
@@ -4006,15 +4012,14 @@ class Obj4 {
     final Restrict restrict;
     final Retain retain;
     final Rethrows rethrows;
-    final Right right;
-    final S s;
-    final Sbyte sbyte;
-    final Sealed sealed;
-    final Sel sel;
-    final Select select;
 
     Obj4({
         required this.dummy,
+        required this.native,
+        required this.newtonsoft,
+        required this.nil,
+        required this.no,
+        required this.noexcept,
         required this.nonatomic,
         required this.none,
         required this.nonlocal,
@@ -4024,17 +4029,18 @@ class Obj4 {
         required this.nsError,
         required this.nsObject,
         required this.nsString,
+        required this.nullNode,
         required this.nullptr,
         required this.number,
+        required this.obj4New,
         required this.obj4NoSuchMethod,
         required this.obj4None,
         required this.obj4Null,
         required this.obj4Operator,
         required this.obj4Protocol,
-        required this.obj4Return,
-        required this.obj4RuntimeType,
         required this.object,
         required this.objectMapper,
+        required this.objectNode,
         required this.of,
         required this.oneway,
         required this.open,
@@ -4073,16 +4079,15 @@ class Obj4 {
         required this.restrict,
         required this.retain,
         required this.rethrows,
-        required this.right,
-        required this.s,
-        required this.sbyte,
-        required this.sealed,
-        required this.sel,
-        required this.select,
     });
 
     factory Obj4.fromJson(Map<String, dynamic> json) => Obj4(
         dummy: json["dummy"],
+        native: Native.fromJson(json["native"]),
+        newtonsoft: Newtonsoft.fromJson(json["newtonsoft"]),
+        nil: Nil.fromJson(json["nil"]),
+        no: No.fromJson(json["NO"]),
+        noexcept: Noexcept.fromJson(json["noexcept"]),
         nonatomic: Nonatomic.fromJson(json["nonatomic"]),
         none: None.fromJson(json["None"]),
         nonlocal: Nonlocal.fromJson(json["nonlocal"]),
@@ -4092,17 +4097,18 @@ class Obj4 {
         nsError: NsError.fromJson(json["NSError"]),
         nsObject: NsObject.fromJson(json["NSObject"]),
         nsString: NsString.fromJson(json["NSString"]),
+        nullNode: NullNode.fromJson(json["NullNode"]),
         nullptr: Nullptr.fromJson(json["nullptr"]),
         number: Number.fromJson(json["number"]),
+        obj4New: New.fromJson(json["new"]),
         obj4NoSuchMethod: NoSuchMethod.fromJson(json["noSuchMethod"]),
         obj4None: NoneClass.fromJson(json["none"]),
         obj4Null: Null.fromJson(json["NULL"]),
         obj4Operator: Operator.fromJson(json["operator"]),
         obj4Protocol: ProtocolClass.fromJson(json["protocol"]),
-        obj4Return: Return.fromJson(json["return"]),
-        obj4RuntimeType: RuntimeType.fromJson(json["runtimeType"]),
         object: Object.fromJson(json["object"]),
         objectMapper: ObjectMapper.fromJson(json["ObjectMapper"]),
+        objectNode: ObjectNode.fromJson(json["ObjectNode"]),
         of: Of.fromJson(json["of"]),
         oneway: Oneway.fromJson(json["oneway"]),
         open: Open.fromJson(json["open"]),
@@ -4141,16 +4147,15 @@ class Obj4 {
         restrict: Restrict.fromJson(json["restrict"]),
         retain: Retain.fromJson(json["retain"]),
         rethrows: Rethrows.fromJson(json["rethrows"]),
-        right: Right.fromJson(json["right"]),
-        s: S.fromJson(json["s"]),
-        sbyte: Sbyte.fromJson(json["sbyte"]),
-        sealed: Sealed.fromJson(json["sealed"]),
-        sel: Sel.fromJson(json["SEL"]),
-        select: Select.fromJson(json["select"]),
     );
 
     Map<String, dynamic> toJson() => {
         "dummy": dummy,
+        "native": native.toJson(),
+        "newtonsoft": newtonsoft.toJson(),
+        "nil": nil.toJson(),
+        "NO": no.toJson(),
+        "noexcept": noexcept.toJson(),
         "nonatomic": nonatomic.toJson(),
         "None": none.toJson(),
         "nonlocal": nonlocal.toJson(),
@@ -4160,17 +4165,18 @@ class Obj4 {
         "NSError": nsError.toJson(),
         "NSObject": nsObject.toJson(),
         "NSString": nsString.toJson(),
+        "NullNode": nullNode.toJson(),
         "nullptr": nullptr.toJson(),
         "number": number.toJson(),
+        "new": obj4New.toJson(),
         "noSuchMethod": obj4NoSuchMethod.toJson(),
         "none": obj4None.toJson(),
         "NULL": obj4Null.toJson(),
         "operator": obj4Operator.toJson(),
         "protocol": obj4Protocol.toJson(),
-        "return": obj4Return.toJson(),
-        "runtimeType": obj4RuntimeType.toJson(),
         "object": object.toJson(),
         "ObjectMapper": objectMapper.toJson(),
+        "ObjectNode": objectNode.toJson(),
         "of": of.toJson(),
         "oneway": oneway.toJson(),
         "open": open.toJson(),
@@ -4209,72 +4215,146 @@ class Obj4 {
         "restrict": restrict.toJson(),
         "retain": retain.toJson(),
         "rethrows": rethrows.toJson(),
-        "right": right.toJson(),
-        "s": s.toJson(),
-        "sbyte": sbyte.toJson(),
-        "sealed": sealed.toJson(),
-        "SEL": sel.toJson(),
-        "select": select.toJson(),
     };
 }
 
-class Nonatomic {
-    final int nonatomic;
+class Native {
+    final int native;
 
-    Nonatomic({
-        required this.nonatomic,
+    Native({
+        required this.native,
     });
 
-    factory Nonatomic.fromJson(Map<String, dynamic> json) => Nonatomic(
-        nonatomic: json["nonatomic"],
+    factory Native.fromJson(Map<String, dynamic> json) => Native(
+        native: json["native"],
     );
 
     Map<String, dynamic> toJson() => {
-        "nonatomic": nonatomic,
+        "native": native,
     };
 }
 
-class None {
-    final int none;
+class Newtonsoft {
+    final int newtonsoft;
 
-    None({
-        required this.none,
+    Newtonsoft({
+        required this.newtonsoft,
     });
 
-    factory None.fromJson(Map<String, dynamic> json) => None(
-        none: json["None"],
+    factory Newtonsoft.fromJson(Map<String, dynamic> json) => Newtonsoft(
+        newtonsoft: json["newtonsoft"],
     );
 
     Map<String, dynamic> toJson() => {
-        "None": none,
+        "newtonsoft": newtonsoft,
     };
 }
 
-class Nonlocal {
-    final int nonlocal;
+class Nil {
+    final int nil;
 
-    Nonlocal({
-        required this.nonlocal,
+    Nil({
+        required this.nil,
     });
 
-    factory Nonlocal.fromJson(Map<String, dynamic> json) => Nonlocal(
-        nonlocal: json["nonlocal"],
+    factory Nil.fromJson(Map<String, dynamic> json) => Nil(
+        nil: json["nil"],
     );
 
     Map<String, dynamic> toJson() => {
-        "nonlocal": nonlocal,
+        "nil": nil,
     };
 }
 
-class Nonmutating {
-    final int nonmutating;
+class No {
+    final int no;
 
-    Nonmutating({
-        required this.nonmutating,
+    No({
+        required this.no,
     });
 
-    factory Nonmutating.fromJson(Map<String, dynamic> json) => Nonmutating(
-        nonmutating: json["nonmutating"],
+    factory No.fromJson(Map<String, dynamic> json) => No(
+        no: json["NO"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "NO": no,
+    };
+}
+
+class Noexcept {
+    final int noexcept;
+
+    Noexcept({
+        required this.noexcept,
+    });
+
+    factory Noexcept.fromJson(Map<String, dynamic> json) => Noexcept(
+        noexcept: json["noexcept"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "noexcept": noexcept,
+    };
+}
+
+class Nonatomic {
+    final int nonatomic;
+
+    Nonatomic({
+        required this.nonatomic,
+    });
+
+    factory Nonatomic.fromJson(Map<String, dynamic> json) => Nonatomic(
+        nonatomic: json["nonatomic"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "nonatomic": nonatomic,
+    };
+}
+
+class None {
+    final int none;
+
+    None({
+        required this.none,
+    });
+
+    factory None.fromJson(Map<String, dynamic> json) => None(
+        none: json["None"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "None": none,
+    };
+}
+
+class Nonlocal {
+    final int nonlocal;
+
+    Nonlocal({
+        required this.nonlocal,
+    });
+
+    factory Nonlocal.fromJson(Map<String, dynamic> json) => Nonlocal(
+        nonlocal: json["nonlocal"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "nonlocal": nonlocal,
+    };
+}
+
+class Nonmutating {
+    final int nonmutating;
+
+    Nonmutating({
+        required this.nonmutating,
+    });
+
+    factory Nonmutating.fromJson(Map<String, dynamic> json) => Nonmutating(
+        nonmutating: json["nonmutating"],
     );
 
     Map<String, dynamic> toJson() => {
@@ -4362,6 +4442,22 @@ class NsString {
     };
 }
 
+class NullNode {
+    final int nullNode;
+
+    NullNode({
+        required this.nullNode,
+    });
+
+    factory NullNode.fromJson(Map<String, dynamic> json) => NullNode(
+        nullNode: json["NullNode"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "NullNode": nullNode,
+    };
+}
+
 class Nullptr {
     final int nullptr;
 
@@ -4394,6 +4490,22 @@ class Number {
     };
 }
 
+class New {
+    final int newNew;
+
+    New({
+        required this.newNew,
+    });
+
+    factory New.fromJson(Map<String, dynamic> json) => New(
+        newNew: json["new"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "new": newNew,
+    };
+}
+
 class NoSuchMethod {
     final int noSuchMethodNoSuchMethod;
 
@@ -4474,38 +4586,6 @@ class ProtocolClass {
     };
 }
 
-class Return {
-    final int returnReturn;
-
-    Return({
-        required this.returnReturn,
-    });
-
-    factory Return.fromJson(Map<String, dynamic> json) => Return(
-        returnReturn: json["return"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "return": returnReturn,
-    };
-}
-
-class RuntimeType {
-    final int runtimeTypeRuntimeType;
-
-    RuntimeType({
-        required this.runtimeTypeRuntimeType,
-    });
-
-    factory RuntimeType.fromJson(Map<String, dynamic> json) => RuntimeType(
-        runtimeTypeRuntimeType: json["runtimeType"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "runtimeType": runtimeTypeRuntimeType,
-    };
-}
-
 class Object {
     final int object;
 
@@ -4538,6 +4618,22 @@ class ObjectMapper {
     };
 }
 
+class ObjectNode {
+    final int objectNode;
+
+    ObjectNode({
+        required this.objectNode,
+    });
+
+    factory ObjectNode.fromJson(Map<String, dynamic> json) => ObjectNode(
+        objectNode: json["ObjectNode"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "ObjectNode": objectNode,
+    };
+}
+
 class Of {
     final int of;
 
@@ -5146,104 +5242,10 @@ class Rethrows {
     };
 }
 
-class Right {
-    final int right;
-
-    Right({
-        required this.right,
-    });
-
-    factory Right.fromJson(Map<String, dynamic> json) => Right(
-        right: json["right"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "right": right,
-    };
-}
-
-class S {
-    final int s;
-
-    S({
-        required this.s,
-    });
-
-    factory S.fromJson(Map<String, dynamic> json) => S(
-        s: json["s"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "s": s,
-    };
-}
-
-class Sbyte {
-    final int sbyte;
-
-    Sbyte({
-        required this.sbyte,
-    });
-
-    factory Sbyte.fromJson(Map<String, dynamic> json) => Sbyte(
-        sbyte: json["sbyte"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "sbyte": sbyte,
-    };
-}
-
-class Sealed {
-    final int sealed;
-
-    Sealed({
-        required this.sealed,
-    });
-
-    factory Sealed.fromJson(Map<String, dynamic> json) => Sealed(
-        sealed: json["sealed"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "sealed": sealed,
-    };
-}
-
-class Sel {
-    final int sel;
-
-    Sel({
-        required this.sel,
-    });
-
-    factory Sel.fromJson(Map<String, dynamic> json) => Sel(
-        sel: json["SEL"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "SEL": sel,
-    };
-}
-
-class Select {
-    final int select;
-
-    Select({
-        required this.select,
-    });
-
-    factory Select.fromJson(Map<String, dynamic> json) => Select(
-        select: json["select"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "select": select,
-    };
-}
-
 class Obj5 {
     final int dummy;
+    final Return obj5Return;
+    final RuntimeType obj5RuntimeType;
     final SelfClass obj5Self;
     final Set obj5Set;
     final Static obj5Static;
@@ -5257,10 +5259,16 @@ class Obj5 {
     final Try obj5Try;
     final TypeClass obj5Type;
     final Typedef obj5Typedef;
-    final Var obj5Var;
     final TrueClass purpleTrue;
+    final Right right;
+    final S s;
+    final Sbyte sbyte;
+    final Sealed sealed;
+    final Sel sel;
+    final Select select;
     final Self self;
     final Sendable sendable;
+    final SerializationFeature serializationFeature;
     final Serialize serialize;
     final SerializerProvider serializerProvider;
     final Short short;
@@ -5281,6 +5289,7 @@ class Obj5 {
     final Synchronized synchronized;
     final System system;
     final Template template;
+    final TextNode textNode;
     final Then then;
     final ThreadLocal threadLocal;
     final Throws throws;
@@ -5299,18 +5308,11 @@ class Obj5 {
     final Unchecked unchecked;
     final Undefined undefined;
     final Union union;
-    final Unowned unowned;
-    final Unsafe unsafe;
-    final Unsigned unsigned;
-    final Ushort ushort;
-    final Using using;
-    final Utf8JsonReader utf8JsonReader;
-    final Utf8JsonWriter utf8JsonWriter;
-    final Uuid uuid;
-    final Virtual virtual;
 
     Obj5({
         required this.dummy,
+        required this.obj5Return,
+        required this.obj5RuntimeType,
         required this.obj5Self,
         required this.obj5Set,
         required this.obj5Static,
@@ -5324,10 +5326,16 @@ class Obj5 {
         required this.obj5Try,
         required this.obj5Type,
         required this.obj5Typedef,
-        required this.obj5Var,
         required this.purpleTrue,
+        required this.right,
+        required this.s,
+        required this.sbyte,
+        required this.sealed,
+        required this.sel,
+        required this.select,
         required this.self,
         required this.sendable,
+        required this.serializationFeature,
         required this.serialize,
         required this.serializerProvider,
         required this.short,
@@ -5348,6 +5356,7 @@ class Obj5 {
         required this.synchronized,
         required this.system,
         required this.template,
+        required this.textNode,
         required this.then,
         required this.threadLocal,
         required this.throws,
@@ -5366,19 +5375,12 @@ class Obj5 {
         required this.unchecked,
         required this.undefined,
         required this.union,
-        required this.unowned,
-        required this.unsafe,
-        required this.unsigned,
-        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"],
+        obj5Return: Return.fromJson(json["return"]),
+        obj5RuntimeType: RuntimeType.fromJson(json["runtimeType"]),
         obj5Self: SelfClass.fromJson(json["self"]),
         obj5Set: Set.fromJson(json["set"]),
         obj5Static: Static.fromJson(json["static"]),
@@ -5392,10 +5394,16 @@ class Obj5 {
         obj5Try: Try.fromJson(json["try"]),
         obj5Type: TypeClass.fromJson(json["type"]),
         obj5Typedef: Typedef.fromJson(json["typedef"]),
-        obj5Var: Var.fromJson(json["var"]),
         purpleTrue: TrueClass.fromJson(json["true"]),
+        right: Right.fromJson(json["right"]),
+        s: S.fromJson(json["s"]),
+        sbyte: Sbyte.fromJson(json["sbyte"]),
+        sealed: Sealed.fromJson(json["sealed"]),
+        sel: Sel.fromJson(json["SEL"]),
+        select: Select.fromJson(json["select"]),
         self: Self.fromJson(json["Self"]),
         sendable: Sendable.fromJson(json["Sendable"]),
+        serializationFeature: SerializationFeature.fromJson(json["SerializationFeature"]),
         serialize: Serialize.fromJson(json["serialize"]),
         serializerProvider: SerializerProvider.fromJson(json["SerializerProvider"]),
         short: Short.fromJson(json["short"]),
@@ -5416,6 +5424,7 @@ class Obj5 {
         synchronized: Synchronized.fromJson(json["synchronized"]),
         system: System.fromJson(json["system"]),
         template: Template.fromJson(json["template"]),
+        textNode: TextNode.fromJson(json["TextNode"]),
         then: Then.fromJson(json["then"]),
         threadLocal: ThreadLocal.fromJson(json["thread_local"]),
         throws: Throws.fromJson(json["throws"]),
@@ -5434,19 +5443,12 @@ class Obj5 {
         unchecked: Unchecked.fromJson(json["unchecked"]),
         undefined: Undefined.fromJson(json["undefined"]),
         union: Union.fromJson(json["union"]),
-        unowned: Unowned.fromJson(json["unowned"]),
-        unsafe: Unsafe.fromJson(json["unsafe"]),
-        unsigned: Unsigned.fromJson(json["unsigned"]),
-        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,
+        "return": obj5Return.toJson(),
+        "runtimeType": obj5RuntimeType.toJson(),
         "self": obj5Self.toJson(),
         "set": obj5Set.toJson(),
         "static": obj5Static.toJson(),
@@ -5460,10 +5462,16 @@ class Obj5 {
         "try": obj5Try.toJson(),
         "type": obj5Type.toJson(),
         "typedef": obj5Typedef.toJson(),
-        "var": obj5Var.toJson(),
         "true": purpleTrue.toJson(),
+        "right": right.toJson(),
+        "s": s.toJson(),
+        "sbyte": sbyte.toJson(),
+        "sealed": sealed.toJson(),
+        "SEL": sel.toJson(),
+        "select": select.toJson(),
         "Self": self.toJson(),
         "Sendable": sendable.toJson(),
+        "SerializationFeature": serializationFeature.toJson(),
         "serialize": serialize.toJson(),
         "SerializerProvider": serializerProvider.toJson(),
         "short": short.toJson(),
@@ -5484,6 +5492,7 @@ class Obj5 {
         "synchronized": synchronized.toJson(),
         "system": system.toJson(),
         "template": template.toJson(),
+        "TextNode": textNode.toJson(),
         "then": then.toJson(),
         "thread_local": threadLocal.toJson(),
         "throws": throws.toJson(),
@@ -5502,15 +5511,38 @@ class Obj5 {
         "unchecked": unchecked.toJson(),
         "undefined": undefined.toJson(),
         "union": union.toJson(),
-        "unowned": unowned.toJson(),
-        "unsafe": unsafe.toJson(),
-        "unsigned": unsigned.toJson(),
-        "ushort": ushort.toJson(),
-        "using": using.toJson(),
-        "Utf8JsonReader": utf8JsonReader.toJson(),
-        "Utf8JsonWriter": utf8JsonWriter.toJson(),
-        "UUID": uuid.toJson(),
-        "virtual": virtual.toJson(),
+    };
+}
+
+class Return {
+    final int returnReturn;
+
+    Return({
+        required this.returnReturn,
+    });
+
+    factory Return.fromJson(Map<String, dynamic> json) => Return(
+        returnReturn: json["return"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "return": returnReturn,
+    };
+}
+
+class RuntimeType {
+    final int runtimeTypeRuntimeType;
+
+    RuntimeType({
+        required this.runtimeTypeRuntimeType,
+    });
+
+    factory RuntimeType.fromJson(Map<String, dynamic> json) => RuntimeType(
+        runtimeTypeRuntimeType: json["runtimeType"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "runtimeType": runtimeTypeRuntimeType,
     };
 }
 
@@ -5722,35 +5754,115 @@ class Typedef {
     };
 }
 
-class Var {
-    final int varVar;
+class TrueClass {
+    final int trueTrue;
 
-    Var({
-        required this.varVar,
+    TrueClass({
+        required this.trueTrue,
     });
 
-    factory Var.fromJson(Map<String, dynamic> json) => Var(
-        varVar: json["var"],
+    factory TrueClass.fromJson(Map<String, dynamic> json) => TrueClass(
+        trueTrue: json["true"],
     );
 
     Map<String, dynamic> toJson() => {
-        "var": varVar,
+        "true": trueTrue,
     };
 }
 
-class TrueClass {
-    final int trueTrue;
+class Right {
+    final int right;
 
-    TrueClass({
-        required this.trueTrue,
+    Right({
+        required this.right,
     });
 
-    factory TrueClass.fromJson(Map<String, dynamic> json) => TrueClass(
-        trueTrue: json["true"],
+    factory Right.fromJson(Map<String, dynamic> json) => Right(
+        right: json["right"],
     );
 
     Map<String, dynamic> toJson() => {
-        "true": trueTrue,
+        "right": right,
+    };
+}
+
+class S {
+    final int s;
+
+    S({
+        required this.s,
+    });
+
+    factory S.fromJson(Map<String, dynamic> json) => S(
+        s: json["s"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "s": s,
+    };
+}
+
+class Sbyte {
+    final int sbyte;
+
+    Sbyte({
+        required this.sbyte,
+    });
+
+    factory Sbyte.fromJson(Map<String, dynamic> json) => Sbyte(
+        sbyte: json["sbyte"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "sbyte": sbyte,
+    };
+}
+
+class Sealed {
+    final int sealed;
+
+    Sealed({
+        required this.sealed,
+    });
+
+    factory Sealed.fromJson(Map<String, dynamic> json) => Sealed(
+        sealed: json["sealed"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "sealed": sealed,
+    };
+}
+
+class Sel {
+    final int sel;
+
+    Sel({
+        required this.sel,
+    });
+
+    factory Sel.fromJson(Map<String, dynamic> json) => Sel(
+        sel: json["SEL"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "SEL": sel,
+    };
+}
+
+class Select {
+    final int select;
+
+    Select({
+        required this.select,
+    });
+
+    factory Select.fromJson(Map<String, dynamic> json) => Select(
+        select: json["select"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "select": select,
     };
 }
 
@@ -5786,6 +5898,22 @@ class Sendable {
     };
 }
 
+class SerializationFeature {
+    final int serializationFeature;
+
+    SerializationFeature({
+        required this.serializationFeature,
+    });
+
+    factory SerializationFeature.fromJson(Map<String, dynamic> json) => SerializationFeature(
+        serializationFeature: json["SerializationFeature"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "SerializationFeature": serializationFeature,
+    };
+}
+
 class Serialize {
     final int serialize;
 
@@ -6106,6 +6234,22 @@ class Template {
     };
 }
 
+class TextNode {
+    final int textNode;
+
+    TextNode({
+        required this.textNode,
+    });
+
+    factory TextNode.fromJson(Map<String, dynamic> json) => TextNode(
+        textNode: json["TextNode"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "TextNode": textNode,
+    };
+}
+
 class Then {
     final int then;
 
@@ -6394,15 +6538,199 @@ class Union {
     };
 }
 
-class Unowned {
-    final int unowned;
+class Obj6 {
+    final int dummy;
+    final Var obj6Var;
+    final Void obj6Void;
+    final While obj6While;
+    final With obj6With;
+    final Yield obj6Yield;
+    final Unowned unowned;
+    final Unsafe unsafe;
+    final Unsigned unsigned;
+    final Ushort ushort;
+    final Using using;
+    final Utf8JsonReader utf8JsonReader;
+    final Utf8JsonWriter utf8JsonWriter;
+    final Uuid uuid;
+    final Virtual virtual;
+    final Volatile volatile;
+    final WcharT wcharT;
+    final Weak weak;
+    final Where where;
+    final WillSet willSet;
+    final Xor xor;
+    final XorEq xorEq;
+    final Yes yes;
 
-    Unowned({
+    Obj6({
+        required this.dummy,
+        required this.obj6Var,
+        required this.obj6Void,
+        required this.obj6While,
+        required this.obj6With,
+        required this.obj6Yield,
         required this.unowned,
+        required this.unsafe,
+        required this.unsigned,
+        required this.ushort,
+        required this.using,
+        required this.utf8JsonReader,
+        required this.utf8JsonWriter,
+        required this.uuid,
+        required this.virtual,
+        required this.volatile,
+        required this.wcharT,
+        required this.weak,
+        required this.where,
+        required this.willSet,
+        required this.xor,
+        required this.xorEq,
+        required this.yes,
     });
 
-    factory Unowned.fromJson(Map<String, dynamic> json) => Unowned(
-        unowned: json["unowned"],
+    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"]),
+        unowned: Unowned.fromJson(json["unowned"]),
+        unsafe: Unsafe.fromJson(json["unsafe"]),
+        unsigned: Unsigned.fromJson(json["unsigned"]),
+        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"]),
+        volatile: Volatile.fromJson(json["volatile"]),
+        wcharT: WcharT.fromJson(json["wchar_t"]),
+        weak: Weak.fromJson(json["weak"]),
+        where: Where.fromJson(json["where"]),
+        willSet: WillSet.fromJson(json["willSet"]),
+        xor: Xor.fromJson(json["xor"]),
+        xorEq: XorEq.fromJson(json["xor_eq"]),
+        yes: Yes.fromJson(json["YES"]),
+    );
+
+    Map<String, dynamic> toJson() => {
+        "dummy": dummy,
+        "var": obj6Var.toJson(),
+        "void": obj6Void.toJson(),
+        "while": obj6While.toJson(),
+        "with": obj6With.toJson(),
+        "yield": obj6Yield.toJson(),
+        "unowned": unowned.toJson(),
+        "unsafe": unsafe.toJson(),
+        "unsigned": unsigned.toJson(),
+        "ushort": ushort.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(),
+        "where": where.toJson(),
+        "willSet": willSet.toJson(),
+        "xor": xor.toJson(),
+        "xor_eq": xorEq.toJson(),
+        "YES": yes.toJson(),
+    };
+}
+
+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;
+
+    Void({
+        required this.voidVoid,
+    });
+
+    factory Void.fromJson(Map<String, dynamic> json) => Void(
+        voidVoid: json["void"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "void": voidVoid,
+    };
+}
+
+class While {
+    final int whileWhile;
+
+    While({
+        required this.whileWhile,
+    });
+
+    factory While.fromJson(Map<String, dynamic> json) => While(
+        whileWhile: json["while"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "while": whileWhile,
+    };
+}
+
+class With {
+    final int withWith;
+
+    With({
+        required this.withWith,
+    });
+
+    factory With.fromJson(Map<String, dynamic> json) => With(
+        withWith: json["with"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "with": withWith,
+    };
+}
+
+class Yield {
+    final int yieldYield;
+
+    Yield({
+        required this.yieldYield,
+    });
+
+    factory Yield.fromJson(Map<String, dynamic> json) => Yield(
+        yieldYield: json["yield"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "yield": yieldYield,
+    };
+}
+
+class Unowned {
+    final int unowned;
+
+    Unowned({
+        required this.unowned,
+    });
+
+    factory Unowned.fromJson(Map<String, dynamic> json) => Unowned(
+        unowned: json["unowned"],
     );
 
     Map<String, dynamic> toJson() => {
@@ -6538,134 +6866,6 @@ class Virtual {
     };
 }
 
-class Obj6 {
-    final int dummy;
-    final Void obj6Void;
-    final While obj6While;
-    final With obj6With;
-    final Yield obj6Yield;
-    final Volatile volatile;
-    final WcharT wcharT;
-    final Weak weak;
-    final Where where;
-    final WillSet willSet;
-    final Xor xor;
-    final XorEq xorEq;
-    final Yes yes;
-
-    Obj6({
-        required this.dummy,
-        required this.obj6Void,
-        required this.obj6While,
-        required this.obj6With,
-        required this.obj6Yield,
-        required this.volatile,
-        required this.wcharT,
-        required this.weak,
-        required this.where,
-        required this.willSet,
-        required this.xor,
-        required this.xorEq,
-        required this.yes,
-    });
-
-    factory Obj6.fromJson(Map<String, dynamic> json) => Obj6(
-        dummy: json["dummy"],
-        obj6Void: Void.fromJson(json["void"]),
-        obj6While: While.fromJson(json["while"]),
-        obj6With: With.fromJson(json["with"]),
-        obj6Yield: Yield.fromJson(json["yield"]),
-        volatile: Volatile.fromJson(json["volatile"]),
-        wcharT: WcharT.fromJson(json["wchar_t"]),
-        weak: Weak.fromJson(json["weak"]),
-        where: Where.fromJson(json["where"]),
-        willSet: WillSet.fromJson(json["willSet"]),
-        xor: Xor.fromJson(json["xor"]),
-        xorEq: XorEq.fromJson(json["xor_eq"]),
-        yes: Yes.fromJson(json["YES"]),
-    );
-
-    Map<String, dynamic> toJson() => {
-        "dummy": dummy,
-        "void": obj6Void.toJson(),
-        "while": obj6While.toJson(),
-        "with": obj6With.toJson(),
-        "yield": obj6Yield.toJson(),
-        "volatile": volatile.toJson(),
-        "wchar_t": wcharT.toJson(),
-        "weak": weak.toJson(),
-        "where": where.toJson(),
-        "willSet": willSet.toJson(),
-        "xor": xor.toJson(),
-        "xor_eq": xorEq.toJson(),
-        "YES": yes.toJson(),
-    };
-}
-
-class Void {
-    final int voidVoid;
-
-    Void({
-        required this.voidVoid,
-    });
-
-    factory Void.fromJson(Map<String, dynamic> json) => Void(
-        voidVoid: json["void"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "void": voidVoid,
-    };
-}
-
-class While {
-    final int whileWhile;
-
-    While({
-        required this.whileWhile,
-    });
-
-    factory While.fromJson(Map<String, dynamic> json) => While(
-        whileWhile: json["while"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "while": whileWhile,
-    };
-}
-
-class With {
-    final int withWith;
-
-    With({
-        required this.withWith,
-    });
-
-    factory With.fromJson(Map<String, dynamic> json) => With(
-        withWith: json["with"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "with": withWith,
-    };
-}
-
-class Yield {
-    final int yieldYield;
-
-    Yield({
-        required this.yieldYield,
-    });
-
-    factory Yield.fromJson(Map<String, dynamic> json) => Yield(
-        yieldYield: json["yield"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "yield": yieldYield,
-    };
-}
-
 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..e4fb5e2 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
@@ -239,6 +239,45 @@ defmodule Array do
   end
 end
 
+defmodule ArrayNode do
+  @enforce_keys [:array_node]
+  defstruct [:array_node]
+
+  @type t :: %__MODULE__{
+          array_node: integer()
+        }
+
+  def decode_array_node(value) when is_integer(value), do: value
+  def decode_array_node(_), do: {:error, "Unexpected type when decoding ArrayNode.array_node"}
+
+  def encode_array_node(value) when is_integer(value), do: value
+  def encode_array_node(_), do: {:error, "Unexpected type when encoding ArrayNode.array_node"}
+
+  def from_map(m) do
+    %ArrayNode{
+      array_node: decode_array_node(m["ArrayNode"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "ArrayNode" => struct.array_node,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
 defmodule As do
   @enforce_keys [:as]
   defstruct [:as]
@@ -941,6 +980,45 @@ defmodule Boolean do
   end
 end
 
+defmodule BooleanNode do
+  @enforce_keys [:boolean_node]
+  defstruct [:boolean_node]
+
+  @type t :: %__MODULE__{
+          boolean_node: integer()
+        }
+
+  def decode_boolean_node(value) when is_integer(value), do: value
+  def decode_boolean_node(_), do: {:error, "Unexpected type when decoding BooleanNode.boolean_node"}
+
+  def encode_boolean_node(value) when is_integer(value), do: value
+  def encode_boolean_node(_), do: {:error, "Unexpected type when encoding BooleanNode.boolean_node"}
+
+  def from_map(m) do
+    %BooleanNode{
+      boolean_node: decode_boolean_node(m["BooleanNode"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "BooleanNode" => struct.boolean_node,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
 defmodule Break do
   @enforce_keys [:break]
   defstruct [:break]
@@ -2150,84 +2228,6 @@ defmodule Converter do
   end
 end
 
-defmodule CultureInfo do
-  @enforce_keys [:culture_info]
-  defstruct [:culture_info]
-
-  @type t :: %__MODULE__{
-          culture_info: integer()
-        }
-
-  def decode_culture_info(value) when is_integer(value), do: value
-  def decode_culture_info(_), do: {:error, "Unexpected type when decoding CultureInfo.culture_info"}
-
-  def encode_culture_info(value) when is_integer(value), do: value
-  def encode_culture_info(_), do: {:error, "Unexpected type when encoding CultureInfo.culture_info"}
-
-  def from_map(m) do
-    %CultureInfo{
-      culture_info: decode_culture_info(m["CultureInfo"]),
-    }
-  end
-
-  def from_json(json) do
-    json
-          |> Jason.decode!()
-          |> from_map()
-  end
-
-  def to_map(struct) do
-    %{
-      "CultureInfo" => struct.culture_info,
-    }
-  end
-
-  def to_json(struct) do
-    struct
-          |> to_map()
-          |> Jason.encode!()
-  end
-end
-
-defmodule DateClass do
-  @enforce_keys [:date]
-  defstruct [:date]
-
-  @type t :: %__MODULE__{
-          date: integer()
-        }
-
-  def decode_date(value) when is_integer(value), do: value
-  def decode_date(_), do: {:error, "Unexpected type when decoding DateClass.date"}
-
-  def encode_date(value) when is_integer(value), do: value
-  def encode_date(_), do: {:error, "Unexpected type when encoding DateClass.date"}
-
-  def from_map(m) do
-    %DateClass{
-      date: decode_date(m["date"]),
-    }
-  end
-
-  def from_json(json) do
-    json
-          |> Jason.decode!()
-          |> from_map()
-  end
-
-  def to_map(struct) do
-    %{
-      "date" => struct.date,
-    }
-  end
-
-  def to_json(struct) do
-    struct
-          |> to_map()
-          |> Jason.encode!()
-  end
-end
-
 defmodule Empty do
   @enforce_keys [:empty]
   defstruct [:empty]
@@ -2502,8 +2502,8 @@ defmodule ClassClass do
 end
 
 defmodule Obj1 do
-  @enforce_keys [:abstract, :alignas, :alignof, :and_eq, :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, :chan, :char, :char16_t, :char32_t, :checked, :class, :clone, :co_await, :co_return, :co_yield, :codable, :coding_key, :coding_keys, :compl, :complex, :concept, :console, :const, :const_cast, :constexpr, :constructor, :continue, :convenience, :convert, :converter, :culture_info, :date, :dummy, :empty, :imaginery, :obj1_and, :obj1_any, :obj1_bool, :obj1_catch, :obj1_class]
-  defstruct [:abstract, :alignas, :alignof, :and_eq, :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, :chan, :char, :char16_t, :char32_t, :checked, :class, :clone, :co_await, :co_return, :co_yield, :codable, :coding_key, :coding_keys, :compl, :complex, :concept, :console, :const, :const_cast, :constexpr, :constructor, :continue, :convenience, :convert, :converter, :culture_info, :date, :dummy, :empty, :imaginery, :obj1_and, :obj1_any, :obj1_bool, :obj1_catch, :obj1_class]
+  @enforce_keys [:abstract, :alignas, :alignof, :and_eq, :any, :array, :array_node, :as, :asm, :assert, :associatedtype, :associativity, :async, :atomic, :atomic_cancel, :atomic_commit, :atomic_noexcept, :auto, :await, :base, :bitand, :bitor, :bool, :bool_1, :boolean, :boolean_node, :break, :bycopy, :byref, :byte, :calendar, :case, :chan, :char, :char16_t, :char32_t, :checked, :class, :clone, :co_await, :co_return, :co_yield, :codable, :coding_key, :coding_keys, :compl, :complex, :concept, :console, :const, :const_cast, :constexpr, :constructor, :continue, :convenience, :convert, :converter, :dummy, :empty, :imaginery, :obj1_and, :obj1_any, :obj1_bool, :obj1_catch, :obj1_class]
+  defstruct [:abstract, :alignas, :alignof, :and_eq, :any, :array, :array_node, :as, :asm, :assert, :associatedtype, :associativity, :async, :atomic, :atomic_cancel, :atomic_commit, :atomic_noexcept, :auto, :await, :base, :bitand, :bitor, :bool, :bool_1, :boolean, :boolean_node, :break, :bycopy, :byref, :byte, :calendar, :case, :chan, :char, :char16_t, :char32_t, :checked, :class, :clone, :co_await, :co_return, :co_yield, :codable, :coding_key, :coding_keys, :compl, :complex, :concept, :console, :const, :const_cast, :constexpr, :constructor, :continue, :convenience, :convert, :converter, :dummy, :empty, :imaginery, :obj1_and, :obj1_any, :obj1_bool, :obj1_catch, :obj1_class]
 
   @type t :: %__MODULE__{
           abstract: Abstract.t(),
@@ -2512,6 +2512,7 @@ defmodule Obj1 do
           and_eq: AndEq.t(),
           any: AnyClass.t(),
           array: Array.t(),
+          array_node: ArrayNode.t(),
           as: As.t(),
           asm: ASM.t(),
           assert: Assert.t(),
@@ -2530,6 +2531,7 @@ defmodule Obj1 do
           bool: Bool.t(),
           bool_1: Obj1Bool.t(),
           boolean: Boolean.t(),
+          boolean_node: BooleanNode.t(),
           break: Break.t(),
           bycopy: Bycopy.t(),
           byref: Byref.t(),
@@ -2561,8 +2563,6 @@ defmodule Obj1 do
           convenience: Convenience.t(),
           convert: Convert.t(),
           converter: Converter.t(),
-          culture_info: CultureInfo.t(),
-          date: DateClass.t(),
           dummy: integer(),
           empty: Empty.t(),
           imaginery: Imaginery.t(),
@@ -2587,6 +2587,7 @@ defmodule Obj1 do
       and_eq: AndEq.from_map(m["and_eq"]),
       any: AnyClass.from_map(m["Any"]),
       array: Array.from_map(m["array"]),
+      array_node: ArrayNode.from_map(m["ArrayNode"]),
       as: As.from_map(m["as"]),
       asm: ASM.from_map(m["asm"]),
       assert: Assert.from_map(m["assert"]),
@@ -2605,6 +2606,7 @@ defmodule Obj1 do
       bool: Bool.from_map(m["BOOL"]),
       bool_1: Obj1Bool.from_map(m["bool"]),
       boolean: Boolean.from_map(m["boolean"]),
+      boolean_node: BooleanNode.from_map(m["BooleanNode"]),
       break: Break.from_map(m["break"]),
       bycopy: Bycopy.from_map(m["bycopy"]),
       byref: Byref.from_map(m["byref"]),
@@ -2636,8 +2638,6 @@ defmodule Obj1 do
       convenience: Convenience.from_map(m["convenience"]),
       convert: Convert.from_map(m["convert"]),
       converter: Converter.from_map(m["converter"]),
-      culture_info: CultureInfo.from_map(m["CultureInfo"]),
-      date: DateClass.from_map(m["date"]),
       dummy: decode_dummy(m["dummy"]),
       empty: Empty.from_map(m["_"]),
       imaginery: Imaginery.from_map(m["_Imaginery"]),
@@ -2663,6 +2663,7 @@ defmodule Obj1 do
       "and_eq" => AndEq.to_map(struct.and_eq),
       "Any" => AnyClass.to_map(struct.any),
       "array" => Array.to_map(struct.array),
+      "ArrayNode" => ArrayNode.to_map(struct.array_node),
       "as" => As.to_map(struct.as),
       "asm" => ASM.to_map(struct.asm),
       "assert" => Assert.to_map(struct.assert),
@@ -2681,6 +2682,7 @@ defmodule Obj1 do
       "BOOL" => Bool.to_map(struct.bool),
       "bool" => Obj1Bool.to_map(struct.bool_1),
       "boolean" => Boolean.to_map(struct.boolean),
+      "BooleanNode" => BooleanNode.to_map(struct.boolean_node),
       "break" => Break.to_map(struct.break),
       "bycopy" => Bycopy.to_map(struct.bycopy),
       "byref" => Byref.to_map(struct.byref),
@@ -2712,8 +2714,6 @@ defmodule Obj1 do
       "convenience" => Convenience.to_map(struct.convenience),
       "convert" => Convert.to_map(struct.convert),
       "converter" => Converter.to_map(struct.converter),
-      "CultureInfo" => CultureInfo.to_map(struct.culture_info),
-      "date" => DateClass.to_map(struct.date),
       "dummy" => struct.dummy,
       "_" => Empty.to_map(struct.empty),
       "_Imaginery" => Imaginery.to_map(struct.imaginery),
@@ -2732,6 +2732,84 @@ defmodule Obj1 do
   end
 end
 
+defmodule CultureInfo do
+  @enforce_keys [:culture_info]
+  defstruct [:culture_info]
+
+  @type t :: %__MODULE__{
+          culture_info: integer()
+        }
+
+  def decode_culture_info(value) when is_integer(value), do: value
+  def decode_culture_info(_), do: {:error, "Unexpected type when decoding CultureInfo.culture_info"}
+
+  def encode_culture_info(value) when is_integer(value), do: value
+  def encode_culture_info(_), do: {:error, "Unexpected type when encoding CultureInfo.culture_info"}
+
+  def from_map(m) do
+    %CultureInfo{
+      culture_info: decode_culture_info(m["CultureInfo"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "CultureInfo" => struct.culture_info,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule DateClass do
+  @enforce_keys [:date]
+  defstruct [:date]
+
+  @type t :: %__MODULE__{
+          date: integer()
+        }
+
+  def decode_date(value) when is_integer(value), do: value
+  def decode_date(_), do: {:error, "Unexpected type when decoding DateClass.date"}
+
+  def encode_date(value) when is_integer(value), do: value
+  def encode_date(_), do: {:error, "Unexpected type when encoding DateClass.date"}
+
+  def from_map(m) do
+    %DateClass{
+      date: decode_date(m["date"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "date" => struct.date,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
 defmodule DateFormatter do
   @enforce_keys [:date_formatter]
   defstruct [:date_formatter]
@@ -3473,6 +3551,45 @@ defmodule Delete do
   end
 end
 
+defmodule DeserializationFeature do
+  @enforce_keys [:deserialization_feature]
+  defstruct [:deserialization_feature]
+
+  @type t :: %__MODULE__{
+          deserialization_feature: integer()
+        }
+
+  def decode_deserialization_feature(value) when is_integer(value), do: value
+  def decode_deserialization_feature(_), do: {:error, "Unexpected type when decoding DeserializationFeature.deserialization_feature"}
+
+  def encode_deserialization_feature(value) when is_integer(value), do: value
+  def encode_deserialization_feature(_), do: {:error, "Unexpected type when encoding DeserializationFeature.deserialization_feature"}
+
+  def from_map(m) do
+    %DeserializationFeature{
+      deserialization_feature: decode_deserialization_feature(m["DeserializationFeature"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "DeserializationFeature" => struct.deserialization_feature,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
 defmodule DictClass do
   @enforce_keys [:dict]
   defstruct [:dict]
@@ -3629,23 +3746,62 @@ defmodule Double do
   end
 end
 
-defmodule Dynamic do
-  @enforce_keys [:dynamic]
-  defstruct [:dynamic]
+defmodule DoubleNode do
+  @enforce_keys [:double_node]
+  defstruct [:double_node]
 
   @type t :: %__MODULE__{
-          dynamic: integer()
+          double_node: integer()
         }
 
-  def decode_dynamic(value) when is_integer(value), do: value
-  def decode_dynamic(_), do: {:error, "Unexpected type when decoding Dynamic.dynamic"}
+  def decode_double_node(value) when is_integer(value), do: value
+  def decode_double_node(_), do: {:error, "Unexpected type when decoding DoubleNode.double_node"}
 
-  def encode_dynamic(value) when is_integer(value), do: value
-  def encode_dynamic(_), do: {:error, "Unexpected type when encoding Dynamic.dynamic"}
+  def encode_double_node(value) when is_integer(value), do: value
+  def encode_double_node(_), do: {:error, "Unexpected type when encoding DoubleNode.double_node"}
 
   def from_map(m) do
-    %Dynamic{
-      dynamic: decode_dynamic(m["dynamic"]),
+    %DoubleNode{
+      double_node: decode_double_node(m["DoubleNode"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "DoubleNode" => struct.double_node,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule Dynamic do
+  @enforce_keys [:dynamic]
+  defstruct [:dynamic]
+
+  @type t :: %__MODULE__{
+          dynamic: integer()
+        }
+
+  def decode_dynamic(value) when is_integer(value), do: value
+  def decode_dynamic(_), do: {:error, "Unexpected type when decoding Dynamic.dynamic"}
+
+  def encode_dynamic(value) when is_integer(value), do: value
+  def encode_dynamic(_), do: {:error, "Unexpected type when encoding Dynamic.dynamic"}
+
+  def from_map(m) do
+    %Dynamic{
+      dynamic: decode_dynamic(m["dynamic"]),
     }
   end
 
@@ -4962,162 +5118,6 @@ defmodule FunctionClass do
   end
 end
 
-defmodule Get do
-  @enforce_keys [:get]
-  defstruct [:get]
-
-  @type t :: %__MODULE__{
-          get: integer()
-        }
-
-  def decode_get(value) when is_integer(value), do: value
-  def decode_get(_), do: {:error, "Unexpected type when decoding Get.get"}
-
-  def encode_get(value) when is_integer(value), do: value
-  def encode_get(_), do: {:error, "Unexpected type when encoding Get.get"}
-
-  def from_map(m) do
-    %Get{
-      get: decode_get(m["get"]),
-    }
-  end
-
-  def from_json(json) do
-    json
-          |> Jason.decode!()
-          |> from_map()
-  end
-
-  def to_map(struct) do
-    %{
-      "get" => struct.get,
-    }
-  end
-
-  def to_json(struct) do
-    struct
-          |> to_map()
-          |> Jason.encode!()
-  end
-end
-
-defmodule Global do
-  @enforce_keys [:global]
-  defstruct [:global]
-
-  @type t :: %__MODULE__{
-          global: integer()
-        }
-
-  def decode_global(value) when is_integer(value), do: value
-  def decode_global(_), do: {:error, "Unexpected type when decoding Global.global"}
-
-  def encode_global(value) when is_integer(value), do: value
-  def encode_global(_), do: {:error, "Unexpected type when encoding Global.global"}
-
-  def from_map(m) do
-    %Global{
-      global: decode_global(m["global"]),
-    }
-  end
-
-  def from_json(json) do
-    json
-          |> Jason.decode!()
-          |> from_map()
-  end
-
-  def to_map(struct) do
-    %{
-      "global" => struct.global,
-    }
-  end
-
-  def to_json(struct) do
-    struct
-          |> to_map()
-          |> Jason.encode!()
-  end
-end
-
-defmodule Go do
-  @enforce_keys [:go]
-  defstruct [:go]
-
-  @type t :: %__MODULE__{
-          go: integer()
-        }
-
-  def decode_go(value) when is_integer(value), do: value
-  def decode_go(_), do: {:error, "Unexpected type when decoding Go.go"}
-
-  def encode_go(value) when is_integer(value), do: value
-  def encode_go(_), do: {:error, "Unexpected type when encoding Go.go"}
-
-  def from_map(m) do
-    %Go{
-      go: decode_go(m["go"]),
-    }
-  end
-
-  def from_json(json) do
-    json
-          |> Jason.decode!()
-          |> from_map()
-  end
-
-  def to_map(struct) do
-    %{
-      "go" => struct.go,
-    }
-  end
-
-  def to_json(struct) do
-    struct
-          |> to_map()
-          |> Jason.encode!()
-  end
-end
-
-defmodule Goto do
-  @enforce_keys [:goto]
-  defstruct [:goto]
-
-  @type t :: %__MODULE__{
-          goto: integer()
-        }
-
-  def decode_goto(value) when is_integer(value), do: value
-  def decode_goto(_), do: {:error, "Unexpected type when decoding Goto.goto"}
-
-  def encode_goto(value) when is_integer(value), do: value
-  def encode_goto(_), do: {:error, "Unexpected type when encoding Goto.goto"}
-
-  def from_map(m) do
-    %Goto{
-      goto: decode_goto(m["goto"]),
-    }
-  end
-
-  def from_json(json) do
-    json
-          |> Jason.decode!()
-          |> from_map()
-  end
-
-  def to_map(struct) do
-    %{
-      "goto" => struct.goto,
-    }
-  end
-
-  def to_json(struct) do
-    struct
-          |> to_map()
-          |> Jason.encode!()
-  end
-end
-
 defmodule DefClass do
   @enforce_keys [:def_def]
   defstruct [:def_def]
@@ -5275,10 +5275,12 @@ defmodule FalseClass do
 end
 
 defmodule Obj2 do
-  @enforce_keys [:date_formatter, :date_only, :date_only_converter, :date_parse_handling, :date_time, :date_time_styles, :debugger, :decimal, :declare, :decltype, :decode_string, :decoder, :decoding_error, :default, :defer, :deinit, :del, :delegate, :delete, :dict, :dictionary, :did_set, :double, :dummy, :dynamic, :dynamic_cast, :elif, :encode_quick_type, :encoder, :enum, :enum_values, :equality_contract, :equatable, :event, :except, :exception, :explicit, :export, :exposing, :extends, :extension, :extern, :fallthrough, :false_1, :fileprivate, :final, :finally, :fixed, :float, :for, :foreach, :format_exception, :friend, :from, :from_json, :func, :function, :get, :global, :go, :goto, :obj2_def, :obj2_do, :obj2_else, :obj2_false]
-  defstruct [:date_formatter, :date_only, :date_only_converter, :date_parse_handling, :date_time, :date_time_styles, :debugger, :decimal, :declare, :decltype, :decode_string, :decoder, :decoding_error, :default, :defer, :deinit, :del, :delegate, :delete, :dict, :dictionary, :did_set, :double, :dummy, :dynamic, :dynamic_cast, :elif, :encode_quick_type, :encoder, :enum, :enum_values, :equality_contract, :equatable, :event, :except, :exception, :explicit, :export, :exposing, :extends, :extension, :extern, :fallthrough, :false_1, :fileprivate, :final, :finally, :fixed, :float, :for, :foreach, :format_exception, :friend, :from, :from_json, :func, :function, :get, :global, :go, :goto, :obj2_def, :obj2_do, :obj2_else, :obj2_false]
+  @enforce_keys [:culture_info, :date, :date_formatter, :date_only, :date_only_converter, :date_parse_handling, :date_time, :date_time_styles, :debugger, :decimal, :declare, :decltype, :decode_string, :decoder, :decoding_error, :default, :defer, :deinit, :del, :delegate, :delete, :deserialization_feature, :dict, :dictionary, :did_set, :double, :double_node, :dummy, :dynamic, :dynamic_cast, :elif, :encode_quick_type, :encoder, :enum, :enum_values, :equality_contract, :equatable, :event, :except, :exception, :explicit, :export, :exposing, :extends, :extension, :extern, :fallthrough, :false_1, :fileprivate, :final, :finally, :fixed, :float, :for, :foreach, :format_exception, :friend, :from, :from_json, :func, :function, :obj2_def, :obj2_do, :obj2_else, :obj2_false]
+  defstruct [:culture_info, :date, :date_formatter, :date_only, :date_only_converter, :date_parse_handling, :date_time, :date_time_styles, :debugger, :decimal, :declare, :decltype, :decode_string, :decoder, :decoding_error, :default, :defer, :deinit, :del, :delegate, :delete, :deserialization_feature, :dict, :dictionary, :did_set, :double, :double_node, :dummy, :dynamic, :dynamic_cast, :elif, :encode_quick_type, :encoder, :enum, :enum_values, :equality_contract, :equatable, :event, :except, :exception, :explicit, :export, :exposing, :extends, :extension, :extern, :fallthrough, :false_1, :fileprivate, :final, :finally, :fixed, :float, :for, :foreach, :format_exception, :friend, :from, :from_json, :func, :function, :obj2_def, :obj2_do, :obj2_else, :obj2_false]
 
   @type t :: %__MODULE__{
+          culture_info: CultureInfo.t(),
+          date: DateClass.t(),
           date_formatter: DateFormatter.t(),
           date_only: DateOnly.t(),
           date_only_converter: DateOnlyConverter.t(),
@@ -5298,10 +5300,12 @@ defmodule Obj2 do
           del: Del.t(),
           delegate: Delegate.t(),
           delete: Delete.t(),
+          deserialization_feature: DeserializationFeature.t(),
           dict: DictClass.t(),
           dictionary: Dictionary.t(),
           did_set: DidSet.t(),
           double: Double.t(),
+          double_node: DoubleNode.t(),
           dummy: integer(),
           dynamic: Dynamic.t(),
           dynamic_cast: DynamicCast.t(),
@@ -5336,10 +5340,6 @@ defmodule Obj2 do
           from_json: FromJSON.t(),
           func: Func.t(),
           function: FunctionClass.t(),
-          get: Get.t(),
-          global: Global.t(),
-          go: Go.t(),
-          goto: Goto.t(),
           obj2_def: DefClass.t(),
           obj2_do: DoClass.t(),
           obj2_else: ElseClass.t(),
@@ -5354,6 +5354,8 @@ defmodule Obj2 do
 
   def from_map(m) do
     %Obj2{
+      culture_info: CultureInfo.from_map(m["CultureInfo"]),
+      date: DateClass.from_map(m["date"]),
       date_formatter: DateFormatter.from_map(m["DateFormatter"]),
       date_only: DateOnly.from_map(m["DateOnly"]),
       date_only_converter: DateOnlyConverter.from_map(m["DateOnlyConverter"]),
@@ -5373,10 +5375,12 @@ defmodule Obj2 do
       del: Del.from_map(m["del"]),
       delegate: Delegate.from_map(m["delegate"]),
       delete: Delete.from_map(m["delete"]),
+      deserialization_feature: DeserializationFeature.from_map(m["DeserializationFeature"]),
       dict: DictClass.from_map(m["dict"]),
       dictionary: Dictionary.from_map(m["dictionary"]),
       did_set: DidSet.from_map(m["didSet"]),
       double: Double.from_map(m["double"]),
+      double_node: DoubleNode.from_map(m["DoubleNode"]),
       dummy: decode_dummy(m["dummy"]),
       dynamic: Dynamic.from_map(m["dynamic"]),
       dynamic_cast: DynamicCast.from_map(m["dynamic_cast"]),
@@ -5411,10 +5415,6 @@ defmodule Obj2 do
       from_json: FromJSON.from_map(m["from_json"]),
       func: Func.from_map(m["func"]),
       function: FunctionClass.from_map(m["function"]),
-      get: Get.from_map(m["get"]),
-      global: Global.from_map(m["global"]),
-      go: Go.from_map(m["go"]),
-      goto: Goto.from_map(m["goto"]),
       obj2_def: DefClass.from_map(m["def"]),
       obj2_do: DoClass.from_map(m["do"]),
       obj2_else: ElseClass.from_map(m["else"]),
@@ -5430,6 +5430,8 @@ defmodule Obj2 do
 
   def to_map(struct) do
     %{
+      "CultureInfo" => CultureInfo.to_map(struct.culture_info),
+      "date" => DateClass.to_map(struct.date),
       "DateFormatter" => DateFormatter.to_map(struct.date_formatter),
       "DateOnly" => DateOnly.to_map(struct.date_only),
       "DateOnlyConverter" => DateOnlyConverter.to_map(struct.date_only_converter),
@@ -5449,10 +5451,12 @@ defmodule Obj2 do
       "del" => Del.to_map(struct.del),
       "delegate" => Delegate.to_map(struct.delegate),
       "delete" => Delete.to_map(struct.delete),
+      "DeserializationFeature" => DeserializationFeature.to_map(struct.deserialization_feature),
       "dict" => DictClass.to_map(struct.dict),
       "dictionary" => Dictionary.to_map(struct.dictionary),
       "didSet" => DidSet.to_map(struct.did_set),
       "double" => Double.to_map(struct.double),
+      "DoubleNode" => DoubleNode.to_map(struct.double_node),
       "dummy" => struct.dummy,
       "dynamic" => Dynamic.to_map(struct.dynamic),
       "dynamic_cast" => DynamicCast.to_map(struct.dynamic_cast),
@@ -5487,10 +5491,6 @@ defmodule Obj2 do
       "from_json" => FromJSON.to_map(struct.from_json),
       "func" => Func.to_map(struct.func),
       "function" => FunctionClass.to_map(struct.function),
-      "get" => Get.to_map(struct.get),
-      "global" => Global.to_map(struct.global),
-      "go" => Go.to_map(struct.go),
-      "goto" => Goto.to_map(struct.goto),
       "def" => DefClass.to_map(struct.obj2_def),
       "do" => DoClass.to_map(struct.obj2_do),
       "else" => ElseClass.to_map(struct.obj2_else),
@@ -5505,23 +5505,23 @@ defmodule Obj2 do
   end
 end
 
-defmodule Guard do
-  @enforce_keys [:guard]
-  defstruct [:guard]
+defmodule Get do
+  @enforce_keys [:get]
+  defstruct [:get]
 
   @type t :: %__MODULE__{
-          guard: integer()
+          get: integer()
         }
 
-  def decode_guard(value) when is_integer(value), do: value
-  def decode_guard(_), do: {:error, "Unexpected type when decoding Guard.guard"}
+  def decode_get(value) when is_integer(value), do: value
+  def decode_get(_), do: {:error, "Unexpected type when decoding Get.get"}
 
-  def encode_guard(value) when is_integer(value), do: value
-  def encode_guard(_), do: {:error, "Unexpected type when encoding Guard.guard"}
+  def encode_get(value) when is_integer(value), do: value
+  def encode_get(_), do: {:error, "Unexpected type when encoding Get.get"}
 
   def from_map(m) do
-    %Guard{
-      guard: decode_guard(m["guard"]),
+    %Get{
+      get: decode_get(m["get"]),
     }
   end
 
@@ -5533,7 +5533,7 @@ defmodule Guard do
 
   def to_map(struct) do
     %{
-      "guard" => struct.guard,
+      "get" => struct.get,
     }
   end
 
@@ -5544,23 +5544,23 @@ defmodule Guard do
   end
 end
 
-defmodule HasOwnProperty do
-  @enforce_keys [:has_own_property]
-  defstruct [:has_own_property]
+defmodule Global do
+  @enforce_keys [:global]
+  defstruct [:global]
 
   @type t :: %__MODULE__{
-          has_own_property: integer()
+          global: integer()
         }
 
-  def decode_has_own_property(value) when is_integer(value), do: value
-  def decode_has_own_property(_), do: {:error, "Unexpected type when decoding HasOwnProperty.has_own_property"}
+  def decode_global(value) when is_integer(value), do: value
+  def decode_global(_), do: {:error, "Unexpected type when decoding Global.global"}
 
-  def encode_has_own_property(value) when is_integer(value), do: value
-  def encode_has_own_property(_), do: {:error, "Unexpected type when encoding HasOwnProperty.has_own_property"}
+  def encode_global(value) when is_integer(value), do: value
+  def encode_global(_), do: {:error, "Unexpected type when encoding Global.global"}
 
   def from_map(m) do
-    %HasOwnProperty{
-      has_own_property: decode_has_own_property(m["hasOwnProperty"]),
+    %Global{
+      global: decode_global(m["global"]),
     }
   end
 
@@ -5572,7 +5572,163 @@ defmodule HasOwnProperty do
 
   def to_map(struct) do
     %{
-      "hasOwnProperty" => struct.has_own_property,
+      "global" => struct.global,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule Go do
+  @enforce_keys [:go]
+  defstruct [:go]
+
+  @type t :: %__MODULE__{
+          go: integer()
+        }
+
+  def decode_go(value) when is_integer(value), do: value
+  def decode_go(_), do: {:error, "Unexpected type when decoding Go.go"}
+
+  def encode_go(value) when is_integer(value), do: value
+  def encode_go(_), do: {:error, "Unexpected type when encoding Go.go"}
+
+  def from_map(m) do
+    %Go{
+      go: decode_go(m["go"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "go" => struct.go,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule Goto do
+  @enforce_keys [:goto]
+  defstruct [:goto]
+
+  @type t :: %__MODULE__{
+          goto: integer()
+        }
+
+  def decode_goto(value) when is_integer(value), do: value
+  def decode_goto(_), do: {:error, "Unexpected type when decoding Goto.goto"}
+
+  def encode_goto(value) when is_integer(value), do: value
+  def encode_goto(_), do: {:error, "Unexpected type when encoding Goto.goto"}
+
+  def from_map(m) do
+    %Goto{
+      goto: decode_goto(m["goto"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "goto" => struct.goto,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule Guard do
+  @enforce_keys [:guard]
+  defstruct [:guard]
+
+  @type t :: %__MODULE__{
+          guard: integer()
+        }
+
+  def decode_guard(value) when is_integer(value), do: value
+  def decode_guard(_), do: {:error, "Unexpected type when decoding Guard.guard"}
+
+  def encode_guard(value) when is_integer(value), do: value
+  def encode_guard(_), do: {:error, "Unexpected type when encoding Guard.guard"}
+
+  def from_map(m) do
+    %Guard{
+      guard: decode_guard(m["guard"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "guard" => struct.guard,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule HasOwnProperty do
+  @enforce_keys [:has_own_property]
+  defstruct [:has_own_property]
+
+  @type t :: %__MODULE__{
+          has_own_property: integer()
+        }
+
+  def decode_has_own_property(value) when is_integer(value), do: value
+  def decode_has_own_property(_), do: {:error, "Unexpected type when decoding HasOwnProperty.has_own_property"}
+
+  def encode_has_own_property(value) when is_integer(value), do: value
+  def encode_has_own_property(_), do: {:error, "Unexpected type when encoding HasOwnProperty.has_own_property"}
+
+  def from_map(m) do
+    %HasOwnProperty{
+      has_own_property: decode_has_own_property(m["hasOwnProperty"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "hasOwnProperty" => struct.has_own_property,
     }
   end
 
@@ -6168,6 +6324,45 @@ defmodule Int do
   end
 end
 
+defmodule IntNode do
+  @enforce_keys [:int_node]
+  defstruct [:int_node]
+
+  @type t :: %__MODULE__{
+          int_node: integer()
+        }
+
+  def decode_int_node(value) when is_integer(value), do: value
+  def decode_int_node(_), do: {:error, "Unexpected type when decoding IntNode.int_node"}
+
+  def encode_int_node(value) when is_integer(value), do: value
+  def encode_int_node(_), do: {:error, "Unexpected type when encoding IntNode.int_node"}
+
+  def from_map(m) do
+    %IntNode{
+      int_node: decode_int_node(m["IntNode"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "IntNode" => struct.int_node,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
 defmodule Interface do
   @enforce_keys [:interface]
   defstruct [:interface]
@@ -7416,6 +7611,45 @@ defmodule Long do
   end
 end
 
+defmodule LongNode do
+  @enforce_keys [:long_node]
+  defstruct [:long_node]
+
+  @type t :: %__MODULE__{
+          long_node: integer()
+        }
+
+  def decode_long_node(value) when is_integer(value), do: value
+  def decode_long_node(_), do: {:error, "Unexpected type when decoding LongNode.long_node"}
+
+  def encode_long_node(value) when is_integer(value), do: value
+  def encode_long_node(_), do: {:error, "Unexpected type when encoding LongNode.long_node"}
+
+  def from_map(m) do
+    %LongNode{
+      long_node: decode_long_node(m["LongNode"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "LongNode" => struct.long_node,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
 defmodule MapClass do
   @enforce_keys [:map]
   defstruct [:map]
@@ -7689,23 +7923,23 @@ defmodule Namespace do
   end
 end
 
-defmodule Native do
-  @enforce_keys [:native]
-  defstruct [:native]
+defmodule ImportClass do
+  @enforce_keys [:import_import]
+  defstruct [:import_import]
 
   @type t :: %__MODULE__{
-          native: integer()
+          import_import: integer()
         }
 
-  def decode_native(value) when is_integer(value), do: value
-  def decode_native(_), do: {:error, "Unexpected type when decoding Native.native"}
+  def decode_import_import(value) when is_integer(value), do: value
+  def decode_import_import(_), do: {:error, "Unexpected type when decoding ImportClass.import_import"}
 
-  def encode_native(value) when is_integer(value), do: value
-  def encode_native(_), do: {:error, "Unexpected type when encoding Native.native"}
+  def encode_import_import(value) when is_integer(value), do: value
+  def encode_import_import(_), do: {:error, "Unexpected type when encoding ImportClass.import_import"}
 
   def from_map(m) do
-    %Native{
-      native: decode_native(m["native"]),
+    %ImportClass{
+      import_import: decode_import_import(m["import"]),
     }
   end
 
@@ -7717,7 +7951,7 @@ defmodule Native do
 
   def to_map(struct) do
     %{
-      "native" => struct.native,
+      "import" => struct.import_import,
     }
   end
 
@@ -7728,23 +7962,23 @@ defmodule Native do
   end
 end
 
-defmodule New do
-  @enforce_keys [:new]
-  defstruct [:new]
+defmodule InClass do
+  @enforce_keys [:in_in]
+  defstruct [:in_in]
 
   @type t :: %__MODULE__{
-          new: integer()
+          in_in: integer()
         }
 
-  def decode_new(value) when is_integer(value), do: value
-  def decode_new(_), do: {:error, "Unexpected type when decoding New.new"}
+  def decode_in_in(value) when is_integer(value), do: value
+  def decode_in_in(_), do: {:error, "Unexpected type when decoding InClass.in_in"}
 
-  def encode_new(value) when is_integer(value), do: value
-  def encode_new(_), do: {:error, "Unexpected type when encoding New.new"}
+  def encode_in_in(value) when is_integer(value), do: value
+  def encode_in_in(_), do: {:error, "Unexpected type when encoding InClass.in_in"}
 
   def from_map(m) do
-    %New{
-      new: decode_new(m["new"]),
+    %InClass{
+      in_in: decode_in_in(m["in"]),
     }
   end
 
@@ -7756,241 +7990,7 @@ defmodule New do
 
   def to_map(struct) do
     %{
-      "new" => struct.new,
-    }
-  end
-
-  def to_json(struct) do
-    struct
-          |> to_map()
-          |> Jason.encode!()
-  end
-end
-
-defmodule Newtonsoft do
-  @enforce_keys [:newtonsoft]
-  defstruct [:newtonsoft]
-
-  @type t :: %__MODULE__{
-          newtonsoft: integer()
-        }
-
-  def decode_newtonsoft(value) when is_integer(value), do: value
-  def decode_newtonsoft(_), do: {:error, "Unexpected type when decoding Newtonsoft.newtonsoft"}
-
-  def encode_newtonsoft(value) when is_integer(value), do: value
-  def encode_newtonsoft(_), do: {:error, "Unexpected type when encoding Newtonsoft.newtonsoft"}
-
-  def from_map(m) do
-    %Newtonsoft{
-      newtonsoft: decode_newtonsoft(m["newtonsoft"]),
-    }
-  end
-
-  def from_json(json) do
-    json
-          |> Jason.decode!()
-          |> from_map()
-  end
-
-  def to_map(struct) do
-    %{
-      "newtonsoft" => struct.newtonsoft,
-    }
-  end
-
-  def to_json(struct) do
-    struct
-          |> to_map()
-          |> Jason.encode!()
-  end
-end
-
-defmodule No do
-  @enforce_keys [:no]
-  defstruct [:no]
-
-  @type t :: %__MODULE__{
-          no: integer()
-        }
-
-  def decode_no(value) when is_integer(value), do: value
-  def decode_no(_), do: {:error, "Unexpected type when decoding No.no"}
-
-  def encode_no(value) when is_integer(value), do: value
-  def encode_no(_), do: {:error, "Unexpected type when encoding No.no"}
-
-  def from_map(m) do
-    %No{
-      no: decode_no(m["NO"]),
-    }
-  end
-
-  def from_json(json) do
-    json
-          |> Jason.decode!()
-          |> from_map()
-  end
-
-  def to_map(struct) do
-    %{
-      "NO" => struct.no,
-    }
-  end
-
-  def to_json(struct) do
-    struct
-          |> to_map()
-          |> Jason.encode!()
-  end
-end
-
-defmodule Noexcept do
-  @enforce_keys [:noexcept]
-  defstruct [:noexcept]
-
-  @type t :: %__MODULE__{
-          noexcept: integer()
-        }
-
-  def decode_noexcept(value) when is_integer(value), do: value
-  def decode_noexcept(_), do: {:error, "Unexpected type when decoding Noexcept.noexcept"}
-
-  def encode_noexcept(value) when is_integer(value), do: value
-  def encode_noexcept(_), do: {:error, "Unexpected type when encoding Noexcept.noexcept"}
-
-  def from_map(m) do
-    %Noexcept{
-      noexcept: decode_noexcept(m["noexcept"]),
-    }
-  end
-
-  def from_json(json) do
-    json
-          |> Jason.decode!()
-          |> from_map()
-  end
-
-  def to_map(struct) do
-    %{
-      "noexcept" => struct.noexcept,
-    }
-  end
-
-  def to_json(struct) do
-    struct
-          |> to_map()
-          |> Jason.encode!()
-  end
-end
-
-defmodule ImportClass do
-  @enforce_keys [:import_import]
-  defstruct [:import_import]
-
-  @type t :: %__MODULE__{
-          import_import: integer()
-        }
-
-  def decode_import_import(value) when is_integer(value), do: value
-  def decode_import_import(_), do: {:error, "Unexpected type when decoding ImportClass.import_import"}
-
-  def encode_import_import(value) when is_integer(value), do: value
-  def encode_import_import(_), do: {:error, "Unexpected type when encoding ImportClass.import_import"}
-
-  def from_map(m) do
-    %ImportClass{
-      import_import: decode_import_import(m["import"]),
-    }
-  end
-
-  def from_json(json) do
-    json
-          |> Jason.decode!()
-          |> from_map()
-  end
-
-  def to_map(struct) do
-    %{
-      "import" => struct.import_import,
-    }
-  end
-
-  def to_json(struct) do
-    struct
-          |> to_map()
-          |> Jason.encode!()
-  end
-end
-
-defmodule InClass do
-  @enforce_keys [:in_in]
-  defstruct [:in_in]
-
-  @type t :: %__MODULE__{
-          in_in: integer()
-        }
-
-  def decode_in_in(value) when is_integer(value), do: value
-  def decode_in_in(_), do: {:error, "Unexpected type when decoding InClass.in_in"}
-
-  def encode_in_in(value) when is_integer(value), do: value
-  def encode_in_in(_), do: {:error, "Unexpected type when encoding InClass.in_in"}
-
-  def from_map(m) do
-    %InClass{
-      in_in: decode_in_in(m["in"]),
-    }
-  end
-
-  def from_json(json) do
-    json
-          |> Jason.decode!()
-          |> from_map()
-  end
-
-  def to_map(struct) do
-    %{
-      "in" => struct.in_in,
-    }
-  end
-
-  def to_json(struct) do
-    struct
-          |> to_map()
-          |> Jason.encode!()
-  end
-end
-
-defmodule NilClass do
-  @enforce_keys [:nil_nil]
-  defstruct [:nil_nil]
-
-  @type t :: %__MODULE__{
-          nil_nil: integer()
-        }
-
-  def decode_nil_nil(value) when is_integer(value), do: value
-  def decode_nil_nil(_), do: {:error, "Unexpected type when decoding NilClass.nil_nil"}
-
-  def encode_nil_nil(value) when is_integer(value), do: value
-  def encode_nil_nil(_), do: {:error, "Unexpected type when encoding NilClass.nil_nil"}
-
-  def from_map(m) do
-    %NilClass{
-      nil_nil: decode_nil_nil(m["nil"]),
-    }
-  end
-
-  def from_json(json) do
-    json
-          |> Jason.decode!()
-          |> from_map()
-  end
-
-  def to_map(struct) do
-    %{
-      "nil" => struct.nil_nil,
+      "in" => struct.in_in,
     }
   end
 
@@ -8002,11 +8002,15 @@ defmodule NilClass do
 end
 
 defmodule Obj3 do
-  @enforce_keys [:dummy, :guard, :has_own_property, :hash_code, :hashable, :hasher, :id, :if, :imp, :implements, :implicit, :indirect, :infix, :init, :inline, :inout, :instanceof, :int, :interface, :internal, :is, :iso_date_time_offset_converter, :iterable, :jdec, :jenc, :jpipe, :json, :json_any, :json_coding_key, :json_converter, :json_decoder, :json_encoder, :json_exception, :json_generator, :json_node, :json_null, :json_parser, :json_reader, :json_serializer, :json_token, :json_token_type, :json_writer, :lambda, :lazy, :left, :let, :list, :locale, :lock, :long, :map, :map_entry, :metadata_property_handling, :module, :mutable, :mutating, :namespace, :native, :new, :newtonsoft, :no, :noexcept, :obj3_import, :obj3_in, :obj3_nil]
-  defstruct [:dummy, :guard, :has_own_property, :hash_code, :hashable, :hasher, :id, :if, :imp, :implements, :implicit, :indirect, :infix, :init, :inline, :inout, :instanceof, :int, :interface, :internal, :is, :iso_date_time_offset_converter, :iterable, :jdec, :jenc, :jpipe, :json, :json_any, :json_coding_key, :json_converter, :json_decoder, :json_encoder, :json_exception, :json_generator, :json_node, :json_null, :json_parser, :json_reader, :json_serializer, :json_token, :json_token_type, :json_writer, :lambda, :lazy, :left, :let, :list, :locale, :lock, :long, :map, :map_entry, :metadata_property_handling, :module, :mutable, :mutating, :namespace, :native, :new, :newtonsoft, :no, :noexcept, :obj3_import, :obj3_in, :obj3_nil]
+  @enforce_keys [:dummy, :get, :global, :go, :goto, :guard, :has_own_property, :hash_code, :hashable, :hasher, :id, :if, :imp, :implements, :implicit, :indirect, :infix, :init, :inline, :inout, :instanceof, :int, :int_node, :interface, :internal, :is, :iso_date_time_offset_converter, :iterable, :jdec, :jenc, :jpipe, :json, :json_any, :json_coding_key, :json_converter, :json_decoder, :json_encoder, :json_exception, :json_generator, :json_node, :json_null, :json_parser, :json_reader, :json_serializer, :json_token, :json_token_type, :json_writer, :lambda, :lazy, :left, :let, :list, :locale, :lock, :long, :long_node, :map, :map_entry, :metadata_property_handling, :module, :mutable, :mutating, :namespace, :obj3_import, :obj3_in]
+  defstruct [:dummy, :get, :global, :go, :goto, :guard, :has_own_property, :hash_code, :hashable, :hasher, :id, :if, :imp, :implements, :implicit, :indirect, :infix, :init, :inline, :inout, :instanceof, :int, :int_node, :interface, :internal, :is, :iso_date_time_offset_converter, :iterable, :jdec, :jenc, :jpipe, :json, :json_any, :json_coding_key, :json_converter, :json_decoder, :json_encoder, :json_exception, :json_generator, :json_node, :json_null, :json_parser, :json_reader, :json_serializer, :json_token, :json_token_type, :json_writer, :lambda, :lazy, :left, :let, :list, :locale, :lock, :long, :long_node, :map, :map_entry, :metadata_property_handling, :module, :mutable, :mutating, :namespace, :obj3_import, :obj3_in]
 
   @type t :: %__MODULE__{
           dummy: integer(),
+          get: Get.t(),
+          global: Global.t(),
+          go: Go.t(),
+          goto: Goto.t(),
           guard: Guard.t(),
           has_own_property: HasOwnProperty.t(),
           hash_code: HashCode.t(),
@@ -8024,6 +8028,7 @@ defmodule Obj3 do
           inout: Inout.t(),
           instanceof: Instanceof.t(),
           int: Int.t(),
+          int_node: IntNode.t(),
           interface: Interface.t(),
           internal: Internal.t(),
           is: Is.t(),
@@ -8056,6 +8061,7 @@ defmodule Obj3 do
           locale: Locale.t(),
           lock: Lock.t(),
           long: Long.t(),
+          long_node: LongNode.t(),
           map: MapClass.t(),
           map_entry: MapEntry.t(),
           metadata_property_handling: MetadataPropertyHandling.t(),
@@ -8063,14 +8069,8 @@ defmodule Obj3 do
           mutable: Mutable.t(),
           mutating: Mutating.t(),
           namespace: Namespace.t(),
-          native: Native.t(),
-          new: New.t(),
-          newtonsoft: Newtonsoft.t(),
-          no: No.t(),
-          noexcept: Noexcept.t(),
           obj3_import: ImportClass.t(),
-          obj3_in: InClass.t(),
-          obj3_nil: NilClass.t()
+          obj3_in: InClass.t()
         }
 
   def decode_dummy(value) when is_integer(value), do: value
@@ -8082,6 +8082,10 @@ defmodule Obj3 do
   def from_map(m) do
     %Obj3{
       dummy: decode_dummy(m["dummy"]),
+      get: Get.from_map(m["get"]),
+      global: Global.from_map(m["global"]),
+      go: Go.from_map(m["go"]),
+      goto: Goto.from_map(m["goto"]),
       guard: Guard.from_map(m["guard"]),
       has_own_property: HasOwnProperty.from_map(m["hasOwnProperty"]),
       hash_code: HashCode.from_map(m["hashCode"]),
@@ -8099,6 +8103,7 @@ defmodule Obj3 do
       inout: Inout.from_map(m["inout"]),
       instanceof: Instanceof.from_map(m["instanceof"]),
       int: Int.from_map(m["int"]),
+      int_node: IntNode.from_map(m["IntNode"]),
       interface: Interface.from_map(m["interface"]),
       internal: Internal.from_map(m["internal"]),
       is: Is.from_map(m["is"]),
@@ -8131,6 +8136,7 @@ defmodule Obj3 do
       locale: Locale.from_map(m["Locale"]),
       lock: Lock.from_map(m["lock"]),
       long: Long.from_map(m["long"]),
+      long_node: LongNode.from_map(m["LongNode"]),
       map: MapClass.from_map(m["map"]),
       map_entry: MapEntry.from_map(m["MapEntry"]),
       metadata_property_handling: MetadataPropertyHandling.from_map(m["metadata_property_handling"]),
@@ -8138,14 +8144,8 @@ defmodule Obj3 do
       mutable: Mutable.from_map(m["mutable"]),
       mutating: Mutating.from_map(m["mutating"]),
       namespace: Namespace.from_map(m["namespace"]),
-      native: Native.from_map(m["native"]),
-      new: New.from_map(m["new"]),
-      newtonsoft: Newtonsoft.from_map(m["newtonsoft"]),
-      no: No.from_map(m["NO"]),
-      noexcept: Noexcept.from_map(m["noexcept"]),
       obj3_import: ImportClass.from_map(m["import"]),
       obj3_in: InClass.from_map(m["in"]),
-      obj3_nil: NilClass.from_map(m["nil"]),
     }
   end
 
@@ -8158,6 +8158,10 @@ defmodule Obj3 do
   def to_map(struct) do
     %{
       "dummy" => struct.dummy,
+      "get" => Get.to_map(struct.get),
+      "global" => Global.to_map(struct.global),
+      "go" => Go.to_map(struct.go),
+      "goto" => Goto.to_map(struct.goto),
       "guard" => Guard.to_map(struct.guard),
       "hasOwnProperty" => HasOwnProperty.to_map(struct.has_own_property),
       "hashCode" => HashCode.to_map(struct.hash_code),
@@ -8175,6 +8179,7 @@ defmodule Obj3 do
       "inout" => Inout.to_map(struct.inout),
       "instanceof" => Instanceof.to_map(struct.instanceof),
       "int" => Int.to_map(struct.int),
+      "IntNode" => IntNode.to_map(struct.int_node),
       "interface" => Interface.to_map(struct.interface),
       "internal" => Internal.to_map(struct.internal),
       "is" => Is.to_map(struct.is),
@@ -8207,6 +8212,7 @@ defmodule Obj3 do
       "Locale" => Locale.to_map(struct.locale),
       "lock" => Lock.to_map(struct.lock),
       "long" => Long.to_map(struct.long),
+      "LongNode" => LongNode.to_map(struct.long_node),
       "map" => MapClass.to_map(struct.map),
       "MapEntry" => MapEntry.to_map(struct.map_entry),
       "metadata_property_handling" => MetadataPropertyHandling.to_map(struct.metadata_property_handling),
@@ -8214,14 +8220,164 @@ defmodule Obj3 do
       "mutable" => Mutable.to_map(struct.mutable),
       "mutating" => Mutating.to_map(struct.mutating),
       "namespace" => Namespace.to_map(struct.namespace),
-      "native" => Native.to_map(struct.native),
-      "new" => New.to_map(struct.new),
-      "newtonsoft" => Newtonsoft.to_map(struct.newtonsoft),
-      "NO" => No.to_map(struct.no),
-      "noexcept" => Noexcept.to_map(struct.noexcept),
       "import" => ImportClass.to_map(struct.obj3_import),
       "in" => InClass.to_map(struct.obj3_in),
-      "nil" => NilClass.to_map(struct.obj3_nil),
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule Native do
+  @enforce_keys [:native]
+  defstruct [:native]
+
+  @type t :: %__MODULE__{
+          native: integer()
+        }
+
+  def decode_native(value) when is_integer(value), do: value
+  def decode_native(_), do: {:error, "Unexpected type when decoding Native.native"}
+
+  def encode_native(value) when is_integer(value), do: value
+  def encode_native(_), do: {:error, "Unexpected type when encoding Native.native"}
+
+  def from_map(m) do
+    %Native{
+      native: decode_native(m["native"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "native" => struct.native,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule New do
+  @enforce_keys [:new]
+  defstruct [:new]
+
+  @type t :: %__MODULE__{
+          new: integer()
+        }
+
+  def decode_new(value) when is_integer(value), do: value
+  def decode_new(_), do: {:error, "Unexpected type when decoding New.new"}
+
+  def encode_new(value) when is_integer(value), do: value
+  def encode_new(_), do: {:error, "Unexpected type when encoding New.new"}
+
+  def from_map(m) do
+    %New{
+      new: decode_new(m["new"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "new" => struct.new,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule Newtonsoft do
+  @enforce_keys [:newtonsoft]
+  defstruct [:newtonsoft]
+
+  @type t :: %__MODULE__{
+          newtonsoft: integer()
+        }
+
+  def decode_newtonsoft(value) when is_integer(value), do: value
+  def decode_newtonsoft(_), do: {:error, "Unexpected type when decoding Newtonsoft.newtonsoft"}
+
+  def encode_newtonsoft(value) when is_integer(value), do: value
+  def encode_newtonsoft(_), do: {:error, "Unexpected type when encoding Newtonsoft.newtonsoft"}
+
+  def from_map(m) do
+    %Newtonsoft{
+      newtonsoft: decode_newtonsoft(m["newtonsoft"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "newtonsoft" => struct.newtonsoft,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule No do
+  @enforce_keys [:no]
+  defstruct [:no]
+
+  @type t :: %__MODULE__{
+          no: integer()
+        }
+
+  def decode_no(value) when is_integer(value), do: value
+  def decode_no(_), do: {:error, "Unexpected type when decoding No.no"}
+
+  def encode_no(value) when is_integer(value), do: value
+  def encode_no(_), do: {:error, "Unexpected type when encoding No.no"}
+
+  def from_map(m) do
+    %No{
+      no: decode_no(m["NO"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "NO" => struct.no,
     }
   end
 
@@ -8271,6 +8427,45 @@ defmodule NoSuchMethod do
   end
 end
 
+defmodule Noexcept do
+  @enforce_keys [:noexcept]
+  defstruct [:noexcept]
+
+  @type t :: %__MODULE__{
+          noexcept: integer()
+        }
+
+  def decode_noexcept(value) when is_integer(value), do: value
+  def decode_noexcept(_), do: {:error, "Unexpected type when decoding Noexcept.noexcept"}
+
+  def encode_noexcept(value) when is_integer(value), do: value
+  def encode_noexcept(_), do: {:error, "Unexpected type when encoding Noexcept.noexcept"}
+
+  def from_map(m) do
+    %Noexcept{
+      noexcept: decode_noexcept(m["noexcept"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "noexcept" => struct.noexcept,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
 defmodule Nonatomic do
   @enforce_keys [:nonatomic]
   defstruct [:nonatomic]
@@ -8622,6 +8817,45 @@ defmodule Null do
   end
 end
 
+defmodule NullNode do
+  @enforce_keys [:null_node]
+  defstruct [:null_node]
+
+  @type t :: %__MODULE__{
+          null_node: integer()
+        }
+
+  def decode_null_node(value) when is_integer(value), do: value
+  def decode_null_node(_), do: {:error, "Unexpected type when decoding NullNode.null_node"}
+
+  def encode_null_node(value) when is_integer(value), do: value
+  def encode_null_node(_), do: {:error, "Unexpected type when encoding NullNode.null_node"}
+
+  def from_map(m) do
+    %NullNode{
+      null_node: decode_null_node(m["NullNode"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "NullNode" => struct.null_node,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
 defmodule Nullptr do
   @enforce_keys [:nullptr]
   defstruct [:nullptr]
@@ -8700,23 +8934,23 @@ defmodule Number do
   end
 end
 
-defmodule NoneClass do
-  @enforce_keys [:none]
-  defstruct [:none]
+defmodule NilClass do
+  @enforce_keys [:nil_nil]
+  defstruct [:nil_nil]
 
   @type t :: %__MODULE__{
-          none: integer()
+          nil_nil: integer()
         }
 
-  def decode_none(value) when is_integer(value), do: value
-  def decode_none(_), do: {:error, "Unexpected type when decoding NoneClass.none"}
+  def decode_nil_nil(value) when is_integer(value), do: value
+  def decode_nil_nil(_), do: {:error, "Unexpected type when decoding NilClass.nil_nil"}
 
-  def encode_none(value) when is_integer(value), do: value
-  def encode_none(_), do: {:error, "Unexpected type when encoding NoneClass.none"}
+  def encode_nil_nil(value) when is_integer(value), do: value
+  def encode_nil_nil(_), do: {:error, "Unexpected type when encoding NilClass.nil_nil"}
 
   def from_map(m) do
-    %NoneClass{
-      none: decode_none(m["none"]),
+    %NilClass{
+      nil_nil: decode_nil_nil(m["nil"]),
     }
   end
 
@@ -8728,7 +8962,7 @@ defmodule NoneClass do
 
   def to_map(struct) do
     %{
-      "none" => struct.none,
+      "nil" => struct.nil_nil,
     }
   end
 
@@ -8739,9 +8973,48 @@ defmodule NoneClass do
   end
 end
 
-defmodule NotClass do
-  @enforce_keys [:not_not]
-  defstruct [:not_not]
+defmodule NoneClass do
+  @enforce_keys [:none]
+  defstruct [:none]
+
+  @type t :: %__MODULE__{
+          none: integer()
+        }
+
+  def decode_none(value) when is_integer(value), do: value
+  def decode_none(_), do: {:error, "Unexpected type when decoding NoneClass.none"}
+
+  def encode_none(value) when is_integer(value), do: value
+  def encode_none(_), do: {:error, "Unexpected type when encoding NoneClass.none"}
+
+  def from_map(m) do
+    %NoneClass{
+      none: decode_none(m["none"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "none" => struct.none,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule NotClass do
+  @enforce_keys [:not_not]
+  defstruct [:not_not]
 
   @type t :: %__MODULE__{
           not_not: integer()
@@ -8973,6 +9246,45 @@ defmodule ObjectMapper do
   end
 end
 
+defmodule ObjectNode do
+  @enforce_keys [:object_node]
+  defstruct [:object_node]
+
+  @type t :: %__MODULE__{
+          object_node: integer()
+        }
+
+  def decode_object_node(value) when is_integer(value), do: value
+  def decode_object_node(_), do: {:error, "Unexpected type when decoding ObjectNode.object_node"}
+
+  def encode_object_node(value) when is_integer(value), do: value
+  def encode_object_node(_), do: {:error, "Unexpected type when encoding ObjectNode.object_node"}
+
+  def from_map(m) do
+    %ObjectNode{
+      object_node: decode_object_node(m["ObjectNode"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "ObjectNode" => struct.object_node,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
 defmodule Of do
   @enforce_keys [:of]
   defstruct [:of]
@@ -10416,62 +10728,151 @@ defmodule Rethrows do
   end
 end
 
-defmodule Return do
-  @enforce_keys [:return]
-  defstruct [:return]
-
-  @type t :: %__MODULE__{
-          return: integer()
-        }
-
-  def decode_return(value) when is_integer(value), do: value
-  def decode_return(_), do: {:error, "Unexpected type when decoding Return.return"}
-
-  def encode_return(value) when is_integer(value), do: value
-  def encode_return(_), do: {:error, "Unexpected type when encoding Return.return"}
-
-  def from_map(m) do
-    %Return{
-      return: decode_return(m["return"]),
-    }
-  end
-
-  def from_json(json) do
-    json
-          |> Jason.decode!()
-          |> from_map()
-  end
-
-  def to_map(struct) do
-    %{
-      "return" => struct.return,
-    }
-  end
-
-  def to_json(struct) do
-    struct
-          |> to_map()
-          |> Jason.encode!()
-  end
-end
-
-defmodule Right do
-  @enforce_keys [:right]
-  defstruct [:right]
+defmodule Obj4 do
+  @enforce_keys [:dummy, :native, :new, :newtonsoft, :no, :no_such_method, :noexcept, :nonatomic, :none, :nonlocal, :nonmutating, :not_eq, :ns_error, :ns_object, :ns_string, :null, :null_node, :nullptr, :number, :obj4_nil, :obj4_none, :obj4_not, :obj4_null, :obj4_or, :obj4_protocol, :object, :object_mapper, :object_node, :of, :oneway, :open, :operator, :optional, :or_eq, :out, :override, :package, :params, :pass, :port, :postfix, :precedence, :prefix, :print, :print_members, :printf, :private, :protected, :protocol, :public, :quicktype, :raise, :range, :readonly, :ref, :reg_exp, :register, :reinterpret_cast, :repeat, :require, :required, :requires, :restrict, :retain, :rethrows]
+  defstruct [:dummy, :native, :new, :newtonsoft, :no, :no_such_method, :noexcept, :nonatomic, :none, :nonlocal, :nonmutating, :not_eq, :ns_error, :ns_object, :ns_string, :null, :null_node, :nullptr, :number, :obj4_nil, :obj4_none, :obj4_not, :obj4_null, :obj4_or, :obj4_protocol, :object, :object_mapper, :object_node, :of, :oneway, :open, :operator, :optional, :or_eq, :out, :override, :package, :params, :pass, :port, :postfix, :precedence, :prefix, :print, :print_members, :printf, :private, :protected, :protocol, :public, :quicktype, :raise, :range, :readonly, :ref, :reg_exp, :register, :reinterpret_cast, :repeat, :require, :required, :requires, :restrict, :retain, :rethrows]
 
   @type t :: %__MODULE__{
-          right: integer()
+          dummy: integer(),
+          native: Native.t(),
+          new: New.t(),
+          newtonsoft: Newtonsoft.t(),
+          no: No.t(),
+          no_such_method: NoSuchMethod.t(),
+          noexcept: Noexcept.t(),
+          nonatomic: Nonatomic.t(),
+          none: None.t(),
+          nonlocal: Nonlocal.t(),
+          nonmutating: Nonmutating.t(),
+          not_eq: NotEq.t(),
+          ns_error: NSError.t(),
+          ns_object: NSObject.t(),
+          ns_string: NSString.t(),
+          null: Null.t(),
+          null_node: NullNode.t(),
+          nullptr: Nullptr.t(),
+          number: Number.t(),
+          obj4_nil: NilClass.t(),
+          obj4_none: NoneClass.t(),
+          obj4_not: NotClass.t(),
+          obj4_null: NullClass.t(),
+          obj4_or: OrClass.t(),
+          obj4_protocol: Obj4Protocol.t(),
+          object: Object.t(),
+          object_mapper: ObjectMapper.t(),
+          object_node: ObjectNode.t(),
+          of: Of.t(),
+          oneway: Oneway.t(),
+          open: Open.t(),
+          operator: Operator.t(),
+          optional: Optional.t(),
+          or_eq: OrEq.t(),
+          out: Out.t(),
+          override: Override.t(),
+          package: Package.t(),
+          params: Params.t(),
+          pass: Pass.t(),
+          port: PortClass.t(),
+          postfix: Postfix.t(),
+          precedence: Precedence.t(),
+          prefix: Prefix.t(),
+          print: Print.t(),
+          print_members: PrintMembers.t(),
+          printf: Printf.t(),
+          private: Private.t(),
+          protected: Protected.t(),
+          protocol: ProtocolClass.t(),
+          public: Public.t(),
+          quicktype: Quicktype.t(),
+          raise: Raise.t(),
+          range: RangeClass.t(),
+          readonly: Readonly.t(),
+          ref: Ref.t(),
+          reg_exp: RegExp.t(),
+          register: Register.t(),
+          reinterpret_cast: ReinterpretCast.t(),
+          repeat: Repeat.t(),
+          require: Require.t(),
+          required: Required.t(),
+          requires: Requires.t(),
+          restrict: Restrict.t(),
+          retain: Retain.t(),
+          rethrows: Rethrows.t()
         }
 
-  def decode_right(value) when is_integer(value), do: value
-  def decode_right(_), do: {:error, "Unexpected type when decoding Right.right"}
+  def decode_dummy(value) when is_integer(value), do: value
+  def decode_dummy(_), do: {:error, "Unexpected type when decoding Obj4.dummy"}
 
-  def encode_right(value) when is_integer(value), do: value
-  def encode_right(_), do: {:error, "Unexpected type when encoding Right.right"}
+  def encode_dummy(value) when is_integer(value), do: value
+  def encode_dummy(_), do: {:error, "Unexpected type when encoding Obj4.dummy"}
 
   def from_map(m) do
-    %Right{
-      right: decode_right(m["right"]),
+    %Obj4{
+      dummy: decode_dummy(m["dummy"]),
+      native: Native.from_map(m["native"]),
+      new: New.from_map(m["new"]),
+      newtonsoft: Newtonsoft.from_map(m["newtonsoft"]),
+      no: No.from_map(m["NO"]),
+      no_such_method: NoSuchMethod.from_map(m["noSuchMethod"]),
+      noexcept: Noexcept.from_map(m["noexcept"]),
+      nonatomic: Nonatomic.from_map(m["nonatomic"]),
+      none: None.from_map(m["None"]),
+      nonlocal: Nonlocal.from_map(m["nonlocal"]),
+      nonmutating: Nonmutating.from_map(m["nonmutating"]),
+      not_eq: NotEq.from_map(m["not_eq"]),
+      ns_error: NSError.from_map(m["NSError"]),
+      ns_object: NSObject.from_map(m["NSObject"]),
+      ns_string: NSString.from_map(m["NSString"]),
+      null: Null.from_map(m["NULL"]),
+      null_node: NullNode.from_map(m["NullNode"]),
+      nullptr: Nullptr.from_map(m["nullptr"]),
+      number: Number.from_map(m["number"]),
+      obj4_nil: NilClass.from_map(m["nil"]),
+      obj4_none: NoneClass.from_map(m["none"]),
+      obj4_not: NotClass.from_map(m["not"]),
+      obj4_null: NullClass.from_map(m["null"]),
+      obj4_or: OrClass.from_map(m["or"]),
+      obj4_protocol: Obj4Protocol.from_map(m["protocol"]),
+      object: Object.from_map(m["object"]),
+      object_mapper: ObjectMapper.from_map(m["ObjectMapper"]),
+      object_node: ObjectNode.from_map(m["ObjectNode"]),
+      of: Of.from_map(m["of"]),
+      oneway: Oneway.from_map(m["oneway"]),
+      open: Open.from_map(m["open"]),
+      operator: Operator.from_map(m["operator"]),
+      optional: Optional.from_map(m["optional"]),
+      or_eq: OrEq.from_map(m["or_eq"]),
+      out: Out.from_map(m["out"]),
+      override: Override.from_map(m["override"]),
+      package: Package.from_map(m["package"]),
+      params: Params.from_map(m["params"]),
+      pass: Pass.from_map(m["pass"]),
+      port: PortClass.from_map(m["port"]),
+      postfix: Postfix.from_map(m["postfix"]),
+      precedence: Precedence.from_map(m["precedence"]),
+      prefix: Prefix.from_map(m["prefix"]),
+      print: Print.from_map(m["print"]),
+      print_members: PrintMembers.from_map(m["printMembers"]),
+      printf: Printf.from_map(m["printf"]),
+      private: Private.from_map(m["private"]),
+      protected: Protected.from_map(m["protected"]),
+      protocol: ProtocolClass.from_map(m["Protocol"]),
+      public: Public.from_map(m["public"]),
+      quicktype: Quicktype.from_map(m["quicktype"]),
+      raise: Raise.from_map(m["raise"]),
+      range: RangeClass.from_map(m["range"]),
+      readonly: Readonly.from_map(m["readonly"]),
+      ref: Ref.from_map(m["ref"]),
+      reg_exp: RegExp.from_map(m["RegExp"]),
+      register: Register.from_map(m["register"]),
+      reinterpret_cast: ReinterpretCast.from_map(m["reinterpret_cast"]),
+      repeat: Repeat.from_map(m["repeat"]),
+      require: Require.from_map(m["require"]),
+      required: Required.from_map(m["required"]),
+      requires: Requires.from_map(m["requires"]),
+      restrict: Restrict.from_map(m["restrict"]),
+      retain: Retain.from_map(m["retain"]),
+      rethrows: Rethrows.from_map(m["rethrows"]),
     }
   end
 
@@ -10483,34 +10884,98 @@ defmodule Right do
 
   def to_map(struct) do
     %{
-      "right" => struct.right,
-    }
-  end
-
-  def to_json(struct) do
-    struct
-          |> to_map()
-          |> Jason.encode!()
-  end
-end
-
-defmodule RuntimeType do
-  @enforce_keys [:runtime_type]
-  defstruct [:runtime_type]
+      "dummy" => struct.dummy,
+      "native" => Native.to_map(struct.native),
+      "new" => New.to_map(struct.new),
+      "newtonsoft" => Newtonsoft.to_map(struct.newtonsoft),
+      "NO" => No.to_map(struct.no),
+      "noSuchMethod" => NoSuchMethod.to_map(struct.no_such_method),
+      "noexcept" => Noexcept.to_map(struct.noexcept),
+      "nonatomic" => Nonatomic.to_map(struct.nonatomic),
+      "None" => None.to_map(struct.none),
+      "nonlocal" => Nonlocal.to_map(struct.nonlocal),
+      "nonmutating" => Nonmutating.to_map(struct.nonmutating),
+      "not_eq" => NotEq.to_map(struct.not_eq),
+      "NSError" => NSError.to_map(struct.ns_error),
+      "NSObject" => NSObject.to_map(struct.ns_object),
+      "NSString" => NSString.to_map(struct.ns_string),
+      "NULL" => Null.to_map(struct.null),
+      "NullNode" => NullNode.to_map(struct.null_node),
+      "nullptr" => Nullptr.to_map(struct.nullptr),
+      "number" => Number.to_map(struct.number),
+      "nil" => NilClass.to_map(struct.obj4_nil),
+      "none" => NoneClass.to_map(struct.obj4_none),
+      "not" => NotClass.to_map(struct.obj4_not),
+      "null" => NullClass.to_map(struct.obj4_null),
+      "or" => OrClass.to_map(struct.obj4_or),
+      "protocol" => Obj4Protocol.to_map(struct.obj4_protocol),
+      "object" => Object.to_map(struct.object),
+      "ObjectMapper" => ObjectMapper.to_map(struct.object_mapper),
+      "ObjectNode" => ObjectNode.to_map(struct.object_node),
+      "of" => Of.to_map(struct.of),
+      "oneway" => Oneway.to_map(struct.oneway),
+      "open" => Open.to_map(struct.open),
+      "operator" => Operator.to_map(struct.operator),
+      "optional" => Optional.to_map(struct.optional),
+      "or_eq" => OrEq.to_map(struct.or_eq),
+      "out" => Out.to_map(struct.out),
+      "override" => Override.to_map(struct.override),
+      "package" => Package.to_map(struct.package),
+      "params" => Params.to_map(struct.params),
+      "pass" => Pass.to_map(struct.pass),
+      "port" => PortClass.to_map(struct.port),
+      "postfix" => Postfix.to_map(struct.postfix),
+      "precedence" => Precedence.to_map(struct.precedence),
+      "prefix" => Prefix.to_map(struct.prefix),
+      "print" => Print.to_map(struct.print),
+      "printMembers" => PrintMembers.to_map(struct.print_members),
+      "printf" => Printf.to_map(struct.printf),
+      "private" => Private.to_map(struct.private),
+      "protected" => Protected.to_map(struct.protected),
+      "Protocol" => ProtocolClass.to_map(struct.protocol),
+      "public" => Public.to_map(struct.public),
+      "quicktype" => Quicktype.to_map(struct.quicktype),
+      "raise" => Raise.to_map(struct.raise),
+      "range" => RangeClass.to_map(struct.range),
+      "readonly" => Readonly.to_map(struct.readonly),
+      "ref" => Ref.to_map(struct.ref),
+      "RegExp" => RegExp.to_map(struct.reg_exp),
+      "register" => Register.to_map(struct.register),
+      "reinterpret_cast" => ReinterpretCast.to_map(struct.reinterpret_cast),
+      "repeat" => Repeat.to_map(struct.repeat),
+      "require" => Require.to_map(struct.require),
+      "required" => Required.to_map(struct.required),
+      "requires" => Requires.to_map(struct.requires),
+      "restrict" => Restrict.to_map(struct.restrict),
+      "retain" => Retain.to_map(struct.retain),
+      "rethrows" => Rethrows.to_map(struct.rethrows),
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule SelfClass do
+  @enforce_keys [:self]
+  defstruct [:self]
 
   @type t :: %__MODULE__{
-          runtime_type: integer()
+          self: integer()
         }
 
-  def decode_runtime_type(value) when is_integer(value), do: value
-  def decode_runtime_type(_), do: {:error, "Unexpected type when decoding RuntimeType.runtime_type"}
+  def decode_self(value) when is_integer(value), do: value
+  def decode_self(_), do: {:error, "Unexpected type when decoding SelfClass.self"}
 
-  def encode_runtime_type(value) when is_integer(value), do: value
-  def encode_runtime_type(_), do: {:error, "Unexpected type when encoding RuntimeType.runtime_type"}
+  def encode_self(value) when is_integer(value), do: value
+  def encode_self(_), do: {:error, "Unexpected type when encoding SelfClass.self"}
 
   def from_map(m) do
-    %RuntimeType{
-      runtime_type: decode_runtime_type(m["runtimeType"]),
+    %SelfClass{
+      self: decode_self(m["self"]),
     }
   end
 
@@ -10522,7 +10987,7 @@ defmodule RuntimeType do
 
   def to_map(struct) do
     %{
-      "runtimeType" => struct.runtime_type,
+      "self" => struct.self,
     }
   end
 
@@ -10533,23 +10998,23 @@ defmodule RuntimeType do
   end
 end
 
-defmodule S do
-  @enforce_keys [:s]
-  defstruct [:s]
+defmodule TrueClass do
+  @enforce_keys [:true_true]
+  defstruct [:true_true]
 
   @type t :: %__MODULE__{
-          s: integer()
+          true_true: integer()
         }
 
-  def decode_s(value) when is_integer(value), do: value
-  def decode_s(_), do: {:error, "Unexpected type when decoding S.s"}
+  def decode_true_true(value) when is_integer(value), do: value
+  def decode_true_true(_), do: {:error, "Unexpected type when decoding TrueClass.true_true"}
 
-  def encode_s(value) when is_integer(value), do: value
-  def encode_s(_), do: {:error, "Unexpected type when encoding S.s"}
+  def encode_true_true(value) when is_integer(value), do: value
+  def encode_true_true(_), do: {:error, "Unexpected type when encoding TrueClass.true_true"}
 
   def from_map(m) do
-    %S{
-      s: decode_s(m["s"]),
+    %TrueClass{
+      true_true: decode_true_true(m["True"]),
     }
   end
 
@@ -10561,7 +11026,7 @@ defmodule S do
 
   def to_map(struct) do
     %{
-      "s" => struct.s,
+      "True" => struct.true_true,
     }
   end
 
@@ -10572,23 +11037,23 @@ defmodule S do
   end
 end
 
-defmodule Sbyte do
-  @enforce_keys [:sbyte]
-  defstruct [:sbyte]
+defmodule TypeClass do
+  @enforce_keys [:type]
+  defstruct [:type]
 
   @type t :: %__MODULE__{
-          sbyte: integer()
+          type: integer()
         }
 
-  def decode_sbyte(value) when is_integer(value), do: value
-  def decode_sbyte(_), do: {:error, "Unexpected type when decoding Sbyte.sbyte"}
+  def decode_type(value) when is_integer(value), do: value
+  def decode_type(_), do: {:error, "Unexpected type when decoding TypeClass.type"}
 
-  def encode_sbyte(value) when is_integer(value), do: value
-  def encode_sbyte(_), do: {:error, "Unexpected type when encoding Sbyte.sbyte"}
+  def encode_type(value) when is_integer(value), do: value
+  def encode_type(_), do: {:error, "Unexpected type when encoding TypeClass.type"}
 
   def from_map(m) do
-    %Sbyte{
-      sbyte: decode_sbyte(m["sbyte"]),
+    %TypeClass{
+      type: decode_type(m["type"]),
     }
   end
 
@@ -10600,7 +11065,7 @@ defmodule Sbyte do
 
   def to_map(struct) do
     %{
-      "sbyte" => struct.sbyte,
+      "type" => struct.type,
     }
   end
 
@@ -10611,23 +11076,23 @@ defmodule Sbyte do
   end
 end
 
-defmodule Sealed do
-  @enforce_keys [:sealed]
-  defstruct [:sealed]
+defmodule Return do
+  @enforce_keys [:return]
+  defstruct [:return]
 
   @type t :: %__MODULE__{
-          sealed: integer()
+          return: integer()
         }
 
-  def decode_sealed(value) when is_integer(value), do: value
-  def decode_sealed(_), do: {:error, "Unexpected type when decoding Sealed.sealed"}
+  def decode_return(value) when is_integer(value), do: value
+  def decode_return(_), do: {:error, "Unexpected type when decoding Return.return"}
 
-  def encode_sealed(value) when is_integer(value), do: value
-  def encode_sealed(_), do: {:error, "Unexpected type when encoding Sealed.sealed"}
+  def encode_return(value) when is_integer(value), do: value
+  def encode_return(_), do: {:error, "Unexpected type when encoding Return.return"}
 
   def from_map(m) do
-    %Sealed{
-      sealed: decode_sealed(m["sealed"]),
+    %Return{
+      return: decode_return(m["return"]),
     }
   end
 
@@ -10639,7 +11104,7 @@ defmodule Sealed do
 
   def to_map(struct) do
     %{
-      "sealed" => struct.sealed,
+      "return" => struct.return,
     }
   end
 
@@ -10650,23 +11115,23 @@ defmodule Sealed do
   end
 end
 
-defmodule Sel do
-  @enforce_keys [:sel]
-  defstruct [:sel]
+defmodule Right do
+  @enforce_keys [:right]
+  defstruct [:right]
 
   @type t :: %__MODULE__{
-          sel: integer()
+          right: integer()
         }
 
-  def decode_sel(value) when is_integer(value), do: value
-  def decode_sel(_), do: {:error, "Unexpected type when decoding Sel.sel"}
+  def decode_right(value) when is_integer(value), do: value
+  def decode_right(_), do: {:error, "Unexpected type when decoding Right.right"}
 
-  def encode_sel(value) when is_integer(value), do: value
-  def encode_sel(_), do: {:error, "Unexpected type when encoding Sel.sel"}
+  def encode_right(value) when is_integer(value), do: value
+  def encode_right(_), do: {:error, "Unexpected type when encoding Right.right"}
 
   def from_map(m) do
-    %Sel{
-      sel: decode_sel(m["SEL"]),
+    %Right{
+      right: decode_right(m["right"]),
     }
   end
 
@@ -10678,7 +11143,7 @@ defmodule Sel do
 
   def to_map(struct) do
     %{
-      "SEL" => struct.sel,
+      "right" => struct.right,
     }
   end
 
@@ -10689,23 +11154,23 @@ defmodule Sel do
   end
 end
 
-defmodule Select do
-  @enforce_keys [:select]
-  defstruct [:select]
+defmodule RuntimeType do
+  @enforce_keys [:runtime_type]
+  defstruct [:runtime_type]
 
   @type t :: %__MODULE__{
-          select: integer()
+          runtime_type: integer()
         }
 
-  def decode_select(value) when is_integer(value), do: value
-  def decode_select(_), do: {:error, "Unexpected type when decoding Select.select"}
+  def decode_runtime_type(value) when is_integer(value), do: value
+  def decode_runtime_type(_), do: {:error, "Unexpected type when decoding RuntimeType.runtime_type"}
 
-  def encode_select(value) when is_integer(value), do: value
-  def encode_select(_), do: {:error, "Unexpected type when encoding Select.select"}
+  def encode_runtime_type(value) when is_integer(value), do: value
+  def encode_runtime_type(_), do: {:error, "Unexpected type when encoding RuntimeType.runtime_type"}
 
   def from_map(m) do
-    %Select{
-      select: decode_select(m["select"]),
+    %RuntimeType{
+      runtime_type: decode_runtime_type(m["runtimeType"]),
     }
   end
 
@@ -10717,7 +11182,7 @@ defmodule Select do
 
   def to_map(struct) do
     %{
-      "select" => struct.select,
+      "runtimeType" => struct.runtime_type,
     }
   end
 
@@ -10728,151 +11193,23 @@ defmodule Select do
   end
 end
 
-defmodule Obj4 do
-  @enforce_keys [:dummy, :no_such_method, :nonatomic, :none, :nonlocal, :nonmutating, :not_eq, :ns_error, :ns_object, :ns_string, :null, :nullptr, :number, :obj4_none, :obj4_not, :obj4_null, :obj4_or, :obj4_protocol, :object, :object_mapper, :of, :oneway, :open, :operator, :optional, :or_eq, :out, :override, :package, :params, :pass, :port, :postfix, :precedence, :prefix, :print, :print_members, :printf, :private, :protected, :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]
-  defstruct [:dummy, :no_such_method, :nonatomic, :none, :nonlocal, :nonmutating, :not_eq, :ns_error, :ns_object, :ns_string, :null, :nullptr, :number, :obj4_none, :obj4_not, :obj4_null, :obj4_or, :obj4_protocol, :object, :object_mapper, :of, :oneway, :open, :operator, :optional, :or_eq, :out, :override, :package, :params, :pass, :port, :postfix, :precedence, :prefix, :print, :print_members, :printf, :private, :protected, :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]
+defmodule S do
+  @enforce_keys [:s]
+  defstruct [:s]
 
   @type t :: %__MODULE__{
-          dummy: integer(),
-          no_such_method: NoSuchMethod.t(),
-          nonatomic: Nonatomic.t(),
-          none: None.t(),
-          nonlocal: Nonlocal.t(),
-          nonmutating: Nonmutating.t(),
-          not_eq: NotEq.t(),
-          ns_error: NSError.t(),
-          ns_object: NSObject.t(),
-          ns_string: NSString.t(),
-          null: Null.t(),
-          nullptr: Nullptr.t(),
-          number: Number.t(),
-          obj4_none: NoneClass.t(),
-          obj4_not: NotClass.t(),
-          obj4_null: NullClass.t(),
-          obj4_or: OrClass.t(),
-          obj4_protocol: Obj4Protocol.t(),
-          object: Object.t(),
-          object_mapper: ObjectMapper.t(),
-          of: Of.t(),
-          oneway: Oneway.t(),
-          open: Open.t(),
-          operator: Operator.t(),
-          optional: Optional.t(),
-          or_eq: OrEq.t(),
-          out: Out.t(),
-          override: Override.t(),
-          package: Package.t(),
-          params: Params.t(),
-          pass: Pass.t(),
-          port: PortClass.t(),
-          postfix: Postfix.t(),
-          precedence: Precedence.t(),
-          prefix: Prefix.t(),
-          print: Print.t(),
-          print_members: PrintMembers.t(),
-          printf: Printf.t(),
-          private: Private.t(),
-          protected: Protected.t(),
-          protocol: ProtocolClass.t(),
-          public: Public.t(),
-          quicktype: Quicktype.t(),
-          raise: Raise.t(),
-          range: RangeClass.t(),
-          readonly: Readonly.t(),
-          ref: Ref.t(),
-          reg_exp: RegExp.t(),
-          register: Register.t(),
-          reinterpret_cast: ReinterpretCast.t(),
-          repeat: Repeat.t(),
-          require: Require.t(),
-          required: Required.t(),
-          requires: Requires.t(),
-          restrict: Restrict.t(),
-          retain: Retain.t(),
-          rethrows: Rethrows.t(),
-          return: Return.t(),
-          right: Right.t(),
-          runtime_type: RuntimeType.t(),
-          s: S.t(),
-          sbyte: Sbyte.t(),
-          sealed: Sealed.t(),
-          sel: Sel.t(),
-          select: Select.t()
+          s: integer()
         }
 
-  def decode_dummy(value) when is_integer(value), do: value
-  def decode_dummy(_), do: {:error, "Unexpected type when decoding Obj4.dummy"}
+  def decode_s(value) when is_integer(value), do: value
+  def decode_s(_), do: {:error, "Unexpected type when decoding S.s"}
 
-  def encode_dummy(value) when is_integer(value), do: value
-  def encode_dummy(_), do: {:error, "Unexpected type when encoding Obj4.dummy"}
+  def encode_s(value) when is_integer(value), do: value
+  def encode_s(_), do: {:error, "Unexpected type when encoding S.s"}
 
   def from_map(m) do
-    %Obj4{
-      dummy: decode_dummy(m["dummy"]),
-      no_such_method: NoSuchMethod.from_map(m["noSuchMethod"]),
-      nonatomic: Nonatomic.from_map(m["nonatomic"]),
-      none: None.from_map(m["None"]),
-      nonlocal: Nonlocal.from_map(m["nonlocal"]),
-      nonmutating: Nonmutating.from_map(m["nonmutating"]),
-      not_eq: NotEq.from_map(m["not_eq"]),
-      ns_error: NSError.from_map(m["NSError"]),
-      ns_object: NSObject.from_map(m["NSObject"]),
-      ns_string: NSString.from_map(m["NSString"]),
-      null: Null.from_map(m["NULL"]),
-      nullptr: Nullptr.from_map(m["nullptr"]),
-      number: Number.from_map(m["number"]),
-      obj4_none: NoneClass.from_map(m["none"]),
-      obj4_not: NotClass.from_map(m["not"]),
-      obj4_null: NullClass.from_map(m["null"]),
-      obj4_or: OrClass.from_map(m["or"]),
-      obj4_protocol: Obj4Protocol.from_map(m["protocol"]),
-      object: Object.from_map(m["object"]),
-      object_mapper: ObjectMapper.from_map(m["ObjectMapper"]),
-      of: Of.from_map(m["of"]),
-      oneway: Oneway.from_map(m["oneway"]),
-      open: Open.from_map(m["open"]),
-      operator: Operator.from_map(m["operator"]),
-      optional: Optional.from_map(m["optional"]),
-      or_eq: OrEq.from_map(m["or_eq"]),
-      out: Out.from_map(m["out"]),
-      override: Override.from_map(m["override"]),
-      package: Package.from_map(m["package"]),
-      params: Params.from_map(m["params"]),
-      pass: Pass.from_map(m["pass"]),
-      port: PortClass.from_map(m["port"]),
-      postfix: Postfix.from_map(m["postfix"]),
-      precedence: Precedence.from_map(m["precedence"]),
-      prefix: Prefix.from_map(m["prefix"]),
-      print: Print.from_map(m["print"]),
-      print_members: PrintMembers.from_map(m["printMembers"]),
-      printf: Printf.from_map(m["printf"]),
-      private: Private.from_map(m["private"]),
-      protected: Protected.from_map(m["protected"]),
-      protocol: ProtocolClass.from_map(m["Protocol"]),
-      public: Public.from_map(m["public"]),
-      quicktype: Quicktype.from_map(m["quicktype"]),
-      raise: Raise.from_map(m["raise"]),
-      range: RangeClass.from_map(m["range"]),
-      readonly: Readonly.from_map(m["readonly"]),
-      ref: Ref.from_map(m["ref"]),
-      reg_exp: RegExp.from_map(m["RegExp"]),
-      register: Register.from_map(m["register"]),
-      reinterpret_cast: ReinterpretCast.from_map(m["reinterpret_cast"]),
-      repeat: Repeat.from_map(m["repeat"]),
-      require: Require.from_map(m["require"]),
-      required: Required.from_map(m["required"]),
-      requires: Requires.from_map(m["requires"]),
-      restrict: Restrict.from_map(m["restrict"]),
-      retain: Retain.from_map(m["retain"]),
-      rethrows: Rethrows.from_map(m["rethrows"]),
-      return: Return.from_map(m["return"]),
-      right: Right.from_map(m["right"]),
-      runtime_type: RuntimeType.from_map(m["runtimeType"]),
-      s: S.from_map(m["s"]),
-      sbyte: Sbyte.from_map(m["sbyte"]),
-      sealed: Sealed.from_map(m["sealed"]),
-      sel: Sel.from_map(m["SEL"]),
-      select: Select.from_map(m["select"]),
+    %S{
+      s: decode_s(m["s"]),
     }
   end
 
@@ -10884,71 +11221,7 @@ defmodule Obj4 do
 
   def to_map(struct) do
     %{
-      "dummy" => struct.dummy,
-      "noSuchMethod" => NoSuchMethod.to_map(struct.no_such_method),
-      "nonatomic" => Nonatomic.to_map(struct.nonatomic),
-      "None" => None.to_map(struct.none),
-      "nonlocal" => Nonlocal.to_map(struct.nonlocal),
-      "nonmutating" => Nonmutating.to_map(struct.nonmutating),
-      "not_eq" => NotEq.to_map(struct.not_eq),
-      "NSError" => NSError.to_map(struct.ns_error),
-      "NSObject" => NSObject.to_map(struct.ns_object),
-      "NSString" => NSString.to_map(struct.ns_string),
-      "NULL" => Null.to_map(struct.null),
-      "nullptr" => Nullptr.to_map(struct.nullptr),
-      "number" => Number.to_map(struct.number),
-      "none" => NoneClass.to_map(struct.obj4_none),
-      "not" => NotClass.to_map(struct.obj4_not),
-      "null" => NullClass.to_map(struct.obj4_null),
-      "or" => OrClass.to_map(struct.obj4_or),
-      "protocol" => Obj4Protocol.to_map(struct.obj4_protocol),
-      "object" => Object.to_map(struct.object),
-      "ObjectMapper" => ObjectMapper.to_map(struct.object_mapper),
-      "of" => Of.to_map(struct.of),
-      "oneway" => Oneway.to_map(struct.oneway),
-      "open" => Open.to_map(struct.open),
-      "operator" => Operator.to_map(struct.operator),
-      "optional" => Optional.to_map(struct.optional),
-      "or_eq" => OrEq.to_map(struct.or_eq),
-      "out" => Out.to_map(struct.out),
-      "override" => Override.to_map(struct.override),
-      "package" => Package.to_map(struct.package),
-      "params" => Params.to_map(struct.params),
-      "pass" => Pass.to_map(struct.pass),
-      "port" => PortClass.to_map(struct.port),
-      "postfix" => Postfix.to_map(struct.postfix),
-      "precedence" => Precedence.to_map(struct.precedence),
-      "prefix" => Prefix.to_map(struct.prefix),
-      "print" => Print.to_map(struct.print),
-      "printMembers" => PrintMembers.to_map(struct.print_members),
-      "printf" => Printf.to_map(struct.printf),
-      "private" => Private.to_map(struct.private),
-      "protected" => Protected.to_map(struct.protected),
-      "Protocol" => ProtocolClass.to_map(struct.protocol),
-      "public" => Public.to_map(struct.public),
-      "quicktype" => Quicktype.to_map(struct.quicktype),
-      "raise" => Raise.to_map(struct.raise),
-      "range" => RangeClass.to_map(struct.range),
-      "readonly" => Readonly.to_map(struct.readonly),
-      "ref" => Ref.to_map(struct.ref),
-      "RegExp" => RegExp.to_map(struct.reg_exp),
-      "register" => Register.to_map(struct.register),
-      "reinterpret_cast" => ReinterpretCast.to_map(struct.reinterpret_cast),
-      "repeat" => Repeat.to_map(struct.repeat),
-      "require" => Require.to_map(struct.require),
-      "required" => Required.to_map(struct.required),
-      "requires" => Requires.to_map(struct.requires),
-      "restrict" => Restrict.to_map(struct.restrict),
-      "retain" => Retain.to_map(struct.retain),
-      "rethrows" => Rethrows.to_map(struct.rethrows),
-      "return" => Return.to_map(struct.return),
-      "right" => Right.to_map(struct.right),
-      "runtimeType" => RuntimeType.to_map(struct.runtime_type),
-      "s" => S.to_map(struct.s),
-      "sbyte" => Sbyte.to_map(struct.sbyte),
-      "sealed" => Sealed.to_map(struct.sealed),
-      "SEL" => Sel.to_map(struct.sel),
-      "select" => Select.to_map(struct.select),
+      "s" => struct.s,
     }
   end
 
@@ -10959,23 +11232,23 @@ defmodule Obj4 do
   end
 end
 
-defmodule SelfClass do
-  @enforce_keys [:self]
-  defstruct [:self]
+defmodule Sbyte do
+  @enforce_keys [:sbyte]
+  defstruct [:sbyte]
 
   @type t :: %__MODULE__{
-          self: integer()
+          sbyte: integer()
         }
 
-  def decode_self(value) when is_integer(value), do: value
-  def decode_self(_), do: {:error, "Unexpected type when decoding SelfClass.self"}
+  def decode_sbyte(value) when is_integer(value), do: value
+  def decode_sbyte(_), do: {:error, "Unexpected type when decoding Sbyte.sbyte"}
 
-  def encode_self(value) when is_integer(value), do: value
-  def encode_self(_), do: {:error, "Unexpected type when encoding SelfClass.self"}
+  def encode_sbyte(value) when is_integer(value), do: value
+  def encode_sbyte(_), do: {:error, "Unexpected type when encoding Sbyte.sbyte"}
 
   def from_map(m) do
-    %SelfClass{
-      self: decode_self(m["self"]),
+    %Sbyte{
+      sbyte: decode_sbyte(m["sbyte"]),
     }
   end
 
@@ -10987,7 +11260,7 @@ defmodule SelfClass do
 
   def to_map(struct) do
     %{
-      "self" => struct.self,
+      "sbyte" => struct.sbyte,
     }
   end
 
@@ -10998,23 +11271,23 @@ defmodule SelfClass do
   end
 end
 
-defmodule TrueClass do
-  @enforce_keys [:true_true]
-  defstruct [:true_true]
+defmodule Sealed do
+  @enforce_keys [:sealed]
+  defstruct [:sealed]
 
   @type t :: %__MODULE__{
-          true_true: integer()
+          sealed: integer()
         }
 
-  def decode_true_true(value) when is_integer(value), do: value
-  def decode_true_true(_), do: {:error, "Unexpected type when decoding TrueClass.true_true"}
+  def decode_sealed(value) when is_integer(value), do: value
+  def decode_sealed(_), do: {:error, "Unexpected type when decoding Sealed.sealed"}
 
-  def encode_true_true(value) when is_integer(value), do: value
-  def encode_true_true(_), do: {:error, "Unexpected type when encoding TrueClass.true_true"}
+  def encode_sealed(value) when is_integer(value), do: value
+  def encode_sealed(_), do: {:error, "Unexpected type when encoding Sealed.sealed"}
 
   def from_map(m) do
-    %TrueClass{
-      true_true: decode_true_true(m["True"]),
+    %Sealed{
+      sealed: decode_sealed(m["sealed"]),
     }
   end
 
@@ -11026,7 +11299,7 @@ defmodule TrueClass do
 
   def to_map(struct) do
     %{
-      "True" => struct.true_true,
+      "sealed" => struct.sealed,
     }
   end
 
@@ -11037,23 +11310,23 @@ defmodule TrueClass do
   end
 end
 
-defmodule TypeClass do
-  @enforce_keys [:type]
-  defstruct [:type]
+defmodule Sel do
+  @enforce_keys [:sel]
+  defstruct [:sel]
 
   @type t :: %__MODULE__{
-          type: integer()
+          sel: integer()
         }
 
-  def decode_type(value) when is_integer(value), do: value
-  def decode_type(_), do: {:error, "Unexpected type when decoding TypeClass.type"}
+  def decode_sel(value) when is_integer(value), do: value
+  def decode_sel(_), do: {:error, "Unexpected type when decoding Sel.sel"}
 
-  def encode_type(value) when is_integer(value), do: value
-  def encode_type(_), do: {:error, "Unexpected type when encoding TypeClass.type"}
+  def encode_sel(value) when is_integer(value), do: value
+  def encode_sel(_), do: {:error, "Unexpected type when encoding Sel.sel"}
 
   def from_map(m) do
-    %TypeClass{
-      type: decode_type(m["type"]),
+    %Sel{
+      sel: decode_sel(m["SEL"]),
     }
   end
 
@@ -11065,7 +11338,46 @@ defmodule TypeClass do
 
   def to_map(struct) do
     %{
-      "type" => struct.type,
+      "SEL" => struct.sel,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule Select do
+  @enforce_keys [:select]
+  defstruct [:select]
+
+  @type t :: %__MODULE__{
+          select: integer()
+        }
+
+  def decode_select(value) when is_integer(value), do: value
+  def decode_select(_), do: {:error, "Unexpected type when decoding Select.select"}
+
+  def encode_select(value) when is_integer(value), do: value
+  def encode_select(_), do: {:error, "Unexpected type when encoding Select.select"}
+
+  def from_map(m) do
+    %Select{
+      select: decode_select(m["select"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "select" => struct.select,
     }
   end
 
@@ -11123,15 +11435,54 @@ defmodule Sendable do
           sendable: integer()
         }
 
-  def decode_sendable(value) when is_integer(value), do: value
-  def decode_sendable(_), do: {:error, "Unexpected type when decoding Sendable.sendable"}
+  def decode_sendable(value) when is_integer(value), do: value
+  def decode_sendable(_), do: {:error, "Unexpected type when decoding Sendable.sendable"}
+
+  def encode_sendable(value) when is_integer(value), do: value
+  def encode_sendable(_), do: {:error, "Unexpected type when encoding Sendable.sendable"}
+
+  def from_map(m) do
+    %Sendable{
+      sendable: decode_sendable(m["Sendable"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "Sendable" => struct.sendable,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule SerializationFeature do
+  @enforce_keys [:serialization_feature]
+  defstruct [:serialization_feature]
+
+  @type t :: %__MODULE__{
+          serialization_feature: integer()
+        }
+
+  def decode_serialization_feature(value) when is_integer(value), do: value
+  def decode_serialization_feature(_), do: {:error, "Unexpected type when decoding SerializationFeature.serialization_feature"}
 
-  def encode_sendable(value) when is_integer(value), do: value
-  def encode_sendable(_), do: {:error, "Unexpected type when encoding Sendable.sendable"}
+  def encode_serialization_feature(value) when is_integer(value), do: value
+  def encode_serialization_feature(_), do: {:error, "Unexpected type when encoding SerializationFeature.serialization_feature"}
 
   def from_map(m) do
-    %Sendable{
-      sendable: decode_sendable(m["Sendable"]),
+    %SerializationFeature{
+      serialization_feature: decode_serialization_feature(m["SerializationFeature"]),
     }
   end
 
@@ -11143,7 +11494,7 @@ defmodule Sendable do
 
   def to_map(struct) do
     %{
-      "Sendable" => struct.sendable,
+      "SerializationFeature" => struct.serialization_feature,
     }
   end
 
@@ -12090,6 +12441,45 @@ defmodule Template do
   end
 end
 
+defmodule TextNode do
+  @enforce_keys [:text_node]
+  defstruct [:text_node]
+
+  @type t :: %__MODULE__{
+          text_node: integer()
+        }
+
+  def decode_text_node(value) when is_integer(value), do: value
+  def decode_text_node(_), do: {:error, "Unexpected type when decoding TextNode.text_node"}
+
+  def encode_text_node(value) when is_integer(value), do: value
+  def encode_text_node(_), do: {:error, "Unexpected type when encoding TextNode.text_node"}
+
+  def from_map(m) do
+    %TextNode{
+      text_node: decode_text_node(m["TextNode"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "TextNode" => struct.text_node,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
 defmodule Then do
   @enforce_keys [:then]
   defstruct [:then]
@@ -13065,6 +13455,237 @@ defmodule Union do
   end
 end
 
+defmodule Obj5 do
+  @enforce_keys [:dummy, :obj5_self, :obj5_true, :obj5_type, :return, :right, :runtime_type, :s, :sbyte, :sealed, :sel, :select, :self, :sendable, :serialization_feature, :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, :text_node, :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]
+  defstruct [:dummy, :obj5_self, :obj5_true, :obj5_type, :return, :right, :runtime_type, :s, :sbyte, :sealed, :sel, :select, :self, :sendable, :serialization_feature, :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, :text_node, :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]
+
+  @type t :: %__MODULE__{
+          dummy: integer(),
+          obj5_self: SelfClass.t(),
+          obj5_true: TrueClass.t(),
+          obj5_type: TypeClass.t(),
+          return: Return.t(),
+          right: Right.t(),
+          runtime_type: RuntimeType.t(),
+          s: S.t(),
+          sbyte: Sbyte.t(),
+          sealed: Sealed.t(),
+          sel: Sel.t(),
+          select: Select.t(),
+          self: Self.t(),
+          sendable: Sendable.t(),
+          serialization_feature: SerializationFeature.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(),
+          text_node: TextNode.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()
+        }
+
+  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"]),
+      return: Return.from_map(m["return"]),
+      right: Right.from_map(m["right"]),
+      runtime_type: RuntimeType.from_map(m["runtimeType"]),
+      s: S.from_map(m["s"]),
+      sbyte: Sbyte.from_map(m["sbyte"]),
+      sealed: Sealed.from_map(m["sealed"]),
+      sel: Sel.from_map(m["SEL"]),
+      select: Select.from_map(m["select"]),
+      self: Self.from_map(m["Self"]),
+      sendable: Sendable.from_map(m["Sendable"]),
+      serialization_feature: SerializationFeature.from_map(m["SerializationFeature"]),
+      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"]),
+      text_node: TextNode.from_map(m["TextNode"]),
+      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"]),
+    }
+  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),
+      "return" => Return.to_map(struct.return),
+      "right" => Right.to_map(struct.right),
+      "runtimeType" => RuntimeType.to_map(struct.runtime_type),
+      "s" => S.to_map(struct.s),
+      "sbyte" => Sbyte.to_map(struct.sbyte),
+      "sealed" => Sealed.to_map(struct.sealed),
+      "SEL" => Sel.to_map(struct.sel),
+      "select" => Select.to_map(struct.select),
+      "Self" => Self.to_map(struct.self),
+      "Sendable" => Sendable.to_map(struct.sendable),
+      "SerializationFeature" => SerializationFeature.to_map(struct.serialization_feature),
+      "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),
+      "TextNode" => TextNode.to_map(struct.text_node),
+      "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),
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
 defmodule Unowned do
   @enforce_keys [:unowned]
   defstruct [:unowned]
@@ -13455,237 +14076,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 +14545,21 @@ 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, :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 [:dummy, :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]
 
   @type t :: %__MODULE__{
           dummy: integer(),
+          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(),
           void: Void.t(),
           volatile: Volatile.t(),
           wchar_t: WcharT.t(),
@@ -14183,6 +14583,16 @@ defmodule Obj6 do
   def from_map(m) do
     %Obj6{
       dummy: decode_dummy(m["dummy"]),
+      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"]),
       void: Void.from_map(m["void"]),
       volatile: Volatile.from_map(m["volatile"]),
       wchar_t: WcharT.from_map(m["wchar_t"]),
@@ -14207,6 +14617,16 @@ defmodule Obj6 do
   def to_map(struct) do
     %{
       "dummy" => struct.dummy,
+      "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),
       "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..3c31392 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
@@ -23,6 +23,7 @@ module QuickType exposing
     , AndEq
     , Any
     , ArrayClass
+    , ArrayNode
     , ASM
     , Assert
     , Associatedtype
@@ -38,6 +39,7 @@ module QuickType exposing
     , Bitand
     , Bitor
     , Boolean
+    , BooleanNode
     , Break
     , Bycopy
     , Byref
@@ -69,8 +71,6 @@ module QuickType exposing
     , Convenience
     , Convert
     , Converter
-    , CultureInfo
-    , Date
     , Empty
     , Imaginery
     , AnyClass
@@ -81,6 +81,8 @@ module QuickType exposing
     , ClassClass
     , Obj1Bool
     , Obj2
+    , CultureInfo
+    , Date
     , DateFormatter
     , DateOnly
     , DateOnlyConverter
@@ -100,11 +102,13 @@ module QuickType exposing
     , Del
     , Delegate
     , Delete
+    , DeserializationFeature
     , DictClass
     , Dictionary
     , DidSet
     , Do
     , Double
+    , DoubleNode
     , Dynamic
     , DynamicCast
     , Elif
@@ -136,16 +140,16 @@ module QuickType exposing
     , FromJSON
     , Func
     , Function
-    , Get
-    , Global
-    , Go
-    , Goto
     , Decoder
     , Else
     , Exposing
     , Obj2False
     , FloatClass
     , Obj3
+    , Get
+    , Global
+    , Go
+    , Goto
     , Guard
     , HasOwnProperty
     , HashCode
@@ -160,6 +164,7 @@ module QuickType exposing
     , Inline
     , Inout
     , Instanceof
+    , IntNode
     , Interface
     , Internal
     , Is
@@ -191,18 +196,13 @@ module QuickType exposing
     , Locale
     , Lock
     , Long
+    , LongNode
     , Map
     , MapEntry
     , MetadataPropertyHandling
     , Mutable
     , Mutating
     , Namespace
-    , Native
-    , New
-    , Newtonsoft
-    , Nil
-    , No
-    , Noexcept
     , If
     , Import
     , In
@@ -211,7 +211,13 @@ module QuickType exposing
     , Let
     , Module
     , Obj4
+    , Native
+    , New
+    , Newtonsoft
+    , Nil
+    , No
     , NoSuchMethod
+    , Noexcept
     , Nonatomic
     , None
     , Nonlocal
@@ -222,6 +228,7 @@ module QuickType exposing
     , NSObject
     , NSString
     , Null
+    , NullNode
     , Nullptr
     , Number
     , NoneClass
@@ -231,6 +238,7 @@ module QuickType exposing
     , ProtocolClass
     , Object
     , ObjectMapper
+    , ObjectNode
     , Oneway
     , Open
     , Operator
@@ -267,6 +275,13 @@ module QuickType exposing
     , Restrict
     , Retain
     , Rethrows
+    , Obj5
+    , SelfClass
+    , StringClass
+    , Then
+    , Obj5True
+    , Type
+    , TypeClass
     , Return
     , Right
     , RuntimeType
@@ -275,15 +290,9 @@ module QuickType exposing
     , Sealed
     , Sel
     , Select
-    , Obj5
-    , SelfClass
-    , StringClass
-    , Then
-    , Obj5True
-    , Type
-    , TypeClass
     , Self
     , Sendable
+    , SerializationFeature
     , Serialize
     , SerializerProvider
     , Set
@@ -307,6 +316,7 @@ module QuickType exposing
     , Synchronized
     , System
     , Template
+    , TextNode
     , This
     , ThreadLocal
     , Throw
@@ -330,6 +340,8 @@ module QuickType exposing
     , Unchecked
     , Undefined
     , Union
+    , Obj6
+    , Where
     , Unowned
     , Unsafe
     , Unsigned
@@ -340,8 +352,6 @@ module QuickType exposing
     , UUID
     , Var
     , Virtual
-    , Obj6
-    , Where
     , Void
     , Volatile
     , WcharT
@@ -379,6 +389,7 @@ type alias Obj1 =
     , andEq : AndEq
     , any : Any
     , array : ArrayClass
+    , arrayNode : ArrayNode
     , asm : ASM
     , assert : Assert
     , associatedtype : Associatedtype
@@ -394,6 +405,7 @@ type alias Obj1 =
     , bitand : Bitand
     , bitor : Bitor
     , boolean : Boolean
+    , booleanNode : BooleanNode
     , break : Break
     , bycopy : Bycopy
     , byref : Byref
@@ -425,8 +437,6 @@ type alias Obj1 =
     , convenience : Convenience
     , convert : Convert
     , converter : Converter
-    , cultureInfo : CultureInfo
-    , date : Date
     , dummy : Int
     , empty : Empty
     , imaginery : Imaginery
@@ -467,6 +477,10 @@ type alias ArrayClass =
     { array : Int
     }
 
+type alias ArrayNode =
+    { arrayNode : Int
+    }
+
 type alias ASM =
     { asm : Int
     }
@@ -527,6 +541,10 @@ type alias Boolean =
     { boolean : Int
     }
 
+type alias BooleanNode =
+    { booleanNode : Int
+    }
+
 type alias Break =
     { break : Int
     }
@@ -651,14 +669,6 @@ type alias Converter =
     { converter : Int
     }
 
-type alias CultureInfo =
-    { cultureInfo : Int
-    }
-
-type alias Date =
-    { date : Int
-    }
-
 type alias Empty =
     { empty : Int
     }
@@ -696,7 +706,9 @@ type alias Obj1Bool =
     }
 
 type alias Obj2 =
-    { dateFormatter : DateFormatter
+    { cultureInfo : CultureInfo
+    , date : Date
+    , dateFormatter : DateFormatter
     , dateOnly : DateOnly
     , dateOnlyConverter : DateOnlyConverter
     , dateParseHandling : DateParseHandling
@@ -715,11 +727,13 @@ type alias Obj2 =
     , del : Del
     , delegate : Delegate
     , delete : Delete
+    , deserializationFeature : DeserializationFeature
     , dict : DictClass
     , dictionary : Dictionary
     , didSet : DidSet
     , do : Do
     , double : Double
+    , doubleNode : DoubleNode
     , dummy : Int
     , dynamic : Dynamic
     , dynamicCast : DynamicCast
@@ -752,10 +766,6 @@ type alias Obj2 =
     , fromJSON : FromJSON
     , func : Func
     , function : Function
-    , get : Get
-    , global : Global
-    , go : Go
-    , goto : Goto
     , obj2Decoder : Decoder
     , obj2Else : Else
     , obj2Exposing : Exposing
@@ -763,6 +773,14 @@ type alias Obj2 =
     , obj2Float : FloatClass
     }
 
+type alias CultureInfo =
+    { cultureInfo : Int
+    }
+
+type alias Date =
+    { date : Int
+    }
+
 type alias DateFormatter =
     { dateFormatter : Int
     }
@@ -839,6 +857,10 @@ type alias Delete =
     { delete : Int
     }
 
+type alias DeserializationFeature =
+    { deserializationFeature : Int
+    }
+
 type alias DictClass =
     { dict : Int
     }
@@ -859,6 +881,10 @@ type alias Double =
     { double : Int
     }
 
+type alias DoubleNode =
+    { doubleNode : Int
+    }
+
 type alias Dynamic =
     { dynamic : Int
     }
@@ -987,22 +1013,6 @@ type alias Function =
     { function : Int
     }
 
-type alias Get =
-    { get : Int
-    }
-
-type alias Global =
-    { global : Int
-    }
-
-type alias Go =
-    { go : Int
-    }
-
-type alias Goto =
-    { goto : Int
-    }
-
 type alias Decoder =
     { decoderDecoder : Int
     }
@@ -1025,6 +1035,10 @@ type alias FloatClass =
 
 type alias Obj3 =
     { dummy : Int
+    , get : Get
+    , global : Global
+    , go : Go
+    , goto : Goto
     , guard : Guard
     , hasOwnProperty : HasOwnProperty
     , hashCode : HashCode
@@ -1039,6 +1053,7 @@ type alias Obj3 =
     , inline : Inline
     , inout : Inout
     , instanceof : Instanceof
+    , intNode : IntNode
     , interface : Interface
     , internal : Internal
     , is : Is
@@ -1070,18 +1085,13 @@ type alias Obj3 =
     , locale : Locale
     , lock : Lock
     , long : Long
+    , longNode : LongNode
     , map : Map
     , mapEntry : MapEntry
     , metadataPropertyHandling : MetadataPropertyHandling
     , mutable : Mutable
     , mutating : Mutating
     , namespace : Namespace
-    , native : Native
-    , new : New
-    , newtonsoft : Newtonsoft
-    , nil : Nil
-    , no : No
-    , noexcept : Noexcept
     , obj3If : If
     , obj3Import : Import
     , obj3In : In
@@ -1091,6 +1101,22 @@ type alias Obj3 =
     , obj3Module : Module
     }
 
+type alias Get =
+    { get : Int
+    }
+
+type alias Global =
+    { global : Int
+    }
+
+type alias Go =
+    { go : Int
+    }
+
+type alias Goto =
+    { goto : Int
+    }
+
 type alias Guard =
     { guard : Int
     }
@@ -1147,6 +1173,10 @@ type alias Instanceof =
     { instanceof : Int
     }
 
+type alias IntNode =
+    { intNode : Int
+    }
+
 type alias Interface =
     { interface : Int
     }
@@ -1271,6 +1301,10 @@ type alias Long =
     { long : Int
     }
 
+type alias LongNode =
+    { longNode : Int
+    }
+
 type alias Map =
     { map : Int
     }
@@ -1295,30 +1329,6 @@ type alias Namespace =
     { namespace : Int
     }
 
-type alias Native =
-    { native : Int
-    }
-
-type alias New =
-    { new : Int
-    }
-
-type alias Newtonsoft =
-    { newtonsoft : Int
-    }
-
-type alias Nil =
-    { nil : Int
-    }
-
-type alias No =
-    { no : Int
-    }
-
-type alias Noexcept =
-    { noexcept : Int
-    }
-
 type alias If =
     { ifIf : Int
     }
@@ -1349,7 +1359,13 @@ type alias Module =
 
 type alias Obj4 =
     { dummy : Int
+    , native : Native
+    , new : New
+    , newtonsoft : Newtonsoft
+    , nil : Nil
+    , no : No
     , noSuchMethod : NoSuchMethod
+    , noexcept : Noexcept
     , nonatomic : Nonatomic
     , none : None
     , nonlocal : Nonlocal
@@ -1360,6 +1376,7 @@ type alias Obj4 =
     , nsObject : NSObject
     , nsString : NSString
     , null : Null
+    , nullNode : NullNode
     , nullptr : Nullptr
     , number : Number
     , obj4None : NoneClass
@@ -1369,6 +1386,7 @@ type alias Obj4 =
     , obj4Protocol : ProtocolClass
     , object : Object
     , objectMapper : ObjectMapper
+    , objectNode : ObjectNode
     , oneway : Oneway
     , open : Open
     , operator : Operator
@@ -1405,20 +1423,36 @@ type alias Obj4 =
     , restrict : Restrict
     , retain : Retain
     , rethrows : Rethrows
-    , return : Return
-    , right : Right
-    , runtimeType : RuntimeType
-    , s : S
-    , sbyte : Sbyte
-    , sealed : Sealed
-    , sel : Sel
-    , select : Select
+    }
+
+type alias Native =
+    { native : Int
+    }
+
+type alias New =
+    { new : Int
+    }
+
+type alias Newtonsoft =
+    { newtonsoft : Int
+    }
+
+type alias Nil =
+    { nil : Int
+    }
+
+type alias No =
+    { no : Int
     }
 
 type alias NoSuchMethod =
     { noSuchMethod : Int
     }
 
+type alias Noexcept =
+    { noexcept : Int
+    }
+
 type alias Nonatomic =
     { nonatomic : Int
     }
@@ -1459,6 +1493,10 @@ type alias Null =
     { null : Int
     }
 
+type alias NullNode =
+    { nullNode : Int
+    }
+
 type alias Nullptr =
     { nullptr : Int
     }
@@ -1495,6 +1533,10 @@ type alias ObjectMapper =
     { objectMapper : Int
     }
 
+type alias ObjectNode =
+    { objectNode : Int
+    }
+
 type alias Oneway =
     { oneway : Int
     }
@@ -1639,38 +1681,6 @@ type alias Rethrows =
     { rethrows : Int
     }
 
-type alias Return =
-    { return : Int
-    }
-
-type alias Right =
-    { right : Int
-    }
-
-type alias RuntimeType =
-    { runtimeType : Int
-    }
-
-type alias S =
-    { s : Int
-    }
-
-type alias Sbyte =
-    { sbyte : Int
-    }
-
-type alias Sealed =
-    { sealed : Int
-    }
-
-type alias Sel =
-    { sel : Int
-    }
-
-type alias Select =
-    { select : Int
-    }
-
 type alias Obj5 =
     { dummy : Int
     , obj5Self : SelfClass
@@ -1679,8 +1689,17 @@ type alias Obj5 =
     , obj5True : Obj5True
     , obj5Type : Type
     , purpleType : TypeClass
+    , return : Return
+    , right : Right
+    , runtimeType : RuntimeType
+    , s : S
+    , sbyte : Sbyte
+    , sealed : Sealed
+    , sel : Sel
+    , select : Select
     , self : Self
     , sendable : Sendable
+    , serializationFeature : SerializationFeature
     , serialize : Serialize
     , serializerProvider : SerializerProvider
     , set : Set
@@ -1704,6 +1723,7 @@ type alias Obj5 =
     , synchronized : Synchronized
     , system : System
     , template : Template
+    , textNode : TextNode
     , this : This
     , threadLocal : ThreadLocal
     , throw : Throw
@@ -1727,16 +1747,6 @@ type alias Obj5 =
     , unchecked : Unchecked
     , undefined : Undefined
     , union : Union
-    , unowned : Unowned
-    , unsafe : Unsafe
-    , unsigned : Unsigned
-    , ushort : Ushort
-    , using : Using
-    , utf8JSONReader : Utf8JSONReader
-    , utf8JSONWriter : Utf8JSONWriter
-    , uuid : UUID
-    , var : Var
-    , virtual : Virtual
     }
 
 type alias SelfClass =
@@ -1763,28 +1773,64 @@ type alias TypeClass =
     { typeType : Int
     }
 
-type alias Self =
-    { self : Int
+type alias Return =
+    { return : Int
     }
 
-type alias Sendable =
-    { sendable : Int
+type alias Right =
+    { right : Int
     }
 
-type alias Serialize =
-    { serialize : Int
+type alias RuntimeType =
+    { runtimeType : Int
     }
 
-type alias SerializerProvider =
-    { serializerProvider : Int
+type alias S =
+    { s : Int
     }
 
-type alias Set =
-    { set : Int
+type alias Sbyte =
+    { sbyte : Int
     }
 
-type alias Short =
-    { short : Int
+type alias Sealed =
+    { sealed : Int
+    }
+
+type alias Sel =
+    { sel : Int
+    }
+
+type alias Select =
+    { select : Int
+    }
+
+type alias Self =
+    { self : Int
+    }
+
+type alias Sendable =
+    { sendable : Int
+    }
+
+type alias SerializationFeature =
+    { serializationFeature : Int
+    }
+
+type alias Serialize =
+    { serialize : Int
+    }
+
+type alias SerializerProvider =
+    { serializerProvider : Int
+    }
+
+type alias Set =
+    { set : Int
+    }
+
+type alias Short =
+    { short : Int
     }
 
 type alias Signed =
@@ -1863,6 +1909,10 @@ type alias Template =
     { template : Int
     }
 
+type alias TextNode =
+    { textNode : Int
+    }
+
 type alias This =
     { this : Int
     }
@@ -1955,6 +2005,36 @@ type alias Union =
     { union : Int
     }
 
+type alias Obj6 =
+    { dummy : Int
+    , obj6Where : Where
+    , unowned : Unowned
+    , unsafe : Unsafe
+    , unsigned : Unsigned
+    , ushort : Ushort
+    , 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 Unowned =
     { unowned : Int
     }
@@ -1995,26 +2075,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
     }
@@ -2103,6 +2163,7 @@ obj1 =
         |> Jpipe.required "and_eq" andEq
         |> Jpipe.required "Any" any
         |> Jpipe.required "array" arrayClass
+        |> Jpipe.required "ArrayNode" arrayNode
         |> Jpipe.required "asm" asm
         |> Jpipe.required "assert" assert
         |> Jpipe.required "associatedtype" associatedtype
@@ -2118,6 +2179,7 @@ obj1 =
         |> Jpipe.required "bitand" bitand
         |> Jpipe.required "bitor" bitor
         |> Jpipe.required "boolean" boolean
+        |> Jpipe.required "BooleanNode" booleanNode
         |> Jpipe.required "break" break
         |> Jpipe.required "bycopy" bycopy
         |> Jpipe.required "byref" byref
@@ -2149,8 +2211,6 @@ obj1 =
         |> Jpipe.required "convenience" convenience
         |> Jpipe.required "convert" convert
         |> Jpipe.required "converter" converter
-        |> Jpipe.required "CultureInfo" cultureInfo
-        |> Jpipe.required "date" date
         |> Jpipe.required "dummy" Jdec.int
         |> Jpipe.required "_" empty
         |> Jpipe.required "_Imaginery" imaginery
@@ -2172,6 +2232,7 @@ encodeObj1 x =
         , ("and_eq", encodeAndEq x.andEq)
         , ("Any", encodeAny x.any)
         , ("array", encodeArrayClass x.array)
+        , ("ArrayNode", encodeArrayNode x.arrayNode)
         , ("asm", encodeASM x.asm)
         , ("assert", encodeAssert x.assert)
         , ("associatedtype", encodeAssociatedtype x.associatedtype)
@@ -2187,6 +2248,7 @@ encodeObj1 x =
         , ("bitand", encodeBitand x.bitand)
         , ("bitor", encodeBitor x.bitor)
         , ("boolean", encodeBoolean x.boolean)
+        , ("BooleanNode", encodeBooleanNode x.booleanNode)
         , ("break", encodeBreak x.break)
         , ("bycopy", encodeBycopy x.bycopy)
         , ("byref", encodeByref x.byref)
@@ -2218,8 +2280,6 @@ encodeObj1 x =
         , ("convenience", encodeConvenience x.convenience)
         , ("convert", encodeConvert x.convert)
         , ("converter", encodeConverter x.converter)
-        , ("CultureInfo", encodeCultureInfo x.cultureInfo)
-        , ("date", encodeDate x.date)
         , ("dummy", Jenc.int x.dummy)
         , ("_", encodeEmpty x.empty)
         , ("_Imaginery", encodeImaginery x.imaginery)
@@ -2309,6 +2369,17 @@ encodeArrayClass x =
         [ ("array", Jenc.int x.array)
         ]
 
+arrayNode : Jdec.Decoder ArrayNode
+arrayNode =
+    Jdec.succeed ArrayNode
+        |> Jpipe.required "ArrayNode" Jdec.int
+
+encodeArrayNode : ArrayNode -> Jenc.Value
+encodeArrayNode x =
+    Jenc.object
+        [ ("ArrayNode", Jenc.int x.arrayNode)
+        ]
+
 asm : Jdec.Decoder ASM
 asm =
     Jdec.succeed ASM
@@ -2474,6 +2545,17 @@ encodeBoolean x =
         [ ("boolean", Jenc.int x.boolean)
         ]
 
+booleanNode : Jdec.Decoder BooleanNode
+booleanNode =
+    Jdec.succeed BooleanNode
+        |> Jpipe.required "BooleanNode" Jdec.int
+
+encodeBooleanNode : BooleanNode -> Jenc.Value
+encodeBooleanNode x =
+    Jenc.object
+        [ ("BooleanNode", Jenc.int x.booleanNode)
+        ]
+
 break : Jdec.Decoder Break
 break =
     Jdec.succeed Break
@@ -2815,28 +2897,6 @@ encodeConverter x =
         [ ("converter", Jenc.int x.converter)
         ]
 
-cultureInfo : Jdec.Decoder CultureInfo
-cultureInfo =
-    Jdec.succeed CultureInfo
-        |> Jpipe.required "CultureInfo" Jdec.int
-
-encodeCultureInfo : CultureInfo -> Jenc.Value
-encodeCultureInfo x =
-    Jenc.object
-        [ ("CultureInfo", Jenc.int x.cultureInfo)
-        ]
-
-date : Jdec.Decoder Date
-date =
-    Jdec.succeed Date
-        |> Jpipe.required "date" Jdec.int
-
-encodeDate : Date -> Jenc.Value
-encodeDate x =
-    Jenc.object
-        [ ("date", Jenc.int x.date)
-        ]
-
 empty : Jdec.Decoder Empty
 empty =
     Jdec.succeed Empty
@@ -2939,6 +2999,8 @@ encodeObj1Bool x =
 obj2 : Jdec.Decoder Obj2
 obj2 =
     Jdec.succeed Obj2
+        |> Jpipe.required "CultureInfo" cultureInfo
+        |> Jpipe.required "date" date
         |> Jpipe.required "DateFormatter" dateFormatter
         |> Jpipe.required "DateOnly" dateOnly
         |> Jpipe.required "DateOnlyConverter" dateOnlyConverter
@@ -2958,11 +3020,13 @@ obj2 =
         |> Jpipe.required "del" del
         |> Jpipe.required "delegate" delegate
         |> Jpipe.required "delete" delete
+        |> Jpipe.required "DeserializationFeature" deserializationFeature
         |> Jpipe.required "dict" dictClass
         |> Jpipe.required "dictionary" dictionary
         |> Jpipe.required "didSet" didSet
         |> Jpipe.required "do" do
         |> Jpipe.required "double" double
+        |> Jpipe.required "DoubleNode" doubleNode
         |> Jpipe.required "dummy" Jdec.int
         |> Jpipe.required "dynamic" dynamic
         |> Jpipe.required "dynamic_cast" dynamicCast
@@ -2995,10 +3059,6 @@ obj2 =
         |> Jpipe.required "from_json" fromJSON
         |> Jpipe.required "func" func
         |> Jpipe.required "function" function
-        |> Jpipe.required "get" get
-        |> Jpipe.required "global" global
-        |> Jpipe.required "go" go
-        |> Jpipe.required "goto" goto
         |> Jpipe.required "Decoder" purpleDecoder
         |> Jpipe.required "else" purpleElse
         |> Jpipe.required "exposing" purpleExposing
@@ -3008,7 +3068,9 @@ obj2 =
 encodeObj2 : Obj2 -> Jenc.Value
 encodeObj2 x =
     Jenc.object
-        [ ("DateFormatter", encodeDateFormatter x.dateFormatter)
+        [ ("CultureInfo", encodeCultureInfo x.cultureInfo)
+        , ("date", encodeDate x.date)
+        , ("DateFormatter", encodeDateFormatter x.dateFormatter)
         , ("DateOnly", encodeDateOnly x.dateOnly)
         , ("DateOnlyConverter", encodeDateOnlyConverter x.dateOnlyConverter)
         , ("date_parse_handling", encodeDateParseHandling x.dateParseHandling)
@@ -3027,11 +3089,13 @@ encodeObj2 x =
         , ("del", encodeDel x.del)
         , ("delegate", encodeDelegate x.delegate)
         , ("delete", encodeDelete x.delete)
+        , ("DeserializationFeature", encodeDeserializationFeature x.deserializationFeature)
         , ("dict", encodeDictClass x.dict)
         , ("dictionary", encodeDictionary x.dictionary)
         , ("didSet", encodeDidSet x.didSet)
         , ("do", encodeDo x.do)
         , ("double", encodeDouble x.double)
+        , ("DoubleNode", encodeDoubleNode x.doubleNode)
         , ("dummy", Jenc.int x.dummy)
         , ("dynamic", encodeDynamic x.dynamic)
         , ("dynamic_cast", encodeDynamicCast x.dynamicCast)
@@ -3064,10 +3128,6 @@ encodeObj2 x =
         , ("from_json", encodeFromJSON x.fromJSON)
         , ("func", encodeFunc x.func)
         , ("function", encodeFunction x.function)
-        , ("get", encodeGet x.get)
-        , ("global", encodeGlobal x.global)
-        , ("go", encodeGo x.go)
-        , ("goto", encodeGoto x.goto)
         , ("Decoder", encodeDecoder x.obj2Decoder)
         , ("else", encodeElse x.obj2Else)
         , ("exposing", encodeExposing x.obj2Exposing)
@@ -3075,6 +3135,28 @@ encodeObj2 x =
         , ("float", encodeFloatClass x.obj2Float)
         ]
 
+cultureInfo : Jdec.Decoder CultureInfo
+cultureInfo =
+    Jdec.succeed CultureInfo
+        |> Jpipe.required "CultureInfo" Jdec.int
+
+encodeCultureInfo : CultureInfo -> Jenc.Value
+encodeCultureInfo x =
+    Jenc.object
+        [ ("CultureInfo", Jenc.int x.cultureInfo)
+        ]
+
+date : Jdec.Decoder Date
+date =
+    Jdec.succeed Date
+        |> Jpipe.required "date" Jdec.int
+
+encodeDate : Date -> Jenc.Value
+encodeDate x =
+    Jenc.object
+        [ ("date", Jenc.int x.date)
+        ]
+
 dateFormatter : Jdec.Decoder DateFormatter
 dateFormatter =
     Jdec.succeed DateFormatter
@@ -3284,6 +3366,17 @@ encodeDelete x =
         [ ("delete", Jenc.int x.delete)
         ]
 
+deserializationFeature : Jdec.Decoder DeserializationFeature
+deserializationFeature =
+    Jdec.succeed DeserializationFeature
+        |> Jpipe.required "DeserializationFeature" Jdec.int
+
+encodeDeserializationFeature : DeserializationFeature -> Jenc.Value
+encodeDeserializationFeature x =
+    Jenc.object
+        [ ("DeserializationFeature", Jenc.int x.deserializationFeature)
+        ]
+
 dictClass : Jdec.Decoder DictClass
 dictClass =
     Jdec.succeed DictClass
@@ -3339,6 +3432,17 @@ encodeDouble x =
         [ ("double", Jenc.int x.double)
         ]
 
+doubleNode : Jdec.Decoder DoubleNode
+doubleNode =
+    Jdec.succeed DoubleNode
+        |> Jpipe.required "DoubleNode" Jdec.int
+
+encodeDoubleNode : DoubleNode -> Jenc.Value
+encodeDoubleNode x =
+    Jenc.object
+        [ ("DoubleNode", Jenc.int x.doubleNode)
+        ]
+
 dynamic : Jdec.Decoder Dynamic
 dynamic =
     Jdec.succeed Dynamic
@@ -3695,50 +3799,6 @@ encodeFunction x =
         [ ("function", Jenc.int x.function)
         ]
 
-get : Jdec.Decoder Get
-get =
-    Jdec.succeed Get
-        |> Jpipe.required "get" Jdec.int
-
-encodeGet : Get -> Jenc.Value
-encodeGet x =
-    Jenc.object
-        [ ("get", Jenc.int x.get)
-        ]
-
-global : Jdec.Decoder Global
-global =
-    Jdec.succeed Global
-        |> Jpipe.required "global" Jdec.int
-
-encodeGlobal : Global -> Jenc.Value
-encodeGlobal x =
-    Jenc.object
-        [ ("global", Jenc.int x.global)
-        ]
-
-go : Jdec.Decoder Go
-go =
-    Jdec.succeed Go
-        |> Jpipe.required "go" Jdec.int
-
-encodeGo : Go -> Jenc.Value
-encodeGo x =
-    Jenc.object
-        [ ("go", Jenc.int x.go)
-        ]
-
-goto : Jdec.Decoder Goto
-goto =
-    Jdec.succeed Goto
-        |> Jpipe.required "goto" Jdec.int
-
-encodeGoto : Goto -> Jenc.Value
-encodeGoto x =
-    Jenc.object
-        [ ("goto", Jenc.int x.goto)
-        ]
-
 purpleDecoder : Jdec.Decoder Decoder
 purpleDecoder =
     Jdec.succeed Decoder
@@ -3798,6 +3858,10 @@ obj3 : Jdec.Decoder Obj3
 obj3 =
     Jdec.succeed Obj3
         |> Jpipe.required "dummy" Jdec.int
+        |> Jpipe.required "get" get
+        |> Jpipe.required "global" global
+        |> Jpipe.required "go" go
+        |> Jpipe.required "goto" goto
         |> Jpipe.required "guard" guard
         |> Jpipe.required "hasOwnProperty" hasOwnProperty
         |> Jpipe.required "hashCode" hashCode
@@ -3812,6 +3876,7 @@ obj3 =
         |> Jpipe.required "inline" inline
         |> Jpipe.required "inout" inout
         |> Jpipe.required "instanceof" instanceof
+        |> Jpipe.required "IntNode" intNode
         |> Jpipe.required "interface" interface
         |> Jpipe.required "internal" internal
         |> Jpipe.required "is" is
@@ -3843,18 +3908,13 @@ obj3 =
         |> Jpipe.required "Locale" locale
         |> Jpipe.required "lock" lock
         |> Jpipe.required "long" long
+        |> Jpipe.required "LongNode" longNode
         |> Jpipe.required "map" map
         |> Jpipe.required "MapEntry" mapEntry
         |> Jpipe.required "metadata_property_handling" metadataPropertyHandling
         |> Jpipe.required "mutable" mutable
         |> Jpipe.required "mutating" mutating
         |> Jpipe.required "namespace" namespace
-        |> Jpipe.required "native" native
-        |> Jpipe.required "new" new
-        |> Jpipe.required "newtonsoft" newtonsoft
-        |> Jpipe.required "nil" nil
-        |> Jpipe.required "NO" no
-        |> Jpipe.required "noexcept" noexcept
         |> Jpipe.required "if" purpleIf
         |> Jpipe.required "import" purpleImport
         |> Jpipe.required "in" purpleIn
@@ -3867,6 +3927,10 @@ encodeObj3 : Obj3 -> Jenc.Value
 encodeObj3 x =
     Jenc.object
         [ ("dummy", Jenc.int x.dummy)
+        , ("get", encodeGet x.get)
+        , ("global", encodeGlobal x.global)
+        , ("go", encodeGo x.go)
+        , ("goto", encodeGoto x.goto)
         , ("guard", encodeGuard x.guard)
         , ("hasOwnProperty", encodeHasOwnProperty x.hasOwnProperty)
         , ("hashCode", encodeHashCode x.hashCode)
@@ -3881,6 +3945,7 @@ encodeObj3 x =
         , ("inline", encodeInline x.inline)
         , ("inout", encodeInout x.inout)
         , ("instanceof", encodeInstanceof x.instanceof)
+        , ("IntNode", encodeIntNode x.intNode)
         , ("interface", encodeInterface x.interface)
         , ("internal", encodeInternal x.internal)
         , ("is", encodeIs x.is)
@@ -3912,18 +3977,13 @@ encodeObj3 x =
         , ("Locale", encodeLocale x.locale)
         , ("lock", encodeLock x.lock)
         , ("long", encodeLong x.long)
+        , ("LongNode", encodeLongNode x.longNode)
         , ("map", encodeMap x.map)
         , ("MapEntry", encodeMapEntry x.mapEntry)
         , ("metadata_property_handling", encodeMetadataPropertyHandling x.metadataPropertyHandling)
         , ("mutable", encodeMutable x.mutable)
         , ("mutating", encodeMutating x.mutating)
         , ("namespace", encodeNamespace x.namespace)
-        , ("native", encodeNative x.native)
-        , ("new", encodeNew x.new)
-        , ("newtonsoft", encodeNewtonsoft x.newtonsoft)
-        , ("nil", encodeNil x.nil)
-        , ("NO", encodeNo x.no)
-        , ("noexcept", encodeNoexcept x.noexcept)
         , ("if", encodeIf x.obj3If)
         , ("import", encodeImport x.obj3Import)
         , ("in", encodeIn x.obj3In)
@@ -3933,30 +3993,74 @@ encodeObj3 x =
         , ("module", encodeModule x.obj3Module)
         ]
 
-guard : Jdec.Decoder Guard
-guard =
-    Jdec.succeed Guard
-        |> Jpipe.required "guard" Jdec.int
+get : Jdec.Decoder Get
+get =
+    Jdec.succeed Get
+        |> Jpipe.required "get" Jdec.int
 
-encodeGuard : Guard -> Jenc.Value
-encodeGuard x =
+encodeGet : Get -> Jenc.Value
+encodeGet x =
     Jenc.object
-        [ ("guard", Jenc.int x.guard)
+        [ ("get", Jenc.int x.get)
         ]
 
-hasOwnProperty : Jdec.Decoder HasOwnProperty
-hasOwnProperty =
-    Jdec.succeed HasOwnProperty
-        |> Jpipe.required "hasOwnProperty" Jdec.int
+global : Jdec.Decoder Global
+global =
+    Jdec.succeed Global
+        |> Jpipe.required "global" Jdec.int
 
-encodeHasOwnProperty : HasOwnProperty -> Jenc.Value
-encodeHasOwnProperty x =
+encodeGlobal : Global -> Jenc.Value
+encodeGlobal x =
     Jenc.object
-        [ ("hasOwnProperty", Jenc.int x.hasOwnProperty)
+        [ ("global", Jenc.int x.global)
         ]
 
-hashCode : Jdec.Decoder HashCode
-hashCode =
+go : Jdec.Decoder Go
+go =
+    Jdec.succeed Go
+        |> Jpipe.required "go" Jdec.int
+
+encodeGo : Go -> Jenc.Value
+encodeGo x =
+    Jenc.object
+        [ ("go", Jenc.int x.go)
+        ]
+
+goto : Jdec.Decoder Goto
+goto =
+    Jdec.succeed Goto
+        |> Jpipe.required "goto" Jdec.int
+
+encodeGoto : Goto -> Jenc.Value
+encodeGoto x =
+    Jenc.object
+        [ ("goto", Jenc.int x.goto)
+        ]
+
+guard : Jdec.Decoder Guard
+guard =
+    Jdec.succeed Guard
+        |> Jpipe.required "guard" Jdec.int
+
+encodeGuard : Guard -> Jenc.Value
+encodeGuard x =
+    Jenc.object
+        [ ("guard", Jenc.int x.guard)
+        ]
+
+hasOwnProperty : Jdec.Decoder HasOwnProperty
+hasOwnProperty =
+    Jdec.succeed HasOwnProperty
+        |> Jpipe.required "hasOwnProperty" Jdec.int
+
+encodeHasOwnProperty : HasOwnProperty -> Jenc.Value
+encodeHasOwnProperty x =
+    Jenc.object
+        [ ("hasOwnProperty", Jenc.int x.hasOwnProperty)
+        ]
+
+hashCode : Jdec.Decoder HashCode
+hashCode =
     Jdec.succeed HashCode
         |> Jpipe.required "hashCode" Jdec.int
 
@@ -4087,6 +4191,17 @@ encodeInstanceof x =
         [ ("instanceof", Jenc.int x.instanceof)
         ]
 
+intNode : Jdec.Decoder IntNode
+intNode =
+    Jdec.succeed IntNode
+        |> Jpipe.required "IntNode" Jdec.int
+
+encodeIntNode : IntNode -> Jenc.Value
+encodeIntNode x =
+    Jenc.object
+        [ ("IntNode", Jenc.int x.intNode)
+        ]
+
 interface : Jdec.Decoder Interface
 interface =
     Jdec.succeed Interface
@@ -4428,6 +4543,17 @@ encodeLong x =
         [ ("long", Jenc.int x.long)
         ]
 
+longNode : Jdec.Decoder LongNode
+longNode =
+    Jdec.succeed LongNode
+        |> Jpipe.required "LongNode" Jdec.int
+
+encodeLongNode : LongNode -> Jenc.Value
+encodeLongNode x =
+    Jenc.object
+        [ ("LongNode", Jenc.int x.longNode)
+        ]
+
 map : Jdec.Decoder Map
 map =
     Jdec.succeed Map
@@ -4494,72 +4620,6 @@ encodeNamespace x =
         [ ("namespace", Jenc.int x.namespace)
         ]
 
-native : Jdec.Decoder Native
-native =
-    Jdec.succeed Native
-        |> Jpipe.required "native" Jdec.int
-
-encodeNative : Native -> Jenc.Value
-encodeNative x =
-    Jenc.object
-        [ ("native", Jenc.int x.native)
-        ]
-
-new : Jdec.Decoder New
-new =
-    Jdec.succeed New
-        |> Jpipe.required "new" Jdec.int
-
-encodeNew : New -> Jenc.Value
-encodeNew x =
-    Jenc.object
-        [ ("new", Jenc.int x.new)
-        ]
-
-newtonsoft : Jdec.Decoder Newtonsoft
-newtonsoft =
-    Jdec.succeed Newtonsoft
-        |> Jpipe.required "newtonsoft" Jdec.int
-
-encodeNewtonsoft : Newtonsoft -> Jenc.Value
-encodeNewtonsoft x =
-    Jenc.object
-        [ ("newtonsoft", Jenc.int x.newtonsoft)
-        ]
-
-nil : Jdec.Decoder Nil
-nil =
-    Jdec.succeed Nil
-        |> Jpipe.required "nil" Jdec.int
-
-encodeNil : Nil -> Jenc.Value
-encodeNil x =
-    Jenc.object
-        [ ("nil", Jenc.int x.nil)
-        ]
-
-no : Jdec.Decoder No
-no =
-    Jdec.succeed No
-        |> Jpipe.required "NO" Jdec.int
-
-encodeNo : No -> Jenc.Value
-encodeNo x =
-    Jenc.object
-        [ ("NO", Jenc.int x.no)
-        ]
-
-noexcept : Jdec.Decoder Noexcept
-noexcept =
-    Jdec.succeed Noexcept
-        |> Jpipe.required "noexcept" Jdec.int
-
-encodeNoexcept : Noexcept -> Jenc.Value
-encodeNoexcept x =
-    Jenc.object
-        [ ("noexcept", Jenc.int x.noexcept)
-        ]
-
 purpleIf : Jdec.Decoder If
 purpleIf =
     Jdec.succeed If
@@ -4641,7 +4701,13 @@ obj4 : Jdec.Decoder Obj4
 obj4 =
     Jdec.succeed Obj4
         |> Jpipe.required "dummy" Jdec.int
+        |> Jpipe.required "native" native
+        |> Jpipe.required "new" new
+        |> Jpipe.required "newtonsoft" newtonsoft
+        |> Jpipe.required "nil" nil
+        |> Jpipe.required "NO" no
         |> Jpipe.required "noSuchMethod" noSuchMethod
+        |> Jpipe.required "noexcept" noexcept
         |> Jpipe.required "nonatomic" nonatomic
         |> Jpipe.required "None" none
         |> Jpipe.required "nonlocal" nonlocal
@@ -4652,6 +4718,7 @@ obj4 =
         |> Jpipe.required "NSObject" nsObject
         |> Jpipe.required "NSString" nsString
         |> Jpipe.required "NULL" null
+        |> Jpipe.required "NullNode" nullNode
         |> Jpipe.required "nullptr" nullptr
         |> Jpipe.required "number" number
         |> Jpipe.required "none" noneClass
@@ -4661,6 +4728,7 @@ obj4 =
         |> Jpipe.required "protocol" protocolClass
         |> Jpipe.required "object" object
         |> Jpipe.required "ObjectMapper" objectMapper
+        |> Jpipe.required "ObjectNode" objectNode
         |> Jpipe.required "oneway" oneway
         |> Jpipe.required "open" open
         |> Jpipe.required "operator" operator
@@ -4697,20 +4765,18 @@ obj4 =
         |> Jpipe.required "restrict" restrict
         |> Jpipe.required "retain" retain
         |> Jpipe.required "rethrows" rethrows
-        |> Jpipe.required "return" return
-        |> Jpipe.required "right" right
-        |> Jpipe.required "runtimeType" runtimeType
-        |> Jpipe.required "s" s
-        |> Jpipe.required "sbyte" sbyte
-        |> Jpipe.required "sealed" sealed
-        |> Jpipe.required "SEL" sel
-        |> Jpipe.required "select" select
 
 encodeObj4 : Obj4 -> Jenc.Value
 encodeObj4 x =
     Jenc.object
         [ ("dummy", Jenc.int x.dummy)
+        , ("native", encodeNative x.native)
+        , ("new", encodeNew x.new)
+        , ("newtonsoft", encodeNewtonsoft x.newtonsoft)
+        , ("nil", encodeNil x.nil)
+        , ("NO", encodeNo x.no)
         , ("noSuchMethod", encodeNoSuchMethod x.noSuchMethod)
+        , ("noexcept", encodeNoexcept x.noexcept)
         , ("nonatomic", encodeNonatomic x.nonatomic)
         , ("None", encodeNone x.none)
         , ("nonlocal", encodeNonlocal x.nonlocal)
@@ -4721,6 +4787,7 @@ encodeObj4 x =
         , ("NSObject", encodeNSObject x.nsObject)
         , ("NSString", encodeNSString x.nsString)
         , ("NULL", encodeNull x.null)
+        , ("NullNode", encodeNullNode x.nullNode)
         , ("nullptr", encodeNullptr x.nullptr)
         , ("number", encodeNumber x.number)
         , ("none", encodeNoneClass x.obj4None)
@@ -4730,6 +4797,7 @@ encodeObj4 x =
         , ("protocol", encodeProtocolClass x.obj4Protocol)
         , ("object", encodeObject x.object)
         , ("ObjectMapper", encodeObjectMapper x.objectMapper)
+        , ("ObjectNode", encodeObjectNode x.objectNode)
         , ("oneway", encodeOneway x.oneway)
         , ("open", encodeOpen x.open)
         , ("operator", encodeOperator x.operator)
@@ -4766,14 +4834,61 @@ encodeObj4 x =
         , ("restrict", encodeRestrict x.restrict)
         , ("retain", encodeRetain x.retain)
         , ("rethrows", encodeRethrows x.rethrows)
-        , ("return", encodeReturn x.return)
-        , ("right", encodeRight x.right)
-        , ("runtimeType", encodeRuntimeType x.runtimeType)
-        , ("s", encodeS x.s)
-        , ("sbyte", encodeSbyte x.sbyte)
-        , ("sealed", encodeSealed x.sealed)
-        , ("SEL", encodeSel x.sel)
-        , ("select", encodeSelect x.select)
+        ]
+
+native : Jdec.Decoder Native
+native =
+    Jdec.succeed Native
+        |> Jpipe.required "native" Jdec.int
+
+encodeNative : Native -> Jenc.Value
+encodeNative x =
+    Jenc.object
+        [ ("native", Jenc.int x.native)
+        ]
+
+new : Jdec.Decoder New
+new =
+    Jdec.succeed New
+        |> Jpipe.required "new" Jdec.int
+
+encodeNew : New -> Jenc.Value
+encodeNew x =
+    Jenc.object
+        [ ("new", Jenc.int x.new)
+        ]
+
+newtonsoft : Jdec.Decoder Newtonsoft
+newtonsoft =
+    Jdec.succeed Newtonsoft
+        |> Jpipe.required "newtonsoft" Jdec.int
+
+encodeNewtonsoft : Newtonsoft -> Jenc.Value
+encodeNewtonsoft x =
+    Jenc.object
+        [ ("newtonsoft", Jenc.int x.newtonsoft)
+        ]
+
+nil : Jdec.Decoder Nil
+nil =
+    Jdec.succeed Nil
+        |> Jpipe.required "nil" Jdec.int
+
+encodeNil : Nil -> Jenc.Value
+encodeNil x =
+    Jenc.object
+        [ ("nil", Jenc.int x.nil)
+        ]
+
+no : Jdec.Decoder No
+no =
+    Jdec.succeed No
+        |> Jpipe.required "NO" Jdec.int
+
+encodeNo : No -> Jenc.Value
+encodeNo x =
+    Jenc.object
+        [ ("NO", Jenc.int x.no)
         ]
 
 noSuchMethod : Jdec.Decoder NoSuchMethod
@@ -4787,6 +4902,17 @@ encodeNoSuchMethod x =
         [ ("noSuchMethod", Jenc.int x.noSuchMethod)
         ]
 
+noexcept : Jdec.Decoder Noexcept
+noexcept =
+    Jdec.succeed Noexcept
+        |> Jpipe.required "noexcept" Jdec.int
+
+encodeNoexcept : Noexcept -> Jenc.Value
+encodeNoexcept x =
+    Jenc.object
+        [ ("noexcept", Jenc.int x.noexcept)
+        ]
+
 nonatomic : Jdec.Decoder Nonatomic
 nonatomic =
     Jdec.succeed Nonatomic
@@ -4897,6 +5023,17 @@ encodeNull x =
         [ ("NULL", Jenc.int x.null)
         ]
 
+nullNode : Jdec.Decoder NullNode
+nullNode =
+    Jdec.succeed NullNode
+        |> Jpipe.required "NullNode" Jdec.int
+
+encodeNullNode : NullNode -> Jenc.Value
+encodeNullNode x =
+    Jenc.object
+        [ ("NullNode", Jenc.int x.nullNode)
+        ]
+
 nullptr : Jdec.Decoder Nullptr
 nullptr =
     Jdec.succeed Nullptr
@@ -4996,6 +5133,17 @@ encodeObjectMapper x =
         [ ("ObjectMapper", Jenc.int x.objectMapper)
         ]
 
+objectNode : Jdec.Decoder ObjectNode
+objectNode =
+    Jdec.succeed ObjectNode
+        |> Jpipe.required "ObjectNode" Jdec.int
+
+encodeObjectNode : ObjectNode -> Jenc.Value
+encodeObjectNode x =
+    Jenc.object
+        [ ("ObjectNode", Jenc.int x.objectNode)
+        ]
+
 oneway : Jdec.Decoder Oneway
 oneway =
     Jdec.succeed Oneway
@@ -5392,94 +5540,6 @@ encodeRethrows x =
         [ ("rethrows", Jenc.int x.rethrows)
         ]
 
-return : Jdec.Decoder Return
-return =
-    Jdec.succeed Return
-        |> Jpipe.required "return" Jdec.int
-
-encodeReturn : Return -> Jenc.Value
-encodeReturn x =
-    Jenc.object
-        [ ("return", Jenc.int x.return)
-        ]
-
-right : Jdec.Decoder Right
-right =
-    Jdec.succeed Right
-        |> Jpipe.required "right" Jdec.int
-
-encodeRight : Right -> Jenc.Value
-encodeRight x =
-    Jenc.object
-        [ ("right", Jenc.int x.right)
-        ]
-
-runtimeType : Jdec.Decoder RuntimeType
-runtimeType =
-    Jdec.succeed RuntimeType
-        |> Jpipe.required "runtimeType" Jdec.int
-
-encodeRuntimeType : RuntimeType -> Jenc.Value
-encodeRuntimeType x =
-    Jenc.object
-        [ ("runtimeType", Jenc.int x.runtimeType)
-        ]
-
-s : Jdec.Decoder S
-s =
-    Jdec.succeed S
-        |> Jpipe.required "s" Jdec.int
-
-encodeS : S -> Jenc.Value
-encodeS x =
-    Jenc.object
-        [ ("s", Jenc.int x.s)
-        ]
-
-sbyte : Jdec.Decoder Sbyte
-sbyte =
-    Jdec.succeed Sbyte
-        |> Jpipe.required "sbyte" Jdec.int
-
-encodeSbyte : Sbyte -> Jenc.Value
-encodeSbyte x =
-    Jenc.object
-        [ ("sbyte", Jenc.int x.sbyte)
-        ]
-
-sealed : Jdec.Decoder Sealed
-sealed =
-    Jdec.succeed Sealed
-        |> Jpipe.required "sealed" Jdec.int
-
-encodeSealed : Sealed -> Jenc.Value
-encodeSealed x =
-    Jenc.object
-        [ ("sealed", Jenc.int x.sealed)
-        ]
-
-sel : Jdec.Decoder Sel
-sel =
-    Jdec.succeed Sel
-        |> Jpipe.required "SEL" Jdec.int
-
-encodeSel : Sel -> Jenc.Value
-encodeSel x =
-    Jenc.object
-        [ ("SEL", Jenc.int x.sel)
-        ]
-
-select : Jdec.Decoder Select
-select =
-    Jdec.succeed Select
-        |> Jpipe.required "select" Jdec.int
-
-encodeSelect : Select -> Jenc.Value
-encodeSelect x =
-    Jenc.object
-        [ ("select", Jenc.int x.select)
-        ]
-
 obj5 : Jdec.Decoder Obj5
 obj5 =
     Jdec.succeed Obj5
@@ -5490,8 +5550,17 @@ obj5 =
         |> Jpipe.required "true" obj5True
         |> Jpipe.required "Type" purpleType
         |> Jpipe.required "type" typeClass
+        |> Jpipe.required "return" return
+        |> Jpipe.required "right" right
+        |> Jpipe.required "runtimeType" runtimeType
+        |> Jpipe.required "s" s
+        |> Jpipe.required "sbyte" sbyte
+        |> Jpipe.required "sealed" sealed
+        |> Jpipe.required "SEL" sel
+        |> Jpipe.required "select" select
         |> Jpipe.required "Self" self
         |> Jpipe.required "Sendable" sendable
+        |> Jpipe.required "SerializationFeature" serializationFeature
         |> Jpipe.required "serialize" serialize
         |> Jpipe.required "SerializerProvider" serializerProvider
         |> Jpipe.required "set" set
@@ -5515,6 +5584,7 @@ obj5 =
         |> Jpipe.required "synchronized" synchronized
         |> Jpipe.required "system" system
         |> Jpipe.required "template" template
+        |> Jpipe.required "TextNode" textNode
         |> Jpipe.required "this" this
         |> Jpipe.required "thread_local" threadLocal
         |> Jpipe.required "throw" throw
@@ -5538,16 +5608,6 @@ obj5 =
         |> Jpipe.required "unchecked" unchecked
         |> Jpipe.required "undefined" undefined
         |> Jpipe.required "union" union
-        |> Jpipe.required "unowned" unowned
-        |> Jpipe.required "unsafe" unsafe
-        |> Jpipe.required "unsigned" unsigned
-        |> 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 =
@@ -5559,8 +5619,17 @@ encodeObj5 x =
         , ("true", encodeObj5True x.obj5True)
         , ("Type", encodeType x.obj5Type)
         , ("type", encodeTypeClass x.purpleType)
+        , ("return", encodeReturn x.return)
+        , ("right", encodeRight x.right)
+        , ("runtimeType", encodeRuntimeType x.runtimeType)
+        , ("s", encodeS x.s)
+        , ("sbyte", encodeSbyte x.sbyte)
+        , ("sealed", encodeSealed x.sealed)
+        , ("SEL", encodeSel x.sel)
+        , ("select", encodeSelect x.select)
         , ("Self", encodeSelf x.self)
         , ("Sendable", encodeSendable x.sendable)
+        , ("SerializationFeature", encodeSerializationFeature x.serializationFeature)
         , ("serialize", encodeSerialize x.serialize)
         , ("SerializerProvider", encodeSerializerProvider x.serializerProvider)
         , ("set", encodeSet x.set)
@@ -5584,6 +5653,7 @@ encodeObj5 x =
         , ("synchronized", encodeSynchronized x.synchronized)
         , ("system", encodeSystem x.system)
         , ("template", encodeTemplate x.template)
+        , ("TextNode", encodeTextNode x.textNode)
         , ("this", encodeThis x.this)
         , ("thread_local", encodeThreadLocal x.threadLocal)
         , ("throw", encodeThrow x.throw)
@@ -5607,16 +5677,6 @@ encodeObj5 x =
         , ("unchecked", encodeUnchecked x.unchecked)
         , ("undefined", encodeUndefined x.undefined)
         , ("union", encodeUnion x.union)
-        , ("unowned", encodeUnowned x.unowned)
-        , ("unsafe", encodeUnsafe x.unsafe)
-        , ("unsigned", encodeUnsigned x.unsigned)
-        , ("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)
         ]
 
 selfClass : Jdec.Decoder SelfClass
@@ -5685,6 +5745,94 @@ encodeTypeClass x =
         [ ("type", Jenc.int x.typeType)
         ]
 
+return : Jdec.Decoder Return
+return =
+    Jdec.succeed Return
+        |> Jpipe.required "return" Jdec.int
+
+encodeReturn : Return -> Jenc.Value
+encodeReturn x =
+    Jenc.object
+        [ ("return", Jenc.int x.return)
+        ]
+
+right : Jdec.Decoder Right
+right =
+    Jdec.succeed Right
+        |> Jpipe.required "right" Jdec.int
+
+encodeRight : Right -> Jenc.Value
+encodeRight x =
+    Jenc.object
+        [ ("right", Jenc.int x.right)
+        ]
+
+runtimeType : Jdec.Decoder RuntimeType
+runtimeType =
+    Jdec.succeed RuntimeType
+        |> Jpipe.required "runtimeType" Jdec.int
+
+encodeRuntimeType : RuntimeType -> Jenc.Value
+encodeRuntimeType x =
+    Jenc.object
+        [ ("runtimeType", Jenc.int x.runtimeType)
+        ]
+
+s : Jdec.Decoder S
+s =
+    Jdec.succeed S
+        |> Jpipe.required "s" Jdec.int
+
+encodeS : S -> Jenc.Value
+encodeS x =
+    Jenc.object
+        [ ("s", Jenc.int x.s)
+        ]
+
+sbyte : Jdec.Decoder Sbyte
+sbyte =
+    Jdec.succeed Sbyte
+        |> Jpipe.required "sbyte" Jdec.int
+
+encodeSbyte : Sbyte -> Jenc.Value
+encodeSbyte x =
+    Jenc.object
+        [ ("sbyte", Jenc.int x.sbyte)
+        ]
+
+sealed : Jdec.Decoder Sealed
+sealed =
+    Jdec.succeed Sealed
+        |> Jpipe.required "sealed" Jdec.int
+
+encodeSealed : Sealed -> Jenc.Value
+encodeSealed x =
+    Jenc.object
+        [ ("sealed", Jenc.int x.sealed)
+        ]
+
+sel : Jdec.Decoder Sel
+sel =
+    Jdec.succeed Sel
+        |> Jpipe.required "SEL" Jdec.int
+
+encodeSel : Sel -> Jenc.Value
+encodeSel x =
+    Jenc.object
+        [ ("SEL", Jenc.int x.sel)
+        ]
+
+select : Jdec.Decoder Select
+select =
+    Jdec.succeed Select
+        |> Jpipe.required "select" Jdec.int
+
+encodeSelect : Select -> Jenc.Value
+encodeSelect x =
+    Jenc.object
+        [ ("select", Jenc.int x.select)
+        ]
+
 self : Jdec.Decoder Self
 self =
     Jdec.succeed Self
@@ -5707,6 +5855,17 @@ encodeSendable x =
         [ ("Sendable", Jenc.int x.sendable)
         ]
 
+serializationFeature : Jdec.Decoder SerializationFeature
+serializationFeature =
+    Jdec.succeed SerializationFeature
+        |> Jpipe.required "SerializationFeature" Jdec.int
+
+encodeSerializationFeature : SerializationFeature -> Jenc.Value
+encodeSerializationFeature x =
+    Jenc.object
+        [ ("SerializationFeature", Jenc.int x.serializationFeature)
+        ]
+
 serialize : Jdec.Decoder Serialize
 serialize =
     Jdec.succeed Serialize
@@ -5960,6 +6119,17 @@ encodeTemplate x =
         [ ("template", Jenc.int x.template)
         ]
 
+textNode : Jdec.Decoder TextNode
+textNode =
+    Jdec.succeed TextNode
+        |> Jpipe.required "TextNode" Jdec.int
+
+encodeTextNode : TextNode -> Jenc.Value
+encodeTextNode x =
+    Jenc.object
+        [ ("TextNode", Jenc.int x.textNode)
+        ]
+
 this : Jdec.Decoder This
 this =
     Jdec.succeed This
@@ -6213,6 +6383,72 @@ encodeUnion x =
         [ ("union", Jenc.int x.union)
         ]
 
+obj6 : Jdec.Decoder Obj6
+obj6 =
+    Jdec.succeed Obj6
+        |> Jpipe.required "dummy" Jdec.int
+        |> Jpipe.required "where" purpleWhere
+        |> Jpipe.required "unowned" unowned
+        |> Jpipe.required "unsafe" unsafe
+        |> Jpipe.required "unsigned" unsigned
+        |> 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
+        |> 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)
+        , ("unowned", encodeUnowned x.unowned)
+        , ("unsafe", encodeUnsafe x.unsafe)
+        , ("unsigned", encodeUnsigned x.unsigned)
+        , ("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)
+        , ("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)
+        ]
+
 unowned : Jdec.Decoder Unowned
 unowned =
     Jdec.succeed Unowned
@@ -6323,52 +6559,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..9089063 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
@@ -21,13 +21,14 @@ export type TopLevel = {
 
 export type Obj1 = {
     Any:             Any;
+    ArrayNode:       ArrayNode;
     BOOL:            Bool;
+    BooleanNode:     BooleanNode;
     Calendar:        Calendar;
     Class:           ClassClass;
     Codable:         Codable;
     CodingKey:       CodingKey;
     CodingKeys:      CodingKeys;
-    CultureInfo:     CultureInfo;
     _:               Empty;
     _Bool:           BoolClass;
     _Complex:        Complex;
@@ -83,7 +84,6 @@ export type Obj1 = {
     convenience:     Convenience;
     convert:         Convert;
     converter:       Converter;
-    date:            DateClass;
     dummy:           number;
 };
 
@@ -91,10 +91,18 @@ export type Any = {
     Any: number;
 };
 
+export type ArrayNode = {
+    ArrayNode: number;
+};
+
 export type Bool = {
     BOOL: number;
 };
 
+export type BooleanNode = {
+    BooleanNode: number;
+};
+
 export type Calendar = {
     Calendar: number;
 };
@@ -115,10 +123,6 @@ export type CodingKeys = {
     CodingKeys: number;
 };
 
-export type CultureInfo = {
-    CultureInfo: number;
-};
-
 export type Empty = {
     _: number;
 };
@@ -339,76 +343,76 @@ export type Converter = {
     converter: number;
 };
 
-export type DateClass = {
-    date: number;
+export type Obj2 = {
+    CultureInfo:            CultureInfo;
+    DateFormatter:          DateFormatter;
+    DateOnly:               DateOnly;
+    DateOnlyConverter:      DateOnlyConverter;
+    DateTime:               DateTime;
+    DateTimeStyles:         DateTimeStyles;
+    Decoder:                Decoder;
+    DecodingError:          DecodingError;
+    DeserializationFeature: DeserializationFeature;
+    DoubleNode:             DoubleNode;
+    Encoder:                Encoder;
+    EnumValues:             EnumValues;
+    Equatable:              Equatable;
+    False:                  False;
+    FormatException:        FormatException;
+    date:                   DateClass;
+    date_parse_handling:    DateParseHandling;
+    debugger:               Debugger;
+    decimal:                Decimal;
+    declare:                Declare;
+    decltype:               Decltype;
+    decode_string:          DecodeString;
+    def:                    Def;
+    default:                Default;
+    defer:                  Defer;
+    deinit:                 Deinit;
+    del:                    Del;
+    delegate:               Delegate;
+    delete:                 Delete;
+    dict:                   Dict;
+    dictionary:             Dictionary;
+    didSet:                 DidSet;
+    do:                     Do;
+    double:                 Double;
+    dummy:                  number;
+    dynamic:                Dynamic;
+    dynamic_cast:           DynamicCast;
+    elif:                   Elif;
+    else:                   Else;
+    encode_quick_type:      EncodeQuickType;
+    enum:                   Enum;
+    equalityContract:       EqualityContract;
+    event:                  Event;
+    except:                 Except;
+    exception:              Exception;
+    explicit:               Explicit;
+    export:                 Export;
+    exposing:               Exposing;
+    extends:                Extends;
+    extension:              Extension;
+    extern:                 Extern;
+    fallthrough:            Fallthrough;
+    false:                  FalseClass;
+    fileprivate:            Fileprivate;
+    final:                  Final;
+    finally:                Finally;
+    fixed:                  Fixed;
+    float:                  Float;
+    for:                    For;
+    foreach:                Foreach;
+    friend:                 Friend;
+    from:                   From;
+    from_json:              FromJSON;
+    func:                   Func;
+    function:               Function;
 };
 
-export type Obj2 = {
-    DateFormatter:       DateFormatter;
-    DateOnly:            DateOnly;
-    DateOnlyConverter:   DateOnlyConverter;
-    DateTime:            DateTime;
-    DateTimeStyles:      DateTimeStyles;
-    Decoder:             Decoder;
-    DecodingError:       DecodingError;
-    Encoder:             Encoder;
-    EnumValues:          EnumValues;
-    Equatable:           Equatable;
-    False:               False;
-    FormatException:     FormatException;
-    date_parse_handling: DateParseHandling;
-    debugger:            Debugger;
-    decimal:             Decimal;
-    declare:             Declare;
-    decltype:            Decltype;
-    decode_string:       DecodeString;
-    def:                 Def;
-    default:             Default;
-    defer:               Defer;
-    deinit:              Deinit;
-    del:                 Del;
-    delegate:            Delegate;
-    delete:              Delete;
-    dict:                Dict;
-    dictionary:          Dictionary;
-    didSet:              DidSet;
-    do:                  Do;
-    double:              Double;
-    dummy:               number;
-    dynamic:             Dynamic;
-    dynamic_cast:        DynamicCast;
-    elif:                Elif;
-    else:                Else;
-    encode_quick_type:   EncodeQuickType;
-    enum:                Enum;
-    equalityContract:    EqualityContract;
-    event:               Event;
-    except:              Except;
-    exception:           Exception;
-    explicit:            Explicit;
-    export:              Export;
-    exposing:            Exposing;
-    extends:             Extends;
-    extension:           Extension;
-    extern:              Extern;
-    fallthrough:         Fallthrough;
-    false:               FalseClass;
-    fileprivate:         Fileprivate;
-    final:               Final;
-    finally:             Finally;
-    fixed:               Fixed;
-    float:               Float;
-    for:                 For;
-    foreach:             Foreach;
-    friend:              Friend;
-    from:                From;
-    from_json:           FromJSON;
-    func:                Func;
-    function:            Function;
-    get:                 Get;
-    global:              Global;
-    go:                  Go;
-    goto:                Goto;
+export type CultureInfo = {
+    CultureInfo: number;
 };
 
 export type DateFormatter = {
@@ -439,6 +443,14 @@ export type DecodingError = {
     DecodingError: number;
 };
 
+export type DeserializationFeature = {
+    DeserializationFeature: number;
+};
+
+export type DoubleNode = {
+    DoubleNode: number;
+};
+
 export type Encoder = {
     Encoder: number;
 };
@@ -463,6 +475,10 @@ export type FormatException = {
     FormatException: number;
 };
 
+export type DateClass = {
+    date: number;
+};
+
 export type DateParseHandling = {
     date_parse_handling: number;
 };
@@ -655,26 +671,11 @@ export type Function = {
     function: number;
 };
 
-export type Get = {
-    get: number;
-};
-
-export type Global = {
-    global: number;
-};
-
-export type Go = {
-    go: number;
-};
-
-export type Goto = {
-    goto: number;
-};
-
 export type Obj3 = {
     Hashable:                   Hashable;
     Hasher:                     Hasher;
     IMP:                        Imp;
+    IntNode:                    IntNode;
     IsoDateTimeOffsetConverter: ISODateTimeOffsetConverter;
     JSONAny:                    JSONAny;
     JSONCodingKey:              JSONCodingKey;
@@ -688,9 +689,13 @@ export type Obj3 = {
     JsonReader:                 JSONReader;
     JsonTokenType:              JSONTokenType;
     Locale:                     Locale;
+    LongNode:                   LongNode;
     MapEntry:                   MapEntry;
-    NO:                         No;
     dummy:                      number;
+    get:                        Get;
+    global:                     Global;
+    go:                         Go;
+    goto:                       Goto;
     guard:                      Guard;
     hasOwnProperty:             HasOwnProperty;
     hashCode:                   HashCode;
@@ -732,11 +737,6 @@ export type Obj3 = {
     mutable:                    Mutable;
     mutating:                   Mutating;
     namespace:                  Namespace;
-    native:                     Native;
-    new:                        New;
-    newtonsoft:                 Newtonsoft;
-    nil:                        Nil;
-    noexcept:                   Noexcept;
 };
 
 export type Hashable = {
@@ -751,6 +751,10 @@ export type Imp = {
     IMP: number;
 };
 
+export type IntNode = {
+    IntNode: number;
+};
+
 export type ISODateTimeOffsetConverter = {
     IsoDateTimeOffsetConverter: number;
 };
@@ -803,12 +807,28 @@ export type Locale = {
     Locale: number;
 };
 
+export type LongNode = {
+    LongNode: number;
+};
+
 export type MapEntry = {
     MapEntry: number;
 };
 
-export type No = {
-    NO: number;
+export type Get = {
+    get: number;
+};
+
+export type Global = {
+    global: number;
+};
+
+export type Go = {
+    go: number;
+};
+
+export type Goto = {
+    goto: number;
 };
 
 export type Guard = {
@@ -975,38 +995,25 @@ export type Namespace = {
     namespace: number;
 };
 
-export type Native = {
-    native: number;
-};
-
-export type New = {
-    new: number;
-};
-
-export type Newtonsoft = {
-    newtonsoft: number;
-};
-
-export type Nil = {
-    nil: number;
-};
-
-export type Noexcept = {
-    noexcept: number;
-};
-
 export type Obj4 = {
+    NO:               No;
     NSError:          NSError;
     NSObject:         NSObject;
     NSString:         NSString;
     NULL:             Null;
     None:             None;
+    NullNode:         NullNode;
     ObjectMapper:     ObjectMapper;
+    ObjectNode:       ObjectNode;
     Protocol:         Protocol;
     RegExp:           RegExpClass;
-    SEL:              Sel;
     dummy:            number;
+    native:           Native;
+    new:              New;
+    newtonsoft:       Newtonsoft;
+    nil:              Nil;
     noSuchMethod:     NoSuchMethod;
+    noexcept:         Noexcept;
     nonatomic:        Nonatomic;
     none:             NoneClass;
     nonlocal:         Nonlocal;
@@ -1054,13 +1061,10 @@ export type Obj4 = {
     restrict:         Restrict;
     retain:           Retain;
     rethrows:         Rethrows;
-    return:           Return;
-    right:            Right;
-    runtimeType:      RuntimeType;
-    s:                S;
-    sbyte:            Sbyte;
-    sealed:           Sealed;
-    select:           Select;
+};
+
+export type No = {
+    NO: number;
 };
 
 export type NSError = {
@@ -1083,10 +1087,18 @@ export type None = {
     None: number;
 };
 
+export type NullNode = {
+    NullNode: number;
+};
+
 export type ObjectMapper = {
     ObjectMapper: number;
 };
 
+export type ObjectNode = {
+    ObjectNode: number;
+};
+
 export type Protocol = {
     Protocol: number;
 };
@@ -1095,14 +1107,30 @@ export type RegExpClass = {
     RegExp: string;
 };
 
-export type Sel = {
-    SEL: number;
+export type Native = {
+    native: number;
+};
+
+export type New = {
+    new: number;
+};
+
+export type Newtonsoft = {
+    newtonsoft: number;
+};
+
+export type Nil = {
+    nil: number;
 };
 
 export type NoSuchMethod = {
     noSuchMethod: number;
 };
 
+export type Noexcept = {
+    noexcept: number;
+};
+
 export type Nonatomic = {
     nonatomic: number;
 };
@@ -1291,100 +1319,76 @@ export type Rethrows = {
     rethrows: number;
 };
 
-export type Return = {
-    return: number;
-};
-
-export type Right = {
-    right: number;
-};
-
-export type RuntimeType = {
-    runtimeType: number;
-};
-
-export type S = {
-    s: number;
-};
-
-export type Sbyte = {
-    sbyte: number;
-};
-
-export type Sealed = {
-    sealed: number;
-};
-
-export type Select = {
-    select: number;
+export type Obj5 = {
+    SEL:                  Sel;
+    Self:                 Self;
+    Sendable:             Sendable;
+    SerializationFeature: SerializationFeature;
+    SerializerProvider:   SerializerProvider;
+    SimpleModule:         SimpleModule;
+    Standards:            Standards;
+    StdDeserializer:      StdDeserializer;
+    StdSerializer:        StdSerializer;
+    TextNode:             TextNode;
+    TimeOnly:             TimeOnly;
+    TimeOnlyConverter:    TimeOnlyConverter;
+    TimeZone:             TimeZone;
+    True:                 True;
+    Type:                 Type;
+    dummy:                number;
+    return:               Return;
+    right:                Right;
+    runtimeType:          RuntimeType;
+    s:                    S;
+    sbyte:                Sbyte;
+    sealed:               Sealed;
+    select:               Select;
+    self:                 SelfClass;
+    serialize:            Serialize;
+    set:                  Set;
+    short:                Short;
+    signed:               Signed;
+    sizeof:               Sizeof;
+    stackalloc:           Stackalloc;
+    static:               Static;
+    static_assert:        StaticAssert;
+    static_cast:          StaticCast;
+    strictfp:             Strictfp;
+    string:               StringClass;
+    struct:               Struct;
+    subscript:            Subscript;
+    super:                Super;
+    switch:               Switch;
+    symbol:               Symbol;
+    synchronized:         Synchronized;
+    system:               System;
+    template:             Template;
+    then:                 Then;
+    this:                 This;
+    thread_local:         ThreadLocal;
+    throw:                Throw;
+    throws:               Throws;
+    toString:             ToString;
+    to_json:              ToJSON;
+    top_level:            TopLevelClass;
+    transient:            Transient;
+    true:                 TrueClass;
+    try:                  Try;
+    type:                 TypeClass;
+    typealias:            Typealias;
+    typedef:              Typedef;
+    typeid:               Typeid;
+    typename:             Typename;
+    typeof:               Typeof;
+    uint:                 Uint;
+    ulong:                Ulong;
+    unchecked:            Unchecked;
+    undefined:            Undefined;
+    union:                Union;
 };
 
-export type Obj5 = {
-    Self:               Self;
-    Sendable:           Sendable;
-    SerializerProvider: SerializerProvider;
-    SimpleModule:       SimpleModule;
-    Standards:          Standards;
-    StdDeserializer:    StdDeserializer;
-    StdSerializer:      StdSerializer;
-    TimeOnly:           TimeOnly;
-    TimeOnlyConverter:  TimeOnlyConverter;
-    TimeZone:           TimeZone;
-    True:               True;
-    Type:               Type;
-    UUID:               UUID;
-    Utf8JsonReader:     Utf8JSONReader;
-    Utf8JsonWriter:     Utf8JSONWriter;
-    dummy:              number;
-    self:               SelfClass;
-    serialize:          Serialize;
-    set:                Set;
-    short:              Short;
-    signed:             Signed;
-    sizeof:             Sizeof;
-    stackalloc:         Stackalloc;
-    static:             Static;
-    static_assert:      StaticAssert;
-    static_cast:        StaticCast;
-    strictfp:           Strictfp;
-    string:             StringClass;
-    struct:             Struct;
-    subscript:          Subscript;
-    super:              Super;
-    switch:             Switch;
-    symbol:             Symbol;
-    synchronized:       Synchronized;
-    system:             System;
-    template:           Template;
-    then:               Then;
-    this:               This;
-    thread_local:       ThreadLocal;
-    throw:              Throw;
-    throws:             Throws;
-    toString:           ToString;
-    to_json:            ToJSON;
-    top_level:          TopLevelClass;
-    transient:          Transient;
-    true:               TrueClass;
-    try:                Try;
-    type:               TypeClass;
-    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;
-    var:                Var;
-    virtual:            Virtual;
+export type Sel = {
+    SEL: number;
 };
 
 export type Self = {
@@ -1395,6 +1399,10 @@ export type Sendable = {
     Sendable: number;
 };
 
+export type SerializationFeature = {
+    SerializationFeature: number;
+};
+
 export type SerializerProvider = {
     SerializerProvider: number;
 };
@@ -1415,6 +1423,10 @@ export type StdSerializer = {
     StdSerializer: number;
 };
 
+export type TextNode = {
+    TextNode: number;
+};
+
 export type TimeOnly = {
     TimeOnly: number;
 };
@@ -1435,16 +1447,32 @@ export type Type = {
     Type: number;
 };
 
-export type UUID = {
-    UUID: number;
+export type Return = {
+    return: number;
 };
 
-export type Utf8JSONReader = {
-    Utf8JsonReader: number;
+export type Right = {
+    right: number;
 };
 
-export type Utf8JSONWriter = {
-    Utf8JsonWriter: number;
+export type RuntimeType = {
+    runtimeType: number;
+};
+
+export type S = {
+    s: number;
+};
+
+export type Sbyte = {
+    sbyte: number;
+};
+
+export type Sealed = {
+    sealed: number;
+};
+
+export type Select = {
+    select: number;
 };
 
 export type SelfClass = {
@@ -1615,6 +1643,48 @@ export type Union = {
     union: number;
 };
 
+export type Obj6 = {
+    UUID:           UUID;
+    Utf8JsonReader: Utf8JSONReader;
+    Utf8JsonWriter: Utf8JSONWriter;
+    YES:            Yes;
+    dummy:          number;
+    unowned:        Unowned;
+    unsafe:         Unsafe;
+    unsigned:       Unsigned;
+    ushort:         Ushort;
+    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 UUID = {
+    UUID: number;
+};
+
+export type Utf8JSONReader = {
+    Utf8JsonReader: number;
+};
+
+export type Utf8JSONWriter = {
+    Utf8JsonWriter: number;
+};
+
+export type Yes = {
+    YES: number;
+};
+
 export type Unowned = {
     unowned: number;
 };
@@ -1643,26 +1713,6 @@ export type Virtual = {
     virtual: 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 Yes = {
-    YES: number;
-};
-
 export type Void = {
     void: number;
 };
@@ -1904,13 +1954,14 @@ const typeMap: any = {
     ], false),
     "Obj1": o([
         { json: "Any", js: "Any", typ: r("Any") },
+        { json: "ArrayNode", js: "ArrayNode", typ: r("ArrayNode") },
         { json: "BOOL", js: "BOOL", typ: r("Bool") },
+        { json: "BooleanNode", js: "BooleanNode", typ: r("BooleanNode") },
         { json: "Calendar", js: "Calendar", typ: r("Calendar") },
         { json: "Class", js: "Class", typ: r("ClassClass") },
         { json: "Codable", js: "Codable", typ: r("Codable") },
         { json: "CodingKey", js: "CodingKey", typ: r("CodingKey") },
         { json: "CodingKeys", js: "CodingKeys", typ: r("CodingKeys") },
-        { json: "CultureInfo", js: "CultureInfo", typ: r("CultureInfo") },
         { json: "_", js: "_", typ: r("Empty") },
         { json: "_Bool", js: "_Bool", typ: r("BoolClass") },
         { json: "_Complex", js: "_Complex", typ: r("Complex") },
@@ -1966,15 +2017,20 @@ const typeMap: any = {
         { json: "convenience", js: "convenience", typ: r("Convenience") },
         { json: "convert", js: "convert", typ: r("Convert") },
         { json: "converter", js: "converter", typ: r("Converter") },
-        { json: "date", js: "date", typ: r("DateClass") },
         { json: "dummy", js: "dummy", typ: i(0) },
     ], false),
     "Any": o([
         { json: "Any", js: "Any", typ: i(0) },
     ], false),
+    "ArrayNode": o([
+        { json: "ArrayNode", js: "ArrayNode", typ: i(0) },
+    ], false),
     "Bool": o([
         { json: "BOOL", js: "BOOL", typ: i(0) },
     ], false),
+    "BooleanNode": o([
+        { json: "BooleanNode", js: "BooleanNode", typ: i(0) },
+    ], false),
     "Calendar": o([
         { json: "Calendar", js: "Calendar", typ: i(0) },
     ], false),
@@ -1990,9 +2046,6 @@ const typeMap: any = {
     "CodingKeys": o([
         { json: "CodingKeys", js: "CodingKeys", typ: i(0) },
     ], false),
-    "CultureInfo": o([
-        { json: "CultureInfo", js: "CultureInfo", typ: i(0) },
-    ], false),
     "Empty": o([
         { json: "_", js: "_", typ: i(0) },
     ], false),
@@ -2158,10 +2211,8 @@ const typeMap: any = {
     "Converter": o([
         { json: "converter", js: "converter", typ: i(0) },
     ], false),
-    "DateClass": o([
-        { json: "date", js: "date", typ: i(0) },
-    ], false),
     "Obj2": o([
+        { json: "CultureInfo", js: "CultureInfo", typ: r("CultureInfo") },
         { json: "DateFormatter", js: "DateFormatter", typ: r("DateFormatter") },
         { json: "DateOnly", js: "DateOnly", typ: r("DateOnly") },
         { json: "DateOnlyConverter", js: "DateOnlyConverter", typ: r("DateOnlyConverter") },
@@ -2169,11 +2220,14 @@ const typeMap: any = {
         { json: "DateTimeStyles", js: "DateTimeStyles", typ: r("DateTimeStyles") },
         { json: "Decoder", js: "Decoder", typ: r("Decoder") },
         { json: "DecodingError", js: "DecodingError", typ: r("DecodingError") },
+        { json: "DeserializationFeature", js: "DeserializationFeature", typ: r("DeserializationFeature") },
+        { json: "DoubleNode", js: "DoubleNode", typ: r("DoubleNode") },
         { json: "Encoder", js: "Encoder", typ: r("Encoder") },
         { json: "EnumValues", js: "EnumValues", typ: r("EnumValues") },
         { json: "Equatable", js: "Equatable", typ: r("Equatable") },
         { json: "False", js: "False", typ: r("False") },
         { json: "FormatException", js: "FormatException", typ: r("FormatException") },
+        { json: "date", js: "date", typ: r("DateClass") },
         { json: "date_parse_handling", js: "date_parse_handling", typ: r("DateParseHandling") },
         { json: "debugger", js: "debugger", typ: r("Debugger") },
         { json: "decimal", js: "decimal", typ: r("Decimal") },
@@ -2223,10 +2277,9 @@ const typeMap: any = {
         { json: "from_json", js: "from_json", typ: r("FromJSON") },
         { json: "func", js: "func", typ: r("Func") },
         { json: "function", js: "function", typ: r("Function") },
-        { json: "get", js: "get", typ: r("Get") },
-        { json: "global", js: "global", typ: r("Global") },
-        { json: "go", js: "go", typ: r("Go") },
-        { json: "goto", js: "goto", typ: r("Goto") },
+    ], false),
+    "CultureInfo": o([
+        { json: "CultureInfo", js: "CultureInfo", typ: i(0) },
     ], false),
     "DateFormatter": o([
         { json: "DateFormatter", js: "DateFormatter", typ: i(0) },
@@ -2249,6 +2302,12 @@ const typeMap: any = {
     "DecodingError": o([
         { json: "DecodingError", js: "DecodingError", typ: i(0) },
     ], false),
+    "DeserializationFeature": o([
+        { json: "DeserializationFeature", js: "DeserializationFeature", typ: i(0) },
+    ], false),
+    "DoubleNode": o([
+        { json: "DoubleNode", js: "DoubleNode", typ: i(0) },
+    ], false),
     "Encoder": o([
         { json: "Encoder", js: "Encoder", typ: i(0) },
     ], false),
@@ -2264,6 +2323,9 @@ const typeMap: any = {
     "FormatException": o([
         { json: "FormatException", js: "FormatException", typ: i(0) },
     ], false),
+    "DateClass": o([
+        { json: "date", js: "date", typ: i(0) },
+    ], false),
     "DateParseHandling": o([
         { json: "date_parse_handling", js: "date_parse_handling", typ: i(0) },
     ], false),
@@ -2408,22 +2470,11 @@ const typeMap: any = {
     "Function": o([
         { json: "function", js: "function", typ: i(0) },
     ], false),
-    "Get": o([
-        { json: "get", js: "get", typ: i(0) },
-    ], false),
-    "Global": o([
-        { json: "global", js: "global", typ: i(0) },
-    ], false),
-    "Go": o([
-        { json: "go", js: "go", typ: i(0) },
-    ], false),
-    "Goto": o([
-        { json: "goto", js: "goto", typ: i(0) },
-    ], false),
     "Obj3": o([
         { json: "Hashable", js: "Hashable", typ: r("Hashable") },
         { json: "Hasher", js: "Hasher", typ: r("Hasher") },
         { json: "IMP", js: "IMP", typ: r("Imp") },
+        { json: "IntNode", js: "IntNode", typ: r("IntNode") },
         { json: "IsoDateTimeOffsetConverter", js: "IsoDateTimeOffsetConverter", typ: r("ISODateTimeOffsetConverter") },
         { json: "JSONAny", js: "JSONAny", typ: r("JSONAny") },
         { json: "JSONCodingKey", js: "JSONCodingKey", typ: r("JSONCodingKey") },
@@ -2437,9 +2488,13 @@ const typeMap: any = {
         { json: "JsonReader", js: "JsonReader", typ: r("JSONReader") },
         { json: "JsonTokenType", js: "JsonTokenType", typ: r("JSONTokenType") },
         { json: "Locale", js: "Locale", typ: r("Locale") },
+        { json: "LongNode", js: "LongNode", typ: r("LongNode") },
         { json: "MapEntry", js: "MapEntry", typ: r("MapEntry") },
-        { json: "NO", js: "NO", typ: r("No") },
         { json: "dummy", js: "dummy", typ: i(0) },
+        { json: "get", js: "get", typ: r("Get") },
+        { json: "global", js: "global", typ: r("Global") },
+        { json: "go", js: "go", typ: r("Go") },
+        { json: "goto", js: "goto", typ: r("Goto") },
         { json: "guard", js: "guard", typ: r("Guard") },
         { json: "hasOwnProperty", js: "hasOwnProperty", typ: r("HasOwnProperty") },
         { json: "hashCode", js: "hashCode", typ: r("HashCode") },
@@ -2481,11 +2536,6 @@ const typeMap: any = {
         { json: "mutable", js: "mutable", typ: r("Mutable") },
         { json: "mutating", js: "mutating", typ: r("Mutating") },
         { json: "namespace", js: "namespace", typ: r("Namespace") },
-        { json: "native", js: "native", typ: r("Native") },
-        { json: "new", js: "new", typ: r("New") },
-        { json: "newtonsoft", js: "newtonsoft", typ: r("Newtonsoft") },
-        { json: "nil", js: "nil", typ: r("Nil") },
-        { json: "noexcept", js: "noexcept", typ: r("Noexcept") },
     ], false),
     "Hashable": o([
         { json: "Hashable", js: "Hashable", typ: i(0) },
@@ -2496,6 +2546,9 @@ const typeMap: any = {
     "Imp": o([
         { json: "IMP", js: "IMP", typ: i(0) },
     ], false),
+    "IntNode": o([
+        { json: "IntNode", js: "IntNode", typ: i(0) },
+    ], false),
     "ISODateTimeOffsetConverter": o([
         { json: "IsoDateTimeOffsetConverter", js: "IsoDateTimeOffsetConverter", typ: i(0) },
     ], false),
@@ -2535,11 +2588,23 @@ const typeMap: any = {
     "Locale": o([
         { json: "Locale", js: "Locale", typ: i(0) },
     ], false),
+    "LongNode": o([
+        { json: "LongNode", js: "LongNode", typ: i(0) },
+    ], false),
     "MapEntry": o([
         { json: "MapEntry", js: "MapEntry", typ: i(0) },
     ], false),
-    "No": o([
-        { json: "NO", js: "NO", typ: i(0) },
+    "Get": o([
+        { json: "get", js: "get", typ: i(0) },
+    ], false),
+    "Global": o([
+        { json: "global", js: "global", typ: i(0) },
+    ], false),
+    "Go": o([
+        { json: "go", js: "go", typ: i(0) },
+    ], false),
+    "Goto": o([
+        { json: "goto", js: "goto", typ: i(0) },
     ], false),
     "Guard": o([
         { json: "guard", js: "guard", typ: i(0) },
@@ -2664,33 +2729,25 @@ const typeMap: any = {
     "Namespace": o([
         { json: "namespace", js: "namespace", typ: i(0) },
     ], false),
-    "Native": o([
-        { json: "native", js: "native", typ: i(0) },
-    ], false),
-    "New": o([
-        { json: "new", js: "new", typ: i(0) },
-    ], false),
-    "Newtonsoft": o([
-        { json: "newtonsoft", js: "newtonsoft", typ: i(0) },
-    ], false),
-    "Nil": o([
-        { json: "nil", js: "nil", typ: i(0) },
-    ], false),
-    "Noexcept": o([
-        { json: "noexcept", js: "noexcept", typ: i(0) },
-    ], false),
     "Obj4": o([
+        { json: "NO", js: "NO", typ: r("No") },
         { json: "NSError", js: "NSError", typ: r("NSError") },
         { json: "NSObject", js: "NSObject", typ: r("NSObject") },
         { json: "NSString", js: "NSString", typ: r("NSString") },
         { json: "NULL", js: "NULL", typ: r("Null") },
         { json: "None", js: "None", typ: r("None") },
+        { json: "NullNode", js: "NullNode", typ: r("NullNode") },
         { json: "ObjectMapper", js: "ObjectMapper", typ: r("ObjectMapper") },
+        { json: "ObjectNode", js: "ObjectNode", typ: r("ObjectNode") },
         { json: "Protocol", js: "Protocol", typ: r("Protocol") },
         { json: "RegExp", js: "RegExp", typ: r("RegExpClass") },
-        { json: "SEL", js: "SEL", typ: r("Sel") },
         { json: "dummy", js: "dummy", typ: i(0) },
+        { json: "native", js: "native", typ: r("Native") },
+        { json: "new", js: "new", typ: r("New") },
+        { json: "newtonsoft", js: "newtonsoft", typ: r("Newtonsoft") },
+        { json: "nil", js: "nil", typ: r("Nil") },
         { json: "noSuchMethod", js: "noSuchMethod", typ: r("NoSuchMethod") },
+        { json: "noexcept", js: "noexcept", typ: r("Noexcept") },
         { json: "nonatomic", js: "nonatomic", typ: r("Nonatomic") },
         { json: "none", js: "none", typ: r("NoneClass") },
         { json: "nonlocal", js: "nonlocal", typ: r("Nonlocal") },
@@ -2738,13 +2795,9 @@ const typeMap: any = {
         { json: "restrict", js: "restrict", typ: r("Restrict") },
         { json: "retain", js: "retain", typ: r("Retain") },
         { json: "rethrows", js: "rethrows", typ: r("Rethrows") },
-        { json: "return", js: "return", typ: r("Return") },
-        { json: "right", js: "right", typ: r("Right") },
-        { json: "runtimeType", js: "runtimeType", typ: r("RuntimeType") },
-        { json: "s", js: "s", typ: r("S") },
-        { json: "sbyte", js: "sbyte", typ: r("Sbyte") },
-        { json: "sealed", js: "sealed", typ: r("Sealed") },
-        { json: "select", js: "select", typ: r("Select") },
+    ], false),
+    "No": o([
+        { json: "NO", js: "NO", typ: i(0) },
     ], false),
     "NSError": o([
         { json: "NSError", js: "NSError", typ: i(0) },
@@ -2761,21 +2814,39 @@ const typeMap: any = {
     "None": o([
         { json: "None", js: "None", typ: i(0) },
     ], false),
+    "NullNode": o([
+        { json: "NullNode", js: "NullNode", typ: i(0) },
+    ], false),
     "ObjectMapper": o([
         { json: "ObjectMapper", js: "ObjectMapper", typ: i(0) },
     ], false),
+    "ObjectNode": o([
+        { json: "ObjectNode", js: "ObjectNode", typ: i(0) },
+    ], false),
     "Protocol": o([
         { json: "Protocol", js: "Protocol", typ: i(0) },
     ], false),
     "RegExpClass": o([
         { json: "RegExp", js: "RegExp", typ: { uuid: "" } },
     ], false),
-    "Sel": o([
-        { json: "SEL", js: "SEL", typ: i(0) },
+    "Native": o([
+        { json: "native", js: "native", typ: i(0) },
+    ], false),
+    "New": o([
+        { json: "new", js: "new", typ: i(0) },
+    ], false),
+    "Newtonsoft": o([
+        { json: "newtonsoft", js: "newtonsoft", typ: i(0) },
+    ], false),
+    "Nil": o([
+        { json: "nil", js: "nil", typ: i(0) },
     ], false),
     "NoSuchMethod": o([
         { json: "noSuchMethod", js: "noSuchMethod", typ: i(0) },
     ], false),
+    "Noexcept": o([
+        { json: "noexcept", js: "noexcept", typ: i(0) },
+    ], false),
     "Nonatomic": o([
         { json: "nonatomic", js: "nonatomic", typ: i(0) },
     ], false),
@@ -2917,44 +2988,30 @@ const typeMap: any = {
     "Rethrows": o([
         { json: "rethrows", js: "rethrows", typ: i(0) },
     ], false),
-    "Return": o([
-        { json: "return", js: "return", typ: i(0) },
-    ], false),
-    "Right": o([
-        { json: "right", js: "right", typ: i(0) },
-    ], false),
-    "RuntimeType": o([
-        { json: "runtimeType", js: "runtimeType", typ: i(0) },
-    ], false),
-    "S": o([
-        { json: "s", js: "s", typ: i(0) },
-    ], false),
-    "Sbyte": o([
-        { json: "sbyte", js: "sbyte", typ: i(0) },
-    ], false),
-    "Sealed": o([
-        { json: "sealed", js: "sealed", typ: i(0) },
-    ], false),
-    "Select": o([
-        { json: "select", js: "select", typ: i(0) },
-    ], false),
     "Obj5": o([
+        { json: "SEL", js: "SEL", typ: r("Sel") },
         { json: "Self", js: "Self", typ: r("Self") },
         { json: "Sendable", js: "Sendable", typ: r("Sendable") },
+        { json: "SerializationFeature", js: "SerializationFeature", typ: r("SerializationFeature") },
         { json: "SerializerProvider", js: "SerializerProvider", typ: r("SerializerProvider") },
         { json: "SimpleModule", js: "SimpleModule", typ: r("SimpleModule") },
         { json: "Standards", js: "Standards", typ: r("Standards") },
         { json: "StdDeserializer", js: "StdDeserializer", typ: r("StdDeserializer") },
         { json: "StdSerializer", js: "StdSerializer", typ: r("StdSerializer") },
+        { json: "TextNode", js: "TextNode", typ: r("TextNode") },
         { json: "TimeOnly", js: "TimeOnly", typ: r("TimeOnly") },
         { json: "TimeOnlyConverter", js: "TimeOnlyConverter", typ: r("TimeOnlyConverter") },
         { 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: "dummy", js: "dummy", typ: i(0) },
+        { json: "return", js: "return", typ: r("Return") },
+        { json: "right", js: "right", typ: r("Right") },
+        { json: "runtimeType", js: "runtimeType", typ: r("RuntimeType") },
+        { json: "s", js: "s", typ: r("S") },
+        { json: "sbyte", js: "sbyte", typ: r("Sbyte") },
+        { json: "sealed", js: "sealed", typ: r("Sealed") },
+        { json: "select", js: "select", typ: r("Select") },
         { json: "self", js: "self", typ: r("SelfClass") },
         { json: "serialize", js: "serialize", typ: r("Serialize") },
         { json: "set", js: "set", typ: r("Set") },
@@ -2997,13 +3054,9 @@ const typeMap: any = {
         { json: "unchecked", js: "unchecked", typ: r("Unchecked") },
         { json: "undefined", js: "undefined", typ: r("Undefined") },
         { json: "union", js: "union", typ: r("Union") },
-        { json: "unowned", js: "unowned", typ: r("Unowned") },
-        { 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),
+    "Sel": o([
+        { json: "SEL", js: "SEL", typ: i(0) },
     ], false),
     "Self": o([
         { json: "Self", js: "Self", typ: i(0) },
@@ -3011,6 +3064,9 @@ const typeMap: any = {
     "Sendable": o([
         { json: "Sendable", js: "Sendable", typ: i(0) },
     ], false),
+    "SerializationFeature": o([
+        { json: "SerializationFeature", js: "SerializationFeature", typ: i(0) },
+    ], false),
     "SerializerProvider": o([
         { json: "SerializerProvider", js: "SerializerProvider", typ: i(0) },
     ], false),
@@ -3026,6 +3082,9 @@ const typeMap: any = {
     "StdSerializer": o([
         { json: "StdSerializer", js: "StdSerializer", typ: i(0) },
     ], false),
+    "TextNode": o([
+        { json: "TextNode", js: "TextNode", typ: i(0) },
+    ], false),
     "TimeOnly": o([
         { json: "TimeOnly", js: "TimeOnly", typ: i(0) },
     ], false),
@@ -3041,14 +3100,26 @@ const typeMap: any = {
     "Type": o([
         { json: "Type", js: "Type", typ: i(0) },
     ], false),
-    "UUID": o([
-        { json: "UUID", js: "UUID", typ: i(0) },
+    "Return": o([
+        { json: "return", js: "return", typ: i(0) },
     ], false),
-    "Utf8JSONReader": o([
-        { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: i(0) },
+    "Right": o([
+        { json: "right", js: "right", typ: i(0) },
     ], false),
-    "Utf8JSONWriter": o([
-        { json: "Utf8JsonWriter", js: "Utf8JsonWriter", typ: i(0) },
+    "RuntimeType": o([
+        { json: "runtimeType", js: "runtimeType", typ: i(0) },
+    ], false),
+    "S": o([
+        { json: "s", js: "s", typ: i(0) },
+    ], false),
+    "Sbyte": o([
+        { json: "sbyte", js: "sbyte", typ: i(0) },
+    ], false),
+    "Sealed": o([
+        { json: "sealed", js: "sealed", typ: i(0) },
+    ], false),
+    "Select": o([
+        { json: "select", js: "select", typ: i(0) },
     ], false),
     "SelfClass": o([
         { json: "self", js: "self", typ: i(0) },
@@ -3176,6 +3247,43 @@ const typeMap: any = {
     "Union": o([
         { json: "union", js: "union", 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: "unowned", js: "unowned", typ: r("Unowned") },
+        { 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") },
+        { json: "void", js: "void", typ: r("Void") },
+        { json: "volatile", js: "volatile", typ: r("Volatile") },
+        { json: "wchar_t", js: "wchar_t", typ: r("WcharT") },
+        { json: "weak", js: "weak", typ: r("Weak") },
+        { json: "where", js: "where", typ: r("Where") },
+        { json: "while", js: "while", typ: r("While") },
+        { json: "willSet", js: "willSet", typ: r("WillSet") },
+        { json: "with", js: "with", typ: r("With") },
+        { json: "xor", js: "xor", typ: r("Xor") },
+        { 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),
     "Unowned": o([
         { json: "unowned", js: "unowned", typ: i(0) },
     ], false),
@@ -3197,24 +3305,6 @@ const typeMap: any = {
     "Virtual": o([
         { json: "virtual", js: "virtual", typ: i(0) },
     ], false),
-    "Obj6": o([
-        { json: "YES", js: "YES", typ: r("Yes") },
-        { json: "dummy", js: "dummy", typ: i(0) },
-        { json: "void", js: "void", typ: r("Void") },
-        { json: "volatile", js: "volatile", typ: r("Volatile") },
-        { json: "wchar_t", js: "wchar_t", typ: r("WcharT") },
-        { json: "weak", js: "weak", typ: r("Weak") },
-        { json: "where", js: "where", typ: r("Where") },
-        { json: "while", js: "while", typ: r("While") },
-        { json: "willSet", js: "willSet", typ: r("WillSet") },
-        { json: "with", js: "with", typ: r("With") },
-        { json: "xor", js: "xor", typ: r("Xor") },
-        { json: "xor_eq", js: "xor_eq", typ: r("XorEq") },
-        { json: "yield", js: "yield", typ: r("Yield") },
-    ], false),
-    "Yes": o([
-        { json: "YES", js: "YES", 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..9ca6ceb 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
@@ -39,6 +39,7 @@ type Obj1 struct {
 	AndEq          AndEq          `json:"and_eq"`
 	Any            Any            `json:"Any"`
 	Array          Array          `json:"array"`
+	ArrayNode      ArrayNode      `json:"ArrayNode"`
 	As             As             `json:"as"`
 	Assert         Assert         `json:"assert"`
 	Associatedtype Associatedtype `json:"associatedtype"`
@@ -55,6 +56,7 @@ type Obj1 struct {
 	Bitor          Bitor          `json:"bitor"`
 	Bool           Bool           `json:"BOOL"`
 	Boolean        Boolean        `json:"boolean"`
+	BooleanNode    BooleanNode    `json:"BooleanNode"`
 	Break          Break          `json:"break"`
 	Bycopy         Bycopy         `json:"bycopy"`
 	Byref          Byref          `json:"byref"`
@@ -87,8 +89,6 @@ type Obj1 struct {
 	Convenience    Convenience    `json:"convenience"`
 	Convert        Convert        `json:"convert"`
 	Converter      Converter      `json:"converter"`
-	CultureInfo    CultureInfo    `json:"CultureInfo"`
-	Date           Date           `json:"date"`
 	Dummy          int64          `json:"dummy"`
 	Empty          Empty          `json:"_"`
 	Imaginery      Imaginery      `json:"_Imaginery"`
@@ -130,6 +130,10 @@ type Array struct {
 	Array int64 `json:"array"`
 }
 
+type ArrayNode struct {
+	ArrayNode int64 `json:"ArrayNode"`
+}
+
 type As struct {
 	As int64 `json:"as"`
 }
@@ -194,6 +198,10 @@ type Boolean struct {
 	Boolean int64 `json:"boolean"`
 }
 
+type BooleanNode struct {
+	BooleanNode int64 `json:"BooleanNode"`
+}
+
 type Break struct {
 	Break int64 `json:"break"`
 }
@@ -322,14 +330,6 @@ type Converter struct {
 	Converter int64 `json:"converter"`
 }
 
-type CultureInfo struct {
-	CultureInfo int64 `json:"CultureInfo"`
-}
-
-type Date struct {
-	Date int64 `json:"date"`
-}
-
 type Empty struct {
 	Empty int64 `json:"_"`
 }
@@ -355,71 +355,79 @@ type Obj1Bool struct {
 }
 
 type Obj2 struct {
-	DateFormatter     DateFormatter     `json:"DateFormatter"`
-	DateOnly          DateOnly          `json:"DateOnly"`
-	DateOnlyConverter DateOnlyConverter `json:"DateOnlyConverter"`
-	DateParseHandling DateParseHandling `json:"date_parse_handling"`
-	DateTime          DateTime          `json:"DateTime"`
-	DateTimeStyles    DateTimeStyles    `json:"DateTimeStyles"`
-	Debugger          Debugger          `json:"debugger"`
-	Decimal           Decimal           `json:"decimal"`
-	Declare           Declare           `json:"declare"`
-	Decltype          Decltype          `json:"decltype"`
-	DecodeString      DecodeString      `json:"decode_string"`
-	Decoder           Decoder           `json:"Decoder"`
-	DecodingError     DecodingError     `json:"DecodingError"`
-	Def               Def               `json:"def"`
-	Default           Default           `json:"default"`
-	Defer             Defer             `json:"defer"`
-	Deinit            Deinit            `json:"deinit"`
-	Del               Del               `json:"del"`
-	Delegate          Delegate          `json:"delegate"`
-	Delete            Delete            `json:"delete"`
-	Dict              Dict              `json:"dict"`
-	Dictionary        Dictionary        `json:"dictionary"`
-	DidSet            DidSet            `json:"didSet"`
-	Do                Do                `json:"do"`
-	Double            Double            `json:"double"`
-	Dummy             int64             `json:"dummy"`
-	Dynamic           Dynamic           `json:"dynamic"`
-	DynamicCast       DynamicCast       `json:"dynamic_cast"`
-	Elif              Elif              `json:"elif"`
-	Else              Else              `json:"else"`
-	EncodeQuickType   EncodeQuickType   `json:"encode_quick_type"`
-	Encoder           Encoder           `json:"Encoder"`
-	Enum              Enum              `json:"enum"`
-	EnumValues        EnumValues        `json:"EnumValues"`
-	EqualityContract  EqualityContract  `json:"equalityContract"`
-	Equatable         Equatable         `json:"Equatable"`
-	Event             Event             `json:"event"`
-	Except            Except            `json:"except"`
-	Exception         Exception         `json:"exception"`
-	Explicit          Explicit          `json:"explicit"`
-	Export            Export            `json:"export"`
-	Exposing          Exposing          `json:"exposing"`
-	Extends           Extends           `json:"extends"`
-	Extension         Extension         `json:"extension"`
-	Extern            Extern            `json:"extern"`
-	Fallthrough       Fallthrough       `json:"fallthrough"`
-	False             False             `json:"False"`
-	Fileprivate       Fileprivate       `json:"fileprivate"`
-	Final             Final             `json:"final"`
-	Finally           Finally           `json:"finally"`
-	Fixed             Fixed             `json:"fixed"`
-	Float             Float             `json:"float"`
-	For               For               `json:"for"`
-	Foreach           Foreach           `json:"foreach"`
-	FormatException   FormatException   `json:"FormatException"`
-	Friend            Friend            `json:"friend"`
-	From              From              `json:"from"`
-	FromJSON          FromJSON          `json:"from_json"`
-	Func              Func              `json:"func"`
-	Function          Function          `json:"function"`
-	Get               Get               `json:"get"`
-	Global            Global            `json:"global"`
-	Go                Go                `json:"go"`
-	Goto              Goto              `json:"goto"`
-	Obj2False         FalseClass        `json:"false"`
+	CultureInfo            CultureInfo            `json:"CultureInfo"`
+	Date                   Date                   `json:"date"`
+	DateFormatter          DateFormatter          `json:"DateFormatter"`
+	DateOnly               DateOnly               `json:"DateOnly"`
+	DateOnlyConverter      DateOnlyConverter      `json:"DateOnlyConverter"`
+	DateParseHandling      DateParseHandling      `json:"date_parse_handling"`
+	DateTime               DateTime               `json:"DateTime"`
+	DateTimeStyles         DateTimeStyles         `json:"DateTimeStyles"`
+	Debugger               Debugger               `json:"debugger"`
+	Decimal                Decimal                `json:"decimal"`
+	Declare                Declare                `json:"declare"`
+	Decltype               Decltype               `json:"decltype"`
+	DecodeString           DecodeString           `json:"decode_string"`
+	Decoder                Decoder                `json:"Decoder"`
+	DecodingError          DecodingError          `json:"DecodingError"`
+	Def                    Def                    `json:"def"`
+	Default                Default                `json:"default"`
+	Defer                  Defer                  `json:"defer"`
+	Deinit                 Deinit                 `json:"deinit"`
+	Del                    Del                    `json:"del"`
+	Delegate               Delegate               `json:"delegate"`
+	Delete                 Delete                 `json:"delete"`
+	DeserializationFeature DeserializationFeature `json:"DeserializationFeature"`
+	Dict                   Dict                   `json:"dict"`
+	Dictionary             Dictionary             `json:"dictionary"`
+	DidSet                 DidSet                 `json:"didSet"`
+	Do                     Do                     `json:"do"`
+	Double                 Double                 `json:"double"`
+	DoubleNode             DoubleNode             `json:"DoubleNode"`
+	Dummy                  int64                  `json:"dummy"`
+	Dynamic                Dynamic                `json:"dynamic"`
+	DynamicCast            DynamicCast            `json:"dynamic_cast"`
+	Elif                   Elif                   `json:"elif"`
+	Else                   Else                   `json:"else"`
+	EncodeQuickType        EncodeQuickType        `json:"encode_quick_type"`
+	Encoder                Encoder                `json:"Encoder"`
+	Enum                   Enum                   `json:"enum"`
+	EnumValues             EnumValues             `json:"EnumValues"`
+	EqualityContract       EqualityContract       `json:"equalityContract"`
+	Equatable              Equatable              `json:"Equatable"`
+	Event                  Event                  `json:"event"`
+	Except                 Except                 `json:"except"`
+	Exception              Exception              `json:"exception"`
+	Explicit               Explicit               `json:"explicit"`
+	Export                 Export                 `json:"export"`
+	Exposing               Exposing               `json:"exposing"`
+	Extends                Extends                `json:"extends"`
+	Extension              Extension              `json:"extension"`
+	Extern                 Extern                 `json:"extern"`
+	Fallthrough            Fallthrough            `json:"fallthrough"`
+	False                  False                  `json:"False"`
+	Fileprivate            Fileprivate            `json:"fileprivate"`
+	Final                  Final                  `json:"final"`
+	Finally                Finally                `json:"finally"`
+	Fixed                  Fixed                  `json:"fixed"`
+	Float                  Float                  `json:"float"`
+	For                    For                    `json:"for"`
+	Foreach                Foreach                `json:"foreach"`
+	FormatException        FormatException        `json:"FormatException"`
+	Friend                 Friend                 `json:"friend"`
+	From                   From                   `json:"from"`
+	FromJSON               FromJSON               `json:"from_json"`
+	Func                   Func                   `json:"func"`
+	Function               Function               `json:"function"`
+	Obj2False              FalseClass             `json:"false"`
+}
+
+type CultureInfo struct {
+	CultureInfo int64 `json:"CultureInfo"`
+}
+
+type Date struct {
+	Date int64 `json:"date"`
 }
 
 type DateFormatter struct {
@@ -502,6 +510,10 @@ type Delete struct {
 	Delete int64 `json:"delete"`
 }
 
+type DeserializationFeature struct {
+	DeserializationFeature int64 `json:"DeserializationFeature"`
+}
+
 type Dict struct {
 	Dict int64 `json:"dict"`
 }
@@ -522,6 +534,10 @@ type Double struct {
 	Double int64 `json:"double"`
 }
 
+type DoubleNode struct {
+	DoubleNode int64 `json:"DoubleNode"`
+}
+
 type Dynamic struct {
 	Dynamic int64 `json:"dynamic"`
 }
@@ -658,28 +674,16 @@ type Function struct {
 	Function int64 `json:"function"`
 }
 
-type Get struct {
-	Get int64 `json:"get"`
-}
-
-type Global struct {
-	Global int64 `json:"global"`
-}
-
-type Go struct {
-	Go int64 `json:"go"`
-}
-
-type Goto struct {
-	Goto int64 `json:"goto"`
-}
-
 type FalseClass struct {
 	False int64 `json:"false"`
 }
 
 type Obj3 struct {
 	Dummy                      int64                      `json:"dummy"`
+	Get                        Get                        `json:"get"`
+	Global                     Global                     `json:"global"`
+	Go                         Go                         `json:"go"`
+	Goto                       Goto                       `json:"goto"`
 	Guard                      Guard                      `json:"guard"`
 	HasOwnProperty             HasOwnProperty             `json:"hasOwnProperty"`
 	HashCode                   HashCode                   `json:"hashCode"`
@@ -700,6 +704,7 @@ type Obj3 struct {
 	Inout                      Inout                      `json:"inout"`
 	Instanceof                 Instanceof                 `json:"instanceof"`
 	Int                        Int                        `json:"int"`
+	IntNode                    IntNode                    `json:"IntNode"`
 	Interface                  Interface                  `json:"interface"`
 	Internal                   Internal                   `json:"internal"`
 	Is                         Is                         `json:"is"`
@@ -731,6 +736,7 @@ type Obj3 struct {
 	Locale                     Locale                     `json:"Locale"`
 	Lock                       Lock                       `json:"lock"`
 	Long                       Long                       `json:"long"`
+	LongNode                   LongNode                   `json:"LongNode"`
 	Map                        Map                        `json:"map"`
 	MapEntry                   MapEntry                   `json:"MapEntry"`
 	MetadataPropertyHandling   MetadataPropertyHandling   `json:"metadata_property_handling"`
@@ -738,12 +744,22 @@ type Obj3 struct {
 	Mutable                    Mutable                    `json:"mutable"`
 	Mutating                   Mutating                   `json:"mutating"`
 	Namespace                  Namespace                  `json:"namespace"`
-	Native                     Native                     `json:"native"`
-	New                        New                        `json:"new"`
-	Newtonsoft                 Newtonsoft                 `json:"newtonsoft"`
-	Nil                        Nil                        `json:"nil"`
-	No                         No                         `json:"NO"`
-	Noexcept                   Noexcept                   `json:"noexcept"`
+}
+
+type Get struct {
+	Get int64 `json:"get"`
+}
+
+type Global struct {
+	Global int64 `json:"global"`
+}
+
+type Go struct {
+	Go int64 `json:"go"`
+}
+
+type Goto struct {
+	Goto int64 `json:"goto"`
 }
 
 type Guard struct {
@@ -826,6 +842,10 @@ type Int struct {
 	Int int64 `json:"int"`
 }
 
+type IntNode struct {
+	IntNode int64 `json:"IntNode"`
+}
+
 type Interface struct {
 	Interface int64 `json:"interface"`
 }
@@ -950,6 +970,10 @@ type Long struct {
 	Long int64 `json:"long"`
 }
 
+type LongNode struct {
+	LongNode int64 `json:"LongNode"`
+}
+
 type Map struct {
 	Map int64 `json:"map"`
 }
@@ -978,36 +1002,18 @@ type Namespace struct {
 	Namespace int64 `json:"namespace"`
 }
 
-type Native struct {
-	Native int64 `json:"native"`
-}
-
-type New struct {
-	New int64 `json:"new"`
-}
-
-type Newtonsoft struct {
-	Newtonsoft int64 `json:"newtonsoft"`
-}
-
-type Nil struct {
-	Nil int64 `json:"nil"`
-}
-
-type No struct {
-	No int64 `json:"NO"`
-}
-
-type Noexcept struct {
-	Noexcept int64 `json:"noexcept"`
-}
-
 type Obj4 struct {
 	Dummy           int64           `json:"dummy"`
 	NSError         NSError         `json:"NSError"`
 	NSObject        NSObject        `json:"NSObject"`
 	NSString        NSString        `json:"NSString"`
+	Native          Native          `json:"native"`
+	New             New             `json:"new"`
+	Newtonsoft      Newtonsoft      `json:"newtonsoft"`
+	Nil             Nil             `json:"nil"`
+	No              No              `json:"NO"`
 	NoSuchMethod    NoSuchMethod    `json:"noSuchMethod"`
+	Noexcept        Noexcept        `json:"noexcept"`
 	Nonatomic       Nonatomic       `json:"nonatomic"`
 	None            None            `json:"None"`
 	Nonlocal        Nonlocal        `json:"nonlocal"`
@@ -1015,6 +1021,7 @@ type Obj4 struct {
 	Not             Not             `json:"not"`
 	NotEq           NotEq           `json:"not_eq"`
 	Null            Null            `json:"NULL"`
+	NullNode        NullNode        `json:"NullNode"`
 	Nullptr         Nullptr         `json:"nullptr"`
 	Number          Number          `json:"number"`
 	Obj4None        NoneClass       `json:"none"`
@@ -1022,6 +1029,7 @@ type Obj4 struct {
 	Obj4Protocol    ProtocolClass   `json:"protocol"`
 	Object          Object          `json:"object"`
 	ObjectMapper    ObjectMapper    `json:"ObjectMapper"`
+	ObjectNode      ObjectNode      `json:"ObjectNode"`
 	Of              Of              `json:"of"`
 	Oneway          Oneway          `json:"oneway"`
 	Open            Open            `json:"open"`
@@ -1060,14 +1068,6 @@ type Obj4 struct {
 	Restrict        Restrict        `json:"restrict"`
 	Retain          Retain          `json:"retain"`
 	Rethrows        Rethrows        `json:"rethrows"`
-	Return          Return          `json:"return"`
-	Right           Right           `json:"right"`
-	RuntimeType     RuntimeType     `json:"runtimeType"`
-	S               S               `json:"s"`
-	Sbyte           Sbyte           `json:"sbyte"`
-	Sealed          Sealed          `json:"sealed"`
-	Sel             Sel             `json:"SEL"`
-	Select          Select          `json:"select"`
 }
 
 type NSError struct {
@@ -1082,10 +1082,34 @@ type NSString struct {
 	NSString int64 `json:"NSString"`
 }
 
+type Native struct {
+	Native int64 `json:"native"`
+}
+
+type New struct {
+	New int64 `json:"new"`
+}
+
+type Newtonsoft struct {
+	Newtonsoft int64 `json:"newtonsoft"`
+}
+
+type Nil struct {
+	Nil int64 `json:"nil"`
+}
+
+type No struct {
+	No int64 `json:"NO"`
+}
+
 type NoSuchMethod struct {
 	NoSuchMethod int64 `json:"noSuchMethod"`
 }
 
+type Noexcept struct {
+	Noexcept int64 `json:"noexcept"`
+}
+
 type Nonatomic struct {
 	Nonatomic int64 `json:"nonatomic"`
 }
@@ -1114,6 +1138,10 @@ type Null struct {
 	Null int64 `json:"NULL"`
 }
 
+type NullNode struct {
+	NullNode int64 `json:"NullNode"`
+}
+
 type Nullptr struct {
 	Nullptr int64 `json:"nullptr"`
 }
@@ -1142,6 +1170,10 @@ type ObjectMapper struct {
 	ObjectMapper int64 `json:"ObjectMapper"`
 }
 
+type ObjectNode struct {
+	ObjectNode int64 `json:"ObjectNode"`
+}
+
 type Of struct {
 	Of int64 `json:"of"`
 }
@@ -1294,6 +1326,86 @@ type Rethrows struct {
 	Rethrows int64 `json:"rethrows"`
 }
 
+type Obj5 struct {
+	Dummy                int64                `json:"dummy"`
+	Obj5Self             SelfClass            `json:"self"`
+	Obj5True             TrueClass            `json:"true"`
+	Obj5Type             TypeClass            `json:"type"`
+	Return               Return               `json:"return"`
+	Right                Right                `json:"right"`
+	RuntimeType          RuntimeType          `json:"runtimeType"`
+	S                    S                    `json:"s"`
+	Sbyte                Sbyte                `json:"sbyte"`
+	Sealed               Sealed               `json:"sealed"`
+	Sel                  Sel                  `json:"SEL"`
+	Select               Select               `json:"select"`
+	Self                 Self                 `json:"Self"`
+	Sendable             Sendable             `json:"Sendable"`
+	SerializationFeature SerializationFeature `json:"SerializationFeature"`
+	Serialize            Serialize            `json:"serialize"`
+	SerializerProvider   SerializerProvider   `json:"SerializerProvider"`
+	Set                  Set                  `json:"set"`
+	Short                Short                `json:"short"`
+	Signed               Signed               `json:"signed"`
+	SimpleModule         SimpleModule         `json:"SimpleModule"`
+	Sizeof               Sizeof               `json:"sizeof"`
+	Stackalloc           Stackalloc           `json:"stackalloc"`
+	Standards            Standards            `json:"Standards"`
+	Static               Static               `json:"static"`
+	StaticAssert         StaticAssert         `json:"static_assert"`
+	StaticCast           StaticCast           `json:"static_cast"`
+	StdDeserializer      StdDeserializer      `json:"StdDeserializer"`
+	StdSerializer        StdSerializer        `json:"StdSerializer"`
+	Strictfp             Strictfp             `json:"strictfp"`
+	String               String               `json:"string"`
+	Struct               Struct               `json:"struct"`
+	Subscript            Subscript            `json:"subscript"`
+	Super                Super                `json:"super"`
+	Switch               Switch               `json:"switch"`
+	Symbol               Symbol               `json:"symbol"`
+	Synchronized         Synchronized         `json:"synchronized"`
+	System               System               `json:"system"`
+	Template             Template             `json:"template"`
+	TextNode             TextNode             `json:"TextNode"`
+	Then                 Then                 `json:"then"`
+	This                 This                 `json:"this"`
+	ThreadLocal          ThreadLocal          `json:"thread_local"`
+	Throw                Throw                `json:"throw"`
+	Throws               Throws               `json:"throws"`
+	TimeOnly             TimeOnly             `json:"TimeOnly"`
+	TimeOnlyConverter    TimeOnlyConverter    `json:"TimeOnlyConverter"`
+	TimeZone             TimeZone             `json:"TimeZone"`
+	ToJSON               ToJSON               `json:"to_json"`
+	ToString             ToString             `json:"toString"`
+	TopLevel             TopLevelClass        `json:"top_level"`
+	Transient            Transient            `json:"transient"`
+	True                 True                 `json:"True"`
+	Try                  Try                  `json:"try"`
+	Type                 Type                 `json:"Type"`
+	Typealias            Typealias            `json:"typealias"`
+	Typedef              Typedef              `json:"typedef"`
+	Typeid               Typeid               `json:"typeid"`
+	Typename             Typename             `json:"typename"`
+	Typeof               Typeof               `json:"typeof"`
+	Uint                 Uint                 `json:"uint"`
+	Ulong                Ulong                `json:"ulong"`
+	Unchecked            Unchecked            `json:"unchecked"`
+	Undefined            Undefined            `json:"undefined"`
+	Union                Union                `json:"union"`
+}
+
+type SelfClass struct {
+	Self int64 `json:"self"`
+}
+
+type TrueClass struct {
+	True int64 `json:"true"`
+}
+
+type TypeClass struct {
+	Type int64 `json:"type"`
+}
+
 type Return struct {
 	Return int64 `json:"return"`
 }
@@ -1326,86 +1438,6 @@ type Select struct {
 	Select int64 `json:"select"`
 }
 
-type Obj5 struct {
-	Dummy              int64              `json:"dummy"`
-	Obj5Self           SelfClass          `json:"self"`
-	Obj5True           TrueClass          `json:"true"`
-	Obj5Type           TypeClass          `json:"type"`
-	Self               Self               `json:"Self"`
-	Sendable           Sendable           `json:"Sendable"`
-	Serialize          Serialize          `json:"serialize"`
-	SerializerProvider SerializerProvider `json:"SerializerProvider"`
-	Set                Set                `json:"set"`
-	Short              Short              `json:"short"`
-	Signed             Signed             `json:"signed"`
-	SimpleModule       SimpleModule       `json:"SimpleModule"`
-	Sizeof             Sizeof             `json:"sizeof"`
-	Stackalloc         Stackalloc         `json:"stackalloc"`
-	Standards          Standards          `json:"Standards"`
-	Static             Static             `json:"static"`
-	StaticAssert       StaticAssert       `json:"static_assert"`
-	StaticCast         StaticCast         `json:"static_cast"`
-	StdDeserializer    StdDeserializer    `json:"StdDeserializer"`
-	StdSerializer      StdSerializer      `json:"StdSerializer"`
-	Strictfp           Strictfp           `json:"strictfp"`
-	String             String             `json:"string"`
-	Struct             Struct             `json:"struct"`
-	Subscript          Subscript          `json:"subscript"`
-	Super              Super              `json:"super"`
-	Switch             Switch             `json:"switch"`
-	Symbol             Symbol             `json:"symbol"`
-	Synchronized       Synchronized       `json:"synchronized"`
-	System             System             `json:"system"`
-	Template           Template           `json:"template"`
-	Then               Then               `json:"then"`
-	This               This               `json:"this"`
-	ThreadLocal        ThreadLocal        `json:"thread_local"`
-	Throw              Throw              `json:"throw"`
-	Throws             Throws             `json:"throws"`
-	TimeOnly           TimeOnly           `json:"TimeOnly"`
-	TimeOnlyConverter  TimeOnlyConverter  `json:"TimeOnlyConverter"`
-	TimeZone           TimeZone           `json:"TimeZone"`
-	ToJSON             ToJSON             `json:"to_json"`
-	ToString           ToString           `json:"toString"`
-	TopLevel           TopLevelClass      `json:"top_level"`
-	Transient          Transient          `json:"transient"`
-	True               True               `json:"True"`
-	Try                Try                `json:"try"`
-	Type               Type               `json:"Type"`
-	Typealias          Typealias          `json:"typealias"`
-	Typedef            Typedef            `json:"typedef"`
-	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"`
-	Undefined          Undefined          `json:"undefined"`
-	Union              Union              `json:"union"`
-	Unowned            Unowned            `json:"unowned"`
-	Unsafe             Unsafe             `json:"unsafe"`
-	Unsigned           Unsigned           `json:"unsigned"`
-	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 SelfClass struct {
-	Self int64 `json:"self"`
-}
-
-type TrueClass struct {
-	True int64 `json:"true"`
-}
-
-type TypeClass struct {
-	Type int64 `json:"type"`
-}
-
 type Self struct {
 	Self int64 `json:"Self"`
 }
@@ -1414,6 +1446,10 @@ type Sendable struct {
 	Sendable int64 `json:"Sendable"`
 }
 
+type SerializationFeature struct {
+	SerializationFeature int64 `json:"SerializationFeature"`
+}
+
 type Serialize struct {
 	Serialize int64 `json:"serialize"`
 }
@@ -1510,6 +1546,10 @@ type Template struct {
 	Template int64 `json:"template"`
 }
 
+type TextNode struct {
+	TextNode int64 `json:"TextNode"`
+}
+
 type Then struct {
 	Then int64 `json:"then"`
 }
@@ -1590,10 +1630,6 @@ type Typeof struct {
 	Typeof int64 `json:"typeof"`
 }
 
-type UUID struct {
-	UUID int64 `json:"UUID"`
-}
-
 type Uint struct {
 	Uint int64 `json:"uint"`
 }
@@ -1614,6 +1650,36 @@ type Union struct {
 	Union int64 `json:"union"`
 }
 
+type Obj6 struct {
+	Dummy          int64          `json:"dummy"`
+	UUID           UUID           `json:"UUID"`
+	Unowned        Unowned        `json:"unowned"`
+	Unsafe         Unsafe         `json:"unsafe"`
+	Unsigned       Unsigned       `json:"unsigned"`
+	Ushort         Ushort         `json:"ushort"`
+	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 Unowned struct {
 	Unowned int64 `json:"unowned"`
 }
@@ -1650,22 +1716,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..706f3da 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
@@ -11,6 +11,7 @@ module QuickType
     , AndEq (..)
     , Any (..)
     , ArrayClass (..)
+    , ArrayNode (..)
     , ASM (..)
     , Assert (..)
     , Associatedtype (..)
@@ -27,6 +28,7 @@ module QuickType
     , Bitor (..)
     , BOOLClass (..)
     , Boolean (..)
+    , BooleanNode (..)
     , Break (..)
     , Bycopy (..)
     , Byref (..)
@@ -57,8 +59,6 @@ module QuickType
     , Convenience (..)
     , Convert (..)
     , Converter (..)
-    , CultureInfo (..)
-    , Date (..)
     , Empty (..)
     , Imaginery (..)
     , AnyClass (..)
@@ -69,6 +69,8 @@ module QuickType
     , Obj1Bool (..)
     , ClassClass (..)
     , Obj2 (..)
+    , CultureInfo (..)
+    , Date (..)
     , DateFormatter (..)
     , DateOnly (..)
     , DateOnlyConverter (..)
@@ -88,10 +90,12 @@ module QuickType
     , Del (..)
     , Delegate (..)
     , Delete (..)
+    , DeserializationFeature (..)
     , Dict (..)
     , Dictionary (..)
     , DidSet (..)
     , DoubleClass (..)
+    , DoubleNode (..)
     , Dynamic (..)
     , DynamicCast (..)
     , Elif (..)
@@ -125,15 +129,15 @@ module QuickType
     , FromJSONClass (..)
     , Func (..)
     , Function (..)
-    , Get (..)
-    , Global (..)
-    , Go (..)
-    , Goto (..)
     , Default (..)
     , Do (..)
     , Else (..)
     , Obj2False (..)
     , Obj3 (..)
+    , Get (..)
+    , Global (..)
+    , Go (..)
+    , Goto (..)
     , Guard (..)
     , HasOwnProperty (..)
     , HashCode (..)
@@ -148,6 +152,7 @@ module QuickType
     , Inout (..)
     , Instanceof (..)
     , IntClass (..)
+    , IntNode (..)
     , Interface (..)
     , Internal (..)
     , Is (..)
@@ -179,18 +184,13 @@ module QuickType
     , Locale (..)
     , Lock (..)
     , Long (..)
+    , LongNode (..)
     , MapClass (..)
     , MapEntry (..)
     , MetadataPropertyHandling (..)
     , Mutable (..)
     , Mutating (..)
     , Namespace (..)
-    , Native (..)
-    , New (..)
-    , Newtonsoft (..)
-    , Nil (..)
-    , No (..)
-    , Noexcept (..)
     , ID (..)
     , If (..)
     , Import (..)
@@ -199,7 +199,13 @@ module QuickType
     , Let (..)
     , Module (..)
     , Obj4 (..)
+    , Native (..)
+    , New (..)
+    , Newtonsoft (..)
+    , Nil (..)
+    , No (..)
     , NoSuchMethod (..)
+    , Noexcept (..)
     , Nonatomic (..)
     , None (..)
     , Nonlocal (..)
@@ -210,6 +216,7 @@ module QuickType
     , NSObject (..)
     , NSString (..)
     , NULLClass (..)
+    , NullNode (..)
     , Nullptr (..)
     , NumberClass (..)
     , NoneClass (..)
@@ -218,6 +225,7 @@ module QuickType
     , ProtocolClass (..)
     , ObjectClass (..)
     , ObjectMapper (..)
+    , ObjectNode (..)
     , Oneway (..)
     , Open (..)
     , Operator (..)
@@ -255,6 +263,12 @@ module QuickType
     , Restrict (..)
     , Retain (..)
     , Rethrows (..)
+    , Obj5 (..)
+    , SelfClass (..)
+    , Then (..)
+    , Obj5True (..)
+    , Type (..)
+    , TypeClass (..)
     , Return (..)
     , RightClass (..)
     , RuntimeType (..)
@@ -263,14 +277,9 @@ module QuickType
     , Sealed (..)
     , Sel (..)
     , Select (..)
-    , Obj5 (..)
-    , SelfClass (..)
-    , Then (..)
-    , Obj5True (..)
-    , Type (..)
-    , TypeClass (..)
     , Self (..)
     , Sendable (..)
+    , SerializationFeature (..)
     , Serialize (..)
     , SerializerProvider (..)
     , Set (..)
@@ -295,6 +304,7 @@ module QuickType
     , Synchronized (..)
     , System (..)
     , Template (..)
+    , TextNode (..)
     , This (..)
     , ThreadLocal (..)
     , Throw (..)
@@ -318,6 +328,8 @@ module QuickType
     , Unchecked (..)
     , Undefined (..)
     , Union (..)
+    , Obj6 (..)
+    , Where (..)
     , Unowned (..)
     , Unsafe (..)
     , Unsigned (..)
@@ -328,8 +340,6 @@ module QuickType
     , UUID (..)
     , Var (..)
     , Virtual (..)
-    , Obj6 (..)
-    , Where (..)
     , Void (..)
     , Volatile (..)
     , WcharT (..)
@@ -369,6 +379,7 @@ data Obj1 = Obj1
     , andEqObj1 :: AndEq
     , anyObj1 :: Any
     , arrayObj1 :: ArrayClass
+    , arrayNodeObj1 :: ArrayNode
     , asmObj1 :: ASM
     , assertObj1 :: Assert
     , associatedtypeObj1 :: Associatedtype
@@ -385,6 +396,7 @@ data Obj1 = Obj1
     , bitorObj1 :: Bitor
     , boolObj1 :: BOOLClass
     , booleanObj1 :: Boolean
+    , booleanNodeObj1 :: BooleanNode
     , breakObj1 :: Break
     , bycopyObj1 :: Bycopy
     , byrefObj1 :: Byref
@@ -415,8 +427,6 @@ data Obj1 = Obj1
     , convenienceObj1 :: Convenience
     , convertObj1 :: Convert
     , converterObj1 :: Converter
-    , cultureInfoObj1 :: CultureInfo
-    , dateObj1 :: Date
     , dummyObj1 :: Int
     , emptyObj1 :: Empty
     , imagineryObj1 :: Imaginery
@@ -457,6 +467,10 @@ data ArrayClass = ArrayClass
     { arrayArrayClass :: Int
     } deriving (Show)
 
+data ArrayNode = ArrayNode
+    { arrayNodeArrayNode :: Int
+    } deriving (Show)
+
 data ASM = ASM
     { asmASM :: Int
     } deriving (Show)
@@ -521,6 +535,10 @@ data Boolean = Boolean
     { booleanBoolean :: Int
     } deriving (Show)
 
+data BooleanNode = BooleanNode
+    { booleanNodeBooleanNode :: Int
+    } deriving (Show)
+
 data Break = Break
     { breakBreak :: Int
     } deriving (Show)
@@ -641,14 +659,6 @@ data Converter = Converter
     { converterConverter :: Int
     } deriving (Show)
 
-data CultureInfo = CultureInfo
-    { cultureInfoCultureInfo :: Int
-    } deriving (Show)
-
-data Date = Date
-    { dateDate :: Int
-    } deriving (Show)
-
 data Empty = Empty
     { emptyEmpty :: Int
     } deriving (Show)
@@ -686,7 +696,9 @@ data ClassClass = ClassClass
     } deriving (Show)
 
 data Obj2 = Obj2
-    { dateFormatterObj2 :: DateFormatter
+    { cultureInfoObj2 :: CultureInfo
+    , dateObj2 :: Date
+    , dateFormatterObj2 :: DateFormatter
     , dateOnlyObj2 :: DateOnly
     , dateOnlyConverterObj2 :: DateOnlyConverter
     , dateParseHandlingObj2 :: DateParseHandling
@@ -705,10 +717,12 @@ data Obj2 = Obj2
     , delObj2 :: Del
     , delegateObj2 :: Delegate
     , deleteObj2 :: Delete
+    , deserializationFeatureObj2 :: DeserializationFeature
     , dictObj2 :: Dict
     , dictionaryObj2 :: Dictionary
     , didSetObj2 :: DidSet
     , doubleObj2 :: DoubleClass
+    , doubleNodeObj2 :: DoubleNode
     , dummyObj2 :: Int
     , dynamicObj2 :: Dynamic
     , dynamicCastObj2 :: DynamicCast
@@ -743,16 +757,20 @@ data Obj2 = Obj2
     , fromJSONObj2 :: FromJSONClass
     , funcObj2 :: Func
     , functionObj2 :: Function
-    , getObj2 :: Get
-    , globalObj2 :: Global
-    , goObj2 :: Go
-    , gotoObj2 :: Goto
     , obj2DefaultObj2 :: Default
     , obj2DoObj2 :: Do
     , obj2ElseObj2 :: Else
     , obj2FalseObj2 :: Obj2False
     } deriving (Show)
 
+data CultureInfo = CultureInfo
+    { cultureInfoCultureInfo :: Int
+    } deriving (Show)
+
+data Date = Date
+    { dateDate :: Int
+    } deriving (Show)
+
 data DateFormatter = DateFormatter
     { dateFormatterDateFormatter :: Int
     } deriving (Show)
@@ -829,6 +847,10 @@ data Delete = Delete
     { deleteDelete :: Int
     } deriving (Show)
 
+data DeserializationFeature = DeserializationFeature
+    { deserializationFeatureDeserializationFeature :: Int
+    } deriving (Show)
+
 data Dict = Dict
     { dictDict :: Int
     } deriving (Show)
@@ -845,6 +867,10 @@ data DoubleClass = DoubleClass
     { doubleDoubleClass :: Int
     } deriving (Show)
 
+data DoubleNode = DoubleNode
+    { doubleNodeDoubleNode :: Int
+    } deriving (Show)
+
 data Dynamic = Dynamic
     { dynamicDynamic :: Int
     } deriving (Show)
@@ -982,22 +1008,6 @@ data Function = Function
     { functionFunction :: Int
     } deriving (Show)
 
-data Get = Get
-    { getGet :: Int
-    } deriving (Show)
-
-data Global = Global
-    { globalGlobal :: Int
-    } deriving (Show)
-
-data Go = Go
-    { goGo :: Int
-    } deriving (Show)
-
-data Goto = Goto
-    { gotoGoto :: Int
-    } deriving (Show)
-
 data Default = Default
     { defaultDefaultDefault :: Int
     } deriving (Show)
@@ -1016,6 +1026,10 @@ data Obj2False = Obj2False
 
 data Obj3 = Obj3
     { dummyObj3 :: Int
+    , getObj3 :: Get
+    , globalObj3 :: Global
+    , goObj3 :: Go
+    , gotoObj3 :: Goto
     , guardObj3 :: Guard
     , hasOwnPropertyObj3 :: HasOwnProperty
     , hashCodeObj3 :: HashCode
@@ -1030,6 +1044,7 @@ data Obj3 = Obj3
     , inoutObj3 :: Inout
     , instanceofObj3 :: Instanceof
     , intObj3 :: IntClass
+    , intNodeObj3 :: IntNode
     , interfaceObj3 :: Interface
     , internalObj3 :: Internal
     , isObj3 :: Is
@@ -1061,18 +1076,13 @@ data Obj3 = Obj3
     , localeObj3 :: Locale
     , lockObj3 :: Lock
     , longObj3 :: Long
+    , longNodeObj3 :: LongNode
     , mapObj3 :: MapClass
     , mapEntryObj3 :: MapEntry
     , metadataPropertyHandlingObj3 :: MetadataPropertyHandling
     , mutableObj3 :: Mutable
     , mutatingObj3 :: Mutating
     , namespaceObj3 :: Namespace
-    , nativeObj3 :: Native
-    , newObj3 :: New
-    , newtonsoftObj3 :: Newtonsoft
-    , nilObj3 :: Nil
-    , noObj3 :: No
-    , noexceptObj3 :: Noexcept
     , obj3IDObj3 :: ID
     , obj3IfObj3 :: If
     , obj3ImportObj3 :: Import
@@ -1082,6 +1092,22 @@ data Obj3 = Obj3
     , obj3ModuleObj3 :: Module
     } deriving (Show)
 
+data Get = Get
+    { getGet :: Int
+    } deriving (Show)
+
+data Global = Global
+    { globalGlobal :: Int
+    } deriving (Show)
+
+data Go = Go
+    { goGo :: Int
+    } deriving (Show)
+
+data Goto = Goto
+    { gotoGoto :: Int
+    } deriving (Show)
+
 data Guard = Guard
     { guardGuard :: Int
     } deriving (Show)
@@ -1138,6 +1164,10 @@ data IntClass = IntClass
     { intIntClass :: Int
     } deriving (Show)
 
+data IntNode = IntNode
+    { intNodeIntNode :: Int
+    } deriving (Show)
+
 data Interface = Interface
     { interfaceInterface :: Int
     } deriving (Show)
@@ -1262,6 +1292,10 @@ data Long = Long
     { longLong :: Int
     } deriving (Show)
 
+data LongNode = LongNode
+    { longNodeLongNode :: Int
+    } deriving (Show)
+
 data MapClass = MapClass
     { mapMapClass :: Int
     } deriving (Show)
@@ -1286,30 +1320,6 @@ data Namespace = Namespace
     { namespaceNamespace :: Int
     } deriving (Show)
 
-data Native = Native
-    { nativeNative :: Int
-    } deriving (Show)
-
-data New = New
-    { newNew :: Int
-    } deriving (Show)
-
-data Newtonsoft = Newtonsoft
-    { newtonsoftNewtonsoft :: Int
-    } deriving (Show)
-
-data Nil = Nil
-    { nilNil :: Int
-    } deriving (Show)
-
-data No = No
-    { noNo :: Int
-    } deriving (Show)
-
-data Noexcept = Noexcept
-    { noexceptNoexcept :: Int
-    } deriving (Show)
-
 data ID = ID
     { idIDID :: Int
     } deriving (Show)
@@ -1340,7 +1350,13 @@ data Module = Module
 
 data Obj4 = Obj4
     { dummyObj4 :: Int
+    , nativeObj4 :: Native
+    , newObj4 :: New
+    , newtonsoftObj4 :: Newtonsoft
+    , nilObj4 :: Nil
+    , noObj4 :: No
     , noSuchMethodObj4 :: NoSuchMethod
+    , noexceptObj4 :: Noexcept
     , nonatomicObj4 :: Nonatomic
     , noneObj4 :: None
     , nonlocalObj4 :: Nonlocal
@@ -1351,6 +1367,7 @@ data Obj4 = Obj4
     , nsObjectObj4 :: NSObject
     , nsStringObj4 :: NSString
     , nullObj4 :: NULLClass
+    , nullNodeObj4 :: NullNode
     , nullptrObj4 :: Nullptr
     , numberObj4 :: NumberClass
     , obj4NoneObj4 :: NoneClass
@@ -1359,6 +1376,7 @@ data Obj4 = Obj4
     , obj4ProtocolObj4 :: ProtocolClass
     , objectObj4 :: ObjectClass
     , objectMapperObj4 :: ObjectMapper
+    , objectNodeObj4 :: ObjectNode
     , onewayObj4 :: Oneway
     , openObj4 :: Open
     , operatorObj4 :: Operator
@@ -1396,20 +1414,36 @@ data Obj4 = Obj4
     , restrictObj4 :: Restrict
     , retainObj4 :: Retain
     , rethrowsObj4 :: Rethrows
-    , returnObj4 :: Return
-    , rightObj4 :: RightClass
-    , runtimeTypeObj4 :: RuntimeType
-    , sObj4 :: S
-    , sbyteObj4 :: Sbyte
-    , sealedObj4 :: Sealed
-    , selObj4 :: Sel
-    , selectObj4 :: Select
+    } deriving (Show)
+
+data Native = Native
+    { nativeNative :: Int
+    } deriving (Show)
+
+data New = New
+    { newNew :: Int
+    } deriving (Show)
+
+data Newtonsoft = Newtonsoft
+    { newtonsoftNewtonsoft :: Int
+    } deriving (Show)
+
+data Nil = Nil
+    { nilNil :: Int
+    } deriving (Show)
+
+data No = No
+    { noNo :: Int
     } deriving (Show)
 
 data NoSuchMethod = NoSuchMethod
     { noSuchMethodNoSuchMethod :: Int
     } deriving (Show)
 
+data Noexcept = Noexcept
+    { noexceptNoexcept :: Int
+    } deriving (Show)
+
 data Nonatomic = Nonatomic
     { nonatomicNonatomic :: Int
     } deriving (Show)
@@ -1450,6 +1484,10 @@ data NULLClass = NULLClass
     { nullNULLClass :: Int
     } deriving (Show)
 
+data NullNode = NullNode
+    { nullNodeNullNode :: Int
+    } deriving (Show)
+
 data Nullptr = Nullptr
     { nullptrNullptr :: Int
     } deriving (Show)
@@ -1482,6 +1520,10 @@ data ObjectMapper = ObjectMapper
     { objectMapperObjectMapper :: Int
     } deriving (Show)
 
+data ObjectNode = ObjectNode
+    { objectNodeObjectNode :: Int
+    } deriving (Show)
+
 data Oneway = Oneway
     { onewayOneway :: Int
     } deriving (Show)
@@ -1630,38 +1672,6 @@ data Rethrows = Rethrows
     { rethrowsRethrows :: Int
     } deriving (Show)
 
-data Return = Return
-    { returnReturn :: Int
-    } deriving (Show)
-
-data RightClass = RightClass
-    { rightRightClass :: Int
-    } deriving (Show)
-
-data RuntimeType = RuntimeType
-    { runtimeTypeRuntimeType :: Int
-    } deriving (Show)
-
-data S = S
-    { sS :: Int
-    } deriving (Show)
-
-data Sbyte = Sbyte
-    { sbyteSbyte :: Int
-    } deriving (Show)
-
-data Sealed = Sealed
-    { sealedSealed :: Int
-    } deriving (Show)
-
-data Sel = Sel
-    { selSel :: Int
-    } deriving (Show)
-
-data Select = Select
-    { selectSelect :: Int
-    } deriving (Show)
-
 data Obj5 = Obj5
     { dummyObj5 :: Int
     , obj5SelfObj5 :: SelfClass
@@ -1669,8 +1679,17 @@ data Obj5 = Obj5
     , obj5TrueObj5 :: Obj5True
     , obj5TypeObj5 :: Type
     , purpleTypeObj5 :: TypeClass
+    , returnObj5 :: Return
+    , rightObj5 :: RightClass
+    , runtimeTypeObj5 :: RuntimeType
+    , sObj5 :: S
+    , sbyteObj5 :: Sbyte
+    , sealedObj5 :: Sealed
+    , selObj5 :: Sel
+    , selectObj5 :: Select
     , selfObj5 :: Self
     , sendableObj5 :: Sendable
+    , serializationFeatureObj5 :: SerializationFeature
     , serializeObj5 :: Serialize
     , serializerProviderObj5 :: SerializerProvider
     , setObj5 :: Set
@@ -1695,6 +1714,7 @@ data Obj5 = Obj5
     , synchronizedObj5 :: Synchronized
     , systemObj5 :: System
     , templateObj5 :: Template
+    , textNodeObj5 :: TextNode
     , thisObj5 :: This
     , threadLocalObj5 :: ThreadLocal
     , throwObj5 :: Throw
@@ -1718,16 +1738,6 @@ data Obj5 = Obj5
     , uncheckedObj5 :: Unchecked
     , undefinedObj5 :: Undefined
     , unionObj5 :: Union
-    , unownedObj5 :: Unowned
-    , unsafeObj5 :: Unsafe
-    , unsignedObj5 :: Unsigned
-    , ushortObj5 :: Ushort
-    , usingObj5 :: Using
-    , utf8JSONReaderObj5 :: Utf8JSONReader
-    , utf8JSONWriterObj5 :: Utf8JSONWriter
-    , uuidObj5 :: UUID
-    , varObj5 :: Var
-    , virtualObj5 :: Virtual
     } deriving (Show)
 
 data SelfClass = SelfClass
@@ -1750,6 +1760,38 @@ data TypeClass = TypeClass
     { typeTypeTypeClass :: Int
     } deriving (Show)
 
+data Return = Return
+    { returnReturn :: Int
+    } deriving (Show)
+
+data RightClass = RightClass
+    { rightRightClass :: Int
+    } deriving (Show)
+
+data RuntimeType = RuntimeType
+    { runtimeTypeRuntimeType :: Int
+    } deriving (Show)
+
+data S = S
+    { sS :: Int
+    } deriving (Show)
+
+data Sbyte = Sbyte
+    { sbyteSbyte :: Int
+    } deriving (Show)
+
+data Sealed = Sealed
+    { sealedSealed :: Int
+    } deriving (Show)
+
+data Sel = Sel
+    { selSel :: Int
+    } deriving (Show)
+
+data Select = Select
+    { selectSelect :: Int
+    } deriving (Show)
+
 data Self = Self
     { selfSelf :: Int
     } deriving (Show)
@@ -1758,6 +1800,10 @@ data Sendable = Sendable
     { sendableSendable :: Int
     } deriving (Show)
 
+data SerializationFeature = SerializationFeature
+    { serializationFeatureSerializationFeature :: Int
+    } deriving (Show)
+
 data Serialize = Serialize
     { serializeSerialize :: Int
     } deriving (Show)
@@ -1854,6 +1900,10 @@ data Template = Template
     { templateTemplate :: Int
     } deriving (Show)
 
+data TextNode = TextNode
+    { textNodeTextNode :: Int
+    } deriving (Show)
+
 data This = This
     { thisThis :: Int
     } deriving (Show)
@@ -1946,6 +1996,36 @@ data Union = Union
     { unionUnion :: Int
     } deriving (Show)
 
+data Obj6 = Obj6
+    { dummyObj6 :: Int
+    , obj6WhereObj6 :: Where
+    , unownedObj6 :: Unowned
+    , unsafeObj6 :: Unsafe
+    , unsignedObj6 :: Unsigned
+    , ushortObj6 :: Ushort
+    , 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 Unowned = Unowned
     { unownedUnowned :: Int
     } deriving (Show)
@@ -1986,28 +2066,8 @@ 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
+data Void = Void
+    { voidVoid :: Int
     } deriving (Show)
 
 data Volatile = Volatile
@@ -2076,7 +2136,7 @@ instance FromJSON QuickType where
         <*> v .: "obj6"
 
 instance ToJSON Obj1 where
-    toJSON (Obj1 abstractObj1 alignasObj1 alignofObj1 andObj1 andEqObj1 anyObj1 arrayObj1 asmObj1 assertObj1 associatedtypeObj1 associativityObj1 asyncObj1 atomicObj1 atomicCancelObj1 atomicCommitObj1 atomicNoexceptObj1 autoObj1 awaitObj1 baseObj1 bitandObj1 bitorObj1 boolObj1 booleanObj1 breakObj1 bycopyObj1 byrefObj1 byteObj1 calendarObj1 catchObj1 chanObj1 charObj1 char16TObj1 char32TObj1 checkedObj1 cloneObj1 coAwaitObj1 coReturnObj1 coYieldObj1 codableObj1 codingKeyObj1 codingKeysObj1 complObj1 complexObj1 conceptObj1 consoleObj1 constObj1 constCastObj1 constexprObj1 constructorObj1 continueObj1 convenienceObj1 convertObj1 converterObj1 cultureInfoObj1 dateObj1 dummyObj1 emptyObj1 imagineryObj1 obj1AnyObj1 obj1AsObj1 obj1BoolObj1 obj1CaseObj1 obj1ClassObj1 purpleBoolObj1 purpleClassObj1) =
+    toJSON (Obj1 abstractObj1 alignasObj1 alignofObj1 andObj1 andEqObj1 anyObj1 arrayObj1 arrayNodeObj1 asmObj1 assertObj1 associatedtypeObj1 associativityObj1 asyncObj1 atomicObj1 atomicCancelObj1 atomicCommitObj1 atomicNoexceptObj1 autoObj1 awaitObj1 baseObj1 bitandObj1 bitorObj1 boolObj1 booleanObj1 booleanNodeObj1 breakObj1 bycopyObj1 byrefObj1 byteObj1 calendarObj1 catchObj1 chanObj1 charObj1 char16TObj1 char32TObj1 checkedObj1 cloneObj1 coAwaitObj1 coReturnObj1 coYieldObj1 codableObj1 codingKeyObj1 codingKeysObj1 complObj1 complexObj1 conceptObj1 consoleObj1 constObj1 constCastObj1 constexprObj1 constructorObj1 continueObj1 convenienceObj1 convertObj1 converterObj1 dummyObj1 emptyObj1 imagineryObj1 obj1AnyObj1 obj1AsObj1 obj1BoolObj1 obj1CaseObj1 obj1ClassObj1 purpleBoolObj1 purpleClassObj1) =
         object $ foldMap (maybe [] pure)
         [ Just $ "abstract" .= abstractObj1
         , Just $ "alignas" .= alignasObj1
@@ -2085,6 +2145,7 @@ instance ToJSON Obj1 where
         , Just $ "and_eq" .= andEqObj1
         , Just $ "Any" .= anyObj1
         , Just $ "array" .= arrayObj1
+        , Just $ "ArrayNode" .= arrayNodeObj1
         , Just $ "asm" .= asmObj1
         , Just $ "assert" .= assertObj1
         , Just $ "associatedtype" .= associatedtypeObj1
@@ -2101,6 +2162,7 @@ instance ToJSON Obj1 where
         , Just $ "bitor" .= bitorObj1
         , Just $ "BOOL" .= boolObj1
         , Just $ "boolean" .= booleanObj1
+        , Just $ "BooleanNode" .= booleanNodeObj1
         , Just $ "break" .= breakObj1
         , Just $ "bycopy" .= bycopyObj1
         , Just $ "byref" .= byrefObj1
@@ -2131,8 +2193,6 @@ instance ToJSON Obj1 where
         , Just $ "convenience" .= convenienceObj1
         , Just $ "convert" .= convertObj1
         , Just $ "converter" .= converterObj1
-        , Just $ "CultureInfo" .= cultureInfoObj1
-        , Just $ "date" .= dateObj1
         , Just $ "dummy" .= dummyObj1
         , Just $ "_" .= emptyObj1
         , Just $ "_Imaginery" .= imagineryObj1
@@ -2154,6 +2214,7 @@ instance FromJSON Obj1 where
         <*> v .: "and_eq"
         <*> v .: "Any"
         <*> v .: "array"
+        <*> v .: "ArrayNode"
         <*> v .: "asm"
         <*> v .: "assert"
         <*> v .: "associatedtype"
@@ -2170,6 +2231,7 @@ instance FromJSON Obj1 where
         <*> v .: "bitor"
         <*> v .: "BOOL"
         <*> v .: "boolean"
+        <*> v .: "BooleanNode"
         <*> v .: "break"
         <*> v .: "bycopy"
         <*> v .: "byref"
@@ -2200,8 +2262,6 @@ instance FromJSON Obj1 where
         <*> v .: "convenience"
         <*> v .: "convert"
         <*> v .: "converter"
-        <*> v .: "CultureInfo"
-        <*> v .: "date"
         <*> v .: "dummy"
         <*> v .: "_"
         <*> v .: "_Imaginery"
@@ -2283,6 +2343,16 @@ instance FromJSON ArrayClass where
     parseJSON (Object v) = ArrayClass
         <$> v .: "array"
 
+instance ToJSON ArrayNode where
+    toJSON (ArrayNode arrayNodeArrayNode) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "ArrayNode" .= arrayNodeArrayNode
+        ]
+
+instance FromJSON ArrayNode where
+    parseJSON (Object v) = ArrayNode
+        <$> v .: "ArrayNode"
+
 instance ToJSON ASM where
     toJSON (ASM asmASM) =
         object $ foldMap (maybe [] pure)
@@ -2443,6 +2513,16 @@ instance FromJSON Boolean where
     parseJSON (Object v) = Boolean
         <$> v .: "boolean"
 
+instance ToJSON BooleanNode where
+    toJSON (BooleanNode booleanNodeBooleanNode) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "BooleanNode" .= booleanNodeBooleanNode
+        ]
+
+instance FromJSON BooleanNode where
+    parseJSON (Object v) = BooleanNode
+        <$> v .: "BooleanNode"
+
 instance ToJSON Break where
     toJSON (Break breakBreak) =
         object $ foldMap (maybe [] pure)
@@ -2743,26 +2823,6 @@ instance FromJSON Converter where
     parseJSON (Object v) = Converter
         <$> v .: "converter"
 
-instance ToJSON CultureInfo where
-    toJSON (CultureInfo cultureInfoCultureInfo) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "CultureInfo" .= cultureInfoCultureInfo
-        ]
-
-instance FromJSON CultureInfo where
-    parseJSON (Object v) = CultureInfo
-        <$> v .: "CultureInfo"
-
-instance ToJSON Date where
-    toJSON (Date dateDate) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "date" .= dateDate
-        ]
-
-instance FromJSON Date where
-    parseJSON (Object v) = Date
-        <$> v .: "date"
-
 instance ToJSON Empty where
     toJSON (Empty emptyEmpty) =
         object $ foldMap (maybe [] pure)
@@ -2854,9 +2914,11 @@ instance FromJSON ClassClass where
         <$> v .: "class"
 
 instance ToJSON Obj2 where
-    toJSON (Obj2 dateFormatterObj2 dateOnlyObj2 dateOnlyConverterObj2 dateParseHandlingObj2 dateTimeObj2 dateTimeStylesObj2 debuggerObj2 decimalObj2 declareObj2 decltypeObj2 decodeStringObj2 decoderObj2 decodingErrorObj2 defObj2 deferObj2 deinitObj2 delObj2 delegateObj2 deleteObj2 dictObj2 dictionaryObj2 didSetObj2 doubleObj2 dummyObj2 dynamicObj2 dynamicCastObj2 elifObj2 encodeQuickTypeObj2 encoderObj2 enumObj2 enumValuesObj2 equalityContractObj2 equatableObj2 eventObj2 exceptObj2 exceptionObj2 explicitObj2 exportObj2 exposingObj2 extendsObj2 extensionObj2 externObj2 fallthroughObj2 falseObj2 fileprivateObj2 finalObj2 finallyObj2 fixedObj2 floatObj2 forObj2 foreachObj2 formatExceptionObj2 friendObj2 fromObj2 fromJSONObj2 funcObj2 functionObj2 getObj2 globalObj2 goObj2 gotoObj2 obj2DefaultObj2 obj2DoObj2 obj2ElseObj2 obj2FalseObj2) =
+    toJSON (Obj2 cultureInfoObj2 dateObj2 dateFormatterObj2 dateOnlyObj2 dateOnlyConverterObj2 dateParseHandlingObj2 dateTimeObj2 dateTimeStylesObj2 debuggerObj2 decimalObj2 declareObj2 decltypeObj2 decodeStringObj2 decoderObj2 decodingErrorObj2 defObj2 deferObj2 deinitObj2 delObj2 delegateObj2 deleteObj2 deserializationFeatureObj2 dictObj2 dictionaryObj2 didSetObj2 doubleObj2 doubleNodeObj2 dummyObj2 dynamicObj2 dynamicCastObj2 elifObj2 encodeQuickTypeObj2 encoderObj2 enumObj2 enumValuesObj2 equalityContractObj2 equatableObj2 eventObj2 exceptObj2 exceptionObj2 explicitObj2 exportObj2 exposingObj2 extendsObj2 extensionObj2 externObj2 fallthroughObj2 falseObj2 fileprivateObj2 finalObj2 finallyObj2 fixedObj2 floatObj2 forObj2 foreachObj2 formatExceptionObj2 friendObj2 fromObj2 fromJSONObj2 funcObj2 functionObj2 obj2DefaultObj2 obj2DoObj2 obj2ElseObj2 obj2FalseObj2) =
         object $ foldMap (maybe [] pure)
-        [ Just $ "DateFormatter" .= dateFormatterObj2
+        [ Just $ "CultureInfo" .= cultureInfoObj2
+        , Just $ "date" .= dateObj2
+        , Just $ "DateFormatter" .= dateFormatterObj2
         , Just $ "DateOnly" .= dateOnlyObj2
         , Just $ "DateOnlyConverter" .= dateOnlyConverterObj2
         , Just $ "date_parse_handling" .= dateParseHandlingObj2
@@ -2875,10 +2937,12 @@ instance ToJSON Obj2 where
         , Just $ "del" .= delObj2
         , Just $ "delegate" .= delegateObj2
         , Just $ "delete" .= deleteObj2
+        , Just $ "DeserializationFeature" .= deserializationFeatureObj2
         , Just $ "dict" .= dictObj2
         , Just $ "dictionary" .= dictionaryObj2
         , Just $ "didSet" .= didSetObj2
         , Just $ "double" .= doubleObj2
+        , Just $ "DoubleNode" .= doubleNodeObj2
         , Just $ "dummy" .= dummyObj2
         , Just $ "dynamic" .= dynamicObj2
         , Just $ "dynamic_cast" .= dynamicCastObj2
@@ -2913,10 +2977,6 @@ instance ToJSON Obj2 where
         , Just $ "from_json" .= fromJSONObj2
         , Just $ "func" .= funcObj2
         , Just $ "function" .= functionObj2
-        , Just $ "get" .= getObj2
-        , Just $ "global" .= globalObj2
-        , Just $ "go" .= goObj2
-        , Just $ "goto" .= gotoObj2
         , Just $ "default" .= obj2DefaultObj2
         , Just $ "do" .= obj2DoObj2
         , Just $ "else" .= obj2ElseObj2
@@ -2925,7 +2985,9 @@ instance ToJSON Obj2 where
 
 instance FromJSON Obj2 where
     parseJSON (Object v) = Obj2
-        <$> v .: "DateFormatter"
+        <$> v .: "CultureInfo"
+        <*> v .: "date"
+        <*> v .: "DateFormatter"
         <*> v .: "DateOnly"
         <*> v .: "DateOnlyConverter"
         <*> v .: "date_parse_handling"
@@ -2944,10 +3006,12 @@ instance FromJSON Obj2 where
         <*> v .: "del"
         <*> v .: "delegate"
         <*> v .: "delete"
+        <*> v .: "DeserializationFeature"
         <*> v .: "dict"
         <*> v .: "dictionary"
         <*> v .: "didSet"
         <*> v .: "double"
+        <*> v .: "DoubleNode"
         <*> v .: "dummy"
         <*> v .: "dynamic"
         <*> v .: "dynamic_cast"
@@ -2982,15 +3046,31 @@ instance FromJSON Obj2 where
         <*> v .: "from_json"
         <*> v .: "func"
         <*> v .: "function"
-        <*> v .: "get"
-        <*> v .: "global"
-        <*> v .: "go"
-        <*> v .: "goto"
         <*> v .: "default"
         <*> v .: "do"
         <*> v .: "else"
         <*> v .: "false"
 
+instance ToJSON CultureInfo where
+    toJSON (CultureInfo cultureInfoCultureInfo) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "CultureInfo" .= cultureInfoCultureInfo
+        ]
+
+instance FromJSON CultureInfo where
+    parseJSON (Object v) = CultureInfo
+        <$> v .: "CultureInfo"
+
+instance ToJSON Date where
+    toJSON (Date dateDate) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "date" .= dateDate
+        ]
+
+instance FromJSON Date where
+    parseJSON (Object v) = Date
+        <$> v .: "date"
+
 instance ToJSON DateFormatter where
     toJSON (DateFormatter dateFormatterDateFormatter) =
         object $ foldMap (maybe [] pure)
@@ -3181,6 +3261,16 @@ instance FromJSON Delete where
     parseJSON (Object v) = Delete
         <$> v .: "delete"
 
+instance ToJSON DeserializationFeature where
+    toJSON (DeserializationFeature deserializationFeatureDeserializationFeature) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "DeserializationFeature" .= deserializationFeatureDeserializationFeature
+        ]
+
+instance FromJSON DeserializationFeature where
+    parseJSON (Object v) = DeserializationFeature
+        <$> v .: "DeserializationFeature"
+
 instance ToJSON Dict where
     toJSON (Dict dictDict) =
         object $ foldMap (maybe [] pure)
@@ -3221,6 +3311,16 @@ instance FromJSON DoubleClass where
     parseJSON (Object v) = DoubleClass
         <$> v .: "double"
 
+instance ToJSON DoubleNode where
+    toJSON (DoubleNode doubleNodeDoubleNode) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "DoubleNode" .= doubleNodeDoubleNode
+        ]
+
+instance FromJSON DoubleNode where
+    parseJSON (Object v) = DoubleNode
+        <$> v .: "DoubleNode"
+
 instance ToJSON Dynamic where
     toJSON (Dynamic dynamicDynamic) =
         object $ foldMap (maybe [] pure)
@@ -3561,46 +3661,6 @@ instance FromJSON Function where
     parseJSON (Object v) = Function
         <$> v .: "function"
 
-instance ToJSON Get where
-    toJSON (Get getGet) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "get" .= getGet
-        ]
-
-instance FromJSON Get where
-    parseJSON (Object v) = Get
-        <$> v .: "get"
-
-instance ToJSON Global where
-    toJSON (Global globalGlobal) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "global" .= globalGlobal
-        ]
-
-instance FromJSON Global where
-    parseJSON (Object v) = Global
-        <$> v .: "global"
-
-instance ToJSON Go where
-    toJSON (Go goGo) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "go" .= goGo
-        ]
-
-instance FromJSON Go where
-    parseJSON (Object v) = Go
-        <$> v .: "go"
-
-instance ToJSON Goto where
-    toJSON (Goto gotoGoto) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "goto" .= gotoGoto
-        ]
-
-instance FromJSON Goto where
-    parseJSON (Object v) = Goto
-        <$> v .: "goto"
-
 instance ToJSON Default where
     toJSON (Default defaultDefaultDefault) =
         object $ foldMap (maybe [] pure)
@@ -3642,9 +3702,13 @@ instance FromJSON Obj2False where
         <$> v .: "false"
 
 instance ToJSON Obj3 where
-    toJSON (Obj3 dummyObj3 guardObj3 hasOwnPropertyObj3 hashCodeObj3 hashableObj3 hasherObj3 impObj3 implementsObj3 implicitObj3 indirectObj3 initObj3 inlineObj3 inoutObj3 instanceofObj3 intObj3 interfaceObj3 internalObj3 isObj3 isoDateTimeOffsetConverterObj3 iterableObj3 jdecObj3 jencObj3 jpipeObj3 jsonObj3 jsonAnyObj3 jsonCodingKeyObj3 jsonConverterObj3 jsonDecoderObj3 jsonEncoderObj3 jsonExceptionObj3 jsonGeneratorObj3 jsonNodeObj3 jsonNullObj3 jsonParserObj3 jsonReaderObj3 jsonSerializerObj3 jsonTokenObj3 jsonTokenTypeObj3 jsonWriterObj3 lambdaObj3 lazyObj3 leftObj3 listObj3 localeObj3 lockObj3 longObj3 mapObj3 mapEntryObj3 metadataPropertyHandlingObj3 mutableObj3 mutatingObj3 namespaceObj3 nativeObj3 newObj3 newtonsoftObj3 nilObj3 noObj3 noexceptObj3 obj3IDObj3 obj3IfObj3 obj3ImportObj3 obj3InObj3 obj3InfixObj3 obj3LetObj3 obj3ModuleObj3) =
+    toJSON (Obj3 dummyObj3 getObj3 globalObj3 goObj3 gotoObj3 guardObj3 hasOwnPropertyObj3 hashCodeObj3 hashableObj3 hasherObj3 impObj3 implementsObj3 implicitObj3 indirectObj3 initObj3 inlineObj3 inoutObj3 instanceofObj3 intObj3 intNodeObj3 interfaceObj3 internalObj3 isObj3 isoDateTimeOffsetConverterObj3 iterableObj3 jdecObj3 jencObj3 jpipeObj3 jsonObj3 jsonAnyObj3 jsonCodingKeyObj3 jsonConverterObj3 jsonDecoderObj3 jsonEncoderObj3 jsonExceptionObj3 jsonGeneratorObj3 jsonNodeObj3 jsonNullObj3 jsonParserObj3 jsonReaderObj3 jsonSerializerObj3 jsonTokenObj3 jsonTokenTypeObj3 jsonWriterObj3 lambdaObj3 lazyObj3 leftObj3 listObj3 localeObj3 lockObj3 longObj3 longNodeObj3 mapObj3 mapEntryObj3 metadataPropertyHandlingObj3 mutableObj3 mutatingObj3 namespaceObj3 obj3IDObj3 obj3IfObj3 obj3ImportObj3 obj3InObj3 obj3InfixObj3 obj3LetObj3 obj3ModuleObj3) =
         object $ foldMap (maybe [] pure)
         [ Just $ "dummy" .= dummyObj3
+        , Just $ "get" .= getObj3
+        , Just $ "global" .= globalObj3
+        , Just $ "go" .= goObj3
+        , Just $ "goto" .= gotoObj3
         , Just $ "guard" .= guardObj3
         , Just $ "hasOwnProperty" .= hasOwnPropertyObj3
         , Just $ "hashCode" .= hashCodeObj3
@@ -3659,6 +3723,7 @@ instance ToJSON Obj3 where
         , Just $ "inout" .= inoutObj3
         , Just $ "instanceof" .= instanceofObj3
         , Just $ "int" .= intObj3
+        , Just $ "IntNode" .= intNodeObj3
         , Just $ "interface" .= interfaceObj3
         , Just $ "internal" .= internalObj3
         , Just $ "is" .= isObj3
@@ -3690,18 +3755,13 @@ instance ToJSON Obj3 where
         , Just $ "Locale" .= localeObj3
         , Just $ "lock" .= lockObj3
         , Just $ "long" .= longObj3
+        , Just $ "LongNode" .= longNodeObj3
         , Just $ "map" .= mapObj3
         , Just $ "MapEntry" .= mapEntryObj3
         , Just $ "metadata_property_handling" .= metadataPropertyHandlingObj3
         , Just $ "mutable" .= mutableObj3
         , Just $ "mutating" .= mutatingObj3
         , Just $ "namespace" .= namespaceObj3
-        , Just $ "native" .= nativeObj3
-        , Just $ "new" .= newObj3
-        , Just $ "newtonsoft" .= newtonsoftObj3
-        , Just $ "nil" .= nilObj3
-        , Just $ "NO" .= noObj3
-        , Just $ "noexcept" .= noexceptObj3
         , Just $ "id" .= obj3IDObj3
         , Just $ "if" .= obj3IfObj3
         , Just $ "import" .= obj3ImportObj3
@@ -3714,6 +3774,10 @@ instance ToJSON Obj3 where
 instance FromJSON Obj3 where
     parseJSON (Object v) = Obj3
         <$> v .: "dummy"
+        <*> v .: "get"
+        <*> v .: "global"
+        <*> v .: "go"
+        <*> v .: "goto"
         <*> v .: "guard"
         <*> v .: "hasOwnProperty"
         <*> v .: "hashCode"
@@ -3728,6 +3792,7 @@ instance FromJSON Obj3 where
         <*> v .: "inout"
         <*> v .: "instanceof"
         <*> v .: "int"
+        <*> v .: "IntNode"
         <*> v .: "interface"
         <*> v .: "internal"
         <*> v .: "is"
@@ -3759,18 +3824,13 @@ instance FromJSON Obj3 where
         <*> v .: "Locale"
         <*> v .: "lock"
         <*> v .: "long"
+        <*> v .: "LongNode"
         <*> v .: "map"
         <*> v .: "MapEntry"
         <*> v .: "metadata_property_handling"
         <*> v .: "mutable"
         <*> v .: "mutating"
         <*> v .: "namespace"
-        <*> v .: "native"
-        <*> v .: "new"
-        <*> v .: "newtonsoft"
-        <*> v .: "nil"
-        <*> v .: "NO"
-        <*> v .: "noexcept"
         <*> v .: "id"
         <*> v .: "if"
         <*> v .: "import"
@@ -3779,6 +3839,46 @@ instance FromJSON Obj3 where
         <*> v .: "let"
         <*> v .: "module"
 
+instance ToJSON Get where
+    toJSON (Get getGet) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "get" .= getGet
+        ]
+
+instance FromJSON Get where
+    parseJSON (Object v) = Get
+        <$> v .: "get"
+
+instance ToJSON Global where
+    toJSON (Global globalGlobal) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "global" .= globalGlobal
+        ]
+
+instance FromJSON Global where
+    parseJSON (Object v) = Global
+        <$> v .: "global"
+
+instance ToJSON Go where
+    toJSON (Go goGo) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "go" .= goGo
+        ]
+
+instance FromJSON Go where
+    parseJSON (Object v) = Go
+        <$> v .: "go"
+
+instance ToJSON Goto where
+    toJSON (Goto gotoGoto) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "goto" .= gotoGoto
+        ]
+
+instance FromJSON Goto where
+    parseJSON (Object v) = Goto
+        <$> v .: "goto"
+
 instance ToJSON Guard where
     toJSON (Guard guardGuard) =
         object $ foldMap (maybe [] pure)
@@ -3919,6 +4019,16 @@ instance FromJSON IntClass where
     parseJSON (Object v) = IntClass
         <$> v .: "int"
 
+instance ToJSON IntNode where
+    toJSON (IntNode intNodeIntNode) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "IntNode" .= intNodeIntNode
+        ]
+
+instance FromJSON IntNode where
+    parseJSON (Object v) = IntNode
+        <$> v .: "IntNode"
+
 instance ToJSON Interface where
     toJSON (Interface interfaceInterface) =
         object $ foldMap (maybe [] pure)
@@ -4229,6 +4339,16 @@ instance FromJSON Long where
     parseJSON (Object v) = Long
         <$> v .: "long"
 
+instance ToJSON LongNode where
+    toJSON (LongNode longNodeLongNode) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "LongNode" .= longNodeLongNode
+        ]
+
+instance FromJSON LongNode where
+    parseJSON (Object v) = LongNode
+        <$> v .: "LongNode"
+
 instance ToJSON MapClass where
     toJSON (MapClass mapMapClass) =
         object $ foldMap (maybe [] pure)
@@ -4289,66 +4409,6 @@ instance FromJSON Namespace where
     parseJSON (Object v) = Namespace
         <$> v .: "namespace"
 
-instance ToJSON Native where
-    toJSON (Native nativeNative) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "native" .= nativeNative
-        ]
-
-instance FromJSON Native where
-    parseJSON (Object v) = Native
-        <$> v .: "native"
-
-instance ToJSON New where
-    toJSON (New newNew) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "new" .= newNew
-        ]
-
-instance FromJSON New where
-    parseJSON (Object v) = New
-        <$> v .: "new"
-
-instance ToJSON Newtonsoft where
-    toJSON (Newtonsoft newtonsoftNewtonsoft) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "newtonsoft" .= newtonsoftNewtonsoft
-        ]
-
-instance FromJSON Newtonsoft where
-    parseJSON (Object v) = Newtonsoft
-        <$> v .: "newtonsoft"
-
-instance ToJSON Nil where
-    toJSON (Nil nilNil) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "nil" .= nilNil
-        ]
-
-instance FromJSON Nil where
-    parseJSON (Object v) = Nil
-        <$> v .: "nil"
-
-instance ToJSON No where
-    toJSON (No noNo) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "NO" .= noNo
-        ]
-
-instance FromJSON No where
-    parseJSON (Object v) = No
-        <$> v .: "NO"
-
-instance ToJSON Noexcept where
-    toJSON (Noexcept noexceptNoexcept) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "noexcept" .= noexceptNoexcept
-        ]
-
-instance FromJSON Noexcept where
-    parseJSON (Object v) = Noexcept
-        <$> v .: "noexcept"
-
 instance ToJSON ID where
     toJSON (ID idIDID) =
         object $ foldMap (maybe [] pure)
@@ -4420,10 +4480,16 @@ instance FromJSON Module where
         <$> v .: "module"
 
 instance ToJSON Obj4 where
-    toJSON (Obj4 dummyObj4 noSuchMethodObj4 nonatomicObj4 noneObj4 nonlocalObj4 nonmutatingObj4 notObj4 notEqObj4 nsErrorObj4 nsObjectObj4 nsStringObj4 nullObj4 nullptrObj4 numberObj4 obj4NoneObj4 obj4NullObj4 obj4OfObj4 obj4ProtocolObj4 objectObj4 objectMapperObj4 onewayObj4 openObj4 operatorObj4 optionalObj4 orObj4 orEqObj4 outObj4 overrideObj4 packageObj4 paramsObj4 passObj4 portObj4 postfixObj4 precedenceObj4 prefixObj4 printObj4 printMembersObj4 printfObj4 privateObj4 protectedObj4 protocolObj4 publicObj4 quicktypeObj4 raiseObj4 rangeObj4 readonlyObj4 refObj4 regExpObj4 registerObj4 reinterpretCastObj4 repeatObj4 requireObj4 requiredObj4 requiresObj4 restrictObj4 retainObj4 rethrowsObj4 returnObj4 rightObj4 runtimeTypeObj4 sObj4 sbyteObj4 sealedObj4 selObj4 selectObj4) =
+    toJSON (Obj4 dummyObj4 nativeObj4 newObj4 newtonsoftObj4 nilObj4 noObj4 noSuchMethodObj4 noexceptObj4 nonatomicObj4 noneObj4 nonlocalObj4 nonmutatingObj4 notObj4 notEqObj4 nsErrorObj4 nsObjectObj4 nsStringObj4 nullObj4 nullNodeObj4 nullptrObj4 numberObj4 obj4NoneObj4 obj4NullObj4 obj4OfObj4 obj4ProtocolObj4 objectObj4 objectMapperObj4 objectNodeObj4 onewayObj4 openObj4 operatorObj4 optionalObj4 orObj4 orEqObj4 outObj4 overrideObj4 packageObj4 paramsObj4 passObj4 portObj4 postfixObj4 precedenceObj4 prefixObj4 printObj4 printMembersObj4 printfObj4 privateObj4 protectedObj4 protocolObj4 publicObj4 quicktypeObj4 raiseObj4 rangeObj4 readonlyObj4 refObj4 regExpObj4 registerObj4 reinterpretCastObj4 repeatObj4 requireObj4 requiredObj4 requiresObj4 restrictObj4 retainObj4 rethrowsObj4) =
         object $ foldMap (maybe [] pure)
         [ Just $ "dummy" .= dummyObj4
+        , Just $ "native" .= nativeObj4
+        , Just $ "new" .= newObj4
+        , Just $ "newtonsoft" .= newtonsoftObj4
+        , Just $ "nil" .= nilObj4
+        , Just $ "NO" .= noObj4
         , Just $ "noSuchMethod" .= noSuchMethodObj4
+        , Just $ "noexcept" .= noexceptObj4
         , Just $ "nonatomic" .= nonatomicObj4
         , Just $ "None" .= noneObj4
         , Just $ "nonlocal" .= nonlocalObj4
@@ -4434,6 +4500,7 @@ instance ToJSON Obj4 where
         , Just $ "NSObject" .= nsObjectObj4
         , Just $ "NSString" .= nsStringObj4
         , Just $ "NULL" .= nullObj4
+        , Just $ "NullNode" .= nullNodeObj4
         , Just $ "nullptr" .= nullptrObj4
         , Just $ "number" .= numberObj4
         , Just $ "none" .= obj4NoneObj4
@@ -4442,6 +4509,7 @@ instance ToJSON Obj4 where
         , Just $ "protocol" .= obj4ProtocolObj4
         , Just $ "object" .= objectObj4
         , Just $ "ObjectMapper" .= objectMapperObj4
+        , Just $ "ObjectNode" .= objectNodeObj4
         , Just $ "oneway" .= onewayObj4
         , Just $ "open" .= openObj4
         , Just $ "operator" .= operatorObj4
@@ -4479,20 +4547,18 @@ instance ToJSON Obj4 where
         , Just $ "restrict" .= restrictObj4
         , Just $ "retain" .= retainObj4
         , Just $ "rethrows" .= rethrowsObj4
-        , Just $ "return" .= returnObj4
-        , Just $ "right" .= rightObj4
-        , Just $ "runtimeType" .= runtimeTypeObj4
-        , Just $ "s" .= sObj4
-        , Just $ "sbyte" .= sbyteObj4
-        , Just $ "sealed" .= sealedObj4
-        , Just $ "SEL" .= selObj4
-        , Just $ "select" .= selectObj4
         ]
 
 instance FromJSON Obj4 where
     parseJSON (Object v) = Obj4
         <$> v .: "dummy"
+        <*> v .: "native"
+        <*> v .: "new"
+        <*> v .: "newtonsoft"
+        <*> v .: "nil"
+        <*> v .: "NO"
         <*> v .: "noSuchMethod"
+        <*> v .: "noexcept"
         <*> v .: "nonatomic"
         <*> v .: "None"
         <*> v .: "nonlocal"
@@ -4503,6 +4569,7 @@ instance FromJSON Obj4 where
         <*> v .: "NSObject"
         <*> v .: "NSString"
         <*> v .: "NULL"
+        <*> v .: "NullNode"
         <*> v .: "nullptr"
         <*> v .: "number"
         <*> v .: "none"
@@ -4511,6 +4578,7 @@ instance FromJSON Obj4 where
         <*> v .: "protocol"
         <*> v .: "object"
         <*> v .: "ObjectMapper"
+        <*> v .: "ObjectNode"
         <*> v .: "oneway"
         <*> v .: "open"
         <*> v .: "operator"
@@ -4548,24 +4616,76 @@ instance FromJSON Obj4 where
         <*> v .: "restrict"
         <*> v .: "retain"
         <*> v .: "rethrows"
-        <*> v .: "return"
-        <*> v .: "right"
-        <*> v .: "runtimeType"
-        <*> v .: "s"
-        <*> v .: "sbyte"
-        <*> v .: "sealed"
-        <*> v .: "SEL"
-        <*> v .: "select"
 
-instance ToJSON NoSuchMethod where
-    toJSON (NoSuchMethod noSuchMethodNoSuchMethod) =
+instance ToJSON Native where
+    toJSON (Native nativeNative) =
         object $ foldMap (maybe [] pure)
-        [ Just $ "noSuchMethod" .= noSuchMethodNoSuchMethod
+        [ Just $ "native" .= nativeNative
         ]
 
-instance FromJSON NoSuchMethod where
-    parseJSON (Object v) = NoSuchMethod
-        <$> v .: "noSuchMethod"
+instance FromJSON Native where
+    parseJSON (Object v) = Native
+        <$> v .: "native"
+
+instance ToJSON New where
+    toJSON (New newNew) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "new" .= newNew
+        ]
+
+instance FromJSON New where
+    parseJSON (Object v) = New
+        <$> v .: "new"
+
+instance ToJSON Newtonsoft where
+    toJSON (Newtonsoft newtonsoftNewtonsoft) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "newtonsoft" .= newtonsoftNewtonsoft
+        ]
+
+instance FromJSON Newtonsoft where
+    parseJSON (Object v) = Newtonsoft
+        <$> v .: "newtonsoft"
+
+instance ToJSON Nil where
+    toJSON (Nil nilNil) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "nil" .= nilNil
+        ]
+
+instance FromJSON Nil where
+    parseJSON (Object v) = Nil
+        <$> v .: "nil"
+
+instance ToJSON No where
+    toJSON (No noNo) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "NO" .= noNo
+        ]
+
+instance FromJSON No where
+    parseJSON (Object v) = No
+        <$> v .: "NO"
+
+instance ToJSON NoSuchMethod where
+    toJSON (NoSuchMethod noSuchMethodNoSuchMethod) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "noSuchMethod" .= noSuchMethodNoSuchMethod
+        ]
+
+instance FromJSON NoSuchMethod where
+    parseJSON (Object v) = NoSuchMethod
+        <$> v .: "noSuchMethod"
+
+instance ToJSON Noexcept where
+    toJSON (Noexcept noexceptNoexcept) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "noexcept" .= noexceptNoexcept
+        ]
+
+instance FromJSON Noexcept where
+    parseJSON (Object v) = Noexcept
+        <$> v .: "noexcept"
 
 instance ToJSON Nonatomic where
     toJSON (Nonatomic nonatomicNonatomic) =
@@ -4667,6 +4787,16 @@ instance FromJSON NULLClass where
     parseJSON (Object v) = NULLClass
         <$> v .: "NULL"
 
+instance ToJSON NullNode where
+    toJSON (NullNode nullNodeNullNode) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "NullNode" .= nullNodeNullNode
+        ]
+
+instance FromJSON NullNode where
+    parseJSON (Object v) = NullNode
+        <$> v .: "NullNode"
+
 instance ToJSON Nullptr where
     toJSON (Nullptr nullptrNullptr) =
         object $ foldMap (maybe [] pure)
@@ -4747,6 +4877,16 @@ instance FromJSON ObjectMapper where
     parseJSON (Object v) = ObjectMapper
         <$> v .: "ObjectMapper"
 
+instance ToJSON ObjectNode where
+    toJSON (ObjectNode objectNodeObjectNode) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "ObjectNode" .= objectNodeObjectNode
+        ]
+
+instance FromJSON ObjectNode where
+    parseJSON (Object v) = ObjectNode
+        <$> v .: "ObjectNode"
+
 instance ToJSON Oneway where
     toJSON (Oneway onewayOneway) =
         object $ foldMap (maybe [] pure)
@@ -5117,88 +5257,8 @@ instance FromJSON Rethrows where
     parseJSON (Object v) = Rethrows
         <$> v .: "rethrows"
 
-instance ToJSON Return where
-    toJSON (Return returnReturn) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "return" .= returnReturn
-        ]
-
-instance FromJSON Return where
-    parseJSON (Object v) = Return
-        <$> v .: "return"
-
-instance ToJSON RightClass where
-    toJSON (RightClass rightRightClass) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "right" .= rightRightClass
-        ]
-
-instance FromJSON RightClass where
-    parseJSON (Object v) = RightClass
-        <$> v .: "right"
-
-instance ToJSON RuntimeType where
-    toJSON (RuntimeType runtimeTypeRuntimeType) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "runtimeType" .= runtimeTypeRuntimeType
-        ]
-
-instance FromJSON RuntimeType where
-    parseJSON (Object v) = RuntimeType
-        <$> v .: "runtimeType"
-
-instance ToJSON S where
-    toJSON (S sS) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "s" .= sS
-        ]
-
-instance FromJSON S where
-    parseJSON (Object v) = S
-        <$> v .: "s"
-
-instance ToJSON Sbyte where
-    toJSON (Sbyte sbyteSbyte) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "sbyte" .= sbyteSbyte
-        ]
-
-instance FromJSON Sbyte where
-    parseJSON (Object v) = Sbyte
-        <$> v .: "sbyte"
-
-instance ToJSON Sealed where
-    toJSON (Sealed sealedSealed) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "sealed" .= sealedSealed
-        ]
-
-instance FromJSON Sealed where
-    parseJSON (Object v) = Sealed
-        <$> v .: "sealed"
-
-instance ToJSON Sel where
-    toJSON (Sel selSel) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "SEL" .= selSel
-        ]
-
-instance FromJSON Sel where
-    parseJSON (Object v) = Sel
-        <$> v .: "SEL"
-
-instance ToJSON Select where
-    toJSON (Select selectSelect) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "select" .= selectSelect
-        ]
-
-instance FromJSON Select where
-    parseJSON (Object v) = Select
-        <$> 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 obj5SelfObj5 obj5ThenObj5 obj5TrueObj5 obj5TypeObj5 purpleTypeObj5 returnObj5 rightObj5 runtimeTypeObj5 sObj5 sbyteObj5 sealedObj5 selObj5 selectObj5 selfObj5 sendableObj5 serializationFeatureObj5 serializeObj5 serializerProviderObj5 setObj5 shortObj5 signedObj5 simpleModuleObj5 sizeofObj5 stackallocObj5 standardsObj5 staticObj5 staticAssertObj5 staticCastObj5 stdDeserializerObj5 stdSerializerObj5 strictfpObj5 stringObj5 structObj5 subscriptObj5 superObj5 switchObj5 symbolObj5 synchronizedObj5 systemObj5 templateObj5 textNodeObj5 thisObj5 threadLocalObj5 throwObj5 throwsObj5 timeOnlyObj5 timeOnlyConverterObj5 timeZoneObj5 toJSONObj5 toStringObj5 topLevelObj5 transientObj5 trueObj5 tryObj5 typealiasObj5 typedefObj5 typeidObj5 typenameObj5 typeofObj5 uintObj5 ulongObj5 uncheckedObj5 undefinedObj5 unionObj5) =
         object $ foldMap (maybe [] pure)
         [ Just $ "dummy" .= dummyObj5
         , Just $ "self" .= obj5SelfObj5
@@ -5206,8 +5266,17 @@ instance ToJSON Obj5 where
         , Just $ "true" .= obj5TrueObj5
         , Just $ "Type" .= obj5TypeObj5
         , Just $ "type" .= purpleTypeObj5
+        , Just $ "return" .= returnObj5
+        , Just $ "right" .= rightObj5
+        , Just $ "runtimeType" .= runtimeTypeObj5
+        , Just $ "s" .= sObj5
+        , Just $ "sbyte" .= sbyteObj5
+        , Just $ "sealed" .= sealedObj5
+        , Just $ "SEL" .= selObj5
+        , Just $ "select" .= selectObj5
         , Just $ "Self" .= selfObj5
         , Just $ "Sendable" .= sendableObj5
+        , Just $ "SerializationFeature" .= serializationFeatureObj5
         , Just $ "serialize" .= serializeObj5
         , Just $ "SerializerProvider" .= serializerProviderObj5
         , Just $ "set" .= setObj5
@@ -5232,6 +5301,7 @@ instance ToJSON Obj5 where
         , Just $ "synchronized" .= synchronizedObj5
         , Just $ "system" .= systemObj5
         , Just $ "template" .= templateObj5
+        , Just $ "TextNode" .= textNodeObj5
         , Just $ "this" .= thisObj5
         , Just $ "thread_local" .= threadLocalObj5
         , Just $ "throw" .= throwObj5
@@ -5255,16 +5325,6 @@ instance ToJSON Obj5 where
         , Just $ "unchecked" .= uncheckedObj5
         , Just $ "undefined" .= undefinedObj5
         , Just $ "union" .= unionObj5
-        , Just $ "unowned" .= unownedObj5
-        , Just $ "unsafe" .= unsafeObj5
-        , Just $ "unsigned" .= unsignedObj5
-        , 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
@@ -5275,8 +5335,17 @@ instance FromJSON Obj5 where
         <*> v .: "true"
         <*> v .: "Type"
         <*> v .: "type"
+        <*> v .: "return"
+        <*> v .: "right"
+        <*> v .: "runtimeType"
+        <*> v .: "s"
+        <*> v .: "sbyte"
+        <*> v .: "sealed"
+        <*> v .: "SEL"
+        <*> v .: "select"
         <*> v .: "Self"
         <*> v .: "Sendable"
+        <*> v .: "SerializationFeature"
         <*> v .: "serialize"
         <*> v .: "SerializerProvider"
         <*> v .: "set"
@@ -5301,6 +5370,7 @@ instance FromJSON Obj5 where
         <*> v .: "synchronized"
         <*> v .: "system"
         <*> v .: "template"
+        <*> v .: "TextNode"
         <*> v .: "this"
         <*> v .: "thread_local"
         <*> v .: "throw"
@@ -5324,16 +5394,6 @@ instance FromJSON Obj5 where
         <*> v .: "unchecked"
         <*> v .: "undefined"
         <*> v .: "union"
-        <*> v .: "unowned"
-        <*> v .: "unsafe"
-        <*> v .: "unsigned"
-        <*> v .: "ushort"
-        <*> v .: "using"
-        <*> v .: "Utf8JsonReader"
-        <*> v .: "Utf8JsonWriter"
-        <*> v .: "UUID"
-        <*> v .: "var"
-        <*> v .: "virtual"
 
 instance ToJSON SelfClass where
     toJSON (SelfClass selfSelfClass) =
@@ -5385,6 +5445,86 @@ instance FromJSON TypeClass where
     parseJSON (Object v) = TypeClass
         <$> v .: "type"
 
+instance ToJSON Return where
+    toJSON (Return returnReturn) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "return" .= returnReturn
+        ]
+
+instance FromJSON Return where
+    parseJSON (Object v) = Return
+        <$> v .: "return"
+
+instance ToJSON RightClass where
+    toJSON (RightClass rightRightClass) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "right" .= rightRightClass
+        ]
+
+instance FromJSON RightClass where
+    parseJSON (Object v) = RightClass
+        <$> v .: "right"
+
+instance ToJSON RuntimeType where
+    toJSON (RuntimeType runtimeTypeRuntimeType) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "runtimeType" .= runtimeTypeRuntimeType
+        ]
+
+instance FromJSON RuntimeType where
+    parseJSON (Object v) = RuntimeType
+        <$> v .: "runtimeType"
+
+instance ToJSON S where
+    toJSON (S sS) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "s" .= sS
+        ]
+
+instance FromJSON S where
+    parseJSON (Object v) = S
+        <$> v .: "s"
+
+instance ToJSON Sbyte where
+    toJSON (Sbyte sbyteSbyte) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "sbyte" .= sbyteSbyte
+        ]
+
+instance FromJSON Sbyte where
+    parseJSON (Object v) = Sbyte
+        <$> v .: "sbyte"
+
+instance ToJSON Sealed where
+    toJSON (Sealed sealedSealed) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "sealed" .= sealedSealed
+        ]
+
+instance FromJSON Sealed where
+    parseJSON (Object v) = Sealed
+        <$> v .: "sealed"
+
+instance ToJSON Sel where
+    toJSON (Sel selSel) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "SEL" .= selSel
+        ]
+
+instance FromJSON Sel where
+    parseJSON (Object v) = Sel
+        <$> v .: "SEL"
+
+instance ToJSON Select where
+    toJSON (Select selectSelect) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "select" .= selectSelect
+        ]
+
+instance FromJSON Select where
+    parseJSON (Object v) = Select
+        <$> v .: "select"
+
 instance ToJSON Self where
     toJSON (Self selfSelf) =
         object $ foldMap (maybe [] pure)
@@ -5405,6 +5545,16 @@ instance FromJSON Sendable where
     parseJSON (Object v) = Sendable
         <$> v .: "Sendable"
 
+instance ToJSON SerializationFeature where
+    toJSON (SerializationFeature serializationFeatureSerializationFeature) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "SerializationFeature" .= serializationFeatureSerializationFeature
+        ]
+
+instance FromJSON SerializationFeature where
+    parseJSON (Object v) = SerializationFeature
+        <$> v .: "SerializationFeature"
+
 instance ToJSON Serialize where
     toJSON (Serialize serializeSerialize) =
         object $ foldMap (maybe [] pure)
@@ -5645,6 +5795,16 @@ instance FromJSON Template where
     parseJSON (Object v) = Template
         <$> v .: "template"
 
+instance ToJSON TextNode where
+    toJSON (TextNode textNodeTextNode) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "TextNode" .= textNodeTextNode
+        ]
+
+instance FromJSON TextNode where
+    parseJSON (Object v) = TextNode
+        <$> v .: "TextNode"
+
 instance ToJSON This where
     toJSON (This thisThis) =
         object $ foldMap (maybe [] pure)
@@ -5875,6 +6035,70 @@ instance FromJSON Union where
     parseJSON (Object v) = Union
         <$> v .: "union"
 
+instance ToJSON Obj6 where
+    toJSON (Obj6 dummyObj6 obj6WhereObj6 unownedObj6 unsafeObj6 unsignedObj6 ushortObj6 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 $ "unowned" .= unownedObj6
+        , Just $ "unsafe" .= unsafeObj6
+        , Just $ "unsigned" .= unsignedObj6
+        , Just $ "ushort" .= ushortObj6
+        , 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 .: "unowned"
+        <*> v .: "unsafe"
+        <*> v .: "unsigned"
+        <*> v .: "ushort"
+        <*> 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 Unowned where
     toJSON (Unowned unownedUnowned) =
         object $ foldMap (maybe [] pure)
@@ -5975,50 +6199,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/ArrayNode.java b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/ArrayNode.java
new file mode 100644
index 0000000..8ce888a
--- /dev/null
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/ArrayNode.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class ArrayNode {
+    private long arrayNode;
+
+    @JsonProperty("ArrayNode")
+    public long getArrayNode() { return arrayNode; }
+    @JsonProperty("ArrayNode")
+    public void setArrayNode(long value) { this.arrayNode = value; }
+}
diff --git a/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/BooleanNode.java b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/BooleanNode.java
new file mode 100644
index 0000000..4d481b7
--- /dev/null
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/BooleanNode.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class BooleanNode {
+    private long booleanNode;
+
+    @JsonProperty("BooleanNode")
+    public long getBooleanNode() { return booleanNode; }
+    @JsonProperty("BooleanNode")
+    public void setBooleanNode(long value) { this.booleanNode = value; }
+}
diff --git a/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/DeserializationFeature.java b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/DeserializationFeature.java
new file mode 100644
index 0000000..32cc2d0
--- /dev/null
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/DeserializationFeature.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class DeserializationFeature {
+    private long deserializationFeature;
+
+    @JsonProperty("DeserializationFeature")
+    public long getDeserializationFeature() { return deserializationFeature; }
+    @JsonProperty("DeserializationFeature")
+    public void setDeserializationFeature(long value) { this.deserializationFeature = value; }
+}
diff --git a/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/DoubleNode.java b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/DoubleNode.java
new file mode 100644
index 0000000..cb1ef00
--- /dev/null
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/DoubleNode.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class DoubleNode {
+    private long doubleNode;
+
+    @JsonProperty("DoubleNode")
+    public long getDoubleNode() { return doubleNode; }
+    @JsonProperty("DoubleNode")
+    public void setDoubleNode(long value) { this.doubleNode = value; }
+}
diff --git a/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/IntNode.java b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/IntNode.java
new file mode 100644
index 0000000..1a75621
--- /dev/null
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/IntNode.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class IntNode {
+    private long intNode;
+
+    @JsonProperty("IntNode")
+    public long getIntNode() { return intNode; }
+    @JsonProperty("IntNode")
+    public void setIntNode(long value) { this.intNode = value; }
+}
diff --git a/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/LongNode.java b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/LongNode.java
new file mode 100644
index 0000000..dfa5d29
--- /dev/null
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/LongNode.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class LongNode {
+    private long longNode;
+
+    @JsonProperty("LongNode")
+    public long getLongNode() { return longNode; }
+    @JsonProperty("LongNode")
+    public void setLongNode(long value) { this.longNode = value; }
+}
diff --git a/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/NullNode.java b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/NullNode.java
new file mode 100644
index 0000000..260145b
--- /dev/null
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/NullNode.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class NullNode {
+    private long nullNode;
+
+    @JsonProperty("NullNode")
+    public long getNullNode() { return nullNode; }
+    @JsonProperty("NullNode")
+    public void setNullNode(long value) { this.nullNode = value; }
+}
diff --git a/base/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj1.java b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj1.java
index 54d34df..304ed7d 100644
--- a/base/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj1.java
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj1.java
@@ -9,6 +9,7 @@ public class Obj1 {
     private AndEq andEq;
     private Any any;
     private Array array;
+    private ArrayNode arrayNode;
     private As as;
     private ASM asm;
     private Associatedtype associatedtype;
@@ -24,6 +25,7 @@ public class Obj1 {
     private Bitand bitand;
     private Bitor bitor;
     private Bool bool;
+    private BooleanNode booleanNode;
     private Bycopy bycopy;
     private Byref byref;
     private Calendar calendar;
@@ -48,8 +50,6 @@ public class Obj1 {
     private Convenience convenience;
     private Convert convert;
     private ConverterClass converter;
-    private CultureInfo cultureInfo;
-    private Date date;
     private long dummy;
     private Empty empty;
     private Imaginery imaginery;
@@ -99,6 +99,11 @@ public class Obj1 {
     @JsonProperty("array")
     public void setArray(Array value) { this.array = value; }
 
+    @JsonProperty("ArrayNode")
+    public ArrayNode getArrayNode() { return arrayNode; }
+    @JsonProperty("ArrayNode")
+    public void setArrayNode(ArrayNode value) { this.arrayNode = value; }
+
     @JsonProperty("as")
     public As getAs() { return as; }
     @JsonProperty("as")
@@ -174,6 +179,11 @@ public class Obj1 {
     @JsonProperty("BOOL")
     public void setBool(Bool value) { this.bool = value; }
 
+    @JsonProperty("BooleanNode")
+    public BooleanNode getBooleanNode() { return booleanNode; }
+    @JsonProperty("BooleanNode")
+    public void setBooleanNode(BooleanNode value) { this.booleanNode = value; }
+
     @JsonProperty("bycopy")
     public Bycopy getBycopy() { return bycopy; }
     @JsonProperty("bycopy")
@@ -294,16 +304,6 @@ public class Obj1 {
     @JsonProperty("converter")
     public void setConverter(ConverterClass value) { this.converter = value; }
 
-    @JsonProperty("CultureInfo")
-    public CultureInfo getCultureInfo() { return cultureInfo; }
-    @JsonProperty("CultureInfo")
-    public void setCultureInfo(CultureInfo value) { this.cultureInfo = value; }
-
-    @JsonProperty("date")
-    public Date getDate() { return date; }
-    @JsonProperty("date")
-    public void setDate(Date value) { this.date = value; }
-
     @JsonProperty("dummy")
     public long getDummy() { return dummy; }
     @JsonProperty("dummy")
diff --git a/base/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj2.java b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj2.java
index cfe0a34..d55ee8a 100644
--- a/base/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj2.java
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj2.java
@@ -3,6 +3,8 @@ package io.quicktype;
 import com.fasterxml.jackson.annotation.*;
 
 public class Obj2 {
+    private CultureInfo cultureInfo;
+    private Date date;
     private DateFormatter dateFormatter;
     private DateOnly dateOnly;
     private DateOnlyConverter dateOnlyConverter;
@@ -22,9 +24,11 @@ public class Obj2 {
     private Del del;
     private Delegate delegate;
     private Delete delete;
+    private DeserializationFeature deserializationFeature;
     private Dict dict;
     private Dictionary dictionary;
     private DidSet didSet;
+    private DoubleNode doubleNode;
     private long dummy;
     private Dynamic dynamic;
     private DynamicCast dynamicCast;
@@ -52,9 +56,6 @@ public class Obj2 {
     private FromJSON fromJSON;
     private Func func;
     private Function function;
-    private Get get;
-    private Global global;
-    private Go go;
     private Default obj2Default;
     private Do obj2Do;
     private DoubleClass obj2Double;
@@ -66,9 +67,18 @@ public class Obj2 {
     private Finally obj2Finally;
     private Float obj2Float;
     private For obj2For;
-    private Goto obj2Goto;
     private FalseClass purpleFalse;
 
+    @JsonProperty("CultureInfo")
+    public CultureInfo getCultureInfo() { return cultureInfo; }
+    @JsonProperty("CultureInfo")
+    public void setCultureInfo(CultureInfo value) { this.cultureInfo = value; }
+
+    @JsonProperty("date")
+    public Date getDate() { return date; }
+    @JsonProperty("date")
+    public void setDate(Date value) { this.date = value; }
+
     @JsonProperty("DateFormatter")
     public DateFormatter getDateFormatter() { return dateFormatter; }
     @JsonProperty("DateFormatter")
@@ -164,6 +174,11 @@ public class Obj2 {
     @JsonProperty("delete")
     public void setDelete(Delete value) { this.delete = value; }
 
+    @JsonProperty("DeserializationFeature")
+    public DeserializationFeature getDeserializationFeature() { return deserializationFeature; }
+    @JsonProperty("DeserializationFeature")
+    public void setDeserializationFeature(DeserializationFeature value) { this.deserializationFeature = value; }
+
     @JsonProperty("dict")
     public Dict getDict() { return dict; }
     @JsonProperty("dict")
@@ -179,6 +194,11 @@ public class Obj2 {
     @JsonProperty("didSet")
     public void setDidSet(DidSet value) { this.didSet = value; }
 
+    @JsonProperty("DoubleNode")
+    public DoubleNode getDoubleNode() { return doubleNode; }
+    @JsonProperty("DoubleNode")
+    public void setDoubleNode(DoubleNode value) { this.doubleNode = value; }
+
     @JsonProperty("dummy")
     public long getDummy() { return dummy; }
     @JsonProperty("dummy")
@@ -314,21 +334,6 @@ public class Obj2 {
     @JsonProperty("function")
     public void setFunction(Function value) { this.function = value; }
 
-    @JsonProperty("get")
-    public Get getGet() { return get; }
-    @JsonProperty("get")
-    public void setGet(Get value) { this.get = value; }
-
-    @JsonProperty("global")
-    public Global getGlobal() { return global; }
-    @JsonProperty("global")
-    public void setGlobal(Global value) { this.global = value; }
-
-    @JsonProperty("go")
-    public Go getGo() { return go; }
-    @JsonProperty("go")
-    public void setGo(Go value) { this.go = value; }
-
     @JsonProperty("default")
     public Default getObj2Default() { return obj2Default; }
     @JsonProperty("default")
@@ -384,11 +389,6 @@ public class Obj2 {
     @JsonProperty("for")
     public void setObj2For(For value) { this.obj2For = value; }
 
-    @JsonProperty("goto")
-    public Goto getObj2Goto() { return obj2Goto; }
-    @JsonProperty("goto")
-    public void setObj2Goto(Goto value) { this.obj2Goto = value; }
-
     @JsonProperty("false")
     public FalseClass getPurpleFalse() { return purpleFalse; }
     @JsonProperty("false")
diff --git a/base/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj3.java b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj3.java
index 1edbb6b..d36c4a0 100644
--- a/base/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj3.java
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj3.java
@@ -4,6 +4,9 @@ import com.fasterxml.jackson.annotation.*;
 
 public class Obj3 {
     private long dummy;
+    private Get get;
+    private Global global;
+    private Go go;
     private Guard guard;
     private HasOwnProperty hasOwnProperty;
     private HashCode hashCode;
@@ -18,6 +21,7 @@ public class Obj3 {
     private Init init;
     private Inline inline;
     private Inout inout;
+    private IntNode intNode;
     private Internal internal;
     private Is is;
     private ISODateTimeOffsetConverter isoDateTimeOffsetConverter;
@@ -48,6 +52,7 @@ public class Obj3 {
     private ListClass list;
     private Locale locale;
     private Lock lock;
+    private LongNode longNode;
     private MapClass map;
     private MapEntry mapEntry;
     private MetadataPropertyHandling metadataPropertyHandling;
@@ -55,10 +60,7 @@ public class Obj3 {
     private Mutable mutable;
     private Mutating mutating;
     private Namespace namespace;
-    private Newtonsoft newtonsoft;
-    private Nil nil;
-    private No no;
-    private Noexcept noexcept;
+    private Goto obj3Goto;
     private If obj3If;
     private Implements obj3Implements;
     private Import obj3Import;
@@ -66,14 +68,27 @@ public class Obj3 {
     private Int obj3Int;
     private Interface obj3Interface;
     private LongClass obj3Long;
-    private Native obj3Native;
-    private New obj3New;
 
     @JsonProperty("dummy")
     public long getDummy() { return dummy; }
     @JsonProperty("dummy")
     public void setDummy(long value) { this.dummy = value; }
 
+    @JsonProperty("get")
+    public Get getGet() { return get; }
+    @JsonProperty("get")
+    public void setGet(Get value) { this.get = value; }
+
+    @JsonProperty("global")
+    public Global getGlobal() { return global; }
+    @JsonProperty("global")
+    public void setGlobal(Global value) { this.global = value; }
+
+    @JsonProperty("go")
+    public Go getGo() { return go; }
+    @JsonProperty("go")
+    public void setGo(Go value) { this.go = value; }
+
     @JsonProperty("guard")
     public Guard getGuard() { return guard; }
     @JsonProperty("guard")
@@ -144,6 +159,11 @@ public class Obj3 {
     @JsonProperty("inout")
     public void setInout(Inout value) { this.inout = value; }
 
+    @JsonProperty("IntNode")
+    public IntNode getIntNode() { return intNode; }
+    @JsonProperty("IntNode")
+    public void setIntNode(IntNode value) { this.intNode = value; }
+
     @JsonProperty("internal")
     public Internal getInternal() { return internal; }
     @JsonProperty("internal")
@@ -294,6 +314,11 @@ public class Obj3 {
     @JsonProperty("lock")
     public void setLock(Lock value) { this.lock = value; }
 
+    @JsonProperty("LongNode")
+    public LongNode getLongNode() { return longNode; }
+    @JsonProperty("LongNode")
+    public void setLongNode(LongNode value) { this.longNode = value; }
+
     @JsonProperty("map")
     public MapClass getMap() { return map; }
     @JsonProperty("map")
@@ -329,25 +354,10 @@ public class Obj3 {
     @JsonProperty("namespace")
     public void setNamespace(Namespace value) { this.namespace = value; }
 
-    @JsonProperty("newtonsoft")
-    public Newtonsoft getNewtonsoft() { return newtonsoft; }
-    @JsonProperty("newtonsoft")
-    public void setNewtonsoft(Newtonsoft value) { this.newtonsoft = value; }
-
-    @JsonProperty("nil")
-    public Nil getNil() { return nil; }
-    @JsonProperty("nil")
-    public void setNil(Nil value) { this.nil = value; }
-
-    @JsonProperty("NO")
-    public No getNo() { return no; }
-    @JsonProperty("NO")
-    public void setNo(No value) { this.no = value; }
-
-    @JsonProperty("noexcept")
-    public Noexcept getNoexcept() { return noexcept; }
-    @JsonProperty("noexcept")
-    public void setNoexcept(Noexcept value) { this.noexcept = value; }
+    @JsonProperty("goto")
+    public Goto getObj3Goto() { return obj3Goto; }
+    @JsonProperty("goto")
+    public void setObj3Goto(Goto value) { this.obj3Goto = value; }
 
     @JsonProperty("if")
     public If getObj3If() { return obj3If; }
@@ -383,14 +393,4 @@ public class Obj3 {
     public LongClass getObj3Long() { return obj3Long; }
     @JsonProperty("long")
     public void setObj3Long(LongClass value) { this.obj3Long = value; }
-
-    @JsonProperty("native")
-    public Native getObj3Native() { return obj3Native; }
-    @JsonProperty("native")
-    public void setObj3Native(Native value) { this.obj3Native = value; }
-
-    @JsonProperty("new")
-    public New getObj3New() { return obj3New; }
-    @JsonProperty("new")
-    public void setObj3New(New value) { this.obj3New = value; }
 }
diff --git a/base/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj4.java b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj4.java
index 6003abf..a4587c4 100644
--- a/base/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj4.java
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj4.java
@@ -4,7 +4,11 @@ import com.fasterxml.jackson.annotation.*;
 
 public class Obj4 {
     private long dummy;
+    private Newtonsoft newtonsoft;
+    private Nil nil;
+    private No no;
     private NoSuchMethod noSuchMethod;
+    private Noexcept noexcept;
     private Nonatomic nonatomic;
     private NoneClass none;
     private Nonlocal nonlocal;
@@ -14,9 +18,12 @@ public class Obj4 {
     private NSError nsError;
     private NSObject nsObject;
     private NSString nsString;
+    private NullNode nullNode;
     private Nullptr nullptr;
     private Number number;
     private Null obj4NULL;
+    private Native obj4Native;
+    private New obj4New;
     private Obj4None obj4None;
     private NullClass obj4Null;
     private Package obj4Package;
@@ -24,9 +31,9 @@ public class Obj4 {
     private Protected obj4Protected;
     private ProtocolClass obj4Protocol;
     private Public obj4Public;
-    private Return obj4Return;
     private ObjectClass object;
     private ObjectMapperClass objectMapper;
+    private ObjectNode objectNode;
     private Of of;
     private Oneway oneway;
     private Open open;
@@ -61,24 +68,37 @@ public class Obj4 {
     private Restrict restrict;
     private Retain retain;
     private Rethrows rethrows;
-    private Right right;
-    private RuntimeType runtimeType;
-    private S s;
-    private Sbyte sbyte;
-    private Sealed sealed;
-    private Sel sel;
-    private Select select;
 
     @JsonProperty("dummy")
     public long getDummy() { return dummy; }
     @JsonProperty("dummy")
     public void setDummy(long value) { this.dummy = value; }
 
+    @JsonProperty("newtonsoft")
+    public Newtonsoft getNewtonsoft() { return newtonsoft; }
+    @JsonProperty("newtonsoft")
+    public void setNewtonsoft(Newtonsoft value) { this.newtonsoft = value; }
+
+    @JsonProperty("nil")
+    public Nil getNil() { return nil; }
+    @JsonProperty("nil")
+    public void setNil(Nil value) { this.nil = value; }
+
+    @JsonProperty("NO")
+    public No getNo() { return no; }
+    @JsonProperty("NO")
+    public void setNo(No value) { this.no = value; }
+
     @JsonProperty("noSuchMethod")
     public NoSuchMethod getNoSuchMethod() { return noSuchMethod; }
     @JsonProperty("noSuchMethod")
     public void setNoSuchMethod(NoSuchMethod value) { this.noSuchMethod = value; }
 
+    @JsonProperty("noexcept")
+    public Noexcept getNoexcept() { return noexcept; }
+    @JsonProperty("noexcept")
+    public void setNoexcept(Noexcept value) { this.noexcept = value; }
+
     @JsonProperty("nonatomic")
     public Nonatomic getNonatomic() { return nonatomic; }
     @JsonProperty("nonatomic")
@@ -124,6 +144,11 @@ public class Obj4 {
     @JsonProperty("NSString")
     public void setNSString(NSString value) { this.nsString = value; }
 
+    @JsonProperty("NullNode")
+    public NullNode getNullNode() { return nullNode; }
+    @JsonProperty("NullNode")
+    public void setNullNode(NullNode value) { this.nullNode = value; }
+
     @JsonProperty("nullptr")
     public Nullptr getNullptr() { return nullptr; }
     @JsonProperty("nullptr")
@@ -139,6 +164,16 @@ public class Obj4 {
     @JsonProperty("NULL")
     public void setObj4NULL(Null value) { this.obj4NULL = value; }
 
+    @JsonProperty("native")
+    public Native getObj4Native() { return obj4Native; }
+    @JsonProperty("native")
+    public void setObj4Native(Native value) { this.obj4Native = value; }
+
+    @JsonProperty("new")
+    public New getObj4New() { return obj4New; }
+    @JsonProperty("new")
+    public void setObj4New(New value) { this.obj4New = value; }
+
     @JsonProperty("none")
     public Obj4None getObj4None() { return obj4None; }
     @JsonProperty("none")
@@ -174,11 +209,6 @@ public class Obj4 {
     @JsonProperty("public")
     public void setObj4Public(Public value) { this.obj4Public = value; }
 
-    @JsonProperty("return")
-    public Return getObj4Return() { return obj4Return; }
-    @JsonProperty("return")
-    public void setObj4Return(Return value) { this.obj4Return = value; }
-
     @JsonProperty("object")
     public ObjectClass getObject() { return object; }
     @JsonProperty("object")
@@ -189,6 +219,11 @@ public class Obj4 {
     @JsonProperty("ObjectMapper")
     public void setObjectMapper(ObjectMapperClass value) { this.objectMapper = value; }
 
+    @JsonProperty("ObjectNode")
+    public ObjectNode getObjectNode() { return objectNode; }
+    @JsonProperty("ObjectNode")
+    public void setObjectNode(ObjectNode value) { this.objectNode = value; }
+
     @JsonProperty("of")
     public Of getOf() { return of; }
     @JsonProperty("of")
@@ -358,39 +393,4 @@ public class Obj4 {
     public Rethrows getRethrows() { return rethrows; }
     @JsonProperty("rethrows")
     public void setRethrows(Rethrows value) { this.rethrows = value; }
-
-    @JsonProperty("right")
-    public Right getRight() { return right; }
-    @JsonProperty("right")
-    public void setRight(Right value) { this.right = value; }
-
-    @JsonProperty("runtimeType")
-    public RuntimeType getRuntimeType() { return runtimeType; }
-    @JsonProperty("runtimeType")
-    public void setRuntimeType(RuntimeType value) { this.runtimeType = value; }
-
-    @JsonProperty("s")
-    public S getS() { return s; }
-    @JsonProperty("s")
-    public void setS(S value) { this.s = value; }
-
-    @JsonProperty("sbyte")
-    public Sbyte getSbyte() { return sbyte; }
-    @JsonProperty("sbyte")
-    public void setSbyte(Sbyte value) { this.sbyte = value; }
-
-    @JsonProperty("sealed")
-    public Sealed getSealed() { return sealed; }
-    @JsonProperty("sealed")
-    public void setSealed(Sealed value) { this.sealed = value; }
-
-    @JsonProperty("SEL")
-    public Sel getSel() { return sel; }
-    @JsonProperty("SEL")
-    public void setSel(Sel value) { this.sel = value; }
-
-    @JsonProperty("select")
-    public Select getSelect() { return select; }
-    @JsonProperty("select")
-    public void setSelect(Select value) { this.select = 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..908ffbb 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 Return obj5Return;
     private SelfClass obj5Self;
     private Short obj5Short;
     private Static obj5Static;
@@ -19,8 +20,16 @@ public class Obj5 {
     private Try obj5Try;
     private TypeClass obj5Type;
     private TrueClass purpleTrue;
+    private Right right;
+    private RuntimeType runtimeType;
+    private S s;
+    private Sbyte sbyte;
+    private Sealed sealed;
+    private Sel sel;
+    private Select select;
     private Self self;
     private Sendable sendable;
+    private SerializationFeature serializationFeature;
     private Serialize serialize;
     private SerializerProviderClass serializerProvider;
     private Set set;
@@ -39,6 +48,7 @@ public class Obj5 {
     private Symbol symbol;
     private SystemClass system;
     private Template template;
+    private TextNode textNode;
     private Then then;
     private ThreadLocal threadLocal;
     private TimeOnly timeOnly;
@@ -58,22 +68,17 @@ public class Obj5 {
     private Unchecked unchecked;
     private Undefined undefined;
     private Union union;
-    private Unowned unowned;
-    private Unsafe unsafe;
-    private Unsigned unsigned;
-    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("return")
+    public Return getObj5Return() { return obj5Return; }
+    @JsonProperty("return")
+    public void setObj5Return(Return value) { this.obj5Return = value; }
+
     @JsonProperty("self")
     public SelfClass getObj5Self() { return obj5Self; }
     @JsonProperty("self")
@@ -149,6 +154,41 @@ public class Obj5 {
     @JsonProperty("true")
     public void setPurpleTrue(TrueClass value) { this.purpleTrue = value; }
 
+    @JsonProperty("right")
+    public Right getRight() { return right; }
+    @JsonProperty("right")
+    public void setRight(Right value) { this.right = value; }
+
+    @JsonProperty("runtimeType")
+    public RuntimeType getRuntimeType() { return runtimeType; }
+    @JsonProperty("runtimeType")
+    public void setRuntimeType(RuntimeType value) { this.runtimeType = value; }
+
+    @JsonProperty("s")
+    public S getS() { return s; }
+    @JsonProperty("s")
+    public void setS(S value) { this.s = value; }
+
+    @JsonProperty("sbyte")
+    public Sbyte getSbyte() { return sbyte; }
+    @JsonProperty("sbyte")
+    public void setSbyte(Sbyte value) { this.sbyte = value; }
+
+    @JsonProperty("sealed")
+    public Sealed getSealed() { return sealed; }
+    @JsonProperty("sealed")
+    public void setSealed(Sealed value) { this.sealed = value; }
+
+    @JsonProperty("SEL")
+    public Sel getSel() { return sel; }
+    @JsonProperty("SEL")
+    public void setSel(Sel value) { this.sel = value; }
+
+    @JsonProperty("select")
+    public Select getSelect() { return select; }
+    @JsonProperty("select")
+    public void setSelect(Select value) { this.select = value; }
+
     @JsonProperty("Self")
     public Self getSelf() { return self; }
     @JsonProperty("Self")
@@ -159,6 +199,11 @@ public class Obj5 {
     @JsonProperty("Sendable")
     public void setSendable(Sendable value) { this.sendable = value; }
 
+    @JsonProperty("SerializationFeature")
+    public SerializationFeature getSerializationFeature() { return serializationFeature; }
+    @JsonProperty("SerializationFeature")
+    public void setSerializationFeature(SerializationFeature value) { this.serializationFeature = value; }
+
     @JsonProperty("serialize")
     public Serialize getSerialize() { return serialize; }
     @JsonProperty("serialize")
@@ -249,6 +294,11 @@ public class Obj5 {
     @JsonProperty("template")
     public void setTemplate(Template value) { this.template = value; }
 
+    @JsonProperty("TextNode")
+    public TextNode getTextNode() { return textNode; }
+    @JsonProperty("TextNode")
+    public void setTextNode(TextNode value) { this.textNode = value; }
+
     @JsonProperty("then")
     public Then getThen() { return then; }
     @JsonProperty("then")
@@ -343,54 +393,4 @@ public class Obj5 {
     public Union getUnion() { return union; }
     @JsonProperty("union")
     public void setUnion(Union value) { this.union = value; }
-
-    @JsonProperty("unowned")
-    public Unowned getUnowned() { return unowned; }
-    @JsonProperty("unowned")
-    public void setUnowned(Unowned value) { this.unowned = value; }
-
-    @JsonProperty("unsafe")
-    public Unsafe getUnsafe() { return unsafe; }
-    @JsonProperty("unsafe")
-    public void setUnsafe(Unsafe value) { this.unsafe = value; }
-
-    @JsonProperty("unsigned")
-    public Unsigned getUnsigned() { return unsigned; }
-    @JsonProperty("unsigned")
-    public void setUnsigned(Unsigned value) { this.unsigned = 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..d7d4b17 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,16 @@ public class Obj6 {
     private Void obj6Void;
     private Volatile obj6Volatile;
     private While obj6While;
+    private Unowned unowned;
+    private Unsafe unsafe;
+    private Unsigned unsigned;
+    private Ushort ushort;
+    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 +47,56 @@ public class Obj6 {
     @JsonProperty("while")
     public void setObj6While(While value) { this.obj6While = value; }
 
+    @JsonProperty("unowned")
+    public Unowned getUnowned() { return unowned; }
+    @JsonProperty("unowned")
+    public void setUnowned(Unowned value) { this.unowned = value; }
+
+    @JsonProperty("unsafe")
+    public Unsafe getUnsafe() { return unsafe; }
+    @JsonProperty("unsafe")
+    public void setUnsafe(Unsafe value) { this.unsafe = value; }
+
+    @JsonProperty("unsigned")
+    public Unsigned getUnsigned() { return unsigned; }
+    @JsonProperty("unsigned")
+    public void setUnsigned(Unsigned value) { this.unsigned = 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; }
+
     @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/ObjectNode.java b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/ObjectNode.java
new file mode 100644
index 0000000..f1c6cd8
--- /dev/null
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/ObjectNode.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class ObjectNode {
+    private long objectNode;
+
+    @JsonProperty("ObjectNode")
+    public long getObjectNode() { return objectNode; }
+    @JsonProperty("ObjectNode")
+    public void setObjectNode(long value) { this.objectNode = value; }
+}
diff --git a/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerializationFeature.java b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerializationFeature.java
new file mode 100644
index 0000000..3cfbc5e
--- /dev/null
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerializationFeature.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class SerializationFeature {
+    private long serializationFeature;
+
+    @JsonProperty("SerializationFeature")
+    public long getSerializationFeature() { return serializationFeature; }
+    @JsonProperty("SerializationFeature")
+    public void setSerializationFeature(long value) { this.serializationFeature = value; }
+}
diff --git a/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/TextNode.java b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/TextNode.java
new file mode 100644
index 0000000..33f2a3c
--- /dev/null
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/TextNode.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class TextNode {
+    private long textNode;
+
+    @JsonProperty("TextNode")
+    public long getTextNode() { return textNode; }
+    @JsonProperty("TextNode")
+    public void setTextNode(long value) { this.textNode = value; }
+}
diff --git a/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/ArrayNode.java b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/ArrayNode.java
new file mode 100644
index 0000000..8ce888a
--- /dev/null
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/ArrayNode.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class ArrayNode {
+    private long arrayNode;
+
+    @JsonProperty("ArrayNode")
+    public long getArrayNode() { return arrayNode; }
+    @JsonProperty("ArrayNode")
+    public void setArrayNode(long value) { this.arrayNode = value; }
+}
diff --git a/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/BooleanNode.java b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/BooleanNode.java
new file mode 100644
index 0000000..4d481b7
--- /dev/null
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/BooleanNode.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class BooleanNode {
+    private long booleanNode;
+
+    @JsonProperty("BooleanNode")
+    public long getBooleanNode() { return booleanNode; }
+    @JsonProperty("BooleanNode")
+    public void setBooleanNode(long value) { this.booleanNode = value; }
+}
diff --git a/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/DeserializationFeature.java b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/DeserializationFeature.java
new file mode 100644
index 0000000..32cc2d0
--- /dev/null
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/DeserializationFeature.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class DeserializationFeature {
+    private long deserializationFeature;
+
+    @JsonProperty("DeserializationFeature")
+    public long getDeserializationFeature() { return deserializationFeature; }
+    @JsonProperty("DeserializationFeature")
+    public void setDeserializationFeature(long value) { this.deserializationFeature = value; }
+}
diff --git a/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/DoubleNode.java b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/DoubleNode.java
new file mode 100644
index 0000000..cb1ef00
--- /dev/null
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/DoubleNode.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class DoubleNode {
+    private long doubleNode;
+
+    @JsonProperty("DoubleNode")
+    public long getDoubleNode() { return doubleNode; }
+    @JsonProperty("DoubleNode")
+    public void setDoubleNode(long value) { this.doubleNode = value; }
+}
diff --git a/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/IntNode.java b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/IntNode.java
new file mode 100644
index 0000000..1a75621
--- /dev/null
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/IntNode.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class IntNode {
+    private long intNode;
+
+    @JsonProperty("IntNode")
+    public long getIntNode() { return intNode; }
+    @JsonProperty("IntNode")
+    public void setIntNode(long value) { this.intNode = value; }
+}
diff --git a/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/LongNode.java b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/LongNode.java
new file mode 100644
index 0000000..dfa5d29
--- /dev/null
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/LongNode.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class LongNode {
+    private long longNode;
+
+    @JsonProperty("LongNode")
+    public long getLongNode() { return longNode; }
+    @JsonProperty("LongNode")
+    public void setLongNode(long value) { this.longNode = value; }
+}
diff --git a/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/NullNode.java b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/NullNode.java
new file mode 100644
index 0000000..260145b
--- /dev/null
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/NullNode.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class NullNode {
+    private long nullNode;
+
+    @JsonProperty("NullNode")
+    public long getNullNode() { return nullNode; }
+    @JsonProperty("NullNode")
+    public void setNullNode(long value) { this.nullNode = value; }
+}
diff --git a/base/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj1.java b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj1.java
index 9177044..304ed7d 100644
--- a/base/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj1.java
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj1.java
@@ -9,6 +9,7 @@ public class Obj1 {
     private AndEq andEq;
     private Any any;
     private Array array;
+    private ArrayNode arrayNode;
     private As as;
     private ASM asm;
     private Associatedtype associatedtype;
@@ -24,6 +25,7 @@ public class Obj1 {
     private Bitand bitand;
     private Bitor bitor;
     private Bool bool;
+    private BooleanNode booleanNode;
     private Bycopy bycopy;
     private Byref byref;
     private Calendar calendar;
@@ -48,8 +50,6 @@ public class Obj1 {
     private Convenience convenience;
     private Convert convert;
     private ConverterClass converter;
-    private CultureInfo cultureInfo;
-    private DateClass date;
     private long dummy;
     private Empty empty;
     private Imaginery imaginery;
@@ -99,6 +99,11 @@ public class Obj1 {
     @JsonProperty("array")
     public void setArray(Array value) { this.array = value; }
 
+    @JsonProperty("ArrayNode")
+    public ArrayNode getArrayNode() { return arrayNode; }
+    @JsonProperty("ArrayNode")
+    public void setArrayNode(ArrayNode value) { this.arrayNode = value; }
+
     @JsonProperty("as")
     public As getAs() { return as; }
     @JsonProperty("as")
@@ -174,6 +179,11 @@ public class Obj1 {
     @JsonProperty("BOOL")
     public void setBool(Bool value) { this.bool = value; }
 
+    @JsonProperty("BooleanNode")
+    public BooleanNode getBooleanNode() { return booleanNode; }
+    @JsonProperty("BooleanNode")
+    public void setBooleanNode(BooleanNode value) { this.booleanNode = value; }
+
     @JsonProperty("bycopy")
     public Bycopy getBycopy() { return bycopy; }
     @JsonProperty("bycopy")
@@ -294,16 +304,6 @@ public class Obj1 {
     @JsonProperty("converter")
     public void setConverter(ConverterClass value) { this.converter = value; }
 
-    @JsonProperty("CultureInfo")
-    public CultureInfo getCultureInfo() { return cultureInfo; }
-    @JsonProperty("CultureInfo")
-    public void setCultureInfo(CultureInfo value) { this.cultureInfo = value; }
-
-    @JsonProperty("date")
-    public DateClass getDate() { return date; }
-    @JsonProperty("date")
-    public void setDate(DateClass value) { this.date = value; }
-
     @JsonProperty("dummy")
     public long getDummy() { return dummy; }
     @JsonProperty("dummy")
diff --git a/base/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj2.java b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj2.java
index cfe0a34..e22b35e 100644
--- a/base/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj2.java
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj2.java
@@ -3,6 +3,8 @@ package io.quicktype;
 import com.fasterxml.jackson.annotation.*;
 
 public class Obj2 {
+    private CultureInfo cultureInfo;
+    private DateClass date;
     private DateFormatter dateFormatter;
     private DateOnly dateOnly;
     private DateOnlyConverter dateOnlyConverter;
@@ -22,9 +24,11 @@ public class Obj2 {
     private Del del;
     private Delegate delegate;
     private Delete delete;
+    private DeserializationFeature deserializationFeature;
     private Dict dict;
     private Dictionary dictionary;
     private DidSet didSet;
+    private DoubleNode doubleNode;
     private long dummy;
     private Dynamic dynamic;
     private DynamicCast dynamicCast;
@@ -52,9 +56,6 @@ public class Obj2 {
     private FromJSON fromJSON;
     private Func func;
     private Function function;
-    private Get get;
-    private Global global;
-    private Go go;
     private Default obj2Default;
     private Do obj2Do;
     private DoubleClass obj2Double;
@@ -66,9 +67,18 @@ public class Obj2 {
     private Finally obj2Finally;
     private Float obj2Float;
     private For obj2For;
-    private Goto obj2Goto;
     private FalseClass purpleFalse;
 
+    @JsonProperty("CultureInfo")
+    public CultureInfo getCultureInfo() { return cultureInfo; }
+    @JsonProperty("CultureInfo")
+    public void setCultureInfo(CultureInfo value) { this.cultureInfo = value; }
+
+    @JsonProperty("date")
+    public DateClass getDate() { return date; }
+    @JsonProperty("date")
+    public void setDate(DateClass value) { this.date = value; }
+
     @JsonProperty("DateFormatter")
     public DateFormatter getDateFormatter() { return dateFormatter; }
     @JsonProperty("DateFormatter")
@@ -164,6 +174,11 @@ public class Obj2 {
     @JsonProperty("delete")
     public void setDelete(Delete value) { this.delete = value; }
 
+    @JsonProperty("DeserializationFeature")
+    public DeserializationFeature getDeserializationFeature() { return deserializationFeature; }
+    @JsonProperty("DeserializationFeature")
+    public void setDeserializationFeature(DeserializationFeature value) { this.deserializationFeature = value; }
+
     @JsonProperty("dict")
     public Dict getDict() { return dict; }
     @JsonProperty("dict")
@@ -179,6 +194,11 @@ public class Obj2 {
     @JsonProperty("didSet")
     public void setDidSet(DidSet value) { this.didSet = value; }
 
+    @JsonProperty("DoubleNode")
+    public DoubleNode getDoubleNode() { return doubleNode; }
+    @JsonProperty("DoubleNode")
+    public void setDoubleNode(DoubleNode value) { this.doubleNode = value; }
+
     @JsonProperty("dummy")
     public long getDummy() { return dummy; }
     @JsonProperty("dummy")
@@ -314,21 +334,6 @@ public class Obj2 {
     @JsonProperty("function")
     public void setFunction(Function value) { this.function = value; }
 
-    @JsonProperty("get")
-    public Get getGet() { return get; }
-    @JsonProperty("get")
-    public void setGet(Get value) { this.get = value; }
-
-    @JsonProperty("global")
-    public Global getGlobal() { return global; }
-    @JsonProperty("global")
-    public void setGlobal(Global value) { this.global = value; }
-
-    @JsonProperty("go")
-    public Go getGo() { return go; }
-    @JsonProperty("go")
-    public void setGo(Go value) { this.go = value; }
-
     @JsonProperty("default")
     public Default getObj2Default() { return obj2Default; }
     @JsonProperty("default")
@@ -384,11 +389,6 @@ public class Obj2 {
     @JsonProperty("for")
     public void setObj2For(For value) { this.obj2For = value; }
 
-    @JsonProperty("goto")
-    public Goto getObj2Goto() { return obj2Goto; }
-    @JsonProperty("goto")
-    public void setObj2Goto(Goto value) { this.obj2Goto = value; }
-
     @JsonProperty("false")
     public FalseClass getPurpleFalse() { return purpleFalse; }
     @JsonProperty("false")
diff --git a/base/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj3.java b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj3.java
index 1edbb6b..d36c4a0 100644
--- a/base/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj3.java
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj3.java
@@ -4,6 +4,9 @@ import com.fasterxml.jackson.annotation.*;
 
 public class Obj3 {
     private long dummy;
+    private Get get;
+    private Global global;
+    private Go go;
     private Guard guard;
     private HasOwnProperty hasOwnProperty;
     private HashCode hashCode;
@@ -18,6 +21,7 @@ public class Obj3 {
     private Init init;
     private Inline inline;
     private Inout inout;
+    private IntNode intNode;
     private Internal internal;
     private Is is;
     private ISODateTimeOffsetConverter isoDateTimeOffsetConverter;
@@ -48,6 +52,7 @@ public class Obj3 {
     private ListClass list;
     private Locale locale;
     private Lock lock;
+    private LongNode longNode;
     private MapClass map;
     private MapEntry mapEntry;
     private MetadataPropertyHandling metadataPropertyHandling;
@@ -55,10 +60,7 @@ public class Obj3 {
     private Mutable mutable;
     private Mutating mutating;
     private Namespace namespace;
-    private Newtonsoft newtonsoft;
-    private Nil nil;
-    private No no;
-    private Noexcept noexcept;
+    private Goto obj3Goto;
     private If obj3If;
     private Implements obj3Implements;
     private Import obj3Import;
@@ -66,14 +68,27 @@ public class Obj3 {
     private Int obj3Int;
     private Interface obj3Interface;
     private LongClass obj3Long;
-    private Native obj3Native;
-    private New obj3New;
 
     @JsonProperty("dummy")
     public long getDummy() { return dummy; }
     @JsonProperty("dummy")
     public void setDummy(long value) { this.dummy = value; }
 
+    @JsonProperty("get")
+    public Get getGet() { return get; }
+    @JsonProperty("get")
+    public void setGet(Get value) { this.get = value; }
+
+    @JsonProperty("global")
+    public Global getGlobal() { return global; }
+    @JsonProperty("global")
+    public void setGlobal(Global value) { this.global = value; }
+
+    @JsonProperty("go")
+    public Go getGo() { return go; }
+    @JsonProperty("go")
+    public void setGo(Go value) { this.go = value; }
+
     @JsonProperty("guard")
     public Guard getGuard() { return guard; }
     @JsonProperty("guard")
@@ -144,6 +159,11 @@ public class Obj3 {
     @JsonProperty("inout")
     public void setInout(Inout value) { this.inout = value; }
 
+    @JsonProperty("IntNode")
+    public IntNode getIntNode() { return intNode; }
+    @JsonProperty("IntNode")
+    public void setIntNode(IntNode value) { this.intNode = value; }
+
     @JsonProperty("internal")
     public Internal getInternal() { return internal; }
     @JsonProperty("internal")
@@ -294,6 +314,11 @@ public class Obj3 {
     @JsonProperty("lock")
     public void setLock(Lock value) { this.lock = value; }
 
+    @JsonProperty("LongNode")
+    public LongNode getLongNode() { return longNode; }
+    @JsonProperty("LongNode")
+    public void setLongNode(LongNode value) { this.longNode = value; }
+
     @JsonProperty("map")
     public MapClass getMap() { return map; }
     @JsonProperty("map")
@@ -329,25 +354,10 @@ public class Obj3 {
     @JsonProperty("namespace")
     public void setNamespace(Namespace value) { this.namespace = value; }
 
-    @JsonProperty("newtonsoft")
-    public Newtonsoft getNewtonsoft() { return newtonsoft; }
-    @JsonProperty("newtonsoft")
-    public void setNewtonsoft(Newtonsoft value) { this.newtonsoft = value; }
-
-    @JsonProperty("nil")
-    public Nil getNil() { return nil; }
-    @JsonProperty("nil")
-    public void setNil(Nil value) { this.nil = value; }
-
-    @JsonProperty("NO")
-    public No getNo() { return no; }
-    @JsonProperty("NO")
-    public void setNo(No value) { this.no = value; }
-
-    @JsonProperty("noexcept")
-    public Noexcept getNoexcept() { return noexcept; }
-    @JsonProperty("noexcept")
-    public void setNoexcept(Noexcept value) { this.noexcept = value; }
+    @JsonProperty("goto")
+    public Goto getObj3Goto() { return obj3Goto; }
+    @JsonProperty("goto")
+    public void setObj3Goto(Goto value) { this.obj3Goto = value; }
 
     @JsonProperty("if")
     public If getObj3If() { return obj3If; }
@@ -383,14 +393,4 @@ public class Obj3 {
     public LongClass getObj3Long() { return obj3Long; }
     @JsonProperty("long")
     public void setObj3Long(LongClass value) { this.obj3Long = value; }
-
-    @JsonProperty("native")
-    public Native getObj3Native() { return obj3Native; }
-    @JsonProperty("native")
-    public void setObj3Native(Native value) { this.obj3Native = value; }
-
-    @JsonProperty("new")
-    public New getObj3New() { return obj3New; }
-    @JsonProperty("new")
-    public void setObj3New(New value) { this.obj3New = value; }
 }
diff --git a/base/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj4.java b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj4.java
index 6003abf..a4587c4 100644
--- a/base/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj4.java
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj4.java
@@ -4,7 +4,11 @@ import com.fasterxml.jackson.annotation.*;
 
 public class Obj4 {
     private long dummy;
+    private Newtonsoft newtonsoft;
+    private Nil nil;
+    private No no;
     private NoSuchMethod noSuchMethod;
+    private Noexcept noexcept;
     private Nonatomic nonatomic;
     private NoneClass none;
     private Nonlocal nonlocal;
@@ -14,9 +18,12 @@ public class Obj4 {
     private NSError nsError;
     private NSObject nsObject;
     private NSString nsString;
+    private NullNode nullNode;
     private Nullptr nullptr;
     private Number number;
     private Null obj4NULL;
+    private Native obj4Native;
+    private New obj4New;
     private Obj4None obj4None;
     private NullClass obj4Null;
     private Package obj4Package;
@@ -24,9 +31,9 @@ public class Obj4 {
     private Protected obj4Protected;
     private ProtocolClass obj4Protocol;
     private Public obj4Public;
-    private Return obj4Return;
     private ObjectClass object;
     private ObjectMapperClass objectMapper;
+    private ObjectNode objectNode;
     private Of of;
     private Oneway oneway;
     private Open open;
@@ -61,24 +68,37 @@ public class Obj4 {
     private Restrict restrict;
     private Retain retain;
     private Rethrows rethrows;
-    private Right right;
-    private RuntimeType runtimeType;
-    private S s;
-    private Sbyte sbyte;
-    private Sealed sealed;
-    private Sel sel;
-    private Select select;
 
     @JsonProperty("dummy")
     public long getDummy() { return dummy; }
     @JsonProperty("dummy")
     public void setDummy(long value) { this.dummy = value; }
 
+    @JsonProperty("newtonsoft")
+    public Newtonsoft getNewtonsoft() { return newtonsoft; }
+    @JsonProperty("newtonsoft")
+    public void setNewtonsoft(Newtonsoft value) { this.newtonsoft = value; }
+
+    @JsonProperty("nil")
+    public Nil getNil() { return nil; }
+    @JsonProperty("nil")
+    public void setNil(Nil value) { this.nil = value; }
+
+    @JsonProperty("NO")
+    public No getNo() { return no; }
+    @JsonProperty("NO")
+    public void setNo(No value) { this.no = value; }
+
     @JsonProperty("noSuchMethod")
     public NoSuchMethod getNoSuchMethod() { return noSuchMethod; }
     @JsonProperty("noSuchMethod")
     public void setNoSuchMethod(NoSuchMethod value) { this.noSuchMethod = value; }
 
+    @JsonProperty("noexcept")
+    public Noexcept getNoexcept() { return noexcept; }
+    @JsonProperty("noexcept")
+    public void setNoexcept(Noexcept value) { this.noexcept = value; }
+
     @JsonProperty("nonatomic")
     public Nonatomic getNonatomic() { return nonatomic; }
     @JsonProperty("nonatomic")
@@ -124,6 +144,11 @@ public class Obj4 {
     @JsonProperty("NSString")
     public void setNSString(NSString value) { this.nsString = value; }
 
+    @JsonProperty("NullNode")
+    public NullNode getNullNode() { return nullNode; }
+    @JsonProperty("NullNode")
+    public void setNullNode(NullNode value) { this.nullNode = value; }
+
     @JsonProperty("nullptr")
     public Nullptr getNullptr() { return nullptr; }
     @JsonProperty("nullptr")
@@ -139,6 +164,16 @@ public class Obj4 {
     @JsonProperty("NULL")
     public void setObj4NULL(Null value) { this.obj4NULL = value; }
 
+    @JsonProperty("native")
+    public Native getObj4Native() { return obj4Native; }
+    @JsonProperty("native")
+    public void setObj4Native(Native value) { this.obj4Native = value; }
+
+    @JsonProperty("new")
+    public New getObj4New() { return obj4New; }
+    @JsonProperty("new")
+    public void setObj4New(New value) { this.obj4New = value; }
+
     @JsonProperty("none")
     public Obj4None getObj4None() { return obj4None; }
     @JsonProperty("none")
@@ -174,11 +209,6 @@ public class Obj4 {
     @JsonProperty("public")
     public void setObj4Public(Public value) { this.obj4Public = value; }
 
-    @JsonProperty("return")
-    public Return getObj4Return() { return obj4Return; }
-    @JsonProperty("return")
-    public void setObj4Return(Return value) { this.obj4Return = value; }
-
     @JsonProperty("object")
     public ObjectClass getObject() { return object; }
     @JsonProperty("object")
@@ -189,6 +219,11 @@ public class Obj4 {
     @JsonProperty("ObjectMapper")
     public void setObjectMapper(ObjectMapperClass value) { this.objectMapper = value; }
 
+    @JsonProperty("ObjectNode")
+    public ObjectNode getObjectNode() { return objectNode; }
+    @JsonProperty("ObjectNode")
+    public void setObjectNode(ObjectNode value) { this.objectNode = value; }
+
     @JsonProperty("of")
     public Of getOf() { return of; }
     @JsonProperty("of")
@@ -358,39 +393,4 @@ public class Obj4 {
     public Rethrows getRethrows() { return rethrows; }
     @JsonProperty("rethrows")
     public void setRethrows(Rethrows value) { this.rethrows = value; }
-
-    @JsonProperty("right")
-    public Right getRight() { return right; }
-    @JsonProperty("right")
-    public void setRight(Right value) { this.right = value; }
-
-    @JsonProperty("runtimeType")
-    public RuntimeType getRuntimeType() { return runtimeType; }
-    @JsonProperty("runtimeType")
-    public void setRuntimeType(RuntimeType value) { this.runtimeType = value; }
-
-    @JsonProperty("s")
-    public S getS() { return s; }
-    @JsonProperty("s")
-    public void setS(S value) { this.s = value; }
-
-    @JsonProperty("sbyte")
-    public Sbyte getSbyte() { return sbyte; }
-    @JsonProperty("sbyte")
-    public void setSbyte(Sbyte value) { this.sbyte = value; }
-
-    @JsonProperty("sealed")
-    public Sealed getSealed() { return sealed; }
-    @JsonProperty("sealed")
-    public void setSealed(Sealed value) { this.sealed = value; }
-
-    @JsonProperty("SEL")
-    public Sel getSel() { return sel; }
-    @JsonProperty("SEL")
-    public void setSel(Sel value) { this.sel = value; }
-
-    @JsonProperty("select")
-    public Select getSelect() { return select; }
-    @JsonProperty("select")
-    public void setSelect(Select value) { this.select = 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..908ffbb 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 Return obj5Return;
     private SelfClass obj5Self;
     private Short obj5Short;
     private Static obj5Static;
@@ -19,8 +20,16 @@ public class Obj5 {
     private Try obj5Try;
     private TypeClass obj5Type;
     private TrueClass purpleTrue;
+    private Right right;
+    private RuntimeType runtimeType;
+    private S s;
+    private Sbyte sbyte;
+    private Sealed sealed;
+    private Sel sel;
+    private Select select;
     private Self self;
     private Sendable sendable;
+    private SerializationFeature serializationFeature;
     private Serialize serialize;
     private SerializerProviderClass serializerProvider;
     private Set set;
@@ -39,6 +48,7 @@ public class Obj5 {
     private Symbol symbol;
     private SystemClass system;
     private Template template;
+    private TextNode textNode;
     private Then then;
     private ThreadLocal threadLocal;
     private TimeOnly timeOnly;
@@ -58,22 +68,17 @@ public class Obj5 {
     private Unchecked unchecked;
     private Undefined undefined;
     private Union union;
-    private Unowned unowned;
-    private Unsafe unsafe;
-    private Unsigned unsigned;
-    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("return")
+    public Return getObj5Return() { return obj5Return; }
+    @JsonProperty("return")
+    public void setObj5Return(Return value) { this.obj5Return = value; }
+
     @JsonProperty("self")
     public SelfClass getObj5Self() { return obj5Self; }
     @JsonProperty("self")
@@ -149,6 +154,41 @@ public class Obj5 {
     @JsonProperty("true")
     public void setPurpleTrue(TrueClass value) { this.purpleTrue = value; }
 
+    @JsonProperty("right")
+    public Right getRight() { return right; }
+    @JsonProperty("right")
+    public void setRight(Right value) { this.right = value; }
+
+    @JsonProperty("runtimeType")
+    public RuntimeType getRuntimeType() { return runtimeType; }
+    @JsonProperty("runtimeType")
+    public void setRuntimeType(RuntimeType value) { this.runtimeType = value; }
+
+    @JsonProperty("s")
+    public S getS() { return s; }
+    @JsonProperty("s")
+    public void setS(S value) { this.s = value; }
+
+    @JsonProperty("sbyte")
+    public Sbyte getSbyte() { return sbyte; }
+    @JsonProperty("sbyte")
+    public void setSbyte(Sbyte value) { this.sbyte = value; }
+
+    @JsonProperty("sealed")
+    public Sealed getSealed() { return sealed; }
+    @JsonProperty("sealed")
+    public void setSealed(Sealed value) { this.sealed = value; }
+
+    @JsonProperty("SEL")
+    public Sel getSel() { return sel; }
+    @JsonProperty("SEL")
+    public void setSel(Sel value) { this.sel = value; }
+
+    @JsonProperty("select")
+    public Select getSelect() { return select; }
+    @JsonProperty("select")
+    public void setSelect(Select value) { this.select = value; }
+
     @JsonProperty("Self")
     public Self getSelf() { return self; }
     @JsonProperty("Self")
@@ -159,6 +199,11 @@ public class Obj5 {
     @JsonProperty("Sendable")
     public void setSendable(Sendable value) { this.sendable = value; }
 
+    @JsonProperty("SerializationFeature")
+    public SerializationFeature getSerializationFeature() { return serializationFeature; }
+    @JsonProperty("SerializationFeature")
+    public void setSerializationFeature(SerializationFeature value) { this.serializationFeature = value; }
+
     @JsonProperty("serialize")
     public Serialize getSerialize() { return serialize; }
     @JsonProperty("serialize")
@@ -249,6 +294,11 @@ public class Obj5 {
     @JsonProperty("template")
     public void setTemplate(Template value) { this.template = value; }
 
+    @JsonProperty("TextNode")
+    public TextNode getTextNode() { return textNode; }
+    @JsonProperty("TextNode")
+    public void setTextNode(TextNode value) { this.textNode = value; }
+
     @JsonProperty("then")
     public Then getThen() { return then; }
     @JsonProperty("then")
@@ -343,54 +393,4 @@ public class Obj5 {
     public Union getUnion() { return union; }
     @JsonProperty("union")
     public void setUnion(Union value) { this.union = value; }
-
-    @JsonProperty("unowned")
-    public Unowned getUnowned() { return unowned; }
-    @JsonProperty("unowned")
-    public void setUnowned(Unowned value) { this.unowned = value; }
-
-    @JsonProperty("unsafe")
-    public Unsafe getUnsafe() { return unsafe; }
-    @JsonProperty("unsafe")
-    public void setUnsafe(Unsafe value) { this.unsafe = value; }
-
-    @JsonProperty("unsigned")
-    public Unsigned getUnsigned() { return unsigned; }
-    @JsonProperty("unsigned")
-    public void setUnsigned(Unsigned value) { this.unsigned = 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..d7d4b17 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,16 @@ public class Obj6 {
     private Void obj6Void;
     private Volatile obj6Volatile;
     private While obj6While;
+    private Unowned unowned;
+    private Unsafe unsafe;
+    private Unsigned unsigned;
+    private Ushort ushort;
+    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 +47,56 @@ public class Obj6 {
     @JsonProperty("while")
     public void setObj6While(While value) { this.obj6While = value; }
 
+    @JsonProperty("unowned")
+    public Unowned getUnowned() { return unowned; }
+    @JsonProperty("unowned")
+    public void setUnowned(Unowned value) { this.unowned = value; }
+
+    @JsonProperty("unsafe")
+    public Unsafe getUnsafe() { return unsafe; }
+    @JsonProperty("unsafe")
+    public void setUnsafe(Unsafe value) { this.unsafe = value; }
+
+    @JsonProperty("unsigned")
+    public Unsigned getUnsigned() { return unsigned; }
+    @JsonProperty("unsigned")
+    public void setUnsigned(Unsigned value) { this.unsigned = 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; }
+
     @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/ObjectNode.java b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/ObjectNode.java
new file mode 100644
index 0000000..f1c6cd8
--- /dev/null
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/ObjectNode.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class ObjectNode {
+    private long objectNode;
+
+    @JsonProperty("ObjectNode")
+    public long getObjectNode() { return objectNode; }
+    @JsonProperty("ObjectNode")
+    public void setObjectNode(long value) { this.objectNode = value; }
+}
diff --git a/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerializationFeature.java b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerializationFeature.java
new file mode 100644
index 0000000..3cfbc5e
--- /dev/null
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerializationFeature.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class SerializationFeature {
+    private long serializationFeature;
+
+    @JsonProperty("SerializationFeature")
+    public long getSerializationFeature() { return serializationFeature; }
+    @JsonProperty("SerializationFeature")
+    public void setSerializationFeature(long value) { this.serializationFeature = value; }
+}
diff --git a/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/TextNode.java b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/TextNode.java
new file mode 100644
index 0000000..33f2a3c
--- /dev/null
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/TextNode.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class TextNode {
+    private long textNode;
+
+    @JsonProperty("TextNode")
+    public long getTextNode() { return textNode; }
+    @JsonProperty("TextNode")
+    public void setTextNode(long value) { this.textNode = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/ArrayNode.java b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/ArrayNode.java
new file mode 100644
index 0000000..8ce888a
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/ArrayNode.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class ArrayNode {
+    private long arrayNode;
+
+    @JsonProperty("ArrayNode")
+    public long getArrayNode() { return arrayNode; }
+    @JsonProperty("ArrayNode")
+    public void setArrayNode(long value) { this.arrayNode = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/BooleanNode.java b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/BooleanNode.java
new file mode 100644
index 0000000..4d481b7
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/BooleanNode.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class BooleanNode {
+    private long booleanNode;
+
+    @JsonProperty("BooleanNode")
+    public long getBooleanNode() { return booleanNode; }
+    @JsonProperty("BooleanNode")
+    public void setBooleanNode(long value) { this.booleanNode = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/DeserializationFeature.java b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/DeserializationFeature.java
new file mode 100644
index 0000000..32cc2d0
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/DeserializationFeature.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class DeserializationFeature {
+    private long deserializationFeature;
+
+    @JsonProperty("DeserializationFeature")
+    public long getDeserializationFeature() { return deserializationFeature; }
+    @JsonProperty("DeserializationFeature")
+    public void setDeserializationFeature(long value) { this.deserializationFeature = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/DoubleNode.java b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/DoubleNode.java
new file mode 100644
index 0000000..cb1ef00
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/DoubleNode.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class DoubleNode {
+    private long doubleNode;
+
+    @JsonProperty("DoubleNode")
+    public long getDoubleNode() { return doubleNode; }
+    @JsonProperty("DoubleNode")
+    public void setDoubleNode(long value) { this.doubleNode = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/IntNode.java b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/IntNode.java
new file mode 100644
index 0000000..1a75621
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/IntNode.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class IntNode {
+    private long intNode;
+
+    @JsonProperty("IntNode")
+    public long getIntNode() { return intNode; }
+    @JsonProperty("IntNode")
+    public void setIntNode(long value) { this.intNode = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/LongNode.java b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/LongNode.java
new file mode 100644
index 0000000..dfa5d29
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/LongNode.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class LongNode {
+    private long longNode;
+
+    @JsonProperty("LongNode")
+    public long getLongNode() { return longNode; }
+    @JsonProperty("LongNode")
+    public void setLongNode(long value) { this.longNode = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/NullNode.java b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/NullNode.java
new file mode 100644
index 0000000..260145b
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/NullNode.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class NullNode {
+    private long nullNode;
+
+    @JsonProperty("NullNode")
+    public long getNullNode() { return nullNode; }
+    @JsonProperty("NullNode")
+    public void setNullNode(long value) { this.nullNode = value; }
+}
diff --git a/base/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj1.java b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj1.java
index 54d34df..304ed7d 100644
--- a/base/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj1.java
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj1.java
@@ -9,6 +9,7 @@ public class Obj1 {
     private AndEq andEq;
     private Any any;
     private Array array;
+    private ArrayNode arrayNode;
     private As as;
     private ASM asm;
     private Associatedtype associatedtype;
@@ -24,6 +25,7 @@ public class Obj1 {
     private Bitand bitand;
     private Bitor bitor;
     private Bool bool;
+    private BooleanNode booleanNode;
     private Bycopy bycopy;
     private Byref byref;
     private Calendar calendar;
@@ -48,8 +50,6 @@ public class Obj1 {
     private Convenience convenience;
     private Convert convert;
     private ConverterClass converter;
-    private CultureInfo cultureInfo;
-    private Date date;
     private long dummy;
     private Empty empty;
     private Imaginery imaginery;
@@ -99,6 +99,11 @@ public class Obj1 {
     @JsonProperty("array")
     public void setArray(Array value) { this.array = value; }
 
+    @JsonProperty("ArrayNode")
+    public ArrayNode getArrayNode() { return arrayNode; }
+    @JsonProperty("ArrayNode")
+    public void setArrayNode(ArrayNode value) { this.arrayNode = value; }
+
     @JsonProperty("as")
     public As getAs() { return as; }
     @JsonProperty("as")
@@ -174,6 +179,11 @@ public class Obj1 {
     @JsonProperty("BOOL")
     public void setBool(Bool value) { this.bool = value; }
 
+    @JsonProperty("BooleanNode")
+    public BooleanNode getBooleanNode() { return booleanNode; }
+    @JsonProperty("BooleanNode")
+    public void setBooleanNode(BooleanNode value) { this.booleanNode = value; }
+
     @JsonProperty("bycopy")
     public Bycopy getBycopy() { return bycopy; }
     @JsonProperty("bycopy")
@@ -294,16 +304,6 @@ public class Obj1 {
     @JsonProperty("converter")
     public void setConverter(ConverterClass value) { this.converter = value; }
 
-    @JsonProperty("CultureInfo")
-    public CultureInfo getCultureInfo() { return cultureInfo; }
-    @JsonProperty("CultureInfo")
-    public void setCultureInfo(CultureInfo value) { this.cultureInfo = value; }
-
-    @JsonProperty("date")
-    public Date getDate() { return date; }
-    @JsonProperty("date")
-    public void setDate(Date value) { this.date = value; }
-
     @JsonProperty("dummy")
     public long getDummy() { return dummy; }
     @JsonProperty("dummy")
diff --git a/base/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj2.java b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj2.java
index cfe0a34..d55ee8a 100644
--- a/base/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj2.java
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj2.java
@@ -3,6 +3,8 @@ package io.quicktype;
 import com.fasterxml.jackson.annotation.*;
 
 public class Obj2 {
+    private CultureInfo cultureInfo;
+    private Date date;
     private DateFormatter dateFormatter;
     private DateOnly dateOnly;
     private DateOnlyConverter dateOnlyConverter;
@@ -22,9 +24,11 @@ public class Obj2 {
     private Del del;
     private Delegate delegate;
     private Delete delete;
+    private DeserializationFeature deserializationFeature;
     private Dict dict;
     private Dictionary dictionary;
     private DidSet didSet;
+    private DoubleNode doubleNode;
     private long dummy;
     private Dynamic dynamic;
     private DynamicCast dynamicCast;
@@ -52,9 +56,6 @@ public class Obj2 {
     private FromJSON fromJSON;
     private Func func;
     private Function function;
-    private Get get;
-    private Global global;
-    private Go go;
     private Default obj2Default;
     private Do obj2Do;
     private DoubleClass obj2Double;
@@ -66,9 +67,18 @@ public class Obj2 {
     private Finally obj2Finally;
     private Float obj2Float;
     private For obj2For;
-    private Goto obj2Goto;
     private FalseClass purpleFalse;
 
+    @JsonProperty("CultureInfo")
+    public CultureInfo getCultureInfo() { return cultureInfo; }
+    @JsonProperty("CultureInfo")
+    public void setCultureInfo(CultureInfo value) { this.cultureInfo = value; }
+
+    @JsonProperty("date")
+    public Date getDate() { return date; }
+    @JsonProperty("date")
+    public void setDate(Date value) { this.date = value; }
+
     @JsonProperty("DateFormatter")
     public DateFormatter getDateFormatter() { return dateFormatter; }
     @JsonProperty("DateFormatter")
@@ -164,6 +174,11 @@ public class Obj2 {
     @JsonProperty("delete")
     public void setDelete(Delete value) { this.delete = value; }
 
+    @JsonProperty("DeserializationFeature")
+    public DeserializationFeature getDeserializationFeature() { return deserializationFeature; }
+    @JsonProperty("DeserializationFeature")
+    public void setDeserializationFeature(DeserializationFeature value) { this.deserializationFeature = value; }
+
     @JsonProperty("dict")
     public Dict getDict() { return dict; }
     @JsonProperty("dict")
@@ -179,6 +194,11 @@ public class Obj2 {
     @JsonProperty("didSet")
     public void setDidSet(DidSet value) { this.didSet = value; }
 
+    @JsonProperty("DoubleNode")
+    public DoubleNode getDoubleNode() { return doubleNode; }
+    @JsonProperty("DoubleNode")
+    public void setDoubleNode(DoubleNode value) { this.doubleNode = value; }
+
     @JsonProperty("dummy")
     public long getDummy() { return dummy; }
     @JsonProperty("dummy")
@@ -314,21 +334,6 @@ public class Obj2 {
     @JsonProperty("function")
     public void setFunction(Function value) { this.function = value; }
 
-    @JsonProperty("get")
-    public Get getGet() { return get; }
-    @JsonProperty("get")
-    public void setGet(Get value) { this.get = value; }
-
-    @JsonProperty("global")
-    public Global getGlobal() { return global; }
-    @JsonProperty("global")
-    public void setGlobal(Global value) { this.global = value; }
-
-    @JsonProperty("go")
-    public Go getGo() { return go; }
-    @JsonProperty("go")
-    public void setGo(Go value) { this.go = value; }
-
     @JsonProperty("default")
     public Default getObj2Default() { return obj2Default; }
     @JsonProperty("default")
@@ -384,11 +389,6 @@ public class Obj2 {
     @JsonProperty("for")
     public void setObj2For(For value) { this.obj2For = value; }
 
-    @JsonProperty("goto")
-    public Goto getObj2Goto() { return obj2Goto; }
-    @JsonProperty("goto")
-    public void setObj2Goto(Goto value) { this.obj2Goto = value; }
-
     @JsonProperty("false")
     public FalseClass getPurpleFalse() { return purpleFalse; }
     @JsonProperty("false")
diff --git a/base/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj3.java b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj3.java
index 1edbb6b..d36c4a0 100644
--- a/base/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj3.java
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj3.java
@@ -4,6 +4,9 @@ import com.fasterxml.jackson.annotation.*;
 
 public class Obj3 {
     private long dummy;
+    private Get get;
+    private Global global;
+    private Go go;
     private Guard guard;
     private HasOwnProperty hasOwnProperty;
     private HashCode hashCode;
@@ -18,6 +21,7 @@ public class Obj3 {
     private Init init;
     private Inline inline;
     private Inout inout;
+    private IntNode intNode;
     private Internal internal;
     private Is is;
     private ISODateTimeOffsetConverter isoDateTimeOffsetConverter;
@@ -48,6 +52,7 @@ public class Obj3 {
     private ListClass list;
     private Locale locale;
     private Lock lock;
+    private LongNode longNode;
     private MapClass map;
     private MapEntry mapEntry;
     private MetadataPropertyHandling metadataPropertyHandling;
@@ -55,10 +60,7 @@ public class Obj3 {
     private Mutable mutable;
     private Mutating mutating;
     private Namespace namespace;
-    private Newtonsoft newtonsoft;
-    private Nil nil;
-    private No no;
-    private Noexcept noexcept;
+    private Goto obj3Goto;
     private If obj3If;
     private Implements obj3Implements;
     private Import obj3Import;
@@ -66,14 +68,27 @@ public class Obj3 {
     private Int obj3Int;
     private Interface obj3Interface;
     private LongClass obj3Long;
-    private Native obj3Native;
-    private New obj3New;
 
     @JsonProperty("dummy")
     public long getDummy() { return dummy; }
     @JsonProperty("dummy")
     public void setDummy(long value) { this.dummy = value; }
 
+    @JsonProperty("get")
+    public Get getGet() { return get; }
+    @JsonProperty("get")
+    public void setGet(Get value) { this.get = value; }
+
+    @JsonProperty("global")
+    public Global getGlobal() { return global; }
+    @JsonProperty("global")
+    public void setGlobal(Global value) { this.global = value; }
+
+    @JsonProperty("go")
+    public Go getGo() { return go; }
+    @JsonProperty("go")
+    public void setGo(Go value) { this.go = value; }
+
     @JsonProperty("guard")
     public Guard getGuard() { return guard; }
     @JsonProperty("guard")
@@ -144,6 +159,11 @@ public class Obj3 {
     @JsonProperty("inout")
     public void setInout(Inout value) { this.inout = value; }
 
+    @JsonProperty("IntNode")
+    public IntNode getIntNode() { return intNode; }
+    @JsonProperty("IntNode")
+    public void setIntNode(IntNode value) { this.intNode = value; }
+
     @JsonProperty("internal")
     public Internal getInternal() { return internal; }
     @JsonProperty("internal")
@@ -294,6 +314,11 @@ public class Obj3 {
     @JsonProperty("lock")
     public void setLock(Lock value) { this.lock = value; }
 
+    @JsonProperty("LongNode")
+    public LongNode getLongNode() { return longNode; }
+    @JsonProperty("LongNode")
+    public void setLongNode(LongNode value) { this.longNode = value; }
+
     @JsonProperty("map")
     public MapClass getMap() { return map; }
     @JsonProperty("map")
@@ -329,25 +354,10 @@ public class Obj3 {
     @JsonProperty("namespace")
     public void setNamespace(Namespace value) { this.namespace = value; }
 
-    @JsonProperty("newtonsoft")
-    public Newtonsoft getNewtonsoft() { return newtonsoft; }
-    @JsonProperty("newtonsoft")
-    public void setNewtonsoft(Newtonsoft value) { this.newtonsoft = value; }
-
-    @JsonProperty("nil")
-    public Nil getNil() { return nil; }
-    @JsonProperty("nil")
-    public void setNil(Nil value) { this.nil = value; }
-
-    @JsonProperty("NO")
-    public No getNo() { return no; }
-    @JsonProperty("NO")
-    public void setNo(No value) { this.no = value; }
-
-    @JsonProperty("noexcept")
-    public Noexcept getNoexcept() { return noexcept; }
-    @JsonProperty("noexcept")
-    public void setNoexcept(Noexcept value) { this.noexcept = value; }
+    @JsonProperty("goto")
+    public Goto getObj3Goto() { return obj3Goto; }
+    @JsonProperty("goto")
+    public void setObj3Goto(Goto value) { this.obj3Goto = value; }
 
     @JsonProperty("if")
     public If getObj3If() { return obj3If; }
@@ -383,14 +393,4 @@ public class Obj3 {
     public LongClass getObj3Long() { return obj3Long; }
     @JsonProperty("long")
     public void setObj3Long(LongClass value) { this.obj3Long = value; }
-
-    @JsonProperty("native")
-    public Native getObj3Native() { return obj3Native; }
-    @JsonProperty("native")
-    public void setObj3Native(Native value) { this.obj3Native = value; }
-
-    @JsonProperty("new")
-    public New getObj3New() { return obj3New; }
-    @JsonProperty("new")
-    public void setObj3New(New value) { this.obj3New = value; }
 }
diff --git a/base/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj4.java b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj4.java
index 6003abf..a4587c4 100644
--- a/base/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj4.java
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/Obj4.java
@@ -4,7 +4,11 @@ import com.fasterxml.jackson.annotation.*;
 
 public class Obj4 {
     private long dummy;
+    private Newtonsoft newtonsoft;
+    private Nil nil;
+    private No no;
     private NoSuchMethod noSuchMethod;
+    private Noexcept noexcept;
     private Nonatomic nonatomic;
     private NoneClass none;
     private Nonlocal nonlocal;
@@ -14,9 +18,12 @@ public class Obj4 {
     private NSError nsError;
     private NSObject nsObject;
     private NSString nsString;
+    private NullNode nullNode;
     private Nullptr nullptr;
     private Number number;
     private Null obj4NULL;
+    private Native obj4Native;
+    private New obj4New;
     private Obj4None obj4None;
     private NullClass obj4Null;
     private Package obj4Package;
@@ -24,9 +31,9 @@ public class Obj4 {
     private Protected obj4Protected;
     private ProtocolClass obj4Protocol;
     private Public obj4Public;
-    private Return obj4Return;
     private ObjectClass object;
     private ObjectMapperClass objectMapper;
+    private ObjectNode objectNode;
     private Of of;
     private Oneway oneway;
     private Open open;
@@ -61,24 +68,37 @@ public class Obj4 {
     private Restrict restrict;
     private Retain retain;
     private Rethrows rethrows;
-    private Right right;
-    private RuntimeType runtimeType;
-    private S s;
-    private Sbyte sbyte;
-    private Sealed sealed;
-    private Sel sel;
-    private Select select;
 
     @JsonProperty("dummy")
     public long getDummy() { return dummy; }
     @JsonProperty("dummy")
     public void setDummy(long value) { this.dummy = value; }
 
+    @JsonProperty("newtonsoft")
+    public Newtonsoft getNewtonsoft() { return newtonsoft; }
+    @JsonProperty("newtonsoft")
+    public void setNewtonsoft(Newtonsoft value) { this.newtonsoft = value; }
+
+    @JsonProperty("nil")
+    public Nil getNil() { return nil; }
+    @JsonProperty("nil")
+    public void setNil(Nil value) { this.nil = value; }
+
+    @JsonProperty("NO")
+    public No getNo() { return no; }
+    @JsonProperty("NO")
+    public void setNo(No value) { this.no = value; }
+
     @JsonProperty("noSuchMethod")
     public NoSuchMethod getNoSuchMethod() { return noSuchMethod; }
     @JsonProperty("noSuchMethod")
     public void setNoSuchMethod(NoSuchMethod value) { this.noSuchMethod = value; }
 
+    @JsonProperty("noexcept")
+    public Noexcept getNoexcept() { return noexcept; }
+    @JsonProperty("noexcept")
+    public void setNoexcept(Noexcept value) { this.noexcept = value; }
+
     @JsonProperty("nonatomic")
     public Nonatomic getNonatomic() { return nonatomic; }
     @JsonProperty("nonatomic")
@@ -124,6 +144,11 @@ public class Obj4 {
     @JsonProperty("NSString")
     public void setNSString(NSString value) { this.nsString = value; }
 
+    @JsonProperty("NullNode")
+    public NullNode getNullNode() { return nullNode; }
+    @JsonProperty("NullNode")
+    public void setNullNode(NullNode value) { this.nullNode = value; }
+
     @JsonProperty("nullptr")
     public Nullptr getNullptr() { return nullptr; }
     @JsonProperty("nullptr")
@@ -139,6 +164,16 @@ public class Obj4 {
     @JsonProperty("NULL")
     public void setObj4NULL(Null value) { this.obj4NULL = value; }
 
+    @JsonProperty("native")
+    public Native getObj4Native() { return obj4Native; }
+    @JsonProperty("native")
+    public void setObj4Native(Native value) { this.obj4Native = value; }
+
+    @JsonProperty("new")
+    public New getObj4New() { return obj4New; }
+    @JsonProperty("new")
+    public void setObj4New(New value) { this.obj4New = value; }
+
     @JsonProperty("none")
     public Obj4None getObj4None() { return obj4None; }
     @JsonProperty("none")
@@ -174,11 +209,6 @@ public class Obj4 {
     @JsonProperty("public")
     public void setObj4Public(Public value) { this.obj4Public = value; }
 
-    @JsonProperty("return")
-    public Return getObj4Return() { return obj4Return; }
-    @JsonProperty("return")
-    public void setObj4Return(Return value) { this.obj4Return = value; }
-
     @JsonProperty("object")
     public ObjectClass getObject() { return object; }
     @JsonProperty("object")
@@ -189,6 +219,11 @@ public class Obj4 {
     @JsonProperty("ObjectMapper")
     public void setObjectMapper(ObjectMapperClass value) { this.objectMapper = value; }
 
+    @JsonProperty("ObjectNode")
+    public ObjectNode getObjectNode() { return objectNode; }
+    @JsonProperty("ObjectNode")
+    public void setObjectNode(ObjectNode value) { this.objectNode = value; }
+
     @JsonProperty("of")
     public Of getOf() { return of; }
     @JsonProperty("of")
@@ -358,39 +393,4 @@ public class Obj4 {
     public Rethrows getRethrows() { return rethrows; }
     @JsonProperty("rethrows")
     public void setRethrows(Rethrows value) { this.rethrows = value; }
-
-    @JsonProperty("right")
-    public Right getRight() { return right; }
-    @JsonProperty("right")
-    public void setRight(Right value) { this.right = value; }
-
-    @JsonProperty("runtimeType")
-    public RuntimeType getRuntimeType() { return runtimeType; }
-    @JsonProperty("runtimeType")
-    public void setRuntimeType(RuntimeType value) { this.runtimeType = value; }
-
-    @JsonProperty("s")
-    public S getS() { return s; }
-    @JsonProperty("s")
-    public void setS(S value) { this.s = value; }
-
-    @JsonProperty("sbyte")
-    public Sbyte getSbyte() { return sbyte; }
-    @JsonProperty("sbyte")
-    public void setSbyte(Sbyte value) { this.sbyte = value; }
-
-    @JsonProperty("sealed")
-    public Sealed getSealed() { return sealed; }
-    @JsonProperty("sealed")
-    public void setSealed(Sealed value) { this.sealed = value; }
-
-    @JsonProperty("SEL")
-    public Sel getSel() { return sel; }
-    @JsonProperty("SEL")
-    public void setSel(Sel value) { this.sel = value; }
-
-    @JsonProperty("select")
-    public Select getSelect() { return select; }
-    @JsonProperty("select")
-    public void setSelect(Select value) { this.select = 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..908ffbb 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 Return obj5Return;
     private SelfClass obj5Self;
     private Short obj5Short;
     private Static obj5Static;
@@ -19,8 +20,16 @@ public class Obj5 {
     private Try obj5Try;
     private TypeClass obj5Type;
     private TrueClass purpleTrue;
+    private Right right;
+    private RuntimeType runtimeType;
+    private S s;
+    private Sbyte sbyte;
+    private Sealed sealed;
+    private Sel sel;
+    private Select select;
     private Self self;
     private Sendable sendable;
+    private SerializationFeature serializationFeature;
     private Serialize serialize;
     private SerializerProviderClass serializerProvider;
     private Set set;
@@ -39,6 +48,7 @@ public class Obj5 {
     private Symbol symbol;
     private SystemClass system;
     private Template template;
+    private TextNode textNode;
     private Then then;
     private ThreadLocal threadLocal;
     private TimeOnly timeOnly;
@@ -58,22 +68,17 @@ public class Obj5 {
     private Unchecked unchecked;
     private Undefined undefined;
     private Union union;
-    private Unowned unowned;
-    private Unsafe unsafe;
-    private Unsigned unsigned;
-    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("return")
+    public Return getObj5Return() { return obj5Return; }
+    @JsonProperty("return")
+    public void setObj5Return(Return value) { this.obj5Return = value; }
+
     @JsonProperty("self")
     public SelfClass getObj5Self() { return obj5Self; }
     @JsonProperty("self")
@@ -149,6 +154,41 @@ public class Obj5 {
     @JsonProperty("true")
     public void setPurpleTrue(TrueClass value) { this.purpleTrue = value; }
 
+    @JsonProperty("right")
+    public Right getRight() { return right; }
+    @JsonProperty("right")
+    public void setRight(Right value) { this.right = value; }
+
+    @JsonProperty("runtimeType")
+    public RuntimeType getRuntimeType() { return runtimeType; }
+    @JsonProperty("runtimeType")
+    public void setRuntimeType(RuntimeType value) { this.runtimeType = value; }
+
+    @JsonProperty("s")
+    public S getS() { return s; }
+    @JsonProperty("s")
+    public void setS(S value) { this.s = value; }
+
+    @JsonProperty("sbyte")
+    public Sbyte getSbyte() { return sbyte; }
+    @JsonProperty("sbyte")
+    public void setSbyte(Sbyte value) { this.sbyte = value; }
+
+    @JsonProperty("sealed")
+    public Sealed getSealed() { return sealed; }
+    @JsonProperty("sealed")
+    public void setSealed(Sealed value) { this.sealed = value; }
+
+    @JsonProperty("SEL")
+    public Sel getSel() { return sel; }
+    @JsonProperty("SEL")
+    public void setSel(Sel value) { this.sel = value; }
+
+    @JsonProperty("select")
+    public Select getSelect() { return select; }
+    @JsonProperty("select")
+    public void setSelect(Select value) { this.select = value; }
+
     @JsonProperty("Self")
     public Self getSelf() { return self; }
     @JsonProperty("Self")
@@ -159,6 +199,11 @@ public class Obj5 {
     @JsonProperty("Sendable")
     public void setSendable(Sendable value) { this.sendable = value; }
 
+    @JsonProperty("SerializationFeature")
+    public SerializationFeature getSerializationFeature() { return serializationFeature; }
+    @JsonProperty("SerializationFeature")
+    public void setSerializationFeature(SerializationFeature value) { this.serializationFeature = value; }
+
     @JsonProperty("serialize")
     public Serialize getSerialize() { return serialize; }
     @JsonProperty("serialize")
@@ -249,6 +294,11 @@ public class Obj5 {
     @JsonProperty("template")
     public void setTemplate(Template value) { this.template = value; }
 
+    @JsonProperty("TextNode")
+    public TextNode getTextNode() { return textNode; }
+    @JsonProperty("TextNode")
+    public void setTextNode(TextNode value) { this.textNode = value; }
+
     @JsonProperty("then")
     public Then getThen() { return then; }
     @JsonProperty("then")
@@ -343,54 +393,4 @@ public class Obj5 {
     public Union getUnion() { return union; }
     @JsonProperty("union")
     public void setUnion(Union value) { this.union = value; }
-
-    @JsonProperty("unowned")
-    public Unowned getUnowned() { return unowned; }
-    @JsonProperty("unowned")
-    public void setUnowned(Unowned value) { this.unowned = value; }
-
-    @JsonProperty("unsafe")
-    public Unsafe getUnsafe() { return unsafe; }
-    @JsonProperty("unsafe")
-    public void setUnsafe(Unsafe value) { this.unsafe = value; }
-
-    @JsonProperty("unsigned")
-    public Unsigned getUnsigned() { return unsigned; }
-    @JsonProperty("unsigned")
-    public void setUnsigned(Unsigned value) { this.unsigned = 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..d7d4b17 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,16 @@ public class Obj6 {
     private Void obj6Void;
     private Volatile obj6Volatile;
     private While obj6While;
+    private Unowned unowned;
+    private Unsafe unsafe;
+    private Unsigned unsigned;
+    private Ushort ushort;
+    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 +47,56 @@ public class Obj6 {
     @JsonProperty("while")
     public void setObj6While(While value) { this.obj6While = value; }
 
+    @JsonProperty("unowned")
+    public Unowned getUnowned() { return unowned; }
+    @JsonProperty("unowned")
+    public void setUnowned(Unowned value) { this.unowned = value; }
+
+    @JsonProperty("unsafe")
+    public Unsafe getUnsafe() { return unsafe; }
+    @JsonProperty("unsafe")
+    public void setUnsafe(Unsafe value) { this.unsafe = value; }
+
+    @JsonProperty("unsigned")
+    public Unsigned getUnsigned() { return unsigned; }
+    @JsonProperty("unsigned")
+    public void setUnsigned(Unsigned value) { this.unsigned = 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; }
+
     @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/ObjectNode.java b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/ObjectNode.java
new file mode 100644
index 0000000..f1c6cd8
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/ObjectNode.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class ObjectNode {
+    private long objectNode;
+
+    @JsonProperty("ObjectNode")
+    public long getObjectNode() { return objectNode; }
+    @JsonProperty("ObjectNode")
+    public void setObjectNode(long value) { this.objectNode = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerializationFeature.java b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerializationFeature.java
new file mode 100644
index 0000000..3cfbc5e
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/SerializationFeature.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class SerializationFeature {
+    private long serializationFeature;
+
+    @JsonProperty("SerializationFeature")
+    public long getSerializationFeature() { return serializationFeature; }
+    @JsonProperty("SerializationFeature")
+    public void setSerializationFeature(long value) { this.serializationFeature = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/TextNode.java b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/TextNode.java
new file mode 100644
index 0000000..33f2a3c
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/TextNode.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class TextNode {
+    private long textNode;
+
+    @JsonProperty("TextNode")
+    public long getTextNode() { return textNode; }
+    @JsonProperty("TextNode")
+    public void setTextNode(long value) { this.textNode = 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..02499c7 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
@@ -204,13 +204,14 @@ const typeMap = {
     ], false),
     "Obj1": o([
         { json: "Any", js: "Any", typ: r("Any") },
+        { json: "ArrayNode", js: "ArrayNode", typ: r("ArrayNode") },
         { json: "BOOL", js: "BOOL", typ: r("Bool") },
+        { json: "BooleanNode", js: "BooleanNode", typ: r("BooleanNode") },
         { json: "Calendar", js: "Calendar", typ: r("Calendar") },
         { json: "Class", js: "Class", typ: r("Class") },
         { json: "Codable", js: "Codable", typ: r("Codable") },
         { json: "CodingKey", js: "CodingKey", typ: r("CodingKey") },
         { json: "CodingKeys", js: "CodingKeys", typ: r("CodingKeys") },
-        { json: "CultureInfo", js: "CultureInfo", typ: r("CultureInfo") },
         { json: "_", js: "_", typ: r("Empty") },
         { json: "_Bool", js: "_Bool", typ: r("BoolClass") },
         { json: "_Complex", js: "_Complex", typ: r("Complex") },
@@ -266,15 +267,20 @@ const typeMap = {
         { json: "convenience", js: "convenience", typ: r("Convenience") },
         { json: "convert", js: "convert", typ: r("Convert") },
         { json: "converter", js: "converter", typ: r("Converter") },
-        { json: "date", js: "date", typ: r("Date") },
         { json: "dummy", js: "dummy", typ: i(0) },
     ], false),
     "Any": o([
         { json: "Any", js: "Any", typ: i(0) },
     ], false),
+    "ArrayNode": o([
+        { json: "ArrayNode", js: "ArrayNode", typ: i(0) },
+    ], false),
     "Bool": o([
         { json: "BOOL", js: "BOOL", typ: i(0) },
     ], false),
+    "BooleanNode": o([
+        { json: "BooleanNode", js: "BooleanNode", typ: i(0) },
+    ], false),
     "Calendar": o([
         { json: "Calendar", js: "Calendar", typ: i(0) },
     ], false),
@@ -290,9 +296,6 @@ const typeMap = {
     "CodingKeys": o([
         { json: "CodingKeys", js: "CodingKeys", typ: i(0) },
     ], false),
-    "CultureInfo": o([
-        { json: "CultureInfo", js: "CultureInfo", typ: i(0) },
-    ], false),
     "Empty": o([
         { json: "_", js: "_", typ: i(0) },
     ], false),
@@ -458,10 +461,8 @@ const typeMap = {
     "Converter": o([
         { json: "converter", js: "converter", typ: i(0) },
     ], false),
-    "Date": o([
-        { json: "date", js: "date", typ: i(0) },
-    ], false),
     "Obj2": o([
+        { json: "CultureInfo", js: "CultureInfo", typ: r("CultureInfo") },
         { json: "DateFormatter", js: "DateFormatter", typ: r("DateFormatter") },
         { json: "DateOnly", js: "DateOnly", typ: r("DateOnly") },
         { json: "DateOnlyConverter", js: "DateOnlyConverter", typ: r("DateOnlyConverter") },
@@ -469,11 +470,14 @@ const typeMap = {
         { json: "DateTimeStyles", js: "DateTimeStyles", typ: r("DateTimeStyles") },
         { json: "Decoder", js: "Decoder", typ: r("Decoder") },
         { json: "DecodingError", js: "DecodingError", typ: r("DecodingError") },
+        { json: "DeserializationFeature", js: "DeserializationFeature", typ: r("DeserializationFeature") },
+        { json: "DoubleNode", js: "DoubleNode", typ: r("DoubleNode") },
         { json: "Encoder", js: "Encoder", typ: r("Encoder") },
         { json: "EnumValues", js: "EnumValues", typ: r("EnumValues") },
         { json: "Equatable", js: "Equatable", typ: r("Equatable") },
         { json: "False", js: "False", typ: r("False") },
         { json: "FormatException", js: "FormatException", typ: r("FormatException") },
+        { json: "date", js: "date", typ: r("Date") },
         { json: "date_parse_handling", js: "date_parse_handling", typ: r("DateParseHandling") },
         { json: "debugger", js: "debugger", typ: r("Debugger") },
         { json: "decimal", js: "decimal", typ: r("Decimal") },
@@ -523,10 +527,9 @@ const typeMap = {
         { json: "from_json", js: "from_json", typ: r("FromJSON") },
         { json: "func", js: "func", typ: r("Func") },
         { json: "function", js: "function", typ: r("Function") },
-        { json: "get", js: "get", typ: r("Get") },
-        { json: "global", js: "global", typ: r("Global") },
-        { json: "go", js: "go", typ: r("Go") },
-        { json: "goto", js: "goto", typ: r("Goto") },
+    ], false),
+    "CultureInfo": o([
+        { json: "CultureInfo", js: "CultureInfo", typ: i(0) },
     ], false),
     "DateFormatter": o([
         { json: "DateFormatter", js: "DateFormatter", typ: i(0) },
@@ -549,6 +552,12 @@ const typeMap = {
     "DecodingError": o([
         { json: "DecodingError", js: "DecodingError", typ: i(0) },
     ], false),
+    "DeserializationFeature": o([
+        { json: "DeserializationFeature", js: "DeserializationFeature", typ: i(0) },
+    ], false),
+    "DoubleNode": o([
+        { json: "DoubleNode", js: "DoubleNode", typ: i(0) },
+    ], false),
     "Encoder": o([
         { json: "Encoder", js: "Encoder", typ: i(0) },
     ], false),
@@ -564,6 +573,9 @@ const typeMap = {
     "FormatException": o([
         { json: "FormatException", js: "FormatException", typ: i(0) },
     ], false),
+    "Date": o([
+        { json: "date", js: "date", typ: i(0) },
+    ], false),
     "DateParseHandling": o([
         { json: "date_parse_handling", js: "date_parse_handling", typ: i(0) },
     ], false),
@@ -708,22 +720,11 @@ const typeMap = {
     "Function": o([
         { json: "function", js: "function", typ: i(0) },
     ], false),
-    "Get": o([
-        { json: "get", js: "get", typ: i(0) },
-    ], false),
-    "Global": o([
-        { json: "global", js: "global", typ: i(0) },
-    ], false),
-    "Go": o([
-        { json: "go", js: "go", typ: i(0) },
-    ], false),
-    "Goto": o([
-        { json: "goto", js: "goto", typ: i(0) },
-    ], false),
     "Obj3": o([
         { json: "Hashable", js: "Hashable", typ: r("Hashable") },
         { json: "Hasher", js: "Hasher", typ: r("Hasher") },
         { json: "IMP", js: "IMP", typ: r("Imp") },
+        { json: "IntNode", js: "IntNode", typ: r("IntNode") },
         { json: "IsoDateTimeOffsetConverter", js: "IsoDateTimeOffsetConverter", typ: r("ISODateTimeOffsetConverter") },
         { json: "JSONAny", js: "JSONAny", typ: r("JSONAny") },
         { json: "JSONCodingKey", js: "JSONCodingKey", typ: r("JSONCodingKey") },
@@ -737,9 +738,13 @@ const typeMap = {
         { json: "JsonReader", js: "JsonReader", typ: r("JSONReader") },
         { json: "JsonTokenType", js: "JsonTokenType", typ: r("JSONTokenType") },
         { json: "Locale", js: "Locale", typ: r("Locale") },
+        { json: "LongNode", js: "LongNode", typ: r("LongNode") },
         { json: "MapEntry", js: "MapEntry", typ: r("MapEntry") },
-        { json: "NO", js: "NO", typ: r("No") },
         { json: "dummy", js: "dummy", typ: i(0) },
+        { json: "get", js: "get", typ: r("Get") },
+        { json: "global", js: "global", typ: r("Global") },
+        { json: "go", js: "go", typ: r("Go") },
+        { json: "goto", js: "goto", typ: r("Goto") },
         { json: "guard", js: "guard", typ: r("Guard") },
         { json: "hasOwnProperty", js: "hasOwnProperty", typ: r("HasOwnProperty") },
         { json: "hashCode", js: "hashCode", typ: r("HashCode") },
@@ -781,11 +786,6 @@ const typeMap = {
         { json: "mutable", js: "mutable", typ: r("Mutable") },
         { json: "mutating", js: "mutating", typ: r("Mutating") },
         { json: "namespace", js: "namespace", typ: r("Namespace") },
-        { json: "native", js: "native", typ: r("Native") },
-        { json: "new", js: "new", typ: r("New") },
-        { json: "newtonsoft", js: "newtonsoft", typ: r("Newtonsoft") },
-        { json: "nil", js: "nil", typ: r("Nil") },
-        { json: "noexcept", js: "noexcept", typ: r("Noexcept") },
     ], false),
     "Hashable": o([
         { json: "Hashable", js: "Hashable", typ: i(0) },
@@ -796,6 +796,9 @@ const typeMap = {
     "Imp": o([
         { json: "IMP", js: "IMP", typ: i(0) },
     ], false),
+    "IntNode": o([
+        { json: "IntNode", js: "IntNode", typ: i(0) },
+    ], false),
     "ISODateTimeOffsetConverter": o([
         { json: "IsoDateTimeOffsetConverter", js: "IsoDateTimeOffsetConverter", typ: i(0) },
     ], false),
@@ -835,11 +838,23 @@ const typeMap = {
     "Locale": o([
         { json: "Locale", js: "Locale", typ: i(0) },
     ], false),
+    "LongNode": o([
+        { json: "LongNode", js: "LongNode", typ: i(0) },
+    ], false),
     "MapEntry": o([
         { json: "MapEntry", js: "MapEntry", typ: i(0) },
     ], false),
-    "No": o([
-        { json: "NO", js: "NO", typ: i(0) },
+    "Get": o([
+        { json: "get", js: "get", typ: i(0) },
+    ], false),
+    "Global": o([
+        { json: "global", js: "global", typ: i(0) },
+    ], false),
+    "Go": o([
+        { json: "go", js: "go", typ: i(0) },
+    ], false),
+    "Goto": o([
+        { json: "goto", js: "goto", typ: i(0) },
     ], false),
     "Guard": o([
         { json: "guard", js: "guard", typ: i(0) },
@@ -964,33 +979,25 @@ const typeMap = {
     "Namespace": o([
         { json: "namespace", js: "namespace", typ: i(0) },
     ], false),
-    "Native": o([
-        { json: "native", js: "native", typ: i(0) },
-    ], false),
-    "New": o([
-        { json: "new", js: "new", typ: i(0) },
-    ], false),
-    "Newtonsoft": o([
-        { json: "newtonsoft", js: "newtonsoft", typ: i(0) },
-    ], false),
-    "Nil": o([
-        { json: "nil", js: "nil", typ: i(0) },
-    ], false),
-    "Noexcept": o([
-        { json: "noexcept", js: "noexcept", typ: i(0) },
-    ], false),
     "Obj4": o([
+        { json: "NO", js: "NO", typ: r("No") },
         { json: "NSError", js: "NSError", typ: r("NSError") },
         { json: "NSObject", js: "NSObject", typ: r("NSObject") },
         { json: "NSString", js: "NSString", typ: r("NSString") },
         { json: "NULL", js: "NULL", typ: r("Null") },
         { json: "None", js: "None", typ: r("None") },
+        { json: "NullNode", js: "NullNode", typ: r("NullNode") },
         { json: "ObjectMapper", js: "ObjectMapper", typ: r("ObjectMapper") },
+        { json: "ObjectNode", js: "ObjectNode", typ: r("ObjectNode") },
         { json: "Protocol", js: "Protocol", typ: r("Protocol") },
         { json: "RegExp", js: "RegExp", typ: r("RegExp") },
-        { json: "SEL", js: "SEL", typ: r("Sel") },
         { json: "dummy", js: "dummy", typ: i(0) },
+        { json: "native", js: "native", typ: r("Native") },
+        { json: "new", js: "new", typ: r("New") },
+        { json: "newtonsoft", js: "newtonsoft", typ: r("Newtonsoft") },
+        { json: "nil", js: "nil", typ: r("Nil") },
         { json: "noSuchMethod", js: "noSuchMethod", typ: r("NoSuchMethod") },
+        { json: "noexcept", js: "noexcept", typ: r("Noexcept") },
         { json: "nonatomic", js: "nonatomic", typ: r("Nonatomic") },
         { json: "none", js: "none", typ: r("NoneClass") },
         { json: "nonlocal", js: "nonlocal", typ: r("Nonlocal") },
@@ -1038,13 +1045,9 @@ const typeMap = {
         { json: "restrict", js: "restrict", typ: r("Restrict") },
         { json: "retain", js: "retain", typ: r("Retain") },
         { json: "rethrows", js: "rethrows", typ: r("Rethrows") },
-        { json: "return", js: "return", typ: r("Return") },
-        { json: "right", js: "right", typ: r("Right") },
-        { json: "runtimeType", js: "runtimeType", typ: r("RuntimeType") },
-        { json: "s", js: "s", typ: r("S") },
-        { json: "sbyte", js: "sbyte", typ: r("Sbyte") },
-        { json: "sealed", js: "sealed", typ: r("Sealed") },
-        { json: "select", js: "select", typ: r("Select") },
+    ], false),
+    "No": o([
+        { json: "NO", js: "NO", typ: i(0) },
     ], false),
     "NSError": o([
         { json: "NSError", js: "NSError", typ: i(0) },
@@ -1061,21 +1064,39 @@ const typeMap = {
     "None": o([
         { json: "None", js: "None", typ: i(0) },
     ], false),
+    "NullNode": o([
+        { json: "NullNode", js: "NullNode", typ: i(0) },
+    ], false),
     "ObjectMapper": o([
         { json: "ObjectMapper", js: "ObjectMapper", typ: i(0) },
     ], false),
+    "ObjectNode": o([
+        { json: "ObjectNode", js: "ObjectNode", typ: i(0) },
+    ], false),
     "Protocol": o([
         { json: "Protocol", js: "Protocol", typ: i(0) },
     ], false),
     "RegExp": o([
         { json: "RegExp", js: "RegExp", typ: { uuid: "" } },
     ], false),
-    "Sel": o([
-        { json: "SEL", js: "SEL", typ: i(0) },
+    "Native": o([
+        { json: "native", js: "native", typ: i(0) },
+    ], false),
+    "New": o([
+        { json: "new", js: "new", typ: i(0) },
+    ], false),
+    "Newtonsoft": o([
+        { json: "newtonsoft", js: "newtonsoft", typ: i(0) },
+    ], false),
+    "Nil": o([
+        { json: "nil", js: "nil", typ: i(0) },
     ], false),
     "NoSuchMethod": o([
         { json: "noSuchMethod", js: "noSuchMethod", typ: i(0) },
     ], false),
+    "Noexcept": o([
+        { json: "noexcept", js: "noexcept", typ: i(0) },
+    ], false),
     "Nonatomic": o([
         { json: "nonatomic", js: "nonatomic", typ: i(0) },
     ], false),
@@ -1217,44 +1238,30 @@ const typeMap = {
     "Rethrows": o([
         { json: "rethrows", js: "rethrows", typ: i(0) },
     ], false),
-    "Return": o([
-        { json: "return", js: "return", typ: i(0) },
-    ], false),
-    "Right": o([
-        { json: "right", js: "right", typ: i(0) },
-    ], false),
-    "RuntimeType": o([
-        { json: "runtimeType", js: "runtimeType", typ: i(0) },
-    ], false),
-    "S": o([
-        { json: "s", js: "s", typ: i(0) },
-    ], false),
-    "Sbyte": o([
-        { json: "sbyte", js: "sbyte", typ: i(0) },
-    ], false),
-    "Sealed": o([
-        { json: "sealed", js: "sealed", typ: i(0) },
-    ], false),
-    "Select": o([
-        { json: "select", js: "select", typ: i(0) },
-    ], false),
     "Obj5": o([
+        { json: "SEL", js: "SEL", typ: r("Sel") },
         { json: "Self", js: "Self", typ: r("Self") },
         { json: "Sendable", js: "Sendable", typ: r("Sendable") },
+        { json: "SerializationFeature", js: "SerializationFeature", typ: r("SerializationFeature") },
         { json: "SerializerProvider", js: "SerializerProvider", typ: r("SerializerProvider") },
         { json: "SimpleModule", js: "SimpleModule", typ: r("SimpleModule") },
         { json: "Standards", js: "Standards", typ: r("Standards") },
         { json: "StdDeserializer", js: "StdDeserializer", typ: r("StdDeserializer") },
         { json: "StdSerializer", js: "StdSerializer", typ: r("StdSerializer") },
+        { json: "TextNode", js: "TextNode", typ: r("TextNode") },
         { json: "TimeOnly", js: "TimeOnly", typ: r("TimeOnly") },
         { json: "TimeOnlyConverter", js: "TimeOnlyConverter", typ: r("TimeOnlyConverter") },
         { 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: "dummy", js: "dummy", typ: i(0) },
+        { json: "return", js: "return", typ: r("Return") },
+        { json: "right", js: "right", typ: r("Right") },
+        { json: "runtimeType", js: "runtimeType", typ: r("RuntimeType") },
+        { json: "s", js: "s", typ: r("S") },
+        { json: "sbyte", js: "sbyte", typ: r("Sbyte") },
+        { json: "sealed", js: "sealed", typ: r("Sealed") },
+        { json: "select", js: "select", typ: r("Select") },
         { json: "self", js: "self", typ: r("SelfClass") },
         { json: "serialize", js: "serialize", typ: r("Serialize") },
         { json: "set", js: "set", typ: r("Set") },
@@ -1297,13 +1304,9 @@ const typeMap = {
         { json: "unchecked", js: "unchecked", typ: r("Unchecked") },
         { json: "undefined", js: "undefined", typ: r("Undefined") },
         { json: "union", js: "union", typ: r("Union") },
-        { json: "unowned", js: "unowned", typ: r("Unowned") },
-        { 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),
+    "Sel": o([
+        { json: "SEL", js: "SEL", typ: i(0) },
     ], false),
     "Self": o([
         { json: "Self", js: "Self", typ: i(0) },
@@ -1311,6 +1314,9 @@ const typeMap = {
     "Sendable": o([
         { json: "Sendable", js: "Sendable", typ: i(0) },
     ], false),
+    "SerializationFeature": o([
+        { json: "SerializationFeature", js: "SerializationFeature", typ: i(0) },
+    ], false),
     "SerializerProvider": o([
         { json: "SerializerProvider", js: "SerializerProvider", typ: i(0) },
     ], false),
@@ -1326,6 +1332,9 @@ const typeMap = {
     "StdSerializer": o([
         { json: "StdSerializer", js: "StdSerializer", typ: i(0) },
     ], false),
+    "TextNode": o([
+        { json: "TextNode", js: "TextNode", typ: i(0) },
+    ], false),
     "TimeOnly": o([
         { json: "TimeOnly", js: "TimeOnly", typ: i(0) },
     ], false),
@@ -1341,14 +1350,26 @@ const typeMap = {
     "Type": o([
         { json: "Type", js: "Type", typ: i(0) },
     ], false),
-    "UUID": o([
-        { json: "UUID", js: "UUID", typ: i(0) },
+    "Return": o([
+        { json: "return", js: "return", typ: i(0) },
     ], false),
-    "Utf8JSONReader": o([
-        { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: i(0) },
+    "Right": o([
+        { json: "right", js: "right", typ: i(0) },
     ], false),
-    "Utf8JSONWriter": o([
-        { json: "Utf8JsonWriter", js: "Utf8JsonWriter", typ: i(0) },
+    "RuntimeType": o([
+        { json: "runtimeType", js: "runtimeType", typ: i(0) },
+    ], false),
+    "S": o([
+        { json: "s", js: "s", typ: i(0) },
+    ], false),
+    "Sbyte": o([
+        { json: "sbyte", js: "sbyte", typ: i(0) },
+    ], false),
+    "Sealed": o([
+        { json: "sealed", js: "sealed", typ: i(0) },
+    ], false),
+    "Select": o([
+        { json: "select", js: "select", typ: i(0) },
     ], false),
     "SelfClass": o([
         { json: "self", js: "self", typ: i(0) },
@@ -1476,6 +1497,43 @@ const typeMap = {
     "Union": o([
         { json: "union", js: "union", 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: "unowned", js: "unowned", typ: r("Unowned") },
+        { 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") },
+        { json: "void", js: "void", typ: r("Void") },
+        { json: "volatile", js: "volatile", typ: r("Volatile") },
+        { json: "wchar_t", js: "wchar_t", typ: r("WcharT") },
+        { json: "weak", js: "weak", typ: r("Weak") },
+        { json: "where", js: "where", typ: r("Where") },
+        { json: "while", js: "while", typ: r("While") },
+        { json: "willSet", js: "willSet", typ: r("WillSet") },
+        { json: "with", js: "with", typ: r("With") },
+        { json: "xor", js: "xor", typ: r("Xor") },
+        { 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),
     "Unowned": o([
         { json: "unowned", js: "unowned", typ: i(0) },
     ], false),
@@ -1497,24 +1555,6 @@ const typeMap = {
     "Virtual": o([
         { json: "virtual", js: "virtual", typ: i(0) },
     ], false),
-    "Obj6": o([
-        { json: "YES", js: "YES", typ: r("Yes") },
-        { json: "dummy", js: "dummy", typ: i(0) },
-        { json: "void", js: "void", typ: r("Void") },
-        { json: "volatile", js: "volatile", typ: r("Volatile") },
-        { json: "wchar_t", js: "wchar_t", typ: r("WcharT") },
-        { json: "weak", js: "weak", typ: r("Weak") },
-        { json: "where", js: "where", typ: r("Where") },
-        { json: "while", js: "while", typ: r("While") },
-        { json: "willSet", js: "willSet", typ: r("WillSet") },
-        { json: "with", js: "with", typ: r("With") },
-        { json: "xor", js: "xor", typ: r("Xor") },
-        { json: "xor_eq", js: "xor_eq", typ: r("XorEq") },
-        { json: "yield", js: "yield", typ: r("Yield") },
-    ], false),
-    "Yes": o([
-        { json: "YES", js: "YES", 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..99f424e 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
@@ -16,13 +16,14 @@ const Integer = (props, name) => props[name] == null || Number.isInteger(props[n
 let _TopLevel;
 let _Obj1;
 let _Any;
+let _ArrayNode;
 let _Bool;
+let _BooleanNode;
 let _Calendar;
 let _Class;
 let _Codable;
 let _CodingKey;
 let _CodingKeys;
-let _CultureInfo;
 let _Empty;
 let _BoolClass;
 let _Complex;
@@ -78,8 +79,8 @@ let _Continue;
 let _Convenience;
 let _Convert;
 let _Converter;
-let _Date;
 let _Obj2;
+let _CultureInfo;
 let _DateFormatter;
 let _DateOnly;
 let _DateOnlyConverter;
@@ -87,11 +88,14 @@ let _DateTime;
 let _DateTimeStyles;
 let _Decoder;
 let _DecodingError;
+let _DeserializationFeature;
+let _DoubleNode;
 let _Encoder;
 let _EnumValues;
 let _Equatable;
 let _False;
 let _FormatException;
+let _Date;
 let _DateParseHandling;
 let _Debugger;
 let _Decimal;
@@ -140,14 +144,11 @@ let _From;
 let _FromJSON;
 let _Func;
 let _Function;
-let _Get;
-let _Global;
-let _Go;
-let _Goto;
 let _Obj3;
 let _Hashable;
 let _Hasher;
 let _Imp;
+let _IntNode;
 let _ISODateTimeOffsetConverter;
 let _JSONAny;
 let _JSONCodingKey;
@@ -161,8 +162,12 @@ let _JSONParser;
 let _JSONReader;
 let _JSONTokenType;
 let _Locale;
+let _LongNode;
 let _MapEntry;
-let _No;
+let _Get;
+let _Global;
+let _Go;
+let _Goto;
 let _Guard;
 let _HasOwnProperty;
 let _HashCode;
@@ -204,22 +209,24 @@ let _Module;
 let _Mutable;
 let _Mutating;
 let _Namespace;
-let _Native;
-let _New;
-let _Newtonsoft;
-let _Nil;
-let _Noexcept;
 let _Obj4;
+let _No;
 let _NSError;
 let _NSObject;
 let _NSString;
 let _Null;
 let _None;
+let _NullNode;
 let _ObjectMapper;
+let _ObjectNode;
 let _Protocol;
 let _RegExp;
-let _Sel;
+let _Native;
+let _New;
+let _Newtonsoft;
+let _Nil;
 let _NoSuchMethod;
+let _Noexcept;
 let _Nonatomic;
 let _NoneClass;
 let _Nonlocal;
@@ -267,29 +274,29 @@ let _Requires;
 let _Restrict;
 let _Retain;
 let _Rethrows;
-let _Return;
-let _Right;
-let _RuntimeType;
-let _S;
-let _Sbyte;
-let _Sealed;
-let _Select;
 let _Obj5;
+let _Sel;
 let _Self;
 let _Sendable;
+let _SerializationFeature;
 let _SerializerProvider;
 let _SimpleModule;
 let _Standards;
 let _StdDeserializer;
 let _StdSerializer;
+let _TextNode;
 let _TimeOnly;
 let _TimeOnlyConverter;
 let _TimeZone;
 let _True;
 let _Type;
-let _UUID;
-let _Utf8JSONReader;
-let _Utf8JSONWriter;
+let _Return;
+let _Right;
+let _RuntimeType;
+let _S;
+let _Sbyte;
+let _Sealed;
+let _Select;
 let _SelfClass;
 let _Serialize;
 let _Set;
@@ -332,6 +339,11 @@ let _Ulong;
 let _Unchecked;
 let _Undefined;
 let _Union;
+let _Obj6;
+let _UUID;
+let _Utf8JSONReader;
+let _Utf8JSONWriter;
+let _Yes;
 let _Unowned;
 let _Unsafe;
 let _Unsigned;
@@ -339,8 +351,6 @@ let _Ushort;
 let _Using;
 let _Var;
 let _Virtual;
-let _Obj6;
-let _Yes;
 let _Void;
 let _Volatile;
 let _WcharT;
@@ -356,9 +366,15 @@ const _EnumValue = PropTypes.oneOf(['ready', 'done']);
 _Any = PropTypes.shape({
     "Any": PropTypes.oneOfType([Integer]).isRequired,
 });
+_ArrayNode = PropTypes.shape({
+    "ArrayNode": PropTypes.oneOfType([Integer]).isRequired,
+});
 _Bool = PropTypes.shape({
     "BOOL": PropTypes.oneOfType([Integer]).isRequired,
 });
+_BooleanNode = PropTypes.shape({
+    "BooleanNode": PropTypes.oneOfType([Integer]).isRequired,
+});
 _Calendar = PropTypes.shape({
     "Calendar": PropTypes.oneOfType([Integer]).isRequired,
 });
@@ -374,9 +390,6 @@ _CodingKey = PropTypes.shape({
 _CodingKeys = PropTypes.shape({
     "CodingKeys": PropTypes.oneOfType([Integer]).isRequired,
 });
-_CultureInfo = PropTypes.shape({
-    "CultureInfo": PropTypes.oneOfType([Integer]).isRequired,
-});
 _Empty = PropTypes.shape({
     "_": PropTypes.oneOfType([Integer]).isRequired,
 });
@@ -542,18 +555,16 @@ _Convert = PropTypes.shape({
 _Converter = PropTypes.shape({
     "converter": PropTypes.oneOfType([Integer]).isRequired,
 });
-_Date = PropTypes.shape({
-    "date": PropTypes.oneOfType([Integer]).isRequired,
-});
 _Obj1 = PropTypes.shape({
     "Any": _Any,
+    "ArrayNode": _ArrayNode,
     "BOOL": _Bool,
+    "BooleanNode": _BooleanNode,
     "Calendar": _Calendar,
     "Class": _Class,
     "Codable": _Codable,
     "CodingKey": _CodingKey,
     "CodingKeys": _CodingKeys,
-    "CultureInfo": _CultureInfo,
     "_": _Empty,
     "_Bool": _BoolClass,
     "_Complex": _Complex,
@@ -609,9 +620,11 @@ _Obj1 = PropTypes.shape({
     "convenience": _Convenience,
     "convert": _Convert,
     "converter": _Converter,
-    "date": _Date,
     "dummy": PropTypes.oneOfType([Integer]).isRequired,
 });
+_CultureInfo = PropTypes.shape({
+    "CultureInfo": PropTypes.oneOfType([Integer]).isRequired,
+});
 _DateFormatter = PropTypes.shape({
     "DateFormatter": PropTypes.oneOfType([Integer]).isRequired,
 });
@@ -633,6 +646,12 @@ _Decoder = PropTypes.shape({
 _DecodingError = PropTypes.shape({
     "DecodingError": PropTypes.oneOfType([Integer]).isRequired,
 });
+_DeserializationFeature = PropTypes.shape({
+    "DeserializationFeature": PropTypes.oneOfType([Integer]).isRequired,
+});
+_DoubleNode = PropTypes.shape({
+    "DoubleNode": PropTypes.oneOfType([Integer]).isRequired,
+});
 _Encoder = PropTypes.shape({
     "Encoder": PropTypes.oneOfType([Integer]).isRequired,
 });
@@ -648,6 +667,9 @@ _False = PropTypes.shape({
 _FormatException = PropTypes.shape({
     "FormatException": PropTypes.oneOfType([Integer]).isRequired,
 });
+_Date = PropTypes.shape({
+    "date": PropTypes.oneOfType([Integer]).isRequired,
+});
 _DateParseHandling = PropTypes.shape({
     "date_parse_handling": PropTypes.oneOfType([Integer]).isRequired,
 });
@@ -792,19 +814,8 @@ _Func = PropTypes.shape({
 _Function = PropTypes.shape({
     "function": PropTypes.oneOfType([Integer]).isRequired,
 });
-_Get = PropTypes.shape({
-    "get": PropTypes.oneOfType([Integer]).isRequired,
-});
-_Global = PropTypes.shape({
-    "global": PropTypes.oneOfType([Integer]).isRequired,
-});
-_Go = PropTypes.shape({
-    "go": PropTypes.oneOfType([Integer]).isRequired,
-});
-_Goto = PropTypes.shape({
-    "goto": PropTypes.oneOfType([Integer]).isRequired,
-});
 _Obj2 = PropTypes.shape({
+    "CultureInfo": _CultureInfo,
     "DateFormatter": _DateFormatter,
     "DateOnly": _DateOnly,
     "DateOnlyConverter": _DateOnlyConverter,
@@ -812,11 +823,14 @@ _Obj2 = PropTypes.shape({
     "DateTimeStyles": _DateTimeStyles,
     "Decoder": _Decoder,
     "DecodingError": _DecodingError,
+    "DeserializationFeature": _DeserializationFeature,
+    "DoubleNode": _DoubleNode,
     "Encoder": _Encoder,
     "EnumValues": _EnumValues,
     "Equatable": _Equatable,
     "False": _False,
     "FormatException": _FormatException,
+    "date": _Date,
     "date_parse_handling": _DateParseHandling,
     "debugger": _Debugger,
     "decimal": _Decimal,
@@ -866,10 +880,6 @@ _Obj2 = PropTypes.shape({
     "from_json": _FromJSON,
     "func": _Func,
     "function": _Function,
-    "get": _Get,
-    "global": _Global,
-    "go": _Go,
-    "goto": _Goto,
 });
 _Hashable = PropTypes.shape({
     "Hashable": PropTypes.oneOfType([Integer]).isRequired,
@@ -880,6 +890,9 @@ _Hasher = PropTypes.shape({
 _Imp = PropTypes.shape({
     "IMP": PropTypes.oneOfType([Integer]).isRequired,
 });
+_IntNode = PropTypes.shape({
+    "IntNode": PropTypes.oneOfType([Integer]).isRequired,
+});
 _ISODateTimeOffsetConverter = PropTypes.shape({
     "IsoDateTimeOffsetConverter": PropTypes.oneOfType([Integer]).isRequired,
 });
@@ -919,11 +932,23 @@ _JSONTokenType = PropTypes.shape({
 _Locale = PropTypes.shape({
     "Locale": PropTypes.oneOfType([Integer]).isRequired,
 });
+_LongNode = PropTypes.shape({
+    "LongNode": PropTypes.oneOfType([Integer]).isRequired,
+});
 _MapEntry = PropTypes.shape({
     "MapEntry": PropTypes.oneOfType([Integer]).isRequired,
 });
-_No = PropTypes.shape({
-    "NO": PropTypes.oneOfType([Integer]).isRequired,
+_Get = PropTypes.shape({
+    "get": PropTypes.oneOfType([Integer]).isRequired,
+});
+_Global = PropTypes.shape({
+    "global": PropTypes.oneOfType([Integer]).isRequired,
+});
+_Go = PropTypes.shape({
+    "go": PropTypes.oneOfType([Integer]).isRequired,
+});
+_Goto = PropTypes.shape({
+    "goto": PropTypes.oneOfType([Integer]).isRequired,
 });
 _Guard = PropTypes.shape({
     "guard": PropTypes.oneOfType([Integer]).isRequired,
@@ -1048,25 +1073,11 @@ _Mutating = PropTypes.shape({
 _Namespace = PropTypes.shape({
     "namespace": PropTypes.oneOfType([Integer]).isRequired,
 });
-_Native = PropTypes.shape({
-    "native": PropTypes.oneOfType([Integer]).isRequired,
-});
-_New = PropTypes.shape({
-    "new": PropTypes.oneOfType([Integer]).isRequired,
-});
-_Newtonsoft = PropTypes.shape({
-    "newtonsoft": PropTypes.oneOfType([Integer]).isRequired,
-});
-_Nil = PropTypes.shape({
-    "nil": PropTypes.oneOfType([Integer]).isRequired,
-});
-_Noexcept = PropTypes.shape({
-    "noexcept": PropTypes.oneOfType([Integer]).isRequired,
-});
 _Obj3 = PropTypes.shape({
     "Hashable": _Hashable,
     "Hasher": _Hasher,
     "IMP": _Imp,
+    "IntNode": _IntNode,
     "IsoDateTimeOffsetConverter": _ISODateTimeOffsetConverter,
     "JSONAny": _JSONAny,
     "JSONCodingKey": _JSONCodingKey,
@@ -1080,9 +1091,13 @@ _Obj3 = PropTypes.shape({
     "JsonReader": _JSONReader,
     "JsonTokenType": _JSONTokenType,
     "Locale": _Locale,
+    "LongNode": _LongNode,
     "MapEntry": _MapEntry,
-    "NO": _No,
     "dummy": PropTypes.oneOfType([Integer]).isRequired,
+    "get": _Get,
+    "global": _Global,
+    "go": _Go,
+    "goto": _Goto,
     "guard": _Guard,
     "hasOwnProperty": _HasOwnProperty,
     "hashCode": _HashCode,
@@ -1124,11 +1139,9 @@ _Obj3 = PropTypes.shape({
     "mutable": _Mutable,
     "mutating": _Mutating,
     "namespace": _Namespace,
-    "native": _Native,
-    "new": _New,
-    "newtonsoft": _Newtonsoft,
-    "nil": _Nil,
-    "noexcept": _Noexcept,
+});
+_No = PropTypes.shape({
+    "NO": PropTypes.oneOfType([Integer]).isRequired,
 });
 _NSError = PropTypes.shape({
     "NSError": PropTypes.oneOfType([Integer]).isRequired,
@@ -1145,21 +1158,39 @@ _Null = PropTypes.shape({
 _None = PropTypes.shape({
     "None": PropTypes.oneOfType([Integer]).isRequired,
 });
+_NullNode = PropTypes.shape({
+    "NullNode": PropTypes.oneOfType([Integer]).isRequired,
+});
 _ObjectMapper = PropTypes.shape({
     "ObjectMapper": PropTypes.oneOfType([Integer]).isRequired,
 });
+_ObjectNode = PropTypes.shape({
+    "ObjectNode": PropTypes.oneOfType([Integer]).isRequired,
+});
 _Protocol = PropTypes.shape({
     "Protocol": PropTypes.oneOfType([Integer]).isRequired,
 });
 _RegExp = PropTypes.shape({
     "RegExp": PropTypes.oneOfType([(props, name) => props[name] == null || /^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i.test(props[name]) ? null : new Error("Expected UUID")]).isRequired,
 });
-_Sel = PropTypes.shape({
-    "SEL": PropTypes.oneOfType([Integer]).isRequired,
+_Native = PropTypes.shape({
+    "native": PropTypes.oneOfType([Integer]).isRequired,
+});
+_New = PropTypes.shape({
+    "new": PropTypes.oneOfType([Integer]).isRequired,
+});
+_Newtonsoft = PropTypes.shape({
+    "newtonsoft": PropTypes.oneOfType([Integer]).isRequired,
+});
+_Nil = PropTypes.shape({
+    "nil": PropTypes.oneOfType([Integer]).isRequired,
 });
 _NoSuchMethod = PropTypes.shape({
     "noSuchMethod": PropTypes.oneOfType([Integer]).isRequired,
 });
+_Noexcept = PropTypes.shape({
+    "noexcept": PropTypes.oneOfType([Integer]).isRequired,
+});
 _Nonatomic = PropTypes.shape({
     "nonatomic": PropTypes.oneOfType([Integer]).isRequired,
 });
@@ -1301,39 +1332,25 @@ _Retain = PropTypes.shape({
 _Rethrows = PropTypes.shape({
     "rethrows": PropTypes.oneOfType([Integer]).isRequired,
 });
-_Return = PropTypes.shape({
-    "return": PropTypes.oneOfType([Integer]).isRequired,
-});
-_Right = PropTypes.shape({
-    "right": PropTypes.oneOfType([Integer]).isRequired,
-});
-_RuntimeType = PropTypes.shape({
-    "runtimeType": PropTypes.oneOfType([Integer]).isRequired,
-});
-_S = PropTypes.shape({
-    "s": PropTypes.oneOfType([Integer]).isRequired,
-});
-_Sbyte = PropTypes.shape({
-    "sbyte": PropTypes.oneOfType([Integer]).isRequired,
-});
-_Sealed = PropTypes.shape({
-    "sealed": PropTypes.oneOfType([Integer]).isRequired,
-});
-_Select = PropTypes.shape({
-    "select": PropTypes.oneOfType([Integer]).isRequired,
-});
 _Obj4 = PropTypes.shape({
+    "NO": _No,
     "NSError": _NSError,
     "NSObject": _NSObject,
     "NSString": _NSString,
     "NULL": _Null,
     "None": _None,
+    "NullNode": _NullNode,
     "ObjectMapper": _ObjectMapper,
+    "ObjectNode": _ObjectNode,
     "Protocol": _Protocol,
     "RegExp": _RegExp,
-    "SEL": _Sel,
     "dummy": PropTypes.oneOfType([Integer]).isRequired,
+    "native": _Native,
+    "new": _New,
+    "newtonsoft": _Newtonsoft,
+    "nil": _Nil,
     "noSuchMethod": _NoSuchMethod,
+    "noexcept": _Noexcept,
     "nonatomic": _Nonatomic,
     "none": _NoneClass,
     "nonlocal": _Nonlocal,
@@ -1381,13 +1398,9 @@ _Obj4 = PropTypes.shape({
     "restrict": _Restrict,
     "retain": _Retain,
     "rethrows": _Rethrows,
-    "return": _Return,
-    "right": _Right,
-    "runtimeType": _RuntimeType,
-    "s": _S,
-    "sbyte": _Sbyte,
-    "sealed": _Sealed,
-    "select": _Select,
+});
+_Sel = PropTypes.shape({
+    "SEL": PropTypes.oneOfType([Integer]).isRequired,
 });
 _Self = PropTypes.shape({
     "Self": PropTypes.oneOfType([Integer]).isRequired,
@@ -1395,6 +1408,9 @@ _Self = PropTypes.shape({
 _Sendable = PropTypes.shape({
     "Sendable": PropTypes.oneOfType([Integer]).isRequired,
 });
+_SerializationFeature = PropTypes.shape({
+    "SerializationFeature": PropTypes.oneOfType([Integer]).isRequired,
+});
 _SerializerProvider = PropTypes.shape({
     "SerializerProvider": PropTypes.oneOfType([Integer]).isRequired,
 });
@@ -1410,6 +1426,9 @@ _StdDeserializer = PropTypes.shape({
 _StdSerializer = PropTypes.shape({
     "StdSerializer": PropTypes.oneOfType([Integer]).isRequired,
 });
+_TextNode = PropTypes.shape({
+    "TextNode": PropTypes.oneOfType([Integer]).isRequired,
+});
 _TimeOnly = PropTypes.shape({
     "TimeOnly": PropTypes.oneOfType([Integer]).isRequired,
 });
@@ -1425,14 +1444,26 @@ _True = PropTypes.shape({
 _Type = PropTypes.shape({
     "Type": PropTypes.oneOfType([Integer]).isRequired,
 });
-_UUID = PropTypes.shape({
-    "UUID": PropTypes.oneOfType([Integer]).isRequired,
+_Return = PropTypes.shape({
+    "return": PropTypes.oneOfType([Integer]).isRequired,
 });
-_Utf8JSONReader = PropTypes.shape({
-    "Utf8JsonReader": PropTypes.oneOfType([Integer]).isRequired,
+_Right = PropTypes.shape({
+    "right": PropTypes.oneOfType([Integer]).isRequired,
 });
-_Utf8JSONWriter = PropTypes.shape({
-    "Utf8JsonWriter": PropTypes.oneOfType([Integer]).isRequired,
+_RuntimeType = PropTypes.shape({
+    "runtimeType": PropTypes.oneOfType([Integer]).isRequired,
+});
+_S = PropTypes.shape({
+    "s": PropTypes.oneOfType([Integer]).isRequired,
+});
+_Sbyte = PropTypes.shape({
+    "sbyte": PropTypes.oneOfType([Integer]).isRequired,
+});
+_Sealed = PropTypes.shape({
+    "sealed": PropTypes.oneOfType([Integer]).isRequired,
+});
+_Select = PropTypes.shape({
+    "select": PropTypes.oneOfType([Integer]).isRequired,
 });
 _SelfClass = PropTypes.shape({
     "self": PropTypes.oneOfType([Integer]).isRequired,
@@ -1560,44 +1591,30 @@ _Undefined = PropTypes.shape({
 _Union = PropTypes.shape({
     "union": PropTypes.oneOfType([Integer]).isRequired,
 });
-_Unowned = PropTypes.shape({
-    "unowned": PropTypes.oneOfType([Integer]).isRequired,
-});
-_Unsafe = PropTypes.shape({
-    "unsafe": PropTypes.oneOfType([Integer]).isRequired,
-});
-_Unsigned = PropTypes.shape({
-    "unsigned": PropTypes.oneOfType([Integer]).isRequired,
-});
-_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({
+    "SEL": _Sel,
     "Self": _Self,
     "Sendable": _Sendable,
+    "SerializationFeature": _SerializationFeature,
     "SerializerProvider": _SerializerProvider,
     "SimpleModule": _SimpleModule,
     "Standards": _Standards,
     "StdDeserializer": _StdDeserializer,
     "StdSerializer": _StdSerializer,
+    "TextNode": _TextNode,
     "TimeOnly": _TimeOnly,
     "TimeOnlyConverter": _TimeOnlyConverter,
     "TimeZone": _TimeZone,
     "True": _True,
     "Type": _Type,
-    "UUID": _UUID,
-    "Utf8JsonReader": _Utf8JSONReader,
-    "Utf8JsonWriter": _Utf8JSONWriter,
     "dummy": PropTypes.oneOfType([Integer]).isRequired,
+    "return": _Return,
+    "right": _Right,
+    "runtimeType": _RuntimeType,
+    "s": _S,
+    "sbyte": _Sbyte,
+    "sealed": _Sealed,
+    "select": _Select,
     "self": _SelfClass,
     "serialize": _Serialize,
     "set": _Set,
@@ -1640,17 +1657,40 @@ _Obj5 = PropTypes.shape({
     "unchecked": _Unchecked,
     "undefined": _Undefined,
     "union": _Union,
-    "unowned": _Unowned,
-    "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,
 });
+_Unowned = PropTypes.shape({
+    "unowned": PropTypes.oneOfType([Integer]).isRequired,
+});
+_Unsafe = PropTypes.shape({
+    "unsafe": PropTypes.oneOfType([Integer]).isRequired,
+});
+_Unsigned = PropTypes.shape({
+    "unsigned": PropTypes.oneOfType([Integer]).isRequired,
+});
+_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,
+});
 _Void = PropTypes.shape({
     "void": PropTypes.oneOfType([Integer]).isRequired,
 });
@@ -1685,8 +1725,18 @@ _Yield = PropTypes.shape({
     "yield": PropTypes.oneOfType([Integer]).isRequired,
 });
 _Obj6 = PropTypes.shape({
+    "UUID": _UUID,
+    "Utf8JsonReader": _Utf8JSONReader,
+    "Utf8JsonWriter": _Utf8JSONWriter,
     "YES": _Yes,
     "dummy": PropTypes.oneOfType([Integer]).isRequired,
+    "unowned": _Unowned,
+    "unsafe": _Unsafe,
+    "unsigned": _Unsigned,
+    "ushort": _Ushort,
+    "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..5887280 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
@@ -49,6 +49,10 @@ data class Obj1 (
     val any: AnyClass,
 
     val array: ArrayClass,
+
+    @Json(name = "ArrayNode")
+    val arrayNode: ArrayNode,
+
     val asm: ASM,
     val assert: Assert,
     val associatedtype: Associatedtype,
@@ -75,6 +79,10 @@ data class Obj1 (
     val bool: Bool,
 
     val boolean: BooleanClass,
+
+    @Json(name = "BooleanNode")
+    val booleanNode: BooleanNode,
+
     val bycopy: Bycopy,
     val byref: Byref,
     val byte: ByteClass,
@@ -131,11 +139,6 @@ data class Obj1 (
     val convenience: Convenience,
     val convert: Convert,
     val converter: ConverterClass,
-
-    @Json(name = "CultureInfo")
-    val cultureInfo: CultureInfo,
-
-    val date: Date,
     val dummy: Long,
 
     @Json(name = "_")
@@ -199,6 +202,11 @@ data class ArrayClass (
     val array: Long
 )
 
+data class ArrayNode (
+    @Json(name = "ArrayNode")
+    val arrayNode: Long
+)
+
 data class ASM (
     val asm: Long
 )
@@ -267,6 +275,11 @@ data class BooleanClass (
     val boolean: Long
 )
 
+data class BooleanNode (
+    @Json(name = "BooleanNode")
+    val booleanNode: Long
+)
+
 data class Bycopy (
     val bycopy: Long
 )
@@ -394,15 +407,6 @@ data class ConverterClass (
     val converter: Long
 )
 
-data class CultureInfo (
-    @Json(name = "CultureInfo")
-    val cultureInfo: Long
-)
-
-data class Date (
-    val date: Long
-)
-
 data class Empty (
     @Json(name = "_")
     val empty: Long
@@ -452,6 +456,11 @@ data class Obj1Class (
 )
 
 data class Obj2 (
+    @Json(name = "CultureInfo")
+    val cultureInfo: CultureInfo,
+
+    val date: Date,
+
     @Json(name = "DateFormatter")
     val dateFormatter: DateFormatter,
 
@@ -491,10 +500,18 @@ data class Obj2 (
     val del: Del,
     val delegate: Delegate,
     val delete: Delete,
+
+    @Json(name = "DeserializationFeature")
+    val deserializationFeature: DeserializationFeature,
+
     val dict: Dict,
     val dictionary: Dictionary,
     val didSet: DidSet,
     val double: DoubleClass,
+
+    @Json(name = "DoubleNode")
+    val doubleNode: DoubleNode,
+
     val dummy: Long,
     val dynamic: Dynamic,
 
@@ -547,10 +564,6 @@ data class Obj2 (
 
     val func: Func,
     val function: Function,
-    val get: Get,
-    val global: Global,
-    val go: Go,
-    val goto: Goto,
 
     @Json(name = "do")
     val obj2Do: Do,
@@ -568,6 +581,15 @@ data class Obj2 (
     val purpleFalse: FalseClass
 )
 
+data class CultureInfo (
+    @Json(name = "CultureInfo")
+    val cultureInfo: Long
+)
+
+data class Date (
+    val date: Long
+)
+
 data class DateFormatter (
     @Json(name = "DateFormatter")
     val dateFormatter: Long
@@ -657,6 +679,11 @@ data class Delete (
     val delete: Long
 )
 
+data class DeserializationFeature (
+    @Json(name = "DeserializationFeature")
+    val deserializationFeature: Long
+)
+
 data class Dict (
     val dict: Long
 )
@@ -673,6 +700,11 @@ data class DoubleClass (
     val double: Long
 )
 
+data class DoubleNode (
+    @Json(name = "DoubleNode")
+    val doubleNode: Long
+)
+
 data class Dynamic (
     val dynamic: Long
 )
@@ -817,22 +849,6 @@ data class Function (
     val function: Long
 )
 
-data class Get (
-    val get: Long
-)
-
-data class Global (
-    val global: Long
-)
-
-data class Go (
-    val go: Long
-)
-
-data class Goto (
-    val goto: Long
-)
-
 data class Do (
     @Json(name = "do")
     val doDo: Long
@@ -860,6 +876,10 @@ data class FalseClass (
 
 data class Obj3 (
     val dummy: Long,
+    val get: Get,
+    val global: Global,
+    val go: Go,
+    val goto: Goto,
     val guard: Guard,
     val hasOwnProperty: HasOwnProperty,
     val hashCode: HashCode,
@@ -885,6 +905,10 @@ data class Obj3 (
     val inout: Inout,
     val instanceof: Instanceof,
     val int: IntClass,
+
+    @Json(name = "IntNode")
+    val intNode: IntNode,
+
     val internal: Internal,
 
     @Json(name = "IsoDateTimeOffsetConverter")
@@ -952,6 +976,10 @@ data class Obj3 (
 
     val lock: Lock,
     val long: LongClass,
+
+    @Json(name = "LongNode")
+    val longNode: LongNode,
+
     val map: MapClass,
 
     @Json(name = "MapEntry")
@@ -964,15 +992,6 @@ data class Obj3 (
     val mutable: Mutable,
     val mutating: Mutating,
     val namespace: Namespace,
-    val native: Native,
-    val new: New,
-    val newtonsoft: Newtonsoft,
-    val nil: Nil,
-
-    @Json(name = "NO")
-    val no: No,
-
-    val noexcept: Noexcept,
 
     @Json(name = "if")
     val obj3If: If,
@@ -987,6 +1006,22 @@ data class Obj3 (
     val obj3Is: Is
 )
 
+data class Get (
+    val get: Long
+)
+
+data class Global (
+    val global: Long
+)
+
+data class Go (
+    val go: Long
+)
+
+data class Goto (
+    val goto: Long
+)
+
 data class Guard (
     val guard: Long
 )
@@ -1058,6 +1093,11 @@ data class IntClass (
     val int: Long
 )
 
+data class IntNode (
+    @Json(name = "IntNode")
+    val intNode: Long
+)
+
 data class Internal (
     val internal: Long
 )
@@ -1195,6 +1235,11 @@ data class LongClass (
     val long: Long
 )
 
+data class LongNode (
+    @Json(name = "LongNode")
+    val longNode: Long
+)
+
 data class MapClass (
     val map: Long
 )
@@ -1225,31 +1270,6 @@ data class Namespace (
     val namespace: Long
 )
 
-data class Native (
-    val native: Long
-)
-
-data class New (
-    val new: Long
-)
-
-data class Newtonsoft (
-    val newtonsoft: Long
-)
-
-data class Nil (
-    val nil: Long
-)
-
-data class No (
-    @Json(name = "NO")
-    val no: Long
-)
-
-data class Noexcept (
-    val noexcept: Long
-)
-
 data class If (
     @Json(name = "if")
     val ifIf: Long
@@ -1272,7 +1292,16 @@ data class Is (
 
 data class Obj4 (
     val dummy: Long,
+    val native: Native,
+    val new: New,
+    val newtonsoft: Newtonsoft,
+    val nil: Nil,
+
+    @Json(name = "NO")
+    val no: No,
+
     val noSuchMethod: NoSuchMethod,
+    val noexcept: Noexcept,
     val nonatomic: Nonatomic,
 
     @Json(name = "None")
@@ -1294,6 +1323,9 @@ data class Obj4 (
     @Json(name = "NSString")
     val nsString: NSString,
 
+    @Json(name = "NullNode")
+    val nullNode: NullNode,
+
     val nullptr: Nullptr,
     val number: Number,
 
@@ -1315,12 +1347,12 @@ data class Obj4 (
     @Json(name = "protocol")
     val obj4Protocol: ProtocolClass,
 
-    @Json(name = "return")
-    val obj4Return: Return,
-
     @Json(name = "ObjectMapper")
     val objectMapper: ObjectMapper,
 
+    @Json(name = "ObjectNode")
+    val objectNode: ObjectNode,
+
     val of: Of,
     val oneway: Oneway,
     val open: Open,
@@ -1369,23 +1401,38 @@ data class Obj4 (
     val requires: Requires,
     val restrict: Restrict,
     val retain: Retain,
-    val rethrows: Rethrows,
-    val right: Right,
-    val runtimeType: RuntimeType,
-    val s: S,
-    val sbyte: Sbyte,
-    val sealed: Sealed,
+    val rethrows: Rethrows
+)
 
-    @Json(name = "SEL")
-    val sel: Sel,
+data class Native (
+    val native: Long
+)
 
-    val select: Select
+data class New (
+    val new: Long
+)
+
+data class Newtonsoft (
+    val newtonsoft: Long
+)
+
+data class Nil (
+    val nil: Long
+)
+
+data class No (
+    @Json(name = "NO")
+    val no: Long
 )
 
 data class NoSuchMethod (
     val noSuchMethod: Long
 )
 
+data class Noexcept (
+    val noexcept: Long
+)
+
 data class Nonatomic (
     val nonatomic: Long
 )
@@ -1427,6 +1474,11 @@ data class NSString (
     val nsString: Long
 )
 
+data class NullNode (
+    @Json(name = "NullNode")
+    val nullNode: Long
+)
+
 data class Nullptr (
     val nullptr: Long
 )
@@ -1463,16 +1515,16 @@ data class ProtocolClass (
     val protocol: Long
 )
 
-data class Return (
-    @Json(name = "return")
-    val returnReturn: Long
-)
-
 data class ObjectMapper (
     @Json(name = "ObjectMapper")
     val objectMapper: Long
 )
 
+data class ObjectNode (
+    @Json(name = "ObjectNode")
+    val objectNode: Long
+)
+
 data class Of (
     val of: Long
 )
@@ -1625,38 +1677,12 @@ data class Rethrows (
     val rethrows: Long
 )
 
-data class Right (
-    val right: Long
-)
-
-data class RuntimeType (
-    val runtimeType: Long
-)
-
-data class S (
-    val s: Long
-)
-
-data class Sbyte (
-    val sbyte: Long
-)
-
-data class Sealed (
-    val sealed: Long
-)
-
-data class Sel (
-    @Json(name = "SEL")
-    val sel: Long
-)
-
-data class Select (
-    val select: Long
-)
-
 data class Obj5 (
     val dummy: Long,
 
+    @Json(name = "return")
+    val obj5Return: Return,
+
     @Json(name = "self")
     val obj5Self: SelfClass,
 
@@ -1684,18 +1710,29 @@ data class Obj5 (
     @Json(name = "typeof")
     val obj5Typeof: Typeof,
 
-    @Json(name = "var")
-    val obj5Var: Var,
-
     @Json(name = "true")
     val purpleTrue: TrueClass,
 
+    val right: Right,
+    val runtimeType: RuntimeType,
+    val s: S,
+    val sbyte: Sbyte,
+    val sealed: Sealed,
+
+    @Json(name = "SEL")
+    val sel: Sel,
+
+    val select: Select,
+
     @Json(name = "Self")
     val self: Self,
 
     @Json(name = "Sendable")
     val sendable: Sendable,
 
+    @Json(name = "SerializationFeature")
+    val serializationFeature: SerializationFeature,
+
     val serialize: Serialize,
 
     @Json(name = "SerializerProvider")
@@ -1737,6 +1774,10 @@ data class Obj5 (
     val synchronized: Synchronized,
     val system: SystemClass,
     val template: Template,
+
+    @Json(name = "TextNode")
+    val textNode: TextNode,
+
     val then: Then,
 
     @Json(name = "thread_local")
@@ -1773,23 +1814,12 @@ data class Obj5 (
     val ulong: Ulong,
     val unchecked: Unchecked,
     val undefined: Undefined,
-    val union: Union,
-    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 = "UUID")
-    val uuid: UUID,
+    val union: Union
+)
 
-    val virtual: Virtual
+data class Return (
+    @Json(name = "return")
+    val returnReturn: Long
 )
 
 data class SelfClass (
@@ -1835,16 +1865,40 @@ data class Typeof (
     val typeofTypeof: Long
 )
 
-data class Var (
-    @Json(name = "var")
-    val varVar: Long
-)
-
 data class TrueClass (
     @Json(name = "true")
     val trueTrue: Long
 )
 
+data class Right (
+    val right: Long
+)
+
+data class RuntimeType (
+    val runtimeType: Long
+)
+
+data class S (
+    val s: Long
+)
+
+data class Sbyte (
+    val sbyte: Long
+)
+
+data class Sealed (
+    val sealed: Long
+)
+
+data class Sel (
+    @Json(name = "SEL")
+    val sel: Long
+)
+
+data class Select (
+    val select: Long
+)
+
 data class Self (
     @Json(name = "Self")
     val self: Long
@@ -1855,6 +1909,11 @@ data class Sendable (
     val sendable: Long
 )
 
+data class SerializationFeature (
+    @Json(name = "SerializationFeature")
+    val serializationFeature: Long
+)
+
 data class Serialize (
     val serialize: Long
 )
@@ -1954,6 +2013,11 @@ data class Template (
     val template: Long
 )
 
+data class TextNode (
+    @Json(name = "TextNode")
+    val textNode: Long
+)
+
 data class Then (
     val then: Long
 )
@@ -2037,6 +2101,62 @@ data class Union (
     val union: Long
 )
 
+data class Obj6 (
+    val dummy: Long,
+
+    @Json(name = "var")
+    val obj6Var: Var,
+
+    @Json(name = "while")
+    val obj6While: While,
+
+    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 = "UUID")
+    val uuid: UUID,
+
+    val virtual: Virtual,
+    val void: Void,
+    val volatile: Volatile,
+
+    @Json(name = "wchar_t")
+    val wcharT: WcharT,
+
+    val weak: Weak,
+    val where: Where,
+    val willSet: WillSet,
+    val with: With,
+    val xor: Xor,
+
+    @Json(name = "xor_eq")
+    val xorEq: XorEq,
+
+    @Json(name = "YES")
+    val yes: Yes,
+
+    val yield: Yield
+)
+
+data class Var (
+    @Json(name = "var")
+    val varVar: Long
+)
+
+data class While (
+    @Json(name = "while")
+    val whileWhile: Long
+)
+
 data class Unowned (
     val unowned: Long
 )
@@ -2076,38 +2196,6 @@ data class Virtual (
     val virtual: Long
 )
 
-data class Obj6 (
-    val dummy: Long,
-
-    @Json(name = "while")
-    val obj6While: While,
-
-    val void: Void,
-    val volatile: Volatile,
-
-    @Json(name = "wchar_t")
-    val wcharT: WcharT,
-
-    val weak: Weak,
-    val where: Where,
-    val willSet: WillSet,
-    val with: With,
-    val xor: Xor,
-
-    @Json(name = "xor_eq")
-    val xorEq: XorEq,
-
-    @Json(name = "YES")
-    val yes: Yes,
-
-    val yield: Yield
-)
-
-data class While (
-    @Json(name = "while")
-    val whileWhile: 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..af3be2c 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
@@ -85,6 +85,9 @@ data class Obj1 (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val array: ArrayClass,
 
+    @get:JsonProperty("ArrayNode", required=true)@field:JsonProperty("ArrayNode", required=true)
+    val arrayNode: ArrayNodeClass,
+
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val asm: ASM,
 
@@ -133,6 +136,9 @@ data class Obj1 (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val boolean: BooleanClass,
 
+    @get:JsonProperty("BooleanNode", required=true)@field:JsonProperty("BooleanNode", required=true)
+    val booleanNode: BooleanNodeClass,
+
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val bycopy: Bycopy,
 
@@ -220,12 +226,6 @@ data class Obj1 (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val converter: ConverterClass,
 
-    @get:JsonProperty("CultureInfo", required=true)@field:JsonProperty("CultureInfo", required=true)
-    val cultureInfo: CultureInfo,
-
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val date: Date,
-
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val dummy: Long,
 
@@ -295,6 +295,11 @@ data class ArrayClass (
     val array: Long
 )
 
+data class ArrayNodeClass (
+    @get:JsonProperty("ArrayNode", required=true)@field:JsonProperty("ArrayNode", required=true)
+    val arrayNode: Long
+)
+
 data class ASM (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val asm: Long
@@ -375,6 +380,11 @@ data class BooleanClass (
     val boolean: Long
 )
 
+data class BooleanNodeClass (
+    @get:JsonProperty("BooleanNode", required=true)@field:JsonProperty("BooleanNode", required=true)
+    val booleanNode: Long
+)
+
 data class Bycopy (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val bycopy: Long
@@ -520,16 +530,6 @@ data class ConverterClass (
     val converter: Long
 )
 
-data class CultureInfo (
-    @get:JsonProperty("CultureInfo", required=true)@field:JsonProperty("CultureInfo", required=true)
-    val cultureInfo: Long
-)
-
-data class Date (
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val date: Long
-)
-
 data class Empty (
     @get:JsonProperty("_", required=true)@field:JsonProperty("_", required=true)
     val empty: Long
@@ -581,6 +581,12 @@ data class Obj1Class (
 )
 
 data class Obj2 (
+    @get:JsonProperty("CultureInfo", required=true)@field:JsonProperty("CultureInfo", required=true)
+    val cultureInfo: CultureInfo,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val date: Date,
+
     @get:JsonProperty("DateFormatter", required=true)@field:JsonProperty("DateFormatter", required=true)
     val dateFormatter: DateFormatter,
 
@@ -641,6 +647,9 @@ data class Obj2 (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val delete: Delete,
 
+    @get:JsonProperty("DeserializationFeature", required=true)@field:JsonProperty("DeserializationFeature", required=true)
+    val deserializationFeature: DeserializationFeatureClass,
+
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val dict: Dict,
 
@@ -653,6 +662,9 @@ data class Obj2 (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val double: DoubleClass,
 
+    @get:JsonProperty("DoubleNode", required=true)@field:JsonProperty("DoubleNode", required=true)
+    val doubleNode: DoubleNodeClass,
+
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val dummy: Long,
 
@@ -749,18 +761,6 @@ data class Obj2 (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val function: Function,
 
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val get: Get,
-
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val global: Global,
-
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val go: Go,
-
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val goto: Goto,
-
     @get:JsonProperty("do", required=true)@field:JsonProperty("do", required=true)
     val obj2Do: Do,
 
@@ -777,6 +777,16 @@ data class Obj2 (
     val purpleFalse: FalseClass
 )
 
+data class CultureInfo (
+    @get:JsonProperty("CultureInfo", required=true)@field:JsonProperty("CultureInfo", required=true)
+    val cultureInfo: Long
+)
+
+data class Date (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val date: Long
+)
+
 data class DateFormatter (
     @get:JsonProperty("DateFormatter", required=true)@field:JsonProperty("DateFormatter", required=true)
     val dateFormatter: Long
@@ -877,6 +887,11 @@ data class Delete (
     val delete: Long
 )
 
+data class DeserializationFeatureClass (
+    @get:JsonProperty("DeserializationFeature", required=true)@field:JsonProperty("DeserializationFeature", required=true)
+    val deserializationFeature: Long
+)
+
 data class Dict (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val dict: Long
@@ -897,6 +912,11 @@ data class DoubleClass (
     val double: Long
 )
 
+data class DoubleNodeClass (
+    @get:JsonProperty("DoubleNode", required=true)@field:JsonProperty("DoubleNode", required=true)
+    val doubleNode: Long
+)
+
 data class Dynamic (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val dynamic: Long
@@ -1065,26 +1085,6 @@ data class Function (
     val function: Long
 )
 
-data class Get (
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val get: Long
-)
-
-data class Global (
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val global: Long
-)
-
-data class Go (
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val go: Long
-)
-
-data class Goto (
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val goto: Long
-)
-
 data class Do (
     @get:JsonProperty("do", required=true)@field:JsonProperty("do", required=true)
     val doDo: Long
@@ -1114,6 +1114,18 @@ data class Obj3 (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val dummy: Long,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val get: Get,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val global: Global,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val go: Go,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val goto: Goto,
+
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val guard: Guard,
 
@@ -1165,6 +1177,9 @@ data class Obj3 (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val int: IntClass,
 
+    @get:JsonProperty("IntNode", required=true)@field:JsonProperty("IntNode", required=true)
+    val intNode: IntNodeClass,
+
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val internal: Internal,
 
@@ -1255,6 +1270,9 @@ data class Obj3 (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val long: LongClass,
 
+    @get:JsonProperty("LongNode", required=true)@field:JsonProperty("LongNode", required=true)
+    val longNode: LongNodeClass,
+
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val map: MapClass,
 
@@ -1276,24 +1294,6 @@ data class Obj3 (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val namespace: Namespace,
 
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val native: Native,
-
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val new: New,
-
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val newtonsoft: Newtonsoft,
-
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val nil: Nil,
-
-    @get:JsonProperty("NO", required=true)@field:JsonProperty("NO", required=true)
-    val no: No,
-
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val noexcept: Noexcept,
-
     @get:JsonProperty("if", required=true)@field:JsonProperty("if", required=true)
     val obj3If: If,
 
@@ -1307,6 +1307,26 @@ data class Obj3 (
     val obj3Is: Is
 )
 
+data class Get (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val get: Long
+)
+
+data class Global (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val global: Long
+)
+
+data class Go (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val go: Long
+)
+
+data class Goto (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val goto: Long
+)
+
 data class Guard (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val guard: Long
@@ -1392,6 +1412,11 @@ data class IntClass (
     val int: Long
 )
 
+data class IntNodeClass (
+    @get:JsonProperty("IntNode", required=true)@field:JsonProperty("IntNode", required=true)
+    val intNode: Long
+)
+
 data class Internal (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val internal: Long
@@ -1542,6 +1567,11 @@ data class LongClass (
     val long: Long
 )
 
+data class LongNodeClass (
+    @get:JsonProperty("LongNode", required=true)@field:JsonProperty("LongNode", required=true)
+    val longNode: Long
+)
+
 data class MapClass (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val map: Long
@@ -1577,36 +1607,6 @@ data class Namespace (
     val namespace: Long
 )
 
-data class Native (
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val native: Long
-)
-
-data class New (
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val new: Long
-)
-
-data class Newtonsoft (
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val newtonsoft: Long
-)
-
-data class Nil (
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val nil: Long
-)
-
-data class No (
-    @get:JsonProperty("NO", required=true)@field:JsonProperty("NO", required=true)
-    val no: Long
-)
-
-data class Noexcept (
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val noexcept: Long
-)
-
 data class If (
     @get:JsonProperty("if", required=true)@field:JsonProperty("if", required=true)
     val ifIf: Long
@@ -1631,9 +1631,27 @@ data class Obj4 (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val dummy: Long,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val native: Native,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val new: New,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val newtonsoft: Newtonsoft,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val nil: Nil,
+
+    @get:JsonProperty("NO", required=true)@field:JsonProperty("NO", required=true)
+    val no: No,
+
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val noSuchMethod: NoSuchMethod,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val noexcept: Noexcept,
+
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val nonatomic: Nonatomic,
 
@@ -1661,6 +1679,9 @@ data class Obj4 (
     @get:JsonProperty("NSString", required=true)@field:JsonProperty("NSString", required=true)
     val nsString: NSString,
 
+    @get:JsonProperty("NullNode", required=true)@field:JsonProperty("NullNode", required=true)
+    val nullNode: NullNodeClass,
+
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val nullptr: Nullptr,
 
@@ -1685,12 +1706,12 @@ data class Obj4 (
     @get:JsonProperty("protocol", required=true)@field:JsonProperty("protocol", required=true)
     val obj4Protocol: ProtocolClass,
 
-    @get:JsonProperty("return", required=true)@field:JsonProperty("return", required=true)
-    val obj4Return: Return,
-
     @get:JsonProperty("ObjectMapper", required=true)@field:JsonProperty("ObjectMapper", required=true)
     val objectMapper: ObjectMapperClass,
 
+    @get:JsonProperty("ObjectNode", required=true)@field:JsonProperty("ObjectNode", required=true)
+    val objectNode: ObjectNodeClass,
+
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val of: Of,
 
@@ -1800,28 +1821,32 @@ data class Obj4 (
     val retain: Retain,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val rethrows: Rethrows,
-
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val right: Right,
+    val rethrows: Rethrows
+)
 
+data class Native (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val runtimeType: RuntimeType,
+    val native: Long
+)
 
+data class New (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val s: S,
+    val new: Long
+)
 
+data class Newtonsoft (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val sbyte: Sbyte,
+    val newtonsoft: Long
+)
 
+data class Nil (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val sealed: Sealed,
-
-    @get:JsonProperty("SEL", required=true)@field:JsonProperty("SEL", required=true)
-    val sel: Sel,
+    val nil: Long
+)
 
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val select: Select
+data class No (
+    @get:JsonProperty("NO", required=true)@field:JsonProperty("NO", required=true)
+    val no: Long
 )
 
 data class NoSuchMethod (
@@ -1829,6 +1854,11 @@ data class NoSuchMethod (
     val noSuchMethod: Long
 )
 
+data class Noexcept (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val noexcept: Long
+)
+
 data class Nonatomic (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val nonatomic: Long
@@ -1874,6 +1904,11 @@ data class NSString (
     val nsString: Long
 )
 
+data class NullNodeClass (
+    @get:JsonProperty("NullNode", required=true)@field:JsonProperty("NullNode", required=true)
+    val nullNode: Long
+)
+
 data class Nullptr (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val nullptr: Long
@@ -1914,16 +1949,16 @@ data class ProtocolClass (
     val protocol: Long
 )
 
-data class Return (
-    @get:JsonProperty("return", required=true)@field:JsonProperty("return", required=true)
-    val returnReturn: Long
-)
-
 data class ObjectMapperClass (
     @get:JsonProperty("ObjectMapper", required=true)@field:JsonProperty("ObjectMapper", required=true)
     val objectMapper: Long
 )
 
+data class ObjectNodeClass (
+    @get:JsonProperty("ObjectNode", required=true)@field:JsonProperty("ObjectNode", required=true)
+    val objectNode: Long
+)
+
 data class Of (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val of: Long
@@ -2109,45 +2144,13 @@ data class Rethrows (
     val rethrows: Long
 )
 
-data class Right (
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val right: Long
-)
-
-data class RuntimeType (
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val runtimeType: Long
-)
-
-data class S (
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val s: Long
-)
-
-data class Sbyte (
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val sbyte: Long
-)
-
-data class Sealed (
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val sealed: Long
-)
-
-data class Sel (
-    @get:JsonProperty("SEL", required=true)@field:JsonProperty("SEL", required=true)
-    val sel: Long
-)
-
-data class Select (
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val select: Long
-)
-
 data class Obj5 (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val dummy: Long,
 
+    @get:JsonProperty("return", required=true)@field:JsonProperty("return", required=true)
+    val obj5Return: Return,
+
     @get:JsonProperty("self", required=true)@field:JsonProperty("self", required=true)
     val obj5Self: SelfClass,
 
@@ -2175,18 +2178,39 @@ 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("true", required=true)@field:JsonProperty("true", required=true)
     val purpleTrue: TrueClass,
 
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val right: Right,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val runtimeType: RuntimeType,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val s: S,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val sbyte: Sbyte,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val sealed: Sealed,
+
+    @get:JsonProperty("SEL", required=true)@field:JsonProperty("SEL", required=true)
+    val sel: Sel,
+
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val select: Select,
+
     @get:JsonProperty("Self", required=true)@field:JsonProperty("Self", required=true)
     val self: Self,
 
     @get:JsonProperty("Sendable", required=true)@field:JsonProperty("Sendable", required=true)
     val sendable: Sendable,
 
+    @get:JsonProperty("SerializationFeature", required=true)@field:JsonProperty("SerializationFeature", required=true)
+    val serializationFeature: SerializationFeatureClass,
+
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val serialize: Serialize,
 
@@ -2256,6 +2280,9 @@ data class Obj5 (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val template: Template,
 
+    @get:JsonProperty("TextNode", required=true)@field:JsonProperty("TextNode", required=true)
+    val textNode: TextNodeClass,
+
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val then: Then,
 
@@ -2311,34 +2338,12 @@ data class Obj5 (
     val undefined: Undefined,
 
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val union: Union,
-
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val unowned: Unowned,
-
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val unsafe: Unsafe,
-
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val unsigned: Unsigned,
-
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val ushort: Ushort,
-
-    @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 union: Union
+)
 
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val virtual: Virtual
+data class Return (
+    @get:JsonProperty("return", required=true)@field:JsonProperty("return", required=true)
+    val returnReturn: Long
 )
 
 data class SelfClass (
@@ -2386,16 +2391,46 @@ data class Typeof (
     val typeofTypeof: Long
 )
 
-data class Var (
-    @get:JsonProperty("var", required=true)@field:JsonProperty("var", required=true)
-    val varVar: Long
-)
-
 data class TrueClass (
     @get:JsonProperty("true", required=true)@field:JsonProperty("true", required=true)
     val trueTrue: Long
 )
 
+data class Right (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val right: Long
+)
+
+data class RuntimeType (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val runtimeType: Long
+)
+
+data class S (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val s: Long
+)
+
+data class Sbyte (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val sbyte: Long
+)
+
+data class Sealed (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val sealed: Long
+)
+
+data class Sel (
+    @get:JsonProperty("SEL", required=true)@field:JsonProperty("SEL", required=true)
+    val sel: Long
+)
+
+data class Select (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val select: Long
+)
+
 data class Self (
     @get:JsonProperty("Self", required=true)@field:JsonProperty("Self", required=true)
     val self: Long
@@ -2406,6 +2441,11 @@ data class Sendable (
     val sendable: Long
 )
 
+data class SerializationFeatureClass (
+    @get:JsonProperty("SerializationFeature", required=true)@field:JsonProperty("SerializationFeature", required=true)
+    val serializationFeature: Long
+)
+
 data class Serialize (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val serialize: Long
@@ -2521,6 +2561,11 @@ data class Template (
     val template: Long
 )
 
+data class TextNodeClass (
+    @get:JsonProperty("TextNode", required=true)@field:JsonProperty("TextNode", required=true)
+    val textNode: Long
+)
+
 data class Then (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val then: Long
@@ -2616,57 +2661,42 @@ data class Union (
     val union: Long
 )
 
-data class Unowned (
+data class Obj6 (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val unowned: 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,
 
-data class Unsafe (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val unsafe: Long
-)
+    val unowned: Unowned,
 
-data class Unsigned (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val unsigned: Long
-)
+    val unsafe: Unsafe,
 
-data class Ushort (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val ushort: Long
-)
+    val unsigned: Unsigned,
 
-data class Using (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val using: Long
-)
+    val ushort: Ushort,
+
+    @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 +2732,61 @@ 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 Unowned (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val unowned: Long
+)
+
+data class Unsafe (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val unsafe: Long
+)
+
+data class Unsigned (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val unsigned: Long
+)
+
+data class Ushort (
+    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
+    val ushort: 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..a788d83 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
@@ -39,6 +39,10 @@ data class Obj1 (
     val any: AnyClass,
 
     val array: ArrayClass,
+
+    @SerialName("ArrayNode")
+    val arrayNode: ArrayNode,
+
     val asm: ASM,
     val assert: Assert,
     val associatedtype: Associatedtype,
@@ -65,6 +69,10 @@ data class Obj1 (
     val bool: Bool,
 
     val boolean: BooleanClass,
+
+    @SerialName("BooleanNode")
+    val booleanNode: BooleanNode,
+
     val bycopy: Bycopy,
     val byref: Byref,
     val byte: ByteClass,
@@ -121,11 +129,6 @@ data class Obj1 (
     val convenience: Convenience,
     val convert: Convert,
     val converter: ConverterClass,
-
-    @SerialName("CultureInfo")
-    val cultureInfo: CultureInfo,
-
-    val date: Date,
     val dummy: Long,
 
     @SerialName("_")
@@ -196,6 +199,12 @@ data class ArrayClass (
     val array: Long
 )
 
+@Serializable
+data class ArrayNode (
+    @SerialName("ArrayNode")
+    val arrayNode: Long
+)
+
 @Serializable
 data class ASM (
     val asm: Long
@@ -280,6 +289,12 @@ data class BooleanClass (
     val boolean: Long
 )
 
+@Serializable
+data class BooleanNode (
+    @SerialName("BooleanNode")
+    val booleanNode: Long
+)
+
 @Serializable
 data class Bycopy (
     val bycopy: Long
@@ -436,17 +451,6 @@ data class ConverterClass (
     val converter: Long
 )
 
-@Serializable
-data class CultureInfo (
-    @SerialName("CultureInfo")
-    val cultureInfo: Long
-)
-
-@Serializable
-data class Date (
-    val date: Long
-)
-
 @Serializable
 data class Empty (
     @SerialName("_")
@@ -507,6 +511,11 @@ data class Obj1Class (
 
 @Serializable
 data class Obj2 (
+    @SerialName("CultureInfo")
+    val cultureInfo: CultureInfo,
+
+    val date: Date,
+
     @SerialName("DateFormatter")
     val dateFormatter: DateFormatter,
 
@@ -546,10 +555,18 @@ data class Obj2 (
     val del: Del,
     val delegate: Delegate,
     val delete: Delete,
+
+    @SerialName("DeserializationFeature")
+    val deserializationFeature: DeserializationFeature,
+
     val dict: Dict,
     val dictionary: Dictionary,
     val didSet: DidSet,
     val double: DoubleClass,
+
+    @SerialName("DoubleNode")
+    val doubleNode: DoubleNode,
+
     val dummy: Long,
     val dynamic: Dynamic,
 
@@ -602,10 +619,6 @@ data class Obj2 (
 
     val func: Func,
     val function: Function,
-    val get: Get,
-    val global: Global,
-    val go: Go,
-    val goto: Goto,
 
     @SerialName("do")
     val obj2Do: Do,
@@ -623,6 +636,17 @@ data class Obj2 (
     val purpleFalse: FalseClass
 )
 
+@Serializable
+data class CultureInfo (
+    @SerialName("CultureInfo")
+    val cultureInfo: Long
+)
+
+@Serializable
+data class Date (
+    val date: Long
+)
+
 @Serializable
 data class DateFormatter (
     @SerialName("DateFormatter")
@@ -732,6 +756,12 @@ data class Delete (
     val delete: Long
 )
 
+@Serializable
+data class DeserializationFeature (
+    @SerialName("DeserializationFeature")
+    val deserializationFeature: Long
+)
+
 @Serializable
 data class Dict (
     val dict: Long
@@ -752,6 +782,12 @@ data class DoubleClass (
     val double: Long
 )
 
+@Serializable
+data class DoubleNode (
+    @SerialName("DoubleNode")
+    val doubleNode: Long
+)
+
 @Serializable
 data class Dynamic (
     val dynamic: Long
@@ -920,26 +956,6 @@ data class Function (
     val function: Long
 )
 
-@Serializable
-data class Get (
-    val get: Long
-)
-
-@Serializable
-data class Global (
-    val global: Long
-)
-
-@Serializable
-data class Go (
-    val go: Long
-)
-
-@Serializable
-data class Goto (
-    val goto: Long
-)
-
 @Serializable
 data class Do (
     @SerialName("do")
@@ -973,6 +989,10 @@ data class FalseClass (
 @Serializable
 data class Obj3 (
     val dummy: Long,
+    val get: Get,
+    val global: Global,
+    val go: Go,
+    val goto: Goto,
     val guard: Guard,
     val hasOwnProperty: HasOwnProperty,
     val hashCode: HashCode,
@@ -998,6 +1018,10 @@ data class Obj3 (
     val inout: Inout,
     val instanceof: Instanceof,
     val int: IntClass,
+
+    @SerialName("IntNode")
+    val intNode: IntNode,
+
     val internal: Internal,
 
     @SerialName("IsoDateTimeOffsetConverter")
@@ -1065,6 +1089,10 @@ data class Obj3 (
 
     val lock: Lock,
     val long: LongClass,
+
+    @SerialName("LongNode")
+    val longNode: LongNode,
+
     val map: MapClass,
 
     @SerialName("MapEntry")
@@ -1077,15 +1105,6 @@ data class Obj3 (
     val mutable: Mutable,
     val mutating: Mutating,
     val namespace: Namespace,
-    val native: Native,
-    val new: New,
-    val newtonsoft: Newtonsoft,
-    val nil: Nil,
-
-    @SerialName("NO")
-    val no: No,
-
-    val noexcept: Noexcept,
 
     @SerialName("if")
     val obj3If: If,
@@ -1100,6 +1119,26 @@ data class Obj3 (
     val obj3Is: Is
 )
 
+@Serializable
+data class Get (
+    val get: Long
+)
+
+@Serializable
+data class Global (
+    val global: Long
+)
+
+@Serializable
+data class Go (
+    val go: Long
+)
+
+@Serializable
+data class Goto (
+    val goto: Long
+)
+
 @Serializable
 data class Guard (
     val guard: Long
@@ -1188,6 +1227,12 @@ data class IntClass (
     val int: Long
 )
 
+@Serializable
+data class IntNode (
+    @SerialName("IntNode")
+    val intNode: Long
+)
+
 @Serializable
 data class Internal (
     val internal: Long
@@ -1355,6 +1400,12 @@ data class LongClass (
     val long: Long
 )
 
+@Serializable
+data class LongNode (
+    @SerialName("LongNode")
+    val longNode: Long
+)
+
 @Serializable
 data class MapClass (
     val map: Long
@@ -1392,37 +1443,6 @@ data class Namespace (
     val namespace: Long
 )
 
-@Serializable
-data class Native (
-    val native: Long
-)
-
-@Serializable
-data class New (
-    val new: Long
-)
-
-@Serializable
-data class Newtonsoft (
-    val newtonsoft: Long
-)
-
-@Serializable
-data class Nil (
-    val nil: Long
-)
-
-@Serializable
-data class No (
-    @SerialName("NO")
-    val no: Long
-)
-
-@Serializable
-data class Noexcept (
-    val noexcept: Long
-)
-
 @Serializable
 data class If (
     @SerialName("if")
@@ -1450,7 +1470,16 @@ data class Is (
 @Serializable
 data class Obj4 (
     val dummy: Long,
+    val native: Native,
+    val new: New,
+    val newtonsoft: Newtonsoft,
+    val nil: Nil,
+
+    @SerialName("NO")
+    val no: No,
+
     val noSuchMethod: NoSuchMethod,
+    val noexcept: Noexcept,
     val nonatomic: Nonatomic,
 
     @SerialName("None")
@@ -1472,6 +1501,9 @@ data class Obj4 (
     @SerialName("NSString")
     val nsString: NSString,
 
+    @SerialName("NullNode")
+    val nullNode: NullNode,
+
     val nullptr: Nullptr,
     val number: Number,
 
@@ -1493,12 +1525,12 @@ data class Obj4 (
     @SerialName("protocol")
     val obj4Protocol: ProtocolClass,
 
-    @SerialName("return")
-    val obj4Return: Return,
-
     @SerialName("ObjectMapper")
     val objectMapper: ObjectMapper,
 
+    @SerialName("ObjectNode")
+    val objectNode: ObjectNode,
+
     val of: Of,
     val oneway: Oneway,
     val open: Open,
@@ -1547,17 +1579,33 @@ data class Obj4 (
     val requires: Requires,
     val restrict: Restrict,
     val retain: Retain,
-    val rethrows: Rethrows,
-    val right: Right,
-    val runtimeType: RuntimeType,
-    val s: S,
-    val sbyte: Sbyte,
-    val sealed: Sealed,
+    val rethrows: Rethrows
+)
 
-    @SerialName("SEL")
-    val sel: Sel,
+@Serializable
+data class Native (
+    val native: Long
+)
+
+@Serializable
+data class New (
+    val new: Long
+)
+
+@Serializable
+data class Newtonsoft (
+    val newtonsoft: Long
+)
 
-    val select: Select
+@Serializable
+data class Nil (
+    val nil: Long
+)
+
+@Serializable
+data class No (
+    @SerialName("NO")
+    val no: Long
 )
 
 @Serializable
@@ -1565,6 +1613,11 @@ data class NoSuchMethod (
     val noSuchMethod: Long
 )
 
+@Serializable
+data class Noexcept (
+    val noexcept: Long
+)
+
 @Serializable
 data class Nonatomic (
     val nonatomic: Long
@@ -1615,6 +1668,12 @@ data class NSString (
     val nsString: Long
 )
 
+@Serializable
+data class NullNode (
+    @SerialName("NullNode")
+    val nullNode: Long
+)
+
 @Serializable
 data class Nullptr (
     val nullptr: Long
@@ -1659,18 +1718,18 @@ data class ProtocolClass (
     val protocol: Long
 )
 
-@Serializable
-data class Return (
-    @SerialName("return")
-    val returnReturn: Long
-)
-
 @Serializable
 data class ObjectMapper (
     @SerialName("ObjectMapper")
     val objectMapper: Long
 )
 
+@Serializable
+data class ObjectNode (
+    @SerialName("ObjectNode")
+    val objectNode: Long
+)
+
 @Serializable
 data class Of (
     val of: Long
@@ -1860,46 +1919,13 @@ data class Rethrows (
     val rethrows: Long
 )
 
-@Serializable
-data class Right (
-    val right: Long
-)
-
-@Serializable
-data class RuntimeType (
-    val runtimeType: Long
-)
-
-@Serializable
-data class S (
-    val s: Long
-)
-
-@Serializable
-data class Sbyte (
-    val sbyte: Long
-)
-
-@Serializable
-data class Sealed (
-    val sealed: Long
-)
-
-@Serializable
-data class Sel (
-    @SerialName("SEL")
-    val sel: Long
-)
-
-@Serializable
-data class Select (
-    val select: Long
-)
-
 @Serializable
 data class Obj5 (
     val dummy: Long,
 
+    @SerialName("return")
+    val obj5Return: Return,
+
     @SerialName("self")
     val obj5Self: SelfClass,
 
@@ -1927,18 +1953,29 @@ data class Obj5 (
     @SerialName("typeof")
     val obj5Typeof: Typeof,
 
-    @SerialName("var")
-    val obj5Var: Var,
-
     @SerialName("true")
     val purpleTrue: TrueClass,
 
+    val right: Right,
+    val runtimeType: RuntimeType,
+    val s: S,
+    val sbyte: Sbyte,
+    val sealed: Sealed,
+
+    @SerialName("SEL")
+    val sel: Sel,
+
+    val select: Select,
+
     @SerialName("Self")
     val self: Self,
 
     @SerialName("Sendable")
     val sendable: Sendable,
 
+    @SerialName("SerializationFeature")
+    val serializationFeature: SerializationFeature,
+
     val serialize: Serialize,
 
     @SerialName("SerializerProvider")
@@ -1980,6 +2017,10 @@ data class Obj5 (
     val synchronized: Synchronized,
     val system: SystemClass,
     val template: Template,
+
+    @SerialName("TextNode")
+    val textNode: TextNode,
+
     val then: Then,
 
     @SerialName("thread_local")
@@ -2016,23 +2057,13 @@ data class Obj5 (
     val ulong: Ulong,
     val unchecked: Unchecked,
     val undefined: Undefined,
-    val union: Union,
-    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("UUID")
-    val uuid: UUID,
+    val union: Union
+)
 
-    val virtual: Virtual
+@Serializable
+data class Return (
+    @SerialName("return")
+    val returnReturn: Long
 )
 
 @Serializable
@@ -2087,18 +2118,48 @@ data class Typeof (
     val typeofTypeof: Long
 )
 
-@Serializable
-data class Var (
-    @SerialName("var")
-    val varVar: Long
-)
-
 @Serializable
 data class TrueClass (
     @SerialName("true")
     val trueTrue: Long
 )
 
+@Serializable
+data class Right (
+    val right: Long
+)
+
+@Serializable
+data class RuntimeType (
+    val runtimeType: Long
+)
+
+@Serializable
+data class S (
+    val s: Long
+)
+
+@Serializable
+data class Sbyte (
+    val sbyte: Long
+)
+
+@Serializable
+data class Sealed (
+    val sealed: Long
+)
+
+@Serializable
+data class Sel (
+    @SerialName("SEL")
+    val sel: Long
+)
+
+@Serializable
+data class Select (
+    val select: Long
+)
+
 @Serializable
 data class Self (
     @SerialName("Self")
@@ -2111,6 +2172,12 @@ data class Sendable (
     val sendable: Long
 )
 
+@Serializable
+data class SerializationFeature (
+    @SerialName("SerializationFeature")
+    val serializationFeature: Long
+)
+
 @Serializable
 data class Serialize (
     val serialize: Long
@@ -2233,6 +2300,12 @@ data class Template (
     val template: Long
 )
 
+@Serializable
+data class TextNode (
+    @SerialName("TextNode")
+    val textNode: Long
+)
+
 @Serializable
 data class Then (
     val then: Long
@@ -2335,6 +2408,65 @@ data class Union (
     val union: Long
 )
 
+@Serializable
+data class Obj6 (
+    val dummy: Long,
+
+    @SerialName("var")
+    val obj6Var: Var,
+
+    @SerialName("while")
+    val obj6While: While,
+
+    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("UUID")
+    val uuid: UUID,
+
+    val virtual: Virtual,
+    val void: Void,
+    val volatile: Volatile,
+
+    @SerialName("wchar_t")
+    val wcharT: WcharT,
+
+    val weak: Weak,
+    val where: Where,
+    val willSet: WillSet,
+    val with: With,
+    val xor: Xor,
+
+    @SerialName("xor_eq")
+    val xorEq: XorEq,
+
+    @SerialName("YES")
+    val yes: Yes,
+
+    val yield: Yield
+)
+
+@Serializable
+data class Var (
+    @SerialName("var")
+    val varVar: Long
+)
+
+@Serializable
+data class While (
+    @SerialName("while")
+    val whileWhile: Long
+)
+
 @Serializable
 data class Unowned (
     val unowned: Long
@@ -2383,40 +2515,6 @@ data class Virtual (
     val virtual: Long
 )
 
-@Serializable
-data class Obj6 (
-    val dummy: Long,
-
-    @SerialName("while")
-    val obj6While: While,
-
-    val void: Void,
-    val volatile: Volatile,
-
-    @SerialName("wchar_t")
-    val wcharT: WcharT,
-
-    val weak: Weak,
-    val where: Where,
-    val willSet: WillSet,
-    val with: With,
-    val xor: Xor,
-
-    @SerialName("xor_eq")
-    val xorEq: XorEq,
-
-    @SerialName("YES")
-    val yes: Yes,
-
-    val yield: Yield
-)
-
-@Serializable
-data class While (
-    @SerialName("while")
-    val whileWhile: 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..b602c1c 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
@@ -14,6 +14,7 @@
 @class QTAndEq;
 @class QTAny;
 @class QTArray;
+@class QTArrayNode;
 @class QTAs;
 @class QTAssert;
 @class QTAssociatedtype;
@@ -27,6 +28,7 @@
 @class QTBitand;
 @class QTBitor;
 @class QTBoolean;
+@class QTBooleanNode;
 @class QTBycopy;
 @class QTByref;
 @class QTByte;
@@ -54,8 +56,6 @@
 @class QTConvenience;
 @class QTConvert;
 @class QTConverter;
-@class QTCultureInfo;
-@class QTDate;
 @class QTEmpty;
 @class QTImaginery;
 @class QTASM;
@@ -72,6 +72,8 @@
 @class QTContinue;
 @class QTObj1Bool;
 @class QTObj2;
+@class QTCultureInfo;
+@class QTDate;
 @class QTDateFormatter;
 @class QTDateOnly;
 @class QTDateOnlyConverter;
@@ -91,9 +93,11 @@
 @class QTDel;
 @class QTDelegate;
 @class QTDelete;
+@class QTDeserializationFeature;
 @class QTDict;
 @class QTDictionary;
 @class QTDidSet;
+@class QTDoubleNode;
 @class QTDynamic;
 @class QTDynamicCast;
 @class QTElif;
@@ -123,9 +127,6 @@
 @class QTFromJSON;
 @class QTFunc;
 @class QTFunction;
-@class QTGet;
-@class QTGlobal;
-@class QTGo;
 @class QTDefault;
 @class QTDo;
 @class QTDouble;
@@ -135,9 +136,11 @@
 @class QTFalse;
 @class QTFloat;
 @class QTFor;
-@class QTGoto;
 @class QTFalseClass;
 @class QTObj3;
+@class QTGet;
+@class QTGlobal;
+@class QTGo;
 @class QTGuard;
 @class QTHasOwnProperty;
 @class QTHashable;
@@ -152,6 +155,7 @@
 @class QTInfix;
 @class QTInout;
 @class QTInstanceof;
+@class QTIntNode;
 @class QTInterface;
 @class QTInternal;
 @class QTIs;
@@ -183,6 +187,7 @@
 @class QTList;
 @class QTLocale;
 @class QTLock;
+@class QTLongNode;
 @class QTMap;
 @class QTMapEntry;
 @class QTMetadataPropertyHandling;
@@ -190,20 +195,19 @@
 @class QTMutable;
 @class QTMutating;
 @class QTNamespace;
-@class QTNative;
-@class QTNewtonsoft;
-@class QTNo;
-@class QTNoexcept;
+@class QTGoto;
 @class QTIf;
 @class QTInline;
 @class QTInt;
 @class QTLong;
-@class QTNil;
 @class QTHashCode;
 @class QTInit;
-@class QTNew;
 @class QTObj4;
+@class QTNative;
+@class QTNewtonsoft;
+@class QTNo;
 @class QTNoSuchMethod;
+@class QTNoexcept;
 @class QTNone;
 @class QTNonlocal;
 @class QTNonmutating;
@@ -213,8 +217,10 @@
 @class QTNSObject;
 @class QTNSString;
 @class QTNull;
+@class QTNullNode;
 @class QTNullptr;
 @class QTNumber;
+@class QTNil;
 @class QTNonatomic;
 @class QTNoneClass;
 @class QTNullClass;
@@ -222,9 +228,9 @@
 @class QTRegister;
 @class QTRestrict;
 @class QTRetain;
-@class QTReturn;
 @class QTObject;
 @class QTObjectMapper;
+@class QTObjectNode;
 @class QTOf;
 @class QTOneway;
 @class QTOpen;
@@ -260,14 +266,9 @@
 @class QTRequired;
 @class QTRequires;
 @class QTRethrows;
-@class QTRight;
-@class QTRuntimeType;
-@class QTS;
-@class QTSbyte;
-@class QTSealed;
-@class QTSel;
-@class QTSelect;
+@class QTNew;
 @class QTObj5;
+@class QTReturn;
 @class QTSelfClass;
 @class QTShort;
 @class QTSigned;
@@ -280,9 +281,16 @@
 @class QTTypedef;
 @class QTTypeof;
 @class QTUnion;
-@class QTUnsigned;
+@class QTRight;
+@class QTRuntimeType;
+@class QTS;
+@class QTSbyte;
+@class QTSealed;
+@class QTSel;
+@class QTSelect;
 @class QTSelf;
 @class QTSendable;
+@class QTSerializationFeature;
 @class QTSerialize;
 @class QTSerializerProvider;
 @class QTSet;
@@ -301,6 +309,7 @@
 @class QTSynchronized;
 @class QTSystem;
 @class QTTemplate;
+@class QTTextNode;
 @class QTTrueClass;
 @class QTThen;
 @class QTThis;
@@ -323,6 +332,11 @@
 @class QTUlong;
 @class QTUnchecked;
 @class QTUndefined;
+@class QTObj6;
+@class QTUnsigned;
+@class QTVoid;
+@class QTVolatile;
+@class QTWhile;
 @class QTUnowned;
 @class QTUnsafe;
 @class QTUshort;
@@ -332,10 +346,6 @@
 @class QTUUID;
 @class QTVar;
 @class QTVirtual;
-@class QTObj6;
-@class QTVoid;
-@class QTVolatile;
-@class QTWhile;
 @class QTWcharT;
 @class QTWeak;
 @class QTWhere;
@@ -389,6 +399,7 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTAndEq *andEq;
 @property (nonatomic, strong) QTAny *any;
 @property (nonatomic, strong) QTArray *array;
+@property (nonatomic, strong) QTArrayNode *arrayNode;
 @property (nonatomic, strong) QTAs *as;
 @property (nonatomic, strong) QTAssert *assert;
 @property (nonatomic, strong) QTAssociatedtype *associatedtype;
@@ -402,6 +413,7 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTBitand *bitand;
 @property (nonatomic, strong) QTBitor *bitor;
 @property (nonatomic, strong) QTBoolean *boolean;
+@property (nonatomic, strong) QTBooleanNode *booleanNode;
 @property (nonatomic, strong) QTBycopy *bycopy;
 @property (nonatomic, strong) QTByref *byref;
 @property (nonatomic, strong) QTByte *byte;
@@ -429,8 +441,6 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTConvenience *convenience;
 @property (nonatomic, strong) QTConvert *convert;
 @property (nonatomic, strong) QTConverter *converter;
-@property (nonatomic, strong) QTCultureInfo *cultureInfo;
-@property (nonatomic, strong) QTDate *date;
 @property (nonatomic, assign) NSInteger dummy;
 @property (nonatomic, strong) QTEmpty *empty;
 @property (nonatomic, strong) QTImaginery *imaginery;
@@ -477,6 +487,10 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger array;
 @end
 
+@interface QTArrayNode : NSObject
+@property (nonatomic, assign) NSInteger arrayNode;
+@end
+
 @interface QTAs : NSObject
 @property (nonatomic, assign) NSInteger as;
 @end
@@ -529,6 +543,10 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger boolean;
 @end
 
+@interface QTBooleanNode : NSObject
+@property (nonatomic, assign) NSInteger booleanNode;
+@end
+
 @interface QTBycopy : NSObject
 @property (nonatomic, assign) NSInteger bycopy;
 @end
@@ -637,14 +655,6 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger converter;
 @end
 
-@interface QTCultureInfo : NSObject
-@property (nonatomic, assign) NSInteger cultureInfo;
-@end
-
-@interface QTDate : NSObject
-@property (nonatomic, assign) NSInteger date;
-@end
-
 @interface QTEmpty : NSObject
 @property (nonatomic, assign) NSInteger empty;
 @end
@@ -706,6 +716,8 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @end
 
 @interface QTObj2 : NSObject
+@property (nonatomic, strong) QTCultureInfo *cultureInfo;
+@property (nonatomic, strong) QTDate *date;
 @property (nonatomic, strong) QTDateFormatter *dateFormatter;
 @property (nonatomic, strong) QTDateOnly *dateOnly;
 @property (nonatomic, strong) QTDateOnlyConverter *dateOnlyConverter;
@@ -725,9 +737,11 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTDel *del;
 @property (nonatomic, strong) QTDelegate *delegate;
 @property (nonatomic, strong) QTDelete *delete;
+@property (nonatomic, strong) QTDeserializationFeature *deserializationFeature;
 @property (nonatomic, strong) QTDict *dict;
 @property (nonatomic, strong) QTDictionary *dictionary;
 @property (nonatomic, strong) QTDidSet *didSet;
+@property (nonatomic, strong) QTDoubleNode *doubleNode;
 @property (nonatomic, assign) NSInteger dummy;
 @property (nonatomic, strong) QTDynamic *dynamic;
 @property (nonatomic, strong) QTDynamicCast *dynamicCast;
@@ -757,9 +771,6 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTFromJSON *fromJSON;
 @property (nonatomic, strong) QTFunc *func;
 @property (nonatomic, strong) QTFunction *function;
-@property (nonatomic, strong) QTGet *get;
-@property (nonatomic, strong) QTGlobal *global;
-@property (nonatomic, strong) QTGo *go;
 @property (nonatomic, strong) QTDefault *obj2Default;
 @property (nonatomic, strong) QTDo *obj2Do;
 @property (nonatomic, strong) QTDouble *obj2Double;
@@ -769,10 +780,17 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTFalse *obj2False;
 @property (nonatomic, strong) QTFloat *obj2Float;
 @property (nonatomic, strong) QTFor *obj2For;
-@property (nonatomic, strong) QTGoto *obj2Goto;
 @property (nonatomic, strong) QTFalseClass *theFalse;
 @end
 
+@interface QTCultureInfo : NSObject
+@property (nonatomic, assign) NSInteger cultureInfo;
+@end
+
+@interface QTDate : NSObject
+@property (nonatomic, assign) NSInteger date;
+@end
+
 @interface QTDateFormatter : NSObject
 @property (nonatomic, assign) NSInteger dateFormatter;
 @end
@@ -849,6 +867,10 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger delete;
 @end
 
+@interface QTDeserializationFeature : NSObject
+@property (nonatomic, assign) NSInteger deserializationFeature;
+@end
+
 @interface QTDict : NSObject
 @property (nonatomic, assign) NSInteger dict;
 @end
@@ -861,6 +883,10 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger didSet;
 @end
 
+@interface QTDoubleNode : NSObject
+@property (nonatomic, assign) NSInteger doubleNode;
+@end
+
 @interface QTDynamic : NSObject
 @property (nonatomic, assign) NSInteger dynamic;
 @end
@@ -973,18 +999,6 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger function;
 @end
 
-@interface QTGet : NSObject
-@property (nonatomic, assign) NSInteger get;
-@end
-
-@interface QTGlobal : NSObject
-@property (nonatomic, assign) NSInteger global;
-@end
-
-@interface QTGo : NSObject
-@property (nonatomic, assign) NSInteger go;
-@end
-
 @interface QTDefault : NSObject
 @property (nonatomic, assign) NSInteger defaultDefault;
 @end
@@ -1021,16 +1035,15 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger forFor;
 @end
 
-@interface QTGoto : NSObject
-@property (nonatomic, assign) NSInteger gotoGoto;
-@end
-
 @interface QTFalseClass : NSObject
 @property (nonatomic, assign) NSInteger falseFalse;
 @end
 
 @interface QTObj3 : NSObject
 @property (nonatomic, assign) NSInteger dummy;
+@property (nonatomic, strong) QTGet *get;
+@property (nonatomic, strong) QTGlobal *global;
+@property (nonatomic, strong) QTGo *go;
 @property (nonatomic, strong) QTGuard *guard;
 @property (nonatomic, strong) QTHasOwnProperty *hasOwnProperty;
 @property (nonatomic, strong) QTHashable *hashable;
@@ -1045,6 +1058,7 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTInfix *infix;
 @property (nonatomic, strong) QTInout *inout;
 @property (nonatomic, strong) QTInstanceof *instanceof;
+@property (nonatomic, strong) QTIntNode *intNode;
 @property (nonatomic, strong) QTInterface *interface;
 @property (nonatomic, strong) QTInternal *internal;
 @property (nonatomic, strong) QTIs *is;
@@ -1076,6 +1090,7 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTList *list;
 @property (nonatomic, strong) QTLocale *locale;
 @property (nonatomic, strong) QTLock *lock;
+@property (nonatomic, strong) QTLongNode *longNode;
 @property (nonatomic, strong) QTMap *map;
 @property (nonatomic, strong) QTMapEntry *mapEntry;
 @property (nonatomic, strong) QTMetadataPropertyHandling *metadataPropertyHandling;
@@ -1083,18 +1098,25 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTMutable *mutable;
 @property (nonatomic, strong) QTMutating *mutating;
 @property (nonatomic, strong) QTNamespace *namespace;
-@property (nonatomic, strong) QTNative *native;
-@property (nonatomic, strong) QTNewtonsoft *newtonsoft;
-@property (nonatomic, strong) QTNo *no;
-@property (nonatomic, strong) QTNoexcept *noexcept;
+@property (nonatomic, strong) QTGoto *obj3Goto;
 @property (nonatomic, strong) QTIf *obj3If;
 @property (nonatomic, strong) QTInline *obj3Inline;
 @property (nonatomic, strong) QTInt *obj3Int;
 @property (nonatomic, strong) QTLong *obj3Long;
-@property (nonatomic, strong) QTNil *obj3Nil;
 @property (nonatomic, strong) QTHashCode *theHashCode;
 @property (nonatomic, strong) QTInit *theInit;
-@property (nonatomic, strong) QTNew *theNew;
+@end
+
+@interface QTGet : NSObject
+@property (nonatomic, assign) NSInteger get;
+@end
+
+@interface QTGlobal : NSObject
+@property (nonatomic, assign) NSInteger global;
+@end
+
+@interface QTGo : NSObject
+@property (nonatomic, assign) NSInteger go;
 @end
 
 @interface QTGuard : NSObject
@@ -1153,6 +1175,10 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger instanceof;
 @end
 
+@interface QTIntNode : NSObject
+@property (nonatomic, assign) NSInteger intNode;
+@end
+
 @interface QTInterface : NSObject
 @property (nonatomic, assign) NSInteger interface;
 @end
@@ -1277,6 +1303,10 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger lock;
 @end
 
+@interface QTLongNode : NSObject
+@property (nonatomic, assign) NSInteger longNode;
+@end
+
 @interface QTMap : NSObject
 @property (nonatomic, assign) NSInteger map;
 @end
@@ -1305,20 +1335,8 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger namespace;
 @end
 
-@interface QTNative : NSObject
-@property (nonatomic, assign) NSInteger native;
-@end
-
-@interface QTNewtonsoft : NSObject
-@property (nonatomic, assign) NSInteger newtonsoft;
-@end
-
-@interface QTNo : NSObject
-@property (nonatomic, assign) NSInteger no;
-@end
-
-@interface QTNoexcept : NSObject
-@property (nonatomic, assign) NSInteger noexcept;
+@interface QTGoto : NSObject
+@property (nonatomic, assign) NSInteger gotoGoto;
 @end
 
 @interface QTIf : NSObject
@@ -1337,10 +1355,6 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger longLong;
 @end
 
-@interface QTNil : NSObject
-@property (nonatomic, assign) NSInteger nilNil;
-@end
-
 @interface QTHashCode : NSObject
 @property (nonatomic, assign) NSInteger theHashCode;
 @end
@@ -1349,13 +1363,13 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger theInit;
 @end
 
-@interface QTNew : NSObject
-@property (nonatomic, assign) NSInteger theNew;
-@end
-
 @interface QTObj4 : NSObject
 @property (nonatomic, assign) NSInteger dummy;
+@property (nonatomic, strong) QTNative *native;
+@property (nonatomic, strong) QTNewtonsoft *newtonsoft;
+@property (nonatomic, strong) QTNo *no;
 @property (nonatomic, strong) QTNoSuchMethod *noSuchMethod;
+@property (nonatomic, strong) QTNoexcept *noexcept;
 @property (nonatomic, strong) QTNone *none;
 @property (nonatomic, strong) QTNonlocal *nonlocal;
 @property (nonatomic, strong) QTNonmutating *nonmutating;
@@ -1365,8 +1379,10 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTNSObject *nsObject;
 @property (nonatomic, strong) QTNSString *nsString;
 @property (nonatomic, strong) QTNull *null;
+@property (nonatomic, strong) QTNullNode *nullNode;
 @property (nonatomic, strong) QTNullptr *nullptr;
 @property (nonatomic, strong) QTNumber *number;
+@property (nonatomic, strong) QTNil *obj4Nil;
 @property (nonatomic, strong) QTNonatomic *obj4Nonatomic;
 @property (nonatomic, strong) QTNoneClass *obj4None;
 @property (nonatomic, strong) QTNullClass *obj4Null;
@@ -1374,9 +1390,9 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTRegister *obj4Register;
 @property (nonatomic, strong) QTRestrict *obj4Restrict;
 @property (nonatomic, strong) QTRetain *obj4Retain;
-@property (nonatomic, strong) QTReturn *obj4Return;
 @property (nonatomic, strong) QTObject *object;
 @property (nonatomic, strong) QTObjectMapper *objectMapper;
+@property (nonatomic, strong) QTObjectNode *objectNode;
 @property (nonatomic, strong) QTOf *of;
 @property (nonatomic, strong) QTOneway *oneway;
 @property (nonatomic, strong) QTOpen *open;
@@ -1412,19 +1428,29 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTRequired *required;
 @property (nonatomic, strong) QTRequires *requires;
 @property (nonatomic, strong) QTRethrows *rethrows;
-@property (nonatomic, strong) QTRight *right;
-@property (nonatomic, strong) QTRuntimeType *runtimeType;
-@property (nonatomic, strong) QTS *s;
-@property (nonatomic, strong) QTSbyte *sbyte;
-@property (nonatomic, strong) QTSealed *sealed;
-@property (nonatomic, strong) QTSel *sel;
-@property (nonatomic, strong) QTSelect *select;
+@property (nonatomic, strong) QTNew *theNew;
+@end
+
+@interface QTNative : NSObject
+@property (nonatomic, assign) NSInteger native;
+@end
+
+@interface QTNewtonsoft : NSObject
+@property (nonatomic, assign) NSInteger newtonsoft;
+@end
+
+@interface QTNo : NSObject
+@property (nonatomic, assign) NSInteger no;
 @end
 
 @interface QTNoSuchMethod : NSObject
 @property (nonatomic, assign) NSInteger noSuchMethod;
 @end
 
+@interface QTNoexcept : NSObject
+@property (nonatomic, assign) NSInteger noexcept;
+@end
+
 @interface QTNone : NSObject
 @property (nonatomic, assign) NSInteger none;
 @end
@@ -1461,6 +1487,10 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger null;
 @end
 
+@interface QTNullNode : NSObject
+@property (nonatomic, assign) NSInteger nullNode;
+@end
+
 @interface QTNullptr : NSObject
 @property (nonatomic, assign) NSInteger nullptr;
 @end
@@ -1469,6 +1499,10 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger number;
 @end
 
+@interface QTNil : NSObject
+@property (nonatomic, assign) NSInteger nilNil;
+@end
+
 @interface QTNonatomic : NSObject
 @property (nonatomic, assign) NSInteger nonatomicNonatomic;
 @end
@@ -1497,10 +1531,6 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger retainRetain;
 @end
 
-@interface QTReturn : NSObject
-@property (nonatomic, assign) NSInteger returnReturn;
-@end
-
 @interface QTObject : NSObject
 @property (nonatomic, assign) NSInteger object;
 @end
@@ -1509,6 +1539,10 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger objectMapper;
 @end
 
+@interface QTObjectNode : NSObject
+@property (nonatomic, assign) NSInteger objectNode;
+@end
+
 @interface QTOf : NSObject
 @property (nonatomic, assign) NSInteger of;
 @end
@@ -1649,36 +1683,13 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger rethrows;
 @end
 
-@interface QTRight : NSObject
-@property (nonatomic, assign) NSInteger right;
-@end
-
-@interface QTRuntimeType : NSObject
-@property (nonatomic, assign) NSInteger runtimeType;
-@end
-
-@interface QTS : NSObject
-@property (nonatomic, assign) NSInteger s;
-@end
-
-@interface QTSbyte : NSObject
-@property (nonatomic, assign) NSInteger sbyte;
-@end
-
-@interface QTSealed : NSObject
-@property (nonatomic, assign) NSInteger sealed;
-@end
-
-@interface QTSel : NSObject
-@property (nonatomic, assign) NSInteger sel;
-@end
-
-@interface QTSelect : NSObject
-@property (nonatomic, assign) NSInteger select;
+@interface QTNew : NSObject
+@property (nonatomic, assign) NSInteger theNew;
 @end
 
 @interface QTObj5 : NSObject
 @property (nonatomic, assign) NSInteger dummy;
+@property (nonatomic, strong) QTReturn *obj5Return;
 @property (nonatomic, strong) QTSelfClass *obj5Self;
 @property (nonatomic, strong) QTShort *obj5Short;
 @property (nonatomic, strong) QTSigned *obj5Signed;
@@ -1691,9 +1702,16 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTTypedef *obj5Typedef;
 @property (nonatomic, strong) QTTypeof *obj5Typeof;
 @property (nonatomic, strong) QTUnion *obj5Union;
-@property (nonatomic, strong) QTUnsigned *obj5Unsigned;
+@property (nonatomic, strong) QTRight *right;
+@property (nonatomic, strong) QTRuntimeType *runtimeType;
+@property (nonatomic, strong) QTS *s;
+@property (nonatomic, strong) QTSbyte *sbyte;
+@property (nonatomic, strong) QTSealed *sealed;
+@property (nonatomic, strong) QTSel *sel;
+@property (nonatomic, strong) QTSelect *select;
 @property (nonatomic, strong) QTSelf *self;
 @property (nonatomic, strong) QTSendable *sendable;
+@property (nonatomic, strong) QTSerializationFeature *serializationFeature;
 @property (nonatomic, strong) QTSerialize *serialize;
 @property (nonatomic, strong) QTSerializerProvider *serializerProvider;
 @property (nonatomic, strong) QTSet *set;
@@ -1712,6 +1730,7 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTSynchronized *synchronized;
 @property (nonatomic, strong) QTSystem *system;
 @property (nonatomic, strong) QTTemplate *template;
+@property (nonatomic, strong) QTTextNode *textNode;
 @property (nonatomic, strong) QTTrueClass *theTrue;
 @property (nonatomic, strong) QTThen *then;
 @property (nonatomic, strong) QTThis *this;
@@ -1734,15 +1753,10 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTUlong *ulong;
 @property (nonatomic, strong) QTUnchecked *unchecked;
 @property (nonatomic, strong) QTUndefined *undefined;
-@property (nonatomic, strong) QTUnowned *unowned;
-@property (nonatomic, strong) QTUnsafe *unsafe;
-@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 QTReturn : NSObject
+@property (nonatomic, assign) NSInteger returnReturn;
 @end
 
 @interface QTSelfClass : NSObject
@@ -1793,8 +1807,32 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger unionUnion;
 @end
 
-@interface QTUnsigned : NSObject
-@property (nonatomic, assign) NSInteger unsignedUnsigned;
+@interface QTRight : NSObject
+@property (nonatomic, assign) NSInteger right;
+@end
+
+@interface QTRuntimeType : NSObject
+@property (nonatomic, assign) NSInteger runtimeType;
+@end
+
+@interface QTS : NSObject
+@property (nonatomic, assign) NSInteger s;
+@end
+
+@interface QTSbyte : NSObject
+@property (nonatomic, assign) NSInteger sbyte;
+@end
+
+@interface QTSealed : NSObject
+@property (nonatomic, assign) NSInteger sealed;
+@end
+
+@interface QTSel : NSObject
+@property (nonatomic, assign) NSInteger sel;
+@end
+
+@interface QTSelect : NSObject
+@property (nonatomic, assign) NSInteger select;
 @end
 
 @interface QTSelf : NSObject
@@ -1805,6 +1843,10 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger sendable;
 @end
 
+@interface QTSerializationFeature : NSObject
+@property (nonatomic, assign) NSInteger serializationFeature;
+@end
+
 @interface QTSerialize : NSObject
 @property (nonatomic, assign) NSInteger serialize;
 @end
@@ -1877,6 +1919,10 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger template;
 @end
 
+@interface QTTextNode : NSObject
+@property (nonatomic, assign) NSInteger textNode;
+@end
+
 @interface QTTrueClass : NSObject
 @property (nonatomic, assign) NSInteger trueTrue;
 @end
@@ -1965,6 +2011,48 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger undefined;
 @end
 
+@interface QTObj6 : NSObject
+@property (nonatomic, assign) NSInteger dummy;
+@property (nonatomic, strong) QTUnsigned *obj6Unsigned;
+@property (nonatomic, strong) QTVoid *obj6Void;
+@property (nonatomic, strong) QTVolatile *obj6Volatile;
+@property (nonatomic, strong) QTWhile *obj6While;
+@property (nonatomic, strong) QTUnowned *unowned;
+@property (nonatomic, strong) QTUnsafe *unsafe;
+@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;
+@property (nonatomic, strong) QTWcharT *wcharT;
+@property (nonatomic, strong) QTWeak *weak;
+@property (nonatomic, strong) QTWhere *where;
+@property (nonatomic, strong) QTWillSet *willSet;
+@property (nonatomic, strong) QTWith *with;
+@property (nonatomic, strong) QTXor *xor;
+@property (nonatomic, strong) QTXorEq *xorEq;
+@property (nonatomic, strong) QTYes *yes;
+@property (nonatomic, strong) QTYield *yield;
+@end
+
+@interface QTUnsigned : NSObject
+@property (nonatomic, assign) NSInteger unsignedUnsigned;
+@end
+
+@interface QTVoid : NSObject
+@property (nonatomic, assign) NSInteger voidVoid;
+@end
+
+@interface QTVolatile : NSObject
+@property (nonatomic, assign) NSInteger volatileVolatile;
+@end
+
+@interface QTWhile : NSObject
+@property (nonatomic, assign) NSInteger whileWhile;
+@end
+
 @interface QTUnowned : NSObject
 @property (nonatomic, assign) NSInteger unowned;
 @end
@@ -2001,34 +2089,6 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger virtual;
 @end
 
-@interface QTObj6 : NSObject
-@property (nonatomic, assign) NSInteger dummy;
-@property (nonatomic, strong) QTVoid *obj6Void;
-@property (nonatomic, strong) QTVolatile *obj6Volatile;
-@property (nonatomic, strong) QTWhile *obj6While;
-@property (nonatomic, strong) QTWcharT *wcharT;
-@property (nonatomic, strong) QTWeak *weak;
-@property (nonatomic, strong) QTWhere *where;
-@property (nonatomic, strong) QTWillSet *willSet;
-@property (nonatomic, strong) QTWith *with;
-@property (nonatomic, strong) QTXor *xor;
-@property (nonatomic, strong) QTXorEq *xorEq;
-@property (nonatomic, strong) QTYes *yes;
-@property (nonatomic, strong) QTYield *yield;
-@end
-
-@interface QTVoid : NSObject
-@property (nonatomic, assign) NSInteger voidVoid;
-@end
-
-@interface QTVolatile : NSObject
-@property (nonatomic, assign) NSInteger volatileVolatile;
-@end
-
-@interface QTWhile : NSObject
-@property (nonatomic, assign) NSInteger whileWhile;
-@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..e385f41 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
@@ -53,6 +53,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTArrayNode (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTAs (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -118,6 +123,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTBooleanNode (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTBycopy (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -253,16 +263,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTCultureInfo (JSONConversion)
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
-- (NSDictionary *)JSONDictionary;
-@end
-
-@interface QTDate (JSONConversion)
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
-- (NSDictionary *)JSONDictionary;
-@end
-
 @interface QTEmpty (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -343,6 +343,16 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTCultureInfo (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
+@interface QTDate (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTDateFormatter (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -438,6 +448,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTDeserializationFeature (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTDict (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -453,6 +468,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTDoubleNode (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTDynamic (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -593,21 +613,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTGet (JSONConversion)
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
-- (NSDictionary *)JSONDictionary;
-@end
-
-@interface QTGlobal (JSONConversion)
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
-- (NSDictionary *)JSONDictionary;
-@end
-
-@interface QTGo (JSONConversion)
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
-- (NSDictionary *)JSONDictionary;
-@end
-
 @interface QTDefault (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -653,17 +658,27 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTGoto (JSONConversion)
+@interface QTFalseClass (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTFalseClass (JSONConversion)
+@interface QTObj3 (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTObj3 (JSONConversion)
+@interface QTGet (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
+@interface QTGlobal (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
+@interface QTGo (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
@@ -738,6 +753,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTIntNode (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTInterface (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -893,6 +913,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTLongNode (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTMap (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -928,72 +953,67 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTNative (JSONConversion)
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
-- (NSDictionary *)JSONDictionary;
-@end
-
-@interface QTNewtonsoft (JSONConversion)
+@interface QTGoto (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTNo (JSONConversion)
+@interface QTIf (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTNoexcept (JSONConversion)
+@interface QTInline (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTIf (JSONConversion)
+@interface QTInt (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTInline (JSONConversion)
+@interface QTLong (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTInt (JSONConversion)
+@interface QTHashCode (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTLong (JSONConversion)
+@interface QTInit (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTNil (JSONConversion)
+@interface QTObj4 (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTHashCode (JSONConversion)
+@interface QTNative (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTInit (JSONConversion)
+@interface QTNewtonsoft (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTNew (JSONConversion)
+@interface QTNo (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTObj4 (JSONConversion)
+@interface QTNoSuchMethod (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTNoSuchMethod (JSONConversion)
+@interface QTNoexcept (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
@@ -1043,6 +1063,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTNullNode (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTNullptr (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -1053,6 +1078,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTNil (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTNonatomic (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -1088,17 +1118,17 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTReturn (JSONConversion)
+@interface QTObject (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTObject (JSONConversion)
+@interface QTObjectMapper (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTObjectMapper (JSONConversion)
+@interface QTObjectNode (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
@@ -1278,107 +1308,112 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTRight (JSONConversion)
+@interface QTNew (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTRuntimeType (JSONConversion)
+@interface QTObj5 (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTS (JSONConversion)
+@interface QTReturn (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTSbyte (JSONConversion)
+@interface QTSelfClass (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTSealed (JSONConversion)
+@interface QTShort (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTSel (JSONConversion)
+@interface QTSigned (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTSelect (JSONConversion)
+@interface QTSizeof (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTObj5 (JSONConversion)
+@interface QTStatic (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTSelfClass (JSONConversion)
+@interface QTStruct (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTShort (JSONConversion)
+@interface QTSwitch (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTSigned (JSONConversion)
+@interface QTTrue (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTSizeof (JSONConversion)
+@interface QTTypeClass (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTStatic (JSONConversion)
+@interface QTTypedef (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTStruct (JSONConversion)
+@interface QTTypeof (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTSwitch (JSONConversion)
+@interface QTUnion (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTTrue (JSONConversion)
+@interface QTRight (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTTypeClass (JSONConversion)
+@interface QTRuntimeType (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTTypedef (JSONConversion)
+@interface QTS (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTTypeof (JSONConversion)
+@interface QTSbyte (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTUnion (JSONConversion)
+@interface QTSealed (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTUnsigned (JSONConversion)
+@interface QTSel (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
+@interface QTSelect (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
@@ -1393,6 +1428,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTSerializationFeature (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTSerialize (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -1483,6 +1523,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTTextNode (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTTrueClass (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -1593,67 +1638,72 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTUnowned (JSONConversion)
+@interface QTObj6 (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTUnsafe (JSONConversion)
+@interface QTUnsigned (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTUshort (JSONConversion)
+@interface QTVoid (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTUsing (JSONConversion)
+@interface QTVolatile (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTUtf8JSONReader (JSONConversion)
+@interface QTWhile (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTUtf8JSONWriter (JSONConversion)
+@interface QTUnowned (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTUUID (JSONConversion)
+@interface QTUnsafe (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTVar (JSONConversion)
+@interface QTUshort (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTVirtual (JSONConversion)
+@interface QTUsing (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTObj6 (JSONConversion)
+@interface QTUtf8JSONReader (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTVoid (JSONConversion)
+@interface QTUtf8JSONWriter (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTVolatile (JSONConversion)
+@interface QTUUID (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTWhile (JSONConversion)
+@interface QTVar (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
+@interface QTVirtual (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
@@ -1887,6 +1937,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"and_eq": @"andEq",
         @"Any": @"any",
         @"array": @"array",
+        @"ArrayNode": @"arrayNode",
         @"as": @"as",
         @"assert": @"assert",
         @"associatedtype": @"associatedtype",
@@ -1900,6 +1951,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"bitand": @"bitand",
         @"bitor": @"bitor",
         @"boolean": @"boolean",
+        @"BooleanNode": @"booleanNode",
         @"bycopy": @"bycopy",
         @"byref": @"byref",
         @"byte": @"byte",
@@ -1927,8 +1979,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"convenience": @"convenience",
         @"convert": @"convert",
         @"converter": @"converter",
-        @"CultureInfo": @"cultureInfo",
-        @"date": @"date",
         @"dummy": @"dummy",
         @"_": @"empty",
         @"_Imaginery": @"imaginery",
@@ -1963,6 +2013,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (![dict[@"and_eq"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"Any"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"array"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"ArrayNode"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"as"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"assert"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"associatedtype"] isKindOfClass:NSDictionary.class]) return nil;
@@ -1976,6 +2027,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (![dict[@"bitand"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"bitor"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"boolean"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"BooleanNode"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"bycopy"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"byref"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"byte"] isKindOfClass:NSDictionary.class]) return nil;
@@ -2003,8 +2055,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (![dict[@"convenience"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"convert"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"converter"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"CultureInfo"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"date"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"dummy"] isKindOfClass:NSNumber.class]) return nil;
         if ([dict[@"dummy"] doubleValue] != [dict[@"dummy"] longLongValue]) return nil;
         if (![dict[@"_"] isKindOfClass:NSDictionary.class]) return nil;
@@ -2037,6 +2087,8 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (!_any && dict[@"Any"] && ![dict[@"Any"] isKindOfClass:NSNull.class]) return nil;
         _array = [QTArray fromJSONDictionary:(id)_array];
         if (!_array && dict[@"array"] && ![dict[@"array"] isKindOfClass:NSNull.class]) return nil;
+        _arrayNode = [QTArrayNode fromJSONDictionary:(id)_arrayNode];
+        if (!_arrayNode && dict[@"ArrayNode"] && ![dict[@"ArrayNode"] isKindOfClass:NSNull.class]) return nil;
         _as = [QTAs fromJSONDictionary:(id)_as];
         if (!_as && dict[@"as"] && ![dict[@"as"] isKindOfClass:NSNull.class]) return nil;
         _assert = [QTAssert fromJSONDictionary:(id)_assert];
@@ -2063,6 +2115,8 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (!_bitor && dict[@"bitor"] && ![dict[@"bitor"] isKindOfClass:NSNull.class]) return nil;
         _boolean = [QTBoolean fromJSONDictionary:(id)_boolean];
         if (!_boolean && dict[@"boolean"] && ![dict[@"boolean"] isKindOfClass:NSNull.class]) return nil;
+        _booleanNode = [QTBooleanNode fromJSONDictionary:(id)_booleanNode];
+        if (!_booleanNode && dict[@"BooleanNode"] && ![dict[@"BooleanNode"] isKindOfClass:NSNull.class]) return nil;
         _bycopy = [QTBycopy fromJSONDictionary:(id)_bycopy];
         if (!_bycopy && dict[@"bycopy"] && ![dict[@"bycopy"] isKindOfClass:NSNull.class]) return nil;
         _byref = [QTByref fromJSONDictionary:(id)_byref];
@@ -2117,10 +2171,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (!_convert && dict[@"convert"] && ![dict[@"convert"] isKindOfClass:NSNull.class]) return nil;
         _converter = [QTConverter fromJSONDictionary:(id)_converter];
         if (!_converter && dict[@"converter"] && ![dict[@"converter"] isKindOfClass:NSNull.class]) return nil;
-        _cultureInfo = [QTCultureInfo fromJSONDictionary:(id)_cultureInfo];
-        if (!_cultureInfo && dict[@"CultureInfo"] && ![dict[@"CultureInfo"] isKindOfClass:NSNull.class]) return nil;
-        _date = [QTDate fromJSONDictionary:(id)_date];
-        if (!_date && dict[@"date"] && ![dict[@"date"] isKindOfClass:NSNull.class]) return nil;
         _empty = [QTEmpty fromJSONDictionary:(id)_empty];
         if (!_empty && dict[@"_"] && ![dict[@"_"] isKindOfClass:NSNull.class]) return nil;
         _imaginery = [QTImaginery fromJSONDictionary:(id)_imaginery];
@@ -2187,6 +2237,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"and_eq": [_andEq JSONDictionary],
         @"Any": [_any JSONDictionary],
         @"array": [_array JSONDictionary],
+        @"ArrayNode": [_arrayNode JSONDictionary],
         @"as": [_as JSONDictionary],
         @"assert": [_assert JSONDictionary],
         @"associatedtype": [_associatedtype JSONDictionary],
@@ -2200,6 +2251,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"bitand": [_bitand JSONDictionary],
         @"bitor": [_bitor JSONDictionary],
         @"boolean": [_boolean JSONDictionary],
+        @"BooleanNode": [_booleanNode JSONDictionary],
         @"bycopy": [_bycopy JSONDictionary],
         @"byref": [_byref JSONDictionary],
         @"byte": [_byte JSONDictionary],
@@ -2227,8 +2279,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"convenience": [_convenience JSONDictionary],
         @"convert": [_convert JSONDictionary],
         @"converter": [_converter JSONDictionary],
-        @"CultureInfo": [_cultureInfo JSONDictionary],
-        @"date": [_date JSONDictionary],
         @"_": [_empty JSONDictionary],
         @"_Imaginery": [_imaginery JSONDictionary],
         @"asm": [_obj1ASM JSONDictionary],
@@ -2564,25 +2614,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTAs
+@implementation QTArrayNode
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"as": @"as",
+        @"ArrayNode": @"arrayNode",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTAs alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTArrayNode alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"as"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"as"] doubleValue] != [dict[@"as"] longLongValue]) return nil;
+        if (![dict[@"ArrayNode"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"ArrayNode"] doubleValue] != [dict[@"ArrayNode"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -2590,41 +2640,51 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTAs.properties[key];
+    id resolved = QTArrayNode.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTAs.properties[key];
+    id resolved = QTArrayNode.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTAs.properties.allValues];
+    id dict = [[self dictionaryWithValuesForKeys:QTArrayNode.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTArrayNode.properties) {
+        id propertyName = QTArrayNode.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
 }
 @end
 
-@implementation QTAssert
+@implementation QTAs
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"assert": @"assert",
+        @"as": @"as",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTAssert alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTAs alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"assert"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"assert"] doubleValue] != [dict[@"assert"] longLongValue]) return nil;
+        if (![dict[@"as"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"as"] doubleValue] != [dict[@"as"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -2632,41 +2692,83 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTAssert.properties[key];
+    id resolved = QTAs.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTAssert.properties[key];
+    id resolved = QTAs.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTAssert.properties.allValues];
+    return [self dictionaryWithValuesForKeys:QTAs.properties.allValues];
 }
 @end
 
-@implementation QTAssociatedtype
+@implementation QTAssert
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"associatedtype": @"associatedtype",
+        @"assert": @"assert",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTAssociatedtype alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTAssert alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"associatedtype"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"associatedtype"] doubleValue] != [dict[@"associatedtype"] longLongValue]) return nil;
+        if (![dict[@"assert"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"assert"] doubleValue] != [dict[@"assert"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTAssert.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTAssert.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTAssert.properties.allValues];
+}
+@end
+
+@implementation QTAssociatedtype
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"associatedtype": @"associatedtype",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTAssociatedtype alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"associatedtype"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"associatedtype"] doubleValue] != [dict[@"associatedtype"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -3140,6 +3242,58 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTBooleanNode
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"BooleanNode": @"booleanNode",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTBooleanNode alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"BooleanNode"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"BooleanNode"] doubleValue] != [dict[@"BooleanNode"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTBooleanNode.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTBooleanNode.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    id dict = [[self dictionaryWithValuesForKeys:QTBooleanNode.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTBooleanNode.properties) {
+        id propertyName = QTBooleanNode.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
+}
+@end
+
 @implementation QTBycopy
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -4394,100 +4548,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTCultureInfo
-+ (NSDictionary<NSString *, NSString *> *)properties
-{
-    static NSDictionary<NSString *, NSString *> *properties;
-    return properties = properties ? properties : @{
-        @"CultureInfo": @"cultureInfo",
-    };
-}
-
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict
-{
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTCultureInfo alloc] initWithJSONDictionary:dict] : nil;
-}
-
-- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
-{
-    if (self = [super init]) {
-        if (![dict[@"CultureInfo"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"CultureInfo"] doubleValue] != [dict[@"CultureInfo"] longLongValue]) return nil;
-        [self setValuesForKeysWithDictionary:dict];
-    }
-    return self;
-}
-
-- (void)setValue:(nullable id)value forKey:(NSString *)key
-{
-    id resolved = QTCultureInfo.properties[key];
-    if (resolved) [super setValue:value forKey:resolved];
-}
-
-- (void)setNilValueForKey:(NSString *)key
-{
-    id resolved = QTCultureInfo.properties[key];
-    if (resolved) [super setValue:@(0) forKey:resolved];
-}
-
-- (NSDictionary *)JSONDictionary
-{
-    id dict = [[self dictionaryWithValuesForKeys:QTCultureInfo.properties.allValues] mutableCopy];
-
-    for (id jsonName in QTCultureInfo.properties) {
-        id propertyName = QTCultureInfo.properties[jsonName];
-        if (![jsonName isEqualToString:propertyName]) {
-            dict[jsonName] = dict[propertyName];
-            [dict removeObjectForKey:propertyName];
-        }
-    }
-
-    return dict;
-}
-@end
-
-@implementation QTDate
-+ (NSDictionary<NSString *, NSString *> *)properties
-{
-    static NSDictionary<NSString *, NSString *> *properties;
-    return properties = properties ? properties : @{
-        @"date": @"date",
-    };
-}
-
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict
-{
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTDate alloc] initWithJSONDictionary:dict] : nil;
-}
-
-- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
-{
-    if (self = [super init]) {
-        if (![dict[@"date"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"date"] doubleValue] != [dict[@"date"] longLongValue]) return nil;
-        [self setValuesForKeysWithDictionary:dict];
-    }
-    return self;
-}
-
-- (void)setValue:(nullable id)value forKey:(NSString *)key
-{
-    id resolved = QTDate.properties[key];
-    if (resolved) [super setValue:value forKey:resolved];
-}
-
-- (void)setNilValueForKey:(NSString *)key
-{
-    id resolved = QTDate.properties[key];
-    if (resolved) [super setValue:@(0) forKey:resolved];
-}
-
-- (NSDictionary *)JSONDictionary
-{
-    return [self dictionaryWithValuesForKeys:QTDate.properties.allValues];
-}
-@end
-
 @implementation QTEmpty
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -5253,6 +5313,8 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
+        @"CultureInfo": @"cultureInfo",
+        @"date": @"date",
         @"DateFormatter": @"dateFormatter",
         @"DateOnly": @"dateOnly",
         @"DateOnlyConverter": @"dateOnlyConverter",
@@ -5272,9 +5334,11 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"del": @"del",
         @"delegate": @"delegate",
         @"delete": @"delete",
+        @"DeserializationFeature": @"deserializationFeature",
         @"dict": @"dict",
         @"dictionary": @"dictionary",
         @"didSet": @"didSet",
+        @"DoubleNode": @"doubleNode",
         @"dummy": @"dummy",
         @"dynamic": @"dynamic",
         @"dynamic_cast": @"dynamicCast",
@@ -5304,9 +5368,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"from_json": @"fromJSON",
         @"func": @"func",
         @"function": @"function",
-        @"get": @"get",
-        @"global": @"global",
-        @"go": @"go",
         @"default": @"obj2Default",
         @"do": @"obj2Do",
         @"double": @"obj2Double",
@@ -5316,7 +5377,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"False": @"obj2False",
         @"float": @"obj2Float",
         @"for": @"obj2For",
-        @"goto": @"obj2Goto",
         @"false": @"theFalse",
     };
 }
@@ -5329,6 +5389,8 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
+        if (![dict[@"CultureInfo"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"date"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"DateFormatter"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"DateOnly"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"DateOnlyConverter"] isKindOfClass:NSDictionary.class]) return nil;
@@ -5348,9 +5410,11 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (![dict[@"del"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"delegate"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"delete"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"DeserializationFeature"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"dict"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"dictionary"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"didSet"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"DoubleNode"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"dummy"] isKindOfClass:NSNumber.class]) return nil;
         if ([dict[@"dummy"] doubleValue] != [dict[@"dummy"] longLongValue]) return nil;
         if (![dict[@"dynamic"] isKindOfClass:NSDictionary.class]) return nil;
@@ -5381,9 +5445,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (![dict[@"from_json"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"func"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"function"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"get"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"global"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"go"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"default"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"do"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"double"] isKindOfClass:NSDictionary.class]) return nil;
@@ -5393,9 +5454,12 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (![dict[@"False"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"float"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"for"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"goto"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"false"] isKindOfClass:NSDictionary.class]) return nil;
         [self setValuesForKeysWithDictionary:dict];
+        _cultureInfo = [QTCultureInfo fromJSONDictionary:(id)_cultureInfo];
+        if (!_cultureInfo && dict[@"CultureInfo"] && ![dict[@"CultureInfo"] isKindOfClass:NSNull.class]) return nil;
+        _date = [QTDate fromJSONDictionary:(id)_date];
+        if (!_date && dict[@"date"] && ![dict[@"date"] isKindOfClass:NSNull.class]) return nil;
         _dateFormatter = [QTDateFormatter fromJSONDictionary:(id)_dateFormatter];
         if (!_dateFormatter && dict[@"DateFormatter"] && ![dict[@"DateFormatter"] isKindOfClass:NSNull.class]) return nil;
         _dateOnly = [QTDateOnly fromJSONDictionary:(id)_dateOnly];
@@ -5434,12 +5498,16 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (!_delegate && dict[@"delegate"] && ![dict[@"delegate"] isKindOfClass:NSNull.class]) return nil;
         _delete = [QTDelete fromJSONDictionary:(id)_delete];
         if (!_delete && dict[@"delete"] && ![dict[@"delete"] isKindOfClass:NSNull.class]) return nil;
+        _deserializationFeature = [QTDeserializationFeature fromJSONDictionary:(id)_deserializationFeature];
+        if (!_deserializationFeature && dict[@"DeserializationFeature"] && ![dict[@"DeserializationFeature"] isKindOfClass:NSNull.class]) return nil;
         _dict = [QTDict fromJSONDictionary:(id)_dict];
         if (!_dict && dict[@"dict"] && ![dict[@"dict"] isKindOfClass:NSNull.class]) return nil;
         _dictionary = [QTDictionary fromJSONDictionary:(id)_dictionary];
         if (!_dictionary && dict[@"dictionary"] && ![dict[@"dictionary"] isKindOfClass:NSNull.class]) return nil;
         _didSet = [QTDidSet fromJSONDictionary:(id)_didSet];
         if (!_didSet && dict[@"didSet"] && ![dict[@"didSet"] isKindOfClass:NSNull.class]) return nil;
+        _doubleNode = [QTDoubleNode fromJSONDictionary:(id)_doubleNode];
+        if (!_doubleNode && dict[@"DoubleNode"] && ![dict[@"DoubleNode"] isKindOfClass:NSNull.class]) return nil;
         _dynamic = [QTDynamic fromJSONDictionary:(id)_dynamic];
         if (!_dynamic && dict[@"dynamic"] && ![dict[@"dynamic"] isKindOfClass:NSNull.class]) return nil;
         _dynamicCast = [QTDynamicCast fromJSONDictionary:(id)_dynamicCast];
@@ -5496,12 +5564,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (!_func && dict[@"func"] && ![dict[@"func"] isKindOfClass:NSNull.class]) return nil;
         _function = [QTFunction fromJSONDictionary:(id)_function];
         if (!_function && dict[@"function"] && ![dict[@"function"] isKindOfClass:NSNull.class]) return nil;
-        _get = [QTGet fromJSONDictionary:(id)_get];
-        if (!_get && dict[@"get"] && ![dict[@"get"] isKindOfClass:NSNull.class]) return nil;
-        _global = [QTGlobal fromJSONDictionary:(id)_global];
-        if (!_global && dict[@"global"] && ![dict[@"global"] isKindOfClass:NSNull.class]) return nil;
-        _go = [QTGo fromJSONDictionary:(id)_go];
-        if (!_go && dict[@"go"] && ![dict[@"go"] isKindOfClass:NSNull.class]) return nil;
         _obj2Default = [QTDefault fromJSONDictionary:(id)_obj2Default];
         if (!_obj2Default && dict[@"default"] && ![dict[@"default"] isKindOfClass:NSNull.class]) return nil;
         _obj2Do = [QTDo fromJSONDictionary:(id)_obj2Do];
@@ -5520,8 +5582,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (!_obj2Float && dict[@"float"] && ![dict[@"float"] isKindOfClass:NSNull.class]) return nil;
         _obj2For = [QTFor fromJSONDictionary:(id)_obj2For];
         if (!_obj2For && dict[@"for"] && ![dict[@"for"] isKindOfClass:NSNull.class]) return nil;
-        _obj2Goto = [QTGoto fromJSONDictionary:(id)_obj2Goto];
-        if (!_obj2Goto && dict[@"goto"] && ![dict[@"goto"] isKindOfClass:NSNull.class]) return nil;
         _theFalse = [QTFalseClass fromJSONDictionary:(id)_theFalse];
         if (!_theFalse && dict[@"false"] && ![dict[@"false"] isKindOfClass:NSNull.class]) return nil;
     }
@@ -5553,6 +5613,8 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
     }
 
     [dict addEntriesFromDictionary:@{
+        @"CultureInfo": [_cultureInfo JSONDictionary],
+        @"date": [_date JSONDictionary],
         @"DateFormatter": [_dateFormatter JSONDictionary],
         @"DateOnly": [_dateOnly JSONDictionary],
         @"DateOnlyConverter": [_dateOnlyConverter JSONDictionary],
@@ -5572,9 +5634,11 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"del": [_del JSONDictionary],
         @"delegate": [_delegate JSONDictionary],
         @"delete": [_delete JSONDictionary],
+        @"DeserializationFeature": [_deserializationFeature JSONDictionary],
         @"dict": [_dict JSONDictionary],
         @"dictionary": [_dictionary JSONDictionary],
         @"didSet": [_didSet JSONDictionary],
+        @"DoubleNode": [_doubleNode JSONDictionary],
         @"dynamic": [_dynamic JSONDictionary],
         @"dynamic_cast": [_dynamicCast JSONDictionary],
         @"elif": [_elif JSONDictionary],
@@ -5603,9 +5667,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"from_json": [_fromJSON JSONDictionary],
         @"func": [_func JSONDictionary],
         @"function": [_function JSONDictionary],
-        @"get": [_get JSONDictionary],
-        @"global": [_global JSONDictionary],
-        @"go": [_go JSONDictionary],
         @"default": [_obj2Default JSONDictionary],
         @"do": [_obj2Do JSONDictionary],
         @"double": [_obj2Double JSONDictionary],
@@ -5615,7 +5676,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"False": [_obj2False JSONDictionary],
         @"float": [_obj2Float JSONDictionary],
         @"for": [_obj2For JSONDictionary],
-        @"goto": [_obj2Goto JSONDictionary],
         @"false": [_theFalse JSONDictionary],
     }];
 
@@ -5623,25 +5683,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTDateFormatter
+@implementation QTCultureInfo
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"DateFormatter": @"dateFormatter",
+        @"CultureInfo": @"cultureInfo",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTDateFormatter alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTCultureInfo alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"DateFormatter"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"DateFormatter"] doubleValue] != [dict[@"DateFormatter"] longLongValue]) return nil;
+        if (![dict[@"CultureInfo"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"CultureInfo"] doubleValue] != [dict[@"CultureInfo"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -5649,22 +5709,22 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTDateFormatter.properties[key];
+    id resolved = QTCultureInfo.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTDateFormatter.properties[key];
+    id resolved = QTCultureInfo.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTDateFormatter.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTCultureInfo.properties.allValues] mutableCopy];
 
-    for (id jsonName in QTDateFormatter.properties) {
-        id propertyName = QTDateFormatter.properties[jsonName];
+    for (id jsonName in QTCultureInfo.properties) {
+        id propertyName = QTCultureInfo.properties[jsonName];
         if (![jsonName isEqualToString:propertyName]) {
             dict[jsonName] = dict[propertyName];
             [dict removeObjectForKey:propertyName];
@@ -5675,25 +5735,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTDateOnly
+@implementation QTDate
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"DateOnly": @"dateOnly",
+        @"date": @"date",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTDateOnly alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTDate alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"DateOnly"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"DateOnly"] doubleValue] != [dict[@"DateOnly"] longLongValue]) return nil;
+        if (![dict[@"date"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"date"] doubleValue] != [dict[@"date"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -5701,38 +5761,132 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTDateOnly.properties[key];
+    id resolved = QTDate.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTDateOnly.properties[key];
+    id resolved = QTDate.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTDateOnly.properties.allValues] mutableCopy];
-
-    for (id jsonName in QTDateOnly.properties) {
-        id propertyName = QTDateOnly.properties[jsonName];
-        if (![jsonName isEqualToString:propertyName]) {
-            dict[jsonName] = dict[propertyName];
-            [dict removeObjectForKey:propertyName];
-        }
-    }
-
-    return dict;
+    return [self dictionaryWithValuesForKeys:QTDate.properties.allValues];
 }
 @end
 
-@implementation QTDateOnlyConverter
+@implementation QTDateFormatter
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"DateOnlyConverter": @"dateOnlyConverter",
+        @"DateFormatter": @"dateFormatter",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTDateFormatter alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"DateFormatter"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"DateFormatter"] doubleValue] != [dict[@"DateFormatter"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTDateFormatter.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTDateFormatter.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    id dict = [[self dictionaryWithValuesForKeys:QTDateFormatter.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTDateFormatter.properties) {
+        id propertyName = QTDateFormatter.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
+}
+@end
+
+@implementation QTDateOnly
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"DateOnly": @"dateOnly",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTDateOnly alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"DateOnly"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"DateOnly"] doubleValue] != [dict[@"DateOnly"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTDateOnly.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTDateOnly.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    id dict = [[self dictionaryWithValuesForKeys:QTDateOnly.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTDateOnly.properties) {
+        id propertyName = QTDateOnly.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
+}
+@end
+
+@implementation QTDateOnlyConverter
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"DateOnlyConverter": @"dateOnlyConverter",
     };
 }
 
@@ -6511,6 +6665,58 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTDeserializationFeature
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"DeserializationFeature": @"deserializationFeature",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTDeserializationFeature alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"DeserializationFeature"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"DeserializationFeature"] doubleValue] != [dict[@"DeserializationFeature"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTDeserializationFeature.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTDeserializationFeature.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    id dict = [[self dictionaryWithValuesForKeys:QTDeserializationFeature.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTDeserializationFeature.properties) {
+        id propertyName = QTDeserializationFeature.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
+}
+@end
+
 @implementation QTDict
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -6637,6 +6843,58 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTDoubleNode
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"DoubleNode": @"doubleNode",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTDoubleNode alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"DoubleNode"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"DoubleNode"] doubleValue] != [dict[@"DoubleNode"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTDoubleNode.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTDoubleNode.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    id dict = [[self dictionaryWithValuesForKeys:QTDoubleNode.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTDoubleNode.properties) {
+        id propertyName = QTDoubleNode.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
+}
+@end
+
 @implementation QTDynamic
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -7887,25 +8145,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTGet
+@implementation QTDefault
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"get": @"get",
+        @"default": @"defaultDefault",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTGet alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTDefault alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"get"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"get"] doubleValue] != [dict[@"get"] longLongValue]) return nil;
+        if (![dict[@"default"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"default"] doubleValue] != [dict[@"default"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -7913,41 +8171,51 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTGet.properties[key];
+    id resolved = QTDefault.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTGet.properties[key];
+    id resolved = QTDefault.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTGet.properties.allValues];
+    id dict = [[self dictionaryWithValuesForKeys:QTDefault.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTDefault.properties) {
+        id propertyName = QTDefault.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
 }
 @end
 
-@implementation QTGlobal
+@implementation QTDo
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"global": @"global",
+        @"do": @"doDo",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTGlobal alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTDo alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"global"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"global"] doubleValue] != [dict[@"global"] longLongValue]) return nil;
+        if (![dict[@"do"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"do"] doubleValue] != [dict[@"do"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -7955,41 +8223,51 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTGlobal.properties[key];
+    id resolved = QTDo.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTGlobal.properties[key];
+    id resolved = QTDo.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTGlobal.properties.allValues];
+    id dict = [[self dictionaryWithValuesForKeys:QTDo.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTDo.properties) {
+        id propertyName = QTDo.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
 }
 @end
 
-@implementation QTGo
+@implementation QTDouble
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"go": @"go",
+        @"double": @"doubleDouble",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTGo alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTDouble alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"go"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"go"] doubleValue] != [dict[@"go"] longLongValue]) return nil;
+        if (![dict[@"double"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"double"] doubleValue] != [dict[@"double"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -7997,159 +8275,13 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTGo.properties[key];
+    id resolved = QTDouble.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTGo.properties[key];
-    if (resolved) [super setValue:@(0) forKey:resolved];
-}
-
-- (NSDictionary *)JSONDictionary
-{
-    return [self dictionaryWithValuesForKeys:QTGo.properties.allValues];
-}
-@end
-
-@implementation QTDefault
-+ (NSDictionary<NSString *, NSString *> *)properties
-{
-    static NSDictionary<NSString *, NSString *> *properties;
-    return properties = properties ? properties : @{
-        @"default": @"defaultDefault",
-    };
-}
-
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict
-{
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTDefault alloc] initWithJSONDictionary:dict] : nil;
-}
-
-- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
-{
-    if (self = [super init]) {
-        if (![dict[@"default"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"default"] doubleValue] != [dict[@"default"] longLongValue]) return nil;
-        [self setValuesForKeysWithDictionary:dict];
-    }
-    return self;
-}
-
-- (void)setValue:(nullable id)value forKey:(NSString *)key
-{
-    id resolved = QTDefault.properties[key];
-    if (resolved) [super setValue:value forKey:resolved];
-}
-
-- (void)setNilValueForKey:(NSString *)key
-{
-    id resolved = QTDefault.properties[key];
-    if (resolved) [super setValue:@(0) forKey:resolved];
-}
-
-- (NSDictionary *)JSONDictionary
-{
-    id dict = [[self dictionaryWithValuesForKeys:QTDefault.properties.allValues] mutableCopy];
-
-    for (id jsonName in QTDefault.properties) {
-        id propertyName = QTDefault.properties[jsonName];
-        if (![jsonName isEqualToString:propertyName]) {
-            dict[jsonName] = dict[propertyName];
-            [dict removeObjectForKey:propertyName];
-        }
-    }
-
-    return dict;
-}
-@end
-
-@implementation QTDo
-+ (NSDictionary<NSString *, NSString *> *)properties
-{
-    static NSDictionary<NSString *, NSString *> *properties;
-    return properties = properties ? properties : @{
-        @"do": @"doDo",
-    };
-}
-
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict
-{
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTDo alloc] initWithJSONDictionary:dict] : nil;
-}
-
-- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
-{
-    if (self = [super init]) {
-        if (![dict[@"do"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"do"] doubleValue] != [dict[@"do"] longLongValue]) return nil;
-        [self setValuesForKeysWithDictionary:dict];
-    }
-    return self;
-}
-
-- (void)setValue:(nullable id)value forKey:(NSString *)key
-{
-    id resolved = QTDo.properties[key];
-    if (resolved) [super setValue:value forKey:resolved];
-}
-
-- (void)setNilValueForKey:(NSString *)key
-{
-    id resolved = QTDo.properties[key];
-    if (resolved) [super setValue:@(0) forKey:resolved];
-}
-
-- (NSDictionary *)JSONDictionary
-{
-    id dict = [[self dictionaryWithValuesForKeys:QTDo.properties.allValues] mutableCopy];
-
-    for (id jsonName in QTDo.properties) {
-        id propertyName = QTDo.properties[jsonName];
-        if (![jsonName isEqualToString:propertyName]) {
-            dict[jsonName] = dict[propertyName];
-            [dict removeObjectForKey:propertyName];
-        }
-    }
-
-    return dict;
-}
-@end
-
-@implementation QTDouble
-+ (NSDictionary<NSString *, NSString *> *)properties
-{
-    static NSDictionary<NSString *, NSString *> *properties;
-    return properties = properties ? properties : @{
-        @"double": @"doubleDouble",
-    };
-}
-
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict
-{
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTDouble alloc] initWithJSONDictionary:dict] : nil;
-}
-
-- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
-{
-    if (self = [super init]) {
-        if (![dict[@"double"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"double"] doubleValue] != [dict[@"double"] longLongValue]) return nil;
-        [self setValuesForKeysWithDictionary:dict];
-    }
-    return self;
-}
-
-- (void)setValue:(nullable id)value forKey:(NSString *)key
-{
-    id resolved = QTDouble.properties[key];
-    if (resolved) [super setValue:value forKey:resolved];
-}
-
-- (void)setNilValueForKey:(NSString *)key
-{
-    id resolved = QTDouble.properties[key];
+    id resolved = QTDouble.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
@@ -8481,58 +8613,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTGoto
-+ (NSDictionary<NSString *, NSString *> *)properties
-{
-    static NSDictionary<NSString *, NSString *> *properties;
-    return properties = properties ? properties : @{
-        @"goto": @"gotoGoto",
-    };
-}
-
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict
-{
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTGoto alloc] initWithJSONDictionary:dict] : nil;
-}
-
-- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
-{
-    if (self = [super init]) {
-        if (![dict[@"goto"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"goto"] doubleValue] != [dict[@"goto"] longLongValue]) return nil;
-        [self setValuesForKeysWithDictionary:dict];
-    }
-    return self;
-}
-
-- (void)setValue:(nullable id)value forKey:(NSString *)key
-{
-    id resolved = QTGoto.properties[key];
-    if (resolved) [super setValue:value forKey:resolved];
-}
-
-- (void)setNilValueForKey:(NSString *)key
-{
-    id resolved = QTGoto.properties[key];
-    if (resolved) [super setValue:@(0) forKey:resolved];
-}
-
-- (NSDictionary *)JSONDictionary
-{
-    id dict = [[self dictionaryWithValuesForKeys:QTGoto.properties.allValues] mutableCopy];
-
-    for (id jsonName in QTGoto.properties) {
-        id propertyName = QTGoto.properties[jsonName];
-        if (![jsonName isEqualToString:propertyName]) {
-            dict[jsonName] = dict[propertyName];
-            [dict removeObjectForKey:propertyName];
-        }
-    }
-
-    return dict;
-}
-@end
-
 @implementation QTFalseClass
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -8591,6 +8671,9 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
         @"dummy": @"dummy",
+        @"get": @"get",
+        @"global": @"global",
+        @"go": @"go",
         @"guard": @"guard",
         @"hasOwnProperty": @"hasOwnProperty",
         @"Hashable": @"hashable",
@@ -8605,6 +8688,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"infix": @"infix",
         @"inout": @"inout",
         @"instanceof": @"instanceof",
+        @"IntNode": @"intNode",
         @"interface": @"interface",
         @"internal": @"internal",
         @"is": @"is",
@@ -8636,6 +8720,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"list": @"list",
         @"Locale": @"locale",
         @"lock": @"lock",
+        @"LongNode": @"longNode",
         @"map": @"map",
         @"MapEntry": @"mapEntry",
         @"metadata_property_handling": @"metadataPropertyHandling",
@@ -8643,18 +8728,13 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"mutable": @"mutable",
         @"mutating": @"mutating",
         @"namespace": @"namespace",
-        @"native": @"native",
-        @"newtonsoft": @"newtonsoft",
-        @"NO": @"no",
-        @"noexcept": @"noexcept",
+        @"goto": @"obj3Goto",
         @"if": @"obj3If",
         @"inline": @"obj3Inline",
         @"int": @"obj3Int",
         @"long": @"obj3Long",
-        @"nil": @"obj3Nil",
         @"hashCode": @"theHashCode",
         @"init": @"theInit",
-        @"new": @"theNew",
     };
 }
 
@@ -8668,6 +8748,9 @@ 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[@"get"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"global"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"go"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"guard"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"hasOwnProperty"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"Hashable"] isKindOfClass:NSDictionary.class]) return nil;
@@ -8682,6 +8765,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (![dict[@"infix"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"inout"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"instanceof"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"IntNode"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"interface"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"internal"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"is"] isKindOfClass:NSDictionary.class]) return nil;
@@ -8713,6 +8797,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (![dict[@"list"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"Locale"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"lock"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"LongNode"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"map"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"MapEntry"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"metadata_property_handling"] isKindOfClass:NSDictionary.class]) return nil;
@@ -8720,19 +8805,20 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (![dict[@"mutable"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"mutating"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"namespace"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"native"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"newtonsoft"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"NO"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"noexcept"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"goto"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"if"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"inline"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"int"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"long"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"nil"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"hashCode"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"init"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"new"] isKindOfClass:NSDictionary.class]) return nil;
         [self setValuesForKeysWithDictionary:dict];
+        _get = [QTGet fromJSONDictionary:(id)_get];
+        if (!_get && dict[@"get"] && ![dict[@"get"] isKindOfClass:NSNull.class]) return nil;
+        _global = [QTGlobal fromJSONDictionary:(id)_global];
+        if (!_global && dict[@"global"] && ![dict[@"global"] isKindOfClass:NSNull.class]) return nil;
+        _go = [QTGo fromJSONDictionary:(id)_go];
+        if (!_go && dict[@"go"] && ![dict[@"go"] isKindOfClass:NSNull.class]) return nil;
         _guard = [QTGuard fromJSONDictionary:(id)_guard];
         if (!_guard && dict[@"guard"] && ![dict[@"guard"] isKindOfClass:NSNull.class]) return nil;
         _hasOwnProperty = [QTHasOwnProperty fromJSONDictionary:(id)_hasOwnProperty];
@@ -8761,6 +8847,8 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (!_inout && dict[@"inout"] && ![dict[@"inout"] isKindOfClass:NSNull.class]) return nil;
         _instanceof = [QTInstanceof fromJSONDictionary:(id)_instanceof];
         if (!_instanceof && dict[@"instanceof"] && ![dict[@"instanceof"] isKindOfClass:NSNull.class]) return nil;
+        _intNode = [QTIntNode fromJSONDictionary:(id)_intNode];
+        if (!_intNode && dict[@"IntNode"] && ![dict[@"IntNode"] isKindOfClass:NSNull.class]) return nil;
         _interface = [QTInterface fromJSONDictionary:(id)_interface];
         if (!_interface && dict[@"interface"] && ![dict[@"interface"] isKindOfClass:NSNull.class]) return nil;
         _internal = [QTInternal fromJSONDictionary:(id)_internal];
@@ -8823,6 +8911,8 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (!_locale && dict[@"Locale"] && ![dict[@"Locale"] isKindOfClass:NSNull.class]) return nil;
         _lock = [QTLock fromJSONDictionary:(id)_lock];
         if (!_lock && dict[@"lock"] && ![dict[@"lock"] isKindOfClass:NSNull.class]) return nil;
+        _longNode = [QTLongNode fromJSONDictionary:(id)_longNode];
+        if (!_longNode && dict[@"LongNode"] && ![dict[@"LongNode"] isKindOfClass:NSNull.class]) return nil;
         _map = [QTMap fromJSONDictionary:(id)_map];
         if (!_map && dict[@"map"] && ![dict[@"map"] isKindOfClass:NSNull.class]) return nil;
         _mapEntry = [QTMapEntry fromJSONDictionary:(id)_mapEntry];
@@ -8837,14 +8927,8 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (!_mutating && dict[@"mutating"] && ![dict[@"mutating"] isKindOfClass:NSNull.class]) return nil;
         _namespace = [QTNamespace fromJSONDictionary:(id)_namespace];
         if (!_namespace && dict[@"namespace"] && ![dict[@"namespace"] isKindOfClass:NSNull.class]) return nil;
-        _native = [QTNative fromJSONDictionary:(id)_native];
-        if (!_native && dict[@"native"] && ![dict[@"native"] isKindOfClass:NSNull.class]) return nil;
-        _newtonsoft = [QTNewtonsoft fromJSONDictionary:(id)_newtonsoft];
-        if (!_newtonsoft && dict[@"newtonsoft"] && ![dict[@"newtonsoft"] isKindOfClass:NSNull.class]) return nil;
-        _no = [QTNo fromJSONDictionary:(id)_no];
-        if (!_no && dict[@"NO"] && ![dict[@"NO"] isKindOfClass:NSNull.class]) return nil;
-        _noexcept = [QTNoexcept fromJSONDictionary:(id)_noexcept];
-        if (!_noexcept && dict[@"noexcept"] && ![dict[@"noexcept"] isKindOfClass:NSNull.class]) return nil;
+        _obj3Goto = [QTGoto fromJSONDictionary:(id)_obj3Goto];
+        if (!_obj3Goto && dict[@"goto"] && ![dict[@"goto"] isKindOfClass:NSNull.class]) return nil;
         _obj3If = [QTIf fromJSONDictionary:(id)_obj3If];
         if (!_obj3If && dict[@"if"] && ![dict[@"if"] isKindOfClass:NSNull.class]) return nil;
         _obj3Inline = [QTInline fromJSONDictionary:(id)_obj3Inline];
@@ -8853,14 +8937,10 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (!_obj3Int && dict[@"int"] && ![dict[@"int"] isKindOfClass:NSNull.class]) return nil;
         _obj3Long = [QTLong fromJSONDictionary:(id)_obj3Long];
         if (!_obj3Long && dict[@"long"] && ![dict[@"long"] isKindOfClass:NSNull.class]) return nil;
-        _obj3Nil = [QTNil fromJSONDictionary:(id)_obj3Nil];
-        if (!_obj3Nil && dict[@"nil"] && ![dict[@"nil"] isKindOfClass:NSNull.class]) return nil;
         _theHashCode = [QTHashCode fromJSONDictionary:(id)_theHashCode];
         if (!_theHashCode && dict[@"hashCode"] && ![dict[@"hashCode"] isKindOfClass:NSNull.class]) return nil;
         _theInit = [QTInit fromJSONDictionary:(id)_theInit];
         if (!_theInit && dict[@"init"] && ![dict[@"init"] isKindOfClass:NSNull.class]) return nil;
-        _theNew = [QTNew fromJSONDictionary:(id)_theNew];
-        if (!_theNew && dict[@"new"] && ![dict[@"new"] isKindOfClass:NSNull.class]) return nil;
     }
     return self;
 }
@@ -8890,6 +8970,9 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
     }
 
     [dict addEntriesFromDictionary:@{
+        @"get": [_get JSONDictionary],
+        @"global": [_global JSONDictionary],
+        @"go": [_go JSONDictionary],
         @"guard": [_guard JSONDictionary],
         @"hasOwnProperty": [_hasOwnProperty JSONDictionary],
         @"Hashable": [_hashable JSONDictionary],
@@ -8904,6 +8987,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"infix": [_infix JSONDictionary],
         @"inout": [_inout JSONDictionary],
         @"instanceof": [_instanceof JSONDictionary],
+        @"IntNode": [_intNode JSONDictionary],
         @"interface": [_interface JSONDictionary],
         @"internal": [_internal JSONDictionary],
         @"is": [_is JSONDictionary],
@@ -8935,6 +9019,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"list": [_list JSONDictionary],
         @"Locale": [_locale JSONDictionary],
         @"lock": [_lock JSONDictionary],
+        @"LongNode": [_longNode JSONDictionary],
         @"map": [_map JSONDictionary],
         @"MapEntry": [_mapEntry JSONDictionary],
         @"metadata_property_handling": [_metadataPropertyHandling JSONDictionary],
@@ -8942,43 +9027,38 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"mutable": [_mutable JSONDictionary],
         @"mutating": [_mutating JSONDictionary],
         @"namespace": [_namespace JSONDictionary],
-        @"native": [_native JSONDictionary],
-        @"newtonsoft": [_newtonsoft JSONDictionary],
-        @"NO": [_no JSONDictionary],
-        @"noexcept": [_noexcept JSONDictionary],
+        @"goto": [_obj3Goto JSONDictionary],
         @"if": [_obj3If JSONDictionary],
         @"inline": [_obj3Inline JSONDictionary],
         @"int": [_obj3Int JSONDictionary],
         @"long": [_obj3Long JSONDictionary],
-        @"nil": [_obj3Nil JSONDictionary],
         @"hashCode": [_theHashCode JSONDictionary],
         @"init": [_theInit JSONDictionary],
-        @"new": [_theNew JSONDictionary],
     }];
 
     return dict;
 }
 @end
 
-@implementation QTGuard
+@implementation QTGet
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"guard": @"guard",
+        @"get": @"get",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTGuard alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTGet alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"guard"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"guard"] doubleValue] != [dict[@"guard"] longLongValue]) return nil;
+        if (![dict[@"get"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"get"] doubleValue] != [dict[@"get"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -8986,23 +9066,149 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTGuard.properties[key];
+    id resolved = QTGet.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTGuard.properties[key];
+    id resolved = QTGet.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTGuard.properties.allValues];
+    return [self dictionaryWithValuesForKeys:QTGet.properties.allValues];
 }
 @end
 
-@implementation QTHasOwnProperty
+@implementation QTGlobal
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"global": @"global",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTGlobal alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"global"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"global"] doubleValue] != [dict[@"global"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTGlobal.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTGlobal.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTGlobal.properties.allValues];
+}
+@end
+
+@implementation QTGo
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"go": @"go",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTGo alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"go"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"go"] doubleValue] != [dict[@"go"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTGo.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTGo.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTGo.properties.allValues];
+}
+@end
+
+@implementation QTGuard
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"guard": @"guard",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTGuard alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"guard"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"guard"] doubleValue] != [dict[@"guard"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTGuard.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTGuard.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTGuard.properties.allValues];
+}
+@end
+
+@implementation QTHasOwnProperty
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
@@ -9588,6 +9794,58 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTIntNode
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"IntNode": @"intNode",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTIntNode alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"IntNode"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"IntNode"] doubleValue] != [dict[@"IntNode"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTIntNode.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTIntNode.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    id dict = [[self dictionaryWithValuesForKeys:QTIntNode.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTIntNode.properties) {
+        id propertyName = QTIntNode.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
+}
+@end
+
 @implementation QTInterface
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -11059,6 +11317,58 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTLongNode
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"LongNode": @"longNode",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTLongNode alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"LongNode"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"LongNode"] doubleValue] != [dict[@"LongNode"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTLongNode.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTLongNode.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    id dict = [[self dictionaryWithValuesForKeys:QTLongNode.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTLongNode.properties) {
+        id propertyName = QTLongNode.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
+}
+@end
+
 @implementation QTMap
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -11373,25 +11683,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTNative
+@implementation QTGoto
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"native": @"native",
+        @"goto": @"gotoGoto",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTNative alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTGoto alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"native"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"native"] doubleValue] != [dict[@"native"] longLongValue]) return nil;
+        if (![dict[@"goto"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"goto"] doubleValue] != [dict[@"goto"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -11399,41 +11709,51 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTNative.properties[key];
+    id resolved = QTGoto.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTNative.properties[key];
+    id resolved = QTGoto.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTNative.properties.allValues];
+    id dict = [[self dictionaryWithValuesForKeys:QTGoto.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTGoto.properties) {
+        id propertyName = QTGoto.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
 }
 @end
 
-@implementation QTNewtonsoft
+@implementation QTIf
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"newtonsoft": @"newtonsoft",
+        @"if": @"ifIf",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTNewtonsoft alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTIf alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"newtonsoft"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"newtonsoft"] doubleValue] != [dict[@"newtonsoft"] longLongValue]) return nil;
+        if (![dict[@"if"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"if"] doubleValue] != [dict[@"if"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -11441,155 +11761,19 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTNewtonsoft.properties[key];
+    id resolved = QTIf.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTNewtonsoft.properties[key];
+    id resolved = QTIf.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTNewtonsoft.properties.allValues];
-}
-@end
-
-@implementation QTNo
-+ (NSDictionary<NSString *, NSString *> *)properties
-{
-    static NSDictionary<NSString *, NSString *> *properties;
-    return properties = properties ? properties : @{
-        @"NO": @"no",
-    };
-}
-
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict
-{
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTNo alloc] initWithJSONDictionary:dict] : nil;
-}
-
-- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
-{
-    if (self = [super init]) {
-        if (![dict[@"NO"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"NO"] doubleValue] != [dict[@"NO"] longLongValue]) return nil;
-        [self setValuesForKeysWithDictionary:dict];
-    }
-    return self;
-}
-
-- (void)setValue:(nullable id)value forKey:(NSString *)key
-{
-    id resolved = QTNo.properties[key];
-    if (resolved) [super setValue:value forKey:resolved];
-}
-
-- (void)setNilValueForKey:(NSString *)key
-{
-    id resolved = QTNo.properties[key];
-    if (resolved) [super setValue:@(0) forKey:resolved];
-}
-
-- (NSDictionary *)JSONDictionary
-{
-    id dict = [[self dictionaryWithValuesForKeys:QTNo.properties.allValues] mutableCopy];
-
-    for (id jsonName in QTNo.properties) {
-        id propertyName = QTNo.properties[jsonName];
-        if (![jsonName isEqualToString:propertyName]) {
-            dict[jsonName] = dict[propertyName];
-            [dict removeObjectForKey:propertyName];
-        }
-    }
-
-    return dict;
-}
-@end
-
-@implementation QTNoexcept
-+ (NSDictionary<NSString *, NSString *> *)properties
-{
-    static NSDictionary<NSString *, NSString *> *properties;
-    return properties = properties ? properties : @{
-        @"noexcept": @"noexcept",
-    };
-}
-
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict
-{
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTNoexcept alloc] initWithJSONDictionary:dict] : nil;
-}
-
-- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
-{
-    if (self = [super init]) {
-        if (![dict[@"noexcept"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"noexcept"] doubleValue] != [dict[@"noexcept"] longLongValue]) return nil;
-        [self setValuesForKeysWithDictionary:dict];
-    }
-    return self;
-}
-
-- (void)setValue:(nullable id)value forKey:(NSString *)key
-{
-    id resolved = QTNoexcept.properties[key];
-    if (resolved) [super setValue:value forKey:resolved];
-}
-
-- (void)setNilValueForKey:(NSString *)key
-{
-    id resolved = QTNoexcept.properties[key];
-    if (resolved) [super setValue:@(0) forKey:resolved];
-}
-
-- (NSDictionary *)JSONDictionary
-{
-    return [self dictionaryWithValuesForKeys:QTNoexcept.properties.allValues];
-}
-@end
-
-@implementation QTIf
-+ (NSDictionary<NSString *, NSString *> *)properties
-{
-    static NSDictionary<NSString *, NSString *> *properties;
-    return properties = properties ? properties : @{
-        @"if": @"ifIf",
-    };
-}
-
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict
-{
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTIf alloc] initWithJSONDictionary:dict] : nil;
-}
-
-- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
-{
-    if (self = [super init]) {
-        if (![dict[@"if"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"if"] doubleValue] != [dict[@"if"] longLongValue]) return nil;
-        [self setValuesForKeysWithDictionary:dict];
-    }
-    return self;
-}
-
-- (void)setValue:(nullable id)value forKey:(NSString *)key
-{
-    id resolved = QTIf.properties[key];
-    if (resolved) [super setValue:value forKey:resolved];
-}
-
-- (void)setNilValueForKey:(NSString *)key
-{
-    id resolved = QTIf.properties[key];
-    if (resolved) [super setValue:@(0) forKey:resolved];
-}
-
-- (NSDictionary *)JSONDictionary
-{
-    id dict = [[self dictionaryWithValuesForKeys:QTIf.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTIf.properties.allValues] mutableCopy];
 
     for (id jsonName in QTIf.properties) {
         id propertyName = QTIf.properties[jsonName];
@@ -11759,58 +11943,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTNil
-+ (NSDictionary<NSString *, NSString *> *)properties
-{
-    static NSDictionary<NSString *, NSString *> *properties;
-    return properties = properties ? properties : @{
-        @"nil": @"nilNil",
-    };
-}
-
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict
-{
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTNil alloc] initWithJSONDictionary:dict] : nil;
-}
-
-- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
-{
-    if (self = [super init]) {
-        if (![dict[@"nil"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"nil"] doubleValue] != [dict[@"nil"] longLongValue]) return nil;
-        [self setValuesForKeysWithDictionary:dict];
-    }
-    return self;
-}
-
-- (void)setValue:(nullable id)value forKey:(NSString *)key
-{
-    id resolved = QTNil.properties[key];
-    if (resolved) [super setValue:value forKey:resolved];
-}
-
-- (void)setNilValueForKey:(NSString *)key
-{
-    id resolved = QTNil.properties[key];
-    if (resolved) [super setValue:@(0) forKey:resolved];
-}
-
-- (NSDictionary *)JSONDictionary
-{
-    id dict = [[self dictionaryWithValuesForKeys:QTNil.properties.allValues] mutableCopy];
-
-    for (id jsonName in QTNil.properties) {
-        id propertyName = QTNil.properties[jsonName];
-        if (![jsonName isEqualToString:propertyName]) {
-            dict[jsonName] = dict[propertyName];
-            [dict removeObjectForKey:propertyName];
-        }
-    }
-
-    return dict;
-}
-@end
-
 @implementation QTHashCode
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -11915,65 +12047,17 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTNew
-+ (NSDictionary<NSString *, NSString *> *)properties
-{
-    static NSDictionary<NSString *, NSString *> *properties;
-    return properties = properties ? properties : @{
-        @"new": @"theNew",
-    };
-}
-
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict
-{
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTNew alloc] initWithJSONDictionary:dict] : nil;
-}
-
-- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
-{
-    if (self = [super init]) {
-        if (![dict[@"new"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"new"] doubleValue] != [dict[@"new"] longLongValue]) return nil;
-        [self setValuesForKeysWithDictionary:dict];
-    }
-    return self;
-}
-
-- (void)setValue:(nullable id)value forKey:(NSString *)key
-{
-    id resolved = QTNew.properties[key];
-    if (resolved) [super setValue:value forKey:resolved];
-}
-
-- (void)setNilValueForKey:(NSString *)key
-{
-    id resolved = QTNew.properties[key];
-    if (resolved) [super setValue:@(0) forKey:resolved];
-}
-
-- (NSDictionary *)JSONDictionary
-{
-    id dict = [[self dictionaryWithValuesForKeys:QTNew.properties.allValues] mutableCopy];
-
-    for (id jsonName in QTNew.properties) {
-        id propertyName = QTNew.properties[jsonName];
-        if (![jsonName isEqualToString:propertyName]) {
-            dict[jsonName] = dict[propertyName];
-            [dict removeObjectForKey:propertyName];
-        }
-    }
-
-    return dict;
-}
-@end
-
 @implementation QTObj4
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
         @"dummy": @"dummy",
+        @"native": @"native",
+        @"newtonsoft": @"newtonsoft",
+        @"NO": @"no",
         @"noSuchMethod": @"noSuchMethod",
+        @"noexcept": @"noexcept",
         @"None": @"none",
         @"nonlocal": @"nonlocal",
         @"nonmutating": @"nonmutating",
@@ -11983,8 +12067,10 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"NSObject": @"nsObject",
         @"NSString": @"nsString",
         @"NULL": @"null",
+        @"NullNode": @"nullNode",
         @"nullptr": @"nullptr",
         @"number": @"number",
+        @"nil": @"obj4Nil",
         @"nonatomic": @"obj4Nonatomic",
         @"none": @"obj4None",
         @"null": @"obj4Null",
@@ -11992,9 +12078,9 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"register": @"obj4Register",
         @"restrict": @"obj4Restrict",
         @"retain": @"obj4Retain",
-        @"return": @"obj4Return",
         @"object": @"object",
         @"ObjectMapper": @"objectMapper",
+        @"ObjectNode": @"objectNode",
         @"of": @"of",
         @"oneway": @"oneway",
         @"open": @"open",
@@ -12030,13 +12116,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"required": @"required",
         @"requires": @"requires",
         @"rethrows": @"rethrows",
-        @"right": @"right",
-        @"runtimeType": @"runtimeType",
-        @"s": @"s",
-        @"sbyte": @"sbyte",
-        @"sealed": @"sealed",
-        @"SEL": @"sel",
-        @"select": @"select",
+        @"new": @"theNew",
     };
 }
 
@@ -12050,7 +12130,11 @@ 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[@"native"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"newtonsoft"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"NO"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"noSuchMethod"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"noexcept"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"None"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"nonlocal"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"nonmutating"] isKindOfClass:NSDictionary.class]) return nil;
@@ -12060,8 +12144,10 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (![dict[@"NSObject"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"NSString"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"NULL"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"NullNode"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"nullptr"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"number"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"nil"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"nonatomic"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"none"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"null"] isKindOfClass:NSDictionary.class]) return nil;
@@ -12069,9 +12155,9 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (![dict[@"register"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"restrict"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"retain"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"return"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"object"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"ObjectMapper"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"ObjectNode"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"of"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"oneway"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"open"] isKindOfClass:NSDictionary.class]) return nil;
@@ -12107,16 +12193,18 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (![dict[@"required"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"requires"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"rethrows"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"right"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"runtimeType"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"s"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"sbyte"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"sealed"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"SEL"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"select"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"new"] isKindOfClass:NSDictionary.class]) return nil;
         [self setValuesForKeysWithDictionary:dict];
+        _native = [QTNative fromJSONDictionary:(id)_native];
+        if (!_native && dict[@"native"] && ![dict[@"native"] isKindOfClass:NSNull.class]) return nil;
+        _newtonsoft = [QTNewtonsoft fromJSONDictionary:(id)_newtonsoft];
+        if (!_newtonsoft && dict[@"newtonsoft"] && ![dict[@"newtonsoft"] isKindOfClass:NSNull.class]) return nil;
+        _no = [QTNo fromJSONDictionary:(id)_no];
+        if (!_no && dict[@"NO"] && ![dict[@"NO"] isKindOfClass:NSNull.class]) return nil;
         _noSuchMethod = [QTNoSuchMethod fromJSONDictionary:(id)_noSuchMethod];
         if (!_noSuchMethod && dict[@"noSuchMethod"] && ![dict[@"noSuchMethod"] isKindOfClass:NSNull.class]) return nil;
+        _noexcept = [QTNoexcept fromJSONDictionary:(id)_noexcept];
+        if (!_noexcept && dict[@"noexcept"] && ![dict[@"noexcept"] isKindOfClass:NSNull.class]) return nil;
         _none = [QTNone fromJSONDictionary:(id)_none];
         if (!_none && dict[@"None"] && ![dict[@"None"] isKindOfClass:NSNull.class]) return nil;
         _nonlocal = [QTNonlocal fromJSONDictionary:(id)_nonlocal];
@@ -12135,10 +12223,14 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (!_nsString && dict[@"NSString"] && ![dict[@"NSString"] isKindOfClass:NSNull.class]) return nil;
         _null = [QTNull fromJSONDictionary:(id)_null];
         if (!_null && dict[@"NULL"] && ![dict[@"NULL"] isKindOfClass:NSNull.class]) return nil;
+        _nullNode = [QTNullNode fromJSONDictionary:(id)_nullNode];
+        if (!_nullNode && dict[@"NullNode"] && ![dict[@"NullNode"] isKindOfClass:NSNull.class]) return nil;
         _nullptr = [QTNullptr fromJSONDictionary:(id)_nullptr];
         if (!_nullptr && dict[@"nullptr"] && ![dict[@"nullptr"] isKindOfClass:NSNull.class]) return nil;
         _number = [QTNumber fromJSONDictionary:(id)_number];
         if (!_number && dict[@"number"] && ![dict[@"number"] isKindOfClass:NSNull.class]) return nil;
+        _obj4Nil = [QTNil fromJSONDictionary:(id)_obj4Nil];
+        if (!_obj4Nil && dict[@"nil"] && ![dict[@"nil"] isKindOfClass:NSNull.class]) return nil;
         _obj4Nonatomic = [QTNonatomic fromJSONDictionary:(id)_obj4Nonatomic];
         if (!_obj4Nonatomic && dict[@"nonatomic"] && ![dict[@"nonatomic"] isKindOfClass:NSNull.class]) return nil;
         _obj4None = [QTNoneClass fromJSONDictionary:(id)_obj4None];
@@ -12153,12 +12245,12 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (!_obj4Restrict && dict[@"restrict"] && ![dict[@"restrict"] isKindOfClass:NSNull.class]) return nil;
         _obj4Retain = [QTRetain fromJSONDictionary:(id)_obj4Retain];
         if (!_obj4Retain && dict[@"retain"] && ![dict[@"retain"] isKindOfClass:NSNull.class]) return nil;
-        _obj4Return = [QTReturn fromJSONDictionary:(id)_obj4Return];
-        if (!_obj4Return && dict[@"return"] && ![dict[@"return"] isKindOfClass:NSNull.class]) return nil;
         _object = [QTObject fromJSONDictionary:(id)_object];
         if (!_object && dict[@"object"] && ![dict[@"object"] isKindOfClass:NSNull.class]) return nil;
         _objectMapper = [QTObjectMapper fromJSONDictionary:(id)_objectMapper];
         if (!_objectMapper && dict[@"ObjectMapper"] && ![dict[@"ObjectMapper"] isKindOfClass:NSNull.class]) return nil;
+        _objectNode = [QTObjectNode fromJSONDictionary:(id)_objectNode];
+        if (!_objectNode && dict[@"ObjectNode"] && ![dict[@"ObjectNode"] isKindOfClass:NSNull.class]) return nil;
         _of = [QTOf fromJSONDictionary:(id)_of];
         if (!_of && dict[@"of"] && ![dict[@"of"] isKindOfClass:NSNull.class]) return nil;
         _oneway = [QTOneway fromJSONDictionary:(id)_oneway];
@@ -12229,20 +12321,8 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (!_requires && dict[@"requires"] && ![dict[@"requires"] isKindOfClass:NSNull.class]) return nil;
         _rethrows = [QTRethrows fromJSONDictionary:(id)_rethrows];
         if (!_rethrows && dict[@"rethrows"] && ![dict[@"rethrows"] isKindOfClass:NSNull.class]) return nil;
-        _right = [QTRight fromJSONDictionary:(id)_right];
-        if (!_right && dict[@"right"] && ![dict[@"right"] isKindOfClass:NSNull.class]) return nil;
-        _runtimeType = [QTRuntimeType fromJSONDictionary:(id)_runtimeType];
-        if (!_runtimeType && dict[@"runtimeType"] && ![dict[@"runtimeType"] isKindOfClass:NSNull.class]) return nil;
-        _s = [QTS fromJSONDictionary:(id)_s];
-        if (!_s && dict[@"s"] && ![dict[@"s"] isKindOfClass:NSNull.class]) return nil;
-        _sbyte = [QTSbyte fromJSONDictionary:(id)_sbyte];
-        if (!_sbyte && dict[@"sbyte"] && ![dict[@"sbyte"] isKindOfClass:NSNull.class]) return nil;
-        _sealed = [QTSealed fromJSONDictionary:(id)_sealed];
-        if (!_sealed && dict[@"sealed"] && ![dict[@"sealed"] isKindOfClass:NSNull.class]) return nil;
-        _sel = [QTSel fromJSONDictionary:(id)_sel];
-        if (!_sel && dict[@"SEL"] && ![dict[@"SEL"] isKindOfClass:NSNull.class]) return nil;
-        _select = [QTSelect fromJSONDictionary:(id)_select];
-        if (!_select && dict[@"select"] && ![dict[@"select"] isKindOfClass:NSNull.class]) return nil;
+        _theNew = [QTNew fromJSONDictionary:(id)_theNew];
+        if (!_theNew && dict[@"new"] && ![dict[@"new"] isKindOfClass:NSNull.class]) return nil;
     }
     return self;
 }
@@ -12272,7 +12352,11 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
     }
 
     [dict addEntriesFromDictionary:@{
+        @"native": [_native JSONDictionary],
+        @"newtonsoft": [_newtonsoft JSONDictionary],
+        @"NO": [_no JSONDictionary],
         @"noSuchMethod": [_noSuchMethod JSONDictionary],
+        @"noexcept": [_noexcept JSONDictionary],
         @"None": [_none JSONDictionary],
         @"nonlocal": [_nonlocal JSONDictionary],
         @"nonmutating": [_nonmutating JSONDictionary],
@@ -12282,8 +12366,10 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"NSObject": [_nsObject JSONDictionary],
         @"NSString": [_nsString JSONDictionary],
         @"NULL": [_null JSONDictionary],
+        @"NullNode": [_nullNode JSONDictionary],
         @"nullptr": [_nullptr JSONDictionary],
         @"number": [_number JSONDictionary],
+        @"nil": [_obj4Nil JSONDictionary],
         @"nonatomic": [_obj4Nonatomic JSONDictionary],
         @"none": [_obj4None JSONDictionary],
         @"null": [_obj4Null JSONDictionary],
@@ -12291,9 +12377,9 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"register": [_obj4Register JSONDictionary],
         @"restrict": [_obj4Restrict JSONDictionary],
         @"retain": [_obj4Retain JSONDictionary],
-        @"return": [_obj4Return JSONDictionary],
         @"object": [_object JSONDictionary],
         @"ObjectMapper": [_objectMapper JSONDictionary],
+        @"ObjectNode": [_objectNode JSONDictionary],
         @"of": [_of JSONDictionary],
         @"oneway": [_oneway JSONDictionary],
         @"open": [_open JSONDictionary],
@@ -12329,19 +12415,149 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"required": [_required JSONDictionary],
         @"requires": [_requires JSONDictionary],
         @"rethrows": [_rethrows JSONDictionary],
-        @"right": [_right JSONDictionary],
-        @"runtimeType": [_runtimeType JSONDictionary],
-        @"s": [_s JSONDictionary],
-        @"sbyte": [_sbyte JSONDictionary],
-        @"sealed": [_sealed JSONDictionary],
-        @"SEL": [_sel JSONDictionary],
-        @"select": [_select JSONDictionary],
+        @"new": [_theNew JSONDictionary],
     }];
 
     return dict;
 }
 @end
 
+@implementation QTNative
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"native": @"native",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTNative alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"native"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"native"] doubleValue] != [dict[@"native"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTNative.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTNative.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTNative.properties.allValues];
+}
+@end
+
+@implementation QTNewtonsoft
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"newtonsoft": @"newtonsoft",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTNewtonsoft alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"newtonsoft"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"newtonsoft"] doubleValue] != [dict[@"newtonsoft"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTNewtonsoft.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTNewtonsoft.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTNewtonsoft.properties.allValues];
+}
+@end
+
+@implementation QTNo
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"NO": @"no",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTNo alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"NO"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"NO"] doubleValue] != [dict[@"NO"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTNo.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTNo.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    id dict = [[self dictionaryWithValuesForKeys:QTNo.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTNo.properties) {
+        id propertyName = QTNo.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
+}
+@end
+
 @implementation QTNoSuchMethod
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -12384,6 +12600,48 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTNoexcept
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"noexcept": @"noexcept",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTNoexcept alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"noexcept"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"noexcept"] doubleValue] != [dict[@"noexcept"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTNoexcept.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTNoexcept.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTNoexcept.properties.allValues];
+}
+@end
+
 @implementation QTNone
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -12822,25 +13080,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTNullptr
+@implementation QTNullNode
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"nullptr": @"nullptr",
+        @"NullNode": @"nullNode",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTNullptr alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTNullNode alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"nullptr"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"nullptr"] doubleValue] != [dict[@"nullptr"] longLongValue]) return nil;
+        if (![dict[@"NullNode"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"NullNode"] doubleValue] != [dict[@"NullNode"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -12848,41 +13106,51 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTNullptr.properties[key];
+    id resolved = QTNullNode.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTNullptr.properties[key];
+    id resolved = QTNullNode.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTNullptr.properties.allValues];
+    id dict = [[self dictionaryWithValuesForKeys:QTNullNode.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTNullNode.properties) {
+        id propertyName = QTNullNode.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
 }
 @end
 
-@implementation QTNumber
+@implementation QTNullptr
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"number": @"number",
+        @"nullptr": @"nullptr",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTNumber alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTNullptr alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"number"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"number"] doubleValue] != [dict[@"number"] longLongValue]) return nil;
+        if (![dict[@"nullptr"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"nullptr"] doubleValue] != [dict[@"nullptr"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -12890,28 +13158,122 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTNumber.properties[key];
+    id resolved = QTNullptr.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTNumber.properties[key];
+    id resolved = QTNullptr.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTNumber.properties.allValues];
+    return [self dictionaryWithValuesForKeys:QTNullptr.properties.allValues];
 }
 @end
 
-@implementation QTNonatomic
+@implementation QTNumber
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"nonatomic": @"nonatomicNonatomic",
+        @"number": @"number",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTNumber alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"number"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"number"] doubleValue] != [dict[@"number"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTNumber.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTNumber.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTNumber.properties.allValues];
+}
+@end
+
+@implementation QTNil
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"nil": @"nilNil",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTNil alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"nil"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"nil"] doubleValue] != [dict[@"nil"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTNil.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTNil.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    id dict = [[self dictionaryWithValuesForKeys:QTNil.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTNil.properties) {
+        id propertyName = QTNil.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
+}
+@end
+
+@implementation QTNonatomic
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"nonatomic": @"nonatomicNonatomic",
     };
 }
 
@@ -13240,25 +13602,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTReturn
+@implementation QTObject
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"return": @"returnReturn",
+        @"object": @"object",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTReturn alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTObject alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"return"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"return"] doubleValue] != [dict[@"return"] longLongValue]) return nil;
+        if (![dict[@"object"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"object"] doubleValue] != [dict[@"object"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -13266,51 +13628,41 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTReturn.properties[key];
+    id resolved = QTObject.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTReturn.properties[key];
+    id resolved = QTObject.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTReturn.properties.allValues] mutableCopy];
-
-    for (id jsonName in QTReturn.properties) {
-        id propertyName = QTReturn.properties[jsonName];
-        if (![jsonName isEqualToString:propertyName]) {
-            dict[jsonName] = dict[propertyName];
-            [dict removeObjectForKey:propertyName];
-        }
-    }
-
-    return dict;
+    return [self dictionaryWithValuesForKeys:QTObject.properties.allValues];
 }
 @end
 
-@implementation QTObject
+@implementation QTObjectMapper
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"object": @"object",
+        @"ObjectMapper": @"objectMapper",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTObject alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTObjectMapper alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"object"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"object"] doubleValue] != [dict[@"object"] longLongValue]) return nil;
+        if (![dict[@"ObjectMapper"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"ObjectMapper"] doubleValue] != [dict[@"ObjectMapper"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -13318,41 +13670,51 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTObject.properties[key];
+    id resolved = QTObjectMapper.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTObject.properties[key];
+    id resolved = QTObjectMapper.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTObject.properties.allValues];
+    id dict = [[self dictionaryWithValuesForKeys:QTObjectMapper.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTObjectMapper.properties) {
+        id propertyName = QTObjectMapper.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
 }
 @end
 
-@implementation QTObjectMapper
+@implementation QTObjectNode
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"ObjectMapper": @"objectMapper",
+        @"ObjectNode": @"objectNode",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTObjectMapper alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTObjectNode alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"ObjectMapper"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"ObjectMapper"] doubleValue] != [dict[@"ObjectMapper"] longLongValue]) return nil;
+        if (![dict[@"ObjectNode"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"ObjectNode"] doubleValue] != [dict[@"ObjectNode"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -13360,22 +13722,22 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTObjectMapper.properties[key];
+    id resolved = QTObjectNode.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTObjectMapper.properties[key];
+    id resolved = QTObjectNode.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTObjectMapper.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTObjectNode.properties.allValues] mutableCopy];
 
-    for (id jsonName in QTObjectMapper.properties) {
-        id propertyName = QTObjectMapper.properties[jsonName];
+    for (id jsonName in QTObjectNode.properties) {
+        id propertyName = QTObjectNode.properties[jsonName];
         if (![jsonName isEqualToString:propertyName]) {
             dict[jsonName] = dict[propertyName];
             [dict removeObjectForKey:propertyName];
@@ -14896,25 +15258,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTRight
+@implementation QTNew
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"right": @"right",
+        @"new": @"theNew",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTRight alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTNew alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"right"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"right"] doubleValue] != [dict[@"right"] longLongValue]) return nil;
+        if (![dict[@"new"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"new"] doubleValue] != [dict[@"new"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -14922,167 +15284,478 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTRight.properties[key];
+    id resolved = QTNew.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTRight.properties[key];
+    id resolved = QTNew.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTRight.properties.allValues];
+    id dict = [[self dictionaryWithValuesForKeys:QTNew.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTNew.properties) {
+        id propertyName = QTNew.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
 }
 @end
 
-@implementation QTRuntimeType
+@implementation QTObj5
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
+        @"dummy": @"dummy",
+        @"return": @"obj5Return",
+        @"self": @"obj5Self",
+        @"short": @"obj5Short",
+        @"signed": @"obj5Signed",
+        @"sizeof": @"obj5Sizeof",
+        @"static": @"obj5Static",
+        @"struct": @"obj5Struct",
+        @"switch": @"obj5Switch",
+        @"True": @"obj5True",
+        @"type": @"obj5Type",
+        @"typedef": @"obj5Typedef",
+        @"typeof": @"obj5Typeof",
+        @"union": @"obj5Union",
+        @"right": @"right",
         @"runtimeType": @"runtimeType",
+        @"s": @"s",
+        @"sbyte": @"sbyte",
+        @"sealed": @"sealed",
+        @"SEL": @"sel",
+        @"select": @"select",
+        @"Self": @"self",
+        @"Sendable": @"sendable",
+        @"SerializationFeature": @"serializationFeature",
+        @"serialize": @"serialize",
+        @"SerializerProvider": @"serializerProvider",
+        @"set": @"set",
+        @"SimpleModule": @"simpleModule",
+        @"stackalloc": @"stackalloc",
+        @"Standards": @"standards",
+        @"static_assert": @"staticAssert",
+        @"static_cast": @"staticCast",
+        @"StdDeserializer": @"stdDeserializer",
+        @"StdSerializer": @"stdSerializer",
+        @"strictfp": @"strictfp",
+        @"string": @"string",
+        @"subscript": @"subscript",
+        @"super": @"super",
+        @"symbol": @"symbol",
+        @"synchronized": @"synchronized",
+        @"system": @"system",
+        @"template": @"template",
+        @"TextNode": @"textNode",
+        @"true": @"theTrue",
+        @"then": @"then",
+        @"this": @"this",
+        @"thread_local": @"threadLocal",
+        @"throw": @"throw",
+        @"throws": @"throws",
+        @"TimeOnly": @"timeOnly",
+        @"TimeOnlyConverter": @"timeOnlyConverter",
+        @"TimeZone": @"timeZone",
+        @"to_json": @"toJSON",
+        @"toString": @"toString",
+        @"top_level": @"topLevel",
+        @"transient": @"transient",
+        @"try": @"try",
+        @"Type": @"type",
+        @"typealias": @"typealias",
+        @"typeid": @"typeid",
+        @"typename": @"typename",
+        @"uint": @"uint",
+        @"ulong": @"ulong",
+        @"unchecked": @"unchecked",
+        @"undefined": @"undefined",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTRuntimeType alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTObj5 alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"runtimeType"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"runtimeType"] doubleValue] != [dict[@"runtimeType"] longLongValue]) return nil;
-        [self setValuesForKeysWithDictionary:dict];
-    }
-    return self;
-}
-
-- (void)setValue:(nullable id)value forKey:(NSString *)key
-{
-    id resolved = QTRuntimeType.properties[key];
-    if (resolved) [super setValue:value forKey:resolved];
-}
-
-- (void)setNilValueForKey:(NSString *)key
-{
-    id resolved = QTRuntimeType.properties[key];
-    if (resolved) [super setValue:@(0) forKey:resolved];
-}
-
-- (NSDictionary *)JSONDictionary
-{
-    return [self dictionaryWithValuesForKeys:QTRuntimeType.properties.allValues];
-}
-@end
-
-@implementation QTS
-+ (NSDictionary<NSString *, NSString *> *)properties
-{
-    static NSDictionary<NSString *, NSString *> *properties;
-    return properties = properties ? properties : @{
-        @"s": @"s",
-    };
-}
-
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict
-{
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTS alloc] initWithJSONDictionary:dict] : nil;
-}
-
-- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
-{
-    if (self = [super init]) {
-        if (![dict[@"s"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"s"] doubleValue] != [dict[@"s"] longLongValue]) return nil;
+        if (![dict[@"dummy"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"dummy"] doubleValue] != [dict[@"dummy"] longLongValue]) return nil;
+        if (![dict[@"return"] 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;
+        if (![dict[@"sizeof"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"static"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"struct"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"switch"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"True"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"type"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"typedef"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"typeof"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"union"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"right"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"runtimeType"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"s"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"sbyte"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"sealed"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"SEL"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"select"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"Self"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"Sendable"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"SerializationFeature"] 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;
+        if (![dict[@"SimpleModule"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"stackalloc"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"Standards"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"static_assert"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"static_cast"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"StdDeserializer"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"StdSerializer"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"strictfp"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"string"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"subscript"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"super"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"symbol"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"synchronized"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"system"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"template"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"TextNode"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"true"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"then"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"this"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"thread_local"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"throw"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"throws"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"TimeOnly"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"TimeOnlyConverter"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"TimeZone"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"to_json"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"toString"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"top_level"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"transient"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"try"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"Type"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"typealias"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"typeid"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"typename"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"uint"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"ulong"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"unchecked"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"undefined"] isKindOfClass:NSDictionary.class]) return nil;
         [self setValuesForKeysWithDictionary:dict];
+        _obj5Return = [QTReturn fromJSONDictionary:(id)_obj5Return];
+        if (!_obj5Return && dict[@"return"] && ![dict[@"return"] 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];
+        if (!_obj5Short && dict[@"short"] && ![dict[@"short"] isKindOfClass:NSNull.class]) return nil;
+        _obj5Signed = [QTSigned fromJSONDictionary:(id)_obj5Signed];
+        if (!_obj5Signed && dict[@"signed"] && ![dict[@"signed"] isKindOfClass:NSNull.class]) return nil;
+        _obj5Sizeof = [QTSizeof fromJSONDictionary:(id)_obj5Sizeof];
+        if (!_obj5Sizeof && dict[@"sizeof"] && ![dict[@"sizeof"] isKindOfClass:NSNull.class]) return nil;
+        _obj5Static = [QTStatic fromJSONDictionary:(id)_obj5Static];
+        if (!_obj5Static && dict[@"static"] && ![dict[@"static"] isKindOfClass:NSNull.class]) return nil;
+        _obj5Struct = [QTStruct fromJSONDictionary:(id)_obj5Struct];
+        if (!_obj5Struct && dict[@"struct"] && ![dict[@"struct"] isKindOfClass:NSNull.class]) return nil;
+        _obj5Switch = [QTSwitch fromJSONDictionary:(id)_obj5Switch];
+        if (!_obj5Switch && dict[@"switch"] && ![dict[@"switch"] isKindOfClass:NSNull.class]) return nil;
+        _obj5True = [QTTrue fromJSONDictionary:(id)_obj5True];
+        if (!_obj5True && dict[@"True"] && ![dict[@"True"] isKindOfClass:NSNull.class]) return nil;
+        _obj5Type = [QTTypeClass fromJSONDictionary:(id)_obj5Type];
+        if (!_obj5Type && dict[@"type"] && ![dict[@"type"] isKindOfClass:NSNull.class]) return nil;
+        _obj5Typedef = [QTTypedef fromJSONDictionary:(id)_obj5Typedef];
+        if (!_obj5Typedef && dict[@"typedef"] && ![dict[@"typedef"] isKindOfClass:NSNull.class]) return nil;
+        _obj5Typeof = [QTTypeof fromJSONDictionary:(id)_obj5Typeof];
+        if (!_obj5Typeof && dict[@"typeof"] && ![dict[@"typeof"] isKindOfClass:NSNull.class]) return nil;
+        _obj5Union = [QTUnion fromJSONDictionary:(id)_obj5Union];
+        if (!_obj5Union && dict[@"union"] && ![dict[@"union"] isKindOfClass:NSNull.class]) return nil;
+        _right = [QTRight fromJSONDictionary:(id)_right];
+        if (!_right && dict[@"right"] && ![dict[@"right"] isKindOfClass:NSNull.class]) return nil;
+        _runtimeType = [QTRuntimeType fromJSONDictionary:(id)_runtimeType];
+        if (!_runtimeType && dict[@"runtimeType"] && ![dict[@"runtimeType"] isKindOfClass:NSNull.class]) return nil;
+        _s = [QTS fromJSONDictionary:(id)_s];
+        if (!_s && dict[@"s"] && ![dict[@"s"] isKindOfClass:NSNull.class]) return nil;
+        _sbyte = [QTSbyte fromJSONDictionary:(id)_sbyte];
+        if (!_sbyte && dict[@"sbyte"] && ![dict[@"sbyte"] isKindOfClass:NSNull.class]) return nil;
+        _sealed = [QTSealed fromJSONDictionary:(id)_sealed];
+        if (!_sealed && dict[@"sealed"] && ![dict[@"sealed"] isKindOfClass:NSNull.class]) return nil;
+        _sel = [QTSel fromJSONDictionary:(id)_sel];
+        if (!_sel && dict[@"SEL"] && ![dict[@"SEL"] isKindOfClass:NSNull.class]) return nil;
+        _select = [QTSelect fromJSONDictionary:(id)_select];
+        if (!_select && dict[@"select"] && ![dict[@"select"] 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;
+        _serializationFeature = [QTSerializationFeature fromJSONDictionary:(id)_serializationFeature];
+        if (!_serializationFeature && dict[@"SerializationFeature"] && ![dict[@"SerializationFeature"] 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];
+        if (!_serializerProvider && dict[@"SerializerProvider"] && ![dict[@"SerializerProvider"] isKindOfClass:NSNull.class]) return nil;
+        _set = [QTSet fromJSONDictionary:(id)_set];
+        if (!_set && dict[@"set"] && ![dict[@"set"] isKindOfClass:NSNull.class]) return nil;
+        _simpleModule = [QTSimpleModule fromJSONDictionary:(id)_simpleModule];
+        if (!_simpleModule && dict[@"SimpleModule"] && ![dict[@"SimpleModule"] isKindOfClass:NSNull.class]) return nil;
+        _stackalloc = [QTStackalloc fromJSONDictionary:(id)_stackalloc];
+        if (!_stackalloc && dict[@"stackalloc"] && ![dict[@"stackalloc"] isKindOfClass:NSNull.class]) return nil;
+        _standards = [QTStandards fromJSONDictionary:(id)_standards];
+        if (!_standards && dict[@"Standards"] && ![dict[@"Standards"] isKindOfClass:NSNull.class]) return nil;
+        _staticAssert = [QTStaticAssert fromJSONDictionary:(id)_staticAssert];
+        if (!_staticAssert && dict[@"static_assert"] && ![dict[@"static_assert"] isKindOfClass:NSNull.class]) return nil;
+        _staticCast = [QTStaticCast fromJSONDictionary:(id)_staticCast];
+        if (!_staticCast && dict[@"static_cast"] && ![dict[@"static_cast"] isKindOfClass:NSNull.class]) return nil;
+        _stdDeserializer = [QTStdDeserializer fromJSONDictionary:(id)_stdDeserializer];
+        if (!_stdDeserializer && dict[@"StdDeserializer"] && ![dict[@"StdDeserializer"] isKindOfClass:NSNull.class]) return nil;
+        _stdSerializer = [QTStdSerializer fromJSONDictionary:(id)_stdSerializer];
+        if (!_stdSerializer && dict[@"StdSerializer"] && ![dict[@"StdSerializer"] isKindOfClass:NSNull.class]) return nil;
+        _strictfp = [QTStrictfp fromJSONDictionary:(id)_strictfp];
+        if (!_strictfp && dict[@"strictfp"] && ![dict[@"strictfp"] isKindOfClass:NSNull.class]) return nil;
+        _string = [QTString fromJSONDictionary:(id)_string];
+        if (!_string && dict[@"string"] && ![dict[@"string"] isKindOfClass:NSNull.class]) return nil;
+        _subscript = [QTSubscript fromJSONDictionary:(id)_subscript];
+        if (!_subscript && dict[@"subscript"] && ![dict[@"subscript"] isKindOfClass:NSNull.class]) return nil;
+        _super = [QTSuper fromJSONDictionary:(id)_super];
+        if (!_super && dict[@"super"] && ![dict[@"super"] isKindOfClass:NSNull.class]) return nil;
+        _symbol = [QTSymbol fromJSONDictionary:(id)_symbol];
+        if (!_symbol && dict[@"symbol"] && ![dict[@"symbol"] isKindOfClass:NSNull.class]) return nil;
+        _synchronized = [QTSynchronized fromJSONDictionary:(id)_synchronized];
+        if (!_synchronized && dict[@"synchronized"] && ![dict[@"synchronized"] isKindOfClass:NSNull.class]) return nil;
+        _system = [QTSystem fromJSONDictionary:(id)_system];
+        if (!_system && dict[@"system"] && ![dict[@"system"] isKindOfClass:NSNull.class]) return nil;
+        _template = [QTTemplate fromJSONDictionary:(id)_template];
+        if (!_template && dict[@"template"] && ![dict[@"template"] isKindOfClass:NSNull.class]) return nil;
+        _textNode = [QTTextNode fromJSONDictionary:(id)_textNode];
+        if (!_textNode && dict[@"TextNode"] && ![dict[@"TextNode"] isKindOfClass:NSNull.class]) return nil;
+        _theTrue = [QTTrueClass fromJSONDictionary:(id)_theTrue];
+        if (!_theTrue && dict[@"true"] && ![dict[@"true"] isKindOfClass:NSNull.class]) return nil;
+        _then = [QTThen fromJSONDictionary:(id)_then];
+        if (!_then && dict[@"then"] && ![dict[@"then"] isKindOfClass:NSNull.class]) return nil;
+        _this = [QTThis fromJSONDictionary:(id)_this];
+        if (!_this && dict[@"this"] && ![dict[@"this"] isKindOfClass:NSNull.class]) return nil;
+        _threadLocal = [QTThreadLocal fromJSONDictionary:(id)_threadLocal];
+        if (!_threadLocal && dict[@"thread_local"] && ![dict[@"thread_local"] isKindOfClass:NSNull.class]) return nil;
+        _throw = [QTThrow fromJSONDictionary:(id)_throw];
+        if (!_throw && dict[@"throw"] && ![dict[@"throw"] isKindOfClass:NSNull.class]) return nil;
+        _throws = [QTThrows fromJSONDictionary:(id)_throws];
+        if (!_throws && dict[@"throws"] && ![dict[@"throws"] isKindOfClass:NSNull.class]) return nil;
+        _timeOnly = [QTTimeOnly fromJSONDictionary:(id)_timeOnly];
+        if (!_timeOnly && dict[@"TimeOnly"] && ![dict[@"TimeOnly"] isKindOfClass:NSNull.class]) return nil;
+        _timeOnlyConverter = [QTTimeOnlyConverter fromJSONDictionary:(id)_timeOnlyConverter];
+        if (!_timeOnlyConverter && dict[@"TimeOnlyConverter"] && ![dict[@"TimeOnlyConverter"] isKindOfClass:NSNull.class]) return nil;
+        _timeZone = [QTTimeZone fromJSONDictionary:(id)_timeZone];
+        if (!_timeZone && dict[@"TimeZone"] && ![dict[@"TimeZone"] isKindOfClass:NSNull.class]) return nil;
+        _toJSON = [QTToJSON fromJSONDictionary:(id)_toJSON];
+        if (!_toJSON && dict[@"to_json"] && ![dict[@"to_json"] isKindOfClass:NSNull.class]) return nil;
+        _toString = [QTToString fromJSONDictionary:(id)_toString];
+        if (!_toString && dict[@"toString"] && ![dict[@"toString"] isKindOfClass:NSNull.class]) return nil;
+        _topLevel = [QTTopLevelClass fromJSONDictionary:(id)_topLevel];
+        if (!_topLevel && dict[@"top_level"] && ![dict[@"top_level"] isKindOfClass:NSNull.class]) return nil;
+        _transient = [QTTransient fromJSONDictionary:(id)_transient];
+        if (!_transient && dict[@"transient"] && ![dict[@"transient"] isKindOfClass:NSNull.class]) return nil;
+        _try = [QTTry fromJSONDictionary:(id)_try];
+        if (!_try && dict[@"try"] && ![dict[@"try"] isKindOfClass:NSNull.class]) return nil;
+        _type = [QTType fromJSONDictionary:(id)_type];
+        if (!_type && dict[@"Type"] && ![dict[@"Type"] isKindOfClass:NSNull.class]) return nil;
+        _typealias = [QTTypealias fromJSONDictionary:(id)_typealias];
+        if (!_typealias && dict[@"typealias"] && ![dict[@"typealias"] isKindOfClass:NSNull.class]) return nil;
+        _typeid = [QTTypeid fromJSONDictionary:(id)_typeid];
+        if (!_typeid && dict[@"typeid"] && ![dict[@"typeid"] isKindOfClass:NSNull.class]) return nil;
+        _typename = [QTTypename fromJSONDictionary:(id)_typename];
+        if (!_typename && dict[@"typename"] && ![dict[@"typename"] isKindOfClass:NSNull.class]) return nil;
+        _uint = [QTUint fromJSONDictionary:(id)_uint];
+        if (!_uint && dict[@"uint"] && ![dict[@"uint"] isKindOfClass:NSNull.class]) return nil;
+        _ulong = [QTUlong fromJSONDictionary:(id)_ulong];
+        if (!_ulong && dict[@"ulong"] && ![dict[@"ulong"] isKindOfClass:NSNull.class]) return nil;
+        _unchecked = [QTUnchecked fromJSONDictionary:(id)_unchecked];
+        if (!_unchecked && dict[@"unchecked"] && ![dict[@"unchecked"] isKindOfClass:NSNull.class]) return nil;
+        _undefined = [QTUndefined fromJSONDictionary:(id)_undefined];
+        if (!_undefined && dict[@"undefined"] && ![dict[@"undefined"] isKindOfClass:NSNull.class]) return nil;
     }
     return self;
 }
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTS.properties[key];
+    id resolved = QTObj5.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTS.properties[key];
+    id resolved = QTObj5.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTS.properties.allValues];
-}
-@end
-
-@implementation QTSbyte
-+ (NSDictionary<NSString *, NSString *> *)properties
-{
-    static NSDictionary<NSString *, NSString *> *properties;
-    return properties = properties ? properties : @{
-        @"sbyte": @"sbyte",
-    };
-}
-
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict
-{
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTSbyte alloc] initWithJSONDictionary:dict] : nil;
-}
+    id dict = [[self dictionaryWithValuesForKeys:QTObj5.properties.allValues] mutableCopy];
 
-- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
-{
-    if (self = [super init]) {
-        if (![dict[@"sbyte"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"sbyte"] doubleValue] != [dict[@"sbyte"] longLongValue]) return nil;
-        [self setValuesForKeysWithDictionary:dict];
+    for (id jsonName in QTObj5.properties) {
+        id propertyName = QTObj5.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
     }
-    return self;
+
+    [dict addEntriesFromDictionary:@{
+        @"return": [_obj5Return JSONDictionary],
+        @"self": [_obj5Self JSONDictionary],
+        @"short": [_obj5Short JSONDictionary],
+        @"signed": [_obj5Signed JSONDictionary],
+        @"sizeof": [_obj5Sizeof JSONDictionary],
+        @"static": [_obj5Static JSONDictionary],
+        @"struct": [_obj5Struct JSONDictionary],
+        @"switch": [_obj5Switch JSONDictionary],
+        @"True": [_obj5True JSONDictionary],
+        @"type": [_obj5Type JSONDictionary],
+        @"typedef": [_obj5Typedef JSONDictionary],
+        @"typeof": [_obj5Typeof JSONDictionary],
+        @"union": [_obj5Union JSONDictionary],
+        @"right": [_right JSONDictionary],
+        @"runtimeType": [_runtimeType JSONDictionary],
+        @"s": [_s JSONDictionary],
+        @"sbyte": [_sbyte JSONDictionary],
+        @"sealed": [_sealed JSONDictionary],
+        @"SEL": [_sel JSONDictionary],
+        @"select": [_select JSONDictionary],
+        @"Self": [_self JSONDictionary],
+        @"Sendable": [_sendable JSONDictionary],
+        @"SerializationFeature": [_serializationFeature JSONDictionary],
+        @"serialize": [_serialize JSONDictionary],
+        @"SerializerProvider": [_serializerProvider JSONDictionary],
+        @"set": [_set JSONDictionary],
+        @"SimpleModule": [_simpleModule JSONDictionary],
+        @"stackalloc": [_stackalloc JSONDictionary],
+        @"Standards": [_standards JSONDictionary],
+        @"static_assert": [_staticAssert JSONDictionary],
+        @"static_cast": [_staticCast JSONDictionary],
+        @"StdDeserializer": [_stdDeserializer JSONDictionary],
+        @"StdSerializer": [_stdSerializer JSONDictionary],
+        @"strictfp": [_strictfp JSONDictionary],
+        @"string": [_string JSONDictionary],
+        @"subscript": [_subscript JSONDictionary],
+        @"super": [_super JSONDictionary],
+        @"symbol": [_symbol JSONDictionary],
+        @"synchronized": [_synchronized JSONDictionary],
+        @"system": [_system JSONDictionary],
+        @"template": [_template JSONDictionary],
+        @"TextNode": [_textNode JSONDictionary],
+        @"true": [_theTrue JSONDictionary],
+        @"then": [_then JSONDictionary],
+        @"this": [_this JSONDictionary],
+        @"thread_local": [_threadLocal JSONDictionary],
+        @"throw": [_throw JSONDictionary],
+        @"throws": [_throws JSONDictionary],
+        @"TimeOnly": [_timeOnly JSONDictionary],
+        @"TimeOnlyConverter": [_timeOnlyConverter JSONDictionary],
+        @"TimeZone": [_timeZone JSONDictionary],
+        @"to_json": [_toJSON JSONDictionary],
+        @"toString": [_toString JSONDictionary],
+        @"top_level": [_topLevel JSONDictionary],
+        @"transient": [_transient JSONDictionary],
+        @"try": [_try JSONDictionary],
+        @"Type": [_type JSONDictionary],
+        @"typealias": [_typealias JSONDictionary],
+        @"typeid": [_typeid JSONDictionary],
+        @"typename": [_typename JSONDictionary],
+        @"uint": [_uint JSONDictionary],
+        @"ulong": [_ulong JSONDictionary],
+        @"unchecked": [_unchecked JSONDictionary],
+        @"undefined": [_undefined JSONDictionary],
+    }];
+
+    return dict;
+}
+@end
+
+@implementation QTReturn
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"return": @"returnReturn",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTReturn alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"return"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"return"] doubleValue] != [dict[@"return"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
 }
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTSbyte.properties[key];
+    id resolved = QTReturn.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTSbyte.properties[key];
+    id resolved = QTReturn.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTSbyte.properties.allValues];
+    id dict = [[self dictionaryWithValuesForKeys:QTReturn.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTReturn.properties) {
+        id propertyName = QTReturn.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
 }
 @end
 
-@implementation QTSealed
+@implementation QTSelfClass
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"sealed": @"sealed",
+        @"self": @"self",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTSealed alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSelfClass alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"sealed"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"sealed"] doubleValue] != [dict[@"sealed"] 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;
@@ -15090,41 +15763,41 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTSealed.properties[key];
+    id resolved = QTSelfClass.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTSealed.properties[key];
+    id resolved = QTSelfClass.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTSealed.properties.allValues];
+    return [self dictionaryWithValuesForKeys:QTSelfClass.properties.allValues];
 }
 @end
 
-@implementation QTSel
+@implementation QTShort
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"SEL": @"sel",
+        @"short": @"shortShort",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTSel alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTShort alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"SEL"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"SEL"] doubleValue] != [dict[@"SEL"] longLongValue]) return nil;
+        if (![dict[@"short"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"short"] doubleValue] != [dict[@"short"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -15132,22 +15805,22 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTSel.properties[key];
+    id resolved = QTShort.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTSel.properties[key];
+    id resolved = QTShort.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTSel.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTShort.properties.allValues] mutableCopy];
 
-    for (id jsonName in QTSel.properties) {
-        id propertyName = QTSel.properties[jsonName];
+    for (id jsonName in QTShort.properties) {
+        id propertyName = QTShort.properties[jsonName];
         if (![jsonName isEqualToString:propertyName]) {
             dict[jsonName] = dict[propertyName];
             [dict removeObjectForKey:propertyName];
@@ -15158,25 +15831,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTSelect
+@implementation QTSigned
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"select": @"select",
+        @"signed": @"signedSigned",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTSelect alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSigned alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"select"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"select"] doubleValue] != [dict[@"select"] longLongValue]) return nil;
+        if (![dict[@"signed"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"signed"] doubleValue] != [dict[@"signed"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -15184,416 +15857,259 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTSelect.properties[key];
+    id resolved = QTSigned.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTSelect.properties[key];
+    id resolved = QTSigned.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTSelect.properties.allValues];
+    id dict = [[self dictionaryWithValuesForKeys:QTSigned.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTSigned.properties) {
+        id propertyName = QTSigned.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
 }
 @end
 
-@implementation QTObj5
+@implementation QTSizeof
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"dummy": @"dummy",
-        @"self": @"obj5Self",
-        @"short": @"obj5Short",
-        @"signed": @"obj5Signed",
-        @"sizeof": @"obj5Sizeof",
-        @"static": @"obj5Static",
-        @"struct": @"obj5Struct",
-        @"switch": @"obj5Switch",
-        @"True": @"obj5True",
-        @"type": @"obj5Type",
-        @"typedef": @"obj5Typedef",
-        @"typeof": @"obj5Typeof",
-        @"union": @"obj5Union",
-        @"unsigned": @"obj5Unsigned",
-        @"Self": @"self",
-        @"Sendable": @"sendable",
-        @"serialize": @"serialize",
-        @"SerializerProvider": @"serializerProvider",
-        @"set": @"set",
-        @"SimpleModule": @"simpleModule",
-        @"stackalloc": @"stackalloc",
-        @"Standards": @"standards",
-        @"static_assert": @"staticAssert",
-        @"static_cast": @"staticCast",
-        @"StdDeserializer": @"stdDeserializer",
-        @"StdSerializer": @"stdSerializer",
-        @"strictfp": @"strictfp",
-        @"string": @"string",
-        @"subscript": @"subscript",
-        @"super": @"super",
-        @"symbol": @"symbol",
-        @"synchronized": @"synchronized",
-        @"system": @"system",
-        @"template": @"template",
-        @"true": @"theTrue",
-        @"then": @"then",
-        @"this": @"this",
-        @"thread_local": @"threadLocal",
-        @"throw": @"throw",
-        @"throws": @"throws",
-        @"TimeOnly": @"timeOnly",
-        @"TimeOnlyConverter": @"timeOnlyConverter",
-        @"TimeZone": @"timeZone",
-        @"to_json": @"toJSON",
-        @"toString": @"toString",
-        @"top_level": @"topLevel",
-        @"transient": @"transient",
-        @"try": @"try",
-        @"Type": @"type",
-        @"typealias": @"typealias",
-        @"typeid": @"typeid",
-        @"typename": @"typename",
-        @"uint": @"uint",
-        @"ulong": @"ulong",
-        @"unchecked": @"unchecked",
-        @"undefined": @"undefined",
-        @"unowned": @"unowned",
-        @"unsafe": @"unsafe",
-        @"ushort": @"ushort",
-        @"using": @"using",
-        @"Utf8JsonReader": @"utf8JSONReader",
-        @"Utf8JsonWriter": @"utf8JSONWriter",
-        @"UUID": @"uuid",
-        @"var": @"var",
-        @"virtual": @"virtual",
+        @"sizeof": @"sizeofSizeof",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTObj5 alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSizeof 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[@"self"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"short"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"signed"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"sizeof"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"static"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"struct"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"switch"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"True"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"type"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"typedef"] isKindOfClass:NSDictionary.class]) return nil;
-        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[@"Self"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"Sendable"] 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;
-        if (![dict[@"SimpleModule"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"stackalloc"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"Standards"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"static_assert"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"static_cast"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"StdDeserializer"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"StdSerializer"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"strictfp"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"string"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"subscript"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"super"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"symbol"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"synchronized"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"system"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"template"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"true"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"then"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"this"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"thread_local"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"throw"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"throws"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"TimeOnly"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"TimeOnlyConverter"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"TimeZone"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"to_json"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"toString"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"top_level"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"transient"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"try"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"Type"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"typealias"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"typeid"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"typename"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"uint"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"ulong"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"unchecked"] isKindOfClass:NSDictionary.class]) return nil;
-        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[@"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;
+        if (![dict[@"sizeof"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"sizeof"] doubleValue] != [dict[@"sizeof"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTSizeof.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTSizeof.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    id dict = [[self dictionaryWithValuesForKeys:QTSizeof.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTSizeof.properties) {
+        id propertyName = QTSizeof.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
+}
+@end
+
+@implementation QTStatic
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"static": @"staticStatic",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTStatic alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"static"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"static"] doubleValue] != [dict[@"static"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTStatic.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTStatic.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    id dict = [[self dictionaryWithValuesForKeys:QTStatic.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTStatic.properties) {
+        id propertyName = QTStatic.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
+}
+@end
+
+@implementation QTStruct
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"struct": @"structStruct",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTStruct alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"struct"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"struct"] doubleValue] != [dict[@"struct"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTStruct.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTStruct.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    id dict = [[self dictionaryWithValuesForKeys:QTStruct.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTStruct.properties) {
+        id propertyName = QTStruct.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
+}
+@end
+
+@implementation QTSwitch
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"switch": @"switchSwitch",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSwitch alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"switch"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"switch"] doubleValue] != [dict[@"switch"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
-        _obj5Self = [QTSelfClass fromJSONDictionary:(id)_obj5Self];
-        if (!_obj5Self && dict[@"self"] && ![dict[@"self"] isKindOfClass:NSNull.class]) return nil;
-        _obj5Short = [QTShort fromJSONDictionary:(id)_obj5Short];
-        if (!_obj5Short && dict[@"short"] && ![dict[@"short"] isKindOfClass:NSNull.class]) return nil;
-        _obj5Signed = [QTSigned fromJSONDictionary:(id)_obj5Signed];
-        if (!_obj5Signed && dict[@"signed"] && ![dict[@"signed"] isKindOfClass:NSNull.class]) return nil;
-        _obj5Sizeof = [QTSizeof fromJSONDictionary:(id)_obj5Sizeof];
-        if (!_obj5Sizeof && dict[@"sizeof"] && ![dict[@"sizeof"] isKindOfClass:NSNull.class]) return nil;
-        _obj5Static = [QTStatic fromJSONDictionary:(id)_obj5Static];
-        if (!_obj5Static && dict[@"static"] && ![dict[@"static"] isKindOfClass:NSNull.class]) return nil;
-        _obj5Struct = [QTStruct fromJSONDictionary:(id)_obj5Struct];
-        if (!_obj5Struct && dict[@"struct"] && ![dict[@"struct"] isKindOfClass:NSNull.class]) return nil;
-        _obj5Switch = [QTSwitch fromJSONDictionary:(id)_obj5Switch];
-        if (!_obj5Switch && dict[@"switch"] && ![dict[@"switch"] isKindOfClass:NSNull.class]) return nil;
-        _obj5True = [QTTrue fromJSONDictionary:(id)_obj5True];
-        if (!_obj5True && dict[@"True"] && ![dict[@"True"] isKindOfClass:NSNull.class]) return nil;
-        _obj5Type = [QTTypeClass fromJSONDictionary:(id)_obj5Type];
-        if (!_obj5Type && dict[@"type"] && ![dict[@"type"] isKindOfClass:NSNull.class]) return nil;
-        _obj5Typedef = [QTTypedef fromJSONDictionary:(id)_obj5Typedef];
-        if (!_obj5Typedef && dict[@"typedef"] && ![dict[@"typedef"] isKindOfClass:NSNull.class]) return nil;
-        _obj5Typeof = [QTTypeof fromJSONDictionary:(id)_obj5Typeof];
-        if (!_obj5Typeof && dict[@"typeof"] && ![dict[@"typeof"] isKindOfClass:NSNull.class]) return nil;
-        _obj5Union = [QTUnion fromJSONDictionary:(id)_obj5Union];
-        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;
-        _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;
-        _serialize = [QTSerialize fromJSONDictionary:(id)_serialize];
-        if (!_serialize && dict[@"serialize"] && ![dict[@"serialize"] isKindOfClass:NSNull.class]) return nil;
-        _serializerProvider = [QTSerializerProvider fromJSONDictionary:(id)_serializerProvider];
-        if (!_serializerProvider && dict[@"SerializerProvider"] && ![dict[@"SerializerProvider"] isKindOfClass:NSNull.class]) return nil;
-        _set = [QTSet fromJSONDictionary:(id)_set];
-        if (!_set && dict[@"set"] && ![dict[@"set"] isKindOfClass:NSNull.class]) return nil;
-        _simpleModule = [QTSimpleModule fromJSONDictionary:(id)_simpleModule];
-        if (!_simpleModule && dict[@"SimpleModule"] && ![dict[@"SimpleModule"] isKindOfClass:NSNull.class]) return nil;
-        _stackalloc = [QTStackalloc fromJSONDictionary:(id)_stackalloc];
-        if (!_stackalloc && dict[@"stackalloc"] && ![dict[@"stackalloc"] isKindOfClass:NSNull.class]) return nil;
-        _standards = [QTStandards fromJSONDictionary:(id)_standards];
-        if (!_standards && dict[@"Standards"] && ![dict[@"Standards"] isKindOfClass:NSNull.class]) return nil;
-        _staticAssert = [QTStaticAssert fromJSONDictionary:(id)_staticAssert];
-        if (!_staticAssert && dict[@"static_assert"] && ![dict[@"static_assert"] isKindOfClass:NSNull.class]) return nil;
-        _staticCast = [QTStaticCast fromJSONDictionary:(id)_staticCast];
-        if (!_staticCast && dict[@"static_cast"] && ![dict[@"static_cast"] isKindOfClass:NSNull.class]) return nil;
-        _stdDeserializer = [QTStdDeserializer fromJSONDictionary:(id)_stdDeserializer];
-        if (!_stdDeserializer && dict[@"StdDeserializer"] && ![dict[@"StdDeserializer"] isKindOfClass:NSNull.class]) return nil;
-        _stdSerializer = [QTStdSerializer fromJSONDictionary:(id)_stdSerializer];
-        if (!_stdSerializer && dict[@"StdSerializer"] && ![dict[@"StdSerializer"] isKindOfClass:NSNull.class]) return nil;
-        _strictfp = [QTStrictfp fromJSONDictionary:(id)_strictfp];
-        if (!_strictfp && dict[@"strictfp"] && ![dict[@"strictfp"] isKindOfClass:NSNull.class]) return nil;
-        _string = [QTString fromJSONDictionary:(id)_string];
-        if (!_string && dict[@"string"] && ![dict[@"string"] isKindOfClass:NSNull.class]) return nil;
-        _subscript = [QTSubscript fromJSONDictionary:(id)_subscript];
-        if (!_subscript && dict[@"subscript"] && ![dict[@"subscript"] isKindOfClass:NSNull.class]) return nil;
-        _super = [QTSuper fromJSONDictionary:(id)_super];
-        if (!_super && dict[@"super"] && ![dict[@"super"] isKindOfClass:NSNull.class]) return nil;
-        _symbol = [QTSymbol fromJSONDictionary:(id)_symbol];
-        if (!_symbol && dict[@"symbol"] && ![dict[@"symbol"] isKindOfClass:NSNull.class]) return nil;
-        _synchronized = [QTSynchronized fromJSONDictionary:(id)_synchronized];
-        if (!_synchronized && dict[@"synchronized"] && ![dict[@"synchronized"] isKindOfClass:NSNull.class]) return nil;
-        _system = [QTSystem fromJSONDictionary:(id)_system];
-        if (!_system && dict[@"system"] && ![dict[@"system"] isKindOfClass:NSNull.class]) return nil;
-        _template = [QTTemplate fromJSONDictionary:(id)_template];
-        if (!_template && dict[@"template"] && ![dict[@"template"] isKindOfClass:NSNull.class]) return nil;
-        _theTrue = [QTTrueClass fromJSONDictionary:(id)_theTrue];
-        if (!_theTrue && dict[@"true"] && ![dict[@"true"] isKindOfClass:NSNull.class]) return nil;
-        _then = [QTThen fromJSONDictionary:(id)_then];
-        if (!_then && dict[@"then"] && ![dict[@"then"] isKindOfClass:NSNull.class]) return nil;
-        _this = [QTThis fromJSONDictionary:(id)_this];
-        if (!_this && dict[@"this"] && ![dict[@"this"] isKindOfClass:NSNull.class]) return nil;
-        _threadLocal = [QTThreadLocal fromJSONDictionary:(id)_threadLocal];
-        if (!_threadLocal && dict[@"thread_local"] && ![dict[@"thread_local"] isKindOfClass:NSNull.class]) return nil;
-        _throw = [QTThrow fromJSONDictionary:(id)_throw];
-        if (!_throw && dict[@"throw"] && ![dict[@"throw"] isKindOfClass:NSNull.class]) return nil;
-        _throws = [QTThrows fromJSONDictionary:(id)_throws];
-        if (!_throws && dict[@"throws"] && ![dict[@"throws"] isKindOfClass:NSNull.class]) return nil;
-        _timeOnly = [QTTimeOnly fromJSONDictionary:(id)_timeOnly];
-        if (!_timeOnly && dict[@"TimeOnly"] && ![dict[@"TimeOnly"] isKindOfClass:NSNull.class]) return nil;
-        _timeOnlyConverter = [QTTimeOnlyConverter fromJSONDictionary:(id)_timeOnlyConverter];
-        if (!_timeOnlyConverter && dict[@"TimeOnlyConverter"] && ![dict[@"TimeOnlyConverter"] isKindOfClass:NSNull.class]) return nil;
-        _timeZone = [QTTimeZone fromJSONDictionary:(id)_timeZone];
-        if (!_timeZone && dict[@"TimeZone"] && ![dict[@"TimeZone"] isKindOfClass:NSNull.class]) return nil;
-        _toJSON = [QTToJSON fromJSONDictionary:(id)_toJSON];
-        if (!_toJSON && dict[@"to_json"] && ![dict[@"to_json"] isKindOfClass:NSNull.class]) return nil;
-        _toString = [QTToString fromJSONDictionary:(id)_toString];
-        if (!_toString && dict[@"toString"] && ![dict[@"toString"] isKindOfClass:NSNull.class]) return nil;
-        _topLevel = [QTTopLevelClass fromJSONDictionary:(id)_topLevel];
-        if (!_topLevel && dict[@"top_level"] && ![dict[@"top_level"] isKindOfClass:NSNull.class]) return nil;
-        _transient = [QTTransient fromJSONDictionary:(id)_transient];
-        if (!_transient && dict[@"transient"] && ![dict[@"transient"] isKindOfClass:NSNull.class]) return nil;
-        _try = [QTTry fromJSONDictionary:(id)_try];
-        if (!_try && dict[@"try"] && ![dict[@"try"] isKindOfClass:NSNull.class]) return nil;
-        _type = [QTType fromJSONDictionary:(id)_type];
-        if (!_type && dict[@"Type"] && ![dict[@"Type"] isKindOfClass:NSNull.class]) return nil;
-        _typealias = [QTTypealias fromJSONDictionary:(id)_typealias];
-        if (!_typealias && dict[@"typealias"] && ![dict[@"typealias"] isKindOfClass:NSNull.class]) return nil;
-        _typeid = [QTTypeid fromJSONDictionary:(id)_typeid];
-        if (!_typeid && dict[@"typeid"] && ![dict[@"typeid"] isKindOfClass:NSNull.class]) return nil;
-        _typename = [QTTypename fromJSONDictionary:(id)_typename];
-        if (!_typename && dict[@"typename"] && ![dict[@"typename"] isKindOfClass:NSNull.class]) return nil;
-        _uint = [QTUint fromJSONDictionary:(id)_uint];
-        if (!_uint && dict[@"uint"] && ![dict[@"uint"] isKindOfClass:NSNull.class]) return nil;
-        _ulong = [QTUlong fromJSONDictionary:(id)_ulong];
-        if (!_ulong && dict[@"ulong"] && ![dict[@"ulong"] isKindOfClass:NSNull.class]) return nil;
-        _unchecked = [QTUnchecked fromJSONDictionary:(id)_unchecked];
-        if (!_unchecked && dict[@"unchecked"] && ![dict[@"unchecked"] isKindOfClass:NSNull.class]) return nil;
-        _undefined = [QTUndefined fromJSONDictionary:(id)_undefined];
-        if (!_undefined && dict[@"undefined"] && ![dict[@"undefined"] isKindOfClass:NSNull.class]) return nil;
-        _unowned = [QTUnowned fromJSONDictionary:(id)_unowned];
-        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;
-        _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;
 }
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTObj5.properties[key];
+    id resolved = QTSwitch.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTObj5.properties[key];
+    id resolved = QTSwitch.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTObj5.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTSwitch.properties.allValues] mutableCopy];
 
-    for (id jsonName in QTObj5.properties) {
-        id propertyName = QTObj5.properties[jsonName];
+    for (id jsonName in QTSwitch.properties) {
+        id propertyName = QTSwitch.properties[jsonName];
         if (![jsonName isEqualToString:propertyName]) {
             dict[jsonName] = dict[propertyName];
             [dict removeObjectForKey:propertyName];
         }
     }
 
-    [dict addEntriesFromDictionary:@{
-        @"self": [_obj5Self JSONDictionary],
-        @"short": [_obj5Short JSONDictionary],
-        @"signed": [_obj5Signed JSONDictionary],
-        @"sizeof": [_obj5Sizeof JSONDictionary],
-        @"static": [_obj5Static JSONDictionary],
-        @"struct": [_obj5Struct JSONDictionary],
-        @"switch": [_obj5Switch JSONDictionary],
-        @"True": [_obj5True JSONDictionary],
-        @"type": [_obj5Type JSONDictionary],
-        @"typedef": [_obj5Typedef JSONDictionary],
-        @"typeof": [_obj5Typeof JSONDictionary],
-        @"union": [_obj5Union JSONDictionary],
-        @"unsigned": [_obj5Unsigned JSONDictionary],
-        @"Self": [_self JSONDictionary],
-        @"Sendable": [_sendable JSONDictionary],
-        @"serialize": [_serialize JSONDictionary],
-        @"SerializerProvider": [_serializerProvider JSONDictionary],
-        @"set": [_set JSONDictionary],
-        @"SimpleModule": [_simpleModule JSONDictionary],
-        @"stackalloc": [_stackalloc JSONDictionary],
-        @"Standards": [_standards JSONDictionary],
-        @"static_assert": [_staticAssert JSONDictionary],
-        @"static_cast": [_staticCast JSONDictionary],
-        @"StdDeserializer": [_stdDeserializer JSONDictionary],
-        @"StdSerializer": [_stdSerializer JSONDictionary],
-        @"strictfp": [_strictfp JSONDictionary],
-        @"string": [_string JSONDictionary],
-        @"subscript": [_subscript JSONDictionary],
-        @"super": [_super JSONDictionary],
-        @"symbol": [_symbol JSONDictionary],
-        @"synchronized": [_synchronized JSONDictionary],
-        @"system": [_system JSONDictionary],
-        @"template": [_template JSONDictionary],
-        @"true": [_theTrue JSONDictionary],
-        @"then": [_then JSONDictionary],
-        @"this": [_this JSONDictionary],
-        @"thread_local": [_threadLocal JSONDictionary],
-        @"throw": [_throw JSONDictionary],
-        @"throws": [_throws JSONDictionary],
-        @"TimeOnly": [_timeOnly JSONDictionary],
-        @"TimeOnlyConverter": [_timeOnlyConverter JSONDictionary],
-        @"TimeZone": [_timeZone JSONDictionary],
-        @"to_json": [_toJSON JSONDictionary],
-        @"toString": [_toString JSONDictionary],
-        @"top_level": [_topLevel JSONDictionary],
-        @"transient": [_transient JSONDictionary],
-        @"try": [_try JSONDictionary],
-        @"Type": [_type JSONDictionary],
-        @"typealias": [_typealias JSONDictionary],
-        @"typeid": [_typeid JSONDictionary],
-        @"typename": [_typename JSONDictionary],
-        @"uint": [_uint JSONDictionary],
-        @"ulong": [_ulong JSONDictionary],
-        @"unchecked": [_unchecked JSONDictionary],
-        @"undefined": [_undefined JSONDictionary],
-        @"unowned": [_unowned JSONDictionary],
-        @"unsafe": [_unsafe 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 QTSelfClass
+@implementation QTTrue
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"self": @"self",
+        @"True": @"trueTrue",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTSelfClass alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTTrue 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[@"True"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"True"] doubleValue] != [dict[@"True"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -15601,41 +16117,51 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTSelfClass.properties[key];
+    id resolved = QTTrue.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTSelfClass.properties[key];
+    id resolved = QTTrue.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTSelfClass.properties.allValues];
+    id dict = [[self dictionaryWithValuesForKeys:QTTrue.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTTrue.properties) {
+        id propertyName = QTTrue.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
 }
 @end
 
-@implementation QTShort
+@implementation QTTypeClass
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"short": @"shortShort",
+        @"type": @"type",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTShort alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTTypeClass alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"short"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"short"] doubleValue] != [dict[@"short"] longLongValue]) return nil;
+        if (![dict[@"type"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"type"] doubleValue] != [dict[@"type"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -15643,51 +16169,41 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTShort.properties[key];
+    id resolved = QTTypeClass.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTShort.properties[key];
+    id resolved = QTTypeClass.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTShort.properties.allValues] mutableCopy];
-
-    for (id jsonName in QTShort.properties) {
-        id propertyName = QTShort.properties[jsonName];
-        if (![jsonName isEqualToString:propertyName]) {
-            dict[jsonName] = dict[propertyName];
-            [dict removeObjectForKey:propertyName];
-        }
-    }
-
-    return dict;
+    return [self dictionaryWithValuesForKeys:QTTypeClass.properties.allValues];
 }
 @end
 
-@implementation QTSigned
+@implementation QTTypedef
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"signed": @"signedSigned",
+        @"typedef": @"typedefTypedef",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTSigned alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTTypedef alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"signed"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"signed"] doubleValue] != [dict[@"signed"] longLongValue]) return nil;
+        if (![dict[@"typedef"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"typedef"] doubleValue] != [dict[@"typedef"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -15695,22 +16211,22 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTSigned.properties[key];
+    id resolved = QTTypedef.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTSigned.properties[key];
+    id resolved = QTTypedef.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTSigned.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTTypedef.properties.allValues] mutableCopy];
 
-    for (id jsonName in QTSigned.properties) {
-        id propertyName = QTSigned.properties[jsonName];
+    for (id jsonName in QTTypedef.properties) {
+        id propertyName = QTTypedef.properties[jsonName];
         if (![jsonName isEqualToString:propertyName]) {
             dict[jsonName] = dict[propertyName];
             [dict removeObjectForKey:propertyName];
@@ -15721,25 +16237,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTSizeof
+@implementation QTTypeof
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"sizeof": @"sizeofSizeof",
+        @"typeof": @"typeofTypeof",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTSizeof alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTTypeof alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"sizeof"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"sizeof"] doubleValue] != [dict[@"sizeof"] longLongValue]) return nil;
+        if (![dict[@"typeof"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"typeof"] doubleValue] != [dict[@"typeof"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -15747,22 +16263,22 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTSizeof.properties[key];
+    id resolved = QTTypeof.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTSizeof.properties[key];
+    id resolved = QTTypeof.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTSizeof.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTTypeof.properties.allValues] mutableCopy];
 
-    for (id jsonName in QTSizeof.properties) {
-        id propertyName = QTSizeof.properties[jsonName];
+    for (id jsonName in QTTypeof.properties) {
+        id propertyName = QTTypeof.properties[jsonName];
         if (![jsonName isEqualToString:propertyName]) {
             dict[jsonName] = dict[propertyName];
             [dict removeObjectForKey:propertyName];
@@ -15773,25 +16289,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTStatic
+@implementation QTUnion
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"static": @"staticStatic",
+        @"union": @"unionUnion",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTStatic alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTUnion alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"static"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"static"] doubleValue] != [dict[@"static"] longLongValue]) return nil;
+        if (![dict[@"union"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"union"] doubleValue] != [dict[@"union"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -15799,22 +16315,22 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTStatic.properties[key];
+    id resolved = QTUnion.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTStatic.properties[key];
+    id resolved = QTUnion.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTStatic.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTUnion.properties.allValues] mutableCopy];
 
-    for (id jsonName in QTStatic.properties) {
-        id propertyName = QTStatic.properties[jsonName];
+    for (id jsonName in QTUnion.properties) {
+        id propertyName = QTUnion.properties[jsonName];
         if (![jsonName isEqualToString:propertyName]) {
             dict[jsonName] = dict[propertyName];
             [dict removeObjectForKey:propertyName];
@@ -15825,25 +16341,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTStruct
+@implementation QTRight
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"struct": @"structStruct",
+        @"right": @"right",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTStruct alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTRight alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"struct"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"struct"] doubleValue] != [dict[@"struct"] longLongValue]) return nil;
+        if (![dict[@"right"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"right"] doubleValue] != [dict[@"right"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -15851,51 +16367,41 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTStruct.properties[key];
+    id resolved = QTRight.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTStruct.properties[key];
+    id resolved = QTRight.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTStruct.properties.allValues] mutableCopy];
-
-    for (id jsonName in QTStruct.properties) {
-        id propertyName = QTStruct.properties[jsonName];
-        if (![jsonName isEqualToString:propertyName]) {
-            dict[jsonName] = dict[propertyName];
-            [dict removeObjectForKey:propertyName];
-        }
-    }
-
-    return dict;
+    return [self dictionaryWithValuesForKeys:QTRight.properties.allValues];
 }
 @end
 
-@implementation QTSwitch
+@implementation QTRuntimeType
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"switch": @"switchSwitch",
+        @"runtimeType": @"runtimeType",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTSwitch alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTRuntimeType alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"switch"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"switch"] doubleValue] != [dict[@"switch"] longLongValue]) return nil;
+        if (![dict[@"runtimeType"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"runtimeType"] doubleValue] != [dict[@"runtimeType"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -15903,51 +16409,41 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTSwitch.properties[key];
+    id resolved = QTRuntimeType.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTSwitch.properties[key];
+    id resolved = QTRuntimeType.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
-{
-    id dict = [[self dictionaryWithValuesForKeys:QTSwitch.properties.allValues] mutableCopy];
-
-    for (id jsonName in QTSwitch.properties) {
-        id propertyName = QTSwitch.properties[jsonName];
-        if (![jsonName isEqualToString:propertyName]) {
-            dict[jsonName] = dict[propertyName];
-            [dict removeObjectForKey:propertyName];
-        }
-    }
-
-    return dict;
+{
+    return [self dictionaryWithValuesForKeys:QTRuntimeType.properties.allValues];
 }
 @end
 
-@implementation QTTrue
+@implementation QTS
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"True": @"trueTrue",
+        @"s": @"s",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTTrue alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTS alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"True"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"True"] doubleValue] != [dict[@"True"] longLongValue]) return nil;
+        if (![dict[@"s"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"s"] doubleValue] != [dict[@"s"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -15955,51 +16451,41 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTTrue.properties[key];
+    id resolved = QTS.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTTrue.properties[key];
+    id resolved = QTS.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTTrue.properties.allValues] mutableCopy];
-
-    for (id jsonName in QTTrue.properties) {
-        id propertyName = QTTrue.properties[jsonName];
-        if (![jsonName isEqualToString:propertyName]) {
-            dict[jsonName] = dict[propertyName];
-            [dict removeObjectForKey:propertyName];
-        }
-    }
-
-    return dict;
+    return [self dictionaryWithValuesForKeys:QTS.properties.allValues];
 }
 @end
 
-@implementation QTTypeClass
+@implementation QTSbyte
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"type": @"type",
+        @"sbyte": @"sbyte",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTTypeClass alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSbyte alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"type"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"type"] doubleValue] != [dict[@"type"] longLongValue]) return nil;
+        if (![dict[@"sbyte"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"sbyte"] doubleValue] != [dict[@"sbyte"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -16007,41 +16493,41 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTTypeClass.properties[key];
+    id resolved = QTSbyte.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTTypeClass.properties[key];
+    id resolved = QTSbyte.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTTypeClass.properties.allValues];
+    return [self dictionaryWithValuesForKeys:QTSbyte.properties.allValues];
 }
 @end
 
-@implementation QTTypedef
+@implementation QTSealed
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"typedef": @"typedefTypedef",
+        @"sealed": @"sealed",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTTypedef alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSealed alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"typedef"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"typedef"] doubleValue] != [dict[@"typedef"] longLongValue]) return nil;
+        if (![dict[@"sealed"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"sealed"] doubleValue] != [dict[@"sealed"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -16049,51 +16535,41 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTTypedef.properties[key];
+    id resolved = QTSealed.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTTypedef.properties[key];
+    id resolved = QTSealed.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTTypedef.properties.allValues] mutableCopy];
-
-    for (id jsonName in QTTypedef.properties) {
-        id propertyName = QTTypedef.properties[jsonName];
-        if (![jsonName isEqualToString:propertyName]) {
-            dict[jsonName] = dict[propertyName];
-            [dict removeObjectForKey:propertyName];
-        }
-    }
-
-    return dict;
+    return [self dictionaryWithValuesForKeys:QTSealed.properties.allValues];
 }
 @end
 
-@implementation QTTypeof
+@implementation QTSel
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"typeof": @"typeofTypeof",
+        @"SEL": @"sel",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTTypeof alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSel alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"typeof"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"typeof"] doubleValue] != [dict[@"typeof"] longLongValue]) return nil;
+        if (![dict[@"SEL"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"SEL"] doubleValue] != [dict[@"SEL"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -16101,22 +16577,22 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTTypeof.properties[key];
+    id resolved = QTSel.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTTypeof.properties[key];
+    id resolved = QTSel.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTTypeof.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTSel.properties.allValues] mutableCopy];
 
-    for (id jsonName in QTTypeof.properties) {
-        id propertyName = QTTypeof.properties[jsonName];
+    for (id jsonName in QTSel.properties) {
+        id propertyName = QTSel.properties[jsonName];
         if (![jsonName isEqualToString:propertyName]) {
             dict[jsonName] = dict[propertyName];
             [dict removeObjectForKey:propertyName];
@@ -16127,25 +16603,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTUnion
+@implementation QTSelect
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"union": @"unionUnion",
+        @"select": @"select",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTUnion alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSelect alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"union"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"union"] doubleValue] != [dict[@"union"] longLongValue]) return nil;
+        if (![dict[@"select"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"select"] doubleValue] != [dict[@"select"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -16153,51 +16629,41 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTUnion.properties[key];
+    id resolved = QTSelect.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTUnion.properties[key];
+    id resolved = QTSelect.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTUnion.properties.allValues] mutableCopy];
-
-    for (id jsonName in QTUnion.properties) {
-        id propertyName = QTUnion.properties[jsonName];
-        if (![jsonName isEqualToString:propertyName]) {
-            dict[jsonName] = dict[propertyName];
-            [dict removeObjectForKey:propertyName];
-        }
-    }
-
-    return dict;
+    return [self dictionaryWithValuesForKeys:QTSelect.properties.allValues];
 }
 @end
 
-@implementation QTUnsigned
+@implementation QTSelf
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"unsigned": @"unsignedUnsigned",
+        @"Self": @"self",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTUnsigned alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSelf alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"unsigned"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"unsigned"] doubleValue] != [dict[@"unsigned"] 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;
@@ -16205,22 +16671,22 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTUnsigned.properties[key];
+    id resolved = QTSelf.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTUnsigned.properties[key];
+    id resolved = QTSelf.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTUnsigned.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTSelf.properties.allValues] mutableCopy];
 
-    for (id jsonName in QTUnsigned.properties) {
-        id propertyName = QTUnsigned.properties[jsonName];
+    for (id jsonName in QTSelf.properties) {
+        id propertyName = QTSelf.properties[jsonName];
         if (![jsonName isEqualToString:propertyName]) {
             dict[jsonName] = dict[propertyName];
             [dict removeObjectForKey:propertyName];
@@ -16231,25 +16697,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTSelf
+@implementation QTSendable
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"Self": @"self",
+        @"Sendable": @"sendable",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTSelf alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSendable 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[@"Sendable"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"Sendable"] doubleValue] != [dict[@"Sendable"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -16257,22 +16723,22 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTSelf.properties[key];
+    id resolved = QTSendable.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTSelf.properties[key];
+    id resolved = QTSendable.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTSelf.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTSendable.properties.allValues] mutableCopy];
 
-    for (id jsonName in QTSelf.properties) {
-        id propertyName = QTSelf.properties[jsonName];
+    for (id jsonName in QTSendable.properties) {
+        id propertyName = QTSendable.properties[jsonName];
         if (![jsonName isEqualToString:propertyName]) {
             dict[jsonName] = dict[propertyName];
             [dict removeObjectForKey:propertyName];
@@ -16283,25 +16749,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTSendable
+@implementation QTSerializationFeature
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"Sendable": @"sendable",
+        @"SerializationFeature": @"serializationFeature",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTSendable alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSerializationFeature 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[@"SerializationFeature"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"SerializationFeature"] doubleValue] != [dict[@"SerializationFeature"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -16309,22 +16775,22 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTSendable.properties[key];
+    id resolved = QTSerializationFeature.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTSendable.properties[key];
+    id resolved = QTSerializationFeature.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTSendable.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTSerializationFeature.properties.allValues] mutableCopy];
 
-    for (id jsonName in QTSendable.properties) {
-        id propertyName = QTSendable.properties[jsonName];
+    for (id jsonName in QTSerializationFeature.properties) {
+        id propertyName = QTSerializationFeature.properties[jsonName];
         if (![jsonName isEqualToString:propertyName]) {
             dict[jsonName] = dict[propertyName];
             [dict removeObjectForKey:propertyName];
@@ -17161,6 +17627,58 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTTextNode
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"TextNode": @"textNode",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTTextNode alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"TextNode"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"TextNode"] doubleValue] != [dict[@"TextNode"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTTextNode.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTTextNode.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    id dict = [[self dictionaryWithValuesForKeys:QTTextNode.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTTextNode.properties) {
+        id propertyName = QTTextNode.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
+}
+@end
+
 @implementation QTTrueClass
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -18134,56 +18652,221 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTUndefined alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTUndefined alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"undefined"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"undefined"] doubleValue] != [dict[@"undefined"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTUndefined.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTUndefined.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTUndefined.properties.allValues];
+}
+@end
+
+@implementation QTObj6
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"dummy": @"dummy",
+        @"unsigned": @"obj6Unsigned",
+        @"void": @"obj6Void",
+        @"volatile": @"obj6Volatile",
+        @"while": @"obj6While",
+        @"unowned": @"unowned",
+        @"unsafe": @"unsafe",
+        @"ushort": @"ushort",
+        @"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] ? [[QTObj6 alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"undefined"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"undefined"] doubleValue] != [dict[@"undefined"] longLongValue]) return nil;
+        if (![dict[@"dummy"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"dummy"] doubleValue] != [dict[@"dummy"] longLongValue]) return nil;
+        if (![dict[@"unsigned"] isKindOfClass:NSDictionary.class]) 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[@"unowned"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"unsafe"] 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;
+        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];
+        _obj6Unsigned = [QTUnsigned fromJSONDictionary:(id)_obj6Unsigned];
+        if (!_obj6Unsigned && dict[@"unsigned"] && ![dict[@"unsigned"] isKindOfClass:NSNull.class]) return nil;
+        _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;
+        _unowned = [QTUnowned fromJSONDictionary:(id)_unowned];
+        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;
+        _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;
+        _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 = QTUndefined.properties[key];
+    id resolved = QTObj6.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTUndefined.properties[key];
+    id resolved = QTObj6.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTUndefined.properties.allValues];
+    id dict = [[self dictionaryWithValuesForKeys:QTObj6.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTObj6.properties) {
+        id propertyName = QTObj6.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    [dict addEntriesFromDictionary:@{
+        @"unsigned": [_obj6Unsigned JSONDictionary],
+        @"void": [_obj6Void JSONDictionary],
+        @"volatile": [_obj6Volatile JSONDictionary],
+        @"while": [_obj6While JSONDictionary],
+        @"unowned": [_unowned JSONDictionary],
+        @"unsafe": [_unsafe JSONDictionary],
+        @"ushort": [_ushort 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 QTUnowned
+@implementation QTUnsigned
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"unowned": @"unowned",
+        @"unsigned": @"unsignedUnsigned",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTUnowned alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTUnsigned alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"unowned"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"unowned"] doubleValue] != [dict[@"unowned"] longLongValue]) return nil;
+        if (![dict[@"unsigned"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"unsigned"] doubleValue] != [dict[@"unsigned"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -18191,41 +18874,51 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTUnowned.properties[key];
+    id resolved = QTUnsigned.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTUnowned.properties[key];
+    id resolved = QTUnsigned.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTUnowned.properties.allValues];
+    id dict = [[self dictionaryWithValuesForKeys:QTUnsigned.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTUnsigned.properties) {
+        id propertyName = QTUnsigned.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
 }
 @end
 
-@implementation QTUnsafe
+@implementation QTVoid
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"unsafe": @"unsafe",
+        @"void": @"voidVoid",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTUnsafe alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTVoid alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"unsafe"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"unsafe"] doubleValue] != [dict[@"unsafe"] 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;
@@ -18233,41 +18926,51 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTUnsafe.properties[key];
+    id resolved = QTVoid.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTUnsafe.properties[key];
+    id resolved = QTVoid.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTUnsafe.properties.allValues];
+    id dict = [[self dictionaryWithValuesForKeys:QTVoid.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTVoid.properties) {
+        id propertyName = QTVoid.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
 }
 @end
 
-@implementation QTUshort
+@implementation QTVolatile
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"ushort": @"ushort",
+        @"volatile": @"volatileVolatile",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTUshort alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTVolatile 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[@"volatile"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"volatile"] doubleValue] != [dict[@"volatile"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -18275,41 +18978,51 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTUshort.properties[key];
+    id resolved = QTVolatile.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTUshort.properties[key];
+    id resolved = QTVolatile.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTUshort.properties.allValues];
+    id dict = [[self dictionaryWithValuesForKeys:QTVolatile.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTVolatile.properties) {
+        id propertyName = QTVolatile.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
 }
 @end
 
-@implementation QTUsing
+@implementation QTWhile
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"using": @"using",
+        @"while": @"whileWhile",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTUsing alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTWhile 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[@"while"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"while"] doubleValue] != [dict[@"while"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -18317,41 +19030,51 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTUsing.properties[key];
+    id resolved = QTWhile.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTUsing.properties[key];
+    id resolved = QTWhile.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTUsing.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 QTUtf8JSONReader
+@implementation QTUnowned
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"Utf8JsonReader": @"utf8JSONReader",
+        @"unowned": @"unowned",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTUtf8JSONReader alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTUnowned 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;
+        if (![dict[@"unowned"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"unowned"] doubleValue] != [dict[@"unowned"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -18359,51 +19082,41 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTUtf8JSONReader.properties[key];
+    id resolved = QTUnowned.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTUtf8JSONReader.properties[key];
-    if (resolved) [super setValue:@(0) forKey:resolved];
-}
-
-- (NSDictionary *)JSONDictionary
-{
-    id dict = [[self dictionaryWithValuesForKeys:QTUtf8JSONReader.properties.allValues] mutableCopy];
-
-    for (id jsonName in QTUtf8JSONReader.properties) {
-        id propertyName = QTUtf8JSONReader.properties[jsonName];
-        if (![jsonName isEqualToString:propertyName]) {
-            dict[jsonName] = dict[propertyName];
-            [dict removeObjectForKey:propertyName];
-        }
-    }
+    id resolved = QTUnowned.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
 
-    return dict;
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTUnowned.properties.allValues];
 }
 @end
 
-@implementation QTUtf8JSONWriter
+@implementation QTUnsafe
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"Utf8JsonWriter": @"utf8JSONWriter",
+        @"unsafe": @"unsafe",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTUtf8JSONWriter alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTUnsafe 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[@"unsafe"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"unsafe"] doubleValue] != [dict[@"unsafe"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -18411,51 +19124,41 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTUtf8JSONWriter.properties[key];
+    id resolved = QTUnsafe.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTUtf8JSONWriter.properties[key];
+    id resolved = QTUnsafe.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTUtf8JSONWriter.properties.allValues] mutableCopy];
-
-    for (id jsonName in QTUtf8JSONWriter.properties) {
-        id propertyName = QTUtf8JSONWriter.properties[jsonName];
-        if (![jsonName isEqualToString:propertyName]) {
-            dict[jsonName] = dict[propertyName];
-            [dict removeObjectForKey:propertyName];
-        }
-    }
-
-    return dict;
+    return [self dictionaryWithValuesForKeys:QTUnsafe.properties.allValues];
 }
 @end
 
-@implementation QTUUID
+@implementation QTUshort
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"UUID": @"uuid",
+        @"ushort": @"ushort",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTUUID alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTUshort 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[@"ushort"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"ushort"] doubleValue] != [dict[@"ushort"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -18463,51 +19166,41 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTUUID.properties[key];
+    id resolved = QTUshort.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTUUID.properties[key];
+    id resolved = QTUshort.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTUUID.properties.allValues] mutableCopy];
-
-    for (id jsonName in QTUUID.properties) {
-        id propertyName = QTUUID.properties[jsonName];
-        if (![jsonName isEqualToString:propertyName]) {
-            dict[jsonName] = dict[propertyName];
-            [dict removeObjectForKey:propertyName];
-        }
-    }
-
-    return dict;
+    return [self dictionaryWithValuesForKeys:QTUshort.properties.allValues];
 }
 @end
 
-@implementation QTVar
+@implementation QTUsing
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"var": @"var",
+        @"using": @"using",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTVar alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTUsing 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[@"using"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"using"] doubleValue] != [dict[@"using"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -18515,41 +19208,41 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTVar.properties[key];
+    id resolved = QTUsing.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTVar.properties[key];
+    id resolved = QTUsing.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTVar.properties.allValues];
+    return [self dictionaryWithValuesForKeys:QTUsing.properties.allValues];
 }
 @end
 
-@implementation QTVirtual
+@implementation QTUtf8JSONReader
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"virtual": @"virtual",
+        @"Utf8JsonReader": @"utf8JSONReader",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTVirtual alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTUtf8JSONReader 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[@"Utf8JsonReader"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"Utf8JsonReader"] doubleValue] != [dict[@"Utf8JsonReader"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -18557,156 +19250,103 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTVirtual.properties[key];
+    id resolved = QTUtf8JSONReader.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTVirtual.properties[key];
+    id resolved = QTUtf8JSONReader.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTVirtual.properties.allValues];
+    id dict = [[self dictionaryWithValuesForKeys:QTUtf8JSONReader.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTUtf8JSONReader.properties) {
+        id propertyName = QTUtf8JSONReader.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
 }
 @end
 
-@implementation QTObj6
+@implementation QTUtf8JSONWriter
 + (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",
+        @"Utf8JsonWriter": @"utf8JSONWriter",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTObj6 alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTUtf8JSONWriter 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[@"Utf8JsonWriter"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"Utf8JsonWriter"] doubleValue] != [dict[@"Utf8JsonWriter"] 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 = QTUtf8JSONWriter.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTObj6.properties[key];
+    id resolved = QTUtf8JSONWriter.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTObj6.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTUtf8JSONWriter.properties.allValues] mutableCopy];
 
-    for (id jsonName in QTObj6.properties) {
-        id propertyName = QTObj6.properties[jsonName];
+    for (id jsonName in QTUtf8JSONWriter.properties) {
+        id propertyName = QTUtf8JSONWriter.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 QTUUID
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"void": @"voidVoid",
+        @"UUID": @"uuid",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTVoid alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTUUID 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[@"UUID"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"UUID"] doubleValue] != [dict[@"UUID"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -18714,22 +19354,22 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTVoid.properties[key];
+    id resolved = QTUUID.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTVoid.properties[key];
+    id resolved = QTUUID.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTVoid.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTUUID.properties.allValues] mutableCopy];
 
-    for (id jsonName in QTVoid.properties) {
-        id propertyName = QTVoid.properties[jsonName];
+    for (id jsonName in QTUUID.properties) {
+        id propertyName = QTUUID.properties[jsonName];
         if (![jsonName isEqualToString:propertyName]) {
             dict[jsonName] = dict[propertyName];
             [dict removeObjectForKey:propertyName];
@@ -18740,25 +19380,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTVolatile
+@implementation QTVar
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"volatile": @"volatileVolatile",
+        @"var": @"var",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTVolatile alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTVar 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[@"var"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"var"] doubleValue] != [dict[@"var"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -18766,51 +19406,41 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTVolatile.properties[key];
+    id resolved = QTVar.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTVolatile.properties[key];
+    id resolved = QTVar.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTVolatile.properties.allValues] mutableCopy];
-
-    for (id jsonName in QTVolatile.properties) {
-        id propertyName = QTVolatile.properties[jsonName];
-        if (![jsonName isEqualToString:propertyName]) {
-            dict[jsonName] = dict[propertyName];
-            [dict removeObjectForKey:propertyName];
-        }
-    }
-
-    return dict;
+    return [self dictionaryWithValuesForKeys:QTVar.properties.allValues];
 }
 @end
 
-@implementation QTWhile
+@implementation QTVirtual
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"while": @"whileWhile",
+        @"virtual": @"virtual",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTWhile alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTVirtual 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[@"virtual"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"virtual"] doubleValue] != [dict[@"virtual"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -18818,29 +19448,19 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTWhile.properties[key];
+    id resolved = QTVirtual.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTWhile.properties[key];
+    id resolved = QTVirtual.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    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;
+    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..b3077b8 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
@@ -460,6 +460,7 @@ class Obj1 {
     private AndEq $andEq; // json:and_eq Required
     private Any $any; // json:Any Required
     private ArrayClass $array; // json:array Required
+    private ArrayNode $arrayNode; // json:ArrayNode Required
     private AsClass $as; // json:as Required
     private ASM $asm; // json:asm Required
     private Assert $assert; // json:assert Required
@@ -477,6 +478,7 @@ class Obj1 {
     private Bitor $bitor; // json:bitor Required
     private BOOLClass $bool; // json:BOOL Required
     private Boolean $boolean; // json:boolean Required
+    private BooleanNode $booleanNode; // json:BooleanNode Required
     private BreakClass $break; // json:break Required
     private Bycopy $bycopy; // json:bycopy Required
     private Byref $byref; // json:byref Required
@@ -509,8 +511,6 @@ class Obj1 {
     private Convenience $convenience; // json:convenience Required
     private Convert $convert; // json:convert Required
     private ConverterClass $converter; // json:converter Required
-    private CultureInfo $cultureInfo; // json:CultureInfo Required
-    private Date $date; // json:date Required
     private int $dummy; // json:dummy Required
     private Purple $empty; // json:_ Required
     private Imaginery $imaginery; // json:_Imaginery Required
@@ -527,6 +527,7 @@ class Obj1 {
      * @param AndEq $andEq
      * @param Any $any
      * @param ArrayClass $array
+     * @param ArrayNode $arrayNode
      * @param AsClass $as
      * @param ASM $asm
      * @param Assert $assert
@@ -544,6 +545,7 @@ class Obj1 {
      * @param Bitor $bitor
      * @param BOOLClass $bool
      * @param Boolean $boolean
+     * @param BooleanNode $booleanNode
      * @param BreakClass $break
      * @param Bycopy $bycopy
      * @param Byref $byref
@@ -576,8 +578,6 @@ class Obj1 {
      * @param Convenience $convenience
      * @param Convert $convert
      * @param ConverterClass $converter
-     * @param CultureInfo $cultureInfo
-     * @param Date $date
      * @param int $dummy
      * @param Purple $empty
      * @param Imaginery $imaginery
@@ -586,7 +586,7 @@ class Obj1 {
      * @param Obj1Class $obj1Class
      * @param Obj1BoolClass $purpleBool
      */
-    public function __construct(AbstractClass $abstract, Alignas $alignas, Alignof $alignof, AndClass $and, AndEq $andEq, Any $any, ArrayClass $array, AsClass $as, ASM $asm, Assert $assert, Associatedtype $associatedtype, Associativity $associativity, Async $async, Atomic $atomic, AtomicCancel $atomicCancel, AtomicCommit $atomicCommit, AtomicNoexcept $atomicNoexcept, Auto $auto, Await $await, Base $base, Bitand $bitand, Bitor $bitor, BOOLClass $bool, Boolean $boolean, BreakClass $break, Bycopy $bycopy, Byref $byref, Byte $byte, Calendar $calendar, CaseClass $case, CatchClass $catch, Chan $chan, Char $char, Char16T $char16T, Char32T $char32T, Checked $checked, ClassClass $class, CloneClass $clone, CoAwait $coAwait, CoReturn $coReturn, CoYield $coYield, Codable $codable, CodingKey $codingKey, CodingKeys $codingKeys, Compl $compl, Complex $complex, Concept $concept, Console $console, ConstClass $const, ConstCast $constCast, Constexpr $constexpr, Constructor $constructor, ContinueClass $continue, Convenience $convenience, Convert $convert, ConverterClass $converter, CultureInfo $cultureInfo, Date $date, int $dummy, Purple $empty, Imaginery $imaginery, AnyClass $obj1Any, Obj1Bool $obj1Bool, Obj1Class $obj1Class, Obj1BoolClass $purpleBool) {
+    public function __construct(AbstractClass $abstract, Alignas $alignas, Alignof $alignof, AndClass $and, AndEq $andEq, Any $any, ArrayClass $array, ArrayNode $arrayNode, AsClass $as, ASM $asm, Assert $assert, Associatedtype $associatedtype, Associativity $associativity, Async $async, Atomic $atomic, AtomicCancel $atomicCancel, AtomicCommit $atomicCommit, AtomicNoexcept $atomicNoexcept, Auto $auto, Await $await, Base $base, Bitand $bitand, Bitor $bitor, BOOLClass $bool, Boolean $boolean, BooleanNode $booleanNode, BreakClass $break, Bycopy $bycopy, Byref $byref, Byte $byte, Calendar $calendar, CaseClass $case, CatchClass $catch, Chan $chan, Char $char, Char16T $char16T, Char32T $char32T, Checked $checked, ClassClass $class, CloneClass $clone, CoAwait $coAwait, CoReturn $coReturn, CoYield $coYield, Codable $codable, CodingKey $codingKey, CodingKeys $codingKeys, Compl $compl, Complex $complex, Concept $concept, Console $console, ConstClass $const, ConstCast $constCast, Constexpr $constexpr, Constructor $constructor, ContinueClass $continue, Convenience $convenience, Convert $convert, ConverterClass $converter, int $dummy, Purple $empty, Imaginery $imaginery, AnyClass $obj1Any, Obj1Bool $obj1Bool, Obj1Class $obj1Class, Obj1BoolClass $purpleBool) {
         $this->abstract = $abstract;
         $this->alignas = $alignas;
         $this->alignof = $alignof;
@@ -594,6 +594,7 @@ class Obj1 {
         $this->andEq = $andEq;
         $this->any = $any;
         $this->array = $array;
+        $this->arrayNode = $arrayNode;
         $this->as = $as;
         $this->asm = $asm;
         $this->assert = $assert;
@@ -611,6 +612,7 @@ class Obj1 {
         $this->bitor = $bitor;
         $this->bool = $bool;
         $this->boolean = $boolean;
+        $this->booleanNode = $booleanNode;
         $this->break = $break;
         $this->bycopy = $bycopy;
         $this->byref = $byref;
@@ -643,8 +645,6 @@ class Obj1 {
         $this->convenience = $convenience;
         $this->convert = $convert;
         $this->converter = $converter;
-        $this->cultureInfo = $cultureInfo;
-        $this->date = $date;
         $this->dummy = $dummy;
         $this->empty = $empty;
         $this->imaginery = $imaginery;
@@ -990,6 +990,54 @@ class Obj1 {
         return ArrayClass::sample(); /*37:array*/
     }
 
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return ArrayNode
+     */
+    public static function fromArrayNode(stdClass $value): ArrayNode {
+        return ArrayNode::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toArrayNode(): stdClass {
+        if (Obj1::validateArrayNode($this->arrayNode))  {
+            return $this->arrayNode->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::arrayNode');
+    }
+
+    /**
+     * @param ArrayNode
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateArrayNode(ArrayNode $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ArrayNode
+     */
+    public function getArrayNode(): ArrayNode {
+        if (Obj1::validateArrayNode($this->arrayNode))  {
+            return $this->arrayNode;
+        }
+        throw new Exception('never get to getArrayNode Obj1::arrayNode');
+    }
+
+    /**
+     * @return ArrayNode
+     */
+    public static function sampleArrayNode(): ArrayNode {
+        return ArrayNode::sample(); /*38:arrayNode*/
+    }
+
     /**
      * @param stdClass $value
      * @throws Exception
@@ -1035,7 +1083,7 @@ class Obj1 {
      * @return AsClass
      */
     public static function sampleAs(): AsClass {
-        return AsClass::sample(); /*38:as*/
+        return AsClass::sample(); /*39:as*/
     }
 
     /**
@@ -1083,7 +1131,7 @@ class Obj1 {
      * @return ASM
      */
     public static function sampleASM(): ASM {
-        return ASM::sample(); /*39:asm*/
+        return ASM::sample(); /*40:asm*/
     }
 
     /**
@@ -1131,7 +1179,7 @@ class Obj1 {
      * @return Assert
      */
     public static function sampleAssert(): Assert {
-        return Assert::sample(); /*40:assert*/
+        return Assert::sample(); /*41:assert*/
     }
 
     /**
@@ -1179,7 +1227,7 @@ class Obj1 {
      * @return Associatedtype
      */
     public static function sampleAssociatedtype(): Associatedtype {
-        return Associatedtype::sample(); /*41:associatedtype*/
+        return Associatedtype::sample(); /*42:associatedtype*/
     }
 
     /**
@@ -1227,7 +1275,7 @@ class Obj1 {
      * @return Associativity
      */
     public static function sampleAssociativity(): Associativity {
-        return Associativity::sample(); /*42:associativity*/
+        return Associativity::sample(); /*43:associativity*/
     }
 
     /**
@@ -1275,7 +1323,7 @@ class Obj1 {
      * @return Async
      */
     public static function sampleAsync(): Async {
-        return Async::sample(); /*43:async*/
+        return Async::sample(); /*44:async*/
     }
 
     /**
@@ -1323,7 +1371,7 @@ class Obj1 {
      * @return Atomic
      */
     public static function sampleAtomic(): Atomic {
-        return Atomic::sample(); /*44:atomic*/
+        return Atomic::sample(); /*45:atomic*/
     }
 
     /**
@@ -1371,7 +1419,7 @@ class Obj1 {
      * @return AtomicCancel
      */
     public static function sampleAtomicCancel(): AtomicCancel {
-        return AtomicCancel::sample(); /*45:atomicCancel*/
+        return AtomicCancel::sample(); /*46:atomicCancel*/
     }
 
     /**
@@ -1419,7 +1467,7 @@ class Obj1 {
      * @return AtomicCommit
      */
     public static function sampleAtomicCommit(): AtomicCommit {
-        return AtomicCommit::sample(); /*46:atomicCommit*/
+        return AtomicCommit::sample(); /*47:atomicCommit*/
     }
 
     /**
@@ -1467,7 +1515,7 @@ class Obj1 {
      * @return AtomicNoexcept
      */
     public static function sampleAtomicNoexcept(): AtomicNoexcept {
-        return AtomicNoexcept::sample(); /*47:atomicNoexcept*/
+        return AtomicNoexcept::sample(); /*48:atomicNoexcept*/
     }
 
     /**
@@ -1515,7 +1563,7 @@ class Obj1 {
      * @return Auto
      */
     public static function sampleAuto(): Auto {
-        return Auto::sample(); /*48:auto*/
+        return Auto::sample(); /*49:auto*/
     }
 
     /**
@@ -1563,7 +1611,7 @@ class Obj1 {
      * @return Await
      */
     public static function sampleAwait(): Await {
-        return Await::sample(); /*49:await*/
+        return Await::sample(); /*50:await*/
     }
 
     /**
@@ -1611,7 +1659,7 @@ class Obj1 {
      * @return Base
      */
     public static function sampleBase(): Base {
-        return Base::sample(); /*50:base*/
+        return Base::sample(); /*51:base*/
     }
 
     /**
@@ -1659,7 +1707,7 @@ class Obj1 {
      * @return Bitand
      */
     public static function sampleBitand(): Bitand {
-        return Bitand::sample(); /*51:bitand*/
+        return Bitand::sample(); /*52:bitand*/
     }
 
     /**
@@ -1707,7 +1755,7 @@ class Obj1 {
      * @return Bitor
      */
     public static function sampleBitor(): Bitor {
-        return Bitor::sample(); /*52:bitor*/
+        return Bitor::sample(); /*53:bitor*/
     }
 
     /**
@@ -1755,7 +1803,7 @@ class Obj1 {
      * @return BOOLClass
      */
     public static function sampleBool(): BOOLClass {
-        return BOOLClass::sample(); /*53:bool*/
+        return BOOLClass::sample(); /*54:bool*/
     }
 
     /**
@@ -1803,7 +1851,55 @@ class Obj1 {
      * @return Boolean
      */
     public static function sampleBoolean(): Boolean {
-        return Boolean::sample(); /*54:boolean*/
+        return Boolean::sample(); /*55:boolean*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return BooleanNode
+     */
+    public static function fromBooleanNode(stdClass $value): BooleanNode {
+        return BooleanNode::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toBooleanNode(): stdClass {
+        if (Obj1::validateBooleanNode($this->booleanNode))  {
+            return $this->booleanNode->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj1::booleanNode');
+    }
+
+    /**
+     * @param BooleanNode
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateBooleanNode(BooleanNode $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return BooleanNode
+     */
+    public function getBooleanNode(): BooleanNode {
+        if (Obj1::validateBooleanNode($this->booleanNode))  {
+            return $this->booleanNode;
+        }
+        throw new Exception('never get to getBooleanNode Obj1::booleanNode');
+    }
+
+    /**
+     * @return BooleanNode
+     */
+    public static function sampleBooleanNode(): BooleanNode {
+        return BooleanNode::sample(); /*56:booleanNode*/
     }
 
     /**
@@ -1851,7 +1947,7 @@ class Obj1 {
      * @return BreakClass
      */
     public static function sampleBreak(): BreakClass {
-        return BreakClass::sample(); /*55:break*/
+        return BreakClass::sample(); /*57:break*/
     }
 
     /**
@@ -1899,7 +1995,7 @@ class Obj1 {
      * @return Bycopy
      */
     public static function sampleBycopy(): Bycopy {
-        return Bycopy::sample(); /*56:bycopy*/
+        return Bycopy::sample(); /*58:bycopy*/
     }
 
     /**
@@ -1947,7 +2043,7 @@ class Obj1 {
      * @return Byref
      */
     public static function sampleByref(): Byref {
-        return Byref::sample(); /*57:byref*/
+        return Byref::sample(); /*59:byref*/
     }
 
     /**
@@ -1995,7 +2091,7 @@ class Obj1 {
      * @return Byte
      */
     public static function sampleByte(): Byte {
-        return Byte::sample(); /*58:byte*/
+        return Byte::sample(); /*60:byte*/
     }
 
     /**
@@ -2043,7 +2139,7 @@ class Obj1 {
      * @return Calendar
      */
     public static function sampleCalendar(): Calendar {
-        return Calendar::sample(); /*59:calendar*/
+        return Calendar::sample(); /*61:calendar*/
     }
 
     /**
@@ -2091,7 +2187,7 @@ class Obj1 {
      * @return CaseClass
      */
     public static function sampleCase(): CaseClass {
-        return CaseClass::sample(); /*60:case*/
+        return CaseClass::sample(); /*62:case*/
     }
 
     /**
@@ -2139,7 +2235,7 @@ class Obj1 {
      * @return CatchClass
      */
     public static function sampleCatch(): CatchClass {
-        return CatchClass::sample(); /*61:catch*/
+        return CatchClass::sample(); /*63:catch*/
     }
 
     /**
@@ -2187,7 +2283,7 @@ class Obj1 {
      * @return Chan
      */
     public static function sampleChan(): Chan {
-        return Chan::sample(); /*62:chan*/
+        return Chan::sample(); /*64:chan*/
     }
 
     /**
@@ -2235,7 +2331,7 @@ class Obj1 {
      * @return Char
      */
     public static function sampleChar(): Char {
-        return Char::sample(); /*63:char*/
+        return Char::sample(); /*65:char*/
     }
 
     /**
@@ -2283,7 +2379,7 @@ class Obj1 {
      * @return Char16T
      */
     public static function sampleChar16T(): Char16T {
-        return Char16T::sample(); /*64:char16T*/
+        return Char16T::sample(); /*66:char16T*/
     }
 
     /**
@@ -2331,7 +2427,7 @@ class Obj1 {
      * @return Char32T
      */
     public static function sampleChar32T(): Char32T {
-        return Char32T::sample(); /*65:char32T*/
+        return Char32T::sample(); /*67:char32T*/
     }
 
     /**
@@ -2379,7 +2475,7 @@ class Obj1 {
      * @return Checked
      */
     public static function sampleChecked(): Checked {
-        return Checked::sample(); /*66:checked*/
+        return Checked::sample(); /*68:checked*/
     }
 
     /**
@@ -2427,7 +2523,7 @@ class Obj1 {
      * @return ClassClass
      */
     public static function sampleClass(): ClassClass {
-        return ClassClass::sample(); /*67:class*/
+        return ClassClass::sample(); /*69:class*/
     }
 
     /**
@@ -2475,7 +2571,7 @@ class Obj1 {
      * @return CloneClass
      */
     public static function sampleClone(): CloneClass {
-        return CloneClass::sample(); /*68:clone*/
+        return CloneClass::sample(); /*70:clone*/
     }
 
     /**
@@ -2523,7 +2619,7 @@ class Obj1 {
      * @return CoAwait
      */
     public static function sampleCoAwait(): CoAwait {
-        return CoAwait::sample(); /*69:coAwait*/
+        return CoAwait::sample(); /*71:coAwait*/
     }
 
     /**
@@ -2571,7 +2667,7 @@ class Obj1 {
      * @return CoReturn
      */
     public static function sampleCoReturn(): CoReturn {
-        return CoReturn::sample(); /*70:coReturn*/
+        return CoReturn::sample(); /*72:coReturn*/
     }
 
     /**
@@ -2619,7 +2715,7 @@ class Obj1 {
      * @return CoYield
      */
     public static function sampleCoYield(): CoYield {
-        return CoYield::sample(); /*71:coYield*/
+        return CoYield::sample(); /*73:coYield*/
     }
 
     /**
@@ -2667,7 +2763,7 @@ class Obj1 {
      * @return Codable
      */
     public static function sampleCodable(): Codable {
-        return Codable::sample(); /*72:codable*/
+        return Codable::sample(); /*74:codable*/
     }
 
     /**
@@ -2715,7 +2811,7 @@ class Obj1 {
      * @return CodingKey
      */
     public static function sampleCodingKey(): CodingKey {
-        return CodingKey::sample(); /*73:codingKey*/
+        return CodingKey::sample(); /*75:codingKey*/
     }
 
     /**
@@ -2763,7 +2859,7 @@ class Obj1 {
      * @return CodingKeys
      */
     public static function sampleCodingKeys(): CodingKeys {
-        return CodingKeys::sample(); /*74:codingKeys*/
+        return CodingKeys::sample(); /*76:codingKeys*/
     }
 
     /**
@@ -2811,7 +2907,7 @@ class Obj1 {
      * @return Compl
      */
     public static function sampleCompl(): Compl {
-        return Compl::sample(); /*75:compl*/
+        return Compl::sample(); /*77:compl*/
     }
 
     /**
@@ -2859,7 +2955,7 @@ class Obj1 {
      * @return Complex
      */
     public static function sampleComplex(): Complex {
-        return Complex::sample(); /*76:complex*/
+        return Complex::sample(); /*78:complex*/
     }
 
     /**
@@ -2907,7 +3003,7 @@ class Obj1 {
      * @return Concept
      */
     public static function sampleConcept(): Concept {
-        return Concept::sample(); /*77:concept*/
+        return Concept::sample(); /*79:concept*/
     }
 
     /**
@@ -2955,7 +3051,7 @@ class Obj1 {
      * @return Console
      */
     public static function sampleConsole(): Console {
-        return Console::sample(); /*78:console*/
+        return Console::sample(); /*80:console*/
     }
 
     /**
@@ -3003,7 +3099,7 @@ class Obj1 {
      * @return ConstClass
      */
     public static function sampleConst(): ConstClass {
-        return ConstClass::sample(); /*79:const*/
+        return ConstClass::sample(); /*81:const*/
     }
 
     /**
@@ -3051,7 +3147,7 @@ class Obj1 {
      * @return ConstCast
      */
     public static function sampleConstCast(): ConstCast {
-        return ConstCast::sample(); /*80:constCast*/
+        return ConstCast::sample(); /*82:constCast*/
     }
 
     /**
@@ -3099,7 +3195,7 @@ class Obj1 {
      * @return Constexpr
      */
     public static function sampleConstexpr(): Constexpr {
-        return Constexpr::sample(); /*81:constexpr*/
+        return Constexpr::sample(); /*83:constexpr*/
     }
 
     /**
@@ -3147,7 +3243,7 @@ class Obj1 {
      * @return Constructor
      */
     public static function sampleConstructor(): Constructor {
-        return Constructor::sample(); /*82:constructor*/
+        return Constructor::sample(); /*84:constructor*/
     }
 
     /**
@@ -3195,7 +3291,7 @@ class Obj1 {
      * @return ContinueClass
      */
     public static function sampleContinue(): ContinueClass {
-        return ContinueClass::sample(); /*83:continue*/
+        return ContinueClass::sample(); /*85:continue*/
     }
 
     /**
@@ -3243,7 +3339,7 @@ class Obj1 {
      * @return Convenience
      */
     public static function sampleConvenience(): Convenience {
-        return Convenience::sample(); /*84:convenience*/
+        return Convenience::sample(); /*86:convenience*/
     }
 
     /**
@@ -3291,7 +3387,7 @@ class Obj1 {
      * @return Convert
      */
     public static function sampleConvert(): Convert {
-        return Convert::sample(); /*85:convert*/
+        return Convert::sample(); /*87:convert*/
     }
 
     /**
@@ -3339,103 +3435,7 @@ class Obj1 {
      * @return ConverterClass
      */
     public static function sampleConverter(): ConverterClass {
-        return ConverterClass::sample(); /*86:converter*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return CultureInfo
-     */
-    public static function fromCultureInfo(stdClass $value): CultureInfo {
-        return CultureInfo::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toCultureInfo(): stdClass {
-        if (Obj1::validateCultureInfo($this->cultureInfo))  {
-            return $this->cultureInfo->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj1::cultureInfo');
-    }
-
-    /**
-     * @param CultureInfo
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateCultureInfo(CultureInfo $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return CultureInfo
-     */
-    public function getCultureInfo(): CultureInfo {
-        if (Obj1::validateCultureInfo($this->cultureInfo))  {
-            return $this->cultureInfo;
-        }
-        throw new Exception('never get to getCultureInfo Obj1::cultureInfo');
-    }
-
-    /**
-     * @return CultureInfo
-     */
-    public static function sampleCultureInfo(): CultureInfo {
-        return CultureInfo::sample(); /*87:cultureInfo*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Date
-     */
-    public static function fromDate(stdClass $value): Date {
-        return Date::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toDate(): stdClass {
-        if (Obj1::validateDate($this->date))  {
-            return $this->date->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj1::date');
-    }
-
-    /**
-     * @param Date
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateDate(Date $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return Date
-     */
-    public function getDate(): Date {
-        if (Obj1::validateDate($this->date))  {
-            return $this->date;
-        }
-        throw new Exception('never get to getDate Obj1::date');
-    }
-
-    /**
-     * @return Date
-     */
-    public static function sampleDate(): Date {
-        return Date::sample(); /*88:date*/
+        return ConverterClass::sample(); /*88:converter*/
     }
 
     /**
@@ -3785,6 +3785,7 @@ class Obj1 {
         || Obj1::validateAndEq($this->andEq)
         || Obj1::validateAny($this->any)
         || Obj1::validateArray($this->array)
+        || Obj1::validateArrayNode($this->arrayNode)
         || Obj1::validateAs($this->as)
         || Obj1::validateASM($this->asm)
         || Obj1::validateAssert($this->assert)
@@ -3802,6 +3803,7 @@ class Obj1 {
         || Obj1::validateBitor($this->bitor)
         || Obj1::validateBool($this->bool)
         || Obj1::validateBoolean($this->boolean)
+        || Obj1::validateBooleanNode($this->booleanNode)
         || Obj1::validateBreak($this->break)
         || Obj1::validateBycopy($this->bycopy)
         || Obj1::validateByref($this->byref)
@@ -3834,8 +3836,6 @@ class Obj1 {
         || Obj1::validateConvenience($this->convenience)
         || Obj1::validateConvert($this->convert)
         || Obj1::validateConverter($this->converter)
-        || Obj1::validateCultureInfo($this->cultureInfo)
-        || Obj1::validateDate($this->date)
         || Obj1::validateDummy($this->dummy)
         || Obj1::validateEmpty($this->empty)
         || Obj1::validateImaginery($this->imaginery)
@@ -3858,6 +3858,7 @@ class Obj1 {
         $out->{'and_eq'} = $this->toAndEq();
         $out->{'Any'} = $this->toAny();
         $out->{'array'} = $this->toArray();
+        $out->{'ArrayNode'} = $this->toArrayNode();
         $out->{'as'} = $this->toAs();
         $out->{'asm'} = $this->toASM();
         $out->{'assert'} = $this->toAssert();
@@ -3875,6 +3876,7 @@ class Obj1 {
         $out->{'bitor'} = $this->toBitor();
         $out->{'BOOL'} = $this->toBool();
         $out->{'boolean'} = $this->toBoolean();
+        $out->{'BooleanNode'} = $this->toBooleanNode();
         $out->{'break'} = $this->toBreak();
         $out->{'bycopy'} = $this->toBycopy();
         $out->{'byref'} = $this->toByref();
@@ -3907,8 +3909,6 @@ class Obj1 {
         $out->{'convenience'} = $this->toConvenience();
         $out->{'convert'} = $this->toConvert();
         $out->{'converter'} = $this->toConverter();
-        $out->{'CultureInfo'} = $this->toCultureInfo();
-        $out->{'date'} = $this->toDate();
         $out->{'dummy'} = $this->toDummy();
         $out->{'_'} = $this->toEmpty();
         $out->{'_Imaginery'} = $this->toImaginery();
@@ -3946,6 +3946,9 @@ class Obj1 {
         if (!property_exists($obj, 'array')) {
             throw new Exception("Missing required property");
         }
+        if (!property_exists($obj, 'ArrayNode')) {
+            throw new Exception("Missing required property");
+        }
         if (!property_exists($obj, 'as')) {
             throw new Exception("Missing required property");
         }
@@ -3997,6 +4000,9 @@ class Obj1 {
         if (!property_exists($obj, 'boolean')) {
             throw new Exception("Missing required property");
         }
+        if (!property_exists($obj, 'BooleanNode')) {
+            throw new Exception("Missing required property");
+        }
         if (!property_exists($obj, 'break')) {
             throw new Exception("Missing required property");
         }
@@ -4093,12 +4099,6 @@ class Obj1 {
         if (!property_exists($obj, 'converter')) {
             throw new Exception("Missing required property");
         }
-        if (!property_exists($obj, 'CultureInfo')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'date')) {
-            throw new Exception("Missing required property");
-        }
         if (!property_exists($obj, 'dummy')) {
             throw new Exception("Missing required property");
         }
@@ -4128,6 +4128,7 @@ class Obj1 {
         ,Obj1::fromAndEq($obj->{'and_eq'})
         ,Obj1::fromAny($obj->{'Any'})
         ,Obj1::fromArray($obj->{'array'})
+        ,Obj1::fromArrayNode($obj->{'ArrayNode'})
         ,Obj1::fromAs($obj->{'as'})
         ,Obj1::fromASM($obj->{'asm'})
         ,Obj1::fromAssert($obj->{'assert'})
@@ -4145,6 +4146,7 @@ class Obj1 {
         ,Obj1::fromBitor($obj->{'bitor'})
         ,Obj1::fromBool($obj->{'BOOL'})
         ,Obj1::fromBoolean($obj->{'boolean'})
+        ,Obj1::fromBooleanNode($obj->{'BooleanNode'})
         ,Obj1::fromBreak($obj->{'break'})
         ,Obj1::fromBycopy($obj->{'bycopy'})
         ,Obj1::fromByref($obj->{'byref'})
@@ -4177,8 +4179,6 @@ class Obj1 {
         ,Obj1::fromConvenience($obj->{'convenience'})
         ,Obj1::fromConvert($obj->{'convert'})
         ,Obj1::fromConverter($obj->{'converter'})
-        ,Obj1::fromCultureInfo($obj->{'CultureInfo'})
-        ,Obj1::fromDate($obj->{'date'})
         ,Obj1::fromDummy($obj->{'dummy'})
         ,Obj1::fromEmpty($obj->{'_'})
         ,Obj1::fromImaginery($obj->{'_Imaginery'})
@@ -4201,6 +4201,7 @@ class Obj1 {
         ,Obj1::sampleAndEq()
         ,Obj1::sampleAny()
         ,Obj1::sampleArray()
+        ,Obj1::sampleArrayNode()
         ,Obj1::sampleAs()
         ,Obj1::sampleASM()
         ,Obj1::sampleAssert()
@@ -4218,6 +4219,7 @@ class Obj1 {
         ,Obj1::sampleBitor()
         ,Obj1::sampleBool()
         ,Obj1::sampleBoolean()
+        ,Obj1::sampleBooleanNode()
         ,Obj1::sampleBreak()
         ,Obj1::sampleBycopy()
         ,Obj1::sampleByref()
@@ -4250,8 +4252,6 @@ class Obj1 {
         ,Obj1::sampleConvenience()
         ,Obj1::sampleConvert()
         ,Obj1::sampleConverter()
-        ,Obj1::sampleCultureInfo()
-        ,Obj1::sampleDate()
         ,Obj1::sampleDummy()
         ,Obj1::sampleEmpty()
         ,Obj1::sampleImaginery()
@@ -4970,6 +4970,107 @@ class ArrayClass {
     }
 }
 
+// This is an autogenerated file:ArrayNode
+
+class ArrayNode {
+    private int $arrayNode; // json:ArrayNode Required
+
+    /**
+     * @param int $arrayNode
+     */
+    public function __construct(int $arrayNode) {
+        $this->arrayNode = $arrayNode;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromArrayNode(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toArrayNode(): int {
+        if (ArrayNode::validateArrayNode($this->arrayNode))  {
+            return $this->arrayNode; /*int*/
+        }
+        throw new Exception('never get to this ArrayNode::arrayNode');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateArrayNode(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getArrayNode(): int {
+        if (ArrayNode::validateArrayNode($this->arrayNode))  {
+            return $this->arrayNode;
+        }
+        throw new Exception('never get to getArrayNode ArrayNode::arrayNode');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleArrayNode(): int {
+        return 31; /*31:arrayNode*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return ArrayNode::validateArrayNode($this->arrayNode);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'ArrayNode'} = $this->toArrayNode();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return ArrayNode
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ArrayNode {
+        if (!property_exists($obj, 'ArrayNode')) {
+            throw new Exception("Missing required property");
+        }
+        return new ArrayNode(
+         ArrayNode::fromArrayNode($obj->{'ArrayNode'})
+        );
+    }
+
+    /**
+     * @return ArrayNode
+     */
+    public static function sample(): ArrayNode {
+        return new ArrayNode(
+         ArrayNode::sampleArrayNode()
+        );
+    }
+}
+
 // This is an autogenerated file:AsClass
 
 class AsClass {
@@ -6687,6 +6788,107 @@ class Boolean {
     }
 }
 
+// This is an autogenerated file:BooleanNode
+
+class BooleanNode {
+    private int $booleanNode; // json:BooleanNode Required
+
+    /**
+     * @param int $booleanNode
+     */
+    public function __construct(int $booleanNode) {
+        $this->booleanNode = $booleanNode;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromBooleanNode(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toBooleanNode(): int {
+        if (BooleanNode::validateBooleanNode($this->booleanNode))  {
+            return $this->booleanNode; /*int*/
+        }
+        throw new Exception('never get to this BooleanNode::booleanNode');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateBooleanNode(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getBooleanNode(): int {
+        if (BooleanNode::validateBooleanNode($this->booleanNode))  {
+            return $this->booleanNode;
+        }
+        throw new Exception('never get to getBooleanNode BooleanNode::booleanNode');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleBooleanNode(): int {
+        return 31; /*31:booleanNode*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return BooleanNode::validateBooleanNode($this->booleanNode);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'BooleanNode'} = $this->toBooleanNode();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return BooleanNode
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): BooleanNode {
+        if (!property_exists($obj, 'BooleanNode')) {
+            throw new Exception("Missing required property");
+        }
+        return new BooleanNode(
+         BooleanNode::fromBooleanNode($obj->{'BooleanNode'})
+        );
+    }
+
+    /**
+     * @return BooleanNode
+     */
+    public static function sample(): BooleanNode {
+        return new BooleanNode(
+         BooleanNode::sampleBooleanNode()
+        );
+    }
+}
+
 // This is an autogenerated file:BreakClass
 
 class BreakClass {
@@ -9919,208 +10121,6 @@ class ConverterClass {
     }
 }
 
-// This is an autogenerated file:CultureInfo
-
-class CultureInfo {
-    private int $cultureInfo; // json:CultureInfo Required
-
-    /**
-     * @param int $cultureInfo
-     */
-    public function __construct(int $cultureInfo) {
-        $this->cultureInfo = $cultureInfo;
-    }
-
-    /**
-     * @param int $value
-     * @throws Exception
-     * @return int
-     */
-    public static function fromCultureInfo(int $value): int {
-        return $value; /*int*/
-    }
-
-    /**
-     * @throws Exception
-     * @return int
-     */
-    public function toCultureInfo(): int {
-        if (CultureInfo::validateCultureInfo($this->cultureInfo))  {
-            return $this->cultureInfo; /*int*/
-        }
-        throw new Exception('never get to this CultureInfo::cultureInfo');
-    }
-
-    /**
-     * @param int
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateCultureInfo(int $value): bool {
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return int
-     */
-    public function getCultureInfo(): int {
-        if (CultureInfo::validateCultureInfo($this->cultureInfo))  {
-            return $this->cultureInfo;
-        }
-        throw new Exception('never get to getCultureInfo CultureInfo::cultureInfo');
-    }
-
-    /**
-     * @return int
-     */
-    public static function sampleCultureInfo(): int {
-        return 31; /*31:cultureInfo*/
-    }
-
-    /**
-     * @throws Exception
-     * @return bool
-     */
-    public function validate(): bool {
-        return CultureInfo::validateCultureInfo($this->cultureInfo);
-    }
-
-    /**
-     * @return stdClass
-     * @throws Exception
-     */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'CultureInfo'} = $this->toCultureInfo();
-        return $out;
-    }
-
-    /**
-     * @param stdClass $obj
-     * @return CultureInfo
-     * @throws Exception
-     */
-    public static function from(stdClass $obj): CultureInfo {
-        if (!property_exists($obj, 'CultureInfo')) {
-            throw new Exception("Missing required property");
-        }
-        return new CultureInfo(
-         CultureInfo::fromCultureInfo($obj->{'CultureInfo'})
-        );
-    }
-
-    /**
-     * @return CultureInfo
-     */
-    public static function sample(): CultureInfo {
-        return new CultureInfo(
-         CultureInfo::sampleCultureInfo()
-        );
-    }
-}
-
-// This is an autogenerated file:Date
-
-class Date {
-    private int $date; // json:date Required
-
-    /**
-     * @param int $date
-     */
-    public function __construct(int $date) {
-        $this->date = $date;
-    }
-
-    /**
-     * @param int $value
-     * @throws Exception
-     * @return int
-     */
-    public static function fromDate(int $value): int {
-        return $value; /*int*/
-    }
-
-    /**
-     * @throws Exception
-     * @return int
-     */
-    public function toDate(): int {
-        if (Date::validateDate($this->date))  {
-            return $this->date; /*int*/
-        }
-        throw new Exception('never get to this Date::date');
-    }
-
-    /**
-     * @param int
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateDate(int $value): bool {
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return int
-     */
-    public function getDate(): int {
-        if (Date::validateDate($this->date))  {
-            return $this->date;
-        }
-        throw new Exception('never get to getDate Date::date');
-    }
-
-    /**
-     * @return int
-     */
-    public static function sampleDate(): int {
-        return 31; /*31:date*/
-    }
-
-    /**
-     * @throws Exception
-     * @return bool
-     */
-    public function validate(): bool {
-        return Date::validateDate($this->date);
-    }
-
-    /**
-     * @return stdClass
-     * @throws Exception
-     */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'date'} = $this->toDate();
-        return $out;
-    }
-
-    /**
-     * @param stdClass $obj
-     * @return Date
-     * @throws Exception
-     */
-    public static function from(stdClass $obj): Date {
-        if (!property_exists($obj, 'date')) {
-            throw new Exception("Missing required property");
-        }
-        return new Date(
-         Date::fromDate($obj->{'date'})
-        );
-    }
-
-    /**
-     * @return Date
-     */
-    public static function sample(): Date {
-        return new Date(
-         Date::sampleDate()
-        );
-    }
-}
-
 // This is an autogenerated file:Purple
 
 class Purple {
@@ -10730,6 +10730,8 @@ class Obj1BoolClass {
 // This is an autogenerated file:Obj2
 
 class Obj2 {
+    private CultureInfo $cultureInfo; // json:CultureInfo Required
+    private Date $date; // json:date Required
     private DateFormatter $dateFormatter; // json:DateFormatter Required
     private DateOnly $dateOnly; // json:DateOnly Required
     private DateOnlyConverter $dateOnlyConverter; // json:DateOnlyConverter Required
@@ -10750,11 +10752,13 @@ class Obj2 {
     private Del $del; // json:del Required
     private Delegate $delegate; // json:delegate Required
     private Delete $delete; // json:delete Required
+    private DeserializationFeature $deserializationFeature; // json:DeserializationFeature Required
     private Dict $dict; // json:dict Required
     private Dictionary $dictionary; // json:dictionary Required
     private DidSet $didSet; // json:didSet Required
     private DoClass $do; // json:do Required
     private Double $double; // json:double Required
+    private DoubleNode $doubleNode; // json:DoubleNode Required
     private int $dummy; // json:dummy Required
     private Dynamic $dynamic; // json:dynamic Required
     private DynamicCast $dynamicCast; // json:dynamic_cast Required
@@ -10790,13 +10794,11 @@ class Obj2 {
     private FromJSON $fromJSON; // json:from_json Required
     private Func $func; // json:func Required
     private FunctionClass $function; // json:function Required
-    private Get $get; // json:get Required
-    private GlobalClass $global; // json:global Required
-    private Go $go; // json:go Required
-    private GotoClass $goto; // json:goto Required
     private Obj2False $obj2False; // json:false Required
 
     /**
+     * @param CultureInfo $cultureInfo
+     * @param Date $date
      * @param DateFormatter $dateFormatter
      * @param DateOnly $dateOnly
      * @param DateOnlyConverter $dateOnlyConverter
@@ -10817,11 +10819,13 @@ class Obj2 {
      * @param Del $del
      * @param Delegate $delegate
      * @param Delete $delete
+     * @param DeserializationFeature $deserializationFeature
      * @param Dict $dict
      * @param Dictionary $dictionary
      * @param DidSet $didSet
      * @param DoClass $do
      * @param Double $double
+     * @param DoubleNode $doubleNode
      * @param int $dummy
      * @param Dynamic $dynamic
      * @param DynamicCast $dynamicCast
@@ -10857,13 +10861,11 @@ class Obj2 {
      * @param FromJSON $fromJSON
      * @param Func $func
      * @param FunctionClass $function
-     * @param Get $get
-     * @param GlobalClass $global
-     * @param Go $go
-     * @param GotoClass $goto
      * @param Obj2False $obj2False
      */
-    public function __construct(DateFormatter $dateFormatter, DateOnly $dateOnly, DateOnlyConverter $dateOnlyConverter, DateParseHandling $dateParseHandling, DateTimeClass $dateTime, DateTimeStyles $dateTimeStyles, Debugger $debugger, Decimal $decimal, DeclareClass $declare, Decltype $decltype, DecodeString $decodeString, Decoder $decoder, DecodingError $decodingError, Def $def, DefaultClass $default, Defer $defer, Deinit $deinit, Del $del, Delegate $delegate, Delete $delete, Dict $dict, Dictionary $dictionary, DidSet $didSet, DoClass $do, Double $double, int $dummy, Dynamic $dynamic, DynamicCast $dynamicCast, Elif $elif, ElseClass $else, EncodeQuickType $encodeQuickType, Encoder $encoder, EnumClass $enum, EnumValues $enumValues, EqualityContract $equalityContract, Equatable $equatable, Event $event, Except $except, ExceptionClass $exception, Explicit $explicit, Export $export, Exposing $exposing, ExtendsClass $extends, Extension $extension, Extern $extern, Fallthrough $fallthrough, FalseClass $false, Fileprivate $fileprivate, FinalClass $final, FinallyClass $finally, Fixed $fixed, FloatClass $float, ForClass $for, ForeachClass $foreach, FormatException $formatException, Friend $friend, From $from, FromJSON $fromJSON, Func $func, FunctionClass $function, Get $get, GlobalClass $global, Go $go, GotoClass $goto, Obj2False $obj2False) {
+    public function __construct(CultureInfo $cultureInfo, Date $date, DateFormatter $dateFormatter, DateOnly $dateOnly, DateOnlyConverter $dateOnlyConverter, DateParseHandling $dateParseHandling, DateTimeClass $dateTime, DateTimeStyles $dateTimeStyles, Debugger $debugger, Decimal $decimal, DeclareClass $declare, Decltype $decltype, DecodeString $decodeString, Decoder $decoder, DecodingError $decodingError, Def $def, DefaultClass $default, Defer $defer, Deinit $deinit, Del $del, Delegate $delegate, Delete $delete, DeserializationFeature $deserializationFeature, Dict $dict, Dictionary $dictionary, DidSet $didSet, DoClass $do, Double $double, DoubleNode $doubleNode, int $dummy, Dynamic $dynamic, DynamicCast $dynamicCast, Elif $elif, ElseClass $else, EncodeQuickType $encodeQuickType, Encoder $encoder, EnumClass $enum, EnumValues $enumValues, EqualityContract $equalityContract, Equatable $equatable, Event $event, Except $except, ExceptionClass $exception, Explicit $explicit, Export $export, Exposing $exposing, ExtendsClass $extends, Extension $extension, Extern $extern, Fallthrough $fallthrough, FalseClass $false, Fileprivate $fileprivate, FinalClass $final, FinallyClass $finally, Fixed $fixed, FloatClass $float, ForClass $for, ForeachClass $foreach, FormatException $formatException, Friend $friend, From $from, FromJSON $fromJSON, Func $func, FunctionClass $function, Obj2False $obj2False) {
+        $this->cultureInfo = $cultureInfo;
+        $this->date = $date;
         $this->dateFormatter = $dateFormatter;
         $this->dateOnly = $dateOnly;
         $this->dateOnlyConverter = $dateOnlyConverter;
@@ -10884,11 +10886,13 @@ class Obj2 {
         $this->del = $del;
         $this->delegate = $delegate;
         $this->delete = $delete;
+        $this->deserializationFeature = $deserializationFeature;
         $this->dict = $dict;
         $this->dictionary = $dictionary;
         $this->didSet = $didSet;
         $this->do = $do;
         $this->double = $double;
+        $this->doubleNode = $doubleNode;
         $this->dummy = $dummy;
         $this->dynamic = $dynamic;
         $this->dynamicCast = $dynamicCast;
@@ -10924,13 +10928,105 @@ class Obj2 {
         $this->fromJSON = $fromJSON;
         $this->func = $func;
         $this->function = $function;
-        $this->get = $get;
-        $this->global = $global;
-        $this->go = $go;
-        $this->goto = $goto;
         $this->obj2False = $obj2False;
     }
 
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return CultureInfo
+     */
+    public static function fromCultureInfo(stdClass $value): CultureInfo {
+        return CultureInfo::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toCultureInfo(): stdClass {
+        if (Obj2::validateCultureInfo($this->cultureInfo))  {
+            return $this->cultureInfo->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::cultureInfo');
+    }
+
+    /**
+     * @param CultureInfo
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateCultureInfo(CultureInfo $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return CultureInfo
+     */
+    public function getCultureInfo(): CultureInfo {
+        if (Obj2::validateCultureInfo($this->cultureInfo))  {
+            return $this->cultureInfo;
+        }
+        throw new Exception('never get to getCultureInfo Obj2::cultureInfo');
+    }
+
+    /**
+     * @return CultureInfo
+     */
+    public static function sampleCultureInfo(): CultureInfo {
+        return CultureInfo::sample(); /*31:cultureInfo*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Date
+     */
+    public static function fromDate(stdClass $value): Date {
+        return Date::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toDate(): stdClass {
+        if (Obj2::validateDate($this->date))  {
+            return $this->date->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::date');
+    }
+
+    /**
+     * @param Date
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDate(Date $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Date
+     */
+    public function getDate(): Date {
+        if (Obj2::validateDate($this->date))  {
+            return $this->date;
+        }
+        throw new Exception('never get to getDate Obj2::date');
+    }
+
+    /**
+     * @return Date
+     */
+    public static function sampleDate(): Date {
+        return Date::sample(); /*32:date*/
+    }
+
     /**
      * @param stdClass $value
      * @throws Exception
@@ -10976,7 +11072,7 @@ class Obj2 {
      * @return DateFormatter
      */
     public static function sampleDateFormatter(): DateFormatter {
-        return DateFormatter::sample(); /*31:dateFormatter*/
+        return DateFormatter::sample(); /*33:dateFormatter*/
     }
 
     /**
@@ -11024,7 +11120,7 @@ class Obj2 {
      * @return DateOnly
      */
     public static function sampleDateOnly(): DateOnly {
-        return DateOnly::sample(); /*32:dateOnly*/
+        return DateOnly::sample(); /*34:dateOnly*/
     }
 
     /**
@@ -11072,7 +11168,7 @@ class Obj2 {
      * @return DateOnlyConverter
      */
     public static function sampleDateOnlyConverter(): DateOnlyConverter {
-        return DateOnlyConverter::sample(); /*33:dateOnlyConverter*/
+        return DateOnlyConverter::sample(); /*35:dateOnlyConverter*/
     }
 
     /**
@@ -11120,7 +11216,7 @@ class Obj2 {
      * @return DateParseHandling
      */
     public static function sampleDateParseHandling(): DateParseHandling {
-        return DateParseHandling::sample(); /*34:dateParseHandling*/
+        return DateParseHandling::sample(); /*36:dateParseHandling*/
     }
 
     /**
@@ -11168,7 +11264,7 @@ class Obj2 {
      * @return DateTimeClass
      */
     public static function sampleDateTime(): DateTimeClass {
-        return DateTimeClass::sample(); /*35:dateTime*/
+        return DateTimeClass::sample(); /*37:dateTime*/
     }
 
     /**
@@ -11216,7 +11312,7 @@ class Obj2 {
      * @return DateTimeStyles
      */
     public static function sampleDateTimeStyles(): DateTimeStyles {
-        return DateTimeStyles::sample(); /*36:dateTimeStyles*/
+        return DateTimeStyles::sample(); /*38:dateTimeStyles*/
     }
 
     /**
@@ -11264,7 +11360,7 @@ class Obj2 {
      * @return Debugger
      */
     public static function sampleDebugger(): Debugger {
-        return Debugger::sample(); /*37:debugger*/
+        return Debugger::sample(); /*39:debugger*/
     }
 
     /**
@@ -11312,7 +11408,7 @@ class Obj2 {
      * @return Decimal
      */
     public static function sampleDecimal(): Decimal {
-        return Decimal::sample(); /*38:decimal*/
+        return Decimal::sample(); /*40:decimal*/
     }
 
     /**
@@ -11360,7 +11456,7 @@ class Obj2 {
      * @return DeclareClass
      */
     public static function sampleDeclare(): DeclareClass {
-        return DeclareClass::sample(); /*39:declare*/
+        return DeclareClass::sample(); /*41:declare*/
     }
 
     /**
@@ -11408,7 +11504,7 @@ class Obj2 {
      * @return Decltype
      */
     public static function sampleDecltype(): Decltype {
-        return Decltype::sample(); /*40:decltype*/
+        return Decltype::sample(); /*42:decltype*/
     }
 
     /**
@@ -11456,7 +11552,7 @@ class Obj2 {
      * @return DecodeString
      */
     public static function sampleDecodeString(): DecodeString {
-        return DecodeString::sample(); /*41:decodeString*/
+        return DecodeString::sample(); /*43:decodeString*/
     }
 
     /**
@@ -11504,7 +11600,7 @@ class Obj2 {
      * @return Decoder
      */
     public static function sampleDecoder(): Decoder {
-        return Decoder::sample(); /*42:decoder*/
+        return Decoder::sample(); /*44:decoder*/
     }
 
     /**
@@ -11552,7 +11648,7 @@ class Obj2 {
      * @return DecodingError
      */
     public static function sampleDecodingError(): DecodingError {
-        return DecodingError::sample(); /*43:decodingError*/
+        return DecodingError::sample(); /*45:decodingError*/
     }
 
     /**
@@ -11600,7 +11696,7 @@ class Obj2 {
      * @return Def
      */
     public static function sampleDef(): Def {
-        return Def::sample(); /*44:def*/
+        return Def::sample(); /*46:def*/
     }
 
     /**
@@ -11648,7 +11744,7 @@ class Obj2 {
      * @return DefaultClass
      */
     public static function sampleDefault(): DefaultClass {
-        return DefaultClass::sample(); /*45:default*/
+        return DefaultClass::sample(); /*47:default*/
     }
 
     /**
@@ -11696,7 +11792,7 @@ class Obj2 {
      * @return Defer
      */
     public static function sampleDefer(): Defer {
-        return Defer::sample(); /*46:defer*/
+        return Defer::sample(); /*48:defer*/
     }
 
     /**
@@ -11744,7 +11840,7 @@ class Obj2 {
      * @return Deinit
      */
     public static function sampleDeinit(): Deinit {
-        return Deinit::sample(); /*47:deinit*/
+        return Deinit::sample(); /*49:deinit*/
     }
 
     /**
@@ -11792,7 +11888,7 @@ class Obj2 {
      * @return Del
      */
     public static function sampleDel(): Del {
-        return Del::sample(); /*48:del*/
+        return Del::sample(); /*50:del*/
     }
 
     /**
@@ -11840,7 +11936,7 @@ class Obj2 {
      * @return Delegate
      */
     public static function sampleDelegate(): Delegate {
-        return Delegate::sample(); /*49:delegate*/
+        return Delegate::sample(); /*51:delegate*/
     }
 
     /**
@@ -11888,7 +11984,55 @@ class Obj2 {
      * @return Delete
      */
     public static function sampleDelete(): Delete {
-        return Delete::sample(); /*50:delete*/
+        return Delete::sample(); /*52:delete*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return DeserializationFeature
+     */
+    public static function fromDeserializationFeature(stdClass $value): DeserializationFeature {
+        return DeserializationFeature::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toDeserializationFeature(): stdClass {
+        if (Obj2::validateDeserializationFeature($this->deserializationFeature))  {
+            return $this->deserializationFeature->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::deserializationFeature');
+    }
+
+    /**
+     * @param DeserializationFeature
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDeserializationFeature(DeserializationFeature $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return DeserializationFeature
+     */
+    public function getDeserializationFeature(): DeserializationFeature {
+        if (Obj2::validateDeserializationFeature($this->deserializationFeature))  {
+            return $this->deserializationFeature;
+        }
+        throw new Exception('never get to getDeserializationFeature Obj2::deserializationFeature');
+    }
+
+    /**
+     * @return DeserializationFeature
+     */
+    public static function sampleDeserializationFeature(): DeserializationFeature {
+        return DeserializationFeature::sample(); /*53:deserializationFeature*/
     }
 
     /**
@@ -11936,7 +12080,7 @@ class Obj2 {
      * @return Dict
      */
     public static function sampleDict(): Dict {
-        return Dict::sample(); /*51:dict*/
+        return Dict::sample(); /*54:dict*/
     }
 
     /**
@@ -11984,7 +12128,7 @@ class Obj2 {
      * @return Dictionary
      */
     public static function sampleDictionary(): Dictionary {
-        return Dictionary::sample(); /*52:dictionary*/
+        return Dictionary::sample(); /*55:dictionary*/
     }
 
     /**
@@ -12032,7 +12176,7 @@ class Obj2 {
      * @return DidSet
      */
     public static function sampleDidSet(): DidSet {
-        return DidSet::sample(); /*53:didSet*/
+        return DidSet::sample(); /*56:didSet*/
     }
 
     /**
@@ -12080,7 +12224,7 @@ class Obj2 {
      * @return DoClass
      */
     public static function sampleDo(): DoClass {
-        return DoClass::sample(); /*54:do*/
+        return DoClass::sample(); /*57:do*/
     }
 
     /**
@@ -12128,7 +12272,55 @@ class Obj2 {
      * @return Double
      */
     public static function sampleDouble(): Double {
-        return Double::sample(); /*55:double*/
+        return Double::sample(); /*58:double*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return DoubleNode
+     */
+    public static function fromDoubleNode(stdClass $value): DoubleNode {
+        return DoubleNode::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toDoubleNode(): stdClass {
+        if (Obj2::validateDoubleNode($this->doubleNode))  {
+            return $this->doubleNode->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj2::doubleNode');
+    }
+
+    /**
+     * @param DoubleNode
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDoubleNode(DoubleNode $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return DoubleNode
+     */
+    public function getDoubleNode(): DoubleNode {
+        if (Obj2::validateDoubleNode($this->doubleNode))  {
+            return $this->doubleNode;
+        }
+        throw new Exception('never get to getDoubleNode Obj2::doubleNode');
+    }
+
+    /**
+     * @return DoubleNode
+     */
+    public static function sampleDoubleNode(): DoubleNode {
+        return DoubleNode::sample(); /*59:doubleNode*/
     }
 
     /**
@@ -12175,7 +12367,7 @@ class Obj2 {
      * @return int
      */
     public static function sampleDummy(): int {
-        return 56; /*56:dummy*/
+        return 60; /*60:dummy*/
     }
 
     /**
@@ -12223,7 +12415,7 @@ class Obj2 {
      * @return Dynamic
      */
     public static function sampleDynamic(): Dynamic {
-        return Dynamic::sample(); /*57:dynamic*/
+        return Dynamic::sample(); /*61:dynamic*/
     }
 
     /**
@@ -12271,7 +12463,7 @@ class Obj2 {
      * @return DynamicCast
      */
     public static function sampleDynamicCast(): DynamicCast {
-        return DynamicCast::sample(); /*58:dynamicCast*/
+        return DynamicCast::sample(); /*62:dynamicCast*/
     }
 
     /**
@@ -12319,7 +12511,7 @@ class Obj2 {
      * @return Elif
      */
     public static function sampleElif(): Elif {
-        return Elif::sample(); /*59:elif*/
+        return Elif::sample(); /*63:elif*/
     }
 
     /**
@@ -12367,7 +12559,7 @@ class Obj2 {
      * @return ElseClass
      */
     public static function sampleElse(): ElseClass {
-        return ElseClass::sample(); /*60:else*/
+        return ElseClass::sample(); /*64:else*/
     }
 
     /**
@@ -12415,7 +12607,7 @@ class Obj2 {
      * @return EncodeQuickType
      */
     public static function sampleEncodeQuickType(): EncodeQuickType {
-        return EncodeQuickType::sample(); /*61:encodeQuickType*/
+        return EncodeQuickType::sample(); /*65:encodeQuickType*/
     }
 
     /**
@@ -12463,7 +12655,7 @@ class Obj2 {
      * @return Encoder
      */
     public static function sampleEncoder(): Encoder {
-        return Encoder::sample(); /*62:encoder*/
+        return Encoder::sample(); /*66:encoder*/
     }
 
     /**
@@ -12511,7 +12703,7 @@ class Obj2 {
      * @return EnumClass
      */
     public static function sampleEnum(): EnumClass {
-        return EnumClass::sample(); /*63:enum*/
+        return EnumClass::sample(); /*67:enum*/
     }
 
     /**
@@ -12559,7 +12751,7 @@ class Obj2 {
      * @return EnumValues
      */
     public static function sampleEnumValues(): EnumValues {
-        return EnumValues::sample(); /*64:enumValues*/
+        return EnumValues::sample(); /*68:enumValues*/
     }
 
     /**
@@ -12607,7 +12799,7 @@ class Obj2 {
      * @return EqualityContract
      */
     public static function sampleEqualityContract(): EqualityContract {
-        return EqualityContract::sample(); /*65:equalityContract*/
+        return EqualityContract::sample(); /*69:equalityContract*/
     }
 
     /**
@@ -12655,7 +12847,7 @@ class Obj2 {
      * @return Equatable
      */
     public static function sampleEquatable(): Equatable {
-        return Equatable::sample(); /*66:equatable*/
+        return Equatable::sample(); /*70:equatable*/
     }
 
     /**
@@ -12703,7 +12895,7 @@ class Obj2 {
      * @return Event
      */
     public static function sampleEvent(): Event {
-        return Event::sample(); /*67:event*/
+        return Event::sample(); /*71:event*/
     }
 
     /**
@@ -12751,7 +12943,7 @@ class Obj2 {
      * @return Except
      */
     public static function sampleExcept(): Except {
-        return Except::sample(); /*68:except*/
+        return Except::sample(); /*72:except*/
     }
 
     /**
@@ -12799,7 +12991,7 @@ class Obj2 {
      * @return ExceptionClass
      */
     public static function sampleException(): ExceptionClass {
-        return ExceptionClass::sample(); /*69:exception*/
+        return ExceptionClass::sample(); /*73:exception*/
     }
 
     /**
@@ -12847,7 +13039,7 @@ class Obj2 {
      * @return Explicit
      */
     public static function sampleExplicit(): Explicit {
-        return Explicit::sample(); /*70:explicit*/
+        return Explicit::sample(); /*74:explicit*/
     }
 
     /**
@@ -12895,7 +13087,7 @@ class Obj2 {
      * @return Export
      */
     public static function sampleExport(): Export {
-        return Export::sample(); /*71:export*/
+        return Export::sample(); /*75:export*/
     }
 
     /**
@@ -12943,7 +13135,7 @@ class Obj2 {
      * @return Exposing
      */
     public static function sampleExposing(): Exposing {
-        return Exposing::sample(); /*72:exposing*/
+        return Exposing::sample(); /*76:exposing*/
     }
 
     /**
@@ -12991,7 +13183,7 @@ class Obj2 {
      * @return ExtendsClass
      */
     public static function sampleExtends(): ExtendsClass {
-        return ExtendsClass::sample(); /*73:extends*/
+        return ExtendsClass::sample(); /*77:extends*/
     }
 
     /**
@@ -13039,7 +13231,7 @@ class Obj2 {
      * @return Extension
      */
     public static function sampleExtension(): Extension {
-        return Extension::sample(); /*74:extension*/
+        return Extension::sample(); /*78:extension*/
     }
 
     /**
@@ -13087,7 +13279,7 @@ class Obj2 {
      * @return Extern
      */
     public static function sampleExtern(): Extern {
-        return Extern::sample(); /*75:extern*/
+        return Extern::sample(); /*79:extern*/
     }
 
     /**
@@ -13135,7 +13327,7 @@ class Obj2 {
      * @return Fallthrough
      */
     public static function sampleFallthrough(): Fallthrough {
-        return Fallthrough::sample(); /*76:fallthrough*/
+        return Fallthrough::sample(); /*80:fallthrough*/
     }
 
     /**
@@ -13183,7 +13375,7 @@ class Obj2 {
      * @return FalseClass
      */
     public static function sampleFalse(): FalseClass {
-        return FalseClass::sample(); /*77:false*/
+        return FalseClass::sample(); /*81:false*/
     }
 
     /**
@@ -13231,7 +13423,7 @@ class Obj2 {
      * @return Fileprivate
      */
     public static function sampleFileprivate(): Fileprivate {
-        return Fileprivate::sample(); /*78:fileprivate*/
+        return Fileprivate::sample(); /*82:fileprivate*/
     }
 
     /**
@@ -13279,7 +13471,7 @@ class Obj2 {
      * @return FinalClass
      */
     public static function sampleFinal(): FinalClass {
-        return FinalClass::sample(); /*79:final*/
+        return FinalClass::sample(); /*83:final*/
     }
 
     /**
@@ -13327,7 +13519,7 @@ class Obj2 {
      * @return FinallyClass
      */
     public static function sampleFinally(): FinallyClass {
-        return FinallyClass::sample(); /*80:finally*/
+        return FinallyClass::sample(); /*84:finally*/
     }
 
     /**
@@ -13375,7 +13567,7 @@ class Obj2 {
      * @return Fixed
      */
     public static function sampleFixed(): Fixed {
-        return Fixed::sample(); /*81:fixed*/
+        return Fixed::sample(); /*85:fixed*/
     }
 
     /**
@@ -13423,7 +13615,7 @@ class Obj2 {
      * @return FloatClass
      */
     public static function sampleFloat(): FloatClass {
-        return FloatClass::sample(); /*82:float*/
+        return FloatClass::sample(); /*86:float*/
     }
 
     /**
@@ -13471,7 +13663,7 @@ class Obj2 {
      * @return ForClass
      */
     public static function sampleFor(): ForClass {
-        return ForClass::sample(); /*83:for*/
+        return ForClass::sample(); /*87:for*/
     }
 
     /**
@@ -13519,7 +13711,7 @@ class Obj2 {
      * @return ForeachClass
      */
     public static function sampleForeach(): ForeachClass {
-        return ForeachClass::sample(); /*84:foreach*/
+        return ForeachClass::sample(); /*88:foreach*/
     }
 
     /**
@@ -13567,7 +13759,7 @@ class Obj2 {
      * @return FormatException
      */
     public static function sampleFormatException(): FormatException {
-        return FormatException::sample(); /*85:formatException*/
+        return FormatException::sample(); /*89:formatException*/
     }
 
     /**
@@ -13615,7 +13807,7 @@ class Obj2 {
      * @return Friend
      */
     public static function sampleFriend(): Friend {
-        return Friend::sample(); /*86:friend*/
+        return Friend::sample(); /*90:friend*/
     }
 
     /**
@@ -13663,7 +13855,7 @@ class Obj2 {
      * @return From
      */
     public static function sampleFrom(): From {
-        return From::sample(); /*87:from*/
+        return From::sample(); /*91:from*/
     }
 
     /**
@@ -13711,7 +13903,7 @@ class Obj2 {
      * @return FromJSON
      */
     public static function sampleFromJSON(): FromJSON {
-        return FromJSON::sample(); /*88:fromJSON*/
+        return FromJSON::sample(); /*92:fromJSON*/
     }
 
     /**
@@ -13759,7 +13951,7 @@ class Obj2 {
      * @return Func
      */
     public static function sampleFunc(): Func {
-        return Func::sample(); /*89:func*/
+        return Func::sample(); /*93:func*/
     }
 
     /**
@@ -13807,199 +13999,7 @@ class Obj2 {
      * @return FunctionClass
      */
     public static function sampleFunction(): FunctionClass {
-        return FunctionClass::sample(); /*90:function*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Get
-     */
-    public static function fromGet(stdClass $value): Get {
-        return Get::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toGet(): stdClass {
-        if (Obj2::validateGet($this->get))  {
-            return $this->get->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj2::get');
-    }
-
-    /**
-     * @param Get
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateGet(Get $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return Get
-     */
-    public function getGet(): Get {
-        if (Obj2::validateGet($this->get))  {
-            return $this->get;
-        }
-        throw new Exception('never get to getGet Obj2::get');
-    }
-
-    /**
-     * @return Get
-     */
-    public static function sampleGet(): Get {
-        return Get::sample(); /*91:get*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return GlobalClass
-     */
-    public static function fromGlobal(stdClass $value): GlobalClass {
-        return GlobalClass::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toGlobal(): stdClass {
-        if (Obj2::validateGlobal($this->global))  {
-            return $this->global->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj2::global');
-    }
-
-    /**
-     * @param GlobalClass
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateGlobal(GlobalClass $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return GlobalClass
-     */
-    public function getGlobal(): GlobalClass {
-        if (Obj2::validateGlobal($this->global))  {
-            return $this->global;
-        }
-        throw new Exception('never get to getGlobal Obj2::global');
-    }
-
-    /**
-     * @return GlobalClass
-     */
-    public static function sampleGlobal(): GlobalClass {
-        return GlobalClass::sample(); /*92:global*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Go
-     */
-    public static function fromGo(stdClass $value): Go {
-        return Go::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toGo(): stdClass {
-        if (Obj2::validateGo($this->go))  {
-            return $this->go->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj2::go');
-    }
-
-    /**
-     * @param Go
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateGo(Go $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return Go
-     */
-    public function getGo(): Go {
-        if (Obj2::validateGo($this->go))  {
-            return $this->go;
-        }
-        throw new Exception('never get to getGo Obj2::go');
-    }
-
-    /**
-     * @return Go
-     */
-    public static function sampleGo(): Go {
-        return Go::sample(); /*93:go*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return GotoClass
-     */
-    public static function fromGoto(stdClass $value): GotoClass {
-        return GotoClass::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toGoto(): stdClass {
-        if (Obj2::validateGoto($this->goto))  {
-            return $this->goto->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj2::goto');
-    }
-
-    /**
-     * @param GotoClass
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateGoto(GotoClass $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return GotoClass
-     */
-    public function getGoto(): GotoClass {
-        if (Obj2::validateGoto($this->goto))  {
-            return $this->goto;
-        }
-        throw new Exception('never get to getGoto Obj2::goto');
-    }
-
-    /**
-     * @return GotoClass
-     */
-    public static function sampleGoto(): GotoClass {
-        return GotoClass::sample(); /*94:goto*/
+        return FunctionClass::sample(); /*94:function*/
     }
 
     /**
@@ -14055,7 +14055,9 @@ class Obj2 {
      * @return bool
      */
     public function validate(): bool {
-        return Obj2::validateDateFormatter($this->dateFormatter)
+        return Obj2::validateCultureInfo($this->cultureInfo)
+        || Obj2::validateDate($this->date)
+        || Obj2::validateDateFormatter($this->dateFormatter)
         || Obj2::validateDateOnly($this->dateOnly)
         || Obj2::validateDateOnlyConverter($this->dateOnlyConverter)
         || Obj2::validateDateParseHandling($this->dateParseHandling)
@@ -14075,11 +14077,13 @@ class Obj2 {
         || Obj2::validateDel($this->del)
         || Obj2::validateDelegate($this->delegate)
         || Obj2::validateDelete($this->delete)
+        || Obj2::validateDeserializationFeature($this->deserializationFeature)
         || Obj2::validateDict($this->dict)
         || Obj2::validateDictionary($this->dictionary)
         || Obj2::validateDidSet($this->didSet)
         || Obj2::validateDo($this->do)
         || Obj2::validateDouble($this->double)
+        || Obj2::validateDoubleNode($this->doubleNode)
         || Obj2::validateDummy($this->dummy)
         || Obj2::validateDynamic($this->dynamic)
         || Obj2::validateDynamicCast($this->dynamicCast)
@@ -14115,10 +14119,6 @@ class Obj2 {
         || Obj2::validateFromJSON($this->fromJSON)
         || Obj2::validateFunc($this->func)
         || Obj2::validateFunction($this->function)
-        || Obj2::validateGet($this->get)
-        || Obj2::validateGlobal($this->global)
-        || Obj2::validateGo($this->go)
-        || Obj2::validateGoto($this->goto)
         || Obj2::validateObj2False($this->obj2False);
     }
 
@@ -14128,6 +14128,8 @@ class Obj2 {
      */
     public function to(): stdClass  {
         $out = new stdClass();
+        $out->{'CultureInfo'} = $this->toCultureInfo();
+        $out->{'date'} = $this->toDate();
         $out->{'DateFormatter'} = $this->toDateFormatter();
         $out->{'DateOnly'} = $this->toDateOnly();
         $out->{'DateOnlyConverter'} = $this->toDateOnlyConverter();
@@ -14148,11 +14150,13 @@ class Obj2 {
         $out->{'del'} = $this->toDel();
         $out->{'delegate'} = $this->toDelegate();
         $out->{'delete'} = $this->toDelete();
+        $out->{'DeserializationFeature'} = $this->toDeserializationFeature();
         $out->{'dict'} = $this->toDict();
         $out->{'dictionary'} = $this->toDictionary();
         $out->{'didSet'} = $this->toDidSet();
         $out->{'do'} = $this->toDo();
         $out->{'double'} = $this->toDouble();
+        $out->{'DoubleNode'} = $this->toDoubleNode();
         $out->{'dummy'} = $this->toDummy();
         $out->{'dynamic'} = $this->toDynamic();
         $out->{'dynamic_cast'} = $this->toDynamicCast();
@@ -14188,10 +14192,6 @@ class Obj2 {
         $out->{'from_json'} = $this->toFromJSON();
         $out->{'func'} = $this->toFunc();
         $out->{'function'} = $this->toFunction();
-        $out->{'get'} = $this->toGet();
-        $out->{'global'} = $this->toGlobal();
-        $out->{'go'} = $this->toGo();
-        $out->{'goto'} = $this->toGoto();
         $out->{'false'} = $this->toObj2False();
         return $out;
     }
@@ -14202,6 +14202,12 @@ class Obj2 {
      * @throws Exception
      */
     public static function from(stdClass $obj): Obj2 {
+        if (!property_exists($obj, 'CultureInfo')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'date')) {
+            throw new Exception("Missing required property");
+        }
         if (!property_exists($obj, 'DateFormatter')) {
             throw new Exception("Missing required property");
         }
@@ -14262,6 +14268,9 @@ class Obj2 {
         if (!property_exists($obj, 'delete')) {
             throw new Exception("Missing required property");
         }
+        if (!property_exists($obj, 'DeserializationFeature')) {
+            throw new Exception("Missing required property");
+        }
         if (!property_exists($obj, 'dict')) {
             throw new Exception("Missing required property");
         }
@@ -14277,6 +14286,9 @@ class Obj2 {
         if (!property_exists($obj, 'double')) {
             throw new Exception("Missing required property");
         }
+        if (!property_exists($obj, 'DoubleNode')) {
+            throw new Exception("Missing required property");
+        }
         if (!property_exists($obj, 'dummy')) {
             throw new Exception("Missing required property");
         }
@@ -14382,23 +14394,13 @@ class Obj2 {
         if (!property_exists($obj, 'function')) {
             throw new Exception("Missing required property");
         }
-        if (!property_exists($obj, 'get')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'global')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'go')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'goto')) {
-            throw new Exception("Missing required property");
-        }
         if (!property_exists($obj, 'false')) {
             throw new Exception("Missing required property");
         }
         return new Obj2(
-         Obj2::fromDateFormatter($obj->{'DateFormatter'})
+         Obj2::fromCultureInfo($obj->{'CultureInfo'})
+        ,Obj2::fromDate($obj->{'date'})
+        ,Obj2::fromDateFormatter($obj->{'DateFormatter'})
         ,Obj2::fromDateOnly($obj->{'DateOnly'})
         ,Obj2::fromDateOnlyConverter($obj->{'DateOnlyConverter'})
         ,Obj2::fromDateParseHandling($obj->{'date_parse_handling'})
@@ -14418,11 +14420,13 @@ class Obj2 {
         ,Obj2::fromDel($obj->{'del'})
         ,Obj2::fromDelegate($obj->{'delegate'})
         ,Obj2::fromDelete($obj->{'delete'})
+        ,Obj2::fromDeserializationFeature($obj->{'DeserializationFeature'})
         ,Obj2::fromDict($obj->{'dict'})
         ,Obj2::fromDictionary($obj->{'dictionary'})
         ,Obj2::fromDidSet($obj->{'didSet'})
         ,Obj2::fromDo($obj->{'do'})
         ,Obj2::fromDouble($obj->{'double'})
+        ,Obj2::fromDoubleNode($obj->{'DoubleNode'})
         ,Obj2::fromDummy($obj->{'dummy'})
         ,Obj2::fromDynamic($obj->{'dynamic'})
         ,Obj2::fromDynamicCast($obj->{'dynamic_cast'})
@@ -14458,10 +14462,6 @@ class Obj2 {
         ,Obj2::fromFromJSON($obj->{'from_json'})
         ,Obj2::fromFunc($obj->{'func'})
         ,Obj2::fromFunction($obj->{'function'})
-        ,Obj2::fromGet($obj->{'get'})
-        ,Obj2::fromGlobal($obj->{'global'})
-        ,Obj2::fromGo($obj->{'go'})
-        ,Obj2::fromGoto($obj->{'goto'})
         ,Obj2::fromObj2False($obj->{'false'})
         );
     }
@@ -14471,7 +14471,9 @@ class Obj2 {
      */
     public static function sample(): Obj2 {
         return new Obj2(
-         Obj2::sampleDateFormatter()
+         Obj2::sampleCultureInfo()
+        ,Obj2::sampleDate()
+        ,Obj2::sampleDateFormatter()
         ,Obj2::sampleDateOnly()
         ,Obj2::sampleDateOnlyConverter()
         ,Obj2::sampleDateParseHandling()
@@ -14491,11 +14493,13 @@ class Obj2 {
         ,Obj2::sampleDel()
         ,Obj2::sampleDelegate()
         ,Obj2::sampleDelete()
+        ,Obj2::sampleDeserializationFeature()
         ,Obj2::sampleDict()
         ,Obj2::sampleDictionary()
         ,Obj2::sampleDidSet()
         ,Obj2::sampleDo()
         ,Obj2::sampleDouble()
+        ,Obj2::sampleDoubleNode()
         ,Obj2::sampleDummy()
         ,Obj2::sampleDynamic()
         ,Obj2::sampleDynamicCast()
@@ -14531,15 +14535,213 @@ class Obj2 {
         ,Obj2::sampleFromJSON()
         ,Obj2::sampleFunc()
         ,Obj2::sampleFunction()
-        ,Obj2::sampleGet()
-        ,Obj2::sampleGlobal()
-        ,Obj2::sampleGo()
-        ,Obj2::sampleGoto()
         ,Obj2::sampleObj2False()
         );
     }
 }
 
+// This is an autogenerated file:CultureInfo
+
+class CultureInfo {
+    private int $cultureInfo; // json:CultureInfo Required
+
+    /**
+     * @param int $cultureInfo
+     */
+    public function __construct(int $cultureInfo) {
+        $this->cultureInfo = $cultureInfo;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromCultureInfo(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toCultureInfo(): int {
+        if (CultureInfo::validateCultureInfo($this->cultureInfo))  {
+            return $this->cultureInfo; /*int*/
+        }
+        throw new Exception('never get to this CultureInfo::cultureInfo');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateCultureInfo(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getCultureInfo(): int {
+        if (CultureInfo::validateCultureInfo($this->cultureInfo))  {
+            return $this->cultureInfo;
+        }
+        throw new Exception('never get to getCultureInfo CultureInfo::cultureInfo');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleCultureInfo(): int {
+        return 31; /*31:cultureInfo*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return CultureInfo::validateCultureInfo($this->cultureInfo);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'CultureInfo'} = $this->toCultureInfo();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return CultureInfo
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): CultureInfo {
+        if (!property_exists($obj, 'CultureInfo')) {
+            throw new Exception("Missing required property");
+        }
+        return new CultureInfo(
+         CultureInfo::fromCultureInfo($obj->{'CultureInfo'})
+        );
+    }
+
+    /**
+     * @return CultureInfo
+     */
+    public static function sample(): CultureInfo {
+        return new CultureInfo(
+         CultureInfo::sampleCultureInfo()
+        );
+    }
+}
+
+// This is an autogenerated file:Date
+
+class Date {
+    private int $date; // json:date Required
+
+    /**
+     * @param int $date
+     */
+    public function __construct(int $date) {
+        $this->date = $date;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromDate(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toDate(): int {
+        if (Date::validateDate($this->date))  {
+            return $this->date; /*int*/
+        }
+        throw new Exception('never get to this Date::date');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDate(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getDate(): int {
+        if (Date::validateDate($this->date))  {
+            return $this->date;
+        }
+        throw new Exception('never get to getDate Date::date');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDate(): int {
+        return 31; /*31:date*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Date::validateDate($this->date);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'date'} = $this->toDate();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Date
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Date {
+        if (!property_exists($obj, 'date')) {
+            throw new Exception("Missing required property");
+        }
+        return new Date(
+         Date::fromDate($obj->{'date'})
+        );
+    }
+
+    /**
+     * @return Date
+     */
+    public static function sample(): Date {
+        return new Date(
+         Date::sampleDate()
+        );
+    }
+}
+
 // This is an autogenerated file:DateFormatter
 
 class DateFormatter {
@@ -16567,6 +16769,107 @@ class Delete {
     }
 }
 
+// This is an autogenerated file:DeserializationFeature
+
+class DeserializationFeature {
+    private int $deserializationFeature; // json:DeserializationFeature Required
+
+    /**
+     * @param int $deserializationFeature
+     */
+    public function __construct(int $deserializationFeature) {
+        $this->deserializationFeature = $deserializationFeature;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromDeserializationFeature(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toDeserializationFeature(): int {
+        if (DeserializationFeature::validateDeserializationFeature($this->deserializationFeature))  {
+            return $this->deserializationFeature; /*int*/
+        }
+        throw new Exception('never get to this DeserializationFeature::deserializationFeature');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDeserializationFeature(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getDeserializationFeature(): int {
+        if (DeserializationFeature::validateDeserializationFeature($this->deserializationFeature))  {
+            return $this->deserializationFeature;
+        }
+        throw new Exception('never get to getDeserializationFeature DeserializationFeature::deserializationFeature');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDeserializationFeature(): int {
+        return 31; /*31:deserializationFeature*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return DeserializationFeature::validateDeserializationFeature($this->deserializationFeature);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'DeserializationFeature'} = $this->toDeserializationFeature();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return DeserializationFeature
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): DeserializationFeature {
+        if (!property_exists($obj, 'DeserializationFeature')) {
+            throw new Exception("Missing required property");
+        }
+        return new DeserializationFeature(
+         DeserializationFeature::fromDeserializationFeature($obj->{'DeserializationFeature'})
+        );
+    }
+
+    /**
+     * @return DeserializationFeature
+     */
+    public static function sample(): DeserializationFeature {
+        return new DeserializationFeature(
+         DeserializationFeature::sampleDeserializationFeature()
+        );
+    }
+}
+
 // This is an autogenerated file:Dict
 
 class Dict {
@@ -17072,6 +17375,107 @@ class Double {
     }
 }
 
+// This is an autogenerated file:DoubleNode
+
+class DoubleNode {
+    private int $doubleNode; // json:DoubleNode Required
+
+    /**
+     * @param int $doubleNode
+     */
+    public function __construct(int $doubleNode) {
+        $this->doubleNode = $doubleNode;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromDoubleNode(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toDoubleNode(): int {
+        if (DoubleNode::validateDoubleNode($this->doubleNode))  {
+            return $this->doubleNode; /*int*/
+        }
+        throw new Exception('never get to this DoubleNode::doubleNode');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDoubleNode(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getDoubleNode(): int {
+        if (DoubleNode::validateDoubleNode($this->doubleNode))  {
+            return $this->doubleNode;
+        }
+        throw new Exception('never get to getDoubleNode DoubleNode::doubleNode');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleDoubleNode(): int {
+        return 31; /*31:doubleNode*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return DoubleNode::validateDoubleNode($this->doubleNode);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'DoubleNode'} = $this->toDoubleNode();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return DoubleNode
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): DoubleNode {
+        if (!property_exists($obj, 'DoubleNode')) {
+            throw new Exception("Missing required property");
+        }
+        return new DoubleNode(
+         DoubleNode::fromDoubleNode($obj->{'DoubleNode'})
+        );
+    }
+
+    /**
+     * @return DoubleNode
+     */
+    public static function sample(): DoubleNode {
+        return new DoubleNode(
+         DoubleNode::sampleDoubleNode()
+        );
+    }
+}
+
 // This is an autogenerated file:Dynamic
 
 class Dynamic {
@@ -20567,410 +20971,6 @@ class FunctionClass {
     }
 }
 
-// This is an autogenerated file:Get
-
-class Get {
-    private int $get; // json:get Required
-
-    /**
-     * @param int $get
-     */
-    public function __construct(int $get) {
-        $this->get = $get;
-    }
-
-    /**
-     * @param int $value
-     * @throws Exception
-     * @return int
-     */
-    public static function fromGet(int $value): int {
-        return $value; /*int*/
-    }
-
-    /**
-     * @throws Exception
-     * @return int
-     */
-    public function toGet(): int {
-        if (Get::validateGet($this->get))  {
-            return $this->get; /*int*/
-        }
-        throw new Exception('never get to this Get::get');
-    }
-
-    /**
-     * @param int
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateGet(int $value): bool {
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return int
-     */
-    public function getGet(): int {
-        if (Get::validateGet($this->get))  {
-            return $this->get;
-        }
-        throw new Exception('never get to getGet Get::get');
-    }
-
-    /**
-     * @return int
-     */
-    public static function sampleGet(): int {
-        return 31; /*31:get*/
-    }
-
-    /**
-     * @throws Exception
-     * @return bool
-     */
-    public function validate(): bool {
-        return Get::validateGet($this->get);
-    }
-
-    /**
-     * @return stdClass
-     * @throws Exception
-     */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'get'} = $this->toGet();
-        return $out;
-    }
-
-    /**
-     * @param stdClass $obj
-     * @return Get
-     * @throws Exception
-     */
-    public static function from(stdClass $obj): Get {
-        if (!property_exists($obj, 'get')) {
-            throw new Exception("Missing required property");
-        }
-        return new Get(
-         Get::fromGet($obj->{'get'})
-        );
-    }
-
-    /**
-     * @return Get
-     */
-    public static function sample(): Get {
-        return new Get(
-         Get::sampleGet()
-        );
-    }
-}
-
-// This is an autogenerated file:GlobalClass
-
-class GlobalClass {
-    private int $global; // json:global Required
-
-    /**
-     * @param int $global
-     */
-    public function __construct(int $global) {
-        $this->global = $global;
-    }
-
-    /**
-     * @param int $value
-     * @throws Exception
-     * @return int
-     */
-    public static function fromGlobal(int $value): int {
-        return $value; /*int*/
-    }
-
-    /**
-     * @throws Exception
-     * @return int
-     */
-    public function toGlobal(): int {
-        if (GlobalClass::validateGlobal($this->global))  {
-            return $this->global; /*int*/
-        }
-        throw new Exception('never get to this GlobalClass::global');
-    }
-
-    /**
-     * @param int
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateGlobal(int $value): bool {
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return int
-     */
-    public function getGlobal(): int {
-        if (GlobalClass::validateGlobal($this->global))  {
-            return $this->global;
-        }
-        throw new Exception('never get to getGlobal GlobalClass::global');
-    }
-
-    /**
-     * @return int
-     */
-    public static function sampleGlobal(): int {
-        return 31; /*31:global*/
-    }
-
-    /**
-     * @throws Exception
-     * @return bool
-     */
-    public function validate(): bool {
-        return GlobalClass::validateGlobal($this->global);
-    }
-
-    /**
-     * @return stdClass
-     * @throws Exception
-     */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'global'} = $this->toGlobal();
-        return $out;
-    }
-
-    /**
-     * @param stdClass $obj
-     * @return GlobalClass
-     * @throws Exception
-     */
-    public static function from(stdClass $obj): GlobalClass {
-        if (!property_exists($obj, 'global')) {
-            throw new Exception("Missing required property");
-        }
-        return new GlobalClass(
-         GlobalClass::fromGlobal($obj->{'global'})
-        );
-    }
-
-    /**
-     * @return GlobalClass
-     */
-    public static function sample(): GlobalClass {
-        return new GlobalClass(
-         GlobalClass::sampleGlobal()
-        );
-    }
-}
-
-// This is an autogenerated file:Go
-
-class Go {
-    private int $go; // json:go Required
-
-    /**
-     * @param int $go
-     */
-    public function __construct(int $go) {
-        $this->go = $go;
-    }
-
-    /**
-     * @param int $value
-     * @throws Exception
-     * @return int
-     */
-    public static function fromGo(int $value): int {
-        return $value; /*int*/
-    }
-
-    /**
-     * @throws Exception
-     * @return int
-     */
-    public function toGo(): int {
-        if (Go::validateGo($this->go))  {
-            return $this->go; /*int*/
-        }
-        throw new Exception('never get to this Go::go');
-    }
-
-    /**
-     * @param int
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateGo(int $value): bool {
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return int
-     */
-    public function getGo(): int {
-        if (Go::validateGo($this->go))  {
-            return $this->go;
-        }
-        throw new Exception('never get to getGo Go::go');
-    }
-
-    /**
-     * @return int
-     */
-    public static function sampleGo(): int {
-        return 31; /*31:go*/
-    }
-
-    /**
-     * @throws Exception
-     * @return bool
-     */
-    public function validate(): bool {
-        return Go::validateGo($this->go);
-    }
-
-    /**
-     * @return stdClass
-     * @throws Exception
-     */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'go'} = $this->toGo();
-        return $out;
-    }
-
-    /**
-     * @param stdClass $obj
-     * @return Go
-     * @throws Exception
-     */
-    public static function from(stdClass $obj): Go {
-        if (!property_exists($obj, 'go')) {
-            throw new Exception("Missing required property");
-        }
-        return new Go(
-         Go::fromGo($obj->{'go'})
-        );
-    }
-
-    /**
-     * @return Go
-     */
-    public static function sample(): Go {
-        return new Go(
-         Go::sampleGo()
-        );
-    }
-}
-
-// This is an autogenerated file:GotoClass
-
-class GotoClass {
-    private int $goto; // json:goto Required
-
-    /**
-     * @param int $goto
-     */
-    public function __construct(int $goto) {
-        $this->goto = $goto;
-    }
-
-    /**
-     * @param int $value
-     * @throws Exception
-     * @return int
-     */
-    public static function fromGoto(int $value): int {
-        return $value; /*int*/
-    }
-
-    /**
-     * @throws Exception
-     * @return int
-     */
-    public function toGoto(): int {
-        if (GotoClass::validateGoto($this->goto))  {
-            return $this->goto; /*int*/
-        }
-        throw new Exception('never get to this GotoClass::goto');
-    }
-
-    /**
-     * @param int
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateGoto(int $value): bool {
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return int
-     */
-    public function getGoto(): int {
-        if (GotoClass::validateGoto($this->goto))  {
-            return $this->goto;
-        }
-        throw new Exception('never get to getGoto GotoClass::goto');
-    }
-
-    /**
-     * @return int
-     */
-    public static function sampleGoto(): int {
-        return 31; /*31:goto*/
-    }
-
-    /**
-     * @throws Exception
-     * @return bool
-     */
-    public function validate(): bool {
-        return GotoClass::validateGoto($this->goto);
-    }
-
-    /**
-     * @return stdClass
-     * @throws Exception
-     */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'goto'} = $this->toGoto();
-        return $out;
-    }
-
-    /**
-     * @param stdClass $obj
-     * @return GotoClass
-     * @throws Exception
-     */
-    public static function from(stdClass $obj): GotoClass {
-        if (!property_exists($obj, 'goto')) {
-            throw new Exception("Missing required property");
-        }
-        return new GotoClass(
-         GotoClass::fromGoto($obj->{'goto'})
-        );
-    }
-
-    /**
-     * @return GotoClass
-     */
-    public static function sample(): GotoClass {
-        return new GotoClass(
-         GotoClass::sampleGoto()
-        );
-    }
-}
-
 // This is an autogenerated file:Obj2False
 
 class Obj2False {
@@ -21076,6 +21076,10 @@ class Obj2False {
 
 class Obj3 {
     private int $dummy; // json:dummy Required
+    private Get $get; // json:get Required
+    private GlobalClass $global; // json:global Required
+    private Go $go; // json:go Required
+    private GotoClass $goto; // json:goto Required
     private Guard $guard; // json:guard Required
     private HasOwnProperty $hasOwnProperty; // json:hasOwnProperty Required
     private HashCode $hashCode; // json:hashCode Required
@@ -21095,6 +21099,7 @@ class Obj3 {
     private Inout $inout; // json:inout Required
     private InstanceofClass $instanceof; // json:instanceof Required
     private IntClass $int; // json:int Required
+    private IntNode $intNode; // json:IntNode Required
     private InterfaceClass $interface; // json:interface Required
     private Internal $internal; // json:internal Required
     private Is $is; // json:is Required
@@ -21127,6 +21132,7 @@ class Obj3 {
     private LocaleClass $locale; // json:Locale Required
     private Lock $lock; // json:lock Required
     private Long $long; // json:long Required
+    private LongNode $longNode; // json:LongNode Required
     private Map $map; // json:map Required
     private MapEntry $mapEntry; // json:MapEntry Required
     private MetadataPropertyHandling $metadataPropertyHandling; // json:metadata_property_handling Required
@@ -21134,15 +21140,13 @@ class Obj3 {
     private Mutable $mutable; // json:mutable Required
     private Mutating $mutating; // json:mutating Required
     private NamespaceClass $namespace; // json:namespace Required
-    private Native $native; // json:native Required
-    private NewClass $new; // json:new Required
-    private Newtonsoft $newtonsoft; // json:newtonsoft Required
-    private Nil $nil; // json:nil Required
-    private No $no; // json:NO Required
-    private Noexcept $noexcept; // json:noexcept Required
 
     /**
      * @param int $dummy
+     * @param Get $get
+     * @param GlobalClass $global
+     * @param Go $go
+     * @param GotoClass $goto
      * @param Guard $guard
      * @param HasOwnProperty $hasOwnProperty
      * @param HashCode $hashCode
@@ -21162,6 +21166,7 @@ class Obj3 {
      * @param Inout $inout
      * @param InstanceofClass $instanceof
      * @param IntClass $int
+     * @param IntNode $intNode
      * @param InterfaceClass $interface
      * @param Internal $internal
      * @param Is $is
@@ -21194,6 +21199,7 @@ class Obj3 {
      * @param LocaleClass $locale
      * @param Lock $lock
      * @param Long $long
+     * @param LongNode $longNode
      * @param Map $map
      * @param MapEntry $mapEntry
      * @param MetadataPropertyHandling $metadataPropertyHandling
@@ -21201,15 +21207,13 @@ class Obj3 {
      * @param Mutable $mutable
      * @param Mutating $mutating
      * @param NamespaceClass $namespace
-     * @param Native $native
-     * @param NewClass $new
-     * @param Newtonsoft $newtonsoft
-     * @param Nil $nil
-     * @param No $no
-     * @param Noexcept $noexcept
      */
-    public function __construct(int $dummy, Guard $guard, HasOwnProperty $hasOwnProperty, HashCode $hashCode, Hashable $hashable, Hasher $hasher, ID $id, IfClass $if, Imp $imp, ImplementsClass $implements, Implicit $implicit, Import $import, In $in, Indirect $indirect, Infix $infix, Init $init, Inline $inline, Inout $inout, InstanceofClass $instanceof, IntClass $int, InterfaceClass $interface, Internal $internal, Is $is, ISODateTimeOffsetConverter $isoDateTimeOffsetConverter, IterableClass $iterable, Jdec $jdec, Jenc $jenc, Jpipe $jpipe, JSON $json, JSONAny $jsonAny, JSONCodingKey $jsonCodingKey, JSONConverter $jsonConverter, JSONDecoder $jsonDecoder, JSONEncoder $jsonEncoder, JSONExceptionClass $jsonException, JSONGenerator $jsonGenerator, JSONNode $jsonNode, JSONNull $jsonNull, JSONParser $jsonParser, JSONReader $jsonReader, JSONSerializer $jsonSerializer, JSONToken $jsonToken, JSONTokenType $jsonTokenType, JSONWriter $jsonWriter, Lambda $lambda, Lazy $lazy, Left $left, Let $let, ListClass $list, LocaleClass $locale, Lock $lock, Long $long, Map $map, MapEntry $mapEntry, MetadataPropertyHandling $metadataPropertyHandling, Module $module, Mutable $mutable, Mutating $mutating, NamespaceClass $namespace, Native $native, NewClass $new, Newtonsoft $newtonsoft, Nil $nil, No $no, Noexcept $noexcept) {
+    public function __construct(int $dummy, Get $get, GlobalClass $global, Go $go, GotoClass $goto, Guard $guard, HasOwnProperty $hasOwnProperty, HashCode $hashCode, Hashable $hashable, Hasher $hasher, ID $id, IfClass $if, Imp $imp, ImplementsClass $implements, Implicit $implicit, Import $import, In $in, Indirect $indirect, Infix $infix, Init $init, Inline $inline, Inout $inout, InstanceofClass $instanceof, IntClass $int, IntNode $intNode, InterfaceClass $interface, Internal $internal, Is $is, ISODateTimeOffsetConverter $isoDateTimeOffsetConverter, IterableClass $iterable, Jdec $jdec, Jenc $jenc, Jpipe $jpipe, JSON $json, JSONAny $jsonAny, JSONCodingKey $jsonCodingKey, JSONConverter $jsonConverter, JSONDecoder $jsonDecoder, JSONEncoder $jsonEncoder, JSONExceptionClass $jsonException, JSONGenerator $jsonGenerator, JSONNode $jsonNode, JSONNull $jsonNull, JSONParser $jsonParser, JSONReader $jsonReader, JSONSerializer $jsonSerializer, JSONToken $jsonToken, JSONTokenType $jsonTokenType, JSONWriter $jsonWriter, Lambda $lambda, Lazy $lazy, Left $left, Let $let, ListClass $list, LocaleClass $locale, Lock $lock, Long $long, LongNode $longNode, Map $map, MapEntry $mapEntry, MetadataPropertyHandling $metadataPropertyHandling, Module $module, Mutable $mutable, Mutating $mutating, NamespaceClass $namespace) {
         $this->dummy = $dummy;
+        $this->get = $get;
+        $this->global = $global;
+        $this->go = $go;
+        $this->goto = $goto;
         $this->guard = $guard;
         $this->hasOwnProperty = $hasOwnProperty;
         $this->hashCode = $hashCode;
@@ -21229,6 +21233,7 @@ class Obj3 {
         $this->inout = $inout;
         $this->instanceof = $instanceof;
         $this->int = $int;
+        $this->intNode = $intNode;
         $this->interface = $interface;
         $this->internal = $internal;
         $this->is = $is;
@@ -21261,6 +21266,7 @@ class Obj3 {
         $this->locale = $locale;
         $this->lock = $lock;
         $this->long = $long;
+        $this->longNode = $longNode;
         $this->map = $map;
         $this->mapEntry = $mapEntry;
         $this->metadataPropertyHandling = $metadataPropertyHandling;
@@ -21268,12 +21274,6 @@ class Obj3 {
         $this->mutable = $mutable;
         $this->mutating = $mutating;
         $this->namespace = $namespace;
-        $this->native = $native;
-        $this->new = $new;
-        $this->newtonsoft = $newtonsoft;
-        $this->nil = $nil;
-        $this->no = $no;
-        $this->noexcept = $noexcept;
     }
 
     /**
@@ -21323,6 +21323,198 @@ class Obj3 {
         return 31; /*31:dummy*/
     }
 
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Get
+     */
+    public static function fromGet(stdClass $value): Get {
+        return Get::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toGet(): stdClass {
+        if (Obj3::validateGet($this->get))  {
+            return $this->get->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::get');
+    }
+
+    /**
+     * @param Get
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateGet(Get $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Get
+     */
+    public function getGet(): Get {
+        if (Obj3::validateGet($this->get))  {
+            return $this->get;
+        }
+        throw new Exception('never get to getGet Obj3::get');
+    }
+
+    /**
+     * @return Get
+     */
+    public static function sampleGet(): Get {
+        return Get::sample(); /*32:get*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return GlobalClass
+     */
+    public static function fromGlobal(stdClass $value): GlobalClass {
+        return GlobalClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toGlobal(): stdClass {
+        if (Obj3::validateGlobal($this->global))  {
+            return $this->global->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::global');
+    }
+
+    /**
+     * @param GlobalClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateGlobal(GlobalClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return GlobalClass
+     */
+    public function getGlobal(): GlobalClass {
+        if (Obj3::validateGlobal($this->global))  {
+            return $this->global;
+        }
+        throw new Exception('never get to getGlobal Obj3::global');
+    }
+
+    /**
+     * @return GlobalClass
+     */
+    public static function sampleGlobal(): GlobalClass {
+        return GlobalClass::sample(); /*33:global*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Go
+     */
+    public static function fromGo(stdClass $value): Go {
+        return Go::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toGo(): stdClass {
+        if (Obj3::validateGo($this->go))  {
+            return $this->go->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::go');
+    }
+
+    /**
+     * @param Go
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateGo(Go $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Go
+     */
+    public function getGo(): Go {
+        if (Obj3::validateGo($this->go))  {
+            return $this->go;
+        }
+        throw new Exception('never get to getGo Obj3::go');
+    }
+
+    /**
+     * @return Go
+     */
+    public static function sampleGo(): Go {
+        return Go::sample(); /*34:go*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return GotoClass
+     */
+    public static function fromGoto(stdClass $value): GotoClass {
+        return GotoClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toGoto(): stdClass {
+        if (Obj3::validateGoto($this->goto))  {
+            return $this->goto->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::goto');
+    }
+
+    /**
+     * @param GotoClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateGoto(GotoClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return GotoClass
+     */
+    public function getGoto(): GotoClass {
+        if (Obj3::validateGoto($this->goto))  {
+            return $this->goto;
+        }
+        throw new Exception('never get to getGoto Obj3::goto');
+    }
+
+    /**
+     * @return GotoClass
+     */
+    public static function sampleGoto(): GotoClass {
+        return GotoClass::sample(); /*35:goto*/
+    }
+
     /**
      * @param stdClass $value
      * @throws Exception
@@ -21368,7 +21560,7 @@ class Obj3 {
      * @return Guard
      */
     public static function sampleGuard(): Guard {
-        return Guard::sample(); /*32:guard*/
+        return Guard::sample(); /*36:guard*/
     }
 
     /**
@@ -21416,7 +21608,7 @@ class Obj3 {
      * @return HasOwnProperty
      */
     public static function sampleHasOwnProperty(): HasOwnProperty {
-        return HasOwnProperty::sample(); /*33:hasOwnProperty*/
+        return HasOwnProperty::sample(); /*37:hasOwnProperty*/
     }
 
     /**
@@ -21464,7 +21656,7 @@ class Obj3 {
      * @return HashCode
      */
     public static function sampleHashCode(): HashCode {
-        return HashCode::sample(); /*34:hashCode*/
+        return HashCode::sample(); /*38:hashCode*/
     }
 
     /**
@@ -21512,7 +21704,7 @@ class Obj3 {
      * @return Hashable
      */
     public static function sampleHashable(): Hashable {
-        return Hashable::sample(); /*35:hashable*/
+        return Hashable::sample(); /*39:hashable*/
     }
 
     /**
@@ -21560,7 +21752,7 @@ class Obj3 {
      * @return Hasher
      */
     public static function sampleHasher(): Hasher {
-        return Hasher::sample(); /*36:hasher*/
+        return Hasher::sample(); /*40:hasher*/
     }
 
     /**
@@ -21608,7 +21800,7 @@ class Obj3 {
      * @return ID
      */
     public static function sampleID(): ID {
-        return ID::sample(); /*37:id*/
+        return ID::sample(); /*41:id*/
     }
 
     /**
@@ -21656,7 +21848,7 @@ class Obj3 {
      * @return IfClass
      */
     public static function sampleIf(): IfClass {
-        return IfClass::sample(); /*38:if*/
+        return IfClass::sample(); /*42:if*/
     }
 
     /**
@@ -21704,7 +21896,7 @@ class Obj3 {
      * @return Imp
      */
     public static function sampleImp(): Imp {
-        return Imp::sample(); /*39:imp*/
+        return Imp::sample(); /*43:imp*/
     }
 
     /**
@@ -21752,7 +21944,7 @@ class Obj3 {
      * @return ImplementsClass
      */
     public static function sampleImplements(): ImplementsClass {
-        return ImplementsClass::sample(); /*40:implements*/
+        return ImplementsClass::sample(); /*44:implements*/
     }
 
     /**
@@ -21800,7 +21992,7 @@ class Obj3 {
      * @return Implicit
      */
     public static function sampleImplicit(): Implicit {
-        return Implicit::sample(); /*41:implicit*/
+        return Implicit::sample(); /*45:implicit*/
     }
 
     /**
@@ -21848,7 +22040,7 @@ class Obj3 {
      * @return Import
      */
     public static function sampleImport(): Import {
-        return Import::sample(); /*42:import*/
+        return Import::sample(); /*46:import*/
     }
 
     /**
@@ -21896,7 +22088,7 @@ class Obj3 {
      * @return In
      */
     public static function sampleIn(): In {
-        return In::sample(); /*43:in*/
+        return In::sample(); /*47:in*/
     }
 
     /**
@@ -21944,7 +22136,7 @@ class Obj3 {
      * @return Indirect
      */
     public static function sampleIndirect(): Indirect {
-        return Indirect::sample(); /*44:indirect*/
+        return Indirect::sample(); /*48:indirect*/
     }
 
     /**
@@ -21992,7 +22184,7 @@ class Obj3 {
      * @return Infix
      */
     public static function sampleInfix(): Infix {
-        return Infix::sample(); /*45:infix*/
+        return Infix::sample(); /*49:infix*/
     }
 
     /**
@@ -22040,7 +22232,7 @@ class Obj3 {
      * @return Init
      */
     public static function sampleInit(): Init {
-        return Init::sample(); /*46:init*/
+        return Init::sample(); /*50:init*/
     }
 
     /**
@@ -22088,7 +22280,7 @@ class Obj3 {
      * @return Inline
      */
     public static function sampleInline(): Inline {
-        return Inline::sample(); /*47:inline*/
+        return Inline::sample(); /*51:inline*/
     }
 
     /**
@@ -22136,7 +22328,7 @@ class Obj3 {
      * @return Inout
      */
     public static function sampleInout(): Inout {
-        return Inout::sample(); /*48:inout*/
+        return Inout::sample(); /*52:inout*/
     }
 
     /**
@@ -22184,7 +22376,7 @@ class Obj3 {
      * @return InstanceofClass
      */
     public static function sampleInstanceof(): InstanceofClass {
-        return InstanceofClass::sample(); /*49:instanceof*/
+        return InstanceofClass::sample(); /*53:instanceof*/
     }
 
     /**
@@ -22232,7 +22424,55 @@ class Obj3 {
      * @return IntClass
      */
     public static function sampleInt(): IntClass {
-        return IntClass::sample(); /*50:int*/
+        return IntClass::sample(); /*54:int*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return IntNode
+     */
+    public static function fromIntNode(stdClass $value): IntNode {
+        return IntNode::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toIntNode(): stdClass {
+        if (Obj3::validateIntNode($this->intNode))  {
+            return $this->intNode->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::intNode');
+    }
+
+    /**
+     * @param IntNode
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateIntNode(IntNode $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return IntNode
+     */
+    public function getIntNode(): IntNode {
+        if (Obj3::validateIntNode($this->intNode))  {
+            return $this->intNode;
+        }
+        throw new Exception('never get to getIntNode Obj3::intNode');
+    }
+
+    /**
+     * @return IntNode
+     */
+    public static function sampleIntNode(): IntNode {
+        return IntNode::sample(); /*55:intNode*/
     }
 
     /**
@@ -22280,7 +22520,7 @@ class Obj3 {
      * @return InterfaceClass
      */
     public static function sampleInterface(): InterfaceClass {
-        return InterfaceClass::sample(); /*51:interface*/
+        return InterfaceClass::sample(); /*56:interface*/
     }
 
     /**
@@ -22328,7 +22568,7 @@ class Obj3 {
      * @return Internal
      */
     public static function sampleInternal(): Internal {
-        return Internal::sample(); /*52:internal*/
+        return Internal::sample(); /*57:internal*/
     }
 
     /**
@@ -22376,7 +22616,7 @@ class Obj3 {
      * @return Is
      */
     public static function sampleIs(): Is {
-        return Is::sample(); /*53:is*/
+        return Is::sample(); /*58:is*/
     }
 
     /**
@@ -22424,7 +22664,7 @@ class Obj3 {
      * @return ISODateTimeOffsetConverter
      */
     public static function sampleISODateTimeOffsetConverter(): ISODateTimeOffsetConverter {
-        return ISODateTimeOffsetConverter::sample(); /*54:isoDateTimeOffsetConverter*/
+        return ISODateTimeOffsetConverter::sample(); /*59:isoDateTimeOffsetConverter*/
     }
 
     /**
@@ -22472,7 +22712,7 @@ class Obj3 {
      * @return IterableClass
      */
     public static function sampleIterable(): IterableClass {
-        return IterableClass::sample(); /*55:iterable*/
+        return IterableClass::sample(); /*60:iterable*/
     }
 
     /**
@@ -22520,7 +22760,7 @@ class Obj3 {
      * @return Jdec
      */
     public static function sampleJdec(): Jdec {
-        return Jdec::sample(); /*56:jdec*/
+        return Jdec::sample(); /*61:jdec*/
     }
 
     /**
@@ -22568,7 +22808,7 @@ class Obj3 {
      * @return Jenc
      */
     public static function sampleJenc(): Jenc {
-        return Jenc::sample(); /*57:jenc*/
+        return Jenc::sample(); /*62:jenc*/
     }
 
     /**
@@ -22616,7 +22856,7 @@ class Obj3 {
      * @return Jpipe
      */
     public static function sampleJpipe(): Jpipe {
-        return Jpipe::sample(); /*58:jpipe*/
+        return Jpipe::sample(); /*63:jpipe*/
     }
 
     /**
@@ -22664,7 +22904,7 @@ class Obj3 {
      * @return JSON
      */
     public static function sampleJSON(): JSON {
-        return JSON::sample(); /*59:json*/
+        return JSON::sample(); /*64:json*/
     }
 
     /**
@@ -22712,7 +22952,7 @@ class Obj3 {
      * @return JSONAny
      */
     public static function sampleJSONAny(): JSONAny {
-        return JSONAny::sample(); /*60:jsonAny*/
+        return JSONAny::sample(); /*65:jsonAny*/
     }
 
     /**
@@ -22760,7 +23000,7 @@ class Obj3 {
      * @return JSONCodingKey
      */
     public static function sampleJSONCodingKey(): JSONCodingKey {
-        return JSONCodingKey::sample(); /*61:jsonCodingKey*/
+        return JSONCodingKey::sample(); /*66:jsonCodingKey*/
     }
 
     /**
@@ -22808,7 +23048,7 @@ class Obj3 {
      * @return JSONConverter
      */
     public static function sampleJSONConverter(): JSONConverter {
-        return JSONConverter::sample(); /*62:jsonConverter*/
+        return JSONConverter::sample(); /*67:jsonConverter*/
     }
 
     /**
@@ -22856,7 +23096,7 @@ class Obj3 {
      * @return JSONDecoder
      */
     public static function sampleJSONDecoder(): JSONDecoder {
-        return JSONDecoder::sample(); /*63:jsonDecoder*/
+        return JSONDecoder::sample(); /*68:jsonDecoder*/
     }
 
     /**
@@ -22904,7 +23144,7 @@ class Obj3 {
      * @return JSONEncoder
      */
     public static function sampleJSONEncoder(): JSONEncoder {
-        return JSONEncoder::sample(); /*64:jsonEncoder*/
+        return JSONEncoder::sample(); /*69:jsonEncoder*/
     }
 
     /**
@@ -22952,7 +23192,7 @@ class Obj3 {
      * @return JSONExceptionClass
      */
     public static function sampleJSONException(): JSONExceptionClass {
-        return JSONExceptionClass::sample(); /*65:jsonException*/
+        return JSONExceptionClass::sample(); /*70:jsonException*/
     }
 
     /**
@@ -23000,7 +23240,7 @@ class Obj3 {
      * @return JSONGenerator
      */
     public static function sampleJSONGenerator(): JSONGenerator {
-        return JSONGenerator::sample(); /*66:jsonGenerator*/
+        return JSONGenerator::sample(); /*71:jsonGenerator*/
     }
 
     /**
@@ -23048,7 +23288,7 @@ class Obj3 {
      * @return JSONNode
      */
     public static function sampleJSONNode(): JSONNode {
-        return JSONNode::sample(); /*67:jsonNode*/
+        return JSONNode::sample(); /*72:jsonNode*/
     }
 
     /**
@@ -23096,7 +23336,7 @@ class Obj3 {
      * @return JSONNull
      */
     public static function sampleJSONNull(): JSONNull {
-        return JSONNull::sample(); /*68:jsonNull*/
+        return JSONNull::sample(); /*73:jsonNull*/
     }
 
     /**
@@ -23144,7 +23384,7 @@ class Obj3 {
      * @return JSONParser
      */
     public static function sampleJSONParser(): JSONParser {
-        return JSONParser::sample(); /*69:jsonParser*/
+        return JSONParser::sample(); /*74:jsonParser*/
     }
 
     /**
@@ -23192,7 +23432,7 @@ class Obj3 {
      * @return JSONReader
      */
     public static function sampleJSONReader(): JSONReader {
-        return JSONReader::sample(); /*70:jsonReader*/
+        return JSONReader::sample(); /*75:jsonReader*/
     }
 
     /**
@@ -23240,7 +23480,7 @@ class Obj3 {
      * @return JSONSerializer
      */
     public static function sampleJSONSerializer(): JSONSerializer {
-        return JSONSerializer::sample(); /*71:jsonSerializer*/
+        return JSONSerializer::sample(); /*76:jsonSerializer*/
     }
 
     /**
@@ -23288,7 +23528,7 @@ class Obj3 {
      * @return JSONToken
      */
     public static function sampleJSONToken(): JSONToken {
-        return JSONToken::sample(); /*72:jsonToken*/
+        return JSONToken::sample(); /*77:jsonToken*/
     }
 
     /**
@@ -23336,7 +23576,7 @@ class Obj3 {
      * @return JSONTokenType
      */
     public static function sampleJSONTokenType(): JSONTokenType {
-        return JSONTokenType::sample(); /*73:jsonTokenType*/
+        return JSONTokenType::sample(); /*78:jsonTokenType*/
     }
 
     /**
@@ -23384,7 +23624,7 @@ class Obj3 {
      * @return JSONWriter
      */
     public static function sampleJSONWriter(): JSONWriter {
-        return JSONWriter::sample(); /*74:jsonWriter*/
+        return JSONWriter::sample(); /*79:jsonWriter*/
     }
 
     /**
@@ -23432,7 +23672,7 @@ class Obj3 {
      * @return Lambda
      */
     public static function sampleLambda(): Lambda {
-        return Lambda::sample(); /*75:lambda*/
+        return Lambda::sample(); /*80:lambda*/
     }
 
     /**
@@ -23480,7 +23720,7 @@ class Obj3 {
      * @return Lazy
      */
     public static function sampleLazy(): Lazy {
-        return Lazy::sample(); /*76:lazy*/
+        return Lazy::sample(); /*81:lazy*/
     }
 
     /**
@@ -23528,7 +23768,7 @@ class Obj3 {
      * @return Left
      */
     public static function sampleLeft(): Left {
-        return Left::sample(); /*77:left*/
+        return Left::sample(); /*82:left*/
     }
 
     /**
@@ -23576,7 +23816,7 @@ class Obj3 {
      * @return Let
      */
     public static function sampleLet(): Let {
-        return Let::sample(); /*78:let*/
+        return Let::sample(); /*83:let*/
     }
 
     /**
@@ -23624,7 +23864,7 @@ class Obj3 {
      * @return ListClass
      */
     public static function sampleList(): ListClass {
-        return ListClass::sample(); /*79:list*/
+        return ListClass::sample(); /*84:list*/
     }
 
     /**
@@ -23672,7 +23912,7 @@ class Obj3 {
      * @return LocaleClass
      */
     public static function sampleLocale(): LocaleClass {
-        return LocaleClass::sample(); /*80:locale*/
+        return LocaleClass::sample(); /*85:locale*/
     }
 
     /**
@@ -23720,7 +23960,7 @@ class Obj3 {
      * @return Lock
      */
     public static function sampleLock(): Lock {
-        return Lock::sample(); /*81:lock*/
+        return Lock::sample(); /*86:lock*/
     }
 
     /**
@@ -23768,7 +24008,55 @@ class Obj3 {
      * @return Long
      */
     public static function sampleLong(): Long {
-        return Long::sample(); /*82:long*/
+        return Long::sample(); /*87:long*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return LongNode
+     */
+    public static function fromLongNode(stdClass $value): LongNode {
+        return LongNode::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toLongNode(): stdClass {
+        if (Obj3::validateLongNode($this->longNode))  {
+            return $this->longNode->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::longNode');
+    }
+
+    /**
+     * @param LongNode
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateLongNode(LongNode $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return LongNode
+     */
+    public function getLongNode(): LongNode {
+        if (Obj3::validateLongNode($this->longNode))  {
+            return $this->longNode;
+        }
+        throw new Exception('never get to getLongNode Obj3::longNode');
+    }
+
+    /**
+     * @return LongNode
+     */
+    public static function sampleLongNode(): LongNode {
+        return LongNode::sample(); /*88:longNode*/
     }
 
     /**
@@ -23816,7 +24104,7 @@ class Obj3 {
      * @return Map
      */
     public static function sampleMap(): Map {
-        return Map::sample(); /*83:map*/
+        return Map::sample(); /*89:map*/
     }
 
     /**
@@ -23864,7 +24152,7 @@ class Obj3 {
      * @return MapEntry
      */
     public static function sampleMapEntry(): MapEntry {
-        return MapEntry::sample(); /*84:mapEntry*/
+        return MapEntry::sample(); /*90:mapEntry*/
     }
 
     /**
@@ -23912,7 +24200,7 @@ class Obj3 {
      * @return MetadataPropertyHandling
      */
     public static function sampleMetadataPropertyHandling(): MetadataPropertyHandling {
-        return MetadataPropertyHandling::sample(); /*85:metadataPropertyHandling*/
+        return MetadataPropertyHandling::sample(); /*91:metadataPropertyHandling*/
     }
 
     /**
@@ -23960,7 +24248,7 @@ class Obj3 {
      * @return Module
      */
     public static function sampleModule(): Module {
-        return Module::sample(); /*86:module*/
+        return Module::sample(); /*92:module*/
     }
 
     /**
@@ -24008,7 +24296,7 @@ class Obj3 {
      * @return Mutable
      */
     public static function sampleMutable(): Mutable {
-        return Mutable::sample(); /*87:mutable*/
+        return Mutable::sample(); /*93:mutable*/
     }
 
     /**
@@ -24056,7 +24344,7 @@ class Obj3 {
      * @return Mutating
      */
     public static function sampleMutating(): Mutating {
-        return Mutating::sample(); /*88:mutating*/
+        return Mutating::sample(); /*94:mutating*/
     }
 
     /**
@@ -24104,295 +24392,7 @@ class Obj3 {
      * @return NamespaceClass
      */
     public static function sampleNamespace(): NamespaceClass {
-        return NamespaceClass::sample(); /*89:namespace*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Native
-     */
-    public static function fromNative(stdClass $value): Native {
-        return Native::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toNative(): stdClass {
-        if (Obj3::validateNative($this->native))  {
-            return $this->native->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj3::native');
-    }
-
-    /**
-     * @param Native
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateNative(Native $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return Native
-     */
-    public function getNative(): Native {
-        if (Obj3::validateNative($this->native))  {
-            return $this->native;
-        }
-        throw new Exception('never get to getNative Obj3::native');
-    }
-
-    /**
-     * @return Native
-     */
-    public static function sampleNative(): Native {
-        return Native::sample(); /*90:native*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return NewClass
-     */
-    public static function fromNew(stdClass $value): NewClass {
-        return NewClass::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toNew(): stdClass {
-        if (Obj3::validateNew($this->new))  {
-            return $this->new->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj3::new');
-    }
-
-    /**
-     * @param NewClass
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateNew(NewClass $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return NewClass
-     */
-    public function getNew(): NewClass {
-        if (Obj3::validateNew($this->new))  {
-            return $this->new;
-        }
-        throw new Exception('never get to getNew Obj3::new');
-    }
-
-    /**
-     * @return NewClass
-     */
-    public static function sampleNew(): NewClass {
-        return NewClass::sample(); /*91:new*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Newtonsoft
-     */
-    public static function fromNewtonsoft(stdClass $value): Newtonsoft {
-        return Newtonsoft::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toNewtonsoft(): stdClass {
-        if (Obj3::validateNewtonsoft($this->newtonsoft))  {
-            return $this->newtonsoft->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj3::newtonsoft');
-    }
-
-    /**
-     * @param Newtonsoft
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateNewtonsoft(Newtonsoft $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return Newtonsoft
-     */
-    public function getNewtonsoft(): Newtonsoft {
-        if (Obj3::validateNewtonsoft($this->newtonsoft))  {
-            return $this->newtonsoft;
-        }
-        throw new Exception('never get to getNewtonsoft Obj3::newtonsoft');
-    }
-
-    /**
-     * @return Newtonsoft
-     */
-    public static function sampleNewtonsoft(): Newtonsoft {
-        return Newtonsoft::sample(); /*92:newtonsoft*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Nil
-     */
-    public static function fromNil(stdClass $value): Nil {
-        return Nil::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toNil(): stdClass {
-        if (Obj3::validateNil($this->nil))  {
-            return $this->nil->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj3::nil');
-    }
-
-    /**
-     * @param Nil
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateNil(Nil $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return Nil
-     */
-    public function getNil(): Nil {
-        if (Obj3::validateNil($this->nil))  {
-            return $this->nil;
-        }
-        throw new Exception('never get to getNil Obj3::nil');
-    }
-
-    /**
-     * @return Nil
-     */
-    public static function sampleNil(): Nil {
-        return Nil::sample(); /*93:nil*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return No
-     */
-    public static function fromNo(stdClass $value): No {
-        return No::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toNo(): stdClass {
-        if (Obj3::validateNo($this->no))  {
-            return $this->no->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj3::no');
-    }
-
-    /**
-     * @param No
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateNo(No $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return No
-     */
-    public function getNo(): No {
-        if (Obj3::validateNo($this->no))  {
-            return $this->no;
-        }
-        throw new Exception('never get to getNo Obj3::no');
-    }
-
-    /**
-     * @return No
-     */
-    public static function sampleNo(): No {
-        return No::sample(); /*94:no*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Noexcept
-     */
-    public static function fromNoexcept(stdClass $value): Noexcept {
-        return Noexcept::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toNoexcept(): stdClass {
-        if (Obj3::validateNoexcept($this->noexcept))  {
-            return $this->noexcept->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj3::noexcept');
-    }
-
-    /**
-     * @param Noexcept
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateNoexcept(Noexcept $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return Noexcept
-     */
-    public function getNoexcept(): Noexcept {
-        if (Obj3::validateNoexcept($this->noexcept))  {
-            return $this->noexcept;
-        }
-        throw new Exception('never get to getNoexcept Obj3::noexcept');
-    }
-
-    /**
-     * @return Noexcept
-     */
-    public static function sampleNoexcept(): Noexcept {
-        return Noexcept::sample(); /*95:noexcept*/
+        return NamespaceClass::sample(); /*95:namespace*/
     }
 
     /**
@@ -24401,6 +24401,10 @@ class Obj3 {
      */
     public function validate(): bool {
         return Obj3::validateDummy($this->dummy)
+        || Obj3::validateGet($this->get)
+        || Obj3::validateGlobal($this->global)
+        || Obj3::validateGo($this->go)
+        || Obj3::validateGoto($this->goto)
         || Obj3::validateGuard($this->guard)
         || Obj3::validateHasOwnProperty($this->hasOwnProperty)
         || Obj3::validateHashCode($this->hashCode)
@@ -24420,6 +24424,7 @@ class Obj3 {
         || Obj3::validateInout($this->inout)
         || Obj3::validateInstanceof($this->instanceof)
         || Obj3::validateInt($this->int)
+        || Obj3::validateIntNode($this->intNode)
         || Obj3::validateInterface($this->interface)
         || Obj3::validateInternal($this->internal)
         || Obj3::validateIs($this->is)
@@ -24452,19 +24457,14 @@ class Obj3 {
         || Obj3::validateLocale($this->locale)
         || Obj3::validateLock($this->lock)
         || Obj3::validateLong($this->long)
+        || Obj3::validateLongNode($this->longNode)
         || Obj3::validateMap($this->map)
         || Obj3::validateMapEntry($this->mapEntry)
         || Obj3::validateMetadataPropertyHandling($this->metadataPropertyHandling)
         || Obj3::validateModule($this->module)
         || Obj3::validateMutable($this->mutable)
         || Obj3::validateMutating($this->mutating)
-        || Obj3::validateNamespace($this->namespace)
-        || Obj3::validateNative($this->native)
-        || Obj3::validateNew($this->new)
-        || Obj3::validateNewtonsoft($this->newtonsoft)
-        || Obj3::validateNil($this->nil)
-        || Obj3::validateNo($this->no)
-        || Obj3::validateNoexcept($this->noexcept);
+        || Obj3::validateNamespace($this->namespace);
     }
 
     /**
@@ -24474,6 +24474,10 @@ class Obj3 {
     public function to(): stdClass  {
         $out = new stdClass();
         $out->{'dummy'} = $this->toDummy();
+        $out->{'get'} = $this->toGet();
+        $out->{'global'} = $this->toGlobal();
+        $out->{'go'} = $this->toGo();
+        $out->{'goto'} = $this->toGoto();
         $out->{'guard'} = $this->toGuard();
         $out->{'hasOwnProperty'} = $this->toHasOwnProperty();
         $out->{'hashCode'} = $this->toHashCode();
@@ -24493,6 +24497,7 @@ class Obj3 {
         $out->{'inout'} = $this->toInout();
         $out->{'instanceof'} = $this->toInstanceof();
         $out->{'int'} = $this->toInt();
+        $out->{'IntNode'} = $this->toIntNode();
         $out->{'interface'} = $this->toInterface();
         $out->{'internal'} = $this->toInternal();
         $out->{'is'} = $this->toIs();
@@ -24525,6 +24530,7 @@ class Obj3 {
         $out->{'Locale'} = $this->toLocale();
         $out->{'lock'} = $this->toLock();
         $out->{'long'} = $this->toLong();
+        $out->{'LongNode'} = $this->toLongNode();
         $out->{'map'} = $this->toMap();
         $out->{'MapEntry'} = $this->toMapEntry();
         $out->{'metadata_property_handling'} = $this->toMetadataPropertyHandling();
@@ -24532,12 +24538,6 @@ class Obj3 {
         $out->{'mutable'} = $this->toMutable();
         $out->{'mutating'} = $this->toMutating();
         $out->{'namespace'} = $this->toNamespace();
-        $out->{'native'} = $this->toNative();
-        $out->{'new'} = $this->toNew();
-        $out->{'newtonsoft'} = $this->toNewtonsoft();
-        $out->{'nil'} = $this->toNil();
-        $out->{'NO'} = $this->toNo();
-        $out->{'noexcept'} = $this->toNoexcept();
         return $out;
     }
 
@@ -24550,6 +24550,18 @@ class Obj3 {
         if (!property_exists($obj, 'dummy')) {
             throw new Exception("Missing required property");
         }
+        if (!property_exists($obj, 'get')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'global')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'go')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'goto')) {
+            throw new Exception("Missing required property");
+        }
         if (!property_exists($obj, 'guard')) {
             throw new Exception("Missing required property");
         }
@@ -24607,6 +24619,9 @@ class Obj3 {
         if (!property_exists($obj, 'int')) {
             throw new Exception("Missing required property");
         }
+        if (!property_exists($obj, 'IntNode')) {
+            throw new Exception("Missing required property");
+        }
         if (!property_exists($obj, 'interface')) {
             throw new Exception("Missing required property");
         }
@@ -24703,6 +24718,9 @@ class Obj3 {
         if (!property_exists($obj, 'long')) {
             throw new Exception("Missing required property");
         }
+        if (!property_exists($obj, 'LongNode')) {
+            throw new Exception("Missing required property");
+        }
         if (!property_exists($obj, 'map')) {
             throw new Exception("Missing required property");
         }
@@ -24724,26 +24742,12 @@ class Obj3 {
         if (!property_exists($obj, 'namespace')) {
             throw new Exception("Missing required property");
         }
-        if (!property_exists($obj, 'native')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'new')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'newtonsoft')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'nil')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'NO')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'noexcept')) {
-            throw new Exception("Missing required property");
-        }
         return new Obj3(
          Obj3::fromDummy($obj->{'dummy'})
+        ,Obj3::fromGet($obj->{'get'})
+        ,Obj3::fromGlobal($obj->{'global'})
+        ,Obj3::fromGo($obj->{'go'})
+        ,Obj3::fromGoto($obj->{'goto'})
         ,Obj3::fromGuard($obj->{'guard'})
         ,Obj3::fromHasOwnProperty($obj->{'hasOwnProperty'})
         ,Obj3::fromHashCode($obj->{'hashCode'})
@@ -24763,6 +24767,7 @@ class Obj3 {
         ,Obj3::fromInout($obj->{'inout'})
         ,Obj3::fromInstanceof($obj->{'instanceof'})
         ,Obj3::fromInt($obj->{'int'})
+        ,Obj3::fromIntNode($obj->{'IntNode'})
         ,Obj3::fromInterface($obj->{'interface'})
         ,Obj3::fromInternal($obj->{'internal'})
         ,Obj3::fromIs($obj->{'is'})
@@ -24795,6 +24800,7 @@ class Obj3 {
         ,Obj3::fromLocale($obj->{'Locale'})
         ,Obj3::fromLock($obj->{'lock'})
         ,Obj3::fromLong($obj->{'long'})
+        ,Obj3::fromLongNode($obj->{'LongNode'})
         ,Obj3::fromMap($obj->{'map'})
         ,Obj3::fromMapEntry($obj->{'MapEntry'})
         ,Obj3::fromMetadataPropertyHandling($obj->{'metadata_property_handling'})
@@ -24802,12 +24808,6 @@ class Obj3 {
         ,Obj3::fromMutable($obj->{'mutable'})
         ,Obj3::fromMutating($obj->{'mutating'})
         ,Obj3::fromNamespace($obj->{'namespace'})
-        ,Obj3::fromNative($obj->{'native'})
-        ,Obj3::fromNew($obj->{'new'})
-        ,Obj3::fromNewtonsoft($obj->{'newtonsoft'})
-        ,Obj3::fromNil($obj->{'nil'})
-        ,Obj3::fromNo($obj->{'NO'})
-        ,Obj3::fromNoexcept($obj->{'noexcept'})
         );
     }
 
@@ -24817,6 +24817,10 @@ class Obj3 {
     public static function sample(): Obj3 {
         return new Obj3(
          Obj3::sampleDummy()
+        ,Obj3::sampleGet()
+        ,Obj3::sampleGlobal()
+        ,Obj3::sampleGo()
+        ,Obj3::sampleGoto()
         ,Obj3::sampleGuard()
         ,Obj3::sampleHasOwnProperty()
         ,Obj3::sampleHashCode()
@@ -24836,6 +24840,7 @@ class Obj3 {
         ,Obj3::sampleInout()
         ,Obj3::sampleInstanceof()
         ,Obj3::sampleInt()
+        ,Obj3::sampleIntNode()
         ,Obj3::sampleInterface()
         ,Obj3::sampleInternal()
         ,Obj3::sampleIs()
@@ -24868,6 +24873,7 @@ class Obj3 {
         ,Obj3::sampleLocale()
         ,Obj3::sampleLock()
         ,Obj3::sampleLong()
+        ,Obj3::sampleLongNode()
         ,Obj3::sampleMap()
         ,Obj3::sampleMapEntry()
         ,Obj3::sampleMetadataPropertyHandling()
@@ -24875,26 +24881,20 @@ class Obj3 {
         ,Obj3::sampleMutable()
         ,Obj3::sampleMutating()
         ,Obj3::sampleNamespace()
-        ,Obj3::sampleNative()
-        ,Obj3::sampleNew()
-        ,Obj3::sampleNewtonsoft()
-        ,Obj3::sampleNil()
-        ,Obj3::sampleNo()
-        ,Obj3::sampleNoexcept()
         );
     }
 }
 
-// This is an autogenerated file:Guard
+// This is an autogenerated file:Get
 
-class Guard {
-    private int $guard; // json:guard Required
+class Get {
+    private int $get; // json:get Required
 
     /**
-     * @param int $guard
+     * @param int $get
      */
-    public function __construct(int $guard) {
-        $this->guard = $guard;
+    public function __construct(int $get) {
+        $this->get = $get;
     }
 
     /**
@@ -24902,7 +24902,7 @@ class Guard {
      * @throws Exception
      * @return int
      */
-    public static function fromGuard(int $value): int {
+    public static function fromGet(int $value): int {
         return $value; /*int*/
     }
 
@@ -24910,11 +24910,11 @@ class Guard {
      * @throws Exception
      * @return int
      */
-    public function toGuard(): int {
-        if (Guard::validateGuard($this->guard))  {
-            return $this->guard; /*int*/
+    public function toGet(): int {
+        if (Get::validateGet($this->get))  {
+            return $this->get; /*int*/
         }
-        throw new Exception('never get to this Guard::guard');
+        throw new Exception('never get to this Get::get');
     }
 
     /**
@@ -24922,7 +24922,7 @@ class Guard {
      * @return bool
      * @throws Exception
      */
-    public static function validateGuard(int $value): bool {
+    public static function validateGet(int $value): bool {
         return true;
     }
 
@@ -24930,18 +24930,18 @@ class Guard {
      * @throws Exception
      * @return int
      */
-    public function getGuard(): int {
-        if (Guard::validateGuard($this->guard))  {
-            return $this->guard;
+    public function getGet(): int {
+        if (Get::validateGet($this->get))  {
+            return $this->get;
         }
-        throw new Exception('never get to getGuard Guard::guard');
+        throw new Exception('never get to getGet Get::get');
     }
 
     /**
      * @return int
      */
-    public static function sampleGuard(): int {
-        return 31; /*31:guard*/
+    public static function sampleGet(): int {
+        return 31; /*31:get*/
     }
 
     /**
@@ -24949,7 +24949,7 @@ class Guard {
      * @return bool
      */
     public function validate(): bool {
-        return Guard::validateGuard($this->guard);
+        return Get::validateGet($this->get);
     }
 
     /**
@@ -24958,44 +24958,44 @@ class Guard {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'guard'} = $this->toGuard();
+        $out->{'get'} = $this->toGet();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Guard
+     * @return Get
      * @throws Exception
      */
-    public static function from(stdClass $obj): Guard {
-        if (!property_exists($obj, 'guard')) {
+    public static function from(stdClass $obj): Get {
+        if (!property_exists($obj, 'get')) {
             throw new Exception("Missing required property");
         }
-        return new Guard(
-         Guard::fromGuard($obj->{'guard'})
+        return new Get(
+         Get::fromGet($obj->{'get'})
         );
     }
 
     /**
-     * @return Guard
+     * @return Get
      */
-    public static function sample(): Guard {
-        return new Guard(
-         Guard::sampleGuard()
+    public static function sample(): Get {
+        return new Get(
+         Get::sampleGet()
         );
     }
 }
 
-// This is an autogenerated file:HasOwnProperty
+// This is an autogenerated file:GlobalClass
 
-class HasOwnProperty {
-    private int $hasOwnProperty; // json:hasOwnProperty Required
+class GlobalClass {
+    private int $global; // json:global Required
 
     /**
-     * @param int $hasOwnProperty
+     * @param int $global
      */
-    public function __construct(int $hasOwnProperty) {
-        $this->hasOwnProperty = $hasOwnProperty;
+    public function __construct(int $global) {
+        $this->global = $global;
     }
 
     /**
@@ -25003,7 +25003,7 @@ class HasOwnProperty {
      * @throws Exception
      * @return int
      */
-    public static function fromHasOwnProperty(int $value): int {
+    public static function fromGlobal(int $value): int {
         return $value; /*int*/
     }
 
@@ -25011,11 +25011,11 @@ class HasOwnProperty {
      * @throws Exception
      * @return int
      */
-    public function toHasOwnProperty(): int {
-        if (HasOwnProperty::validateHasOwnProperty($this->hasOwnProperty))  {
-            return $this->hasOwnProperty; /*int*/
+    public function toGlobal(): int {
+        if (GlobalClass::validateGlobal($this->global))  {
+            return $this->global; /*int*/
         }
-        throw new Exception('never get to this HasOwnProperty::hasOwnProperty');
+        throw new Exception('never get to this GlobalClass::global');
     }
 
     /**
@@ -25023,7 +25023,7 @@ class HasOwnProperty {
      * @return bool
      * @throws Exception
      */
-    public static function validateHasOwnProperty(int $value): bool {
+    public static function validateGlobal(int $value): bool {
         return true;
     }
 
@@ -25031,18 +25031,18 @@ class HasOwnProperty {
      * @throws Exception
      * @return int
      */
-    public function getHasOwnProperty(): int {
-        if (HasOwnProperty::validateHasOwnProperty($this->hasOwnProperty))  {
-            return $this->hasOwnProperty;
+    public function getGlobal(): int {
+        if (GlobalClass::validateGlobal($this->global))  {
+            return $this->global;
         }
-        throw new Exception('never get to getHasOwnProperty HasOwnProperty::hasOwnProperty');
+        throw new Exception('never get to getGlobal GlobalClass::global');
     }
 
     /**
      * @return int
      */
-    public static function sampleHasOwnProperty(): int {
-        return 31; /*31:hasOwnProperty*/
+    public static function sampleGlobal(): int {
+        return 31; /*31:global*/
     }
 
     /**
@@ -25050,7 +25050,7 @@ class HasOwnProperty {
      * @return bool
      */
     public function validate(): bool {
-        return HasOwnProperty::validateHasOwnProperty($this->hasOwnProperty);
+        return GlobalClass::validateGlobal($this->global);
     }
 
     /**
@@ -25059,44 +25059,44 @@ class HasOwnProperty {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'hasOwnProperty'} = $this->toHasOwnProperty();
+        $out->{'global'} = $this->toGlobal();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return HasOwnProperty
+     * @return GlobalClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): HasOwnProperty {
-        if (!property_exists($obj, 'hasOwnProperty')) {
+    public static function from(stdClass $obj): GlobalClass {
+        if (!property_exists($obj, 'global')) {
             throw new Exception("Missing required property");
         }
-        return new HasOwnProperty(
-         HasOwnProperty::fromHasOwnProperty($obj->{'hasOwnProperty'})
+        return new GlobalClass(
+         GlobalClass::fromGlobal($obj->{'global'})
         );
     }
 
     /**
-     * @return HasOwnProperty
+     * @return GlobalClass
      */
-    public static function sample(): HasOwnProperty {
-        return new HasOwnProperty(
-         HasOwnProperty::sampleHasOwnProperty()
+    public static function sample(): GlobalClass {
+        return new GlobalClass(
+         GlobalClass::sampleGlobal()
         );
     }
 }
 
-// This is an autogenerated file:HashCode
+// This is an autogenerated file:Go
 
-class HashCode {
-    private int $hashCode; // json:hashCode Required
+class Go {
+    private int $go; // json:go Required
 
     /**
-     * @param int $hashCode
+     * @param int $go
      */
-    public function __construct(int $hashCode) {
-        $this->hashCode = $hashCode;
+    public function __construct(int $go) {
+        $this->go = $go;
     }
 
     /**
@@ -25104,7 +25104,7 @@ class HashCode {
      * @throws Exception
      * @return int
      */
-    public static function fromHashCode(int $value): int {
+    public static function fromGo(int $value): int {
         return $value; /*int*/
     }
 
@@ -25112,11 +25112,11 @@ class HashCode {
      * @throws Exception
      * @return int
      */
-    public function toHashCode(): int {
-        if (HashCode::validateHashCode($this->hashCode))  {
-            return $this->hashCode; /*int*/
+    public function toGo(): int {
+        if (Go::validateGo($this->go))  {
+            return $this->go; /*int*/
         }
-        throw new Exception('never get to this HashCode::hashCode');
+        throw new Exception('never get to this Go::go');
     }
 
     /**
@@ -25124,7 +25124,7 @@ class HashCode {
      * @return bool
      * @throws Exception
      */
-    public static function validateHashCode(int $value): bool {
+    public static function validateGo(int $value): bool {
         return true;
     }
 
@@ -25132,18 +25132,18 @@ class HashCode {
      * @throws Exception
      * @return int
      */
-    public function getHashCode(): int {
-        if (HashCode::validateHashCode($this->hashCode))  {
-            return $this->hashCode;
+    public function getGo(): int {
+        if (Go::validateGo($this->go))  {
+            return $this->go;
         }
-        throw new Exception('never get to getHashCode HashCode::hashCode');
+        throw new Exception('never get to getGo Go::go');
     }
 
     /**
      * @return int
      */
-    public static function sampleHashCode(): int {
-        return 31; /*31:hashCode*/
+    public static function sampleGo(): int {
+        return 31; /*31:go*/
     }
 
     /**
@@ -25151,7 +25151,7 @@ class HashCode {
      * @return bool
      */
     public function validate(): bool {
-        return HashCode::validateHashCode($this->hashCode);
+        return Go::validateGo($this->go);
     }
 
     /**
@@ -25160,44 +25160,44 @@ class HashCode {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'hashCode'} = $this->toHashCode();
+        $out->{'go'} = $this->toGo();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return HashCode
+     * @return Go
      * @throws Exception
      */
-    public static function from(stdClass $obj): HashCode {
-        if (!property_exists($obj, 'hashCode')) {
+    public static function from(stdClass $obj): Go {
+        if (!property_exists($obj, 'go')) {
             throw new Exception("Missing required property");
         }
-        return new HashCode(
-         HashCode::fromHashCode($obj->{'hashCode'})
+        return new Go(
+         Go::fromGo($obj->{'go'})
         );
     }
 
     /**
-     * @return HashCode
+     * @return Go
      */
-    public static function sample(): HashCode {
-        return new HashCode(
-         HashCode::sampleHashCode()
+    public static function sample(): Go {
+        return new Go(
+         Go::sampleGo()
         );
     }
 }
 
-// This is an autogenerated file:Hashable
+// This is an autogenerated file:GotoClass
 
-class Hashable {
-    private int $hashable; // json:Hashable Required
+class GotoClass {
+    private int $goto; // json:goto Required
 
     /**
-     * @param int $hashable
+     * @param int $goto
      */
-    public function __construct(int $hashable) {
-        $this->hashable = $hashable;
+    public function __construct(int $goto) {
+        $this->goto = $goto;
     }
 
     /**
@@ -25205,7 +25205,7 @@ class Hashable {
      * @throws Exception
      * @return int
      */
-    public static function fromHashable(int $value): int {
+    public static function fromGoto(int $value): int {
         return $value; /*int*/
     }
 
@@ -25213,11 +25213,11 @@ class Hashable {
      * @throws Exception
      * @return int
      */
-    public function toHashable(): int {
-        if (Hashable::validateHashable($this->hashable))  {
-            return $this->hashable; /*int*/
+    public function toGoto(): int {
+        if (GotoClass::validateGoto($this->goto))  {
+            return $this->goto; /*int*/
         }
-        throw new Exception('never get to this Hashable::hashable');
+        throw new Exception('never get to this GotoClass::goto');
     }
 
     /**
@@ -25225,7 +25225,7 @@ class Hashable {
      * @return bool
      * @throws Exception
      */
-    public static function validateHashable(int $value): bool {
+    public static function validateGoto(int $value): bool {
         return true;
     }
 
@@ -25233,18 +25233,422 @@ class Hashable {
      * @throws Exception
      * @return int
      */
-    public function getHashable(): int {
-        if (Hashable::validateHashable($this->hashable))  {
-            return $this->hashable;
+    public function getGoto(): int {
+        if (GotoClass::validateGoto($this->goto))  {
+            return $this->goto;
         }
-        throw new Exception('never get to getHashable Hashable::hashable');
+        throw new Exception('never get to getGoto GotoClass::goto');
     }
 
     /**
      * @return int
      */
-    public static function sampleHashable(): int {
-        return 31; /*31:hashable*/
+    public static function sampleGoto(): int {
+        return 31; /*31:goto*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return GotoClass::validateGoto($this->goto);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'goto'} = $this->toGoto();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return GotoClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): GotoClass {
+        if (!property_exists($obj, 'goto')) {
+            throw new Exception("Missing required property");
+        }
+        return new GotoClass(
+         GotoClass::fromGoto($obj->{'goto'})
+        );
+    }
+
+    /**
+     * @return GotoClass
+     */
+    public static function sample(): GotoClass {
+        return new GotoClass(
+         GotoClass::sampleGoto()
+        );
+    }
+}
+
+// This is an autogenerated file:Guard
+
+class Guard {
+    private int $guard; // json:guard Required
+
+    /**
+     * @param int $guard
+     */
+    public function __construct(int $guard) {
+        $this->guard = $guard;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromGuard(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toGuard(): int {
+        if (Guard::validateGuard($this->guard))  {
+            return $this->guard; /*int*/
+        }
+        throw new Exception('never get to this Guard::guard');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateGuard(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getGuard(): int {
+        if (Guard::validateGuard($this->guard))  {
+            return $this->guard;
+        }
+        throw new Exception('never get to getGuard Guard::guard');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleGuard(): int {
+        return 31; /*31:guard*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Guard::validateGuard($this->guard);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'guard'} = $this->toGuard();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Guard
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Guard {
+        if (!property_exists($obj, 'guard')) {
+            throw new Exception("Missing required property");
+        }
+        return new Guard(
+         Guard::fromGuard($obj->{'guard'})
+        );
+    }
+
+    /**
+     * @return Guard
+     */
+    public static function sample(): Guard {
+        return new Guard(
+         Guard::sampleGuard()
+        );
+    }
+}
+
+// This is an autogenerated file:HasOwnProperty
+
+class HasOwnProperty {
+    private int $hasOwnProperty; // json:hasOwnProperty Required
+
+    /**
+     * @param int $hasOwnProperty
+     */
+    public function __construct(int $hasOwnProperty) {
+        $this->hasOwnProperty = $hasOwnProperty;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromHasOwnProperty(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toHasOwnProperty(): int {
+        if (HasOwnProperty::validateHasOwnProperty($this->hasOwnProperty))  {
+            return $this->hasOwnProperty; /*int*/
+        }
+        throw new Exception('never get to this HasOwnProperty::hasOwnProperty');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateHasOwnProperty(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getHasOwnProperty(): int {
+        if (HasOwnProperty::validateHasOwnProperty($this->hasOwnProperty))  {
+            return $this->hasOwnProperty;
+        }
+        throw new Exception('never get to getHasOwnProperty HasOwnProperty::hasOwnProperty');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleHasOwnProperty(): int {
+        return 31; /*31:hasOwnProperty*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return HasOwnProperty::validateHasOwnProperty($this->hasOwnProperty);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'hasOwnProperty'} = $this->toHasOwnProperty();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return HasOwnProperty
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): HasOwnProperty {
+        if (!property_exists($obj, 'hasOwnProperty')) {
+            throw new Exception("Missing required property");
+        }
+        return new HasOwnProperty(
+         HasOwnProperty::fromHasOwnProperty($obj->{'hasOwnProperty'})
+        );
+    }
+
+    /**
+     * @return HasOwnProperty
+     */
+    public static function sample(): HasOwnProperty {
+        return new HasOwnProperty(
+         HasOwnProperty::sampleHasOwnProperty()
+        );
+    }
+}
+
+// This is an autogenerated file:HashCode
+
+class HashCode {
+    private int $hashCode; // json:hashCode Required
+
+    /**
+     * @param int $hashCode
+     */
+    public function __construct(int $hashCode) {
+        $this->hashCode = $hashCode;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromHashCode(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toHashCode(): int {
+        if (HashCode::validateHashCode($this->hashCode))  {
+            return $this->hashCode; /*int*/
+        }
+        throw new Exception('never get to this HashCode::hashCode');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateHashCode(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getHashCode(): int {
+        if (HashCode::validateHashCode($this->hashCode))  {
+            return $this->hashCode;
+        }
+        throw new Exception('never get to getHashCode HashCode::hashCode');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleHashCode(): int {
+        return 31; /*31:hashCode*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return HashCode::validateHashCode($this->hashCode);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'hashCode'} = $this->toHashCode();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return HashCode
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): HashCode {
+        if (!property_exists($obj, 'hashCode')) {
+            throw new Exception("Missing required property");
+        }
+        return new HashCode(
+         HashCode::fromHashCode($obj->{'hashCode'})
+        );
+    }
+
+    /**
+     * @return HashCode
+     */
+    public static function sample(): HashCode {
+        return new HashCode(
+         HashCode::sampleHashCode()
+        );
+    }
+}
+
+// This is an autogenerated file:Hashable
+
+class Hashable {
+    private int $hashable; // json:Hashable Required
+
+    /**
+     * @param int $hashable
+     */
+    public function __construct(int $hashable) {
+        $this->hashable = $hashable;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromHashable(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toHashable(): int {
+        if (Hashable::validateHashable($this->hashable))  {
+            return $this->hashable; /*int*/
+        }
+        throw new Exception('never get to this Hashable::hashable');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateHashable(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getHashable(): int {
+        if (Hashable::validateHashable($this->hashable))  {
+            return $this->hashable;
+        }
+        throw new Exception('never get to getHashable Hashable::hashable');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleHashable(): int {
+        return 31; /*31:hashable*/
     }
 
     /**
@@ -26804,6 +27208,107 @@ class IntClass {
     }
 }
 
+// This is an autogenerated file:IntNode
+
+class IntNode {
+    private int $intNode; // json:IntNode Required
+
+    /**
+     * @param int $intNode
+     */
+    public function __construct(int $intNode) {
+        $this->intNode = $intNode;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromIntNode(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toIntNode(): int {
+        if (IntNode::validateIntNode($this->intNode))  {
+            return $this->intNode; /*int*/
+        }
+        throw new Exception('never get to this IntNode::intNode');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateIntNode(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getIntNode(): int {
+        if (IntNode::validateIntNode($this->intNode))  {
+            return $this->intNode;
+        }
+        throw new Exception('never get to getIntNode IntNode::intNode');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleIntNode(): int {
+        return 31; /*31:intNode*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return IntNode::validateIntNode($this->intNode);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'IntNode'} = $this->toIntNode();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return IntNode
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): IntNode {
+        if (!property_exists($obj, 'IntNode')) {
+            throw new Exception("Missing required property");
+        }
+        return new IntNode(
+         IntNode::fromIntNode($obj->{'IntNode'})
+        );
+    }
+
+    /**
+     * @return IntNode
+     */
+    public static function sample(): IntNode {
+        return new IntNode(
+         IntNode::sampleIntNode()
+        );
+    }
+}
+
 // This is an autogenerated file:InterfaceClass
 
 class InterfaceClass {
@@ -30039,6 +30544,107 @@ class Long {
     }
 }
 
+// This is an autogenerated file:LongNode
+
+class LongNode {
+    private int $longNode; // json:LongNode Required
+
+    /**
+     * @param int $longNode
+     */
+    public function __construct(int $longNode) {
+        $this->longNode = $longNode;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromLongNode(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toLongNode(): int {
+        if (LongNode::validateLongNode($this->longNode))  {
+            return $this->longNode; /*int*/
+        }
+        throw new Exception('never get to this LongNode::longNode');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateLongNode(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getLongNode(): int {
+        if (LongNode::validateLongNode($this->longNode))  {
+            return $this->longNode;
+        }
+        throw new Exception('never get to getLongNode LongNode::longNode');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleLongNode(): int {
+        return 31; /*31:longNode*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return LongNode::validateLongNode($this->longNode);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'LongNode'} = $this->toLongNode();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return LongNode
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): LongNode {
+        if (!property_exists($obj, 'LongNode')) {
+            throw new Exception("Missing required property");
+        }
+        return new LongNode(
+         LongNode::fromLongNode($obj->{'LongNode'})
+        );
+    }
+
+    /**
+     * @return LongNode
+     */
+    public static function sample(): LongNode {
+        return new LongNode(
+         LongNode::sampleLongNode()
+        );
+    }
+}
+
 // This is an autogenerated file:Map
 
 class Map {
@@ -30746,16 +31352,208 @@ class NamespaceClass {
     }
 }
 
-// This is an autogenerated file:Native
+// This is an autogenerated file:Obj4
 
-class Native {
-    private int $native; // json:native Required
+class Obj4 {
+    private int $dummy; // json:dummy Required
+    private Native $native; // json:native Required
+    private NewClass $new; // json:new Required
+    private Newtonsoft $newtonsoft; // json:newtonsoft Required
+    private Nil $nil; // json:nil Required
+    private No $no; // json:NO Required
+    private NoSuchMethod $noSuchMethod; // json:noSuchMethod Required
+    private Noexcept $noexcept; // json:noexcept Required
+    private Nonatomic $nonatomic; // json:nonatomic Required
+    private None $none; // json:None Required
+    private Nonlocal $nonlocal; // json:nonlocal Required
+    private Nonmutating $nonmutating; // json:nonmutating Required
+    private Not $not; // json:not Required
+    private NotEq $notEq; // json:not_eq Required
+    private NSError $nsError; // json:NSError Required
+    private NSObject $nsObject; // json:NSObject Required
+    private NSString $nsString; // json:NSString Required
+    private NULLClass $null; // json:NULL Required
+    private NullNode $nullNode; // json:NullNode Required
+    private Nullptr $nullptr; // json:nullptr Required
+    private Number $number; // json:number Required
+    private NoneClass $obj4None; // json:none Required
+    private Obj4Null $obj4Null; // json:null Required
+    private ProtocolClass $obj4Protocol; // json:protocol Required
+    private ObjectClass $object; // json:object Required
+    private ObjectMapper $objectMapper; // json:ObjectMapper Required
+    private ObjectNode $objectNode; // json:ObjectNode Required
+    private Of $of; // json:of Required
+    private Oneway $oneway; // json:oneway Required
+    private Open $open; // json:open Required
+    private Operator $operator; // json:operator Required
+    private Optional $optional; // json:optional Required
+    private OrClass $or; // json:or Required
+    private OrEq $orEq; // json:or_eq Required
+    private Out $out; // json:out Required
+    private OverrideClass $override; // json:override Required
+    private Package $package; // json:package Required
+    private Params $params; // json:params Required
+    private Pass $pass; // json:pass Required
+    private Port $port; // json:port Required
+    private Postfix $postfix; // json:postfix Required
+    private Precedence $precedence; // json:precedence Required
+    private Prefix $prefix; // json:prefix Required
+    private PrintClass $print; // json:print Required
+    private PrintMembers $printMembers; // json:printMembers Required
+    private Printf $printf; // json:printf Required
+    private PrivateClass $private; // json:private Required
+    private ProtectedClass $protected; // json:protected Required
+    private Protocol $protocol; // json:Protocol Required
+    private PublicClass $public; // json:public Required
+    private Quicktype $quicktype; // json:quicktype Required
+    private Raise $raise; // json:raise Required
+    private Range $range; // json:range Required
+    private ReadonlyClass $readonly; // json:readonly Required
+    private Ref $ref; // json:ref Required
+    private RegExp $regExp; // json:RegExp Required
+    private Register $register; // json:register Required
+    private ReinterpretCast $reinterpretCast; // json:reinterpret_cast Required
+    private Repeat $repeat; // json:repeat Required
+    private RequireClass $require; // json:require Required
+    private Required $required; // json:required Required
+    private Requires $requires; // json:requires Required
+    private Restrict $restrict; // json:restrict Required
+    private Retain $retain; // json:retain Required
+    private Rethrows $rethrows; // json:rethrows Required
 
     /**
-     * @param int $native
+     * @param int $dummy
+     * @param Native $native
+     * @param NewClass $new
+     * @param Newtonsoft $newtonsoft
+     * @param Nil $nil
+     * @param No $no
+     * @param NoSuchMethod $noSuchMethod
+     * @param Noexcept $noexcept
+     * @param Nonatomic $nonatomic
+     * @param None $none
+     * @param Nonlocal $nonlocal
+     * @param Nonmutating $nonmutating
+     * @param Not $not
+     * @param NotEq $notEq
+     * @param NSError $nsError
+     * @param NSObject $nsObject
+     * @param NSString $nsString
+     * @param NULLClass $null
+     * @param NullNode $nullNode
+     * @param Nullptr $nullptr
+     * @param Number $number
+     * @param NoneClass $obj4None
+     * @param Obj4Null $obj4Null
+     * @param ProtocolClass $obj4Protocol
+     * @param ObjectClass $object
+     * @param ObjectMapper $objectMapper
+     * @param ObjectNode $objectNode
+     * @param Of $of
+     * @param Oneway $oneway
+     * @param Open $open
+     * @param Operator $operator
+     * @param Optional $optional
+     * @param OrClass $or
+     * @param OrEq $orEq
+     * @param Out $out
+     * @param OverrideClass $override
+     * @param Package $package
+     * @param Params $params
+     * @param Pass $pass
+     * @param Port $port
+     * @param Postfix $postfix
+     * @param Precedence $precedence
+     * @param Prefix $prefix
+     * @param PrintClass $print
+     * @param PrintMembers $printMembers
+     * @param Printf $printf
+     * @param PrivateClass $private
+     * @param ProtectedClass $protected
+     * @param Protocol $protocol
+     * @param PublicClass $public
+     * @param Quicktype $quicktype
+     * @param Raise $raise
+     * @param Range $range
+     * @param ReadonlyClass $readonly
+     * @param Ref $ref
+     * @param RegExp $regExp
+     * @param Register $register
+     * @param ReinterpretCast $reinterpretCast
+     * @param Repeat $repeat
+     * @param RequireClass $require
+     * @param Required $required
+     * @param Requires $requires
+     * @param Restrict $restrict
+     * @param Retain $retain
+     * @param Rethrows $rethrows
      */
-    public function __construct(int $native) {
+    public function __construct(int $dummy, Native $native, NewClass $new, Newtonsoft $newtonsoft, Nil $nil, No $no, NoSuchMethod $noSuchMethod, Noexcept $noexcept, Nonatomic $nonatomic, None $none, Nonlocal $nonlocal, Nonmutating $nonmutating, Not $not, NotEq $notEq, NSError $nsError, NSObject $nsObject, NSString $nsString, NULLClass $null, NullNode $nullNode, Nullptr $nullptr, Number $number, NoneClass $obj4None, Obj4Null $obj4Null, ProtocolClass $obj4Protocol, ObjectClass $object, ObjectMapper $objectMapper, ObjectNode $objectNode, Of $of, Oneway $oneway, Open $open, Operator $operator, Optional $optional, OrClass $or, OrEq $orEq, Out $out, OverrideClass $override, Package $package, Params $params, Pass $pass, Port $port, Postfix $postfix, Precedence $precedence, Prefix $prefix, PrintClass $print, PrintMembers $printMembers, Printf $printf, PrivateClass $private, ProtectedClass $protected, Protocol $protocol, PublicClass $public, Quicktype $quicktype, Raise $raise, Range $range, ReadonlyClass $readonly, Ref $ref, RegExp $regExp, Register $register, ReinterpretCast $reinterpretCast, Repeat $repeat, RequireClass $require, Required $required, Requires $requires, Restrict $restrict, Retain $retain, Rethrows $rethrows) {
+        $this->dummy = $dummy;
         $this->native = $native;
+        $this->new = $new;
+        $this->newtonsoft = $newtonsoft;
+        $this->nil = $nil;
+        $this->no = $no;
+        $this->noSuchMethod = $noSuchMethod;
+        $this->noexcept = $noexcept;
+        $this->nonatomic = $nonatomic;
+        $this->none = $none;
+        $this->nonlocal = $nonlocal;
+        $this->nonmutating = $nonmutating;
+        $this->not = $not;
+        $this->notEq = $notEq;
+        $this->nsError = $nsError;
+        $this->nsObject = $nsObject;
+        $this->nsString = $nsString;
+        $this->null = $null;
+        $this->nullNode = $nullNode;
+        $this->nullptr = $nullptr;
+        $this->number = $number;
+        $this->obj4None = $obj4None;
+        $this->obj4Null = $obj4Null;
+        $this->obj4Protocol = $obj4Protocol;
+        $this->object = $object;
+        $this->objectMapper = $objectMapper;
+        $this->objectNode = $objectNode;
+        $this->of = $of;
+        $this->oneway = $oneway;
+        $this->open = $open;
+        $this->operator = $operator;
+        $this->optional = $optional;
+        $this->or = $or;
+        $this->orEq = $orEq;
+        $this->out = $out;
+        $this->override = $override;
+        $this->package = $package;
+        $this->params = $params;
+        $this->pass = $pass;
+        $this->port = $port;
+        $this->postfix = $postfix;
+        $this->precedence = $precedence;
+        $this->prefix = $prefix;
+        $this->print = $print;
+        $this->printMembers = $printMembers;
+        $this->printf = $printf;
+        $this->private = $private;
+        $this->protected = $protected;
+        $this->protocol = $protocol;
+        $this->public = $public;
+        $this->quicktype = $quicktype;
+        $this->raise = $raise;
+        $this->range = $range;
+        $this->readonly = $readonly;
+        $this->ref = $ref;
+        $this->regExp = $regExp;
+        $this->register = $register;
+        $this->reinterpretCast = $reinterpretCast;
+        $this->repeat = $repeat;
+        $this->require = $require;
+        $this->required = $required;
+        $this->requires = $requires;
+        $this->restrict = $restrict;
+        $this->retain = $retain;
+        $this->rethrows = $rethrows;
     }
 
     /**
@@ -30763,7 +31561,7 @@ class Native {
      * @throws Exception
      * @return int
      */
-    public static function fromNative(int $value): int {
+    public static function fromDummy(int $value): int {
         return $value; /*int*/
     }
 
@@ -30771,11 +31569,11 @@ class Native {
      * @throws Exception
      * @return int
      */
-    public function toNative(): int {
-        if (Native::validateNative($this->native))  {
-            return $this->native; /*int*/
+    public function toDummy(): int {
+        if (Obj4::validateDummy($this->dummy))  {
+            return $this->dummy; /*int*/
         }
-        throw new Exception('never get to this Native::native');
+        throw new Exception('never get to this Obj4::dummy');
     }
 
     /**
@@ -30783,7 +31581,7 @@ class Native {
      * @return bool
      * @throws Exception
      */
-    public static function validateNative(int $value): bool {
+    public static function validateDummy(int $value): bool {
         return true;
     }
 
@@ -30791,1680 +31589,1266 @@ class Native {
      * @throws Exception
      * @return int
      */
-    public function getNative(): int {
-        if (Native::validateNative($this->native))  {
-            return $this->native;
+    public function getDummy(): int {
+        if (Obj4::validateDummy($this->dummy))  {
+            return $this->dummy;
         }
-        throw new Exception('never get to getNative Native::native');
+        throw new Exception('never get to getDummy Obj4::dummy');
     }
 
     /**
      * @return int
      */
-    public static function sampleNative(): int {
-        return 31; /*31:native*/
+    public static function sampleDummy(): int {
+        return 31; /*31:dummy*/
     }
 
     /**
+     * @param stdClass $value
      * @throws Exception
-     * @return bool
+     * @return Native
      */
-    public function validate(): bool {
-        return Native::validateNative($this->native);
+    public static function fromNative(stdClass $value): Native {
+        return Native::from($value); /*class*/
     }
 
     /**
-     * @return stdClass
      * @throws Exception
+     * @return stdClass
      */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'native'} = $this->toNative();
-        return $out;
+    public function toNative(): stdClass {
+        if (Obj4::validateNative($this->native))  {
+            return $this->native->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::native');
     }
 
     /**
-     * @param stdClass $obj
-     * @return Native
+     * @param Native
+     * @return bool
      * @throws Exception
      */
-    public static function from(stdClass $obj): Native {
-        if (!property_exists($obj, 'native')) {
-            throw new Exception("Missing required property");
-        }
-        return new Native(
-         Native::fromNative($obj->{'native'})
-        );
+    public static function validateNative(Native $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
+     * @throws Exception
      * @return Native
      */
-    public static function sample(): Native {
-        return new Native(
-         Native::sampleNative()
-        );
+    public function getNative(): Native {
+        if (Obj4::validateNative($this->native))  {
+            return $this->native;
+        }
+        throw new Exception('never get to getNative Obj4::native');
     }
-}
-
-// This is an autogenerated file:NewClass
-
-class NewClass {
-    private int $new; // json:new Required
 
     /**
-     * @param int $new
+     * @return Native
      */
-    public function __construct(int $new) {
-        $this->new = $new;
+    public static function sampleNative(): Native {
+        return Native::sample(); /*32:native*/
     }
 
     /**
-     * @param int $value
+     * @param stdClass $value
      * @throws Exception
-     * @return int
+     * @return NewClass
      */
-    public static function fromNew(int $value): int {
-        return $value; /*int*/
+    public static function fromNew(stdClass $value): NewClass {
+        return NewClass::from($value); /*class*/
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return stdClass
      */
-    public function toNew(): int {
-        if (NewClass::validateNew($this->new))  {
-            return $this->new; /*int*/
+    public function toNew(): stdClass {
+        if (Obj4::validateNew($this->new))  {
+            return $this->new->to(); /*class*/
         }
-        throw new Exception('never get to this NewClass::new');
+        throw new Exception('never get to this Obj4::new');
     }
 
     /**
-     * @param int
+     * @param NewClass
      * @return bool
      * @throws Exception
      */
-    public static function validateNew(int $value): bool {
+    public static function validateNew(NewClass $value): bool {
+        $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return NewClass
      */
-    public function getNew(): int {
-        if (NewClass::validateNew($this->new))  {
+    public function getNew(): NewClass {
+        if (Obj4::validateNew($this->new))  {
             return $this->new;
         }
-        throw new Exception('never get to getNew NewClass::new');
+        throw new Exception('never get to getNew Obj4::new');
     }
 
     /**
-     * @return int
+     * @return NewClass
      */
-    public static function sampleNew(): int {
-        return 31; /*31:new*/
+    public static function sampleNew(): NewClass {
+        return NewClass::sample(); /*33:new*/
     }
 
     /**
+     * @param stdClass $value
      * @throws Exception
-     * @return bool
+     * @return Newtonsoft
      */
-    public function validate(): bool {
-        return NewClass::validateNew($this->new);
+    public static function fromNewtonsoft(stdClass $value): Newtonsoft {
+        return Newtonsoft::from($value); /*class*/
     }
 
     /**
-     * @return stdClass
      * @throws Exception
+     * @return stdClass
      */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'new'} = $this->toNew();
-        return $out;
+    public function toNewtonsoft(): stdClass {
+        if (Obj4::validateNewtonsoft($this->newtonsoft))  {
+            return $this->newtonsoft->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::newtonsoft');
     }
 
     /**
-     * @param stdClass $obj
-     * @return NewClass
+     * @param Newtonsoft
+     * @return bool
      * @throws Exception
      */
-    public static function from(stdClass $obj): NewClass {
-        if (!property_exists($obj, 'new')) {
-            throw new Exception("Missing required property");
-        }
-        return new NewClass(
-         NewClass::fromNew($obj->{'new'})
-        );
+    public static function validateNewtonsoft(Newtonsoft $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
-     * @return NewClass
+     * @throws Exception
+     * @return Newtonsoft
      */
-    public static function sample(): NewClass {
-        return new NewClass(
-         NewClass::sampleNew()
-        );
+    public function getNewtonsoft(): Newtonsoft {
+        if (Obj4::validateNewtonsoft($this->newtonsoft))  {
+            return $this->newtonsoft;
+        }
+        throw new Exception('never get to getNewtonsoft Obj4::newtonsoft');
     }
-}
-
-// This is an autogenerated file:Newtonsoft
-
-class Newtonsoft {
-    private int $newtonsoft; // json:newtonsoft Required
 
     /**
-     * @param int $newtonsoft
+     * @return Newtonsoft
      */
-    public function __construct(int $newtonsoft) {
-        $this->newtonsoft = $newtonsoft;
+    public static function sampleNewtonsoft(): Newtonsoft {
+        return Newtonsoft::sample(); /*34:newtonsoft*/
     }
 
     /**
-     * @param int $value
+     * @param stdClass $value
      * @throws Exception
-     * @return int
+     * @return Nil
      */
-    public static function fromNewtonsoft(int $value): int {
-        return $value; /*int*/
+    public static function fromNil(stdClass $value): Nil {
+        return Nil::from($value); /*class*/
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return stdClass
      */
-    public function toNewtonsoft(): int {
-        if (Newtonsoft::validateNewtonsoft($this->newtonsoft))  {
-            return $this->newtonsoft; /*int*/
+    public function toNil(): stdClass {
+        if (Obj4::validateNil($this->nil))  {
+            return $this->nil->to(); /*class*/
         }
-        throw new Exception('never get to this Newtonsoft::newtonsoft');
+        throw new Exception('never get to this Obj4::nil');
     }
 
     /**
-     * @param int
+     * @param Nil
      * @return bool
      * @throws Exception
      */
-    public static function validateNewtonsoft(int $value): bool {
+    public static function validateNil(Nil $value): bool {
+        $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return Nil
      */
-    public function getNewtonsoft(): int {
-        if (Newtonsoft::validateNewtonsoft($this->newtonsoft))  {
-            return $this->newtonsoft;
+    public function getNil(): Nil {
+        if (Obj4::validateNil($this->nil))  {
+            return $this->nil;
         }
-        throw new Exception('never get to getNewtonsoft Newtonsoft::newtonsoft');
+        throw new Exception('never get to getNil Obj4::nil');
     }
 
     /**
-     * @return int
+     * @return Nil
      */
-    public static function sampleNewtonsoft(): int {
-        return 31; /*31:newtonsoft*/
+    public static function sampleNil(): Nil {
+        return Nil::sample(); /*35:nil*/
     }
 
     /**
+     * @param stdClass $value
      * @throws Exception
-     * @return bool
+     * @return No
      */
-    public function validate(): bool {
-        return Newtonsoft::validateNewtonsoft($this->newtonsoft);
+    public static function fromNo(stdClass $value): No {
+        return No::from($value); /*class*/
     }
 
     /**
+     * @throws Exception
      * @return stdClass
+     */
+    public function toNo(): stdClass {
+        if (Obj4::validateNo($this->no))  {
+            return $this->no->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::no');
+    }
+
+    /**
+     * @param No
+     * @return bool
      * @throws Exception
      */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'newtonsoft'} = $this->toNewtonsoft();
-        return $out;
+    public static function validateNo(No $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
-     * @param stdClass $obj
-     * @return Newtonsoft
      * @throws Exception
+     * @return No
      */
-    public static function from(stdClass $obj): Newtonsoft {
-        if (!property_exists($obj, 'newtonsoft')) {
-            throw new Exception("Missing required property");
+    public function getNo(): No {
+        if (Obj4::validateNo($this->no))  {
+            return $this->no;
         }
-        return new Newtonsoft(
-         Newtonsoft::fromNewtonsoft($obj->{'newtonsoft'})
-        );
+        throw new Exception('never get to getNo Obj4::no');
     }
 
     /**
-     * @return Newtonsoft
+     * @return No
      */
-    public static function sample(): Newtonsoft {
-        return new Newtonsoft(
-         Newtonsoft::sampleNewtonsoft()
-        );
+    public static function sampleNo(): No {
+        return No::sample(); /*36:no*/
     }
-}
 
-// This is an autogenerated file:Nil
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return NoSuchMethod
+     */
+    public static function fromNoSuchMethod(stdClass $value): NoSuchMethod {
+        return NoSuchMethod::from($value); /*class*/
+    }
 
-class Nil {
-    private int $nil; // json:nil Required
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toNoSuchMethod(): stdClass {
+        if (Obj4::validateNoSuchMethod($this->noSuchMethod))  {
+            return $this->noSuchMethod->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::noSuchMethod');
+    }
 
     /**
-     * @param int $nil
+     * @param NoSuchMethod
+     * @return bool
+     * @throws Exception
      */
-    public function __construct(int $nil) {
-        $this->nil = $nil;
+    public static function validateNoSuchMethod(NoSuchMethod $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
-     * @param int $value
      * @throws Exception
-     * @return int
+     * @return NoSuchMethod
      */
-    public static function fromNil(int $value): int {
-        return $value; /*int*/
+    public function getNoSuchMethod(): NoSuchMethod {
+        if (Obj4::validateNoSuchMethod($this->noSuchMethod))  {
+            return $this->noSuchMethod;
+        }
+        throw new Exception('never get to getNoSuchMethod Obj4::noSuchMethod');
+    }
+
+    /**
+     * @return NoSuchMethod
+     */
+    public static function sampleNoSuchMethod(): NoSuchMethod {
+        return NoSuchMethod::sample(); /*37:noSuchMethod*/
     }
 
     /**
+     * @param stdClass $value
      * @throws Exception
-     * @return int
+     * @return Noexcept
      */
-    public function toNil(): int {
-        if (Nil::validateNil($this->nil))  {
-            return $this->nil; /*int*/
+    public static function fromNoexcept(stdClass $value): Noexcept {
+        return Noexcept::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toNoexcept(): stdClass {
+        if (Obj4::validateNoexcept($this->noexcept))  {
+            return $this->noexcept->to(); /*class*/
         }
-        throw new Exception('never get to this Nil::nil');
+        throw new Exception('never get to this Obj4::noexcept');
     }
 
     /**
-     * @param int
+     * @param Noexcept
      * @return bool
      * @throws Exception
      */
-    public static function validateNil(int $value): bool {
+    public static function validateNoexcept(Noexcept $value): bool {
+        $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return Noexcept
      */
-    public function getNil(): int {
-        if (Nil::validateNil($this->nil))  {
-            return $this->nil;
+    public function getNoexcept(): Noexcept {
+        if (Obj4::validateNoexcept($this->noexcept))  {
+            return $this->noexcept;
         }
-        throw new Exception('never get to getNil Nil::nil');
+        throw new Exception('never get to getNoexcept Obj4::noexcept');
     }
 
     /**
-     * @return int
+     * @return Noexcept
      */
-    public static function sampleNil(): int {
-        return 31; /*31:nil*/
+    public static function sampleNoexcept(): Noexcept {
+        return Noexcept::sample(); /*38:noexcept*/
     }
 
     /**
+     * @param stdClass $value
      * @throws Exception
-     * @return bool
+     * @return Nonatomic
      */
-    public function validate(): bool {
-        return Nil::validateNil($this->nil);
+    public static function fromNonatomic(stdClass $value): Nonatomic {
+        return Nonatomic::from($value); /*class*/
     }
 
     /**
+     * @throws Exception
      * @return stdClass
+     */
+    public function toNonatomic(): stdClass {
+        if (Obj4::validateNonatomic($this->nonatomic))  {
+            return $this->nonatomic->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::nonatomic');
+    }
+
+    /**
+     * @param Nonatomic
+     * @return bool
      * @throws Exception
      */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'nil'} = $this->toNil();
-        return $out;
+    public static function validateNonatomic(Nonatomic $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
-     * @param stdClass $obj
-     * @return Nil
      * @throws Exception
+     * @return Nonatomic
      */
-    public static function from(stdClass $obj): Nil {
-        if (!property_exists($obj, 'nil')) {
-            throw new Exception("Missing required property");
+    public function getNonatomic(): Nonatomic {
+        if (Obj4::validateNonatomic($this->nonatomic))  {
+            return $this->nonatomic;
         }
-        return new Nil(
-         Nil::fromNil($obj->{'nil'})
-        );
+        throw new Exception('never get to getNonatomic Obj4::nonatomic');
     }
 
     /**
-     * @return Nil
+     * @return Nonatomic
      */
-    public static function sample(): Nil {
-        return new Nil(
-         Nil::sampleNil()
-        );
+    public static function sampleNonatomic(): Nonatomic {
+        return Nonatomic::sample(); /*39:nonatomic*/
     }
-}
 
-// This is an autogenerated file:No
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return None
+     */
+    public static function fromNone(stdClass $value): None {
+        return None::from($value); /*class*/
+    }
 
-class No {
-    private int $no; // json:NO Required
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toNone(): stdClass {
+        if (Obj4::validateNone($this->none))  {
+            return $this->none->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::none');
+    }
 
     /**
-     * @param int $no
+     * @param None
+     * @return bool
+     * @throws Exception
      */
-    public function __construct(int $no) {
-        $this->no = $no;
+    public static function validateNone(None $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
-     * @param int $value
      * @throws Exception
-     * @return int
+     * @return None
      */
-    public static function fromNo(int $value): int {
-        return $value; /*int*/
+    public function getNone(): None {
+        if (Obj4::validateNone($this->none))  {
+            return $this->none;
+        }
+        throw new Exception('never get to getNone Obj4::none');
+    }
+
+    /**
+     * @return None
+     */
+    public static function sampleNone(): None {
+        return None::sample(); /*40:none*/
     }
 
     /**
+     * @param stdClass $value
      * @throws Exception
-     * @return int
+     * @return Nonlocal
      */
-    public function toNo(): int {
-        if (No::validateNo($this->no))  {
-            return $this->no; /*int*/
+    public static function fromNonlocal(stdClass $value): Nonlocal {
+        return Nonlocal::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toNonlocal(): stdClass {
+        if (Obj4::validateNonlocal($this->nonlocal))  {
+            return $this->nonlocal->to(); /*class*/
         }
-        throw new Exception('never get to this No::no');
+        throw new Exception('never get to this Obj4::nonlocal');
     }
 
     /**
-     * @param int
+     * @param Nonlocal
      * @return bool
      * @throws Exception
      */
-    public static function validateNo(int $value): bool {
+    public static function validateNonlocal(Nonlocal $value): bool {
+        $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return Nonlocal
      */
-    public function getNo(): int {
-        if (No::validateNo($this->no))  {
-            return $this->no;
+    public function getNonlocal(): Nonlocal {
+        if (Obj4::validateNonlocal($this->nonlocal))  {
+            return $this->nonlocal;
         }
-        throw new Exception('never get to getNo No::no');
+        throw new Exception('never get to getNonlocal Obj4::nonlocal');
     }
 
     /**
-     * @return int
+     * @return Nonlocal
      */
-    public static function sampleNo(): int {
-        return 31; /*31:no*/
+    public static function sampleNonlocal(): Nonlocal {
+        return Nonlocal::sample(); /*41:nonlocal*/
     }
 
     /**
+     * @param stdClass $value
      * @throws Exception
-     * @return bool
+     * @return Nonmutating
      */
-    public function validate(): bool {
-        return No::validateNo($this->no);
+    public static function fromNonmutating(stdClass $value): Nonmutating {
+        return Nonmutating::from($value); /*class*/
     }
 
     /**
+     * @throws Exception
      * @return stdClass
+     */
+    public function toNonmutating(): stdClass {
+        if (Obj4::validateNonmutating($this->nonmutating))  {
+            return $this->nonmutating->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::nonmutating');
+    }
+
+    /**
+     * @param Nonmutating
+     * @return bool
      * @throws Exception
      */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'NO'} = $this->toNo();
-        return $out;
+    public static function validateNonmutating(Nonmutating $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
-     * @param stdClass $obj
-     * @return No
      * @throws Exception
+     * @return Nonmutating
      */
-    public static function from(stdClass $obj): No {
-        if (!property_exists($obj, 'NO')) {
-            throw new Exception("Missing required property");
+    public function getNonmutating(): Nonmutating {
+        if (Obj4::validateNonmutating($this->nonmutating))  {
+            return $this->nonmutating;
         }
-        return new No(
-         No::fromNo($obj->{'NO'})
-        );
+        throw new Exception('never get to getNonmutating Obj4::nonmutating');
     }
 
     /**
-     * @return No
+     * @return Nonmutating
      */
-    public static function sample(): No {
-        return new No(
-         No::sampleNo()
-        );
+    public static function sampleNonmutating(): Nonmutating {
+        return Nonmutating::sample(); /*42:nonmutating*/
     }
-}
 
-// This is an autogenerated file:Noexcept
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Not
+     */
+    public static function fromNot(stdClass $value): Not {
+        return Not::from($value); /*class*/
+    }
 
-class Noexcept {
-    private int $noexcept; // json:noexcept Required
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toNot(): stdClass {
+        if (Obj4::validateNot($this->not))  {
+            return $this->not->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::not');
+    }
 
     /**
-     * @param int $noexcept
+     * @param Not
+     * @return bool
+     * @throws Exception
      */
-    public function __construct(int $noexcept) {
-        $this->noexcept = $noexcept;
+    public static function validateNot(Not $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
-     * @param int $value
      * @throws Exception
-     * @return int
+     * @return Not
      */
-    public static function fromNoexcept(int $value): int {
-        return $value; /*int*/
+    public function getNot(): Not {
+        if (Obj4::validateNot($this->not))  {
+            return $this->not;
+        }
+        throw new Exception('never get to getNot Obj4::not');
     }
 
     /**
+     * @return Not
+     */
+    public static function sampleNot(): Not {
+        return Not::sample(); /*43:not*/
+    }
+
+    /**
+     * @param stdClass $value
      * @throws Exception
-     * @return int
+     * @return NotEq
      */
-    public function toNoexcept(): int {
-        if (Noexcept::validateNoexcept($this->noexcept))  {
-            return $this->noexcept; /*int*/
+    public static function fromNotEq(stdClass $value): NotEq {
+        return NotEq::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toNotEq(): stdClass {
+        if (Obj4::validateNotEq($this->notEq))  {
+            return $this->notEq->to(); /*class*/
         }
-        throw new Exception('never get to this Noexcept::noexcept');
+        throw new Exception('never get to this Obj4::notEq');
     }
 
     /**
-     * @param int
+     * @param NotEq
      * @return bool
      * @throws Exception
      */
-    public static function validateNoexcept(int $value): bool {
+    public static function validateNotEq(NotEq $value): bool {
+        $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return NotEq
      */
-    public function getNoexcept(): int {
-        if (Noexcept::validateNoexcept($this->noexcept))  {
-            return $this->noexcept;
+    public function getNotEq(): NotEq {
+        if (Obj4::validateNotEq($this->notEq))  {
+            return $this->notEq;
         }
-        throw new Exception('never get to getNoexcept Noexcept::noexcept');
+        throw new Exception('never get to getNotEq Obj4::notEq');
     }
 
     /**
-     * @return int
+     * @return NotEq
      */
-    public static function sampleNoexcept(): int {
-        return 31; /*31:noexcept*/
+    public static function sampleNotEq(): NotEq {
+        return NotEq::sample(); /*44:notEq*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return NSError
+     */
+    public static function fromNSError(stdClass $value): NSError {
+        return NSError::from($value); /*class*/
     }
 
     /**
      * @throws Exception
+     * @return stdClass
+     */
+    public function toNSError(): stdClass {
+        if (Obj4::validateNSError($this->nsError))  {
+            return $this->nsError->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::nsError');
+    }
+
+    /**
+     * @param NSError
      * @return bool
+     * @throws Exception
      */
-    public function validate(): bool {
-        return Noexcept::validateNoexcept($this->noexcept);
+    public static function validateNSError(NSError $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return NSError
+     */
+    public function getNSError(): NSError {
+        if (Obj4::validateNSError($this->nsError))  {
+            return $this->nsError;
+        }
+        throw new Exception('never get to getNSError Obj4::nsError');
+    }
+
+    /**
+     * @return NSError
+     */
+    public static function sampleNSError(): NSError {
+        return NSError::sample(); /*45:nsError*/
     }
 
     /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return NSObject
+     */
+    public static function fromNSObject(stdClass $value): NSObject {
+        return NSObject::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
      * @return stdClass
+     */
+    public function toNSObject(): stdClass {
+        if (Obj4::validateNSObject($this->nsObject))  {
+            return $this->nsObject->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::nsObject');
+    }
+
+    /**
+     * @param NSObject
+     * @return bool
      * @throws Exception
      */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'noexcept'} = $this->toNoexcept();
-        return $out;
+    public static function validateNSObject(NSObject $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
-     * @param stdClass $obj
-     * @return Noexcept
      * @throws Exception
+     * @return NSObject
      */
-    public static function from(stdClass $obj): Noexcept {
-        if (!property_exists($obj, 'noexcept')) {
-            throw new Exception("Missing required property");
+    public function getNSObject(): NSObject {
+        if (Obj4::validateNSObject($this->nsObject))  {
+            return $this->nsObject;
         }
-        return new Noexcept(
-         Noexcept::fromNoexcept($obj->{'noexcept'})
-        );
+        throw new Exception('never get to getNSObject Obj4::nsObject');
     }
 
     /**
-     * @return Noexcept
+     * @return NSObject
      */
-    public static function sample(): Noexcept {
-        return new Noexcept(
-         Noexcept::sampleNoexcept()
-        );
+    public static function sampleNSObject(): NSObject {
+        return NSObject::sample(); /*46:nsObject*/
     }
-}
 
-// This is an autogenerated file:Obj4
-
-class Obj4 {
-    private int $dummy; // json:dummy Required
-    private NoSuchMethod $noSuchMethod; // json:noSuchMethod Required
-    private Nonatomic $nonatomic; // json:nonatomic Required
-    private None $none; // json:None Required
-    private Nonlocal $nonlocal; // json:nonlocal Required
-    private Nonmutating $nonmutating; // json:nonmutating Required
-    private Not $not; // json:not Required
-    private NotEq $notEq; // json:not_eq Required
-    private NSError $nsError; // json:NSError Required
-    private NSObject $nsObject; // json:NSObject Required
-    private NSString $nsString; // json:NSString Required
-    private NULLClass $null; // json:NULL Required
-    private Nullptr $nullptr; // json:nullptr Required
-    private Number $number; // json:number Required
-    private NoneClass $obj4None; // json:none Required
-    private Obj4Null $obj4Null; // json:null Required
-    private ProtocolClass $obj4Protocol; // json:protocol Required
-    private ObjectClass $object; // json:object Required
-    private ObjectMapper $objectMapper; // json:ObjectMapper Required
-    private Of $of; // json:of Required
-    private Oneway $oneway; // json:oneway Required
-    private Open $open; // json:open Required
-    private Operator $operator; // json:operator Required
-    private Optional $optional; // json:optional Required
-    private OrClass $or; // json:or Required
-    private OrEq $orEq; // json:or_eq Required
-    private Out $out; // json:out Required
-    private OverrideClass $override; // json:override Required
-    private Package $package; // json:package Required
-    private Params $params; // json:params Required
-    private Pass $pass; // json:pass Required
-    private Port $port; // json:port Required
-    private Postfix $postfix; // json:postfix Required
-    private Precedence $precedence; // json:precedence Required
-    private Prefix $prefix; // json:prefix Required
-    private PrintClass $print; // json:print Required
-    private PrintMembers $printMembers; // json:printMembers Required
-    private Printf $printf; // json:printf Required
-    private PrivateClass $private; // json:private Required
-    private ProtectedClass $protected; // json:protected Required
-    private Protocol $protocol; // json:Protocol Required
-    private PublicClass $public; // json:public Required
-    private Quicktype $quicktype; // json:quicktype Required
-    private Raise $raise; // json:raise Required
-    private Range $range; // json:range Required
-    private ReadonlyClass $readonly; // json:readonly Required
-    private Ref $ref; // json:ref Required
-    private RegExp $regExp; // json:RegExp Required
-    private Register $register; // json:register Required
-    private ReinterpretCast $reinterpretCast; // json:reinterpret_cast Required
-    private Repeat $repeat; // json:repeat Required
-    private RequireClass $require; // json:require Required
-    private Required $required; // json:required Required
-    private Requires $requires; // json:requires Required
-    private Restrict $restrict; // json:restrict Required
-    private Retain $retain; // json:retain Required
-    private Rethrows $rethrows; // json:rethrows Required
-    private ReturnClass $return; // json:return Required
-    private Right $right; // json:right Required
-    private RuntimeType $runtimeType; // json:runtimeType Required
-    private S $s; // json:s Required
-    private Sbyte $sbyte; // json:sbyte Required
-    private Sealed $sealed; // json:sealed Required
-    private Sel $sel; // json:SEL Required
-    private Select $select; // json:select Required
-
-    /**
-     * @param int $dummy
-     * @param NoSuchMethod $noSuchMethod
-     * @param Nonatomic $nonatomic
-     * @param None $none
-     * @param Nonlocal $nonlocal
-     * @param Nonmutating $nonmutating
-     * @param Not $not
-     * @param NotEq $notEq
-     * @param NSError $nsError
-     * @param NSObject $nsObject
-     * @param NSString $nsString
-     * @param NULLClass $null
-     * @param Nullptr $nullptr
-     * @param Number $number
-     * @param NoneClass $obj4None
-     * @param Obj4Null $obj4Null
-     * @param ProtocolClass $obj4Protocol
-     * @param ObjectClass $object
-     * @param ObjectMapper $objectMapper
-     * @param Of $of
-     * @param Oneway $oneway
-     * @param Open $open
-     * @param Operator $operator
-     * @param Optional $optional
-     * @param OrClass $or
-     * @param OrEq $orEq
-     * @param Out $out
-     * @param OverrideClass $override
-     * @param Package $package
-     * @param Params $params
-     * @param Pass $pass
-     * @param Port $port
-     * @param Postfix $postfix
-     * @param Precedence $precedence
-     * @param Prefix $prefix
-     * @param PrintClass $print
-     * @param PrintMembers $printMembers
-     * @param Printf $printf
-     * @param PrivateClass $private
-     * @param ProtectedClass $protected
-     * @param Protocol $protocol
-     * @param PublicClass $public
-     * @param Quicktype $quicktype
-     * @param Raise $raise
-     * @param Range $range
-     * @param ReadonlyClass $readonly
-     * @param Ref $ref
-     * @param RegExp $regExp
-     * @param Register $register
-     * @param ReinterpretCast $reinterpretCast
-     * @param Repeat $repeat
-     * @param RequireClass $require
-     * @param Required $required
-     * @param Requires $requires
-     * @param Restrict $restrict
-     * @param Retain $retain
-     * @param Rethrows $rethrows
-     * @param ReturnClass $return
-     * @param Right $right
-     * @param RuntimeType $runtimeType
-     * @param S $s
-     * @param Sbyte $sbyte
-     * @param Sealed $sealed
-     * @param Sel $sel
-     * @param Select $select
-     */
-    public function __construct(int $dummy, NoSuchMethod $noSuchMethod, Nonatomic $nonatomic, None $none, Nonlocal $nonlocal, Nonmutating $nonmutating, Not $not, NotEq $notEq, NSError $nsError, NSObject $nsObject, NSString $nsString, NULLClass $null, Nullptr $nullptr, Number $number, NoneClass $obj4None, Obj4Null $obj4Null, ProtocolClass $obj4Protocol, ObjectClass $object, ObjectMapper $objectMapper, Of $of, Oneway $oneway, Open $open, Operator $operator, Optional $optional, OrClass $or, OrEq $orEq, Out $out, OverrideClass $override, Package $package, Params $params, Pass $pass, Port $port, Postfix $postfix, Precedence $precedence, Prefix $prefix, PrintClass $print, PrintMembers $printMembers, Printf $printf, PrivateClass $private, ProtectedClass $protected, Protocol $protocol, PublicClass $public, Quicktype $quicktype, Raise $raise, Range $range, ReadonlyClass $readonly, Ref $ref, RegExp $regExp, Register $register, ReinterpretCast $reinterpretCast, Repeat $repeat, RequireClass $require, Required $required, Requires $requires, Restrict $restrict, Retain $retain, Rethrows $rethrows, ReturnClass $return, Right $right, RuntimeType $runtimeType, S $s, Sbyte $sbyte, Sealed $sealed, Sel $sel, Select $select) {
-        $this->dummy = $dummy;
-        $this->noSuchMethod = $noSuchMethod;
-        $this->nonatomic = $nonatomic;
-        $this->none = $none;
-        $this->nonlocal = $nonlocal;
-        $this->nonmutating = $nonmutating;
-        $this->not = $not;
-        $this->notEq = $notEq;
-        $this->nsError = $nsError;
-        $this->nsObject = $nsObject;
-        $this->nsString = $nsString;
-        $this->null = $null;
-        $this->nullptr = $nullptr;
-        $this->number = $number;
-        $this->obj4None = $obj4None;
-        $this->obj4Null = $obj4Null;
-        $this->obj4Protocol = $obj4Protocol;
-        $this->object = $object;
-        $this->objectMapper = $objectMapper;
-        $this->of = $of;
-        $this->oneway = $oneway;
-        $this->open = $open;
-        $this->operator = $operator;
-        $this->optional = $optional;
-        $this->or = $or;
-        $this->orEq = $orEq;
-        $this->out = $out;
-        $this->override = $override;
-        $this->package = $package;
-        $this->params = $params;
-        $this->pass = $pass;
-        $this->port = $port;
-        $this->postfix = $postfix;
-        $this->precedence = $precedence;
-        $this->prefix = $prefix;
-        $this->print = $print;
-        $this->printMembers = $printMembers;
-        $this->printf = $printf;
-        $this->private = $private;
-        $this->protected = $protected;
-        $this->protocol = $protocol;
-        $this->public = $public;
-        $this->quicktype = $quicktype;
-        $this->raise = $raise;
-        $this->range = $range;
-        $this->readonly = $readonly;
-        $this->ref = $ref;
-        $this->regExp = $regExp;
-        $this->register = $register;
-        $this->reinterpretCast = $reinterpretCast;
-        $this->repeat = $repeat;
-        $this->require = $require;
-        $this->required = $required;
-        $this->requires = $requires;
-        $this->restrict = $restrict;
-        $this->retain = $retain;
-        $this->rethrows = $rethrows;
-        $this->return = $return;
-        $this->right = $right;
-        $this->runtimeType = $runtimeType;
-        $this->s = $s;
-        $this->sbyte = $sbyte;
-        $this->sealed = $sealed;
-        $this->sel = $sel;
-        $this->select = $select;
-    }
-
-    /**
-     * @param int $value
-     * @throws Exception
-     * @return int
-     */
-    public static function fromDummy(int $value): int {
-        return $value; /*int*/
-    }
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return NSString
+     */
+    public static function fromNSString(stdClass $value): NSString {
+        return NSString::from($value); /*class*/
+    }
 
     /**
      * @throws Exception
-     * @return int
+     * @return stdClass
      */
-    public function toDummy(): int {
-        if (Obj4::validateDummy($this->dummy))  {
-            return $this->dummy; /*int*/
+    public function toNSString(): stdClass {
+        if (Obj4::validateNSString($this->nsString))  {
+            return $this->nsString->to(); /*class*/
         }
-        throw new Exception('never get to this Obj4::dummy');
+        throw new Exception('never get to this Obj4::nsString');
     }
 
     /**
-     * @param int
+     * @param NSString
      * @return bool
      * @throws Exception
      */
-    public static function validateDummy(int $value): bool {
+    public static function validateNSString(NSString $value): bool {
+        $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return NSString
      */
-    public function getDummy(): int {
-        if (Obj4::validateDummy($this->dummy))  {
-            return $this->dummy;
+    public function getNSString(): NSString {
+        if (Obj4::validateNSString($this->nsString))  {
+            return $this->nsString;
         }
-        throw new Exception('never get to getDummy Obj4::dummy');
+        throw new Exception('never get to getNSString Obj4::nsString');
     }
 
     /**
-     * @return int
+     * @return NSString
      */
-    public static function sampleDummy(): int {
-        return 31; /*31:dummy*/
+    public static function sampleNSString(): NSString {
+        return NSString::sample(); /*47:nsString*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return NoSuchMethod
+     * @return NULLClass
      */
-    public static function fromNoSuchMethod(stdClass $value): NoSuchMethod {
-        return NoSuchMethod::from($value); /*class*/
+    public static function fromNull(stdClass $value): NULLClass {
+        return NULLClass::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toNoSuchMethod(): stdClass {
-        if (Obj4::validateNoSuchMethod($this->noSuchMethod))  {
-            return $this->noSuchMethod->to(); /*class*/
+    public function toNull(): stdClass {
+        if (Obj4::validateNull($this->null))  {
+            return $this->null->to(); /*class*/
         }
-        throw new Exception('never get to this Obj4::noSuchMethod');
+        throw new Exception('never get to this Obj4::null');
     }
 
     /**
-     * @param NoSuchMethod
+     * @param NULLClass
      * @return bool
      * @throws Exception
      */
-    public static function validateNoSuchMethod(NoSuchMethod $value): bool {
+    public static function validateNull(NULLClass $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return NoSuchMethod
+     * @return NULLClass
      */
-    public function getNoSuchMethod(): NoSuchMethod {
-        if (Obj4::validateNoSuchMethod($this->noSuchMethod))  {
-            return $this->noSuchMethod;
+    public function getNull(): NULLClass {
+        if (Obj4::validateNull($this->null))  {
+            return $this->null;
         }
-        throw new Exception('never get to getNoSuchMethod Obj4::noSuchMethod');
+        throw new Exception('never get to getNull Obj4::null');
     }
 
     /**
-     * @return NoSuchMethod
+     * @return NULLClass
      */
-    public static function sampleNoSuchMethod(): NoSuchMethod {
-        return NoSuchMethod::sample(); /*32:noSuchMethod*/
+    public static function sampleNull(): NULLClass {
+        return NULLClass::sample(); /*48:null*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return Nonatomic
+     * @return NullNode
      */
-    public static function fromNonatomic(stdClass $value): Nonatomic {
-        return Nonatomic::from($value); /*class*/
+    public static function fromNullNode(stdClass $value): NullNode {
+        return NullNode::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toNonatomic(): stdClass {
-        if (Obj4::validateNonatomic($this->nonatomic))  {
-            return $this->nonatomic->to(); /*class*/
+    public function toNullNode(): stdClass {
+        if (Obj4::validateNullNode($this->nullNode))  {
+            return $this->nullNode->to(); /*class*/
         }
-        throw new Exception('never get to this Obj4::nonatomic');
+        throw new Exception('never get to this Obj4::nullNode');
     }
 
     /**
-     * @param Nonatomic
+     * @param NullNode
      * @return bool
      * @throws Exception
      */
-    public static function validateNonatomic(Nonatomic $value): bool {
+    public static function validateNullNode(NullNode $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return Nonatomic
+     * @return NullNode
      */
-    public function getNonatomic(): Nonatomic {
-        if (Obj4::validateNonatomic($this->nonatomic))  {
-            return $this->nonatomic;
+    public function getNullNode(): NullNode {
+        if (Obj4::validateNullNode($this->nullNode))  {
+            return $this->nullNode;
         }
-        throw new Exception('never get to getNonatomic Obj4::nonatomic');
+        throw new Exception('never get to getNullNode Obj4::nullNode');
     }
 
     /**
-     * @return Nonatomic
+     * @return NullNode
      */
-    public static function sampleNonatomic(): Nonatomic {
-        return Nonatomic::sample(); /*33:nonatomic*/
+    public static function sampleNullNode(): NullNode {
+        return NullNode::sample(); /*49:nullNode*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return None
+     * @return Nullptr
      */
-    public static function fromNone(stdClass $value): None {
-        return None::from($value); /*class*/
+    public static function fromNullptr(stdClass $value): Nullptr {
+        return Nullptr::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toNone(): stdClass {
-        if (Obj4::validateNone($this->none))  {
-            return $this->none->to(); /*class*/
+    public function toNullptr(): stdClass {
+        if (Obj4::validateNullptr($this->nullptr))  {
+            return $this->nullptr->to(); /*class*/
         }
-        throw new Exception('never get to this Obj4::none');
+        throw new Exception('never get to this Obj4::nullptr');
     }
 
     /**
-     * @param None
+     * @param Nullptr
      * @return bool
      * @throws Exception
      */
-    public static function validateNone(None $value): bool {
+    public static function validateNullptr(Nullptr $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return None
+     * @return Nullptr
      */
-    public function getNone(): None {
-        if (Obj4::validateNone($this->none))  {
-            return $this->none;
+    public function getNullptr(): Nullptr {
+        if (Obj4::validateNullptr($this->nullptr))  {
+            return $this->nullptr;
         }
-        throw new Exception('never get to getNone Obj4::none');
+        throw new Exception('never get to getNullptr Obj4::nullptr');
     }
 
     /**
-     * @return None
+     * @return Nullptr
      */
-    public static function sampleNone(): None {
-        return None::sample(); /*34:none*/
+    public static function sampleNullptr(): Nullptr {
+        return Nullptr::sample(); /*50:nullptr*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return Nonlocal
+     * @return Number
      */
-    public static function fromNonlocal(stdClass $value): Nonlocal {
-        return Nonlocal::from($value); /*class*/
+    public static function fromNumber(stdClass $value): Number {
+        return Number::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toNonlocal(): stdClass {
-        if (Obj4::validateNonlocal($this->nonlocal))  {
-            return $this->nonlocal->to(); /*class*/
+    public function toNumber(): stdClass {
+        if (Obj4::validateNumber($this->number))  {
+            return $this->number->to(); /*class*/
         }
-        throw new Exception('never get to this Obj4::nonlocal');
+        throw new Exception('never get to this Obj4::number');
     }
 
     /**
-     * @param Nonlocal
+     * @param Number
      * @return bool
      * @throws Exception
      */
-    public static function validateNonlocal(Nonlocal $value): bool {
+    public static function validateNumber(Number $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return Nonlocal
+     * @return Number
      */
-    public function getNonlocal(): Nonlocal {
-        if (Obj4::validateNonlocal($this->nonlocal))  {
-            return $this->nonlocal;
+    public function getNumber(): Number {
+        if (Obj4::validateNumber($this->number))  {
+            return $this->number;
         }
-        throw new Exception('never get to getNonlocal Obj4::nonlocal');
+        throw new Exception('never get to getNumber Obj4::number');
     }
 
     /**
-     * @return Nonlocal
+     * @return Number
      */
-    public static function sampleNonlocal(): Nonlocal {
-        return Nonlocal::sample(); /*35:nonlocal*/
+    public static function sampleNumber(): Number {
+        return Number::sample(); /*51:number*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return Nonmutating
+     * @return NoneClass
      */
-    public static function fromNonmutating(stdClass $value): Nonmutating {
-        return Nonmutating::from($value); /*class*/
+    public static function fromObj4None(stdClass $value): NoneClass {
+        return NoneClass::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toNonmutating(): stdClass {
-        if (Obj4::validateNonmutating($this->nonmutating))  {
-            return $this->nonmutating->to(); /*class*/
+    public function toObj4None(): stdClass {
+        if (Obj4::validateObj4None($this->obj4None))  {
+            return $this->obj4None->to(); /*class*/
         }
-        throw new Exception('never get to this Obj4::nonmutating');
+        throw new Exception('never get to this Obj4::obj4None');
     }
 
     /**
-     * @param Nonmutating
+     * @param NoneClass
      * @return bool
      * @throws Exception
      */
-    public static function validateNonmutating(Nonmutating $value): bool {
+    public static function validateObj4None(NoneClass $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return Nonmutating
+     * @return NoneClass
      */
-    public function getNonmutating(): Nonmutating {
-        if (Obj4::validateNonmutating($this->nonmutating))  {
-            return $this->nonmutating;
+    public function getObj4None(): NoneClass {
+        if (Obj4::validateObj4None($this->obj4None))  {
+            return $this->obj4None;
         }
-        throw new Exception('never get to getNonmutating Obj4::nonmutating');
+        throw new Exception('never get to getObj4None Obj4::obj4None');
     }
 
     /**
-     * @return Nonmutating
+     * @return NoneClass
      */
-    public static function sampleNonmutating(): Nonmutating {
-        return Nonmutating::sample(); /*36:nonmutating*/
+    public static function sampleObj4None(): NoneClass {
+        return NoneClass::sample(); /*52:obj4None*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return Not
+     * @return Obj4Null
      */
-    public static function fromNot(stdClass $value): Not {
-        return Not::from($value); /*class*/
+    public static function fromObj4Null(stdClass $value): Obj4Null {
+        return Obj4Null::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toNot(): stdClass {
-        if (Obj4::validateNot($this->not))  {
-            return $this->not->to(); /*class*/
+    public function toObj4Null(): stdClass {
+        if (Obj4::validateObj4Null($this->obj4Null))  {
+            return $this->obj4Null->to(); /*class*/
         }
-        throw new Exception('never get to this Obj4::not');
+        throw new Exception('never get to this Obj4::obj4Null');
     }
 
     /**
-     * @param Not
+     * @param Obj4Null
      * @return bool
      * @throws Exception
      */
-    public static function validateNot(Not $value): bool {
+    public static function validateObj4Null(Obj4Null $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return Not
+     * @return Obj4Null
      */
-    public function getNot(): Not {
-        if (Obj4::validateNot($this->not))  {
-            return $this->not;
+    public function getObj4Null(): Obj4Null {
+        if (Obj4::validateObj4Null($this->obj4Null))  {
+            return $this->obj4Null;
         }
-        throw new Exception('never get to getNot Obj4::not');
+        throw new Exception('never get to getObj4Null Obj4::obj4Null');
     }
 
     /**
-     * @return Not
+     * @return Obj4Null
      */
-    public static function sampleNot(): Not {
-        return Not::sample(); /*37:not*/
+    public static function sampleObj4Null(): Obj4Null {
+        return Obj4Null::sample(); /*53:obj4Null*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return NotEq
+     * @return ProtocolClass
      */
-    public static function fromNotEq(stdClass $value): NotEq {
-        return NotEq::from($value); /*class*/
+    public static function fromObj4Protocol(stdClass $value): ProtocolClass {
+        return ProtocolClass::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toNotEq(): stdClass {
-        if (Obj4::validateNotEq($this->notEq))  {
-            return $this->notEq->to(); /*class*/
+    public function toObj4Protocol(): stdClass {
+        if (Obj4::validateObj4Protocol($this->obj4Protocol))  {
+            return $this->obj4Protocol->to(); /*class*/
         }
-        throw new Exception('never get to this Obj4::notEq');
+        throw new Exception('never get to this Obj4::obj4Protocol');
     }
 
     /**
-     * @param NotEq
+     * @param ProtocolClass
      * @return bool
      * @throws Exception
      */
-    public static function validateNotEq(NotEq $value): bool {
+    public static function validateObj4Protocol(ProtocolClass $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return NotEq
+     * @return ProtocolClass
      */
-    public function getNotEq(): NotEq {
-        if (Obj4::validateNotEq($this->notEq))  {
-            return $this->notEq;
+    public function getObj4Protocol(): ProtocolClass {
+        if (Obj4::validateObj4Protocol($this->obj4Protocol))  {
+            return $this->obj4Protocol;
         }
-        throw new Exception('never get to getNotEq Obj4::notEq');
+        throw new Exception('never get to getObj4Protocol Obj4::obj4Protocol');
     }
 
     /**
-     * @return NotEq
+     * @return ProtocolClass
      */
-    public static function sampleNotEq(): NotEq {
-        return NotEq::sample(); /*38:notEq*/
+    public static function sampleObj4Protocol(): ProtocolClass {
+        return ProtocolClass::sample(); /*54:obj4Protocol*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return NSError
+     * @return ObjectClass
      */
-    public static function fromNSError(stdClass $value): NSError {
-        return NSError::from($value); /*class*/
+    public static function fromObject(stdClass $value): ObjectClass {
+        return ObjectClass::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toNSError(): stdClass {
-        if (Obj4::validateNSError($this->nsError))  {
-            return $this->nsError->to(); /*class*/
+    public function toObject(): stdClass {
+        if (Obj4::validateObject($this->object))  {
+            return $this->object->to(); /*class*/
         }
-        throw new Exception('never get to this Obj4::nsError');
+        throw new Exception('never get to this Obj4::object');
     }
 
     /**
-     * @param NSError
+     * @param ObjectClass
      * @return bool
      * @throws Exception
      */
-    public static function validateNSError(NSError $value): bool {
+    public static function validateObject(ObjectClass $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return NSError
+     * @return ObjectClass
      */
-    public function getNSError(): NSError {
-        if (Obj4::validateNSError($this->nsError))  {
-            return $this->nsError;
+    public function getObject(): ObjectClass {
+        if (Obj4::validateObject($this->object))  {
+            return $this->object;
         }
-        throw new Exception('never get to getNSError Obj4::nsError');
+        throw new Exception('never get to getObject Obj4::object');
     }
 
     /**
-     * @return NSError
+     * @return ObjectClass
      */
-    public static function sampleNSError(): NSError {
-        return NSError::sample(); /*39:nsError*/
+    public static function sampleObject(): ObjectClass {
+        return ObjectClass::sample(); /*55:object*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return NSObject
+     * @return ObjectMapper
      */
-    public static function fromNSObject(stdClass $value): NSObject {
-        return NSObject::from($value); /*class*/
+    public static function fromObjectMapper(stdClass $value): ObjectMapper {
+        return ObjectMapper::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toNSObject(): stdClass {
-        if (Obj4::validateNSObject($this->nsObject))  {
-            return $this->nsObject->to(); /*class*/
+    public function toObjectMapper(): stdClass {
+        if (Obj4::validateObjectMapper($this->objectMapper))  {
+            return $this->objectMapper->to(); /*class*/
         }
-        throw new Exception('never get to this Obj4::nsObject');
+        throw new Exception('never get to this Obj4::objectMapper');
     }
 
     /**
-     * @param NSObject
+     * @param ObjectMapper
      * @return bool
      * @throws Exception
      */
-    public static function validateNSObject(NSObject $value): bool {
+    public static function validateObjectMapper(ObjectMapper $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return NSObject
+     * @return ObjectMapper
      */
-    public function getNSObject(): NSObject {
-        if (Obj4::validateNSObject($this->nsObject))  {
-            return $this->nsObject;
+    public function getObjectMapper(): ObjectMapper {
+        if (Obj4::validateObjectMapper($this->objectMapper))  {
+            return $this->objectMapper;
         }
-        throw new Exception('never get to getNSObject Obj4::nsObject');
+        throw new Exception('never get to getObjectMapper Obj4::objectMapper');
     }
 
     /**
-     * @return NSObject
+     * @return ObjectMapper
      */
-    public static function sampleNSObject(): NSObject {
-        return NSObject::sample(); /*40:nsObject*/
+    public static function sampleObjectMapper(): ObjectMapper {
+        return ObjectMapper::sample(); /*56:objectMapper*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return NSString
+     * @return ObjectNode
      */
-    public static function fromNSString(stdClass $value): NSString {
-        return NSString::from($value); /*class*/
+    public static function fromObjectNode(stdClass $value): ObjectNode {
+        return ObjectNode::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toNSString(): stdClass {
-        if (Obj4::validateNSString($this->nsString))  {
-            return $this->nsString->to(); /*class*/
+    public function toObjectNode(): stdClass {
+        if (Obj4::validateObjectNode($this->objectNode))  {
+            return $this->objectNode->to(); /*class*/
         }
-        throw new Exception('never get to this Obj4::nsString');
-    }
-
-    /**
-     * @param NSString
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateNSString(NSString $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return NSString
-     */
-    public function getNSString(): NSString {
-        if (Obj4::validateNSString($this->nsString))  {
-            return $this->nsString;
-        }
-        throw new Exception('never get to getNSString Obj4::nsString');
-    }
-
-    /**
-     * @return NSString
-     */
-    public static function sampleNSString(): NSString {
-        return NSString::sample(); /*41:nsString*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return NULLClass
-     */
-    public static function fromNull(stdClass $value): NULLClass {
-        return NULLClass::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toNull(): stdClass {
-        if (Obj4::validateNull($this->null))  {
-            return $this->null->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj4::null');
-    }
-
-    /**
-     * @param NULLClass
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateNull(NULLClass $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return NULLClass
-     */
-    public function getNull(): NULLClass {
-        if (Obj4::validateNull($this->null))  {
-            return $this->null;
-        }
-        throw new Exception('never get to getNull Obj4::null');
-    }
-
-    /**
-     * @return NULLClass
-     */
-    public static function sampleNull(): NULLClass {
-        return NULLClass::sample(); /*42:null*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Nullptr
-     */
-    public static function fromNullptr(stdClass $value): Nullptr {
-        return Nullptr::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toNullptr(): stdClass {
-        if (Obj4::validateNullptr($this->nullptr))  {
-            return $this->nullptr->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj4::nullptr');
-    }
-
-    /**
-     * @param Nullptr
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateNullptr(Nullptr $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return Nullptr
-     */
-    public function getNullptr(): Nullptr {
-        if (Obj4::validateNullptr($this->nullptr))  {
-            return $this->nullptr;
-        }
-        throw new Exception('never get to getNullptr Obj4::nullptr');
-    }
-
-    /**
-     * @return Nullptr
-     */
-    public static function sampleNullptr(): Nullptr {
-        return Nullptr::sample(); /*43:nullptr*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Number
-     */
-    public static function fromNumber(stdClass $value): Number {
-        return Number::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toNumber(): stdClass {
-        if (Obj4::validateNumber($this->number))  {
-            return $this->number->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj4::number');
-    }
-
-    /**
-     * @param Number
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateNumber(Number $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return Number
-     */
-    public function getNumber(): Number {
-        if (Obj4::validateNumber($this->number))  {
-            return $this->number;
-        }
-        throw new Exception('never get to getNumber Obj4::number');
-    }
-
-    /**
-     * @return Number
-     */
-    public static function sampleNumber(): Number {
-        return Number::sample(); /*44:number*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return NoneClass
-     */
-    public static function fromObj4None(stdClass $value): NoneClass {
-        return NoneClass::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toObj4None(): stdClass {
-        if (Obj4::validateObj4None($this->obj4None))  {
-            return $this->obj4None->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj4::obj4None');
-    }
-
-    /**
-     * @param NoneClass
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateObj4None(NoneClass $value): bool {
-        $value->validate();
-        return true;
+        throw new Exception('never get to this Obj4::objectNode');
     }
 
     /**
-     * @throws Exception
-     * @return NoneClass
-     */
-    public function getObj4None(): NoneClass {
-        if (Obj4::validateObj4None($this->obj4None))  {
-            return $this->obj4None;
-        }
-        throw new Exception('never get to getObj4None Obj4::obj4None');
-    }
-
-    /**
-     * @return NoneClass
-     */
-    public static function sampleObj4None(): NoneClass {
-        return NoneClass::sample(); /*45:obj4None*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Obj4Null
-     */
-    public static function fromObj4Null(stdClass $value): Obj4Null {
-        return Obj4Null::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toObj4Null(): stdClass {
-        if (Obj4::validateObj4Null($this->obj4Null))  {
-            return $this->obj4Null->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj4::obj4Null');
-    }
-
-    /**
-     * @param Obj4Null
+     * @param ObjectNode
      * @return bool
      * @throws Exception
      */
-    public static function validateObj4Null(Obj4Null $value): bool {
+    public static function validateObjectNode(ObjectNode $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return Obj4Null
+     * @return ObjectNode
      */
-    public function getObj4Null(): Obj4Null {
-        if (Obj4::validateObj4Null($this->obj4Null))  {
-            return $this->obj4Null;
+    public function getObjectNode(): ObjectNode {
+        if (Obj4::validateObjectNode($this->objectNode))  {
+            return $this->objectNode;
         }
-        throw new Exception('never get to getObj4Null Obj4::obj4Null');
-    }
-
-    /**
-     * @return Obj4Null
-     */
-    public static function sampleObj4Null(): Obj4Null {
-        return Obj4Null::sample(); /*46:obj4Null*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return ProtocolClass
-     */
-    public static function fromObj4Protocol(stdClass $value): ProtocolClass {
-        return ProtocolClass::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toObj4Protocol(): stdClass {
-        if (Obj4::validateObj4Protocol($this->obj4Protocol))  {
-            return $this->obj4Protocol->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj4::obj4Protocol');
-    }
-
-    /**
-     * @param ProtocolClass
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateObj4Protocol(ProtocolClass $value): bool {
-        $value->validate();
-        return true;
+        throw new Exception('never get to getObjectNode Obj4::objectNode');
     }
 
     /**
-     * @throws Exception
-     * @return ProtocolClass
+     * @return ObjectNode
      */
-    public function getObj4Protocol(): ProtocolClass {
-        if (Obj4::validateObj4Protocol($this->obj4Protocol))  {
-            return $this->obj4Protocol;
-        }
-        throw new Exception('never get to getObj4Protocol Obj4::obj4Protocol');
-    }
-
-    /**
-     * @return ProtocolClass
-     */
-    public static function sampleObj4Protocol(): ProtocolClass {
-        return ProtocolClass::sample(); /*47:obj4Protocol*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return ObjectClass
-     */
-    public static function fromObject(stdClass $value): ObjectClass {
-        return ObjectClass::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toObject(): stdClass {
-        if (Obj4::validateObject($this->object))  {
-            return $this->object->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj4::object');
-    }
-
-    /**
-     * @param ObjectClass
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateObject(ObjectClass $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return ObjectClass
-     */
-    public function getObject(): ObjectClass {
-        if (Obj4::validateObject($this->object))  {
-            return $this->object;
-        }
-        throw new Exception('never get to getObject Obj4::object');
-    }
-
-    /**
-     * @return ObjectClass
-     */
-    public static function sampleObject(): ObjectClass {
-        return ObjectClass::sample(); /*48:object*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return ObjectMapper
-     */
-    public static function fromObjectMapper(stdClass $value): ObjectMapper {
-        return ObjectMapper::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toObjectMapper(): stdClass {
-        if (Obj4::validateObjectMapper($this->objectMapper))  {
-            return $this->objectMapper->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj4::objectMapper');
-    }
-
-    /**
-     * @param ObjectMapper
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateObjectMapper(ObjectMapper $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return ObjectMapper
-     */
-    public function getObjectMapper(): ObjectMapper {
-        if (Obj4::validateObjectMapper($this->objectMapper))  {
-            return $this->objectMapper;
-        }
-        throw new Exception('never get to getObjectMapper Obj4::objectMapper');
-    }
-
-    /**
-     * @return ObjectMapper
-     */
-    public static function sampleObjectMapper(): ObjectMapper {
-        return ObjectMapper::sample(); /*49:objectMapper*/
+    public static function sampleObjectNode(): ObjectNode {
+        return ObjectNode::sample(); /*57:objectNode*/
     }
 
     /**
@@ -32512,7 +32896,7 @@ class Obj4 {
      * @return Of
      */
     public static function sampleOf(): Of {
-        return Of::sample(); /*50:of*/
+        return Of::sample(); /*58:of*/
     }
 
     /**
@@ -32560,7 +32944,7 @@ class Obj4 {
      * @return Oneway
      */
     public static function sampleOneway(): Oneway {
-        return Oneway::sample(); /*51:oneway*/
+        return Oneway::sample(); /*59:oneway*/
     }
 
     /**
@@ -32608,7 +32992,7 @@ class Obj4 {
      * @return Open
      */
     public static function sampleOpen(): Open {
-        return Open::sample(); /*52:open*/
+        return Open::sample(); /*60:open*/
     }
 
     /**
@@ -32656,7 +33040,7 @@ class Obj4 {
      * @return Operator
      */
     public static function sampleOperator(): Operator {
-        return Operator::sample(); /*53:operator*/
+        return Operator::sample(); /*61:operator*/
     }
 
     /**
@@ -32704,7 +33088,7 @@ class Obj4 {
      * @return Optional
      */
     public static function sampleOptional(): Optional {
-        return Optional::sample(); /*54:optional*/
+        return Optional::sample(); /*62:optional*/
     }
 
     /**
@@ -32752,7 +33136,7 @@ class Obj4 {
      * @return OrClass
      */
     public static function sampleOr(): OrClass {
-        return OrClass::sample(); /*55:or*/
+        return OrClass::sample(); /*63:or*/
     }
 
     /**
@@ -32800,7 +33184,7 @@ class Obj4 {
      * @return OrEq
      */
     public static function sampleOrEq(): OrEq {
-        return OrEq::sample(); /*56:orEq*/
+        return OrEq::sample(); /*64:orEq*/
     }
 
     /**
@@ -32848,7 +33232,7 @@ class Obj4 {
      * @return Out
      */
     public static function sampleOut(): Out {
-        return Out::sample(); /*57:out*/
+        return Out::sample(); /*65:out*/
     }
 
     /**
@@ -32896,7 +33280,7 @@ class Obj4 {
      * @return OverrideClass
      */
     public static function sampleOverride(): OverrideClass {
-        return OverrideClass::sample(); /*58:override*/
+        return OverrideClass::sample(); /*66:override*/
     }
 
     /**
@@ -32944,7 +33328,7 @@ class Obj4 {
      * @return Package
      */
     public static function samplePackage(): Package {
-        return Package::sample(); /*59:package*/
+        return Package::sample(); /*67:package*/
     }
 
     /**
@@ -32992,7 +33376,7 @@ class Obj4 {
      * @return Params
      */
     public static function sampleParams(): Params {
-        return Params::sample(); /*60:params*/
+        return Params::sample(); /*68:params*/
     }
 
     /**
@@ -33040,7 +33424,7 @@ class Obj4 {
      * @return Pass
      */
     public static function samplePass(): Pass {
-        return Pass::sample(); /*61:pass*/
+        return Pass::sample(); /*69:pass*/
     }
 
     /**
@@ -33088,7 +33472,7 @@ class Obj4 {
      * @return Port
      */
     public static function samplePort(): Port {
-        return Port::sample(); /*62:port*/
+        return Port::sample(); /*70:port*/
     }
 
     /**
@@ -33136,7 +33520,7 @@ class Obj4 {
      * @return Postfix
      */
     public static function samplePostfix(): Postfix {
-        return Postfix::sample(); /*63:postfix*/
+        return Postfix::sample(); /*71:postfix*/
     }
 
     /**
@@ -33184,7 +33568,7 @@ class Obj4 {
      * @return Precedence
      */
     public static function samplePrecedence(): Precedence {
-        return Precedence::sample(); /*64:precedence*/
+        return Precedence::sample(); /*72:precedence*/
     }
 
     /**
@@ -33232,7 +33616,7 @@ class Obj4 {
      * @return Prefix
      */
     public static function samplePrefix(): Prefix {
-        return Prefix::sample(); /*65:prefix*/
+        return Prefix::sample(); /*73:prefix*/
     }
 
     /**
@@ -33280,7 +33664,7 @@ class Obj4 {
      * @return PrintClass
      */
     public static function samplePrint(): PrintClass {
-        return PrintClass::sample(); /*66:print*/
+        return PrintClass::sample(); /*74:print*/
     }
 
     /**
@@ -33328,7 +33712,7 @@ class Obj4 {
      * @return PrintMembers
      */
     public static function samplePrintMembers(): PrintMembers {
-        return PrintMembers::sample(); /*67:printMembers*/
+        return PrintMembers::sample(); /*75:printMembers*/
     }
 
     /**
@@ -33376,7 +33760,7 @@ class Obj4 {
      * @return Printf
      */
     public static function samplePrintf(): Printf {
-        return Printf::sample(); /*68:printf*/
+        return Printf::sample(); /*76:printf*/
     }
 
     /**
@@ -33424,7 +33808,7 @@ class Obj4 {
      * @return PrivateClass
      */
     public static function samplePrivate(): PrivateClass {
-        return PrivateClass::sample(); /*69:private*/
+        return PrivateClass::sample(); /*77:private*/
     }
 
     /**
@@ -33472,7 +33856,7 @@ class Obj4 {
      * @return ProtectedClass
      */
     public static function sampleProtected(): ProtectedClass {
-        return ProtectedClass::sample(); /*70:protected*/
+        return ProtectedClass::sample(); /*78:protected*/
     }
 
     /**
@@ -33520,7 +33904,7 @@ class Obj4 {
      * @return Protocol
      */
     public static function sampleProtocol(): Protocol {
-        return Protocol::sample(); /*71:protocol*/
+        return Protocol::sample(); /*79:protocol*/
     }
 
     /**
@@ -33568,7 +33952,7 @@ class Obj4 {
      * @return PublicClass
      */
     public static function samplePublic(): PublicClass {
-        return PublicClass::sample(); /*72:public*/
+        return PublicClass::sample(); /*80:public*/
     }
 
     /**
@@ -33616,7 +34000,7 @@ class Obj4 {
      * @return Quicktype
      */
     public static function sampleQuicktype(): Quicktype {
-        return Quicktype::sample(); /*73:quicktype*/
+        return Quicktype::sample(); /*81:quicktype*/
     }
 
     /**
@@ -33664,7 +34048,7 @@ class Obj4 {
      * @return Raise
      */
     public static function sampleRaise(): Raise {
-        return Raise::sample(); /*74:raise*/
+        return Raise::sample(); /*82:raise*/
     }
 
     /**
@@ -33712,7 +34096,7 @@ class Obj4 {
      * @return Range
      */
     public static function sampleRange(): Range {
-        return Range::sample(); /*75:range*/
+        return Range::sample(); /*83:range*/
     }
 
     /**
@@ -33760,7 +34144,7 @@ class Obj4 {
      * @return ReadonlyClass
      */
     public static function sampleReadonly(): ReadonlyClass {
-        return ReadonlyClass::sample(); /*76:readonly*/
+        return ReadonlyClass::sample(); /*84:readonly*/
     }
 
     /**
@@ -33808,7 +34192,7 @@ class Obj4 {
      * @return Ref
      */
     public static function sampleRef(): Ref {
-        return Ref::sample(); /*77:ref*/
+        return Ref::sample(); /*85:ref*/
     }
 
     /**
@@ -33856,7 +34240,7 @@ class Obj4 {
      * @return RegExp
      */
     public static function sampleRegExp(): RegExp {
-        return RegExp::sample(); /*78:regExp*/
+        return RegExp::sample(); /*86:regExp*/
     }
 
     /**
@@ -33904,7 +34288,7 @@ class Obj4 {
      * @return Register
      */
     public static function sampleRegister(): Register {
-        return Register::sample(); /*79:register*/
+        return Register::sample(); /*87:register*/
     }
 
     /**
@@ -33952,7 +34336,7 @@ class Obj4 {
      * @return ReinterpretCast
      */
     public static function sampleReinterpretCast(): ReinterpretCast {
-        return ReinterpretCast::sample(); /*80:reinterpretCast*/
+        return ReinterpretCast::sample(); /*88:reinterpretCast*/
     }
 
     /**
@@ -34000,7 +34384,7 @@ class Obj4 {
      * @return Repeat
      */
     public static function sampleRepeat(): Repeat {
-        return Repeat::sample(); /*81:repeat*/
+        return Repeat::sample(); /*89:repeat*/
     }
 
     /**
@@ -34048,7 +34432,7 @@ class Obj4 {
      * @return RequireClass
      */
     public static function sampleRequire(): RequireClass {
-        return RequireClass::sample(); /*82:require*/
+        return RequireClass::sample(); /*90:require*/
     }
 
     /**
@@ -34096,7 +34480,7 @@ class Obj4 {
      * @return Required
      */
     public static function sampleRequired(): Required {
-        return Required::sample(); /*83:required*/
+        return Required::sample(); /*91:required*/
     }
 
     /**
@@ -34144,7 +34528,7 @@ class Obj4 {
      * @return Requires
      */
     public static function sampleRequires(): Requires {
-        return Requires::sample(); /*84:requires*/
+        return Requires::sample(); /*92:requires*/
     }
 
     /**
@@ -34192,7 +34576,7 @@ class Obj4 {
      * @return Restrict
      */
     public static function sampleRestrict(): Restrict {
-        return Restrict::sample(); /*85:restrict*/
+        return Restrict::sample(); /*93:restrict*/
     }
 
     /**
@@ -34240,7 +34624,7 @@ class Obj4 {
      * @return Retain
      */
     public static function sampleRetain(): Retain {
-        return Retain::sample(); /*86:retain*/
+        return Retain::sample(); /*94:retain*/
     }
 
     /**
@@ -34288,391 +34672,7 @@ class Obj4 {
      * @return Rethrows
      */
     public static function sampleRethrows(): Rethrows {
-        return Rethrows::sample(); /*87:rethrows*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return ReturnClass
-     */
-    public static function fromReturn(stdClass $value): ReturnClass {
-        return ReturnClass::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toReturn(): stdClass {
-        if (Obj4::validateReturn($this->return))  {
-            return $this->return->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj4::return');
-    }
-
-    /**
-     * @param ReturnClass
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateReturn(ReturnClass $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return ReturnClass
-     */
-    public function getReturn(): ReturnClass {
-        if (Obj4::validateReturn($this->return))  {
-            return $this->return;
-        }
-        throw new Exception('never get to getReturn Obj4::return');
-    }
-
-    /**
-     * @return ReturnClass
-     */
-    public static function sampleReturn(): ReturnClass {
-        return ReturnClass::sample(); /*88:return*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Right
-     */
-    public static function fromRight(stdClass $value): Right {
-        return Right::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toRight(): stdClass {
-        if (Obj4::validateRight($this->right))  {
-            return $this->right->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj4::right');
-    }
-
-    /**
-     * @param Right
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateRight(Right $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return Right
-     */
-    public function getRight(): Right {
-        if (Obj4::validateRight($this->right))  {
-            return $this->right;
-        }
-        throw new Exception('never get to getRight Obj4::right');
-    }
-
-    /**
-     * @return Right
-     */
-    public static function sampleRight(): Right {
-        return Right::sample(); /*89:right*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return RuntimeType
-     */
-    public static function fromRuntimeType(stdClass $value): RuntimeType {
-        return RuntimeType::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toRuntimeType(): stdClass {
-        if (Obj4::validateRuntimeType($this->runtimeType))  {
-            return $this->runtimeType->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj4::runtimeType');
-    }
-
-    /**
-     * @param RuntimeType
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateRuntimeType(RuntimeType $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return RuntimeType
-     */
-    public function getRuntimeType(): RuntimeType {
-        if (Obj4::validateRuntimeType($this->runtimeType))  {
-            return $this->runtimeType;
-        }
-        throw new Exception('never get to getRuntimeType Obj4::runtimeType');
-    }
-
-    /**
-     * @return RuntimeType
-     */
-    public static function sampleRuntimeType(): RuntimeType {
-        return RuntimeType::sample(); /*90:runtimeType*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return S
-     */
-    public static function fromS(stdClass $value): S {
-        return S::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toS(): stdClass {
-        if (Obj4::validateS($this->s))  {
-            return $this->s->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj4::s');
-    }
-
-    /**
-     * @param S
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateS(S $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return S
-     */
-    public function getS(): S {
-        if (Obj4::validateS($this->s))  {
-            return $this->s;
-        }
-        throw new Exception('never get to getS Obj4::s');
-    }
-
-    /**
-     * @return S
-     */
-    public static function sampleS(): S {
-        return S::sample(); /*91:s*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Sbyte
-     */
-    public static function fromSbyte(stdClass $value): Sbyte {
-        return Sbyte::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toSbyte(): stdClass {
-        if (Obj4::validateSbyte($this->sbyte))  {
-            return $this->sbyte->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj4::sbyte');
-    }
-
-    /**
-     * @param Sbyte
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateSbyte(Sbyte $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return Sbyte
-     */
-    public function getSbyte(): Sbyte {
-        if (Obj4::validateSbyte($this->sbyte))  {
-            return $this->sbyte;
-        }
-        throw new Exception('never get to getSbyte Obj4::sbyte');
-    }
-
-    /**
-     * @return Sbyte
-     */
-    public static function sampleSbyte(): Sbyte {
-        return Sbyte::sample(); /*92:sbyte*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Sealed
-     */
-    public static function fromSealed(stdClass $value): Sealed {
-        return Sealed::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toSealed(): stdClass {
-        if (Obj4::validateSealed($this->sealed))  {
-            return $this->sealed->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj4::sealed');
-    }
-
-    /**
-     * @param Sealed
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateSealed(Sealed $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return Sealed
-     */
-    public function getSealed(): Sealed {
-        if (Obj4::validateSealed($this->sealed))  {
-            return $this->sealed;
-        }
-        throw new Exception('never get to getSealed Obj4::sealed');
-    }
-
-    /**
-     * @return Sealed
-     */
-    public static function sampleSealed(): Sealed {
-        return Sealed::sample(); /*93:sealed*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Sel
-     */
-    public static function fromSel(stdClass $value): Sel {
-        return Sel::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toSel(): stdClass {
-        if (Obj4::validateSel($this->sel))  {
-            return $this->sel->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj4::sel');
-    }
-
-    /**
-     * @param Sel
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateSel(Sel $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return Sel
-     */
-    public function getSel(): Sel {
-        if (Obj4::validateSel($this->sel))  {
-            return $this->sel;
-        }
-        throw new Exception('never get to getSel Obj4::sel');
-    }
-
-    /**
-     * @return Sel
-     */
-    public static function sampleSel(): Sel {
-        return Sel::sample(); /*94:sel*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Select
-     */
-    public static function fromSelect(stdClass $value): Select {
-        return Select::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toSelect(): stdClass {
-        if (Obj4::validateSelect($this->select))  {
-            return $this->select->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj4::select');
-    }
-
-    /**
-     * @param Select
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateSelect(Select $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return Select
-     */
-    public function getSelect(): Select {
-        if (Obj4::validateSelect($this->select))  {
-            return $this->select;
-        }
-        throw new Exception('never get to getSelect Obj4::select');
-    }
-
-    /**
-     * @return Select
-     */
-    public static function sampleSelect(): Select {
-        return Select::sample(); /*95:select*/
+        return Rethrows::sample(); /*95:rethrows*/
     }
 
     /**
@@ -34681,7 +34681,13 @@ class Obj4 {
      */
     public function validate(): bool {
         return Obj4::validateDummy($this->dummy)
+        || Obj4::validateNative($this->native)
+        || Obj4::validateNew($this->new)
+        || Obj4::validateNewtonsoft($this->newtonsoft)
+        || Obj4::validateNil($this->nil)
+        || Obj4::validateNo($this->no)
         || Obj4::validateNoSuchMethod($this->noSuchMethod)
+        || Obj4::validateNoexcept($this->noexcept)
         || Obj4::validateNonatomic($this->nonatomic)
         || Obj4::validateNone($this->none)
         || Obj4::validateNonlocal($this->nonlocal)
@@ -34692,6 +34698,7 @@ class Obj4 {
         || Obj4::validateNSObject($this->nsObject)
         || Obj4::validateNSString($this->nsString)
         || Obj4::validateNull($this->null)
+        || Obj4::validateNullNode($this->nullNode)
         || Obj4::validateNullptr($this->nullptr)
         || Obj4::validateNumber($this->number)
         || Obj4::validateObj4None($this->obj4None)
@@ -34699,6 +34706,7 @@ class Obj4 {
         || Obj4::validateObj4Protocol($this->obj4Protocol)
         || Obj4::validateObject($this->object)
         || Obj4::validateObjectMapper($this->objectMapper)
+        || Obj4::validateObjectNode($this->objectNode)
         || Obj4::validateOf($this->of)
         || Obj4::validateOneway($this->oneway)
         || Obj4::validateOpen($this->open)
@@ -34736,15 +34744,7 @@ class Obj4 {
         || Obj4::validateRequires($this->requires)
         || Obj4::validateRestrict($this->restrict)
         || Obj4::validateRetain($this->retain)
-        || Obj4::validateRethrows($this->rethrows)
-        || Obj4::validateReturn($this->return)
-        || Obj4::validateRight($this->right)
-        || Obj4::validateRuntimeType($this->runtimeType)
-        || Obj4::validateS($this->s)
-        || Obj4::validateSbyte($this->sbyte)
-        || Obj4::validateSealed($this->sealed)
-        || Obj4::validateSel($this->sel)
-        || Obj4::validateSelect($this->select);
+        || Obj4::validateRethrows($this->rethrows);
     }
 
     /**
@@ -34754,7 +34754,13 @@ class Obj4 {
     public function to(): stdClass  {
         $out = new stdClass();
         $out->{'dummy'} = $this->toDummy();
+        $out->{'native'} = $this->toNative();
+        $out->{'new'} = $this->toNew();
+        $out->{'newtonsoft'} = $this->toNewtonsoft();
+        $out->{'nil'} = $this->toNil();
+        $out->{'NO'} = $this->toNo();
         $out->{'noSuchMethod'} = $this->toNoSuchMethod();
+        $out->{'noexcept'} = $this->toNoexcept();
         $out->{'nonatomic'} = $this->toNonatomic();
         $out->{'None'} = $this->toNone();
         $out->{'nonlocal'} = $this->toNonlocal();
@@ -34765,6 +34771,7 @@ class Obj4 {
         $out->{'NSObject'} = $this->toNSObject();
         $out->{'NSString'} = $this->toNSString();
         $out->{'NULL'} = $this->toNull();
+        $out->{'NullNode'} = $this->toNullNode();
         $out->{'nullptr'} = $this->toNullptr();
         $out->{'number'} = $this->toNumber();
         $out->{'none'} = $this->toObj4None();
@@ -34772,6 +34779,7 @@ class Obj4 {
         $out->{'protocol'} = $this->toObj4Protocol();
         $out->{'object'} = $this->toObject();
         $out->{'ObjectMapper'} = $this->toObjectMapper();
+        $out->{'ObjectNode'} = $this->toObjectNode();
         $out->{'of'} = $this->toOf();
         $out->{'oneway'} = $this->toOneway();
         $out->{'open'} = $this->toOpen();
@@ -34810,14 +34818,6 @@ class Obj4 {
         $out->{'restrict'} = $this->toRestrict();
         $out->{'retain'} = $this->toRetain();
         $out->{'rethrows'} = $this->toRethrows();
-        $out->{'return'} = $this->toReturn();
-        $out->{'right'} = $this->toRight();
-        $out->{'runtimeType'} = $this->toRuntimeType();
-        $out->{'s'} = $this->toS();
-        $out->{'sbyte'} = $this->toSbyte();
-        $out->{'sealed'} = $this->toSealed();
-        $out->{'SEL'} = $this->toSel();
-        $out->{'select'} = $this->toSelect();
         return $out;
     }
 
@@ -34830,9 +34830,27 @@ class Obj4 {
         if (!property_exists($obj, 'dummy')) {
             throw new Exception("Missing required property");
         }
+        if (!property_exists($obj, 'native')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'new')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'newtonsoft')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'nil')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'NO')) {
+            throw new Exception("Missing required property");
+        }
         if (!property_exists($obj, 'noSuchMethod')) {
             throw new Exception("Missing required property");
         }
+        if (!property_exists($obj, 'noexcept')) {
+            throw new Exception("Missing required property");
+        }
         if (!property_exists($obj, 'nonatomic')) {
             throw new Exception("Missing required property");
         }
@@ -34863,6 +34881,9 @@ class Obj4 {
         if (!property_exists($obj, 'NULL')) {
             throw new Exception("Missing required property");
         }
+        if (!property_exists($obj, 'NullNode')) {
+            throw new Exception("Missing required property");
+        }
         if (!property_exists($obj, 'nullptr')) {
             throw new Exception("Missing required property");
         }
@@ -34884,6 +34905,9 @@ class Obj4 {
         if (!property_exists($obj, 'ObjectMapper')) {
             throw new Exception("Missing required property");
         }
+        if (!property_exists($obj, 'ObjectNode')) {
+            throw new Exception("Missing required property");
+        }
         if (!property_exists($obj, 'of')) {
             throw new Exception("Missing required property");
         }
@@ -34998,33 +35022,15 @@ class Obj4 {
         if (!property_exists($obj, 'rethrows')) {
             throw new Exception("Missing required property");
         }
-        if (!property_exists($obj, 'return')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'right')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'runtimeType')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 's')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'sbyte')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'sealed')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'SEL')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'select')) {
-            throw new Exception("Missing required property");
-        }
         return new Obj4(
          Obj4::fromDummy($obj->{'dummy'})
+        ,Obj4::fromNative($obj->{'native'})
+        ,Obj4::fromNew($obj->{'new'})
+        ,Obj4::fromNewtonsoft($obj->{'newtonsoft'})
+        ,Obj4::fromNil($obj->{'nil'})
+        ,Obj4::fromNo($obj->{'NO'})
         ,Obj4::fromNoSuchMethod($obj->{'noSuchMethod'})
+        ,Obj4::fromNoexcept($obj->{'noexcept'})
         ,Obj4::fromNonatomic($obj->{'nonatomic'})
         ,Obj4::fromNone($obj->{'None'})
         ,Obj4::fromNonlocal($obj->{'nonlocal'})
@@ -35035,6 +35041,7 @@ class Obj4 {
         ,Obj4::fromNSObject($obj->{'NSObject'})
         ,Obj4::fromNSString($obj->{'NSString'})
         ,Obj4::fromNull($obj->{'NULL'})
+        ,Obj4::fromNullNode($obj->{'NullNode'})
         ,Obj4::fromNullptr($obj->{'nullptr'})
         ,Obj4::fromNumber($obj->{'number'})
         ,Obj4::fromObj4None($obj->{'none'})
@@ -35042,6 +35049,7 @@ class Obj4 {
         ,Obj4::fromObj4Protocol($obj->{'protocol'})
         ,Obj4::fromObject($obj->{'object'})
         ,Obj4::fromObjectMapper($obj->{'ObjectMapper'})
+        ,Obj4::fromObjectNode($obj->{'ObjectNode'})
         ,Obj4::fromOf($obj->{'of'})
         ,Obj4::fromOneway($obj->{'oneway'})
         ,Obj4::fromOpen($obj->{'open'})
@@ -35080,14 +35088,6 @@ class Obj4 {
         ,Obj4::fromRestrict($obj->{'restrict'})
         ,Obj4::fromRetain($obj->{'retain'})
         ,Obj4::fromRethrows($obj->{'rethrows'})
-        ,Obj4::fromReturn($obj->{'return'})
-        ,Obj4::fromRight($obj->{'right'})
-        ,Obj4::fromRuntimeType($obj->{'runtimeType'})
-        ,Obj4::fromS($obj->{'s'})
-        ,Obj4::fromSbyte($obj->{'sbyte'})
-        ,Obj4::fromSealed($obj->{'sealed'})
-        ,Obj4::fromSel($obj->{'SEL'})
-        ,Obj4::fromSelect($obj->{'select'})
         );
     }
 
@@ -35097,7 +35097,13 @@ class Obj4 {
     public static function sample(): Obj4 {
         return new Obj4(
          Obj4::sampleDummy()
+        ,Obj4::sampleNative()
+        ,Obj4::sampleNew()
+        ,Obj4::sampleNewtonsoft()
+        ,Obj4::sampleNil()
+        ,Obj4::sampleNo()
         ,Obj4::sampleNoSuchMethod()
+        ,Obj4::sampleNoexcept()
         ,Obj4::sampleNonatomic()
         ,Obj4::sampleNone()
         ,Obj4::sampleNonlocal()
@@ -35108,6 +35114,7 @@ class Obj4 {
         ,Obj4::sampleNSObject()
         ,Obj4::sampleNSString()
         ,Obj4::sampleNull()
+        ,Obj4::sampleNullNode()
         ,Obj4::sampleNullptr()
         ,Obj4::sampleNumber()
         ,Obj4::sampleObj4None()
@@ -35115,6 +35122,7 @@ class Obj4 {
         ,Obj4::sampleObj4Protocol()
         ,Obj4::sampleObject()
         ,Obj4::sampleObjectMapper()
+        ,Obj4::sampleObjectNode()
         ,Obj4::sampleOf()
         ,Obj4::sampleOneway()
         ,Obj4::sampleOpen()
@@ -35153,28 +35161,20 @@ class Obj4 {
         ,Obj4::sampleRestrict()
         ,Obj4::sampleRetain()
         ,Obj4::sampleRethrows()
-        ,Obj4::sampleReturn()
-        ,Obj4::sampleRight()
-        ,Obj4::sampleRuntimeType()
-        ,Obj4::sampleS()
-        ,Obj4::sampleSbyte()
-        ,Obj4::sampleSealed()
-        ,Obj4::sampleSel()
-        ,Obj4::sampleSelect()
         );
     }
 }
 
-// This is an autogenerated file:NoSuchMethod
+// This is an autogenerated file:Native
 
-class NoSuchMethod {
-    private int $noSuchMethod; // json:noSuchMethod Required
+class Native {
+    private int $native; // json:native Required
 
     /**
-     * @param int $noSuchMethod
+     * @param int $native
      */
-    public function __construct(int $noSuchMethod) {
-        $this->noSuchMethod = $noSuchMethod;
+    public function __construct(int $native) {
+        $this->native = $native;
     }
 
     /**
@@ -35182,7 +35182,7 @@ class NoSuchMethod {
      * @throws Exception
      * @return int
      */
-    public static function fromNoSuchMethod(int $value): int {
+    public static function fromNative(int $value): int {
         return $value; /*int*/
     }
 
@@ -35190,11 +35190,11 @@ class NoSuchMethod {
      * @throws Exception
      * @return int
      */
-    public function toNoSuchMethod(): int {
-        if (NoSuchMethod::validateNoSuchMethod($this->noSuchMethod))  {
-            return $this->noSuchMethod; /*int*/
+    public function toNative(): int {
+        if (Native::validateNative($this->native))  {
+            return $this->native; /*int*/
         }
-        throw new Exception('never get to this NoSuchMethod::noSuchMethod');
+        throw new Exception('never get to this Native::native');
     }
 
     /**
@@ -35202,7 +35202,7 @@ class NoSuchMethod {
      * @return bool
      * @throws Exception
      */
-    public static function validateNoSuchMethod(int $value): bool {
+    public static function validateNative(int $value): bool {
         return true;
     }
 
@@ -35210,18 +35210,18 @@ class NoSuchMethod {
      * @throws Exception
      * @return int
      */
-    public function getNoSuchMethod(): int {
-        if (NoSuchMethod::validateNoSuchMethod($this->noSuchMethod))  {
-            return $this->noSuchMethod;
+    public function getNative(): int {
+        if (Native::validateNative($this->native))  {
+            return $this->native;
         }
-        throw new Exception('never get to getNoSuchMethod NoSuchMethod::noSuchMethod');
+        throw new Exception('never get to getNative Native::native');
     }
 
     /**
      * @return int
      */
-    public static function sampleNoSuchMethod(): int {
-        return 31; /*31:noSuchMethod*/
+    public static function sampleNative(): int {
+        return 31; /*31:native*/
     }
 
     /**
@@ -35229,7 +35229,7 @@ class NoSuchMethod {
      * @return bool
      */
     public function validate(): bool {
-        return NoSuchMethod::validateNoSuchMethod($this->noSuchMethod);
+        return Native::validateNative($this->native);
     }
 
     /**
@@ -35238,44 +35238,44 @@ class NoSuchMethod {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'noSuchMethod'} = $this->toNoSuchMethod();
+        $out->{'native'} = $this->toNative();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return NoSuchMethod
+     * @return Native
      * @throws Exception
      */
-    public static function from(stdClass $obj): NoSuchMethod {
-        if (!property_exists($obj, 'noSuchMethod')) {
+    public static function from(stdClass $obj): Native {
+        if (!property_exists($obj, 'native')) {
             throw new Exception("Missing required property");
         }
-        return new NoSuchMethod(
-         NoSuchMethod::fromNoSuchMethod($obj->{'noSuchMethod'})
+        return new Native(
+         Native::fromNative($obj->{'native'})
         );
     }
 
     /**
-     * @return NoSuchMethod
+     * @return Native
      */
-    public static function sample(): NoSuchMethod {
-        return new NoSuchMethod(
-         NoSuchMethod::sampleNoSuchMethod()
+    public static function sample(): Native {
+        return new Native(
+         Native::sampleNative()
         );
     }
 }
 
-// This is an autogenerated file:Nonatomic
+// This is an autogenerated file:NewClass
 
-class Nonatomic {
-    private int $nonatomic; // json:nonatomic Required
+class NewClass {
+    private int $new; // json:new Required
 
     /**
-     * @param int $nonatomic
+     * @param int $new
      */
-    public function __construct(int $nonatomic) {
-        $this->nonatomic = $nonatomic;
+    public function __construct(int $new) {
+        $this->new = $new;
     }
 
     /**
@@ -35283,7 +35283,7 @@ class Nonatomic {
      * @throws Exception
      * @return int
      */
-    public static function fromNonatomic(int $value): int {
+    public static function fromNew(int $value): int {
         return $value; /*int*/
     }
 
@@ -35291,11 +35291,11 @@ class Nonatomic {
      * @throws Exception
      * @return int
      */
-    public function toNonatomic(): int {
-        if (Nonatomic::validateNonatomic($this->nonatomic))  {
-            return $this->nonatomic; /*int*/
+    public function toNew(): int {
+        if (NewClass::validateNew($this->new))  {
+            return $this->new; /*int*/
         }
-        throw new Exception('never get to this Nonatomic::nonatomic');
+        throw new Exception('never get to this NewClass::new');
     }
 
     /**
@@ -35303,7 +35303,7 @@ class Nonatomic {
      * @return bool
      * @throws Exception
      */
-    public static function validateNonatomic(int $value): bool {
+    public static function validateNew(int $value): bool {
         return true;
     }
 
@@ -35311,18 +35311,18 @@ class Nonatomic {
      * @throws Exception
      * @return int
      */
-    public function getNonatomic(): int {
-        if (Nonatomic::validateNonatomic($this->nonatomic))  {
-            return $this->nonatomic;
+    public function getNew(): int {
+        if (NewClass::validateNew($this->new))  {
+            return $this->new;
         }
-        throw new Exception('never get to getNonatomic Nonatomic::nonatomic');
+        throw new Exception('never get to getNew NewClass::new');
     }
 
     /**
      * @return int
      */
-    public static function sampleNonatomic(): int {
-        return 31; /*31:nonatomic*/
+    public static function sampleNew(): int {
+        return 31; /*31:new*/
     }
 
     /**
@@ -35330,7 +35330,7 @@ class Nonatomic {
      * @return bool
      */
     public function validate(): bool {
-        return Nonatomic::validateNonatomic($this->nonatomic);
+        return NewClass::validateNew($this->new);
     }
 
     /**
@@ -35339,44 +35339,44 @@ class Nonatomic {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'nonatomic'} = $this->toNonatomic();
+        $out->{'new'} = $this->toNew();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Nonatomic
+     * @return NewClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): Nonatomic {
-        if (!property_exists($obj, 'nonatomic')) {
+    public static function from(stdClass $obj): NewClass {
+        if (!property_exists($obj, 'new')) {
             throw new Exception("Missing required property");
         }
-        return new Nonatomic(
-         Nonatomic::fromNonatomic($obj->{'nonatomic'})
+        return new NewClass(
+         NewClass::fromNew($obj->{'new'})
         );
     }
 
     /**
-     * @return Nonatomic
+     * @return NewClass
      */
-    public static function sample(): Nonatomic {
-        return new Nonatomic(
-         Nonatomic::sampleNonatomic()
+    public static function sample(): NewClass {
+        return new NewClass(
+         NewClass::sampleNew()
         );
     }
 }
 
-// This is an autogenerated file:None
+// This is an autogenerated file:Newtonsoft
 
-class None {
-    private int $none; // json:None Required
+class Newtonsoft {
+    private int $newtonsoft; // json:newtonsoft Required
 
     /**
-     * @param int $none
+     * @param int $newtonsoft
      */
-    public function __construct(int $none) {
-        $this->none = $none;
+    public function __construct(int $newtonsoft) {
+        $this->newtonsoft = $newtonsoft;
     }
 
     /**
@@ -35384,7 +35384,7 @@ class None {
      * @throws Exception
      * @return int
      */
-    public static function fromNone(int $value): int {
+    public static function fromNewtonsoft(int $value): int {
         return $value; /*int*/
     }
 
@@ -35392,11 +35392,11 @@ class None {
      * @throws Exception
      * @return int
      */
-    public function toNone(): int {
-        if (None::validateNone($this->none))  {
-            return $this->none; /*int*/
+    public function toNewtonsoft(): int {
+        if (Newtonsoft::validateNewtonsoft($this->newtonsoft))  {
+            return $this->newtonsoft; /*int*/
         }
-        throw new Exception('never get to this None::none');
+        throw new Exception('never get to this Newtonsoft::newtonsoft');
     }
 
     /**
@@ -35404,7 +35404,7 @@ class None {
      * @return bool
      * @throws Exception
      */
-    public static function validateNone(int $value): bool {
+    public static function validateNewtonsoft(int $value): bool {
         return true;
     }
 
@@ -35412,18 +35412,18 @@ class None {
      * @throws Exception
      * @return int
      */
-    public function getNone(): int {
-        if (None::validateNone($this->none))  {
-            return $this->none;
+    public function getNewtonsoft(): int {
+        if (Newtonsoft::validateNewtonsoft($this->newtonsoft))  {
+            return $this->newtonsoft;
         }
-        throw new Exception('never get to getNone None::none');
+        throw new Exception('never get to getNewtonsoft Newtonsoft::newtonsoft');
     }
 
     /**
      * @return int
      */
-    public static function sampleNone(): int {
-        return 31; /*31:none*/
+    public static function sampleNewtonsoft(): int {
+        return 31; /*31:newtonsoft*/
     }
 
     /**
@@ -35431,7 +35431,7 @@ class None {
      * @return bool
      */
     public function validate(): bool {
-        return None::validateNone($this->none);
+        return Newtonsoft::validateNewtonsoft($this->newtonsoft);
     }
 
     /**
@@ -35440,44 +35440,44 @@ class None {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'None'} = $this->toNone();
+        $out->{'newtonsoft'} = $this->toNewtonsoft();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return None
+     * @return Newtonsoft
      * @throws Exception
      */
-    public static function from(stdClass $obj): None {
-        if (!property_exists($obj, 'None')) {
+    public static function from(stdClass $obj): Newtonsoft {
+        if (!property_exists($obj, 'newtonsoft')) {
             throw new Exception("Missing required property");
         }
-        return new None(
-         None::fromNone($obj->{'None'})
+        return new Newtonsoft(
+         Newtonsoft::fromNewtonsoft($obj->{'newtonsoft'})
         );
     }
 
     /**
-     * @return None
+     * @return Newtonsoft
      */
-    public static function sample(): None {
-        return new None(
-         None::sampleNone()
+    public static function sample(): Newtonsoft {
+        return new Newtonsoft(
+         Newtonsoft::sampleNewtonsoft()
         );
     }
 }
 
-// This is an autogenerated file:Nonlocal
+// This is an autogenerated file:Nil
 
-class Nonlocal {
-    private int $nonlocal; // json:nonlocal Required
+class Nil {
+    private int $nil; // json:nil Required
 
     /**
-     * @param int $nonlocal
+     * @param int $nil
      */
-    public function __construct(int $nonlocal) {
-        $this->nonlocal = $nonlocal;
+    public function __construct(int $nil) {
+        $this->nil = $nil;
     }
 
     /**
@@ -35485,7 +35485,7 @@ class Nonlocal {
      * @throws Exception
      * @return int
      */
-    public static function fromNonlocal(int $value): int {
+    public static function fromNil(int $value): int {
         return $value; /*int*/
     }
 
@@ -35493,11 +35493,11 @@ class Nonlocal {
      * @throws Exception
      * @return int
      */
-    public function toNonlocal(): int {
-        if (Nonlocal::validateNonlocal($this->nonlocal))  {
-            return $this->nonlocal; /*int*/
+    public function toNil(): int {
+        if (Nil::validateNil($this->nil))  {
+            return $this->nil; /*int*/
         }
-        throw new Exception('never get to this Nonlocal::nonlocal');
+        throw new Exception('never get to this Nil::nil');
     }
 
     /**
@@ -35505,7 +35505,7 @@ class Nonlocal {
      * @return bool
      * @throws Exception
      */
-    public static function validateNonlocal(int $value): bool {
+    public static function validateNil(int $value): bool {
         return true;
     }
 
@@ -35513,18 +35513,18 @@ class Nonlocal {
      * @throws Exception
      * @return int
      */
-    public function getNonlocal(): int {
-        if (Nonlocal::validateNonlocal($this->nonlocal))  {
-            return $this->nonlocal;
+    public function getNil(): int {
+        if (Nil::validateNil($this->nil))  {
+            return $this->nil;
         }
-        throw new Exception('never get to getNonlocal Nonlocal::nonlocal');
+        throw new Exception('never get to getNil Nil::nil');
     }
 
     /**
      * @return int
      */
-    public static function sampleNonlocal(): int {
-        return 31; /*31:nonlocal*/
+    public static function sampleNil(): int {
+        return 31; /*31:nil*/
     }
 
     /**
@@ -35532,7 +35532,7 @@ class Nonlocal {
      * @return bool
      */
     public function validate(): bool {
-        return Nonlocal::validateNonlocal($this->nonlocal);
+        return Nil::validateNil($this->nil);
     }
 
     /**
@@ -35541,44 +35541,44 @@ class Nonlocal {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'nonlocal'} = $this->toNonlocal();
+        $out->{'nil'} = $this->toNil();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Nonlocal
+     * @return Nil
      * @throws Exception
      */
-    public static function from(stdClass $obj): Nonlocal {
-        if (!property_exists($obj, 'nonlocal')) {
+    public static function from(stdClass $obj): Nil {
+        if (!property_exists($obj, 'nil')) {
             throw new Exception("Missing required property");
         }
-        return new Nonlocal(
-         Nonlocal::fromNonlocal($obj->{'nonlocal'})
+        return new Nil(
+         Nil::fromNil($obj->{'nil'})
         );
     }
 
     /**
-     * @return Nonlocal
+     * @return Nil
      */
-    public static function sample(): Nonlocal {
-        return new Nonlocal(
-         Nonlocal::sampleNonlocal()
+    public static function sample(): Nil {
+        return new Nil(
+         Nil::sampleNil()
         );
     }
 }
 
-// This is an autogenerated file:Nonmutating
+// This is an autogenerated file:No
 
-class Nonmutating {
-    private int $nonmutating; // json:nonmutating Required
+class No {
+    private int $no; // json:NO Required
 
     /**
-     * @param int $nonmutating
+     * @param int $no
      */
-    public function __construct(int $nonmutating) {
-        $this->nonmutating = $nonmutating;
+    public function __construct(int $no) {
+        $this->no = $no;
     }
 
     /**
@@ -35586,7 +35586,7 @@ class Nonmutating {
      * @throws Exception
      * @return int
      */
-    public static function fromNonmutating(int $value): int {
+    public static function fromNo(int $value): int {
         return $value; /*int*/
     }
 
@@ -35594,11 +35594,11 @@ class Nonmutating {
      * @throws Exception
      * @return int
      */
-    public function toNonmutating(): int {
-        if (Nonmutating::validateNonmutating($this->nonmutating))  {
-            return $this->nonmutating; /*int*/
+    public function toNo(): int {
+        if (No::validateNo($this->no))  {
+            return $this->no; /*int*/
         }
-        throw new Exception('never get to this Nonmutating::nonmutating');
+        throw new Exception('never get to this No::no');
     }
 
     /**
@@ -35606,7 +35606,7 @@ class Nonmutating {
      * @return bool
      * @throws Exception
      */
-    public static function validateNonmutating(int $value): bool {
+    public static function validateNo(int $value): bool {
         return true;
     }
 
@@ -35614,18 +35614,18 @@ class Nonmutating {
      * @throws Exception
      * @return int
      */
-    public function getNonmutating(): int {
-        if (Nonmutating::validateNonmutating($this->nonmutating))  {
-            return $this->nonmutating;
+    public function getNo(): int {
+        if (No::validateNo($this->no))  {
+            return $this->no;
         }
-        throw new Exception('never get to getNonmutating Nonmutating::nonmutating');
+        throw new Exception('never get to getNo No::no');
     }
 
     /**
      * @return int
      */
-    public static function sampleNonmutating(): int {
-        return 31; /*31:nonmutating*/
+    public static function sampleNo(): int {
+        return 31; /*31:no*/
     }
 
     /**
@@ -35633,7 +35633,7 @@ class Nonmutating {
      * @return bool
      */
     public function validate(): bool {
-        return Nonmutating::validateNonmutating($this->nonmutating);
+        return No::validateNo($this->no);
     }
 
     /**
@@ -35642,44 +35642,44 @@ class Nonmutating {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'nonmutating'} = $this->toNonmutating();
+        $out->{'NO'} = $this->toNo();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Nonmutating
+     * @return No
      * @throws Exception
      */
-    public static function from(stdClass $obj): Nonmutating {
-        if (!property_exists($obj, 'nonmutating')) {
+    public static function from(stdClass $obj): No {
+        if (!property_exists($obj, 'NO')) {
             throw new Exception("Missing required property");
         }
-        return new Nonmutating(
-         Nonmutating::fromNonmutating($obj->{'nonmutating'})
+        return new No(
+         No::fromNo($obj->{'NO'})
         );
     }
 
     /**
-     * @return Nonmutating
+     * @return No
      */
-    public static function sample(): Nonmutating {
-        return new Nonmutating(
-         Nonmutating::sampleNonmutating()
+    public static function sample(): No {
+        return new No(
+         No::sampleNo()
         );
     }
 }
 
-// This is an autogenerated file:Not
+// This is an autogenerated file:NoSuchMethod
 
-class Not {
-    private int $not; // json:not Required
+class NoSuchMethod {
+    private int $noSuchMethod; // json:noSuchMethod Required
 
     /**
-     * @param int $not
+     * @param int $noSuchMethod
      */
-    public function __construct(int $not) {
-        $this->not = $not;
+    public function __construct(int $noSuchMethod) {
+        $this->noSuchMethod = $noSuchMethod;
     }
 
     /**
@@ -35687,7 +35687,7 @@ class Not {
      * @throws Exception
      * @return int
      */
-    public static function fromNot(int $value): int {
+    public static function fromNoSuchMethod(int $value): int {
         return $value; /*int*/
     }
 
@@ -35695,11 +35695,11 @@ class Not {
      * @throws Exception
      * @return int
      */
-    public function toNot(): int {
-        if (Not::validateNot($this->not))  {
-            return $this->not; /*int*/
+    public function toNoSuchMethod(): int {
+        if (NoSuchMethod::validateNoSuchMethod($this->noSuchMethod))  {
+            return $this->noSuchMethod; /*int*/
         }
-        throw new Exception('never get to this Not::not');
+        throw new Exception('never get to this NoSuchMethod::noSuchMethod');
     }
 
     /**
@@ -35707,7 +35707,7 @@ class Not {
      * @return bool
      * @throws Exception
      */
-    public static function validateNot(int $value): bool {
+    public static function validateNoSuchMethod(int $value): bool {
         return true;
     }
 
@@ -35715,18 +35715,18 @@ class Not {
      * @throws Exception
      * @return int
      */
-    public function getNot(): int {
-        if (Not::validateNot($this->not))  {
-            return $this->not;
+    public function getNoSuchMethod(): int {
+        if (NoSuchMethod::validateNoSuchMethod($this->noSuchMethod))  {
+            return $this->noSuchMethod;
         }
-        throw new Exception('never get to getNot Not::not');
+        throw new Exception('never get to getNoSuchMethod NoSuchMethod::noSuchMethod');
     }
 
     /**
      * @return int
      */
-    public static function sampleNot(): int {
-        return 31; /*31:not*/
+    public static function sampleNoSuchMethod(): int {
+        return 31; /*31:noSuchMethod*/
     }
 
     /**
@@ -35734,7 +35734,7 @@ class Not {
      * @return bool
      */
     public function validate(): bool {
-        return Not::validateNot($this->not);
+        return NoSuchMethod::validateNoSuchMethod($this->noSuchMethod);
     }
 
     /**
@@ -35743,44 +35743,44 @@ class Not {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'not'} = $this->toNot();
+        $out->{'noSuchMethod'} = $this->toNoSuchMethod();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Not
+     * @return NoSuchMethod
      * @throws Exception
      */
-    public static function from(stdClass $obj): Not {
-        if (!property_exists($obj, 'not')) {
+    public static function from(stdClass $obj): NoSuchMethod {
+        if (!property_exists($obj, 'noSuchMethod')) {
             throw new Exception("Missing required property");
         }
-        return new Not(
-         Not::fromNot($obj->{'not'})
+        return new NoSuchMethod(
+         NoSuchMethod::fromNoSuchMethod($obj->{'noSuchMethod'})
         );
     }
 
     /**
-     * @return Not
+     * @return NoSuchMethod
      */
-    public static function sample(): Not {
-        return new Not(
-         Not::sampleNot()
+    public static function sample(): NoSuchMethod {
+        return new NoSuchMethod(
+         NoSuchMethod::sampleNoSuchMethod()
         );
     }
 }
 
-// This is an autogenerated file:NotEq
+// This is an autogenerated file:Noexcept
 
-class NotEq {
-    private int $notEq; // json:not_eq Required
+class Noexcept {
+    private int $noexcept; // json:noexcept Required
 
     /**
-     * @param int $notEq
+     * @param int $noexcept
      */
-    public function __construct(int $notEq) {
-        $this->notEq = $notEq;
+    public function __construct(int $noexcept) {
+        $this->noexcept = $noexcept;
     }
 
     /**
@@ -35788,7 +35788,7 @@ class NotEq {
      * @throws Exception
      * @return int
      */
-    public static function fromNotEq(int $value): int {
+    public static function fromNoexcept(int $value): int {
         return $value; /*int*/
     }
 
@@ -35796,11 +35796,11 @@ class NotEq {
      * @throws Exception
      * @return int
      */
-    public function toNotEq(): int {
-        if (NotEq::validateNotEq($this->notEq))  {
-            return $this->notEq; /*int*/
+    public function toNoexcept(): int {
+        if (Noexcept::validateNoexcept($this->noexcept))  {
+            return $this->noexcept; /*int*/
         }
-        throw new Exception('never get to this NotEq::notEq');
+        throw new Exception('never get to this Noexcept::noexcept');
     }
 
     /**
@@ -35808,7 +35808,7 @@ class NotEq {
      * @return bool
      * @throws Exception
      */
-    public static function validateNotEq(int $value): bool {
+    public static function validateNoexcept(int $value): bool {
         return true;
     }
 
@@ -35816,18 +35816,18 @@ class NotEq {
      * @throws Exception
      * @return int
      */
-    public function getNotEq(): int {
-        if (NotEq::validateNotEq($this->notEq))  {
-            return $this->notEq;
+    public function getNoexcept(): int {
+        if (Noexcept::validateNoexcept($this->noexcept))  {
+            return $this->noexcept;
         }
-        throw new Exception('never get to getNotEq NotEq::notEq');
+        throw new Exception('never get to getNoexcept Noexcept::noexcept');
     }
 
     /**
      * @return int
      */
-    public static function sampleNotEq(): int {
-        return 31; /*31:notEq*/
+    public static function sampleNoexcept(): int {
+        return 31; /*31:noexcept*/
     }
 
     /**
@@ -35835,7 +35835,7 @@ class NotEq {
      * @return bool
      */
     public function validate(): bool {
-        return NotEq::validateNotEq($this->notEq);
+        return Noexcept::validateNoexcept($this->noexcept);
     }
 
     /**
@@ -35844,44 +35844,44 @@ class NotEq {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'not_eq'} = $this->toNotEq();
+        $out->{'noexcept'} = $this->toNoexcept();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return NotEq
+     * @return Noexcept
      * @throws Exception
      */
-    public static function from(stdClass $obj): NotEq {
-        if (!property_exists($obj, 'not_eq')) {
+    public static function from(stdClass $obj): Noexcept {
+        if (!property_exists($obj, 'noexcept')) {
             throw new Exception("Missing required property");
         }
-        return new NotEq(
-         NotEq::fromNotEq($obj->{'not_eq'})
+        return new Noexcept(
+         Noexcept::fromNoexcept($obj->{'noexcept'})
         );
     }
 
     /**
-     * @return NotEq
+     * @return Noexcept
      */
-    public static function sample(): NotEq {
-        return new NotEq(
-         NotEq::sampleNotEq()
+    public static function sample(): Noexcept {
+        return new Noexcept(
+         Noexcept::sampleNoexcept()
         );
     }
 }
 
-// This is an autogenerated file:NSError
+// This is an autogenerated file:Nonatomic
 
-class NSError {
-    private int $nsError; // json:NSError Required
+class Nonatomic {
+    private int $nonatomic; // json:nonatomic Required
 
     /**
-     * @param int $nsError
+     * @param int $nonatomic
      */
-    public function __construct(int $nsError) {
-        $this->nsError = $nsError;
+    public function __construct(int $nonatomic) {
+        $this->nonatomic = $nonatomic;
     }
 
     /**
@@ -35889,7 +35889,7 @@ class NSError {
      * @throws Exception
      * @return int
      */
-    public static function fromNSError(int $value): int {
+    public static function fromNonatomic(int $value): int {
         return $value; /*int*/
     }
 
@@ -35897,11 +35897,11 @@ class NSError {
      * @throws Exception
      * @return int
      */
-    public function toNSError(): int {
-        if (NSError::validateNSError($this->nsError))  {
-            return $this->nsError; /*int*/
+    public function toNonatomic(): int {
+        if (Nonatomic::validateNonatomic($this->nonatomic))  {
+            return $this->nonatomic; /*int*/
         }
-        throw new Exception('never get to this NSError::nsError');
+        throw new Exception('never get to this Nonatomic::nonatomic');
     }
 
     /**
@@ -35909,7 +35909,7 @@ class NSError {
      * @return bool
      * @throws Exception
      */
-    public static function validateNSError(int $value): bool {
+    public static function validateNonatomic(int $value): bool {
         return true;
     }
 
@@ -35917,18 +35917,18 @@ class NSError {
      * @throws Exception
      * @return int
      */
-    public function getNSError(): int {
-        if (NSError::validateNSError($this->nsError))  {
-            return $this->nsError;
+    public function getNonatomic(): int {
+        if (Nonatomic::validateNonatomic($this->nonatomic))  {
+            return $this->nonatomic;
         }
-        throw new Exception('never get to getNSError NSError::nsError');
+        throw new Exception('never get to getNonatomic Nonatomic::nonatomic');
     }
 
     /**
      * @return int
      */
-    public static function sampleNSError(): int {
-        return 31; /*31:nsError*/
+    public static function sampleNonatomic(): int {
+        return 31; /*31:nonatomic*/
     }
 
     /**
@@ -35936,7 +35936,7 @@ class NSError {
      * @return bool
      */
     public function validate(): bool {
-        return NSError::validateNSError($this->nsError);
+        return Nonatomic::validateNonatomic($this->nonatomic);
     }
 
     /**
@@ -35945,44 +35945,44 @@ class NSError {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'NSError'} = $this->toNSError();
+        $out->{'nonatomic'} = $this->toNonatomic();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return NSError
+     * @return Nonatomic
      * @throws Exception
      */
-    public static function from(stdClass $obj): NSError {
-        if (!property_exists($obj, 'NSError')) {
+    public static function from(stdClass $obj): Nonatomic {
+        if (!property_exists($obj, 'nonatomic')) {
             throw new Exception("Missing required property");
         }
-        return new NSError(
-         NSError::fromNSError($obj->{'NSError'})
+        return new Nonatomic(
+         Nonatomic::fromNonatomic($obj->{'nonatomic'})
         );
     }
 
     /**
-     * @return NSError
+     * @return Nonatomic
      */
-    public static function sample(): NSError {
-        return new NSError(
-         NSError::sampleNSError()
+    public static function sample(): Nonatomic {
+        return new Nonatomic(
+         Nonatomic::sampleNonatomic()
         );
     }
 }
 
-// This is an autogenerated file:NSObject
+// This is an autogenerated file:None
 
-class NSObject {
-    private int $nsObject; // json:NSObject Required
+class None {
+    private int $none; // json:None Required
 
     /**
-     * @param int $nsObject
+     * @param int $none
      */
-    public function __construct(int $nsObject) {
-        $this->nsObject = $nsObject;
+    public function __construct(int $none) {
+        $this->none = $none;
     }
 
     /**
@@ -35990,7 +35990,7 @@ class NSObject {
      * @throws Exception
      * @return int
      */
-    public static function fromNSObject(int $value): int {
+    public static function fromNone(int $value): int {
         return $value; /*int*/
     }
 
@@ -35998,11 +35998,11 @@ class NSObject {
      * @throws Exception
      * @return int
      */
-    public function toNSObject(): int {
-        if (NSObject::validateNSObject($this->nsObject))  {
-            return $this->nsObject; /*int*/
+    public function toNone(): int {
+        if (None::validateNone($this->none))  {
+            return $this->none; /*int*/
         }
-        throw new Exception('never get to this NSObject::nsObject');
+        throw new Exception('never get to this None::none');
     }
 
     /**
@@ -36010,7 +36010,7 @@ class NSObject {
      * @return bool
      * @throws Exception
      */
-    public static function validateNSObject(int $value): bool {
+    public static function validateNone(int $value): bool {
         return true;
     }
 
@@ -36018,18 +36018,18 @@ class NSObject {
      * @throws Exception
      * @return int
      */
-    public function getNSObject(): int {
-        if (NSObject::validateNSObject($this->nsObject))  {
-            return $this->nsObject;
+    public function getNone(): int {
+        if (None::validateNone($this->none))  {
+            return $this->none;
         }
-        throw new Exception('never get to getNSObject NSObject::nsObject');
+        throw new Exception('never get to getNone None::none');
     }
 
     /**
      * @return int
      */
-    public static function sampleNSObject(): int {
-        return 31; /*31:nsObject*/
+    public static function sampleNone(): int {
+        return 31; /*31:none*/
     }
 
     /**
@@ -36037,7 +36037,7 @@ class NSObject {
      * @return bool
      */
     public function validate(): bool {
-        return NSObject::validateNSObject($this->nsObject);
+        return None::validateNone($this->none);
     }
 
     /**
@@ -36046,44 +36046,44 @@ class NSObject {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'NSObject'} = $this->toNSObject();
+        $out->{'None'} = $this->toNone();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return NSObject
+     * @return None
      * @throws Exception
      */
-    public static function from(stdClass $obj): NSObject {
-        if (!property_exists($obj, 'NSObject')) {
+    public static function from(stdClass $obj): None {
+        if (!property_exists($obj, 'None')) {
             throw new Exception("Missing required property");
         }
-        return new NSObject(
-         NSObject::fromNSObject($obj->{'NSObject'})
+        return new None(
+         None::fromNone($obj->{'None'})
         );
     }
 
     /**
-     * @return NSObject
+     * @return None
      */
-    public static function sample(): NSObject {
-        return new NSObject(
-         NSObject::sampleNSObject()
+    public static function sample(): None {
+        return new None(
+         None::sampleNone()
         );
     }
 }
 
-// This is an autogenerated file:NSString
+// This is an autogenerated file:Nonlocal
 
-class NSString {
-    private int $nsString; // json:NSString Required
+class Nonlocal {
+    private int $nonlocal; // json:nonlocal Required
 
     /**
-     * @param int $nsString
+     * @param int $nonlocal
      */
-    public function __construct(int $nsString) {
-        $this->nsString = $nsString;
+    public function __construct(int $nonlocal) {
+        $this->nonlocal = $nonlocal;
     }
 
     /**
@@ -36091,7 +36091,7 @@ class NSString {
      * @throws Exception
      * @return int
      */
-    public static function fromNSString(int $value): int {
+    public static function fromNonlocal(int $value): int {
         return $value; /*int*/
     }
 
@@ -36099,11 +36099,11 @@ class NSString {
      * @throws Exception
      * @return int
      */
-    public function toNSString(): int {
-        if (NSString::validateNSString($this->nsString))  {
-            return $this->nsString; /*int*/
+    public function toNonlocal(): int {
+        if (Nonlocal::validateNonlocal($this->nonlocal))  {
+            return $this->nonlocal; /*int*/
         }
-        throw new Exception('never get to this NSString::nsString');
+        throw new Exception('never get to this Nonlocal::nonlocal');
     }
 
     /**
@@ -36111,7 +36111,7 @@ class NSString {
      * @return bool
      * @throws Exception
      */
-    public static function validateNSString(int $value): bool {
+    public static function validateNonlocal(int $value): bool {
         return true;
     }
 
@@ -36119,18 +36119,18 @@ class NSString {
      * @throws Exception
      * @return int
      */
-    public function getNSString(): int {
-        if (NSString::validateNSString($this->nsString))  {
-            return $this->nsString;
+    public function getNonlocal(): int {
+        if (Nonlocal::validateNonlocal($this->nonlocal))  {
+            return $this->nonlocal;
         }
-        throw new Exception('never get to getNSString NSString::nsString');
+        throw new Exception('never get to getNonlocal Nonlocal::nonlocal');
     }
 
     /**
      * @return int
      */
-    public static function sampleNSString(): int {
-        return 31; /*31:nsString*/
+    public static function sampleNonlocal(): int {
+        return 31; /*31:nonlocal*/
     }
 
     /**
@@ -36138,7 +36138,7 @@ class NSString {
      * @return bool
      */
     public function validate(): bool {
-        return NSString::validateNSString($this->nsString);
+        return Nonlocal::validateNonlocal($this->nonlocal);
     }
 
     /**
@@ -36147,44 +36147,44 @@ class NSString {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'NSString'} = $this->toNSString();
+        $out->{'nonlocal'} = $this->toNonlocal();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return NSString
+     * @return Nonlocal
      * @throws Exception
      */
-    public static function from(stdClass $obj): NSString {
-        if (!property_exists($obj, 'NSString')) {
+    public static function from(stdClass $obj): Nonlocal {
+        if (!property_exists($obj, 'nonlocal')) {
             throw new Exception("Missing required property");
         }
-        return new NSString(
-         NSString::fromNSString($obj->{'NSString'})
+        return new Nonlocal(
+         Nonlocal::fromNonlocal($obj->{'nonlocal'})
         );
     }
 
     /**
-     * @return NSString
+     * @return Nonlocal
      */
-    public static function sample(): NSString {
-        return new NSString(
-         NSString::sampleNSString()
+    public static function sample(): Nonlocal {
+        return new Nonlocal(
+         Nonlocal::sampleNonlocal()
         );
     }
 }
 
-// This is an autogenerated file:NULLClass
+// This is an autogenerated file:Nonmutating
 
-class NULLClass {
-    private int $null; // json:NULL Required
+class Nonmutating {
+    private int $nonmutating; // json:nonmutating Required
 
     /**
-     * @param int $null
+     * @param int $nonmutating
      */
-    public function __construct(int $null) {
-        $this->null = $null;
+    public function __construct(int $nonmutating) {
+        $this->nonmutating = $nonmutating;
     }
 
     /**
@@ -36192,7 +36192,7 @@ class NULLClass {
      * @throws Exception
      * @return int
      */
-    public static function fromNull(int $value): int {
+    public static function fromNonmutating(int $value): int {
         return $value; /*int*/
     }
 
@@ -36200,11 +36200,11 @@ class NULLClass {
      * @throws Exception
      * @return int
      */
-    public function toNull(): int {
-        if (NULLClass::validateNull($this->null))  {
-            return $this->null; /*int*/
+    public function toNonmutating(): int {
+        if (Nonmutating::validateNonmutating($this->nonmutating))  {
+            return $this->nonmutating; /*int*/
         }
-        throw new Exception('never get to this NULLClass::null');
+        throw new Exception('never get to this Nonmutating::nonmutating');
     }
 
     /**
@@ -36212,7 +36212,7 @@ class NULLClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateNull(int $value): bool {
+    public static function validateNonmutating(int $value): bool {
         return true;
     }
 
@@ -36220,18 +36220,18 @@ class NULLClass {
      * @throws Exception
      * @return int
      */
-    public function getNull(): int {
-        if (NULLClass::validateNull($this->null))  {
-            return $this->null;
+    public function getNonmutating(): int {
+        if (Nonmutating::validateNonmutating($this->nonmutating))  {
+            return $this->nonmutating;
         }
-        throw new Exception('never get to getNull NULLClass::null');
+        throw new Exception('never get to getNonmutating Nonmutating::nonmutating');
     }
 
     /**
      * @return int
      */
-    public static function sampleNull(): int {
-        return 31; /*31:null*/
+    public static function sampleNonmutating(): int {
+        return 31; /*31:nonmutating*/
     }
 
     /**
@@ -36239,7 +36239,7 @@ class NULLClass {
      * @return bool
      */
     public function validate(): bool {
-        return NULLClass::validateNull($this->null);
+        return Nonmutating::validateNonmutating($this->nonmutating);
     }
 
     /**
@@ -36248,44 +36248,44 @@ class NULLClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'NULL'} = $this->toNull();
+        $out->{'nonmutating'} = $this->toNonmutating();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return NULLClass
+     * @return Nonmutating
      * @throws Exception
      */
-    public static function from(stdClass $obj): NULLClass {
-        if (!property_exists($obj, 'NULL')) {
+    public static function from(stdClass $obj): Nonmutating {
+        if (!property_exists($obj, 'nonmutating')) {
             throw new Exception("Missing required property");
         }
-        return new NULLClass(
-         NULLClass::fromNull($obj->{'NULL'})
+        return new Nonmutating(
+         Nonmutating::fromNonmutating($obj->{'nonmutating'})
         );
     }
 
     /**
-     * @return NULLClass
+     * @return Nonmutating
      */
-    public static function sample(): NULLClass {
-        return new NULLClass(
-         NULLClass::sampleNull()
+    public static function sample(): Nonmutating {
+        return new Nonmutating(
+         Nonmutating::sampleNonmutating()
         );
     }
 }
 
-// This is an autogenerated file:Nullptr
+// This is an autogenerated file:Not
 
-class Nullptr {
-    private int $nullptr; // json:nullptr Required
+class Not {
+    private int $not; // json:not Required
 
     /**
-     * @param int $nullptr
+     * @param int $not
      */
-    public function __construct(int $nullptr) {
-        $this->nullptr = $nullptr;
+    public function __construct(int $not) {
+        $this->not = $not;
     }
 
     /**
@@ -36293,7 +36293,7 @@ class Nullptr {
      * @throws Exception
      * @return int
      */
-    public static function fromNullptr(int $value): int {
+    public static function fromNot(int $value): int {
         return $value; /*int*/
     }
 
@@ -36301,11 +36301,11 @@ class Nullptr {
      * @throws Exception
      * @return int
      */
-    public function toNullptr(): int {
-        if (Nullptr::validateNullptr($this->nullptr))  {
-            return $this->nullptr; /*int*/
+    public function toNot(): int {
+        if (Not::validateNot($this->not))  {
+            return $this->not; /*int*/
         }
-        throw new Exception('never get to this Nullptr::nullptr');
+        throw new Exception('never get to this Not::not');
     }
 
     /**
@@ -36313,7 +36313,7 @@ class Nullptr {
      * @return bool
      * @throws Exception
      */
-    public static function validateNullptr(int $value): bool {
+    public static function validateNot(int $value): bool {
         return true;
     }
 
@@ -36321,18 +36321,18 @@ class Nullptr {
      * @throws Exception
      * @return int
      */
-    public function getNullptr(): int {
-        if (Nullptr::validateNullptr($this->nullptr))  {
-            return $this->nullptr;
+    public function getNot(): int {
+        if (Not::validateNot($this->not))  {
+            return $this->not;
         }
-        throw new Exception('never get to getNullptr Nullptr::nullptr');
+        throw new Exception('never get to getNot Not::not');
     }
 
     /**
      * @return int
      */
-    public static function sampleNullptr(): int {
-        return 31; /*31:nullptr*/
+    public static function sampleNot(): int {
+        return 31; /*31:not*/
     }
 
     /**
@@ -36340,7 +36340,7 @@ class Nullptr {
      * @return bool
      */
     public function validate(): bool {
-        return Nullptr::validateNullptr($this->nullptr);
+        return Not::validateNot($this->not);
     }
 
     /**
@@ -36349,44 +36349,44 @@ class Nullptr {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'nullptr'} = $this->toNullptr();
+        $out->{'not'} = $this->toNot();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Nullptr
+     * @return Not
      * @throws Exception
      */
-    public static function from(stdClass $obj): Nullptr {
-        if (!property_exists($obj, 'nullptr')) {
+    public static function from(stdClass $obj): Not {
+        if (!property_exists($obj, 'not')) {
             throw new Exception("Missing required property");
         }
-        return new Nullptr(
-         Nullptr::fromNullptr($obj->{'nullptr'})
+        return new Not(
+         Not::fromNot($obj->{'not'})
         );
     }
 
     /**
-     * @return Nullptr
+     * @return Not
      */
-    public static function sample(): Nullptr {
-        return new Nullptr(
-         Nullptr::sampleNullptr()
+    public static function sample(): Not {
+        return new Not(
+         Not::sampleNot()
         );
     }
 }
 
-// This is an autogenerated file:Number
+// This is an autogenerated file:NotEq
 
-class Number {
-    private int $number; // json:number Required
+class NotEq {
+    private int $notEq; // json:not_eq Required
 
     /**
-     * @param int $number
+     * @param int $notEq
      */
-    public function __construct(int $number) {
-        $this->number = $number;
+    public function __construct(int $notEq) {
+        $this->notEq = $notEq;
     }
 
     /**
@@ -36394,7 +36394,7 @@ class Number {
      * @throws Exception
      * @return int
      */
-    public static function fromNumber(int $value): int {
+    public static function fromNotEq(int $value): int {
         return $value; /*int*/
     }
 
@@ -36402,11 +36402,11 @@ class Number {
      * @throws Exception
      * @return int
      */
-    public function toNumber(): int {
-        if (Number::validateNumber($this->number))  {
-            return $this->number; /*int*/
+    public function toNotEq(): int {
+        if (NotEq::validateNotEq($this->notEq))  {
+            return $this->notEq; /*int*/
         }
-        throw new Exception('never get to this Number::number');
+        throw new Exception('never get to this NotEq::notEq');
     }
 
     /**
@@ -36414,7 +36414,7 @@ class Number {
      * @return bool
      * @throws Exception
      */
-    public static function validateNumber(int $value): bool {
+    public static function validateNotEq(int $value): bool {
         return true;
     }
 
@@ -36422,18 +36422,18 @@ class Number {
      * @throws Exception
      * @return int
      */
-    public function getNumber(): int {
-        if (Number::validateNumber($this->number))  {
-            return $this->number;
+    public function getNotEq(): int {
+        if (NotEq::validateNotEq($this->notEq))  {
+            return $this->notEq;
         }
-        throw new Exception('never get to getNumber Number::number');
+        throw new Exception('never get to getNotEq NotEq::notEq');
     }
 
     /**
      * @return int
      */
-    public static function sampleNumber(): int {
-        return 31; /*31:number*/
+    public static function sampleNotEq(): int {
+        return 31; /*31:notEq*/
     }
 
     /**
@@ -36441,7 +36441,7 @@ class Number {
      * @return bool
      */
     public function validate(): bool {
-        return Number::validateNumber($this->number);
+        return NotEq::validateNotEq($this->notEq);
     }
 
     /**
@@ -36450,44 +36450,44 @@ class Number {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'number'} = $this->toNumber();
+        $out->{'not_eq'} = $this->toNotEq();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Number
+     * @return NotEq
      * @throws Exception
      */
-    public static function from(stdClass $obj): Number {
-        if (!property_exists($obj, 'number')) {
+    public static function from(stdClass $obj): NotEq {
+        if (!property_exists($obj, 'not_eq')) {
             throw new Exception("Missing required property");
         }
-        return new Number(
-         Number::fromNumber($obj->{'number'})
+        return new NotEq(
+         NotEq::fromNotEq($obj->{'not_eq'})
         );
     }
 
     /**
-     * @return Number
+     * @return NotEq
      */
-    public static function sample(): Number {
-        return new Number(
-         Number::sampleNumber()
+    public static function sample(): NotEq {
+        return new NotEq(
+         NotEq::sampleNotEq()
         );
     }
 }
 
-// This is an autogenerated file:NoneClass
+// This is an autogenerated file:NSError
 
-class NoneClass {
-    private int $none; // json:none Required
+class NSError {
+    private int $nsError; // json:NSError Required
 
     /**
-     * @param int $none
+     * @param int $nsError
      */
-    public function __construct(int $none) {
-        $this->none = $none;
+    public function __construct(int $nsError) {
+        $this->nsError = $nsError;
     }
 
     /**
@@ -36495,7 +36495,7 @@ class NoneClass {
      * @throws Exception
      * @return int
      */
-    public static function fromNone(int $value): int {
+    public static function fromNSError(int $value): int {
         return $value; /*int*/
     }
 
@@ -36503,11 +36503,11 @@ class NoneClass {
      * @throws Exception
      * @return int
      */
-    public function toNone(): int {
-        if (NoneClass::validateNone($this->none))  {
-            return $this->none; /*int*/
+    public function toNSError(): int {
+        if (NSError::validateNSError($this->nsError))  {
+            return $this->nsError; /*int*/
         }
-        throw new Exception('never get to this NoneClass::none');
+        throw new Exception('never get to this NSError::nsError');
     }
 
     /**
@@ -36515,7 +36515,7 @@ class NoneClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateNone(int $value): bool {
+    public static function validateNSError(int $value): bool {
         return true;
     }
 
@@ -36523,18 +36523,18 @@ class NoneClass {
      * @throws Exception
      * @return int
      */
-    public function getNone(): int {
-        if (NoneClass::validateNone($this->none))  {
-            return $this->none;
+    public function getNSError(): int {
+        if (NSError::validateNSError($this->nsError))  {
+            return $this->nsError;
         }
-        throw new Exception('never get to getNone NoneClass::none');
+        throw new Exception('never get to getNSError NSError::nsError');
     }
 
     /**
      * @return int
      */
-    public static function sampleNone(): int {
-        return 31; /*31:none*/
+    public static function sampleNSError(): int {
+        return 31; /*31:nsError*/
     }
 
     /**
@@ -36542,7 +36542,7 @@ class NoneClass {
      * @return bool
      */
     public function validate(): bool {
-        return NoneClass::validateNone($this->none);
+        return NSError::validateNSError($this->nsError);
     }
 
     /**
@@ -36551,44 +36551,44 @@ class NoneClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'none'} = $this->toNone();
+        $out->{'NSError'} = $this->toNSError();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return NoneClass
+     * @return NSError
      * @throws Exception
      */
-    public static function from(stdClass $obj): NoneClass {
-        if (!property_exists($obj, 'none')) {
+    public static function from(stdClass $obj): NSError {
+        if (!property_exists($obj, 'NSError')) {
             throw new Exception("Missing required property");
         }
-        return new NoneClass(
-         NoneClass::fromNone($obj->{'none'})
+        return new NSError(
+         NSError::fromNSError($obj->{'NSError'})
         );
     }
 
     /**
-     * @return NoneClass
+     * @return NSError
      */
-    public static function sample(): NoneClass {
-        return new NoneClass(
-         NoneClass::sampleNone()
+    public static function sample(): NSError {
+        return new NSError(
+         NSError::sampleNSError()
         );
     }
 }
 
-// This is an autogenerated file:Obj4Null
+// This is an autogenerated file:NSObject
 
-class Obj4Null {
-    private int $null; // json:null Required
+class NSObject {
+    private int $nsObject; // json:NSObject Required
 
     /**
-     * @param int $null
+     * @param int $nsObject
      */
-    public function __construct(int $null) {
-        $this->null = $null;
+    public function __construct(int $nsObject) {
+        $this->nsObject = $nsObject;
     }
 
     /**
@@ -36596,7 +36596,7 @@ class Obj4Null {
      * @throws Exception
      * @return int
      */
-    public static function fromNull(int $value): int {
+    public static function fromNSObject(int $value): int {
         return $value; /*int*/
     }
 
@@ -36604,11 +36604,11 @@ class Obj4Null {
      * @throws Exception
      * @return int
      */
-    public function toNull(): int {
-        if (Obj4Null::validateNull($this->null))  {
-            return $this->null; /*int*/
+    public function toNSObject(): int {
+        if (NSObject::validateNSObject($this->nsObject))  {
+            return $this->nsObject; /*int*/
         }
-        throw new Exception('never get to this Obj4Null::null');
+        throw new Exception('never get to this NSObject::nsObject');
     }
 
     /**
@@ -36616,7 +36616,7 @@ class Obj4Null {
      * @return bool
      * @throws Exception
      */
-    public static function validateNull(int $value): bool {
+    public static function validateNSObject(int $value): bool {
         return true;
     }
 
@@ -36624,18 +36624,18 @@ class Obj4Null {
      * @throws Exception
      * @return int
      */
-    public function getNull(): int {
-        if (Obj4Null::validateNull($this->null))  {
-            return $this->null;
+    public function getNSObject(): int {
+        if (NSObject::validateNSObject($this->nsObject))  {
+            return $this->nsObject;
         }
-        throw new Exception('never get to getNull Obj4Null::null');
+        throw new Exception('never get to getNSObject NSObject::nsObject');
     }
 
     /**
      * @return int
      */
-    public static function sampleNull(): int {
-        return 31; /*31:null*/
+    public static function sampleNSObject(): int {
+        return 31; /*31:nsObject*/
     }
 
     /**
@@ -36643,7 +36643,7 @@ class Obj4Null {
      * @return bool
      */
     public function validate(): bool {
-        return Obj4Null::validateNull($this->null);
+        return NSObject::validateNSObject($this->nsObject);
     }
 
     /**
@@ -36652,44 +36652,44 @@ class Obj4Null {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'null'} = $this->toNull();
+        $out->{'NSObject'} = $this->toNSObject();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Obj4Null
+     * @return NSObject
      * @throws Exception
      */
-    public static function from(stdClass $obj): Obj4Null {
-        if (!property_exists($obj, 'null')) {
+    public static function from(stdClass $obj): NSObject {
+        if (!property_exists($obj, 'NSObject')) {
             throw new Exception("Missing required property");
         }
-        return new Obj4Null(
-         Obj4Null::fromNull($obj->{'null'})
+        return new NSObject(
+         NSObject::fromNSObject($obj->{'NSObject'})
         );
     }
 
     /**
-     * @return Obj4Null
+     * @return NSObject
      */
-    public static function sample(): Obj4Null {
-        return new Obj4Null(
-         Obj4Null::sampleNull()
+    public static function sample(): NSObject {
+        return new NSObject(
+         NSObject::sampleNSObject()
         );
     }
 }
 
-// This is an autogenerated file:ProtocolClass
+// This is an autogenerated file:NSString
 
-class ProtocolClass {
-    private int $protocol; // json:protocol Required
+class NSString {
+    private int $nsString; // json:NSString Required
 
     /**
-     * @param int $protocol
+     * @param int $nsString
      */
-    public function __construct(int $protocol) {
-        $this->protocol = $protocol;
+    public function __construct(int $nsString) {
+        $this->nsString = $nsString;
     }
 
     /**
@@ -36697,7 +36697,7 @@ class ProtocolClass {
      * @throws Exception
      * @return int
      */
-    public static function fromProtocol(int $value): int {
+    public static function fromNSString(int $value): int {
         return $value; /*int*/
     }
 
@@ -36705,11 +36705,11 @@ class ProtocolClass {
      * @throws Exception
      * @return int
      */
-    public function toProtocol(): int {
-        if (ProtocolClass::validateProtocol($this->protocol))  {
-            return $this->protocol; /*int*/
+    public function toNSString(): int {
+        if (NSString::validateNSString($this->nsString))  {
+            return $this->nsString; /*int*/
         }
-        throw new Exception('never get to this ProtocolClass::protocol');
+        throw new Exception('never get to this NSString::nsString');
     }
 
     /**
@@ -36717,7 +36717,7 @@ class ProtocolClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateProtocol(int $value): bool {
+    public static function validateNSString(int $value): bool {
         return true;
     }
 
@@ -36725,18 +36725,18 @@ class ProtocolClass {
      * @throws Exception
      * @return int
      */
-    public function getProtocol(): int {
-        if (ProtocolClass::validateProtocol($this->protocol))  {
-            return $this->protocol;
+    public function getNSString(): int {
+        if (NSString::validateNSString($this->nsString))  {
+            return $this->nsString;
         }
-        throw new Exception('never get to getProtocol ProtocolClass::protocol');
+        throw new Exception('never get to getNSString NSString::nsString');
     }
 
     /**
      * @return int
      */
-    public static function sampleProtocol(): int {
-        return 31; /*31:protocol*/
+    public static function sampleNSString(): int {
+        return 31; /*31:nsString*/
     }
 
     /**
@@ -36744,7 +36744,7 @@ class ProtocolClass {
      * @return bool
      */
     public function validate(): bool {
-        return ProtocolClass::validateProtocol($this->protocol);
+        return NSString::validateNSString($this->nsString);
     }
 
     /**
@@ -36753,44 +36753,44 @@ class ProtocolClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'protocol'} = $this->toProtocol();
+        $out->{'NSString'} = $this->toNSString();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return ProtocolClass
+     * @return NSString
      * @throws Exception
      */
-    public static function from(stdClass $obj): ProtocolClass {
-        if (!property_exists($obj, 'protocol')) {
+    public static function from(stdClass $obj): NSString {
+        if (!property_exists($obj, 'NSString')) {
             throw new Exception("Missing required property");
         }
-        return new ProtocolClass(
-         ProtocolClass::fromProtocol($obj->{'protocol'})
+        return new NSString(
+         NSString::fromNSString($obj->{'NSString'})
         );
     }
 
     /**
-     * @return ProtocolClass
+     * @return NSString
      */
-    public static function sample(): ProtocolClass {
-        return new ProtocolClass(
-         ProtocolClass::sampleProtocol()
+    public static function sample(): NSString {
+        return new NSString(
+         NSString::sampleNSString()
         );
     }
 }
 
-// This is an autogenerated file:ObjectClass
+// This is an autogenerated file:NULLClass
 
-class ObjectClass {
-    private int $object; // json:object Required
+class NULLClass {
+    private int $null; // json:NULL Required
 
     /**
-     * @param int $object
+     * @param int $null
      */
-    public function __construct(int $object) {
-        $this->object = $object;
+    public function __construct(int $null) {
+        $this->null = $null;
     }
 
     /**
@@ -36798,7 +36798,7 @@ class ObjectClass {
      * @throws Exception
      * @return int
      */
-    public static function fromObject(int $value): int {
+    public static function fromNull(int $value): int {
         return $value; /*int*/
     }
 
@@ -36806,11 +36806,11 @@ class ObjectClass {
      * @throws Exception
      * @return int
      */
-    public function toObject(): int {
-        if (ObjectClass::validateObject($this->object))  {
-            return $this->object; /*int*/
+    public function toNull(): int {
+        if (NULLClass::validateNull($this->null))  {
+            return $this->null; /*int*/
         }
-        throw new Exception('never get to this ObjectClass::object');
+        throw new Exception('never get to this NULLClass::null');
     }
 
     /**
@@ -36818,7 +36818,7 @@ class ObjectClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateObject(int $value): bool {
+    public static function validateNull(int $value): bool {
         return true;
     }
 
@@ -36826,18 +36826,18 @@ class ObjectClass {
      * @throws Exception
      * @return int
      */
-    public function getObject(): int {
-        if (ObjectClass::validateObject($this->object))  {
-            return $this->object;
+    public function getNull(): int {
+        if (NULLClass::validateNull($this->null))  {
+            return $this->null;
         }
-        throw new Exception('never get to getObject ObjectClass::object');
+        throw new Exception('never get to getNull NULLClass::null');
     }
 
     /**
      * @return int
      */
-    public static function sampleObject(): int {
-        return 31; /*31:object*/
+    public static function sampleNull(): int {
+        return 31; /*31:null*/
     }
 
     /**
@@ -36845,7 +36845,7 @@ class ObjectClass {
      * @return bool
      */
     public function validate(): bool {
-        return ObjectClass::validateObject($this->object);
+        return NULLClass::validateNull($this->null);
     }
 
     /**
@@ -36854,44 +36854,44 @@ class ObjectClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'object'} = $this->toObject();
+        $out->{'NULL'} = $this->toNull();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return ObjectClass
+     * @return NULLClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): ObjectClass {
-        if (!property_exists($obj, 'object')) {
+    public static function from(stdClass $obj): NULLClass {
+        if (!property_exists($obj, 'NULL')) {
             throw new Exception("Missing required property");
         }
-        return new ObjectClass(
-         ObjectClass::fromObject($obj->{'object'})
+        return new NULLClass(
+         NULLClass::fromNull($obj->{'NULL'})
         );
     }
 
     /**
-     * @return ObjectClass
+     * @return NULLClass
      */
-    public static function sample(): ObjectClass {
-        return new ObjectClass(
-         ObjectClass::sampleObject()
+    public static function sample(): NULLClass {
+        return new NULLClass(
+         NULLClass::sampleNull()
         );
     }
 }
 
-// This is an autogenerated file:ObjectMapper
+// This is an autogenerated file:NullNode
 
-class ObjectMapper {
-    private int $objectMapper; // json:ObjectMapper Required
+class NullNode {
+    private int $nullNode; // json:NullNode Required
 
     /**
-     * @param int $objectMapper
+     * @param int $nullNode
      */
-    public function __construct(int $objectMapper) {
-        $this->objectMapper = $objectMapper;
+    public function __construct(int $nullNode) {
+        $this->nullNode = $nullNode;
     }
 
     /**
@@ -36899,7 +36899,7 @@ class ObjectMapper {
      * @throws Exception
      * @return int
      */
-    public static function fromObjectMapper(int $value): int {
+    public static function fromNullNode(int $value): int {
         return $value; /*int*/
     }
 
@@ -36907,11 +36907,11 @@ class ObjectMapper {
      * @throws Exception
      * @return int
      */
-    public function toObjectMapper(): int {
-        if (ObjectMapper::validateObjectMapper($this->objectMapper))  {
-            return $this->objectMapper; /*int*/
+    public function toNullNode(): int {
+        if (NullNode::validateNullNode($this->nullNode))  {
+            return $this->nullNode; /*int*/
         }
-        throw new Exception('never get to this ObjectMapper::objectMapper');
+        throw new Exception('never get to this NullNode::nullNode');
     }
 
     /**
@@ -36919,7 +36919,7 @@ class ObjectMapper {
      * @return bool
      * @throws Exception
      */
-    public static function validateObjectMapper(int $value): bool {
+    public static function validateNullNode(int $value): bool {
         return true;
     }
 
@@ -36927,18 +36927,18 @@ class ObjectMapper {
      * @throws Exception
      * @return int
      */
-    public function getObjectMapper(): int {
-        if (ObjectMapper::validateObjectMapper($this->objectMapper))  {
-            return $this->objectMapper;
+    public function getNullNode(): int {
+        if (NullNode::validateNullNode($this->nullNode))  {
+            return $this->nullNode;
         }
-        throw new Exception('never get to getObjectMapper ObjectMapper::objectMapper');
+        throw new Exception('never get to getNullNode NullNode::nullNode');
     }
 
     /**
      * @return int
      */
-    public static function sampleObjectMapper(): int {
-        return 31; /*31:objectMapper*/
+    public static function sampleNullNode(): int {
+        return 31; /*31:nullNode*/
     }
 
     /**
@@ -36946,7 +36946,7 @@ class ObjectMapper {
      * @return bool
      */
     public function validate(): bool {
-        return ObjectMapper::validateObjectMapper($this->objectMapper);
+        return NullNode::validateNullNode($this->nullNode);
     }
 
     /**
@@ -36955,44 +36955,44 @@ class ObjectMapper {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'ObjectMapper'} = $this->toObjectMapper();
+        $out->{'NullNode'} = $this->toNullNode();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return ObjectMapper
+     * @return NullNode
      * @throws Exception
      */
-    public static function from(stdClass $obj): ObjectMapper {
-        if (!property_exists($obj, 'ObjectMapper')) {
+    public static function from(stdClass $obj): NullNode {
+        if (!property_exists($obj, 'NullNode')) {
             throw new Exception("Missing required property");
         }
-        return new ObjectMapper(
-         ObjectMapper::fromObjectMapper($obj->{'ObjectMapper'})
+        return new NullNode(
+         NullNode::fromNullNode($obj->{'NullNode'})
         );
     }
 
     /**
-     * @return ObjectMapper
+     * @return NullNode
      */
-    public static function sample(): ObjectMapper {
-        return new ObjectMapper(
-         ObjectMapper::sampleObjectMapper()
+    public static function sample(): NullNode {
+        return new NullNode(
+         NullNode::sampleNullNode()
         );
     }
 }
 
-// This is an autogenerated file:Of
+// This is an autogenerated file:Nullptr
 
-class Of {
-    private int $of; // json:of Required
+class Nullptr {
+    private int $nullptr; // json:nullptr Required
 
     /**
-     * @param int $of
+     * @param int $nullptr
      */
-    public function __construct(int $of) {
-        $this->of = $of;
+    public function __construct(int $nullptr) {
+        $this->nullptr = $nullptr;
     }
 
     /**
@@ -37000,7 +37000,7 @@ class Of {
      * @throws Exception
      * @return int
      */
-    public static function fromOf(int $value): int {
+    public static function fromNullptr(int $value): int {
         return $value; /*int*/
     }
 
@@ -37008,11 +37008,11 @@ class Of {
      * @throws Exception
      * @return int
      */
-    public function toOf(): int {
-        if (Of::validateOf($this->of))  {
-            return $this->of; /*int*/
+    public function toNullptr(): int {
+        if (Nullptr::validateNullptr($this->nullptr))  {
+            return $this->nullptr; /*int*/
         }
-        throw new Exception('never get to this Of::of');
+        throw new Exception('never get to this Nullptr::nullptr');
     }
 
     /**
@@ -37020,7 +37020,7 @@ class Of {
      * @return bool
      * @throws Exception
      */
-    public static function validateOf(int $value): bool {
+    public static function validateNullptr(int $value): bool {
         return true;
     }
 
@@ -37028,18 +37028,18 @@ class Of {
      * @throws Exception
      * @return int
      */
-    public function getOf(): int {
-        if (Of::validateOf($this->of))  {
-            return $this->of;
+    public function getNullptr(): int {
+        if (Nullptr::validateNullptr($this->nullptr))  {
+            return $this->nullptr;
         }
-        throw new Exception('never get to getOf Of::of');
+        throw new Exception('never get to getNullptr Nullptr::nullptr');
     }
 
     /**
      * @return int
      */
-    public static function sampleOf(): int {
-        return 31; /*31:of*/
+    public static function sampleNullptr(): int {
+        return 31; /*31:nullptr*/
     }
 
     /**
@@ -37047,7 +37047,7 @@ class Of {
      * @return bool
      */
     public function validate(): bool {
-        return Of::validateOf($this->of);
+        return Nullptr::validateNullptr($this->nullptr);
     }
 
     /**
@@ -37056,44 +37056,44 @@ class Of {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'of'} = $this->toOf();
+        $out->{'nullptr'} = $this->toNullptr();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Of
+     * @return Nullptr
      * @throws Exception
      */
-    public static function from(stdClass $obj): Of {
-        if (!property_exists($obj, 'of')) {
+    public static function from(stdClass $obj): Nullptr {
+        if (!property_exists($obj, 'nullptr')) {
             throw new Exception("Missing required property");
         }
-        return new Of(
-         Of::fromOf($obj->{'of'})
+        return new Nullptr(
+         Nullptr::fromNullptr($obj->{'nullptr'})
         );
     }
 
     /**
-     * @return Of
+     * @return Nullptr
      */
-    public static function sample(): Of {
-        return new Of(
-         Of::sampleOf()
+    public static function sample(): Nullptr {
+        return new Nullptr(
+         Nullptr::sampleNullptr()
         );
     }
 }
 
-// This is an autogenerated file:Oneway
+// This is an autogenerated file:Number
 
-class Oneway {
-    private int $oneway; // json:oneway Required
+class Number {
+    private int $number; // json:number Required
 
     /**
-     * @param int $oneway
+     * @param int $number
      */
-    public function __construct(int $oneway) {
-        $this->oneway = $oneway;
+    public function __construct(int $number) {
+        $this->number = $number;
     }
 
     /**
@@ -37101,7 +37101,7 @@ class Oneway {
      * @throws Exception
      * @return int
      */
-    public static function fromOneway(int $value): int {
+    public static function fromNumber(int $value): int {
         return $value; /*int*/
     }
 
@@ -37109,11 +37109,11 @@ class Oneway {
      * @throws Exception
      * @return int
      */
-    public function toOneway(): int {
-        if (Oneway::validateOneway($this->oneway))  {
-            return $this->oneway; /*int*/
+    public function toNumber(): int {
+        if (Number::validateNumber($this->number))  {
+            return $this->number; /*int*/
         }
-        throw new Exception('never get to this Oneway::oneway');
+        throw new Exception('never get to this Number::number');
     }
 
     /**
@@ -37121,7 +37121,7 @@ class Oneway {
      * @return bool
      * @throws Exception
      */
-    public static function validateOneway(int $value): bool {
+    public static function validateNumber(int $value): bool {
         return true;
     }
 
@@ -37129,18 +37129,18 @@ class Oneway {
      * @throws Exception
      * @return int
      */
-    public function getOneway(): int {
-        if (Oneway::validateOneway($this->oneway))  {
-            return $this->oneway;
+    public function getNumber(): int {
+        if (Number::validateNumber($this->number))  {
+            return $this->number;
         }
-        throw new Exception('never get to getOneway Oneway::oneway');
+        throw new Exception('never get to getNumber Number::number');
     }
 
     /**
      * @return int
      */
-    public static function sampleOneway(): int {
-        return 31; /*31:oneway*/
+    public static function sampleNumber(): int {
+        return 31; /*31:number*/
     }
 
     /**
@@ -37148,7 +37148,7 @@ class Oneway {
      * @return bool
      */
     public function validate(): bool {
-        return Oneway::validateOneway($this->oneway);
+        return Number::validateNumber($this->number);
     }
 
     /**
@@ -37157,44 +37157,44 @@ class Oneway {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'oneway'} = $this->toOneway();
+        $out->{'number'} = $this->toNumber();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Oneway
+     * @return Number
      * @throws Exception
      */
-    public static function from(stdClass $obj): Oneway {
-        if (!property_exists($obj, 'oneway')) {
+    public static function from(stdClass $obj): Number {
+        if (!property_exists($obj, 'number')) {
             throw new Exception("Missing required property");
         }
-        return new Oneway(
-         Oneway::fromOneway($obj->{'oneway'})
+        return new Number(
+         Number::fromNumber($obj->{'number'})
         );
     }
 
     /**
-     * @return Oneway
+     * @return Number
      */
-    public static function sample(): Oneway {
-        return new Oneway(
-         Oneway::sampleOneway()
+    public static function sample(): Number {
+        return new Number(
+         Number::sampleNumber()
         );
     }
 }
 
-// This is an autogenerated file:Open
+// This is an autogenerated file:NoneClass
 
-class Open {
-    private int $open; // json:open Required
+class NoneClass {
+    private int $none; // json:none Required
 
     /**
-     * @param int $open
+     * @param int $none
      */
-    public function __construct(int $open) {
-        $this->open = $open;
+    public function __construct(int $none) {
+        $this->none = $none;
     }
 
     /**
@@ -37202,7 +37202,7 @@ class Open {
      * @throws Exception
      * @return int
      */
-    public static function fromOpen(int $value): int {
+    public static function fromNone(int $value): int {
         return $value; /*int*/
     }
 
@@ -37210,11 +37210,11 @@ class Open {
      * @throws Exception
      * @return int
      */
-    public function toOpen(): int {
-        if (Open::validateOpen($this->open))  {
-            return $this->open; /*int*/
+    public function toNone(): int {
+        if (NoneClass::validateNone($this->none))  {
+            return $this->none; /*int*/
         }
-        throw new Exception('never get to this Open::open');
+        throw new Exception('never get to this NoneClass::none');
     }
 
     /**
@@ -37222,7 +37222,7 @@ class Open {
      * @return bool
      * @throws Exception
      */
-    public static function validateOpen(int $value): bool {
+    public static function validateNone(int $value): bool {
         return true;
     }
 
@@ -37230,18 +37230,18 @@ class Open {
      * @throws Exception
      * @return int
      */
-    public function getOpen(): int {
-        if (Open::validateOpen($this->open))  {
-            return $this->open;
+    public function getNone(): int {
+        if (NoneClass::validateNone($this->none))  {
+            return $this->none;
         }
-        throw new Exception('never get to getOpen Open::open');
+        throw new Exception('never get to getNone NoneClass::none');
     }
 
     /**
      * @return int
      */
-    public static function sampleOpen(): int {
-        return 31; /*31:open*/
+    public static function sampleNone(): int {
+        return 31; /*31:none*/
     }
 
     /**
@@ -37249,7 +37249,7 @@ class Open {
      * @return bool
      */
     public function validate(): bool {
-        return Open::validateOpen($this->open);
+        return NoneClass::validateNone($this->none);
     }
 
     /**
@@ -37258,44 +37258,44 @@ class Open {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'open'} = $this->toOpen();
+        $out->{'none'} = $this->toNone();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Open
+     * @return NoneClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): Open {
-        if (!property_exists($obj, 'open')) {
+    public static function from(stdClass $obj): NoneClass {
+        if (!property_exists($obj, 'none')) {
             throw new Exception("Missing required property");
         }
-        return new Open(
-         Open::fromOpen($obj->{'open'})
+        return new NoneClass(
+         NoneClass::fromNone($obj->{'none'})
         );
     }
 
     /**
-     * @return Open
+     * @return NoneClass
      */
-    public static function sample(): Open {
-        return new Open(
-         Open::sampleOpen()
+    public static function sample(): NoneClass {
+        return new NoneClass(
+         NoneClass::sampleNone()
         );
     }
 }
 
-// This is an autogenerated file:Operator
+// This is an autogenerated file:Obj4Null
 
-class Operator {
-    private int $operator; // json:operator Required
+class Obj4Null {
+    private int $null; // json:null Required
 
     /**
-     * @param int $operator
+     * @param int $null
      */
-    public function __construct(int $operator) {
-        $this->operator = $operator;
+    public function __construct(int $null) {
+        $this->null = $null;
     }
 
     /**
@@ -37303,7 +37303,7 @@ class Operator {
      * @throws Exception
      * @return int
      */
-    public static function fromOperator(int $value): int {
+    public static function fromNull(int $value): int {
         return $value; /*int*/
     }
 
@@ -37311,11 +37311,11 @@ class Operator {
      * @throws Exception
      * @return int
      */
-    public function toOperator(): int {
-        if (Operator::validateOperator($this->operator))  {
-            return $this->operator; /*int*/
+    public function toNull(): int {
+        if (Obj4Null::validateNull($this->null))  {
+            return $this->null; /*int*/
         }
-        throw new Exception('never get to this Operator::operator');
+        throw new Exception('never get to this Obj4Null::null');
     }
 
     /**
@@ -37323,7 +37323,7 @@ class Operator {
      * @return bool
      * @throws Exception
      */
-    public static function validateOperator(int $value): bool {
+    public static function validateNull(int $value): bool {
         return true;
     }
 
@@ -37331,18 +37331,18 @@ class Operator {
      * @throws Exception
      * @return int
      */
-    public function getOperator(): int {
-        if (Operator::validateOperator($this->operator))  {
-            return $this->operator;
+    public function getNull(): int {
+        if (Obj4Null::validateNull($this->null))  {
+            return $this->null;
         }
-        throw new Exception('never get to getOperator Operator::operator');
+        throw new Exception('never get to getNull Obj4Null::null');
     }
 
     /**
      * @return int
      */
-    public static function sampleOperator(): int {
-        return 31; /*31:operator*/
+    public static function sampleNull(): int {
+        return 31; /*31:null*/
     }
 
     /**
@@ -37350,7 +37350,7 @@ class Operator {
      * @return bool
      */
     public function validate(): bool {
-        return Operator::validateOperator($this->operator);
+        return Obj4Null::validateNull($this->null);
     }
 
     /**
@@ -37359,44 +37359,44 @@ class Operator {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'operator'} = $this->toOperator();
+        $out->{'null'} = $this->toNull();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Operator
+     * @return Obj4Null
      * @throws Exception
      */
-    public static function from(stdClass $obj): Operator {
-        if (!property_exists($obj, 'operator')) {
+    public static function from(stdClass $obj): Obj4Null {
+        if (!property_exists($obj, 'null')) {
             throw new Exception("Missing required property");
         }
-        return new Operator(
-         Operator::fromOperator($obj->{'operator'})
+        return new Obj4Null(
+         Obj4Null::fromNull($obj->{'null'})
         );
     }
 
     /**
-     * @return Operator
+     * @return Obj4Null
      */
-    public static function sample(): Operator {
-        return new Operator(
-         Operator::sampleOperator()
+    public static function sample(): Obj4Null {
+        return new Obj4Null(
+         Obj4Null::sampleNull()
         );
     }
 }
 
-// This is an autogenerated file:Optional
+// This is an autogenerated file:ProtocolClass
 
-class Optional {
-    private int $optional; // json:optional Required
+class ProtocolClass {
+    private int $protocol; // json:protocol Required
 
     /**
-     * @param int $optional
+     * @param int $protocol
      */
-    public function __construct(int $optional) {
-        $this->optional = $optional;
+    public function __construct(int $protocol) {
+        $this->protocol = $protocol;
     }
 
     /**
@@ -37404,7 +37404,7 @@ class Optional {
      * @throws Exception
      * @return int
      */
-    public static function fromOptional(int $value): int {
+    public static function fromProtocol(int $value): int {
         return $value; /*int*/
     }
 
@@ -37412,11 +37412,11 @@ class Optional {
      * @throws Exception
      * @return int
      */
-    public function toOptional(): int {
-        if (Optional::validateOptional($this->optional))  {
-            return $this->optional; /*int*/
+    public function toProtocol(): int {
+        if (ProtocolClass::validateProtocol($this->protocol))  {
+            return $this->protocol; /*int*/
         }
-        throw new Exception('never get to this Optional::optional');
+        throw new Exception('never get to this ProtocolClass::protocol');
     }
 
     /**
@@ -37424,7 +37424,7 @@ class Optional {
      * @return bool
      * @throws Exception
      */
-    public static function validateOptional(int $value): bool {
+    public static function validateProtocol(int $value): bool {
         return true;
     }
 
@@ -37432,18 +37432,18 @@ class Optional {
      * @throws Exception
      * @return int
      */
-    public function getOptional(): int {
-        if (Optional::validateOptional($this->optional))  {
-            return $this->optional;
+    public function getProtocol(): int {
+        if (ProtocolClass::validateProtocol($this->protocol))  {
+            return $this->protocol;
         }
-        throw new Exception('never get to getOptional Optional::optional');
+        throw new Exception('never get to getProtocol ProtocolClass::protocol');
     }
 
     /**
      * @return int
      */
-    public static function sampleOptional(): int {
-        return 31; /*31:optional*/
+    public static function sampleProtocol(): int {
+        return 31; /*31:protocol*/
     }
 
     /**
@@ -37451,7 +37451,7 @@ class Optional {
      * @return bool
      */
     public function validate(): bool {
-        return Optional::validateOptional($this->optional);
+        return ProtocolClass::validateProtocol($this->protocol);
     }
 
     /**
@@ -37460,44 +37460,44 @@ class Optional {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'optional'} = $this->toOptional();
+        $out->{'protocol'} = $this->toProtocol();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Optional
+     * @return ProtocolClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): Optional {
-        if (!property_exists($obj, 'optional')) {
+    public static function from(stdClass $obj): ProtocolClass {
+        if (!property_exists($obj, 'protocol')) {
             throw new Exception("Missing required property");
         }
-        return new Optional(
-         Optional::fromOptional($obj->{'optional'})
+        return new ProtocolClass(
+         ProtocolClass::fromProtocol($obj->{'protocol'})
         );
     }
 
     /**
-     * @return Optional
+     * @return ProtocolClass
      */
-    public static function sample(): Optional {
-        return new Optional(
-         Optional::sampleOptional()
+    public static function sample(): ProtocolClass {
+        return new ProtocolClass(
+         ProtocolClass::sampleProtocol()
         );
     }
 }
 
-// This is an autogenerated file:OrClass
+// This is an autogenerated file:ObjectClass
 
-class OrClass {
-    private int $or; // json:or Required
+class ObjectClass {
+    private int $object; // json:object Required
 
     /**
-     * @param int $or
+     * @param int $object
      */
-    public function __construct(int $or) {
-        $this->or = $or;
+    public function __construct(int $object) {
+        $this->object = $object;
     }
 
     /**
@@ -37505,7 +37505,7 @@ class OrClass {
      * @throws Exception
      * @return int
      */
-    public static function fromOr(int $value): int {
+    public static function fromObject(int $value): int {
         return $value; /*int*/
     }
 
@@ -37513,11 +37513,11 @@ class OrClass {
      * @throws Exception
      * @return int
      */
-    public function toOr(): int {
-        if (OrClass::validateOr($this->or))  {
-            return $this->or; /*int*/
+    public function toObject(): int {
+        if (ObjectClass::validateObject($this->object))  {
+            return $this->object; /*int*/
         }
-        throw new Exception('never get to this OrClass::or');
+        throw new Exception('never get to this ObjectClass::object');
     }
 
     /**
@@ -37525,7 +37525,7 @@ class OrClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateOr(int $value): bool {
+    public static function validateObject(int $value): bool {
         return true;
     }
 
@@ -37533,18 +37533,18 @@ class OrClass {
      * @throws Exception
      * @return int
      */
-    public function getOr(): int {
-        if (OrClass::validateOr($this->or))  {
-            return $this->or;
+    public function getObject(): int {
+        if (ObjectClass::validateObject($this->object))  {
+            return $this->object;
         }
-        throw new Exception('never get to getOr OrClass::or');
+        throw new Exception('never get to getObject ObjectClass::object');
     }
 
     /**
      * @return int
      */
-    public static function sampleOr(): int {
-        return 31; /*31:or*/
+    public static function sampleObject(): int {
+        return 31; /*31:object*/
     }
 
     /**
@@ -37552,7 +37552,7 @@ class OrClass {
      * @return bool
      */
     public function validate(): bool {
-        return OrClass::validateOr($this->or);
+        return ObjectClass::validateObject($this->object);
     }
 
     /**
@@ -37561,44 +37561,44 @@ class OrClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'or'} = $this->toOr();
+        $out->{'object'} = $this->toObject();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return OrClass
+     * @return ObjectClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): OrClass {
-        if (!property_exists($obj, 'or')) {
+    public static function from(stdClass $obj): ObjectClass {
+        if (!property_exists($obj, 'object')) {
             throw new Exception("Missing required property");
         }
-        return new OrClass(
-         OrClass::fromOr($obj->{'or'})
+        return new ObjectClass(
+         ObjectClass::fromObject($obj->{'object'})
         );
     }
 
     /**
-     * @return OrClass
+     * @return ObjectClass
      */
-    public static function sample(): OrClass {
-        return new OrClass(
-         OrClass::sampleOr()
+    public static function sample(): ObjectClass {
+        return new ObjectClass(
+         ObjectClass::sampleObject()
         );
     }
 }
 
-// This is an autogenerated file:OrEq
+// This is an autogenerated file:ObjectMapper
 
-class OrEq {
-    private int $orEq; // json:or_eq Required
+class ObjectMapper {
+    private int $objectMapper; // json:ObjectMapper Required
 
     /**
-     * @param int $orEq
+     * @param int $objectMapper
      */
-    public function __construct(int $orEq) {
-        $this->orEq = $orEq;
+    public function __construct(int $objectMapper) {
+        $this->objectMapper = $objectMapper;
     }
 
     /**
@@ -37606,7 +37606,7 @@ class OrEq {
      * @throws Exception
      * @return int
      */
-    public static function fromOrEq(int $value): int {
+    public static function fromObjectMapper(int $value): int {
         return $value; /*int*/
     }
 
@@ -37614,11 +37614,11 @@ class OrEq {
      * @throws Exception
      * @return int
      */
-    public function toOrEq(): int {
-        if (OrEq::validateOrEq($this->orEq))  {
-            return $this->orEq; /*int*/
+    public function toObjectMapper(): int {
+        if (ObjectMapper::validateObjectMapper($this->objectMapper))  {
+            return $this->objectMapper; /*int*/
         }
-        throw new Exception('never get to this OrEq::orEq');
+        throw new Exception('never get to this ObjectMapper::objectMapper');
     }
 
     /**
@@ -37626,7 +37626,7 @@ class OrEq {
      * @return bool
      * @throws Exception
      */
-    public static function validateOrEq(int $value): bool {
+    public static function validateObjectMapper(int $value): bool {
         return true;
     }
 
@@ -37634,18 +37634,18 @@ class OrEq {
      * @throws Exception
      * @return int
      */
-    public function getOrEq(): int {
-        if (OrEq::validateOrEq($this->orEq))  {
-            return $this->orEq;
+    public function getObjectMapper(): int {
+        if (ObjectMapper::validateObjectMapper($this->objectMapper))  {
+            return $this->objectMapper;
         }
-        throw new Exception('never get to getOrEq OrEq::orEq');
+        throw new Exception('never get to getObjectMapper ObjectMapper::objectMapper');
     }
 
     /**
      * @return int
      */
-    public static function sampleOrEq(): int {
-        return 31; /*31:orEq*/
+    public static function sampleObjectMapper(): int {
+        return 31; /*31:objectMapper*/
     }
 
     /**
@@ -37653,7 +37653,7 @@ class OrEq {
      * @return bool
      */
     public function validate(): bool {
-        return OrEq::validateOrEq($this->orEq);
+        return ObjectMapper::validateObjectMapper($this->objectMapper);
     }
 
     /**
@@ -37662,44 +37662,44 @@ class OrEq {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'or_eq'} = $this->toOrEq();
+        $out->{'ObjectMapper'} = $this->toObjectMapper();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return OrEq
+     * @return ObjectMapper
      * @throws Exception
      */
-    public static function from(stdClass $obj): OrEq {
-        if (!property_exists($obj, 'or_eq')) {
+    public static function from(stdClass $obj): ObjectMapper {
+        if (!property_exists($obj, 'ObjectMapper')) {
             throw new Exception("Missing required property");
         }
-        return new OrEq(
-         OrEq::fromOrEq($obj->{'or_eq'})
+        return new ObjectMapper(
+         ObjectMapper::fromObjectMapper($obj->{'ObjectMapper'})
         );
     }
 
     /**
-     * @return OrEq
+     * @return ObjectMapper
      */
-    public static function sample(): OrEq {
-        return new OrEq(
-         OrEq::sampleOrEq()
+    public static function sample(): ObjectMapper {
+        return new ObjectMapper(
+         ObjectMapper::sampleObjectMapper()
         );
     }
 }
 
-// This is an autogenerated file:Out
+// This is an autogenerated file:ObjectNode
 
-class Out {
-    private int $out; // json:out Required
+class ObjectNode {
+    private int $objectNode; // json:ObjectNode Required
 
     /**
-     * @param int $out
+     * @param int $objectNode
      */
-    public function __construct(int $out) {
-        $this->out = $out;
+    public function __construct(int $objectNode) {
+        $this->objectNode = $objectNode;
     }
 
     /**
@@ -37707,7 +37707,7 @@ class Out {
      * @throws Exception
      * @return int
      */
-    public static function fromOut(int $value): int {
+    public static function fromObjectNode(int $value): int {
         return $value; /*int*/
     }
 
@@ -37715,11 +37715,11 @@ class Out {
      * @throws Exception
      * @return int
      */
-    public function toOut(): int {
-        if (Out::validateOut($this->out))  {
-            return $this->out; /*int*/
+    public function toObjectNode(): int {
+        if (ObjectNode::validateObjectNode($this->objectNode))  {
+            return $this->objectNode; /*int*/
         }
-        throw new Exception('never get to this Out::out');
+        throw new Exception('never get to this ObjectNode::objectNode');
     }
 
     /**
@@ -37727,7 +37727,7 @@ class Out {
      * @return bool
      * @throws Exception
      */
-    public static function validateOut(int $value): bool {
+    public static function validateObjectNode(int $value): bool {
         return true;
     }
 
@@ -37735,18 +37735,18 @@ class Out {
      * @throws Exception
      * @return int
      */
-    public function getOut(): int {
-        if (Out::validateOut($this->out))  {
-            return $this->out;
+    public function getObjectNode(): int {
+        if (ObjectNode::validateObjectNode($this->objectNode))  {
+            return $this->objectNode;
         }
-        throw new Exception('never get to getOut Out::out');
+        throw new Exception('never get to getObjectNode ObjectNode::objectNode');
     }
 
     /**
      * @return int
      */
-    public static function sampleOut(): int {
-        return 31; /*31:out*/
+    public static function sampleObjectNode(): int {
+        return 31; /*31:objectNode*/
     }
 
     /**
@@ -37754,7 +37754,7 @@ class Out {
      * @return bool
      */
     public function validate(): bool {
-        return Out::validateOut($this->out);
+        return ObjectNode::validateObjectNode($this->objectNode);
     }
 
     /**
@@ -37763,44 +37763,44 @@ class Out {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'out'} = $this->toOut();
+        $out->{'ObjectNode'} = $this->toObjectNode();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Out
+     * @return ObjectNode
      * @throws Exception
      */
-    public static function from(stdClass $obj): Out {
-        if (!property_exists($obj, 'out')) {
+    public static function from(stdClass $obj): ObjectNode {
+        if (!property_exists($obj, 'ObjectNode')) {
             throw new Exception("Missing required property");
         }
-        return new Out(
-         Out::fromOut($obj->{'out'})
+        return new ObjectNode(
+         ObjectNode::fromObjectNode($obj->{'ObjectNode'})
         );
     }
 
     /**
-     * @return Out
+     * @return ObjectNode
      */
-    public static function sample(): Out {
-        return new Out(
-         Out::sampleOut()
+    public static function sample(): ObjectNode {
+        return new ObjectNode(
+         ObjectNode::sampleObjectNode()
         );
     }
 }
 
-// This is an autogenerated file:OverrideClass
+// This is an autogenerated file:Of
 
-class OverrideClass {
-    private int $override; // json:override Required
+class Of {
+    private int $of; // json:of Required
 
     /**
-     * @param int $override
+     * @param int $of
      */
-    public function __construct(int $override) {
-        $this->override = $override;
+    public function __construct(int $of) {
+        $this->of = $of;
     }
 
     /**
@@ -37808,7 +37808,7 @@ class OverrideClass {
      * @throws Exception
      * @return int
      */
-    public static function fromOverride(int $value): int {
+    public static function fromOf(int $value): int {
         return $value; /*int*/
     }
 
@@ -37816,11 +37816,11 @@ class OverrideClass {
      * @throws Exception
      * @return int
      */
-    public function toOverride(): int {
-        if (OverrideClass::validateOverride($this->override))  {
-            return $this->override; /*int*/
+    public function toOf(): int {
+        if (Of::validateOf($this->of))  {
+            return $this->of; /*int*/
         }
-        throw new Exception('never get to this OverrideClass::override');
+        throw new Exception('never get to this Of::of');
     }
 
     /**
@@ -37828,7 +37828,7 @@ class OverrideClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateOverride(int $value): bool {
+    public static function validateOf(int $value): bool {
         return true;
     }
 
@@ -37836,18 +37836,18 @@ class OverrideClass {
      * @throws Exception
      * @return int
      */
-    public function getOverride(): int {
-        if (OverrideClass::validateOverride($this->override))  {
-            return $this->override;
+    public function getOf(): int {
+        if (Of::validateOf($this->of))  {
+            return $this->of;
         }
-        throw new Exception('never get to getOverride OverrideClass::override');
+        throw new Exception('never get to getOf Of::of');
     }
 
     /**
      * @return int
      */
-    public static function sampleOverride(): int {
-        return 31; /*31:override*/
+    public static function sampleOf(): int {
+        return 31; /*31:of*/
     }
 
     /**
@@ -37855,7 +37855,7 @@ class OverrideClass {
      * @return bool
      */
     public function validate(): bool {
-        return OverrideClass::validateOverride($this->override);
+        return Of::validateOf($this->of);
     }
 
     /**
@@ -37864,44 +37864,44 @@ class OverrideClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'override'} = $this->toOverride();
+        $out->{'of'} = $this->toOf();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return OverrideClass
+     * @return Of
      * @throws Exception
      */
-    public static function from(stdClass $obj): OverrideClass {
-        if (!property_exists($obj, 'override')) {
+    public static function from(stdClass $obj): Of {
+        if (!property_exists($obj, 'of')) {
             throw new Exception("Missing required property");
         }
-        return new OverrideClass(
-         OverrideClass::fromOverride($obj->{'override'})
+        return new Of(
+         Of::fromOf($obj->{'of'})
         );
     }
 
     /**
-     * @return OverrideClass
+     * @return Of
      */
-    public static function sample(): OverrideClass {
-        return new OverrideClass(
-         OverrideClass::sampleOverride()
+    public static function sample(): Of {
+        return new Of(
+         Of::sampleOf()
         );
     }
 }
 
-// This is an autogenerated file:Package
+// This is an autogenerated file:Oneway
 
-class Package {
-    private int $package; // json:package Required
+class Oneway {
+    private int $oneway; // json:oneway Required
 
     /**
-     * @param int $package
+     * @param int $oneway
      */
-    public function __construct(int $package) {
-        $this->package = $package;
+    public function __construct(int $oneway) {
+        $this->oneway = $oneway;
     }
 
     /**
@@ -37909,7 +37909,7 @@ class Package {
      * @throws Exception
      * @return int
      */
-    public static function fromPackage(int $value): int {
+    public static function fromOneway(int $value): int {
         return $value; /*int*/
     }
 
@@ -37917,11 +37917,11 @@ class Package {
      * @throws Exception
      * @return int
      */
-    public function toPackage(): int {
-        if (Package::validatePackage($this->package))  {
-            return $this->package; /*int*/
+    public function toOneway(): int {
+        if (Oneway::validateOneway($this->oneway))  {
+            return $this->oneway; /*int*/
         }
-        throw new Exception('never get to this Package::package');
+        throw new Exception('never get to this Oneway::oneway');
     }
 
     /**
@@ -37929,7 +37929,7 @@ class Package {
      * @return bool
      * @throws Exception
      */
-    public static function validatePackage(int $value): bool {
+    public static function validateOneway(int $value): bool {
         return true;
     }
 
@@ -37937,18 +37937,18 @@ class Package {
      * @throws Exception
      * @return int
      */
-    public function getPackage(): int {
-        if (Package::validatePackage($this->package))  {
-            return $this->package;
+    public function getOneway(): int {
+        if (Oneway::validateOneway($this->oneway))  {
+            return $this->oneway;
         }
-        throw new Exception('never get to getPackage Package::package');
+        throw new Exception('never get to getOneway Oneway::oneway');
     }
 
     /**
      * @return int
      */
-    public static function samplePackage(): int {
-        return 31; /*31:package*/
+    public static function sampleOneway(): int {
+        return 31; /*31:oneway*/
     }
 
     /**
@@ -37956,7 +37956,7 @@ class Package {
      * @return bool
      */
     public function validate(): bool {
-        return Package::validatePackage($this->package);
+        return Oneway::validateOneway($this->oneway);
     }
 
     /**
@@ -37965,44 +37965,44 @@ class Package {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'package'} = $this->toPackage();
+        $out->{'oneway'} = $this->toOneway();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Package
+     * @return Oneway
      * @throws Exception
      */
-    public static function from(stdClass $obj): Package {
-        if (!property_exists($obj, 'package')) {
+    public static function from(stdClass $obj): Oneway {
+        if (!property_exists($obj, 'oneway')) {
             throw new Exception("Missing required property");
         }
-        return new Package(
-         Package::fromPackage($obj->{'package'})
+        return new Oneway(
+         Oneway::fromOneway($obj->{'oneway'})
         );
     }
 
     /**
-     * @return Package
+     * @return Oneway
      */
-    public static function sample(): Package {
-        return new Package(
-         Package::samplePackage()
+    public static function sample(): Oneway {
+        return new Oneway(
+         Oneway::sampleOneway()
         );
     }
 }
 
-// This is an autogenerated file:Params
+// This is an autogenerated file:Open
 
-class Params {
-    private int $params; // json:params Required
+class Open {
+    private int $open; // json:open Required
 
     /**
-     * @param int $params
+     * @param int $open
      */
-    public function __construct(int $params) {
-        $this->params = $params;
+    public function __construct(int $open) {
+        $this->open = $open;
     }
 
     /**
@@ -38010,7 +38010,7 @@ class Params {
      * @throws Exception
      * @return int
      */
-    public static function fromParams(int $value): int {
+    public static function fromOpen(int $value): int {
         return $value; /*int*/
     }
 
@@ -38018,11 +38018,11 @@ class Params {
      * @throws Exception
      * @return int
      */
-    public function toParams(): int {
-        if (Params::validateParams($this->params))  {
-            return $this->params; /*int*/
+    public function toOpen(): int {
+        if (Open::validateOpen($this->open))  {
+            return $this->open; /*int*/
         }
-        throw new Exception('never get to this Params::params');
+        throw new Exception('never get to this Open::open');
     }
 
     /**
@@ -38030,7 +38030,7 @@ class Params {
      * @return bool
      * @throws Exception
      */
-    public static function validateParams(int $value): bool {
+    public static function validateOpen(int $value): bool {
         return true;
     }
 
@@ -38038,18 +38038,18 @@ class Params {
      * @throws Exception
      * @return int
      */
-    public function getParams(): int {
-        if (Params::validateParams($this->params))  {
-            return $this->params;
+    public function getOpen(): int {
+        if (Open::validateOpen($this->open))  {
+            return $this->open;
         }
-        throw new Exception('never get to getParams Params::params');
+        throw new Exception('never get to getOpen Open::open');
     }
 
     /**
      * @return int
      */
-    public static function sampleParams(): int {
-        return 31; /*31:params*/
+    public static function sampleOpen(): int {
+        return 31; /*31:open*/
     }
 
     /**
@@ -38057,7 +38057,7 @@ class Params {
      * @return bool
      */
     public function validate(): bool {
-        return Params::validateParams($this->params);
+        return Open::validateOpen($this->open);
     }
 
     /**
@@ -38066,44 +38066,44 @@ class Params {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'params'} = $this->toParams();
+        $out->{'open'} = $this->toOpen();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Params
+     * @return Open
      * @throws Exception
      */
-    public static function from(stdClass $obj): Params {
-        if (!property_exists($obj, 'params')) {
+    public static function from(stdClass $obj): Open {
+        if (!property_exists($obj, 'open')) {
             throw new Exception("Missing required property");
         }
-        return new Params(
-         Params::fromParams($obj->{'params'})
+        return new Open(
+         Open::fromOpen($obj->{'open'})
         );
     }
 
     /**
-     * @return Params
+     * @return Open
      */
-    public static function sample(): Params {
-        return new Params(
-         Params::sampleParams()
+    public static function sample(): Open {
+        return new Open(
+         Open::sampleOpen()
         );
     }
 }
 
-// This is an autogenerated file:Pass
+// This is an autogenerated file:Operator
 
-class Pass {
-    private int $pass; // json:pass Required
+class Operator {
+    private int $operator; // json:operator Required
 
     /**
-     * @param int $pass
+     * @param int $operator
      */
-    public function __construct(int $pass) {
-        $this->pass = $pass;
+    public function __construct(int $operator) {
+        $this->operator = $operator;
     }
 
     /**
@@ -38111,7 +38111,7 @@ class Pass {
      * @throws Exception
      * @return int
      */
-    public static function fromPass(int $value): int {
+    public static function fromOperator(int $value): int {
         return $value; /*int*/
     }
 
@@ -38119,11 +38119,11 @@ class Pass {
      * @throws Exception
      * @return int
      */
-    public function toPass(): int {
-        if (Pass::validatePass($this->pass))  {
-            return $this->pass; /*int*/
+    public function toOperator(): int {
+        if (Operator::validateOperator($this->operator))  {
+            return $this->operator; /*int*/
         }
-        throw new Exception('never get to this Pass::pass');
+        throw new Exception('never get to this Operator::operator');
     }
 
     /**
@@ -38131,7 +38131,7 @@ class Pass {
      * @return bool
      * @throws Exception
      */
-    public static function validatePass(int $value): bool {
+    public static function validateOperator(int $value): bool {
         return true;
     }
 
@@ -38139,18 +38139,18 @@ class Pass {
      * @throws Exception
      * @return int
      */
-    public function getPass(): int {
-        if (Pass::validatePass($this->pass))  {
-            return $this->pass;
+    public function getOperator(): int {
+        if (Operator::validateOperator($this->operator))  {
+            return $this->operator;
         }
-        throw new Exception('never get to getPass Pass::pass');
+        throw new Exception('never get to getOperator Operator::operator');
     }
 
     /**
      * @return int
      */
-    public static function samplePass(): int {
-        return 31; /*31:pass*/
+    public static function sampleOperator(): int {
+        return 31; /*31:operator*/
     }
 
     /**
@@ -38158,7 +38158,7 @@ class Pass {
      * @return bool
      */
     public function validate(): bool {
-        return Pass::validatePass($this->pass);
+        return Operator::validateOperator($this->operator);
     }
 
     /**
@@ -38167,44 +38167,44 @@ class Pass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'pass'} = $this->toPass();
+        $out->{'operator'} = $this->toOperator();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Pass
+     * @return Operator
      * @throws Exception
      */
-    public static function from(stdClass $obj): Pass {
-        if (!property_exists($obj, 'pass')) {
+    public static function from(stdClass $obj): Operator {
+        if (!property_exists($obj, 'operator')) {
             throw new Exception("Missing required property");
         }
-        return new Pass(
-         Pass::fromPass($obj->{'pass'})
+        return new Operator(
+         Operator::fromOperator($obj->{'operator'})
         );
     }
 
     /**
-     * @return Pass
+     * @return Operator
      */
-    public static function sample(): Pass {
-        return new Pass(
-         Pass::samplePass()
+    public static function sample(): Operator {
+        return new Operator(
+         Operator::sampleOperator()
         );
     }
 }
 
-// This is an autogenerated file:Port
+// This is an autogenerated file:Optional
 
-class Port {
-    private int $port; // json:port Required
+class Optional {
+    private int $optional; // json:optional Required
 
     /**
-     * @param int $port
+     * @param int $optional
      */
-    public function __construct(int $port) {
-        $this->port = $port;
+    public function __construct(int $optional) {
+        $this->optional = $optional;
     }
 
     /**
@@ -38212,7 +38212,7 @@ class Port {
      * @throws Exception
      * @return int
      */
-    public static function fromPort(int $value): int {
+    public static function fromOptional(int $value): int {
         return $value; /*int*/
     }
 
@@ -38220,11 +38220,11 @@ class Port {
      * @throws Exception
      * @return int
      */
-    public function toPort(): int {
-        if (Port::validatePort($this->port))  {
-            return $this->port; /*int*/
+    public function toOptional(): int {
+        if (Optional::validateOptional($this->optional))  {
+            return $this->optional; /*int*/
         }
-        throw new Exception('never get to this Port::port');
+        throw new Exception('never get to this Optional::optional');
     }
 
     /**
@@ -38232,7 +38232,7 @@ class Port {
      * @return bool
      * @throws Exception
      */
-    public static function validatePort(int $value): bool {
+    public static function validateOptional(int $value): bool {
         return true;
     }
 
@@ -38240,18 +38240,18 @@ class Port {
      * @throws Exception
      * @return int
      */
-    public function getPort(): int {
-        if (Port::validatePort($this->port))  {
-            return $this->port;
+    public function getOptional(): int {
+        if (Optional::validateOptional($this->optional))  {
+            return $this->optional;
         }
-        throw new Exception('never get to getPort Port::port');
+        throw new Exception('never get to getOptional Optional::optional');
     }
 
     /**
      * @return int
      */
-    public static function samplePort(): int {
-        return 31; /*31:port*/
+    public static function sampleOptional(): int {
+        return 31; /*31:optional*/
     }
 
     /**
@@ -38259,7 +38259,7 @@ class Port {
      * @return bool
      */
     public function validate(): bool {
-        return Port::validatePort($this->port);
+        return Optional::validateOptional($this->optional);
     }
 
     /**
@@ -38268,44 +38268,44 @@ class Port {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'port'} = $this->toPort();
+        $out->{'optional'} = $this->toOptional();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Port
+     * @return Optional
      * @throws Exception
      */
-    public static function from(stdClass $obj): Port {
-        if (!property_exists($obj, 'port')) {
+    public static function from(stdClass $obj): Optional {
+        if (!property_exists($obj, 'optional')) {
             throw new Exception("Missing required property");
         }
-        return new Port(
-         Port::fromPort($obj->{'port'})
+        return new Optional(
+         Optional::fromOptional($obj->{'optional'})
         );
     }
 
     /**
-     * @return Port
+     * @return Optional
      */
-    public static function sample(): Port {
-        return new Port(
-         Port::samplePort()
+    public static function sample(): Optional {
+        return new Optional(
+         Optional::sampleOptional()
         );
     }
 }
 
-// This is an autogenerated file:Postfix
+// This is an autogenerated file:OrClass
 
-class Postfix {
-    private int $postfix; // json:postfix Required
+class OrClass {
+    private int $or; // json:or Required
 
     /**
-     * @param int $postfix
+     * @param int $or
      */
-    public function __construct(int $postfix) {
-        $this->postfix = $postfix;
+    public function __construct(int $or) {
+        $this->or = $or;
     }
 
     /**
@@ -38313,7 +38313,7 @@ class Postfix {
      * @throws Exception
      * @return int
      */
-    public static function fromPostfix(int $value): int {
+    public static function fromOr(int $value): int {
         return $value; /*int*/
     }
 
@@ -38321,11 +38321,11 @@ class Postfix {
      * @throws Exception
      * @return int
      */
-    public function toPostfix(): int {
-        if (Postfix::validatePostfix($this->postfix))  {
-            return $this->postfix; /*int*/
+    public function toOr(): int {
+        if (OrClass::validateOr($this->or))  {
+            return $this->or; /*int*/
         }
-        throw new Exception('never get to this Postfix::postfix');
+        throw new Exception('never get to this OrClass::or');
     }
 
     /**
@@ -38333,7 +38333,7 @@ class Postfix {
      * @return bool
      * @throws Exception
      */
-    public static function validatePostfix(int $value): bool {
+    public static function validateOr(int $value): bool {
         return true;
     }
 
@@ -38341,18 +38341,18 @@ class Postfix {
      * @throws Exception
      * @return int
      */
-    public function getPostfix(): int {
-        if (Postfix::validatePostfix($this->postfix))  {
-            return $this->postfix;
+    public function getOr(): int {
+        if (OrClass::validateOr($this->or))  {
+            return $this->or;
         }
-        throw new Exception('never get to getPostfix Postfix::postfix');
+        throw new Exception('never get to getOr OrClass::or');
     }
 
     /**
      * @return int
      */
-    public static function samplePostfix(): int {
-        return 31; /*31:postfix*/
+    public static function sampleOr(): int {
+        return 31; /*31:or*/
     }
 
     /**
@@ -38360,7 +38360,7 @@ class Postfix {
      * @return bool
      */
     public function validate(): bool {
-        return Postfix::validatePostfix($this->postfix);
+        return OrClass::validateOr($this->or);
     }
 
     /**
@@ -38369,44 +38369,44 @@ class Postfix {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'postfix'} = $this->toPostfix();
+        $out->{'or'} = $this->toOr();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Postfix
+     * @return OrClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): Postfix {
-        if (!property_exists($obj, 'postfix')) {
+    public static function from(stdClass $obj): OrClass {
+        if (!property_exists($obj, 'or')) {
             throw new Exception("Missing required property");
         }
-        return new Postfix(
-         Postfix::fromPostfix($obj->{'postfix'})
+        return new OrClass(
+         OrClass::fromOr($obj->{'or'})
         );
     }
 
     /**
-     * @return Postfix
+     * @return OrClass
      */
-    public static function sample(): Postfix {
-        return new Postfix(
-         Postfix::samplePostfix()
+    public static function sample(): OrClass {
+        return new OrClass(
+         OrClass::sampleOr()
         );
     }
 }
 
-// This is an autogenerated file:Precedence
+// This is an autogenerated file:OrEq
 
-class Precedence {
-    private int $precedence; // json:precedence Required
+class OrEq {
+    private int $orEq; // json:or_eq Required
 
     /**
-     * @param int $precedence
+     * @param int $orEq
      */
-    public function __construct(int $precedence) {
-        $this->precedence = $precedence;
+    public function __construct(int $orEq) {
+        $this->orEq = $orEq;
     }
 
     /**
@@ -38414,7 +38414,7 @@ class Precedence {
      * @throws Exception
      * @return int
      */
-    public static function fromPrecedence(int $value): int {
+    public static function fromOrEq(int $value): int {
         return $value; /*int*/
     }
 
@@ -38422,11 +38422,11 @@ class Precedence {
      * @throws Exception
      * @return int
      */
-    public function toPrecedence(): int {
-        if (Precedence::validatePrecedence($this->precedence))  {
-            return $this->precedence; /*int*/
+    public function toOrEq(): int {
+        if (OrEq::validateOrEq($this->orEq))  {
+            return $this->orEq; /*int*/
         }
-        throw new Exception('never get to this Precedence::precedence');
+        throw new Exception('never get to this OrEq::orEq');
     }
 
     /**
@@ -38434,7 +38434,7 @@ class Precedence {
      * @return bool
      * @throws Exception
      */
-    public static function validatePrecedence(int $value): bool {
+    public static function validateOrEq(int $value): bool {
         return true;
     }
 
@@ -38442,18 +38442,18 @@ class Precedence {
      * @throws Exception
      * @return int
      */
-    public function getPrecedence(): int {
-        if (Precedence::validatePrecedence($this->precedence))  {
-            return $this->precedence;
+    public function getOrEq(): int {
+        if (OrEq::validateOrEq($this->orEq))  {
+            return $this->orEq;
         }
-        throw new Exception('never get to getPrecedence Precedence::precedence');
+        throw new Exception('never get to getOrEq OrEq::orEq');
     }
 
     /**
      * @return int
      */
-    public static function samplePrecedence(): int {
-        return 31; /*31:precedence*/
+    public static function sampleOrEq(): int {
+        return 31; /*31:orEq*/
     }
 
     /**
@@ -38461,7 +38461,7 @@ class Precedence {
      * @return bool
      */
     public function validate(): bool {
-        return Precedence::validatePrecedence($this->precedence);
+        return OrEq::validateOrEq($this->orEq);
     }
 
     /**
@@ -38470,44 +38470,44 @@ class Precedence {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'precedence'} = $this->toPrecedence();
+        $out->{'or_eq'} = $this->toOrEq();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Precedence
+     * @return OrEq
      * @throws Exception
      */
-    public static function from(stdClass $obj): Precedence {
-        if (!property_exists($obj, 'precedence')) {
+    public static function from(stdClass $obj): OrEq {
+        if (!property_exists($obj, 'or_eq')) {
             throw new Exception("Missing required property");
         }
-        return new Precedence(
-         Precedence::fromPrecedence($obj->{'precedence'})
+        return new OrEq(
+         OrEq::fromOrEq($obj->{'or_eq'})
         );
     }
 
     /**
-     * @return Precedence
+     * @return OrEq
      */
-    public static function sample(): Precedence {
-        return new Precedence(
-         Precedence::samplePrecedence()
+    public static function sample(): OrEq {
+        return new OrEq(
+         OrEq::sampleOrEq()
         );
     }
 }
 
-// This is an autogenerated file:Prefix
+// This is an autogenerated file:Out
 
-class Prefix {
-    private int $prefix; // json:prefix Required
+class Out {
+    private int $out; // json:out Required
 
     /**
-     * @param int $prefix
+     * @param int $out
      */
-    public function __construct(int $prefix) {
-        $this->prefix = $prefix;
+    public function __construct(int $out) {
+        $this->out = $out;
     }
 
     /**
@@ -38515,7 +38515,7 @@ class Prefix {
      * @throws Exception
      * @return int
      */
-    public static function fromPrefix(int $value): int {
+    public static function fromOut(int $value): int {
         return $value; /*int*/
     }
 
@@ -38523,11 +38523,11 @@ class Prefix {
      * @throws Exception
      * @return int
      */
-    public function toPrefix(): int {
-        if (Prefix::validatePrefix($this->prefix))  {
-            return $this->prefix; /*int*/
+    public function toOut(): int {
+        if (Out::validateOut($this->out))  {
+            return $this->out; /*int*/
         }
-        throw new Exception('never get to this Prefix::prefix');
+        throw new Exception('never get to this Out::out');
     }
 
     /**
@@ -38535,7 +38535,7 @@ class Prefix {
      * @return bool
      * @throws Exception
      */
-    public static function validatePrefix(int $value): bool {
+    public static function validateOut(int $value): bool {
         return true;
     }
 
@@ -38543,18 +38543,18 @@ class Prefix {
      * @throws Exception
      * @return int
      */
-    public function getPrefix(): int {
-        if (Prefix::validatePrefix($this->prefix))  {
-            return $this->prefix;
+    public function getOut(): int {
+        if (Out::validateOut($this->out))  {
+            return $this->out;
         }
-        throw new Exception('never get to getPrefix Prefix::prefix');
+        throw new Exception('never get to getOut Out::out');
     }
 
     /**
      * @return int
      */
-    public static function samplePrefix(): int {
-        return 31; /*31:prefix*/
+    public static function sampleOut(): int {
+        return 31; /*31:out*/
     }
 
     /**
@@ -38562,7 +38562,7 @@ class Prefix {
      * @return bool
      */
     public function validate(): bool {
-        return Prefix::validatePrefix($this->prefix);
+        return Out::validateOut($this->out);
     }
 
     /**
@@ -38571,44 +38571,44 @@ class Prefix {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'prefix'} = $this->toPrefix();
+        $out->{'out'} = $this->toOut();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Prefix
+     * @return Out
      * @throws Exception
      */
-    public static function from(stdClass $obj): Prefix {
-        if (!property_exists($obj, 'prefix')) {
+    public static function from(stdClass $obj): Out {
+        if (!property_exists($obj, 'out')) {
             throw new Exception("Missing required property");
         }
-        return new Prefix(
-         Prefix::fromPrefix($obj->{'prefix'})
+        return new Out(
+         Out::fromOut($obj->{'out'})
         );
     }
 
     /**
-     * @return Prefix
+     * @return Out
      */
-    public static function sample(): Prefix {
-        return new Prefix(
-         Prefix::samplePrefix()
+    public static function sample(): Out {
+        return new Out(
+         Out::sampleOut()
         );
     }
 }
 
-// This is an autogenerated file:PrintClass
+// This is an autogenerated file:OverrideClass
 
-class PrintClass {
-    private int $print; // json:print Required
+class OverrideClass {
+    private int $override; // json:override Required
 
     /**
-     * @param int $print
+     * @param int $override
      */
-    public function __construct(int $print) {
-        $this->print = $print;
+    public function __construct(int $override) {
+        $this->override = $override;
     }
 
     /**
@@ -38616,7 +38616,7 @@ class PrintClass {
      * @throws Exception
      * @return int
      */
-    public static function fromPrint(int $value): int {
+    public static function fromOverride(int $value): int {
         return $value; /*int*/
     }
 
@@ -38624,11 +38624,11 @@ class PrintClass {
      * @throws Exception
      * @return int
      */
-    public function toPrint(): int {
-        if (PrintClass::validatePrint($this->print))  {
-            return $this->print; /*int*/
+    public function toOverride(): int {
+        if (OverrideClass::validateOverride($this->override))  {
+            return $this->override; /*int*/
         }
-        throw new Exception('never get to this PrintClass::print');
+        throw new Exception('never get to this OverrideClass::override');
     }
 
     /**
@@ -38636,7 +38636,7 @@ class PrintClass {
      * @return bool
      * @throws Exception
      */
-    public static function validatePrint(int $value): bool {
+    public static function validateOverride(int $value): bool {
         return true;
     }
 
@@ -38644,18 +38644,18 @@ class PrintClass {
      * @throws Exception
      * @return int
      */
-    public function getPrint(): int {
-        if (PrintClass::validatePrint($this->print))  {
-            return $this->print;
+    public function getOverride(): int {
+        if (OverrideClass::validateOverride($this->override))  {
+            return $this->override;
         }
-        throw new Exception('never get to getPrint PrintClass::print');
+        throw new Exception('never get to getOverride OverrideClass::override');
     }
 
     /**
      * @return int
      */
-    public static function samplePrint(): int {
-        return 31; /*31:print*/
+    public static function sampleOverride(): int {
+        return 31; /*31:override*/
     }
 
     /**
@@ -38663,7 +38663,7 @@ class PrintClass {
      * @return bool
      */
     public function validate(): bool {
-        return PrintClass::validatePrint($this->print);
+        return OverrideClass::validateOverride($this->override);
     }
 
     /**
@@ -38672,44 +38672,44 @@ class PrintClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'print'} = $this->toPrint();
+        $out->{'override'} = $this->toOverride();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return PrintClass
+     * @return OverrideClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): PrintClass {
-        if (!property_exists($obj, 'print')) {
+    public static function from(stdClass $obj): OverrideClass {
+        if (!property_exists($obj, 'override')) {
             throw new Exception("Missing required property");
         }
-        return new PrintClass(
-         PrintClass::fromPrint($obj->{'print'})
+        return new OverrideClass(
+         OverrideClass::fromOverride($obj->{'override'})
         );
     }
 
     /**
-     * @return PrintClass
+     * @return OverrideClass
      */
-    public static function sample(): PrintClass {
-        return new PrintClass(
-         PrintClass::samplePrint()
+    public static function sample(): OverrideClass {
+        return new OverrideClass(
+         OverrideClass::sampleOverride()
         );
     }
 }
 
-// This is an autogenerated file:PrintMembers
+// This is an autogenerated file:Package
 
-class PrintMembers {
-    private int $printMembers; // json:printMembers Required
+class Package {
+    private int $package; // json:package Required
 
     /**
-     * @param int $printMembers
+     * @param int $package
      */
-    public function __construct(int $printMembers) {
-        $this->printMembers = $printMembers;
+    public function __construct(int $package) {
+        $this->package = $package;
     }
 
     /**
@@ -38717,7 +38717,7 @@ class PrintMembers {
      * @throws Exception
      * @return int
      */
-    public static function fromPrintMembers(int $value): int {
+    public static function fromPackage(int $value): int {
         return $value; /*int*/
     }
 
@@ -38725,11 +38725,11 @@ class PrintMembers {
      * @throws Exception
      * @return int
      */
-    public function toPrintMembers(): int {
-        if (PrintMembers::validatePrintMembers($this->printMembers))  {
-            return $this->printMembers; /*int*/
+    public function toPackage(): int {
+        if (Package::validatePackage($this->package))  {
+            return $this->package; /*int*/
         }
-        throw new Exception('never get to this PrintMembers::printMembers');
+        throw new Exception('never get to this Package::package');
     }
 
     /**
@@ -38737,7 +38737,7 @@ class PrintMembers {
      * @return bool
      * @throws Exception
      */
-    public static function validatePrintMembers(int $value): bool {
+    public static function validatePackage(int $value): bool {
         return true;
     }
 
@@ -38745,18 +38745,18 @@ class PrintMembers {
      * @throws Exception
      * @return int
      */
-    public function getPrintMembers(): int {
-        if (PrintMembers::validatePrintMembers($this->printMembers))  {
-            return $this->printMembers;
+    public function getPackage(): int {
+        if (Package::validatePackage($this->package))  {
+            return $this->package;
         }
-        throw new Exception('never get to getPrintMembers PrintMembers::printMembers');
+        throw new Exception('never get to getPackage Package::package');
     }
 
     /**
      * @return int
      */
-    public static function samplePrintMembers(): int {
-        return 31; /*31:printMembers*/
+    public static function samplePackage(): int {
+        return 31; /*31:package*/
     }
 
     /**
@@ -38764,7 +38764,7 @@ class PrintMembers {
      * @return bool
      */
     public function validate(): bool {
-        return PrintMembers::validatePrintMembers($this->printMembers);
+        return Package::validatePackage($this->package);
     }
 
     /**
@@ -38773,44 +38773,44 @@ class PrintMembers {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'printMembers'} = $this->toPrintMembers();
+        $out->{'package'} = $this->toPackage();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return PrintMembers
+     * @return Package
      * @throws Exception
      */
-    public static function from(stdClass $obj): PrintMembers {
-        if (!property_exists($obj, 'printMembers')) {
+    public static function from(stdClass $obj): Package {
+        if (!property_exists($obj, 'package')) {
             throw new Exception("Missing required property");
         }
-        return new PrintMembers(
-         PrintMembers::fromPrintMembers($obj->{'printMembers'})
+        return new Package(
+         Package::fromPackage($obj->{'package'})
         );
     }
 
     /**
-     * @return PrintMembers
+     * @return Package
      */
-    public static function sample(): PrintMembers {
-        return new PrintMembers(
-         PrintMembers::samplePrintMembers()
+    public static function sample(): Package {
+        return new Package(
+         Package::samplePackage()
         );
     }
 }
 
-// This is an autogenerated file:Printf
+// This is an autogenerated file:Params
 
-class Printf {
-    private int $printf; // json:printf Required
+class Params {
+    private int $params; // json:params Required
 
     /**
-     * @param int $printf
+     * @param int $params
      */
-    public function __construct(int $printf) {
-        $this->printf = $printf;
+    public function __construct(int $params) {
+        $this->params = $params;
     }
 
     /**
@@ -38818,7 +38818,7 @@ class Printf {
      * @throws Exception
      * @return int
      */
-    public static function fromPrintf(int $value): int {
+    public static function fromParams(int $value): int {
         return $value; /*int*/
     }
 
@@ -38826,11 +38826,11 @@ class Printf {
      * @throws Exception
      * @return int
      */
-    public function toPrintf(): int {
-        if (Printf::validatePrintf($this->printf))  {
-            return $this->printf; /*int*/
+    public function toParams(): int {
+        if (Params::validateParams($this->params))  {
+            return $this->params; /*int*/
         }
-        throw new Exception('never get to this Printf::printf');
+        throw new Exception('never get to this Params::params');
     }
 
     /**
@@ -38838,7 +38838,7 @@ class Printf {
      * @return bool
      * @throws Exception
      */
-    public static function validatePrintf(int $value): bool {
+    public static function validateParams(int $value): bool {
         return true;
     }
 
@@ -38846,18 +38846,18 @@ class Printf {
      * @throws Exception
      * @return int
      */
-    public function getPrintf(): int {
-        if (Printf::validatePrintf($this->printf))  {
-            return $this->printf;
+    public function getParams(): int {
+        if (Params::validateParams($this->params))  {
+            return $this->params;
         }
-        throw new Exception('never get to getPrintf Printf::printf');
+        throw new Exception('never get to getParams Params::params');
     }
 
     /**
      * @return int
      */
-    public static function samplePrintf(): int {
-        return 31; /*31:printf*/
+    public static function sampleParams(): int {
+        return 31; /*31:params*/
     }
 
     /**
@@ -38865,7 +38865,7 @@ class Printf {
      * @return bool
      */
     public function validate(): bool {
-        return Printf::validatePrintf($this->printf);
+        return Params::validateParams($this->params);
     }
 
     /**
@@ -38874,44 +38874,44 @@ class Printf {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'printf'} = $this->toPrintf();
+        $out->{'params'} = $this->toParams();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Printf
+     * @return Params
      * @throws Exception
      */
-    public static function from(stdClass $obj): Printf {
-        if (!property_exists($obj, 'printf')) {
+    public static function from(stdClass $obj): Params {
+        if (!property_exists($obj, 'params')) {
             throw new Exception("Missing required property");
         }
-        return new Printf(
-         Printf::fromPrintf($obj->{'printf'})
+        return new Params(
+         Params::fromParams($obj->{'params'})
         );
     }
 
     /**
-     * @return Printf
+     * @return Params
      */
-    public static function sample(): Printf {
-        return new Printf(
-         Printf::samplePrintf()
+    public static function sample(): Params {
+        return new Params(
+         Params::sampleParams()
         );
     }
 }
 
-// This is an autogenerated file:PrivateClass
+// This is an autogenerated file:Pass
 
-class PrivateClass {
-    private int $private; // json:private Required
+class Pass {
+    private int $pass; // json:pass Required
 
     /**
-     * @param int $private
+     * @param int $pass
      */
-    public function __construct(int $private) {
-        $this->private = $private;
+    public function __construct(int $pass) {
+        $this->pass = $pass;
     }
 
     /**
@@ -38919,7 +38919,7 @@ class PrivateClass {
      * @throws Exception
      * @return int
      */
-    public static function fromPrivate(int $value): int {
+    public static function fromPass(int $value): int {
         return $value; /*int*/
     }
 
@@ -38927,11 +38927,11 @@ class PrivateClass {
      * @throws Exception
      * @return int
      */
-    public function toPrivate(): int {
-        if (PrivateClass::validatePrivate($this->private))  {
-            return $this->private; /*int*/
+    public function toPass(): int {
+        if (Pass::validatePass($this->pass))  {
+            return $this->pass; /*int*/
         }
-        throw new Exception('never get to this PrivateClass::private');
+        throw new Exception('never get to this Pass::pass');
     }
 
     /**
@@ -38939,7 +38939,7 @@ class PrivateClass {
      * @return bool
      * @throws Exception
      */
-    public static function validatePrivate(int $value): bool {
+    public static function validatePass(int $value): bool {
         return true;
     }
 
@@ -38947,18 +38947,18 @@ class PrivateClass {
      * @throws Exception
      * @return int
      */
-    public function getPrivate(): int {
-        if (PrivateClass::validatePrivate($this->private))  {
-            return $this->private;
+    public function getPass(): int {
+        if (Pass::validatePass($this->pass))  {
+            return $this->pass;
         }
-        throw new Exception('never get to getPrivate PrivateClass::private');
+        throw new Exception('never get to getPass Pass::pass');
     }
 
     /**
      * @return int
      */
-    public static function samplePrivate(): int {
-        return 31; /*31:private*/
+    public static function samplePass(): int {
+        return 31; /*31:pass*/
     }
 
     /**
@@ -38966,7 +38966,7 @@ class PrivateClass {
      * @return bool
      */
     public function validate(): bool {
-        return PrivateClass::validatePrivate($this->private);
+        return Pass::validatePass($this->pass);
     }
 
     /**
@@ -38975,44 +38975,44 @@ class PrivateClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'private'} = $this->toPrivate();
+        $out->{'pass'} = $this->toPass();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return PrivateClass
+     * @return Pass
      * @throws Exception
      */
-    public static function from(stdClass $obj): PrivateClass {
-        if (!property_exists($obj, 'private')) {
+    public static function from(stdClass $obj): Pass {
+        if (!property_exists($obj, 'pass')) {
             throw new Exception("Missing required property");
         }
-        return new PrivateClass(
-         PrivateClass::fromPrivate($obj->{'private'})
+        return new Pass(
+         Pass::fromPass($obj->{'pass'})
         );
     }
 
     /**
-     * @return PrivateClass
+     * @return Pass
      */
-    public static function sample(): PrivateClass {
-        return new PrivateClass(
-         PrivateClass::samplePrivate()
+    public static function sample(): Pass {
+        return new Pass(
+         Pass::samplePass()
         );
     }
 }
 
-// This is an autogenerated file:ProtectedClass
+// This is an autogenerated file:Port
 
-class ProtectedClass {
-    private int $protected; // json:protected Required
+class Port {
+    private int $port; // json:port Required
 
     /**
-     * @param int $protected
+     * @param int $port
      */
-    public function __construct(int $protected) {
-        $this->protected = $protected;
+    public function __construct(int $port) {
+        $this->port = $port;
     }
 
     /**
@@ -39020,7 +39020,7 @@ class ProtectedClass {
      * @throws Exception
      * @return int
      */
-    public static function fromProtected(int $value): int {
+    public static function fromPort(int $value): int {
         return $value; /*int*/
     }
 
@@ -39028,11 +39028,11 @@ class ProtectedClass {
      * @throws Exception
      * @return int
      */
-    public function toProtected(): int {
-        if (ProtectedClass::validateProtected($this->protected))  {
-            return $this->protected; /*int*/
+    public function toPort(): int {
+        if (Port::validatePort($this->port))  {
+            return $this->port; /*int*/
         }
-        throw new Exception('never get to this ProtectedClass::protected');
+        throw new Exception('never get to this Port::port');
     }
 
     /**
@@ -39040,7 +39040,7 @@ class ProtectedClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateProtected(int $value): bool {
+    public static function validatePort(int $value): bool {
         return true;
     }
 
@@ -39048,18 +39048,18 @@ class ProtectedClass {
      * @throws Exception
      * @return int
      */
-    public function getProtected(): int {
-        if (ProtectedClass::validateProtected($this->protected))  {
-            return $this->protected;
+    public function getPort(): int {
+        if (Port::validatePort($this->port))  {
+            return $this->port;
         }
-        throw new Exception('never get to getProtected ProtectedClass::protected');
+        throw new Exception('never get to getPort Port::port');
     }
 
     /**
      * @return int
      */
-    public static function sampleProtected(): int {
-        return 31; /*31:protected*/
+    public static function samplePort(): int {
+        return 31; /*31:port*/
     }
 
     /**
@@ -39067,7 +39067,7 @@ class ProtectedClass {
      * @return bool
      */
     public function validate(): bool {
-        return ProtectedClass::validateProtected($this->protected);
+        return Port::validatePort($this->port);
     }
 
     /**
@@ -39076,44 +39076,44 @@ class ProtectedClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'protected'} = $this->toProtected();
+        $out->{'port'} = $this->toPort();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return ProtectedClass
+     * @return Port
      * @throws Exception
      */
-    public static function from(stdClass $obj): ProtectedClass {
-        if (!property_exists($obj, 'protected')) {
+    public static function from(stdClass $obj): Port {
+        if (!property_exists($obj, 'port')) {
             throw new Exception("Missing required property");
         }
-        return new ProtectedClass(
-         ProtectedClass::fromProtected($obj->{'protected'})
+        return new Port(
+         Port::fromPort($obj->{'port'})
         );
     }
 
     /**
-     * @return ProtectedClass
+     * @return Port
      */
-    public static function sample(): ProtectedClass {
-        return new ProtectedClass(
-         ProtectedClass::sampleProtected()
+    public static function sample(): Port {
+        return new Port(
+         Port::samplePort()
         );
     }
 }
 
-// This is an autogenerated file:Protocol
+// This is an autogenerated file:Postfix
 
-class Protocol {
-    private int $protocol; // json:Protocol Required
+class Postfix {
+    private int $postfix; // json:postfix Required
 
     /**
-     * @param int $protocol
+     * @param int $postfix
      */
-    public function __construct(int $protocol) {
-        $this->protocol = $protocol;
+    public function __construct(int $postfix) {
+        $this->postfix = $postfix;
     }
 
     /**
@@ -39121,7 +39121,7 @@ class Protocol {
      * @throws Exception
      * @return int
      */
-    public static function fromProtocol(int $value): int {
+    public static function fromPostfix(int $value): int {
         return $value; /*int*/
     }
 
@@ -39129,11 +39129,11 @@ class Protocol {
      * @throws Exception
      * @return int
      */
-    public function toProtocol(): int {
-        if (Protocol::validateProtocol($this->protocol))  {
-            return $this->protocol; /*int*/
+    public function toPostfix(): int {
+        if (Postfix::validatePostfix($this->postfix))  {
+            return $this->postfix; /*int*/
         }
-        throw new Exception('never get to this Protocol::protocol');
+        throw new Exception('never get to this Postfix::postfix');
     }
 
     /**
@@ -39141,7 +39141,7 @@ class Protocol {
      * @return bool
      * @throws Exception
      */
-    public static function validateProtocol(int $value): bool {
+    public static function validatePostfix(int $value): bool {
         return true;
     }
 
@@ -39149,18 +39149,18 @@ class Protocol {
      * @throws Exception
      * @return int
      */
-    public function getProtocol(): int {
-        if (Protocol::validateProtocol($this->protocol))  {
-            return $this->protocol;
+    public function getPostfix(): int {
+        if (Postfix::validatePostfix($this->postfix))  {
+            return $this->postfix;
         }
-        throw new Exception('never get to getProtocol Protocol::protocol');
+        throw new Exception('never get to getPostfix Postfix::postfix');
     }
 
     /**
      * @return int
      */
-    public static function sampleProtocol(): int {
-        return 31; /*31:protocol*/
+    public static function samplePostfix(): int {
+        return 31; /*31:postfix*/
     }
 
     /**
@@ -39168,7 +39168,7 @@ class Protocol {
      * @return bool
      */
     public function validate(): bool {
-        return Protocol::validateProtocol($this->protocol);
+        return Postfix::validatePostfix($this->postfix);
     }
 
     /**
@@ -39177,44 +39177,44 @@ class Protocol {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'Protocol'} = $this->toProtocol();
+        $out->{'postfix'} = $this->toPostfix();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Protocol
+     * @return Postfix
      * @throws Exception
      */
-    public static function from(stdClass $obj): Protocol {
-        if (!property_exists($obj, 'Protocol')) {
+    public static function from(stdClass $obj): Postfix {
+        if (!property_exists($obj, 'postfix')) {
             throw new Exception("Missing required property");
         }
-        return new Protocol(
-         Protocol::fromProtocol($obj->{'Protocol'})
+        return new Postfix(
+         Postfix::fromPostfix($obj->{'postfix'})
         );
     }
 
     /**
-     * @return Protocol
+     * @return Postfix
      */
-    public static function sample(): Protocol {
-        return new Protocol(
-         Protocol::sampleProtocol()
+    public static function sample(): Postfix {
+        return new Postfix(
+         Postfix::samplePostfix()
         );
     }
 }
 
-// This is an autogenerated file:PublicClass
+// This is an autogenerated file:Precedence
 
-class PublicClass {
-    private int $public; // json:public Required
+class Precedence {
+    private int $precedence; // json:precedence Required
 
     /**
-     * @param int $public
+     * @param int $precedence
      */
-    public function __construct(int $public) {
-        $this->public = $public;
+    public function __construct(int $precedence) {
+        $this->precedence = $precedence;
     }
 
     /**
@@ -39222,7 +39222,7 @@ class PublicClass {
      * @throws Exception
      * @return int
      */
-    public static function fromPublic(int $value): int {
+    public static function fromPrecedence(int $value): int {
         return $value; /*int*/
     }
 
@@ -39230,11 +39230,11 @@ class PublicClass {
      * @throws Exception
      * @return int
      */
-    public function toPublic(): int {
-        if (PublicClass::validatePublic($this->public))  {
-            return $this->public; /*int*/
+    public function toPrecedence(): int {
+        if (Precedence::validatePrecedence($this->precedence))  {
+            return $this->precedence; /*int*/
         }
-        throw new Exception('never get to this PublicClass::public');
+        throw new Exception('never get to this Precedence::precedence');
     }
 
     /**
@@ -39242,7 +39242,7 @@ class PublicClass {
      * @return bool
      * @throws Exception
      */
-    public static function validatePublic(int $value): bool {
+    public static function validatePrecedence(int $value): bool {
         return true;
     }
 
@@ -39250,18 +39250,18 @@ class PublicClass {
      * @throws Exception
      * @return int
      */
-    public function getPublic(): int {
-        if (PublicClass::validatePublic($this->public))  {
-            return $this->public;
+    public function getPrecedence(): int {
+        if (Precedence::validatePrecedence($this->precedence))  {
+            return $this->precedence;
         }
-        throw new Exception('never get to getPublic PublicClass::public');
+        throw new Exception('never get to getPrecedence Precedence::precedence');
     }
 
     /**
      * @return int
      */
-    public static function samplePublic(): int {
-        return 31; /*31:public*/
+    public static function samplePrecedence(): int {
+        return 31; /*31:precedence*/
     }
 
     /**
@@ -39269,7 +39269,7 @@ class PublicClass {
      * @return bool
      */
     public function validate(): bool {
-        return PublicClass::validatePublic($this->public);
+        return Precedence::validatePrecedence($this->precedence);
     }
 
     /**
@@ -39278,44 +39278,44 @@ class PublicClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'public'} = $this->toPublic();
+        $out->{'precedence'} = $this->toPrecedence();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return PublicClass
+     * @return Precedence
      * @throws Exception
      */
-    public static function from(stdClass $obj): PublicClass {
-        if (!property_exists($obj, 'public')) {
+    public static function from(stdClass $obj): Precedence {
+        if (!property_exists($obj, 'precedence')) {
             throw new Exception("Missing required property");
         }
-        return new PublicClass(
-         PublicClass::fromPublic($obj->{'public'})
+        return new Precedence(
+         Precedence::fromPrecedence($obj->{'precedence'})
         );
     }
 
     /**
-     * @return PublicClass
+     * @return Precedence
      */
-    public static function sample(): PublicClass {
-        return new PublicClass(
-         PublicClass::samplePublic()
+    public static function sample(): Precedence {
+        return new Precedence(
+         Precedence::samplePrecedence()
         );
     }
 }
 
-// This is an autogenerated file:Quicktype
+// This is an autogenerated file:Prefix
 
-class Quicktype {
-    private int $quicktype; // json:quicktype Required
+class Prefix {
+    private int $prefix; // json:prefix Required
 
     /**
-     * @param int $quicktype
+     * @param int $prefix
      */
-    public function __construct(int $quicktype) {
-        $this->quicktype = $quicktype;
+    public function __construct(int $prefix) {
+        $this->prefix = $prefix;
     }
 
     /**
@@ -39323,7 +39323,7 @@ class Quicktype {
      * @throws Exception
      * @return int
      */
-    public static function fromQuicktype(int $value): int {
+    public static function fromPrefix(int $value): int {
         return $value; /*int*/
     }
 
@@ -39331,11 +39331,11 @@ class Quicktype {
      * @throws Exception
      * @return int
      */
-    public function toQuicktype(): int {
-        if (Quicktype::validateQuicktype($this->quicktype))  {
-            return $this->quicktype; /*int*/
+    public function toPrefix(): int {
+        if (Prefix::validatePrefix($this->prefix))  {
+            return $this->prefix; /*int*/
         }
-        throw new Exception('never get to this Quicktype::quicktype');
+        throw new Exception('never get to this Prefix::prefix');
     }
 
     /**
@@ -39343,7 +39343,7 @@ class Quicktype {
      * @return bool
      * @throws Exception
      */
-    public static function validateQuicktype(int $value): bool {
+    public static function validatePrefix(int $value): bool {
         return true;
     }
 
@@ -39351,18 +39351,18 @@ class Quicktype {
      * @throws Exception
      * @return int
      */
-    public function getQuicktype(): int {
-        if (Quicktype::validateQuicktype($this->quicktype))  {
-            return $this->quicktype;
+    public function getPrefix(): int {
+        if (Prefix::validatePrefix($this->prefix))  {
+            return $this->prefix;
         }
-        throw new Exception('never get to getQuicktype Quicktype::quicktype');
+        throw new Exception('never get to getPrefix Prefix::prefix');
     }
 
     /**
      * @return int
      */
-    public static function sampleQuicktype(): int {
-        return 31; /*31:quicktype*/
+    public static function samplePrefix(): int {
+        return 31; /*31:prefix*/
     }
 
     /**
@@ -39370,7 +39370,7 @@ class Quicktype {
      * @return bool
      */
     public function validate(): bool {
-        return Quicktype::validateQuicktype($this->quicktype);
+        return Prefix::validatePrefix($this->prefix);
     }
 
     /**
@@ -39379,44 +39379,44 @@ class Quicktype {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'quicktype'} = $this->toQuicktype();
+        $out->{'prefix'} = $this->toPrefix();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Quicktype
+     * @return Prefix
      * @throws Exception
      */
-    public static function from(stdClass $obj): Quicktype {
-        if (!property_exists($obj, 'quicktype')) {
+    public static function from(stdClass $obj): Prefix {
+        if (!property_exists($obj, 'prefix')) {
             throw new Exception("Missing required property");
         }
-        return new Quicktype(
-         Quicktype::fromQuicktype($obj->{'quicktype'})
+        return new Prefix(
+         Prefix::fromPrefix($obj->{'prefix'})
         );
     }
 
     /**
-     * @return Quicktype
+     * @return Prefix
      */
-    public static function sample(): Quicktype {
-        return new Quicktype(
-         Quicktype::sampleQuicktype()
+    public static function sample(): Prefix {
+        return new Prefix(
+         Prefix::samplePrefix()
         );
     }
 }
 
-// This is an autogenerated file:Raise
+// This is an autogenerated file:PrintClass
 
-class Raise {
-    private int $raise; // json:raise Required
+class PrintClass {
+    private int $print; // json:print Required
 
     /**
-     * @param int $raise
+     * @param int $print
      */
-    public function __construct(int $raise) {
-        $this->raise = $raise;
+    public function __construct(int $print) {
+        $this->print = $print;
     }
 
     /**
@@ -39424,7 +39424,7 @@ class Raise {
      * @throws Exception
      * @return int
      */
-    public static function fromRaise(int $value): int {
+    public static function fromPrint(int $value): int {
         return $value; /*int*/
     }
 
@@ -39432,11 +39432,11 @@ class Raise {
      * @throws Exception
      * @return int
      */
-    public function toRaise(): int {
-        if (Raise::validateRaise($this->raise))  {
-            return $this->raise; /*int*/
+    public function toPrint(): int {
+        if (PrintClass::validatePrint($this->print))  {
+            return $this->print; /*int*/
         }
-        throw new Exception('never get to this Raise::raise');
+        throw new Exception('never get to this PrintClass::print');
     }
 
     /**
@@ -39444,7 +39444,7 @@ class Raise {
      * @return bool
      * @throws Exception
      */
-    public static function validateRaise(int $value): bool {
+    public static function validatePrint(int $value): bool {
         return true;
     }
 
@@ -39452,18 +39452,18 @@ class Raise {
      * @throws Exception
      * @return int
      */
-    public function getRaise(): int {
-        if (Raise::validateRaise($this->raise))  {
-            return $this->raise;
+    public function getPrint(): int {
+        if (PrintClass::validatePrint($this->print))  {
+            return $this->print;
         }
-        throw new Exception('never get to getRaise Raise::raise');
+        throw new Exception('never get to getPrint PrintClass::print');
     }
 
     /**
      * @return int
      */
-    public static function sampleRaise(): int {
-        return 31; /*31:raise*/
+    public static function samplePrint(): int {
+        return 31; /*31:print*/
     }
 
     /**
@@ -39471,7 +39471,7 @@ class Raise {
      * @return bool
      */
     public function validate(): bool {
-        return Raise::validateRaise($this->raise);
+        return PrintClass::validatePrint($this->print);
     }
 
     /**
@@ -39480,44 +39480,44 @@ class Raise {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'raise'} = $this->toRaise();
+        $out->{'print'} = $this->toPrint();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Raise
+     * @return PrintClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): Raise {
-        if (!property_exists($obj, 'raise')) {
+    public static function from(stdClass $obj): PrintClass {
+        if (!property_exists($obj, 'print')) {
             throw new Exception("Missing required property");
         }
-        return new Raise(
-         Raise::fromRaise($obj->{'raise'})
+        return new PrintClass(
+         PrintClass::fromPrint($obj->{'print'})
         );
     }
 
     /**
-     * @return Raise
+     * @return PrintClass
      */
-    public static function sample(): Raise {
-        return new Raise(
-         Raise::sampleRaise()
+    public static function sample(): PrintClass {
+        return new PrintClass(
+         PrintClass::samplePrint()
         );
     }
 }
 
-// This is an autogenerated file:Range
+// This is an autogenerated file:PrintMembers
 
-class Range {
-    private int $range; // json:range Required
+class PrintMembers {
+    private int $printMembers; // json:printMembers Required
 
     /**
-     * @param int $range
+     * @param int $printMembers
      */
-    public function __construct(int $range) {
-        $this->range = $range;
+    public function __construct(int $printMembers) {
+        $this->printMembers = $printMembers;
     }
 
     /**
@@ -39525,7 +39525,7 @@ class Range {
      * @throws Exception
      * @return int
      */
-    public static function fromRange(int $value): int {
+    public static function fromPrintMembers(int $value): int {
         return $value; /*int*/
     }
 
@@ -39533,11 +39533,11 @@ class Range {
      * @throws Exception
      * @return int
      */
-    public function toRange(): int {
-        if (Range::validateRange($this->range))  {
-            return $this->range; /*int*/
+    public function toPrintMembers(): int {
+        if (PrintMembers::validatePrintMembers($this->printMembers))  {
+            return $this->printMembers; /*int*/
         }
-        throw new Exception('never get to this Range::range');
+        throw new Exception('never get to this PrintMembers::printMembers');
     }
 
     /**
@@ -39545,7 +39545,7 @@ class Range {
      * @return bool
      * @throws Exception
      */
-    public static function validateRange(int $value): bool {
+    public static function validatePrintMembers(int $value): bool {
         return true;
     }
 
@@ -39553,18 +39553,18 @@ class Range {
      * @throws Exception
      * @return int
      */
-    public function getRange(): int {
-        if (Range::validateRange($this->range))  {
-            return $this->range;
+    public function getPrintMembers(): int {
+        if (PrintMembers::validatePrintMembers($this->printMembers))  {
+            return $this->printMembers;
         }
-        throw new Exception('never get to getRange Range::range');
+        throw new Exception('never get to getPrintMembers PrintMembers::printMembers');
     }
 
     /**
      * @return int
      */
-    public static function sampleRange(): int {
-        return 31; /*31:range*/
+    public static function samplePrintMembers(): int {
+        return 31; /*31:printMembers*/
     }
 
     /**
@@ -39572,7 +39572,7 @@ class Range {
      * @return bool
      */
     public function validate(): bool {
-        return Range::validateRange($this->range);
+        return PrintMembers::validatePrintMembers($this->printMembers);
     }
 
     /**
@@ -39581,44 +39581,44 @@ class Range {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'range'} = $this->toRange();
+        $out->{'printMembers'} = $this->toPrintMembers();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Range
+     * @return PrintMembers
      * @throws Exception
      */
-    public static function from(stdClass $obj): Range {
-        if (!property_exists($obj, 'range')) {
+    public static function from(stdClass $obj): PrintMembers {
+        if (!property_exists($obj, 'printMembers')) {
             throw new Exception("Missing required property");
         }
-        return new Range(
-         Range::fromRange($obj->{'range'})
+        return new PrintMembers(
+         PrintMembers::fromPrintMembers($obj->{'printMembers'})
         );
     }
 
     /**
-     * @return Range
+     * @return PrintMembers
      */
-    public static function sample(): Range {
-        return new Range(
-         Range::sampleRange()
+    public static function sample(): PrintMembers {
+        return new PrintMembers(
+         PrintMembers::samplePrintMembers()
         );
     }
 }
 
-// This is an autogenerated file:ReadonlyClass
+// This is an autogenerated file:Printf
 
-class ReadonlyClass {
-    private int $readonly; // json:readonly Required
+class Printf {
+    private int $printf; // json:printf Required
 
     /**
-     * @param int $readonly
+     * @param int $printf
      */
-    public function __construct(int $readonly) {
-        $this->readonly = $readonly;
+    public function __construct(int $printf) {
+        $this->printf = $printf;
     }
 
     /**
@@ -39626,7 +39626,7 @@ class ReadonlyClass {
      * @throws Exception
      * @return int
      */
-    public static function fromReadonly(int $value): int {
+    public static function fromPrintf(int $value): int {
         return $value; /*int*/
     }
 
@@ -39634,11 +39634,11 @@ class ReadonlyClass {
      * @throws Exception
      * @return int
      */
-    public function toReadonly(): int {
-        if (ReadonlyClass::validateReadonly($this->readonly))  {
-            return $this->readonly; /*int*/
+    public function toPrintf(): int {
+        if (Printf::validatePrintf($this->printf))  {
+            return $this->printf; /*int*/
         }
-        throw new Exception('never get to this ReadonlyClass::readonly');
+        throw new Exception('never get to this Printf::printf');
     }
 
     /**
@@ -39646,7 +39646,7 @@ class ReadonlyClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateReadonly(int $value): bool {
+    public static function validatePrintf(int $value): bool {
         return true;
     }
 
@@ -39654,18 +39654,18 @@ class ReadonlyClass {
      * @throws Exception
      * @return int
      */
-    public function getReadonly(): int {
-        if (ReadonlyClass::validateReadonly($this->readonly))  {
-            return $this->readonly;
+    public function getPrintf(): int {
+        if (Printf::validatePrintf($this->printf))  {
+            return $this->printf;
         }
-        throw new Exception('never get to getReadonly ReadonlyClass::readonly');
+        throw new Exception('never get to getPrintf Printf::printf');
     }
 
     /**
      * @return int
      */
-    public static function sampleReadonly(): int {
-        return 31; /*31:readonly*/
+    public static function samplePrintf(): int {
+        return 31; /*31:printf*/
     }
 
     /**
@@ -39673,7 +39673,7 @@ class ReadonlyClass {
      * @return bool
      */
     public function validate(): bool {
-        return ReadonlyClass::validateReadonly($this->readonly);
+        return Printf::validatePrintf($this->printf);
     }
 
     /**
@@ -39682,44 +39682,44 @@ class ReadonlyClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'readonly'} = $this->toReadonly();
+        $out->{'printf'} = $this->toPrintf();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return ReadonlyClass
+     * @return Printf
      * @throws Exception
      */
-    public static function from(stdClass $obj): ReadonlyClass {
-        if (!property_exists($obj, 'readonly')) {
+    public static function from(stdClass $obj): Printf {
+        if (!property_exists($obj, 'printf')) {
             throw new Exception("Missing required property");
         }
-        return new ReadonlyClass(
-         ReadonlyClass::fromReadonly($obj->{'readonly'})
+        return new Printf(
+         Printf::fromPrintf($obj->{'printf'})
         );
     }
 
     /**
-     * @return ReadonlyClass
+     * @return Printf
      */
-    public static function sample(): ReadonlyClass {
-        return new ReadonlyClass(
-         ReadonlyClass::sampleReadonly()
+    public static function sample(): Printf {
+        return new Printf(
+         Printf::samplePrintf()
         );
     }
 }
 
-// This is an autogenerated file:Ref
+// This is an autogenerated file:PrivateClass
 
-class Ref {
-    private int $ref; // json:ref Required
+class PrivateClass {
+    private int $private; // json:private Required
 
     /**
-     * @param int $ref
+     * @param int $private
      */
-    public function __construct(int $ref) {
-        $this->ref = $ref;
+    public function __construct(int $private) {
+        $this->private = $private;
     }
 
     /**
@@ -39727,7 +39727,7 @@ class Ref {
      * @throws Exception
      * @return int
      */
-    public static function fromRef(int $value): int {
+    public static function fromPrivate(int $value): int {
         return $value; /*int*/
     }
 
@@ -39735,11 +39735,11 @@ class Ref {
      * @throws Exception
      * @return int
      */
-    public function toRef(): int {
-        if (Ref::validateRef($this->ref))  {
-            return $this->ref; /*int*/
+    public function toPrivate(): int {
+        if (PrivateClass::validatePrivate($this->private))  {
+            return $this->private; /*int*/
         }
-        throw new Exception('never get to this Ref::ref');
+        throw new Exception('never get to this PrivateClass::private');
     }
 
     /**
@@ -39747,7 +39747,7 @@ class Ref {
      * @return bool
      * @throws Exception
      */
-    public static function validateRef(int $value): bool {
+    public static function validatePrivate(int $value): bool {
         return true;
     }
 
@@ -39755,18 +39755,18 @@ class Ref {
      * @throws Exception
      * @return int
      */
-    public function getRef(): int {
-        if (Ref::validateRef($this->ref))  {
-            return $this->ref;
+    public function getPrivate(): int {
+        if (PrivateClass::validatePrivate($this->private))  {
+            return $this->private;
         }
-        throw new Exception('never get to getRef Ref::ref');
+        throw new Exception('never get to getPrivate PrivateClass::private');
     }
 
     /**
      * @return int
      */
-    public static function sampleRef(): int {
-        return 31; /*31:ref*/
+    public static function samplePrivate(): int {
+        return 31; /*31:private*/
     }
 
     /**
@@ -39774,7 +39774,7 @@ class Ref {
      * @return bool
      */
     public function validate(): bool {
-        return Ref::validateRef($this->ref);
+        return PrivateClass::validatePrivate($this->private);
     }
 
     /**
@@ -39783,94 +39783,91 @@ class Ref {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'ref'} = $this->toRef();
+        $out->{'private'} = $this->toPrivate();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Ref
+     * @return PrivateClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): Ref {
-        if (!property_exists($obj, 'ref')) {
+    public static function from(stdClass $obj): PrivateClass {
+        if (!property_exists($obj, 'private')) {
             throw new Exception("Missing required property");
         }
-        return new Ref(
-         Ref::fromRef($obj->{'ref'})
+        return new PrivateClass(
+         PrivateClass::fromPrivate($obj->{'private'})
         );
     }
 
     /**
-     * @return Ref
+     * @return PrivateClass
      */
-    public static function sample(): Ref {
-        return new Ref(
-         Ref::sampleRef()
+    public static function sample(): PrivateClass {
+        return new PrivateClass(
+         PrivateClass::samplePrivate()
         );
     }
 }
 
-// This is an autogenerated file:RegExp
+// This is an autogenerated file:ProtectedClass
 
-class RegExp {
-    private string $regExp; // json:RegExp Required
+class ProtectedClass {
+    private int $protected; // json:protected Required
 
     /**
-     * @param string $regExp
+     * @param int $protected
      */
-    public function __construct(string $regExp) {
-        $this->regExp = $regExp;
+    public function __construct(int $protected) {
+        $this->protected = $protected;
     }
 
     /**
-     * @param string $value
+     * @param int $value
      * @throws Exception
-     * @return string
+     * @return int
      */
-    public static function fromRegExp(string $value): string {
-        return $value; /*uuid*/
+    public static function fromProtected(int $value): int {
+        return $value; /*int*/
     }
 
     /**
      * @throws Exception
-     * @return string
+     * @return int
      */
-    public function toRegExp(): string {
-        if (RegExp::validateRegExp($this->regExp))  {
-            return $this->regExp; /*uuid*/
+    public function toProtected(): int {
+        if (ProtectedClass::validateProtected($this->protected))  {
+            return $this->protected; /*int*/
         }
-        throw new Exception('never get to this RegExp::regExp');
+        throw new Exception('never get to this ProtectedClass::protected');
     }
 
     /**
-     * @param string
+     * @param int
      * @return bool
      * @throws Exception
      */
-    public static function validateRegExp(string $value): bool {
-        if (!preg_match('/^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$/', $value)) {
-            throw new Exception("Attribute Error:RegExp::regExp");
-        }
+    public static function validateProtected(int $value): bool {
         return true;
     }
 
     /**
      * @throws Exception
-     * @return string
+     * @return int
      */
-    public function getRegExp(): string {
-        if (RegExp::validateRegExp($this->regExp))  {
-            return $this->regExp;
+    public function getProtected(): int {
+        if (ProtectedClass::validateProtected($this->protected))  {
+            return $this->protected;
         }
-        throw new Exception('never get to getRegExp RegExp::regExp');
+        throw new Exception('never get to getProtected ProtectedClass::protected');
     }
 
     /**
-     * @return string
+     * @return int
      */
-    public static function sampleRegExp(): string {
-        return '9277b8fb-2a65-4663-a36c-8d417e2d284b'; /*31:regExp*/
+    public static function sampleProtected(): int {
+        return 31; /*31:protected*/
     }
 
     /**
@@ -39878,7 +39875,7 @@ class RegExp {
      * @return bool
      */
     public function validate(): bool {
-        return RegExp::validateRegExp($this->regExp);
+        return ProtectedClass::validateProtected($this->protected);
     }
 
     /**
@@ -39887,44 +39884,44 @@ class RegExp {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'RegExp'} = $this->toRegExp();
+        $out->{'protected'} = $this->toProtected();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return RegExp
+     * @return ProtectedClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): RegExp {
-        if (!property_exists($obj, 'RegExp')) {
+    public static function from(stdClass $obj): ProtectedClass {
+        if (!property_exists($obj, 'protected')) {
             throw new Exception("Missing required property");
         }
-        return new RegExp(
-         RegExp::fromRegExp($obj->{'RegExp'})
+        return new ProtectedClass(
+         ProtectedClass::fromProtected($obj->{'protected'})
         );
     }
 
     /**
-     * @return RegExp
+     * @return ProtectedClass
      */
-    public static function sample(): RegExp {
-        return new RegExp(
-         RegExp::sampleRegExp()
+    public static function sample(): ProtectedClass {
+        return new ProtectedClass(
+         ProtectedClass::sampleProtected()
         );
     }
 }
 
-// This is an autogenerated file:Register
+// This is an autogenerated file:Protocol
 
-class Register {
-    private int $register; // json:register Required
+class Protocol {
+    private int $protocol; // json:Protocol Required
 
     /**
-     * @param int $register
+     * @param int $protocol
      */
-    public function __construct(int $register) {
-        $this->register = $register;
+    public function __construct(int $protocol) {
+        $this->protocol = $protocol;
     }
 
     /**
@@ -39932,7 +39929,7 @@ class Register {
      * @throws Exception
      * @return int
      */
-    public static function fromRegister(int $value): int {
+    public static function fromProtocol(int $value): int {
         return $value; /*int*/
     }
 
@@ -39940,11 +39937,11 @@ class Register {
      * @throws Exception
      * @return int
      */
-    public function toRegister(): int {
-        if (Register::validateRegister($this->register))  {
-            return $this->register; /*int*/
+    public function toProtocol(): int {
+        if (Protocol::validateProtocol($this->protocol))  {
+            return $this->protocol; /*int*/
         }
-        throw new Exception('never get to this Register::register');
+        throw new Exception('never get to this Protocol::protocol');
     }
 
     /**
@@ -39952,7 +39949,7 @@ class Register {
      * @return bool
      * @throws Exception
      */
-    public static function validateRegister(int $value): bool {
+    public static function validateProtocol(int $value): bool {
         return true;
     }
 
@@ -39960,18 +39957,18 @@ class Register {
      * @throws Exception
      * @return int
      */
-    public function getRegister(): int {
-        if (Register::validateRegister($this->register))  {
-            return $this->register;
+    public function getProtocol(): int {
+        if (Protocol::validateProtocol($this->protocol))  {
+            return $this->protocol;
         }
-        throw new Exception('never get to getRegister Register::register');
+        throw new Exception('never get to getProtocol Protocol::protocol');
     }
 
     /**
      * @return int
      */
-    public static function sampleRegister(): int {
-        return 31; /*31:register*/
+    public static function sampleProtocol(): int {
+        return 31; /*31:protocol*/
     }
 
     /**
@@ -39979,7 +39976,7 @@ class Register {
      * @return bool
      */
     public function validate(): bool {
-        return Register::validateRegister($this->register);
+        return Protocol::validateProtocol($this->protocol);
     }
 
     /**
@@ -39988,44 +39985,44 @@ class Register {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'register'} = $this->toRegister();
+        $out->{'Protocol'} = $this->toProtocol();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Register
+     * @return Protocol
      * @throws Exception
      */
-    public static function from(stdClass $obj): Register {
-        if (!property_exists($obj, 'register')) {
+    public static function from(stdClass $obj): Protocol {
+        if (!property_exists($obj, 'Protocol')) {
             throw new Exception("Missing required property");
         }
-        return new Register(
-         Register::fromRegister($obj->{'register'})
+        return new Protocol(
+         Protocol::fromProtocol($obj->{'Protocol'})
         );
     }
 
     /**
-     * @return Register
+     * @return Protocol
      */
-    public static function sample(): Register {
-        return new Register(
-         Register::sampleRegister()
+    public static function sample(): Protocol {
+        return new Protocol(
+         Protocol::sampleProtocol()
         );
     }
 }
 
-// This is an autogenerated file:ReinterpretCast
+// This is an autogenerated file:PublicClass
 
-class ReinterpretCast {
-    private int $reinterpretCast; // json:reinterpret_cast Required
+class PublicClass {
+    private int $public; // json:public Required
 
     /**
-     * @param int $reinterpretCast
+     * @param int $public
      */
-    public function __construct(int $reinterpretCast) {
-        $this->reinterpretCast = $reinterpretCast;
+    public function __construct(int $public) {
+        $this->public = $public;
     }
 
     /**
@@ -40033,7 +40030,7 @@ class ReinterpretCast {
      * @throws Exception
      * @return int
      */
-    public static function fromReinterpretCast(int $value): int {
+    public static function fromPublic(int $value): int {
         return $value; /*int*/
     }
 
@@ -40041,11 +40038,11 @@ class ReinterpretCast {
      * @throws Exception
      * @return int
      */
-    public function toReinterpretCast(): int {
-        if (ReinterpretCast::validateReinterpretCast($this->reinterpretCast))  {
-            return $this->reinterpretCast; /*int*/
+    public function toPublic(): int {
+        if (PublicClass::validatePublic($this->public))  {
+            return $this->public; /*int*/
         }
-        throw new Exception('never get to this ReinterpretCast::reinterpretCast');
+        throw new Exception('never get to this PublicClass::public');
     }
 
     /**
@@ -40053,7 +40050,7 @@ class ReinterpretCast {
      * @return bool
      * @throws Exception
      */
-    public static function validateReinterpretCast(int $value): bool {
+    public static function validatePublic(int $value): bool {
         return true;
     }
 
@@ -40061,18 +40058,18 @@ class ReinterpretCast {
      * @throws Exception
      * @return int
      */
-    public function getReinterpretCast(): int {
-        if (ReinterpretCast::validateReinterpretCast($this->reinterpretCast))  {
-            return $this->reinterpretCast;
+    public function getPublic(): int {
+        if (PublicClass::validatePublic($this->public))  {
+            return $this->public;
         }
-        throw new Exception('never get to getReinterpretCast ReinterpretCast::reinterpretCast');
+        throw new Exception('never get to getPublic PublicClass::public');
     }
 
     /**
      * @return int
      */
-    public static function sampleReinterpretCast(): int {
-        return 31; /*31:reinterpretCast*/
+    public static function samplePublic(): int {
+        return 31; /*31:public*/
     }
 
     /**
@@ -40080,7 +40077,7 @@ class ReinterpretCast {
      * @return bool
      */
     public function validate(): bool {
-        return ReinterpretCast::validateReinterpretCast($this->reinterpretCast);
+        return PublicClass::validatePublic($this->public);
     }
 
     /**
@@ -40089,44 +40086,44 @@ class ReinterpretCast {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'reinterpret_cast'} = $this->toReinterpretCast();
+        $out->{'public'} = $this->toPublic();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return ReinterpretCast
+     * @return PublicClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): ReinterpretCast {
-        if (!property_exists($obj, 'reinterpret_cast')) {
+    public static function from(stdClass $obj): PublicClass {
+        if (!property_exists($obj, 'public')) {
             throw new Exception("Missing required property");
         }
-        return new ReinterpretCast(
-         ReinterpretCast::fromReinterpretCast($obj->{'reinterpret_cast'})
+        return new PublicClass(
+         PublicClass::fromPublic($obj->{'public'})
         );
     }
 
     /**
-     * @return ReinterpretCast
+     * @return PublicClass
      */
-    public static function sample(): ReinterpretCast {
-        return new ReinterpretCast(
-         ReinterpretCast::sampleReinterpretCast()
+    public static function sample(): PublicClass {
+        return new PublicClass(
+         PublicClass::samplePublic()
         );
     }
 }
 
-// This is an autogenerated file:Repeat
+// This is an autogenerated file:Quicktype
 
-class Repeat {
-    private int $repeat; // json:repeat Required
+class Quicktype {
+    private int $quicktype; // json:quicktype Required
 
     /**
-     * @param int $repeat
+     * @param int $quicktype
      */
-    public function __construct(int $repeat) {
-        $this->repeat = $repeat;
+    public function __construct(int $quicktype) {
+        $this->quicktype = $quicktype;
     }
 
     /**
@@ -40134,7 +40131,7 @@ class Repeat {
      * @throws Exception
      * @return int
      */
-    public static function fromRepeat(int $value): int {
+    public static function fromQuicktype(int $value): int {
         return $value; /*int*/
     }
 
@@ -40142,11 +40139,11 @@ class Repeat {
      * @throws Exception
      * @return int
      */
-    public function toRepeat(): int {
-        if (Repeat::validateRepeat($this->repeat))  {
-            return $this->repeat; /*int*/
+    public function toQuicktype(): int {
+        if (Quicktype::validateQuicktype($this->quicktype))  {
+            return $this->quicktype; /*int*/
         }
-        throw new Exception('never get to this Repeat::repeat');
+        throw new Exception('never get to this Quicktype::quicktype');
     }
 
     /**
@@ -40154,7 +40151,7 @@ class Repeat {
      * @return bool
      * @throws Exception
      */
-    public static function validateRepeat(int $value): bool {
+    public static function validateQuicktype(int $value): bool {
         return true;
     }
 
@@ -40162,18 +40159,18 @@ class Repeat {
      * @throws Exception
      * @return int
      */
-    public function getRepeat(): int {
-        if (Repeat::validateRepeat($this->repeat))  {
-            return $this->repeat;
+    public function getQuicktype(): int {
+        if (Quicktype::validateQuicktype($this->quicktype))  {
+            return $this->quicktype;
         }
-        throw new Exception('never get to getRepeat Repeat::repeat');
+        throw new Exception('never get to getQuicktype Quicktype::quicktype');
     }
 
     /**
      * @return int
      */
-    public static function sampleRepeat(): int {
-        return 31; /*31:repeat*/
+    public static function sampleQuicktype(): int {
+        return 31; /*31:quicktype*/
     }
 
     /**
@@ -40181,7 +40178,7 @@ class Repeat {
      * @return bool
      */
     public function validate(): bool {
-        return Repeat::validateRepeat($this->repeat);
+        return Quicktype::validateQuicktype($this->quicktype);
     }
 
     /**
@@ -40190,44 +40187,44 @@ class Repeat {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'repeat'} = $this->toRepeat();
+        $out->{'quicktype'} = $this->toQuicktype();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Repeat
+     * @return Quicktype
      * @throws Exception
      */
-    public static function from(stdClass $obj): Repeat {
-        if (!property_exists($obj, 'repeat')) {
+    public static function from(stdClass $obj): Quicktype {
+        if (!property_exists($obj, 'quicktype')) {
             throw new Exception("Missing required property");
         }
-        return new Repeat(
-         Repeat::fromRepeat($obj->{'repeat'})
+        return new Quicktype(
+         Quicktype::fromQuicktype($obj->{'quicktype'})
         );
     }
 
     /**
-     * @return Repeat
+     * @return Quicktype
      */
-    public static function sample(): Repeat {
-        return new Repeat(
-         Repeat::sampleRepeat()
+    public static function sample(): Quicktype {
+        return new Quicktype(
+         Quicktype::sampleQuicktype()
         );
     }
 }
 
-// This is an autogenerated file:RequireClass
+// This is an autogenerated file:Raise
 
-class RequireClass {
-    private int $require; // json:require Required
+class Raise {
+    private int $raise; // json:raise Required
 
     /**
-     * @param int $require
+     * @param int $raise
      */
-    public function __construct(int $require) {
-        $this->require = $require;
+    public function __construct(int $raise) {
+        $this->raise = $raise;
     }
 
     /**
@@ -40235,7 +40232,7 @@ class RequireClass {
      * @throws Exception
      * @return int
      */
-    public static function fromRequire(int $value): int {
+    public static function fromRaise(int $value): int {
         return $value; /*int*/
     }
 
@@ -40243,11 +40240,11 @@ class RequireClass {
      * @throws Exception
      * @return int
      */
-    public function toRequire(): int {
-        if (RequireClass::validateRequire($this->require))  {
-            return $this->require; /*int*/
+    public function toRaise(): int {
+        if (Raise::validateRaise($this->raise))  {
+            return $this->raise; /*int*/
         }
-        throw new Exception('never get to this RequireClass::require');
+        throw new Exception('never get to this Raise::raise');
     }
 
     /**
@@ -40255,7 +40252,7 @@ class RequireClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateRequire(int $value): bool {
+    public static function validateRaise(int $value): bool {
         return true;
     }
 
@@ -40263,18 +40260,18 @@ class RequireClass {
      * @throws Exception
      * @return int
      */
-    public function getRequire(): int {
-        if (RequireClass::validateRequire($this->require))  {
-            return $this->require;
+    public function getRaise(): int {
+        if (Raise::validateRaise($this->raise))  {
+            return $this->raise;
         }
-        throw new Exception('never get to getRequire RequireClass::require');
+        throw new Exception('never get to getRaise Raise::raise');
     }
 
     /**
      * @return int
      */
-    public static function sampleRequire(): int {
-        return 31; /*31:require*/
+    public static function sampleRaise(): int {
+        return 31; /*31:raise*/
     }
 
     /**
@@ -40282,7 +40279,7 @@ class RequireClass {
      * @return bool
      */
     public function validate(): bool {
-        return RequireClass::validateRequire($this->require);
+        return Raise::validateRaise($this->raise);
     }
 
     /**
@@ -40291,44 +40288,44 @@ class RequireClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'require'} = $this->toRequire();
+        $out->{'raise'} = $this->toRaise();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return RequireClass
+     * @return Raise
      * @throws Exception
      */
-    public static function from(stdClass $obj): RequireClass {
-        if (!property_exists($obj, 'require')) {
+    public static function from(stdClass $obj): Raise {
+        if (!property_exists($obj, 'raise')) {
             throw new Exception("Missing required property");
         }
-        return new RequireClass(
-         RequireClass::fromRequire($obj->{'require'})
+        return new Raise(
+         Raise::fromRaise($obj->{'raise'})
         );
     }
 
     /**
-     * @return RequireClass
+     * @return Raise
      */
-    public static function sample(): RequireClass {
-        return new RequireClass(
-         RequireClass::sampleRequire()
+    public static function sample(): Raise {
+        return new Raise(
+         Raise::sampleRaise()
         );
     }
 }
 
-// This is an autogenerated file:Required
+// This is an autogenerated file:Range
 
-class Required {
-    private int $required; // json:required Required
+class Range {
+    private int $range; // json:range Required
 
     /**
-     * @param int $required
+     * @param int $range
      */
-    public function __construct(int $required) {
-        $this->required = $required;
+    public function __construct(int $range) {
+        $this->range = $range;
     }
 
     /**
@@ -40336,7 +40333,7 @@ class Required {
      * @throws Exception
      * @return int
      */
-    public static function fromRequired(int $value): int {
+    public static function fromRange(int $value): int {
         return $value; /*int*/
     }
 
@@ -40344,11 +40341,11 @@ class Required {
      * @throws Exception
      * @return int
      */
-    public function toRequired(): int {
-        if (Required::validateRequired($this->required))  {
-            return $this->required; /*int*/
+    public function toRange(): int {
+        if (Range::validateRange($this->range))  {
+            return $this->range; /*int*/
         }
-        throw new Exception('never get to this Required::required');
+        throw new Exception('never get to this Range::range');
     }
 
     /**
@@ -40356,7 +40353,7 @@ class Required {
      * @return bool
      * @throws Exception
      */
-    public static function validateRequired(int $value): bool {
+    public static function validateRange(int $value): bool {
         return true;
     }
 
@@ -40364,18 +40361,18 @@ class Required {
      * @throws Exception
      * @return int
      */
-    public function getRequired(): int {
-        if (Required::validateRequired($this->required))  {
-            return $this->required;
+    public function getRange(): int {
+        if (Range::validateRange($this->range))  {
+            return $this->range;
         }
-        throw new Exception('never get to getRequired Required::required');
+        throw new Exception('never get to getRange Range::range');
     }
 
     /**
      * @return int
      */
-    public static function sampleRequired(): int {
-        return 31; /*31:required*/
+    public static function sampleRange(): int {
+        return 31; /*31:range*/
     }
 
     /**
@@ -40383,7 +40380,7 @@ class Required {
      * @return bool
      */
     public function validate(): bool {
-        return Required::validateRequired($this->required);
+        return Range::validateRange($this->range);
     }
 
     /**
@@ -40392,44 +40389,44 @@ class Required {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'required'} = $this->toRequired();
+        $out->{'range'} = $this->toRange();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Required
+     * @return Range
      * @throws Exception
      */
-    public static function from(stdClass $obj): Required {
-        if (!property_exists($obj, 'required')) {
+    public static function from(stdClass $obj): Range {
+        if (!property_exists($obj, 'range')) {
             throw new Exception("Missing required property");
         }
-        return new Required(
-         Required::fromRequired($obj->{'required'})
+        return new Range(
+         Range::fromRange($obj->{'range'})
         );
     }
 
     /**
-     * @return Required
+     * @return Range
      */
-    public static function sample(): Required {
-        return new Required(
-         Required::sampleRequired()
+    public static function sample(): Range {
+        return new Range(
+         Range::sampleRange()
         );
     }
 }
 
-// This is an autogenerated file:Requires
+// This is an autogenerated file:ReadonlyClass
 
-class Requires {
-    private int $requires; // json:requires Required
+class ReadonlyClass {
+    private int $readonly; // json:readonly Required
 
     /**
-     * @param int $requires
+     * @param int $readonly
      */
-    public function __construct(int $requires) {
-        $this->requires = $requires;
+    public function __construct(int $readonly) {
+        $this->readonly = $readonly;
     }
 
     /**
@@ -40437,7 +40434,7 @@ class Requires {
      * @throws Exception
      * @return int
      */
-    public static function fromRequires(int $value): int {
+    public static function fromReadonly(int $value): int {
         return $value; /*int*/
     }
 
@@ -40445,11 +40442,11 @@ class Requires {
      * @throws Exception
      * @return int
      */
-    public function toRequires(): int {
-        if (Requires::validateRequires($this->requires))  {
-            return $this->requires; /*int*/
+    public function toReadonly(): int {
+        if (ReadonlyClass::validateReadonly($this->readonly))  {
+            return $this->readonly; /*int*/
         }
-        throw new Exception('never get to this Requires::requires');
+        throw new Exception('never get to this ReadonlyClass::readonly');
     }
 
     /**
@@ -40457,7 +40454,7 @@ class Requires {
      * @return bool
      * @throws Exception
      */
-    public static function validateRequires(int $value): bool {
+    public static function validateReadonly(int $value): bool {
         return true;
     }
 
@@ -40465,18 +40462,18 @@ class Requires {
      * @throws Exception
      * @return int
      */
-    public function getRequires(): int {
-        if (Requires::validateRequires($this->requires))  {
-            return $this->requires;
+    public function getReadonly(): int {
+        if (ReadonlyClass::validateReadonly($this->readonly))  {
+            return $this->readonly;
         }
-        throw new Exception('never get to getRequires Requires::requires');
+        throw new Exception('never get to getReadonly ReadonlyClass::readonly');
     }
 
     /**
      * @return int
      */
-    public static function sampleRequires(): int {
-        return 31; /*31:requires*/
+    public static function sampleReadonly(): int {
+        return 31; /*31:readonly*/
     }
 
     /**
@@ -40484,7 +40481,7 @@ class Requires {
      * @return bool
      */
     public function validate(): bool {
-        return Requires::validateRequires($this->requires);
+        return ReadonlyClass::validateReadonly($this->readonly);
     }
 
     /**
@@ -40493,44 +40490,44 @@ class Requires {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'requires'} = $this->toRequires();
+        $out->{'readonly'} = $this->toReadonly();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Requires
+     * @return ReadonlyClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): Requires {
-        if (!property_exists($obj, 'requires')) {
+    public static function from(stdClass $obj): ReadonlyClass {
+        if (!property_exists($obj, 'readonly')) {
             throw new Exception("Missing required property");
         }
-        return new Requires(
-         Requires::fromRequires($obj->{'requires'})
+        return new ReadonlyClass(
+         ReadonlyClass::fromReadonly($obj->{'readonly'})
         );
     }
 
     /**
-     * @return Requires
+     * @return ReadonlyClass
      */
-    public static function sample(): Requires {
-        return new Requires(
-         Requires::sampleRequires()
+    public static function sample(): ReadonlyClass {
+        return new ReadonlyClass(
+         ReadonlyClass::sampleReadonly()
         );
     }
 }
 
-// This is an autogenerated file:Restrict
+// This is an autogenerated file:Ref
 
-class Restrict {
-    private int $restrict; // json:restrict Required
+class Ref {
+    private int $ref; // json:ref Required
 
     /**
-     * @param int $restrict
+     * @param int $ref
      */
-    public function __construct(int $restrict) {
-        $this->restrict = $restrict;
+    public function __construct(int $ref) {
+        $this->ref = $ref;
     }
 
     /**
@@ -40538,7 +40535,7 @@ class Restrict {
      * @throws Exception
      * @return int
      */
-    public static function fromRestrict(int $value): int {
+    public static function fromRef(int $value): int {
         return $value; /*int*/
     }
 
@@ -40546,11 +40543,11 @@ class Restrict {
      * @throws Exception
      * @return int
      */
-    public function toRestrict(): int {
-        if (Restrict::validateRestrict($this->restrict))  {
-            return $this->restrict; /*int*/
+    public function toRef(): int {
+        if (Ref::validateRef($this->ref))  {
+            return $this->ref; /*int*/
         }
-        throw new Exception('never get to this Restrict::restrict');
+        throw new Exception('never get to this Ref::ref');
     }
 
     /**
@@ -40558,7 +40555,7 @@ class Restrict {
      * @return bool
      * @throws Exception
      */
-    public static function validateRestrict(int $value): bool {
+    public static function validateRef(int $value): bool {
         return true;
     }
 
@@ -40566,18 +40563,18 @@ class Restrict {
      * @throws Exception
      * @return int
      */
-    public function getRestrict(): int {
-        if (Restrict::validateRestrict($this->restrict))  {
-            return $this->restrict;
+    public function getRef(): int {
+        if (Ref::validateRef($this->ref))  {
+            return $this->ref;
         }
-        throw new Exception('never get to getRestrict Restrict::restrict');
+        throw new Exception('never get to getRef Ref::ref');
     }
 
     /**
      * @return int
      */
-    public static function sampleRestrict(): int {
-        return 31; /*31:restrict*/
+    public static function sampleRef(): int {
+        return 31; /*31:ref*/
     }
 
     /**
@@ -40585,7 +40582,7 @@ class Restrict {
      * @return bool
      */
     public function validate(): bool {
-        return Restrict::validateRestrict($this->restrict);
+        return Ref::validateRef($this->ref);
     }
 
     /**
@@ -40594,91 +40591,94 @@ class Restrict {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'restrict'} = $this->toRestrict();
+        $out->{'ref'} = $this->toRef();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Restrict
+     * @return Ref
      * @throws Exception
      */
-    public static function from(stdClass $obj): Restrict {
-        if (!property_exists($obj, 'restrict')) {
+    public static function from(stdClass $obj): Ref {
+        if (!property_exists($obj, 'ref')) {
             throw new Exception("Missing required property");
         }
-        return new Restrict(
-         Restrict::fromRestrict($obj->{'restrict'})
+        return new Ref(
+         Ref::fromRef($obj->{'ref'})
         );
     }
 
     /**
-     * @return Restrict
+     * @return Ref
      */
-    public static function sample(): Restrict {
-        return new Restrict(
-         Restrict::sampleRestrict()
+    public static function sample(): Ref {
+        return new Ref(
+         Ref::sampleRef()
         );
     }
 }
 
-// This is an autogenerated file:Retain
+// This is an autogenerated file:RegExp
 
-class Retain {
-    private int $retain; // json:retain Required
+class RegExp {
+    private string $regExp; // json:RegExp Required
 
     /**
-     * @param int $retain
+     * @param string $regExp
      */
-    public function __construct(int $retain) {
-        $this->retain = $retain;
+    public function __construct(string $regExp) {
+        $this->regExp = $regExp;
     }
 
     /**
-     * @param int $value
+     * @param string $value
      * @throws Exception
-     * @return int
+     * @return string
      */
-    public static function fromRetain(int $value): int {
-        return $value; /*int*/
+    public static function fromRegExp(string $value): string {
+        return $value; /*uuid*/
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return string
      */
-    public function toRetain(): int {
-        if (Retain::validateRetain($this->retain))  {
-            return $this->retain; /*int*/
+    public function toRegExp(): string {
+        if (RegExp::validateRegExp($this->regExp))  {
+            return $this->regExp; /*uuid*/
         }
-        throw new Exception('never get to this Retain::retain');
+        throw new Exception('never get to this RegExp::regExp');
     }
 
     /**
-     * @param int
+     * @param string
      * @return bool
      * @throws Exception
      */
-    public static function validateRetain(int $value): bool {
+    public static function validateRegExp(string $value): bool {
+        if (!preg_match('/^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$/', $value)) {
+            throw new Exception("Attribute Error:RegExp::regExp");
+        }
         return true;
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return string
      */
-    public function getRetain(): int {
-        if (Retain::validateRetain($this->retain))  {
-            return $this->retain;
+    public function getRegExp(): string {
+        if (RegExp::validateRegExp($this->regExp))  {
+            return $this->regExp;
         }
-        throw new Exception('never get to getRetain Retain::retain');
+        throw new Exception('never get to getRegExp RegExp::regExp');
     }
 
     /**
-     * @return int
+     * @return string
      */
-    public static function sampleRetain(): int {
-        return 31; /*31:retain*/
+    public static function sampleRegExp(): string {
+        return '9277b8fb-2a65-4663-a36c-8d417e2d284b'; /*31:regExp*/
     }
 
     /**
@@ -40686,7 +40686,7 @@ class Retain {
      * @return bool
      */
     public function validate(): bool {
-        return Retain::validateRetain($this->retain);
+        return RegExp::validateRegExp($this->regExp);
     }
 
     /**
@@ -40695,44 +40695,44 @@ class Retain {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'retain'} = $this->toRetain();
+        $out->{'RegExp'} = $this->toRegExp();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Retain
+     * @return RegExp
      * @throws Exception
      */
-    public static function from(stdClass $obj): Retain {
-        if (!property_exists($obj, 'retain')) {
+    public static function from(stdClass $obj): RegExp {
+        if (!property_exists($obj, 'RegExp')) {
             throw new Exception("Missing required property");
         }
-        return new Retain(
-         Retain::fromRetain($obj->{'retain'})
+        return new RegExp(
+         RegExp::fromRegExp($obj->{'RegExp'})
         );
     }
 
     /**
-     * @return Retain
+     * @return RegExp
      */
-    public static function sample(): Retain {
-        return new Retain(
-         Retain::sampleRetain()
+    public static function sample(): RegExp {
+        return new RegExp(
+         RegExp::sampleRegExp()
         );
     }
 }
 
-// This is an autogenerated file:Rethrows
+// This is an autogenerated file:Register
 
-class Rethrows {
-    private int $rethrows; // json:rethrows Required
+class Register {
+    private int $register; // json:register Required
 
     /**
-     * @param int $rethrows
+     * @param int $register
      */
-    public function __construct(int $rethrows) {
-        $this->rethrows = $rethrows;
+    public function __construct(int $register) {
+        $this->register = $register;
     }
 
     /**
@@ -40740,7 +40740,7 @@ class Rethrows {
      * @throws Exception
      * @return int
      */
-    public static function fromRethrows(int $value): int {
+    public static function fromRegister(int $value): int {
         return $value; /*int*/
     }
 
@@ -40748,11 +40748,11 @@ class Rethrows {
      * @throws Exception
      * @return int
      */
-    public function toRethrows(): int {
-        if (Rethrows::validateRethrows($this->rethrows))  {
-            return $this->rethrows; /*int*/
+    public function toRegister(): int {
+        if (Register::validateRegister($this->register))  {
+            return $this->register; /*int*/
         }
-        throw new Exception('never get to this Rethrows::rethrows');
+        throw new Exception('never get to this Register::register');
     }
 
     /**
@@ -40760,7 +40760,7 @@ class Rethrows {
      * @return bool
      * @throws Exception
      */
-    public static function validateRethrows(int $value): bool {
+    public static function validateRegister(int $value): bool {
         return true;
     }
 
@@ -40768,18 +40768,18 @@ class Rethrows {
      * @throws Exception
      * @return int
      */
-    public function getRethrows(): int {
-        if (Rethrows::validateRethrows($this->rethrows))  {
-            return $this->rethrows;
+    public function getRegister(): int {
+        if (Register::validateRegister($this->register))  {
+            return $this->register;
         }
-        throw new Exception('never get to getRethrows Rethrows::rethrows');
+        throw new Exception('never get to getRegister Register::register');
     }
 
     /**
      * @return int
      */
-    public static function sampleRethrows(): int {
-        return 31; /*31:rethrows*/
+    public static function sampleRegister(): int {
+        return 31; /*31:register*/
     }
 
     /**
@@ -40787,7 +40787,7 @@ class Rethrows {
      * @return bool
      */
     public function validate(): bool {
-        return Rethrows::validateRethrows($this->rethrows);
+        return Register::validateRegister($this->register);
     }
 
     /**
@@ -40796,44 +40796,44 @@ class Rethrows {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'rethrows'} = $this->toRethrows();
+        $out->{'register'} = $this->toRegister();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Rethrows
+     * @return Register
      * @throws Exception
      */
-    public static function from(stdClass $obj): Rethrows {
-        if (!property_exists($obj, 'rethrows')) {
+    public static function from(stdClass $obj): Register {
+        if (!property_exists($obj, 'register')) {
             throw new Exception("Missing required property");
         }
-        return new Rethrows(
-         Rethrows::fromRethrows($obj->{'rethrows'})
+        return new Register(
+         Register::fromRegister($obj->{'register'})
         );
     }
 
     /**
-     * @return Rethrows
+     * @return Register
      */
-    public static function sample(): Rethrows {
-        return new Rethrows(
-         Rethrows::sampleRethrows()
+    public static function sample(): Register {
+        return new Register(
+         Register::sampleRegister()
         );
     }
 }
 
-// This is an autogenerated file:ReturnClass
+// This is an autogenerated file:ReinterpretCast
 
-class ReturnClass {
-    private int $return; // json:return Required
+class ReinterpretCast {
+    private int $reinterpretCast; // json:reinterpret_cast Required
 
     /**
-     * @param int $return
+     * @param int $reinterpretCast
      */
-    public function __construct(int $return) {
-        $this->return = $return;
+    public function __construct(int $reinterpretCast) {
+        $this->reinterpretCast = $reinterpretCast;
     }
 
     /**
@@ -40841,7 +40841,7 @@ class ReturnClass {
      * @throws Exception
      * @return int
      */
-    public static function fromReturn(int $value): int {
+    public static function fromReinterpretCast(int $value): int {
         return $value; /*int*/
     }
 
@@ -40849,11 +40849,11 @@ class ReturnClass {
      * @throws Exception
      * @return int
      */
-    public function toReturn(): int {
-        if (ReturnClass::validateReturn($this->return))  {
-            return $this->return; /*int*/
+    public function toReinterpretCast(): int {
+        if (ReinterpretCast::validateReinterpretCast($this->reinterpretCast))  {
+            return $this->reinterpretCast; /*int*/
         }
-        throw new Exception('never get to this ReturnClass::return');
+        throw new Exception('never get to this ReinterpretCast::reinterpretCast');
     }
 
     /**
@@ -40861,7 +40861,7 @@ class ReturnClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateReturn(int $value): bool {
+    public static function validateReinterpretCast(int $value): bool {
         return true;
     }
 
@@ -40869,18 +40869,18 @@ class ReturnClass {
      * @throws Exception
      * @return int
      */
-    public function getReturn(): int {
-        if (ReturnClass::validateReturn($this->return))  {
-            return $this->return;
+    public function getReinterpretCast(): int {
+        if (ReinterpretCast::validateReinterpretCast($this->reinterpretCast))  {
+            return $this->reinterpretCast;
         }
-        throw new Exception('never get to getReturn ReturnClass::return');
+        throw new Exception('never get to getReinterpretCast ReinterpretCast::reinterpretCast');
     }
 
     /**
      * @return int
      */
-    public static function sampleReturn(): int {
-        return 31; /*31:return*/
+    public static function sampleReinterpretCast(): int {
+        return 31; /*31:reinterpretCast*/
     }
 
     /**
@@ -40888,7 +40888,7 @@ class ReturnClass {
      * @return bool
      */
     public function validate(): bool {
-        return ReturnClass::validateReturn($this->return);
+        return ReinterpretCast::validateReinterpretCast($this->reinterpretCast);
     }
 
     /**
@@ -40897,44 +40897,44 @@ class ReturnClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'return'} = $this->toReturn();
+        $out->{'reinterpret_cast'} = $this->toReinterpretCast();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return ReturnClass
+     * @return ReinterpretCast
      * @throws Exception
      */
-    public static function from(stdClass $obj): ReturnClass {
-        if (!property_exists($obj, 'return')) {
+    public static function from(stdClass $obj): ReinterpretCast {
+        if (!property_exists($obj, 'reinterpret_cast')) {
             throw new Exception("Missing required property");
         }
-        return new ReturnClass(
-         ReturnClass::fromReturn($obj->{'return'})
+        return new ReinterpretCast(
+         ReinterpretCast::fromReinterpretCast($obj->{'reinterpret_cast'})
         );
     }
 
     /**
-     * @return ReturnClass
+     * @return ReinterpretCast
      */
-    public static function sample(): ReturnClass {
-        return new ReturnClass(
-         ReturnClass::sampleReturn()
+    public static function sample(): ReinterpretCast {
+        return new ReinterpretCast(
+         ReinterpretCast::sampleReinterpretCast()
         );
     }
 }
 
-// This is an autogenerated file:Right
+// This is an autogenerated file:Repeat
 
-class Right {
-    private int $right; // json:right Required
+class Repeat {
+    private int $repeat; // json:repeat Required
 
     /**
-     * @param int $right
+     * @param int $repeat
      */
-    public function __construct(int $right) {
-        $this->right = $right;
+    public function __construct(int $repeat) {
+        $this->repeat = $repeat;
     }
 
     /**
@@ -40942,7 +40942,7 @@ class Right {
      * @throws Exception
      * @return int
      */
-    public static function fromRight(int $value): int {
+    public static function fromRepeat(int $value): int {
         return $value; /*int*/
     }
 
@@ -40950,11 +40950,11 @@ class Right {
      * @throws Exception
      * @return int
      */
-    public function toRight(): int {
-        if (Right::validateRight($this->right))  {
-            return $this->right; /*int*/
+    public function toRepeat(): int {
+        if (Repeat::validateRepeat($this->repeat))  {
+            return $this->repeat; /*int*/
         }
-        throw new Exception('never get to this Right::right');
+        throw new Exception('never get to this Repeat::repeat');
     }
 
     /**
@@ -40962,7 +40962,7 @@ class Right {
      * @return bool
      * @throws Exception
      */
-    public static function validateRight(int $value): bool {
+    public static function validateRepeat(int $value): bool {
         return true;
     }
 
@@ -40970,18 +40970,18 @@ class Right {
      * @throws Exception
      * @return int
      */
-    public function getRight(): int {
-        if (Right::validateRight($this->right))  {
-            return $this->right;
+    public function getRepeat(): int {
+        if (Repeat::validateRepeat($this->repeat))  {
+            return $this->repeat;
         }
-        throw new Exception('never get to getRight Right::right');
+        throw new Exception('never get to getRepeat Repeat::repeat');
     }
 
     /**
      * @return int
      */
-    public static function sampleRight(): int {
-        return 31; /*31:right*/
+    public static function sampleRepeat(): int {
+        return 31; /*31:repeat*/
     }
 
     /**
@@ -40989,7 +40989,7 @@ class Right {
      * @return bool
      */
     public function validate(): bool {
-        return Right::validateRight($this->right);
+        return Repeat::validateRepeat($this->repeat);
     }
 
     /**
@@ -40998,44 +40998,44 @@ class Right {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'right'} = $this->toRight();
+        $out->{'repeat'} = $this->toRepeat();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Right
+     * @return Repeat
      * @throws Exception
      */
-    public static function from(stdClass $obj): Right {
-        if (!property_exists($obj, 'right')) {
+    public static function from(stdClass $obj): Repeat {
+        if (!property_exists($obj, 'repeat')) {
             throw new Exception("Missing required property");
         }
-        return new Right(
-         Right::fromRight($obj->{'right'})
+        return new Repeat(
+         Repeat::fromRepeat($obj->{'repeat'})
         );
     }
 
     /**
-     * @return Right
+     * @return Repeat
      */
-    public static function sample(): Right {
-        return new Right(
-         Right::sampleRight()
+    public static function sample(): Repeat {
+        return new Repeat(
+         Repeat::sampleRepeat()
         );
     }
 }
 
-// This is an autogenerated file:RuntimeType
+// This is an autogenerated file:RequireClass
 
-class RuntimeType {
-    private int $runtimeType; // json:runtimeType Required
+class RequireClass {
+    private int $require; // json:require Required
 
     /**
-     * @param int $runtimeType
+     * @param int $require
      */
-    public function __construct(int $runtimeType) {
-        $this->runtimeType = $runtimeType;
+    public function __construct(int $require) {
+        $this->require = $require;
     }
 
     /**
@@ -41043,7 +41043,7 @@ class RuntimeType {
      * @throws Exception
      * @return int
      */
-    public static function fromRuntimeType(int $value): int {
+    public static function fromRequire(int $value): int {
         return $value; /*int*/
     }
 
@@ -41051,11 +41051,11 @@ class RuntimeType {
      * @throws Exception
      * @return int
      */
-    public function toRuntimeType(): int {
-        if (RuntimeType::validateRuntimeType($this->runtimeType))  {
-            return $this->runtimeType; /*int*/
+    public function toRequire(): int {
+        if (RequireClass::validateRequire($this->require))  {
+            return $this->require; /*int*/
         }
-        throw new Exception('never get to this RuntimeType::runtimeType');
+        throw new Exception('never get to this RequireClass::require');
     }
 
     /**
@@ -41063,7 +41063,7 @@ class RuntimeType {
      * @return bool
      * @throws Exception
      */
-    public static function validateRuntimeType(int $value): bool {
+    public static function validateRequire(int $value): bool {
         return true;
     }
 
@@ -41071,18 +41071,18 @@ class RuntimeType {
      * @throws Exception
      * @return int
      */
-    public function getRuntimeType(): int {
-        if (RuntimeType::validateRuntimeType($this->runtimeType))  {
-            return $this->runtimeType;
+    public function getRequire(): int {
+        if (RequireClass::validateRequire($this->require))  {
+            return $this->require;
         }
-        throw new Exception('never get to getRuntimeType RuntimeType::runtimeType');
+        throw new Exception('never get to getRequire RequireClass::require');
     }
 
     /**
      * @return int
      */
-    public static function sampleRuntimeType(): int {
-        return 31; /*31:runtimeType*/
+    public static function sampleRequire(): int {
+        return 31; /*31:require*/
     }
 
     /**
@@ -41090,7 +41090,7 @@ class RuntimeType {
      * @return bool
      */
     public function validate(): bool {
-        return RuntimeType::validateRuntimeType($this->runtimeType);
+        return RequireClass::validateRequire($this->require);
     }
 
     /**
@@ -41099,44 +41099,44 @@ class RuntimeType {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'runtimeType'} = $this->toRuntimeType();
+        $out->{'require'} = $this->toRequire();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return RuntimeType
+     * @return RequireClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): RuntimeType {
-        if (!property_exists($obj, 'runtimeType')) {
+    public static function from(stdClass $obj): RequireClass {
+        if (!property_exists($obj, 'require')) {
             throw new Exception("Missing required property");
         }
-        return new RuntimeType(
-         RuntimeType::fromRuntimeType($obj->{'runtimeType'})
+        return new RequireClass(
+         RequireClass::fromRequire($obj->{'require'})
         );
     }
 
     /**
-     * @return RuntimeType
+     * @return RequireClass
      */
-    public static function sample(): RuntimeType {
-        return new RuntimeType(
-         RuntimeType::sampleRuntimeType()
+    public static function sample(): RequireClass {
+        return new RequireClass(
+         RequireClass::sampleRequire()
         );
     }
 }
 
-// This is an autogenerated file:S
+// This is an autogenerated file:Required
 
-class S {
-    private int $s; // json:s Required
+class Required {
+    private int $required; // json:required Required
 
     /**
-     * @param int $s
+     * @param int $required
      */
-    public function __construct(int $s) {
-        $this->s = $s;
+    public function __construct(int $required) {
+        $this->required = $required;
     }
 
     /**
@@ -41144,7 +41144,7 @@ class S {
      * @throws Exception
      * @return int
      */
-    public static function fromS(int $value): int {
+    public static function fromRequired(int $value): int {
         return $value; /*int*/
     }
 
@@ -41152,11 +41152,11 @@ class S {
      * @throws Exception
      * @return int
      */
-    public function toS(): int {
-        if (S::validateS($this->s))  {
-            return $this->s; /*int*/
+    public function toRequired(): int {
+        if (Required::validateRequired($this->required))  {
+            return $this->required; /*int*/
         }
-        throw new Exception('never get to this S::s');
+        throw new Exception('never get to this Required::required');
     }
 
     /**
@@ -41164,7 +41164,7 @@ class S {
      * @return bool
      * @throws Exception
      */
-    public static function validateS(int $value): bool {
+    public static function validateRequired(int $value): bool {
         return true;
     }
 
@@ -41172,18 +41172,18 @@ class S {
      * @throws Exception
      * @return int
      */
-    public function getS(): int {
-        if (S::validateS($this->s))  {
-            return $this->s;
+    public function getRequired(): int {
+        if (Required::validateRequired($this->required))  {
+            return $this->required;
         }
-        throw new Exception('never get to getS S::s');
+        throw new Exception('never get to getRequired Required::required');
     }
 
     /**
      * @return int
      */
-    public static function sampleS(): int {
-        return 31; /*31:s*/
+    public static function sampleRequired(): int {
+        return 31; /*31:required*/
     }
 
     /**
@@ -41191,7 +41191,7 @@ class S {
      * @return bool
      */
     public function validate(): bool {
-        return S::validateS($this->s);
+        return Required::validateRequired($this->required);
     }
 
     /**
@@ -41200,44 +41200,44 @@ class S {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'s'} = $this->toS();
+        $out->{'required'} = $this->toRequired();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return S
+     * @return Required
      * @throws Exception
      */
-    public static function from(stdClass $obj): S {
-        if (!property_exists($obj, 's')) {
+    public static function from(stdClass $obj): Required {
+        if (!property_exists($obj, 'required')) {
             throw new Exception("Missing required property");
         }
-        return new S(
-         S::fromS($obj->{'s'})
+        return new Required(
+         Required::fromRequired($obj->{'required'})
         );
     }
 
     /**
-     * @return S
+     * @return Required
      */
-    public static function sample(): S {
-        return new S(
-         S::sampleS()
+    public static function sample(): Required {
+        return new Required(
+         Required::sampleRequired()
         );
     }
 }
 
-// This is an autogenerated file:Sbyte
+// This is an autogenerated file:Requires
 
-class Sbyte {
-    private int $sbyte; // json:sbyte Required
+class Requires {
+    private int $requires; // json:requires Required
 
     /**
-     * @param int $sbyte
+     * @param int $requires
      */
-    public function __construct(int $sbyte) {
-        $this->sbyte = $sbyte;
+    public function __construct(int $requires) {
+        $this->requires = $requires;
     }
 
     /**
@@ -41245,7 +41245,7 @@ class Sbyte {
      * @throws Exception
      * @return int
      */
-    public static function fromSbyte(int $value): int {
+    public static function fromRequires(int $value): int {
         return $value; /*int*/
     }
 
@@ -41253,11 +41253,11 @@ class Sbyte {
      * @throws Exception
      * @return int
      */
-    public function toSbyte(): int {
-        if (Sbyte::validateSbyte($this->sbyte))  {
-            return $this->sbyte; /*int*/
+    public function toRequires(): int {
+        if (Requires::validateRequires($this->requires))  {
+            return $this->requires; /*int*/
         }
-        throw new Exception('never get to this Sbyte::sbyte');
+        throw new Exception('never get to this Requires::requires');
     }
 
     /**
@@ -41265,7 +41265,7 @@ class Sbyte {
      * @return bool
      * @throws Exception
      */
-    public static function validateSbyte(int $value): bool {
+    public static function validateRequires(int $value): bool {
         return true;
     }
 
@@ -41273,18 +41273,18 @@ class Sbyte {
      * @throws Exception
      * @return int
      */
-    public function getSbyte(): int {
-        if (Sbyte::validateSbyte($this->sbyte))  {
-            return $this->sbyte;
+    public function getRequires(): int {
+        if (Requires::validateRequires($this->requires))  {
+            return $this->requires;
         }
-        throw new Exception('never get to getSbyte Sbyte::sbyte');
+        throw new Exception('never get to getRequires Requires::requires');
     }
 
     /**
      * @return int
      */
-    public static function sampleSbyte(): int {
-        return 31; /*31:sbyte*/
+    public static function sampleRequires(): int {
+        return 31; /*31:requires*/
     }
 
     /**
@@ -41292,7 +41292,7 @@ class Sbyte {
      * @return bool
      */
     public function validate(): bool {
-        return Sbyte::validateSbyte($this->sbyte);
+        return Requires::validateRequires($this->requires);
     }
 
     /**
@@ -41301,44 +41301,44 @@ class Sbyte {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'sbyte'} = $this->toSbyte();
+        $out->{'requires'} = $this->toRequires();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Sbyte
+     * @return Requires
      * @throws Exception
      */
-    public static function from(stdClass $obj): Sbyte {
-        if (!property_exists($obj, 'sbyte')) {
+    public static function from(stdClass $obj): Requires {
+        if (!property_exists($obj, 'requires')) {
             throw new Exception("Missing required property");
         }
-        return new Sbyte(
-         Sbyte::fromSbyte($obj->{'sbyte'})
+        return new Requires(
+         Requires::fromRequires($obj->{'requires'})
         );
     }
 
     /**
-     * @return Sbyte
+     * @return Requires
      */
-    public static function sample(): Sbyte {
-        return new Sbyte(
-         Sbyte::sampleSbyte()
+    public static function sample(): Requires {
+        return new Requires(
+         Requires::sampleRequires()
         );
     }
 }
 
-// This is an autogenerated file:Sealed
+// This is an autogenerated file:Restrict
 
-class Sealed {
-    private int $sealed; // json:sealed Required
+class Restrict {
+    private int $restrict; // json:restrict Required
 
     /**
-     * @param int $sealed
+     * @param int $restrict
      */
-    public function __construct(int $sealed) {
-        $this->sealed = $sealed;
+    public function __construct(int $restrict) {
+        $this->restrict = $restrict;
     }
 
     /**
@@ -41346,7 +41346,7 @@ class Sealed {
      * @throws Exception
      * @return int
      */
-    public static function fromSealed(int $value): int {
+    public static function fromRestrict(int $value): int {
         return $value; /*int*/
     }
 
@@ -41354,11 +41354,11 @@ class Sealed {
      * @throws Exception
      * @return int
      */
-    public function toSealed(): int {
-        if (Sealed::validateSealed($this->sealed))  {
-            return $this->sealed; /*int*/
+    public function toRestrict(): int {
+        if (Restrict::validateRestrict($this->restrict))  {
+            return $this->restrict; /*int*/
         }
-        throw new Exception('never get to this Sealed::sealed');
+        throw new Exception('never get to this Restrict::restrict');
     }
 
     /**
@@ -41366,7 +41366,7 @@ class Sealed {
      * @return bool
      * @throws Exception
      */
-    public static function validateSealed(int $value): bool {
+    public static function validateRestrict(int $value): bool {
         return true;
     }
 
@@ -41374,18 +41374,18 @@ class Sealed {
      * @throws Exception
      * @return int
      */
-    public function getSealed(): int {
-        if (Sealed::validateSealed($this->sealed))  {
-            return $this->sealed;
+    public function getRestrict(): int {
+        if (Restrict::validateRestrict($this->restrict))  {
+            return $this->restrict;
         }
-        throw new Exception('never get to getSealed Sealed::sealed');
+        throw new Exception('never get to getRestrict Restrict::restrict');
     }
 
     /**
      * @return int
      */
-    public static function sampleSealed(): int {
-        return 31; /*31:sealed*/
+    public static function sampleRestrict(): int {
+        return 31; /*31:restrict*/
     }
 
     /**
@@ -41393,7 +41393,7 @@ class Sealed {
      * @return bool
      */
     public function validate(): bool {
-        return Sealed::validateSealed($this->sealed);
+        return Restrict::validateRestrict($this->restrict);
     }
 
     /**
@@ -41402,44 +41402,44 @@ class Sealed {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'sealed'} = $this->toSealed();
+        $out->{'restrict'} = $this->toRestrict();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Sealed
+     * @return Restrict
      * @throws Exception
      */
-    public static function from(stdClass $obj): Sealed {
-        if (!property_exists($obj, 'sealed')) {
+    public static function from(stdClass $obj): Restrict {
+        if (!property_exists($obj, 'restrict')) {
             throw new Exception("Missing required property");
         }
-        return new Sealed(
-         Sealed::fromSealed($obj->{'sealed'})
+        return new Restrict(
+         Restrict::fromRestrict($obj->{'restrict'})
         );
     }
 
     /**
-     * @return Sealed
+     * @return Restrict
      */
-    public static function sample(): Sealed {
-        return new Sealed(
-         Sealed::sampleSealed()
+    public static function sample(): Restrict {
+        return new Restrict(
+         Restrict::sampleRestrict()
         );
     }
 }
 
-// This is an autogenerated file:Sel
+// This is an autogenerated file:Retain
 
-class Sel {
-    private int $sel; // json:SEL Required
+class Retain {
+    private int $retain; // json:retain Required
 
     /**
-     * @param int $sel
+     * @param int $retain
      */
-    public function __construct(int $sel) {
-        $this->sel = $sel;
+    public function __construct(int $retain) {
+        $this->retain = $retain;
     }
 
     /**
@@ -41447,7 +41447,7 @@ class Sel {
      * @throws Exception
      * @return int
      */
-    public static function fromSel(int $value): int {
+    public static function fromRetain(int $value): int {
         return $value; /*int*/
     }
 
@@ -41455,11 +41455,11 @@ class Sel {
      * @throws Exception
      * @return int
      */
-    public function toSel(): int {
-        if (Sel::validateSel($this->sel))  {
-            return $this->sel; /*int*/
+    public function toRetain(): int {
+        if (Retain::validateRetain($this->retain))  {
+            return $this->retain; /*int*/
         }
-        throw new Exception('never get to this Sel::sel');
+        throw new Exception('never get to this Retain::retain');
     }
 
     /**
@@ -41467,7 +41467,7 @@ class Sel {
      * @return bool
      * @throws Exception
      */
-    public static function validateSel(int $value): bool {
+    public static function validateRetain(int $value): bool {
         return true;
     }
 
@@ -41475,18 +41475,18 @@ class Sel {
      * @throws Exception
      * @return int
      */
-    public function getSel(): int {
-        if (Sel::validateSel($this->sel))  {
-            return $this->sel;
+    public function getRetain(): int {
+        if (Retain::validateRetain($this->retain))  {
+            return $this->retain;
         }
-        throw new Exception('never get to getSel Sel::sel');
+        throw new Exception('never get to getRetain Retain::retain');
     }
 
     /**
      * @return int
      */
-    public static function sampleSel(): int {
-        return 31; /*31:sel*/
+    public static function sampleRetain(): int {
+        return 31; /*31:retain*/
     }
 
     /**
@@ -41494,7 +41494,7 @@ class Sel {
      * @return bool
      */
     public function validate(): bool {
-        return Sel::validateSel($this->sel);
+        return Retain::validateRetain($this->retain);
     }
 
     /**
@@ -41503,44 +41503,44 @@ class Sel {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'SEL'} = $this->toSel();
+        $out->{'retain'} = $this->toRetain();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Sel
+     * @return Retain
      * @throws Exception
      */
-    public static function from(stdClass $obj): Sel {
-        if (!property_exists($obj, 'SEL')) {
+    public static function from(stdClass $obj): Retain {
+        if (!property_exists($obj, 'retain')) {
             throw new Exception("Missing required property");
         }
-        return new Sel(
-         Sel::fromSel($obj->{'SEL'})
+        return new Retain(
+         Retain::fromRetain($obj->{'retain'})
         );
     }
 
     /**
-     * @return Sel
+     * @return Retain
      */
-    public static function sample(): Sel {
-        return new Sel(
-         Sel::sampleSel()
+    public static function sample(): Retain {
+        return new Retain(
+         Retain::sampleRetain()
         );
     }
 }
 
-// This is an autogenerated file:Select
+// This is an autogenerated file:Rethrows
 
-class Select {
-    private int $select; // json:select Required
+class Rethrows {
+    private int $rethrows; // json:rethrows Required
 
     /**
-     * @param int $select
+     * @param int $rethrows
      */
-    public function __construct(int $select) {
-        $this->select = $select;
+    public function __construct(int $rethrows) {
+        $this->rethrows = $rethrows;
     }
 
     /**
@@ -41548,7 +41548,7 @@ class Select {
      * @throws Exception
      * @return int
      */
-    public static function fromSelect(int $value): int {
+    public static function fromRethrows(int $value): int {
         return $value; /*int*/
     }
 
@@ -41556,11 +41556,11 @@ class Select {
      * @throws Exception
      * @return int
      */
-    public function toSelect(): int {
-        if (Select::validateSelect($this->select))  {
-            return $this->select; /*int*/
+    public function toRethrows(): int {
+        if (Rethrows::validateRethrows($this->rethrows))  {
+            return $this->rethrows; /*int*/
         }
-        throw new Exception('never get to this Select::select');
+        throw new Exception('never get to this Rethrows::rethrows');
     }
 
     /**
@@ -41568,7 +41568,7 @@ class Select {
      * @return bool
      * @throws Exception
      */
-    public static function validateSelect(int $value): bool {
+    public static function validateRethrows(int $value): bool {
         return true;
     }
 
@@ -41576,18 +41576,18 @@ class Select {
      * @throws Exception
      * @return int
      */
-    public function getSelect(): int {
-        if (Select::validateSelect($this->select))  {
-            return $this->select;
+    public function getRethrows(): int {
+        if (Rethrows::validateRethrows($this->rethrows))  {
+            return $this->rethrows;
         }
-        throw new Exception('never get to getSelect Select::select');
+        throw new Exception('never get to getRethrows Rethrows::rethrows');
     }
 
     /**
      * @return int
      */
-    public static function sampleSelect(): int {
-        return 31; /*31:select*/
+    public static function sampleRethrows(): int {
+        return 31; /*31:rethrows*/
     }
 
     /**
@@ -41595,7 +41595,7 @@ class Select {
      * @return bool
      */
     public function validate(): bool {
-        return Select::validateSelect($this->select);
+        return Rethrows::validateRethrows($this->rethrows);
     }
 
     /**
@@ -41604,30 +41604,30 @@ class Select {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'select'} = $this->toSelect();
+        $out->{'rethrows'} = $this->toRethrows();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Select
+     * @return Rethrows
      * @throws Exception
      */
-    public static function from(stdClass $obj): Select {
-        if (!property_exists($obj, 'select')) {
+    public static function from(stdClass $obj): Rethrows {
+        if (!property_exists($obj, 'rethrows')) {
             throw new Exception("Missing required property");
         }
-        return new Select(
-         Select::fromSelect($obj->{'select'})
+        return new Rethrows(
+         Rethrows::fromRethrows($obj->{'rethrows'})
         );
     }
 
     /**
-     * @return Select
+     * @return Rethrows
      */
-    public static function sample(): Select {
-        return new Select(
-         Select::sampleSelect()
+    public static function sample(): Rethrows {
+        return new Rethrows(
+         Rethrows::sampleRethrows()
         );
     }
 }
@@ -41640,10 +41640,19 @@ class Obj5 {
     private This $obj5This; // json:this Required
     private Obj5True $obj5True; // json:true Required
     private TypeClass $obj5Type; // json:type Required
-    private SelfClass $self; // json:Self Required
-    private Sendable $sendable; // json:Sendable Required
-    private Serialize $serialize; // json:serialize Required
-    private SerializerProvider $serializerProvider; // json:SerializerProvider Required
+    private ReturnClass $return; // json:return Required
+    private Right $right; // json:right Required
+    private RuntimeType $runtimeType; // json:runtimeType Required
+    private S $s; // json:s Required
+    private Sbyte $sbyte; // json:sbyte Required
+    private Sealed $sealed; // json:sealed Required
+    private Sel $sel; // json:SEL Required
+    private Select $select; // json:select Required
+    private SelfClass $self; // json:Self Required
+    private Sendable $sendable; // json:Sendable Required
+    private SerializationFeature $serializationFeature; // json:SerializationFeature Required
+    private Serialize $serialize; // json:serialize Required
+    private SerializerProvider $serializerProvider; // json:SerializerProvider Required
     private Set $set; // json:set Required
     private Short $short; // json:short Required
     private Signed $signed; // json:signed Required
@@ -41666,6 +41675,7 @@ class Obj5 {
     private Synchronized $synchronized; // json:synchronized Required
     private System $system; // json:system Required
     private Template $template; // json:template Required
+    private TextNode $textNode; // json:TextNode Required
     private Then $then; // json:then Required
     private ThreadLocal $threadLocal; // json:thread_local Required
     private ThrowClass $throw; // json:throw Required
@@ -41690,16 +41700,6 @@ class Obj5 {
     private Unchecked $unchecked; // json:unchecked Required
     private Undefined $undefined; // json:undefined Required
     private Union $union; // json:union Required
-    private Unowned $unowned; // json:unowned Required
-    private Unsafe $unsafe; // json:unsafe Required
-    private Unsigned $unsigned; // json:unsigned 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
@@ -41707,8 +41707,17 @@ class Obj5 {
      * @param This $obj5This
      * @param Obj5True $obj5True
      * @param TypeClass $obj5Type
+     * @param ReturnClass $return
+     * @param Right $right
+     * @param RuntimeType $runtimeType
+     * @param S $s
+     * @param Sbyte $sbyte
+     * @param Sealed $sealed
+     * @param Sel $sel
+     * @param Select $select
      * @param SelfClass $self
      * @param Sendable $sendable
+     * @param SerializationFeature $serializationFeature
      * @param Serialize $serialize
      * @param SerializerProvider $serializerProvider
      * @param Set $set
@@ -41733,6 +41742,7 @@ class Obj5 {
      * @param Synchronized $synchronized
      * @param System $system
      * @param Template $template
+     * @param TextNode $textNode
      * @param Then $then
      * @param ThreadLocal $threadLocal
      * @param ThrowClass $throw
@@ -41757,25 +41767,24 @@ class Obj5 {
      * @param Unchecked $unchecked
      * @param Undefined $undefined
      * @param Union $union
-     * @param Unowned $unowned
-     * @param Unsafe $unsafe
-     * @param Unsigned $unsigned
-     * @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, Obj5Self $obj5Self, This $obj5This, Obj5True $obj5True, TypeClass $obj5Type, ReturnClass $return, Right $right, RuntimeType $runtimeType, S $s, Sbyte $sbyte, Sealed $sealed, Sel $sel, Select $select, SelfClass $self, Sendable $sendable, SerializationFeature $serializationFeature, 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, TextNode $textNode, 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) {
         $this->dummy = $dummy;
         $this->obj5Self = $obj5Self;
         $this->obj5This = $obj5This;
         $this->obj5True = $obj5True;
         $this->obj5Type = $obj5Type;
+        $this->return = $return;
+        $this->right = $right;
+        $this->runtimeType = $runtimeType;
+        $this->s = $s;
+        $this->sbyte = $sbyte;
+        $this->sealed = $sealed;
+        $this->sel = $sel;
+        $this->select = $select;
         $this->self = $self;
         $this->sendable = $sendable;
+        $this->serializationFeature = $serializationFeature;
         $this->serialize = $serialize;
         $this->serializerProvider = $serializerProvider;
         $this->set = $set;
@@ -41800,6 +41809,7 @@ class Obj5 {
         $this->synchronized = $synchronized;
         $this->system = $system;
         $this->template = $template;
+        $this->textNode = $textNode;
         $this->then = $then;
         $this->threadLocal = $threadLocal;
         $this->throw = $throw;
@@ -41824,16 +41834,6 @@ class Obj5 {
         $this->unchecked = $unchecked;
         $this->undefined = $undefined;
         $this->union = $union;
-        $this->unowned = $unowned;
-        $this->unsafe = $unsafe;
-        $this->unsigned = $unsigned;
-        $this->ushort = $ushort;
-        $this->using = $using;
-        $this->utf8JSONReader = $utf8JSONReader;
-        $this->utf8JSONWriter = $utf8JSONWriter;
-        $this->uuid = $uuid;
-        $this->var = $var;
-        $this->virtual = $virtual;
     }
 
     /**
@@ -42075,6 +42075,390 @@ class Obj5 {
         return TypeClass::sample(); /*35:obj5Type*/
     }
 
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return ReturnClass
+     */
+    public static function fromReturn(stdClass $value): ReturnClass {
+        return ReturnClass::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toReturn(): stdClass {
+        if (Obj5::validateReturn($this->return))  {
+            return $this->return->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::return');
+    }
+
+    /**
+     * @param ReturnClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateReturn(ReturnClass $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ReturnClass
+     */
+    public function getReturn(): ReturnClass {
+        if (Obj5::validateReturn($this->return))  {
+            return $this->return;
+        }
+        throw new Exception('never get to getReturn Obj5::return');
+    }
+
+    /**
+     * @return ReturnClass
+     */
+    public static function sampleReturn(): ReturnClass {
+        return ReturnClass::sample(); /*36:return*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Right
+     */
+    public static function fromRight(stdClass $value): Right {
+        return Right::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toRight(): stdClass {
+        if (Obj5::validateRight($this->right))  {
+            return $this->right->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::right');
+    }
+
+    /**
+     * @param Right
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRight(Right $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Right
+     */
+    public function getRight(): Right {
+        if (Obj5::validateRight($this->right))  {
+            return $this->right;
+        }
+        throw new Exception('never get to getRight Obj5::right');
+    }
+
+    /**
+     * @return Right
+     */
+    public static function sampleRight(): Right {
+        return Right::sample(); /*37:right*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return RuntimeType
+     */
+    public static function fromRuntimeType(stdClass $value): RuntimeType {
+        return RuntimeType::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toRuntimeType(): stdClass {
+        if (Obj5::validateRuntimeType($this->runtimeType))  {
+            return $this->runtimeType->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::runtimeType');
+    }
+
+    /**
+     * @param RuntimeType
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRuntimeType(RuntimeType $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return RuntimeType
+     */
+    public function getRuntimeType(): RuntimeType {
+        if (Obj5::validateRuntimeType($this->runtimeType))  {
+            return $this->runtimeType;
+        }
+        throw new Exception('never get to getRuntimeType Obj5::runtimeType');
+    }
+
+    /**
+     * @return RuntimeType
+     */
+    public static function sampleRuntimeType(): RuntimeType {
+        return RuntimeType::sample(); /*38:runtimeType*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return S
+     */
+    public static function fromS(stdClass $value): S {
+        return S::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toS(): stdClass {
+        if (Obj5::validateS($this->s))  {
+            return $this->s->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::s');
+    }
+
+    /**
+     * @param S
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateS(S $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return S
+     */
+    public function getS(): S {
+        if (Obj5::validateS($this->s))  {
+            return $this->s;
+        }
+        throw new Exception('never get to getS Obj5::s');
+    }
+
+    /**
+     * @return S
+     */
+    public static function sampleS(): S {
+        return S::sample(); /*39:s*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Sbyte
+     */
+    public static function fromSbyte(stdClass $value): Sbyte {
+        return Sbyte::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toSbyte(): stdClass {
+        if (Obj5::validateSbyte($this->sbyte))  {
+            return $this->sbyte->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::sbyte');
+    }
+
+    /**
+     * @param Sbyte
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSbyte(Sbyte $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Sbyte
+     */
+    public function getSbyte(): Sbyte {
+        if (Obj5::validateSbyte($this->sbyte))  {
+            return $this->sbyte;
+        }
+        throw new Exception('never get to getSbyte Obj5::sbyte');
+    }
+
+    /**
+     * @return Sbyte
+     */
+    public static function sampleSbyte(): Sbyte {
+        return Sbyte::sample(); /*40:sbyte*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Sealed
+     */
+    public static function fromSealed(stdClass $value): Sealed {
+        return Sealed::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toSealed(): stdClass {
+        if (Obj5::validateSealed($this->sealed))  {
+            return $this->sealed->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::sealed');
+    }
+
+    /**
+     * @param Sealed
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSealed(Sealed $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Sealed
+     */
+    public function getSealed(): Sealed {
+        if (Obj5::validateSealed($this->sealed))  {
+            return $this->sealed;
+        }
+        throw new Exception('never get to getSealed Obj5::sealed');
+    }
+
+    /**
+     * @return Sealed
+     */
+    public static function sampleSealed(): Sealed {
+        return Sealed::sample(); /*41:sealed*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Sel
+     */
+    public static function fromSel(stdClass $value): Sel {
+        return Sel::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toSel(): stdClass {
+        if (Obj5::validateSel($this->sel))  {
+            return $this->sel->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::sel');
+    }
+
+    /**
+     * @param Sel
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSel(Sel $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Sel
+     */
+    public function getSel(): Sel {
+        if (Obj5::validateSel($this->sel))  {
+            return $this->sel;
+        }
+        throw new Exception('never get to getSel Obj5::sel');
+    }
+
+    /**
+     * @return Sel
+     */
+    public static function sampleSel(): Sel {
+        return Sel::sample(); /*42:sel*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Select
+     */
+    public static function fromSelect(stdClass $value): Select {
+        return Select::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toSelect(): stdClass {
+        if (Obj5::validateSelect($this->select))  {
+            return $this->select->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::select');
+    }
+
+    /**
+     * @param Select
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSelect(Select $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return Select
+     */
+    public function getSelect(): Select {
+        if (Obj5::validateSelect($this->select))  {
+            return $this->select;
+        }
+        throw new Exception('never get to getSelect Obj5::select');
+    }
+
+    /**
+     * @return Select
+     */
+    public static function sampleSelect(): Select {
+        return Select::sample(); /*43:select*/
+    }
+
     /**
      * @param stdClass $value
      * @throws Exception
@@ -42120,7 +42504,7 @@ class Obj5 {
      * @return SelfClass
      */
     public static function sampleSelf(): SelfClass {
-        return SelfClass::sample(); /*36:self*/
+        return SelfClass::sample(); /*44:self*/
     }
 
     /**
@@ -42168,7 +42552,55 @@ class Obj5 {
      * @return Sendable
      */
     public static function sampleSendable(): Sendable {
-        return Sendable::sample(); /*37:sendable*/
+        return Sendable::sample(); /*45:sendable*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return SerializationFeature
+     */
+    public static function fromSerializationFeature(stdClass $value): SerializationFeature {
+        return SerializationFeature::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toSerializationFeature(): stdClass {
+        if (Obj5::validateSerializationFeature($this->serializationFeature))  {
+            return $this->serializationFeature->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::serializationFeature');
+    }
+
+    /**
+     * @param SerializationFeature
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSerializationFeature(SerializationFeature $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return SerializationFeature
+     */
+    public function getSerializationFeature(): SerializationFeature {
+        if (Obj5::validateSerializationFeature($this->serializationFeature))  {
+            return $this->serializationFeature;
+        }
+        throw new Exception('never get to getSerializationFeature Obj5::serializationFeature');
+    }
+
+    /**
+     * @return SerializationFeature
+     */
+    public static function sampleSerializationFeature(): SerializationFeature {
+        return SerializationFeature::sample(); /*46:serializationFeature*/
     }
 
     /**
@@ -42216,7 +42648,7 @@ class Obj5 {
      * @return Serialize
      */
     public static function sampleSerialize(): Serialize {
-        return Serialize::sample(); /*38:serialize*/
+        return Serialize::sample(); /*47:serialize*/
     }
 
     /**
@@ -42264,7 +42696,7 @@ class Obj5 {
      * @return SerializerProvider
      */
     public static function sampleSerializerProvider(): SerializerProvider {
-        return SerializerProvider::sample(); /*39:serializerProvider*/
+        return SerializerProvider::sample(); /*48:serializerProvider*/
     }
 
     /**
@@ -42312,7 +42744,7 @@ class Obj5 {
      * @return Set
      */
     public static function sampleSet(): Set {
-        return Set::sample(); /*40:set*/
+        return Set::sample(); /*49:set*/
     }
 
     /**
@@ -42360,7 +42792,7 @@ class Obj5 {
      * @return Short
      */
     public static function sampleShort(): Short {
-        return Short::sample(); /*41:short*/
+        return Short::sample(); /*50:short*/
     }
 
     /**
@@ -42408,7 +42840,7 @@ class Obj5 {
      * @return Signed
      */
     public static function sampleSigned(): Signed {
-        return Signed::sample(); /*42:signed*/
+        return Signed::sample(); /*51:signed*/
     }
 
     /**
@@ -42456,7 +42888,7 @@ class Obj5 {
      * @return SimpleModule
      */
     public static function sampleSimpleModule(): SimpleModule {
-        return SimpleModule::sample(); /*43:simpleModule*/
+        return SimpleModule::sample(); /*52:simpleModule*/
     }
 
     /**
@@ -42504,7 +42936,7 @@ class Obj5 {
      * @return Sizeof
      */
     public static function sampleSizeof(): Sizeof {
-        return Sizeof::sample(); /*44:sizeof*/
+        return Sizeof::sample(); /*53:sizeof*/
     }
 
     /**
@@ -42552,7 +42984,7 @@ class Obj5 {
      * @return Stackalloc
      */
     public static function sampleStackalloc(): Stackalloc {
-        return Stackalloc::sample(); /*45:stackalloc*/
+        return Stackalloc::sample(); /*54:stackalloc*/
     }
 
     /**
@@ -42600,7 +43032,7 @@ class Obj5 {
      * @return Standards
      */
     public static function sampleStandards(): Standards {
-        return Standards::sample(); /*46:standards*/
+        return Standards::sample(); /*55:standards*/
     }
 
     /**
@@ -42648,7 +43080,7 @@ class Obj5 {
      * @return StaticClass
      */
     public static function sampleStatic(): StaticClass {
-        return StaticClass::sample(); /*47:static*/
+        return StaticClass::sample(); /*56:static*/
     }
 
     /**
@@ -42696,7 +43128,7 @@ class Obj5 {
      * @return StaticAssert
      */
     public static function sampleStaticAssert(): StaticAssert {
-        return StaticAssert::sample(); /*48:staticAssert*/
+        return StaticAssert::sample(); /*57:staticAssert*/
     }
 
     /**
@@ -42744,7 +43176,7 @@ class Obj5 {
      * @return StaticCast
      */
     public static function sampleStaticCast(): StaticCast {
-        return StaticCast::sample(); /*49:staticCast*/
+        return StaticCast::sample(); /*58:staticCast*/
     }
 
     /**
@@ -42792,7 +43224,7 @@ class Obj5 {
      * @return StdDeserializer
      */
     public static function sampleStdDeserializer(): StdDeserializer {
-        return StdDeserializer::sample(); /*50:stdDeserializer*/
+        return StdDeserializer::sample(); /*59:stdDeserializer*/
     }
 
     /**
@@ -42840,7 +43272,7 @@ class Obj5 {
      * @return StdSerializer
      */
     public static function sampleStdSerializer(): StdSerializer {
-        return StdSerializer::sample(); /*51:stdSerializer*/
+        return StdSerializer::sample(); /*60:stdSerializer*/
     }
 
     /**
@@ -42888,7 +43320,7 @@ class Obj5 {
      * @return Strictfp
      */
     public static function sampleStrictfp(): Strictfp {
-        return Strictfp::sample(); /*52:strictfp*/
+        return Strictfp::sample(); /*61:strictfp*/
     }
 
     /**
@@ -42936,7 +43368,7 @@ class Obj5 {
      * @return StringClass
      */
     public static function sampleString(): StringClass {
-        return StringClass::sample(); /*53:string*/
+        return StringClass::sample(); /*62:string*/
     }
 
     /**
@@ -42984,7 +43416,7 @@ class Obj5 {
      * @return Struct
      */
     public static function sampleStruct(): Struct {
-        return Struct::sample(); /*54:struct*/
+        return Struct::sample(); /*63:struct*/
     }
 
     /**
@@ -43032,7 +43464,7 @@ class Obj5 {
      * @return Subscript
      */
     public static function sampleSubscript(): Subscript {
-        return Subscript::sample(); /*55:subscript*/
+        return Subscript::sample(); /*64:subscript*/
     }
 
     /**
@@ -43080,7 +43512,7 @@ class Obj5 {
      * @return Super
      */
     public static function sampleSuper(): Super {
-        return Super::sample(); /*56:super*/
+        return Super::sample(); /*65:super*/
     }
 
     /**
@@ -43128,7 +43560,7 @@ class Obj5 {
      * @return SwitchClass
      */
     public static function sampleSwitch(): SwitchClass {
-        return SwitchClass::sample(); /*57:switch*/
+        return SwitchClass::sample(); /*66:switch*/
     }
 
     /**
@@ -43176,7 +43608,7 @@ class Obj5 {
      * @return Symbol
      */
     public static function sampleSymbol(): Symbol {
-        return Symbol::sample(); /*58:symbol*/
+        return Symbol::sample(); /*67:symbol*/
     }
 
     /**
@@ -43224,7 +43656,7 @@ class Obj5 {
      * @return Synchronized
      */
     public static function sampleSynchronized(): Synchronized {
-        return Synchronized::sample(); /*59:synchronized*/
+        return Synchronized::sample(); /*68:synchronized*/
     }
 
     /**
@@ -43272,7 +43704,7 @@ class Obj5 {
      * @return System
      */
     public static function sampleSystem(): System {
-        return System::sample(); /*60:system*/
+        return System::sample(); /*69:system*/
     }
 
     /**
@@ -43320,7 +43752,55 @@ class Obj5 {
      * @return Template
      */
     public static function sampleTemplate(): Template {
-        return Template::sample(); /*61:template*/
+        return Template::sample(); /*70:template*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return TextNode
+     */
+    public static function fromTextNode(stdClass $value): TextNode {
+        return TextNode::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toTextNode(): stdClass {
+        if (Obj5::validateTextNode($this->textNode))  {
+            return $this->textNode->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj5::textNode');
+    }
+
+    /**
+     * @param TextNode
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTextNode(TextNode $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return TextNode
+     */
+    public function getTextNode(): TextNode {
+        if (Obj5::validateTextNode($this->textNode))  {
+            return $this->textNode;
+        }
+        throw new Exception('never get to getTextNode Obj5::textNode');
+    }
+
+    /**
+     * @return TextNode
+     */
+    public static function sampleTextNode(): TextNode {
+        return TextNode::sample(); /*71:textNode*/
     }
 
     /**
@@ -43368,7 +43848,7 @@ class Obj5 {
      * @return Then
      */
     public static function sampleThen(): Then {
-        return Then::sample(); /*62:then*/
+        return Then::sample(); /*72:then*/
     }
 
     /**
@@ -43416,7 +43896,7 @@ class Obj5 {
      * @return ThreadLocal
      */
     public static function sampleThreadLocal(): ThreadLocal {
-        return ThreadLocal::sample(); /*63:threadLocal*/
+        return ThreadLocal::sample(); /*73:threadLocal*/
     }
 
     /**
@@ -43464,7 +43944,7 @@ class Obj5 {
      * @return ThrowClass
      */
     public static function sampleThrow(): ThrowClass {
-        return ThrowClass::sample(); /*64:throw*/
+        return ThrowClass::sample(); /*74:throw*/
     }
 
     /**
@@ -43512,7 +43992,7 @@ class Obj5 {
      * @return Throws
      */
     public static function sampleThrows(): Throws {
-        return Throws::sample(); /*65:throws*/
+        return Throws::sample(); /*75:throws*/
     }
 
     /**
@@ -43560,7 +44040,7 @@ class Obj5 {
      * @return TimeOnly
      */
     public static function sampleTimeOnly(): TimeOnly {
-        return TimeOnly::sample(); /*66:timeOnly*/
+        return TimeOnly::sample(); /*76:timeOnly*/
     }
 
     /**
@@ -43608,7 +44088,7 @@ class Obj5 {
      * @return TimeOnlyConverter
      */
     public static function sampleTimeOnlyConverter(): TimeOnlyConverter {
-        return TimeOnlyConverter::sample(); /*67:timeOnlyConverter*/
+        return TimeOnlyConverter::sample(); /*77:timeOnlyConverter*/
     }
 
     /**
@@ -43656,7 +44136,7 @@ class Obj5 {
      * @return TimeZone
      */
     public static function sampleTimeZone(): TimeZone {
-        return TimeZone::sample(); /*68:timeZone*/
+        return TimeZone::sample(); /*78:timeZone*/
     }
 
     /**
@@ -43704,7 +44184,7 @@ class Obj5 {
      * @return ToJSON
      */
     public static function sampleToJSON(): ToJSON {
-        return ToJSON::sample(); /*69:toJSON*/
+        return ToJSON::sample(); /*79:toJSON*/
     }
 
     /**
@@ -43752,7 +44232,7 @@ class Obj5 {
      * @return ToString
      */
     public static function sampleToString(): ToString {
-        return ToString::sample(); /*70:toString*/
+        return ToString::sample(); /*80:toString*/
     }
 
     /**
@@ -43800,7 +44280,7 @@ class Obj5 {
      * @return TopLevelClass
      */
     public static function sampleTopLevel(): TopLevelClass {
-        return TopLevelClass::sample(); /*71:topLevel*/
+        return TopLevelClass::sample(); /*81:topLevel*/
     }
 
     /**
@@ -43848,7 +44328,7 @@ class Obj5 {
      * @return Transient
      */
     public static function sampleTransient(): Transient {
-        return Transient::sample(); /*72:transient*/
+        return Transient::sample(); /*82:transient*/
     }
 
     /**
@@ -43896,7 +44376,7 @@ class Obj5 {
      * @return TrueClass
      */
     public static function sampleTrue(): TrueClass {
-        return TrueClass::sample(); /*73:true*/
+        return TrueClass::sample(); /*83:true*/
     }
 
     /**
@@ -43944,7 +44424,7 @@ class Obj5 {
      * @return TryClass
      */
     public static function sampleTry(): TryClass {
-        return TryClass::sample(); /*74:try*/
+        return TryClass::sample(); /*84:try*/
     }
 
     /**
@@ -43992,7 +44472,7 @@ class Obj5 {
      * @return Type
      */
     public static function sampleType(): Type {
-        return Type::sample(); /*75:type*/
+        return Type::sample(); /*85:type*/
     }
 
     /**
@@ -44040,7 +44520,7 @@ class Obj5 {
      * @return Typealias
      */
     public static function sampleTypealias(): Typealias {
-        return Typealias::sample(); /*76:typealias*/
+        return Typealias::sample(); /*86:typealias*/
     }
 
     /**
@@ -44088,7 +44568,7 @@ class Obj5 {
      * @return Typedef
      */
     public static function sampleTypedef(): Typedef {
-        return Typedef::sample(); /*77:typedef*/
+        return Typedef::sample(); /*87:typedef*/
     }
 
     /**
@@ -44136,7 +44616,7 @@ class Obj5 {
      * @return Typeid
      */
     public static function sampleTypeid(): Typeid {
-        return Typeid::sample(); /*78:typeid*/
+        return Typeid::sample(); /*88:typeid*/
     }
 
     /**
@@ -44184,7 +44664,7 @@ class Obj5 {
      * @return Typename
      */
     public static function sampleTypename(): Typename {
-        return Typename::sample(); /*79:typename*/
+        return Typename::sample(); /*89:typename*/
     }
 
     /**
@@ -44232,7 +44712,7 @@ class Obj5 {
      * @return Typeof
      */
     public static function sampleTypeof(): Typeof {
-        return Typeof::sample(); /*80:typeof*/
+        return Typeof::sample(); /*90:typeof*/
     }
 
     /**
@@ -44280,7 +44760,7 @@ class Obj5 {
      * @return Uint
      */
     public static function sampleUint(): Uint {
-        return Uint::sample(); /*81:uint*/
+        return Uint::sample(); /*91:uint*/
     }
 
     /**
@@ -44328,7 +44808,7 @@ class Obj5 {
      * @return Ulong
      */
     public static function sampleUlong(): Ulong {
-        return Ulong::sample(); /*82:ulong*/
+        return Ulong::sample(); /*92:ulong*/
     }
 
     /**
@@ -44376,7 +44856,7 @@ class Obj5 {
      * @return Unchecked
      */
     public static function sampleUnchecked(): Unchecked {
-        return Unchecked::sample(); /*83:unchecked*/
+        return Unchecked::sample(); /*93:unchecked*/
     }
 
     /**
@@ -44424,7 +44904,7 @@ class Obj5 {
      * @return Undefined
      */
     public static function sampleUndefined(): Undefined {
-        return Undefined::sample(); /*84:undefined*/
+        return Undefined::sample(); /*94:undefined*/
     }
 
     /**
@@ -44472,487 +44952,7 @@ class Obj5 {
      * @return Union
      */
     public static function sampleUnion(): Union {
-        return Union::sample(); /*85:union*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Unowned
-     */
-    public static function fromUnowned(stdClass $value): Unowned {
-        return Unowned::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toUnowned(): stdClass {
-        if (Obj5::validateUnowned($this->unowned))  {
-            return $this->unowned->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj5::unowned');
-    }
-
-    /**
-     * @param Unowned
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateUnowned(Unowned $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return Unowned
-     */
-    public function getUnowned(): Unowned {
-        if (Obj5::validateUnowned($this->unowned))  {
-            return $this->unowned;
-        }
-        throw new Exception('never get to getUnowned Obj5::unowned');
-    }
-
-    /**
-     * @return Unowned
-     */
-    public static function sampleUnowned(): Unowned {
-        return Unowned::sample(); /*86:unowned*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Unsafe
-     */
-    public static function fromUnsafe(stdClass $value): Unsafe {
-        return Unsafe::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toUnsafe(): stdClass {
-        if (Obj5::validateUnsafe($this->unsafe))  {
-            return $this->unsafe->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj5::unsafe');
-    }
-
-    /**
-     * @param Unsafe
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateUnsafe(Unsafe $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return Unsafe
-     */
-    public function getUnsafe(): Unsafe {
-        if (Obj5::validateUnsafe($this->unsafe))  {
-            return $this->unsafe;
-        }
-        throw new Exception('never get to getUnsafe Obj5::unsafe');
-    }
-
-    /**
-     * @return Unsafe
-     */
-    public static function sampleUnsafe(): Unsafe {
-        return Unsafe::sample(); /*87:unsafe*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Unsigned
-     */
-    public static function fromUnsigned(stdClass $value): Unsigned {
-        return Unsigned::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toUnsigned(): stdClass {
-        if (Obj5::validateUnsigned($this->unsigned))  {
-            return $this->unsigned->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj5::unsigned');
-    }
-
-    /**
-     * @param Unsigned
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateUnsigned(Unsigned $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return Unsigned
-     */
-    public function getUnsigned(): Unsigned {
-        if (Obj5::validateUnsigned($this->unsigned))  {
-            return $this->unsigned;
-        }
-        throw new Exception('never get to getUnsigned Obj5::unsigned');
-    }
-
-    /**
-     * @return Unsigned
-     */
-    public static function sampleUnsigned(): Unsigned {
-        return Unsigned::sample(); /*88:unsigned*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Ushort
-     */
-    public static function fromUshort(stdClass $value): Ushort {
-        return Ushort::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toUshort(): stdClass {
-        if (Obj5::validateUshort($this->ushort))  {
-            return $this->ushort->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj5::ushort');
-    }
-
-    /**
-     * @param Ushort
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateUshort(Ushort $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return Ushort
-     */
-    public function getUshort(): Ushort {
-        if (Obj5::validateUshort($this->ushort))  {
-            return $this->ushort;
-        }
-        throw new Exception('never get to getUshort Obj5::ushort');
-    }
-
-    /**
-     * @return Ushort
-     */
-    public static function sampleUshort(): Ushort {
-        return Ushort::sample(); /*89:ushort*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Using
-     */
-    public static function fromUsing(stdClass $value): Using {
-        return Using::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toUsing(): stdClass {
-        if (Obj5::validateUsing($this->using))  {
-            return $this->using->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj5::using');
-    }
-
-    /**
-     * @param Using
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateUsing(Using $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return Using
-     */
-    public function getUsing(): Using {
-        if (Obj5::validateUsing($this->using))  {
-            return $this->using;
-        }
-        throw new Exception('never get to getUsing Obj5::using');
-    }
-
-    /**
-     * @return Using
-     */
-    public static function sampleUsing(): Using {
-        return Using::sample(); /*90:using*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Utf8JSONReader
-     */
-    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*/
+        return Union::sample(); /*95:union*/
     }
 
     /**
@@ -44965,8 +44965,17 @@ class Obj5 {
         || Obj5::validateObj5This($this->obj5This)
         || Obj5::validateObj5True($this->obj5True)
         || Obj5::validateObj5Type($this->obj5Type)
+        || Obj5::validateReturn($this->return)
+        || Obj5::validateRight($this->right)
+        || Obj5::validateRuntimeType($this->runtimeType)
+        || Obj5::validateS($this->s)
+        || Obj5::validateSbyte($this->sbyte)
+        || Obj5::validateSealed($this->sealed)
+        || Obj5::validateSel($this->sel)
+        || Obj5::validateSelect($this->select)
         || Obj5::validateSelf($this->self)
         || Obj5::validateSendable($this->sendable)
+        || Obj5::validateSerializationFeature($this->serializationFeature)
         || Obj5::validateSerialize($this->serialize)
         || Obj5::validateSerializerProvider($this->serializerProvider)
         || Obj5::validateSet($this->set)
@@ -44991,6 +45000,7 @@ class Obj5 {
         || Obj5::validateSynchronized($this->synchronized)
         || Obj5::validateSystem($this->system)
         || Obj5::validateTemplate($this->template)
+        || Obj5::validateTextNode($this->textNode)
         || Obj5::validateThen($this->then)
         || Obj5::validateThreadLocal($this->threadLocal)
         || Obj5::validateThrow($this->throw)
@@ -45014,17 +45024,7 @@ class Obj5 {
         || Obj5::validateUlong($this->ulong)
         || Obj5::validateUnchecked($this->unchecked)
         || Obj5::validateUndefined($this->undefined)
-        || Obj5::validateUnion($this->union)
-        || 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::validateUnion($this->union);
     }
 
     /**
@@ -45038,8 +45038,17 @@ class Obj5 {
         $out->{'this'} = $this->toObj5This();
         $out->{'true'} = $this->toObj5True();
         $out->{'type'} = $this->toObj5Type();
+        $out->{'return'} = $this->toReturn();
+        $out->{'right'} = $this->toRight();
+        $out->{'runtimeType'} = $this->toRuntimeType();
+        $out->{'s'} = $this->toS();
+        $out->{'sbyte'} = $this->toSbyte();
+        $out->{'sealed'} = $this->toSealed();
+        $out->{'SEL'} = $this->toSel();
+        $out->{'select'} = $this->toSelect();
         $out->{'Self'} = $this->toSelf();
         $out->{'Sendable'} = $this->toSendable();
+        $out->{'SerializationFeature'} = $this->toSerializationFeature();
         $out->{'serialize'} = $this->toSerialize();
         $out->{'SerializerProvider'} = $this->toSerializerProvider();
         $out->{'set'} = $this->toSet();
@@ -45064,6 +45073,7 @@ class Obj5 {
         $out->{'synchronized'} = $this->toSynchronized();
         $out->{'system'} = $this->toSystem();
         $out->{'template'} = $this->toTemplate();
+        $out->{'TextNode'} = $this->toTextNode();
         $out->{'then'} = $this->toThen();
         $out->{'thread_local'} = $this->toThreadLocal();
         $out->{'throw'} = $this->toThrow();
@@ -45088,16 +45098,6 @@ class Obj5 {
         $out->{'unchecked'} = $this->toUnchecked();
         $out->{'undefined'} = $this->toUndefined();
         $out->{'union'} = $this->toUnion();
-        $out->{'unowned'} = $this->toUnowned();
-        $out->{'unsafe'} = $this->toUnsafe();
-        $out->{'unsigned'} = $this->toUnsigned();
-        $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;
     }
 
@@ -45122,12 +45122,39 @@ class Obj5 {
         if (!property_exists($obj, 'type')) {
             throw new Exception("Missing required property");
         }
+        if (!property_exists($obj, 'return')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'right')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'runtimeType')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 's')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'sbyte')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'sealed')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'SEL')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'select')) {
+            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, 'SerializationFeature')) {
+            throw new Exception("Missing required property");
+        }
         if (!property_exists($obj, 'serialize')) {
             throw new Exception("Missing required property");
         }
@@ -45200,6 +45227,9 @@ class Obj5 {
         if (!property_exists($obj, 'template')) {
             throw new Exception("Missing required property");
         }
+        if (!property_exists($obj, 'TextNode')) {
+            throw new Exception("Missing required property");
+        }
         if (!property_exists($obj, 'then')) {
             throw new Exception("Missing required property");
         }
@@ -45272,189 +45302,1775 @@ class Obj5 {
         if (!property_exists($obj, 'union')) {
             throw new Exception("Missing required property");
         }
-        if (!property_exists($obj, 'unowned')) {
-            throw new Exception("Missing required property");
+        return new Obj5(
+         Obj5::fromDummy($obj->{'dummy'})
+        ,Obj5::fromObj5Self($obj->{'self'})
+        ,Obj5::fromObj5This($obj->{'this'})
+        ,Obj5::fromObj5True($obj->{'true'})
+        ,Obj5::fromObj5Type($obj->{'type'})
+        ,Obj5::fromReturn($obj->{'return'})
+        ,Obj5::fromRight($obj->{'right'})
+        ,Obj5::fromRuntimeType($obj->{'runtimeType'})
+        ,Obj5::fromS($obj->{'s'})
+        ,Obj5::fromSbyte($obj->{'sbyte'})
+        ,Obj5::fromSealed($obj->{'sealed'})
+        ,Obj5::fromSel($obj->{'SEL'})
+        ,Obj5::fromSelect($obj->{'select'})
+        ,Obj5::fromSelf($obj->{'Self'})
+        ,Obj5::fromSendable($obj->{'Sendable'})
+        ,Obj5::fromSerializationFeature($obj->{'SerializationFeature'})
+        ,Obj5::fromSerialize($obj->{'serialize'})
+        ,Obj5::fromSerializerProvider($obj->{'SerializerProvider'})
+        ,Obj5::fromSet($obj->{'set'})
+        ,Obj5::fromShort($obj->{'short'})
+        ,Obj5::fromSigned($obj->{'signed'})
+        ,Obj5::fromSimpleModule($obj->{'SimpleModule'})
+        ,Obj5::fromSizeof($obj->{'sizeof'})
+        ,Obj5::fromStackalloc($obj->{'stackalloc'})
+        ,Obj5::fromStandards($obj->{'Standards'})
+        ,Obj5::fromStatic($obj->{'static'})
+        ,Obj5::fromStaticAssert($obj->{'static_assert'})
+        ,Obj5::fromStaticCast($obj->{'static_cast'})
+        ,Obj5::fromStdDeserializer($obj->{'StdDeserializer'})
+        ,Obj5::fromStdSerializer($obj->{'StdSerializer'})
+        ,Obj5::fromStrictfp($obj->{'strictfp'})
+        ,Obj5::fromString($obj->{'string'})
+        ,Obj5::fromStruct($obj->{'struct'})
+        ,Obj5::fromSubscript($obj->{'subscript'})
+        ,Obj5::fromSuper($obj->{'super'})
+        ,Obj5::fromSwitch($obj->{'switch'})
+        ,Obj5::fromSymbol($obj->{'symbol'})
+        ,Obj5::fromSynchronized($obj->{'synchronized'})
+        ,Obj5::fromSystem($obj->{'system'})
+        ,Obj5::fromTemplate($obj->{'template'})
+        ,Obj5::fromTextNode($obj->{'TextNode'})
+        ,Obj5::fromThen($obj->{'then'})
+        ,Obj5::fromThreadLocal($obj->{'thread_local'})
+        ,Obj5::fromThrow($obj->{'throw'})
+        ,Obj5::fromThrows($obj->{'throws'})
+        ,Obj5::fromTimeOnly($obj->{'TimeOnly'})
+        ,Obj5::fromTimeOnlyConverter($obj->{'TimeOnlyConverter'})
+        ,Obj5::fromTimeZone($obj->{'TimeZone'})
+        ,Obj5::fromToJSON($obj->{'to_json'})
+        ,Obj5::fromToString($obj->{'toString'})
+        ,Obj5::fromTopLevel($obj->{'top_level'})
+        ,Obj5::fromTransient($obj->{'transient'})
+        ,Obj5::fromTrue($obj->{'True'})
+        ,Obj5::fromTry($obj->{'try'})
+        ,Obj5::fromType($obj->{'Type'})
+        ,Obj5::fromTypealias($obj->{'typealias'})
+        ,Obj5::fromTypedef($obj->{'typedef'})
+        ,Obj5::fromTypeid($obj->{'typeid'})
+        ,Obj5::fromTypename($obj->{'typename'})
+        ,Obj5::fromTypeof($obj->{'typeof'})
+        ,Obj5::fromUint($obj->{'uint'})
+        ,Obj5::fromUlong($obj->{'ulong'})
+        ,Obj5::fromUnchecked($obj->{'unchecked'})
+        ,Obj5::fromUndefined($obj->{'undefined'})
+        ,Obj5::fromUnion($obj->{'union'})
+        );
+    }
+
+    /**
+     * @return Obj5
+     */
+    public static function sample(): Obj5 {
+        return new Obj5(
+         Obj5::sampleDummy()
+        ,Obj5::sampleObj5Self()
+        ,Obj5::sampleObj5This()
+        ,Obj5::sampleObj5True()
+        ,Obj5::sampleObj5Type()
+        ,Obj5::sampleReturn()
+        ,Obj5::sampleRight()
+        ,Obj5::sampleRuntimeType()
+        ,Obj5::sampleS()
+        ,Obj5::sampleSbyte()
+        ,Obj5::sampleSealed()
+        ,Obj5::sampleSel()
+        ,Obj5::sampleSelect()
+        ,Obj5::sampleSelf()
+        ,Obj5::sampleSendable()
+        ,Obj5::sampleSerializationFeature()
+        ,Obj5::sampleSerialize()
+        ,Obj5::sampleSerializerProvider()
+        ,Obj5::sampleSet()
+        ,Obj5::sampleShort()
+        ,Obj5::sampleSigned()
+        ,Obj5::sampleSimpleModule()
+        ,Obj5::sampleSizeof()
+        ,Obj5::sampleStackalloc()
+        ,Obj5::sampleStandards()
+        ,Obj5::sampleStatic()
+        ,Obj5::sampleStaticAssert()
+        ,Obj5::sampleStaticCast()
+        ,Obj5::sampleStdDeserializer()
+        ,Obj5::sampleStdSerializer()
+        ,Obj5::sampleStrictfp()
+        ,Obj5::sampleString()
+        ,Obj5::sampleStruct()
+        ,Obj5::sampleSubscript()
+        ,Obj5::sampleSuper()
+        ,Obj5::sampleSwitch()
+        ,Obj5::sampleSymbol()
+        ,Obj5::sampleSynchronized()
+        ,Obj5::sampleSystem()
+        ,Obj5::sampleTemplate()
+        ,Obj5::sampleTextNode()
+        ,Obj5::sampleThen()
+        ,Obj5::sampleThreadLocal()
+        ,Obj5::sampleThrow()
+        ,Obj5::sampleThrows()
+        ,Obj5::sampleTimeOnly()
+        ,Obj5::sampleTimeOnlyConverter()
+        ,Obj5::sampleTimeZone()
+        ,Obj5::sampleToJSON()
+        ,Obj5::sampleToString()
+        ,Obj5::sampleTopLevel()
+        ,Obj5::sampleTransient()
+        ,Obj5::sampleTrue()
+        ,Obj5::sampleTry()
+        ,Obj5::sampleType()
+        ,Obj5::sampleTypealias()
+        ,Obj5::sampleTypedef()
+        ,Obj5::sampleTypeid()
+        ,Obj5::sampleTypename()
+        ,Obj5::sampleTypeof()
+        ,Obj5::sampleUint()
+        ,Obj5::sampleUlong()
+        ,Obj5::sampleUnchecked()
+        ,Obj5::sampleUndefined()
+        ,Obj5::sampleUnion()
+        );
+    }
+}
+
+// This is an autogenerated file:Obj5Self
+
+class Obj5Self {
+    private int $self; // json:self Required
+
+    /**
+     * @param int $self
+     */
+    public function __construct(int $self) {
+        $this->self = $self;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromSelf(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toSelf(): int {
+        if (Obj5Self::validateSelf($this->self))  {
+            return $this->self; /*int*/
         }
-        if (!property_exists($obj, 'unsafe')) {
-            throw new Exception("Missing required property");
+        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;
         }
-        if (!property_exists($obj, 'unsigned')) {
+        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");
         }
-        if (!property_exists($obj, 'ushort')) {
-            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*/
         }
-        if (!property_exists($obj, 'using')) {
-            throw new Exception("Missing required property");
+        throw new Exception('never get to this This::thisThis');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateThisThis(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getThisThis(): int {
+        if (This::validateThisThis($this->thisThis))  {
+            return $this->thisThis;
         }
-        if (!property_exists($obj, 'Utf8JsonReader')) {
+        throw new Exception('never get to getThisThis This::thisThis');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleThisThis(): int {
+        return 31; /*31:thisThis*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return This::validateThisThis($this->thisThis);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'this'} = $this->toThisThis();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return This
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): This {
+        if (!property_exists($obj, 'this')) {
             throw new Exception("Missing required property");
         }
-        if (!property_exists($obj, 'Utf8JsonWriter')) {
-            throw new Exception("Missing required property");
+        return new This(
+         This::fromThisThis($obj->{'this'})
+        );
+    }
+
+    /**
+     * @return This
+     */
+    public static function sample(): This {
+        return new This(
+         This::sampleThisThis()
+        );
+    }
+}
+
+// This is an autogenerated file:Obj5True
+
+class Obj5True {
+    private int $true; // json:true Required
+
+    /**
+     * @param int $true
+     */
+    public function __construct(int $true) {
+        $this->true = $true;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromTrue(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toTrue(): int {
+        if (Obj5True::validateTrue($this->true))  {
+            return $this->true; /*int*/
         }
-        if (!property_exists($obj, 'UUID')) {
-            throw new Exception("Missing required property");
+        throw new Exception('never get to this Obj5True::true');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTrue(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getTrue(): int {
+        if (Obj5True::validateTrue($this->true))  {
+            return $this->true;
         }
-        if (!property_exists($obj, 'var')) {
+        throw new Exception('never get to getTrue Obj5True::true');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleTrue(): int {
+        return 31; /*31:true*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Obj5True::validateTrue($this->true);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'true'} = $this->toTrue();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Obj5True
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Obj5True {
+        if (!property_exists($obj, 'true')) {
             throw new Exception("Missing required property");
         }
-        if (!property_exists($obj, 'virtual')) {
+        return new Obj5True(
+         Obj5True::fromTrue($obj->{'true'})
+        );
+    }
+
+    /**
+     * @return Obj5True
+     */
+    public static function sample(): Obj5True {
+        return new Obj5True(
+         Obj5True::sampleTrue()
+        );
+    }
+}
+
+// This is an autogenerated file:TypeClass
+
+class TypeClass {
+    private int $type; // json:type Required
+
+    /**
+     * @param int $type
+     */
+    public function __construct(int $type) {
+        $this->type = $type;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromType(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toType(): int {
+        if (TypeClass::validateType($this->type))  {
+            return $this->type; /*int*/
+        }
+        throw new Exception('never get to this TypeClass::type');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateType(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getType(): int {
+        if (TypeClass::validateType($this->type))  {
+            return $this->type;
+        }
+        throw new Exception('never get to getType TypeClass::type');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleType(): int {
+        return 31; /*31:type*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return TypeClass::validateType($this->type);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'type'} = $this->toType();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return TypeClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): TypeClass {
+        if (!property_exists($obj, 'type')) {
+            throw new Exception("Missing required property");
+        }
+        return new TypeClass(
+         TypeClass::fromType($obj->{'type'})
+        );
+    }
+
+    /**
+     * @return TypeClass
+     */
+    public static function sample(): TypeClass {
+        return new TypeClass(
+         TypeClass::sampleType()
+        );
+    }
+}
+
+// This is an autogenerated file:ReturnClass
+
+class ReturnClass {
+    private int $return; // json:return Required
+
+    /**
+     * @param int $return
+     */
+    public function __construct(int $return) {
+        $this->return = $return;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromReturn(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toReturn(): int {
+        if (ReturnClass::validateReturn($this->return))  {
+            return $this->return; /*int*/
+        }
+        throw new Exception('never get to this ReturnClass::return');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateReturn(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getReturn(): int {
+        if (ReturnClass::validateReturn($this->return))  {
+            return $this->return;
+        }
+        throw new Exception('never get to getReturn ReturnClass::return');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleReturn(): int {
+        return 31; /*31:return*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return ReturnClass::validateReturn($this->return);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'return'} = $this->toReturn();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return ReturnClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ReturnClass {
+        if (!property_exists($obj, 'return')) {
+            throw new Exception("Missing required property");
+        }
+        return new ReturnClass(
+         ReturnClass::fromReturn($obj->{'return'})
+        );
+    }
+
+    /**
+     * @return ReturnClass
+     */
+    public static function sample(): ReturnClass {
+        return new ReturnClass(
+         ReturnClass::sampleReturn()
+        );
+    }
+}
+
+// This is an autogenerated file:Right
+
+class Right {
+    private int $right; // json:right Required
+
+    /**
+     * @param int $right
+     */
+    public function __construct(int $right) {
+        $this->right = $right;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromRight(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toRight(): int {
+        if (Right::validateRight($this->right))  {
+            return $this->right; /*int*/
+        }
+        throw new Exception('never get to this Right::right');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRight(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getRight(): int {
+        if (Right::validateRight($this->right))  {
+            return $this->right;
+        }
+        throw new Exception('never get to getRight Right::right');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleRight(): int {
+        return 31; /*31:right*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Right::validateRight($this->right);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'right'} = $this->toRight();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Right
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Right {
+        if (!property_exists($obj, 'right')) {
+            throw new Exception("Missing required property");
+        }
+        return new Right(
+         Right::fromRight($obj->{'right'})
+        );
+    }
+
+    /**
+     * @return Right
+     */
+    public static function sample(): Right {
+        return new Right(
+         Right::sampleRight()
+        );
+    }
+}
+
+// This is an autogenerated file:RuntimeType
+
+class RuntimeType {
+    private int $runtimeType; // json:runtimeType Required
+
+    /**
+     * @param int $runtimeType
+     */
+    public function __construct(int $runtimeType) {
+        $this->runtimeType = $runtimeType;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromRuntimeType(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toRuntimeType(): int {
+        if (RuntimeType::validateRuntimeType($this->runtimeType))  {
+            return $this->runtimeType; /*int*/
+        }
+        throw new Exception('never get to this RuntimeType::runtimeType');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateRuntimeType(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getRuntimeType(): int {
+        if (RuntimeType::validateRuntimeType($this->runtimeType))  {
+            return $this->runtimeType;
+        }
+        throw new Exception('never get to getRuntimeType RuntimeType::runtimeType');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleRuntimeType(): int {
+        return 31; /*31:runtimeType*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return RuntimeType::validateRuntimeType($this->runtimeType);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'runtimeType'} = $this->toRuntimeType();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return RuntimeType
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): RuntimeType {
+        if (!property_exists($obj, 'runtimeType')) {
+            throw new Exception("Missing required property");
+        }
+        return new RuntimeType(
+         RuntimeType::fromRuntimeType($obj->{'runtimeType'})
+        );
+    }
+
+    /**
+     * @return RuntimeType
+     */
+    public static function sample(): RuntimeType {
+        return new RuntimeType(
+         RuntimeType::sampleRuntimeType()
+        );
+    }
+}
+
+// This is an autogenerated file:S
+
+class S {
+    private int $s; // json:s Required
+
+    /**
+     * @param int $s
+     */
+    public function __construct(int $s) {
+        $this->s = $s;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromS(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toS(): int {
+        if (S::validateS($this->s))  {
+            return $this->s; /*int*/
+        }
+        throw new Exception('never get to this S::s');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateS(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getS(): int {
+        if (S::validateS($this->s))  {
+            return $this->s;
+        }
+        throw new Exception('never get to getS S::s');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleS(): int {
+        return 31; /*31:s*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return S::validateS($this->s);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'s'} = $this->toS();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return S
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): S {
+        if (!property_exists($obj, 's')) {
+            throw new Exception("Missing required property");
+        }
+        return new S(
+         S::fromS($obj->{'s'})
+        );
+    }
+
+    /**
+     * @return S
+     */
+    public static function sample(): S {
+        return new S(
+         S::sampleS()
+        );
+    }
+}
+
+// This is an autogenerated file:Sbyte
+
+class Sbyte {
+    private int $sbyte; // json:sbyte Required
+
+    /**
+     * @param int $sbyte
+     */
+    public function __construct(int $sbyte) {
+        $this->sbyte = $sbyte;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromSbyte(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toSbyte(): int {
+        if (Sbyte::validateSbyte($this->sbyte))  {
+            return $this->sbyte; /*int*/
+        }
+        throw new Exception('never get to this Sbyte::sbyte');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSbyte(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getSbyte(): int {
+        if (Sbyte::validateSbyte($this->sbyte))  {
+            return $this->sbyte;
+        }
+        throw new Exception('never get to getSbyte Sbyte::sbyte');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleSbyte(): int {
+        return 31; /*31:sbyte*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Sbyte::validateSbyte($this->sbyte);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'sbyte'} = $this->toSbyte();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Sbyte
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Sbyte {
+        if (!property_exists($obj, 'sbyte')) {
+            throw new Exception("Missing required property");
+        }
+        return new Sbyte(
+         Sbyte::fromSbyte($obj->{'sbyte'})
+        );
+    }
+
+    /**
+     * @return Sbyte
+     */
+    public static function sample(): Sbyte {
+        return new Sbyte(
+         Sbyte::sampleSbyte()
+        );
+    }
+}
+
+// This is an autogenerated file:Sealed
+
+class Sealed {
+    private int $sealed; // json:sealed Required
+
+    /**
+     * @param int $sealed
+     */
+    public function __construct(int $sealed) {
+        $this->sealed = $sealed;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromSealed(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toSealed(): int {
+        if (Sealed::validateSealed($this->sealed))  {
+            return $this->sealed; /*int*/
+        }
+        throw new Exception('never get to this Sealed::sealed');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSealed(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getSealed(): int {
+        if (Sealed::validateSealed($this->sealed))  {
+            return $this->sealed;
+        }
+        throw new Exception('never get to getSealed Sealed::sealed');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleSealed(): int {
+        return 31; /*31:sealed*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Sealed::validateSealed($this->sealed);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'sealed'} = $this->toSealed();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Sealed
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Sealed {
+        if (!property_exists($obj, 'sealed')) {
+            throw new Exception("Missing required property");
+        }
+        return new Sealed(
+         Sealed::fromSealed($obj->{'sealed'})
+        );
+    }
+
+    /**
+     * @return Sealed
+     */
+    public static function sample(): Sealed {
+        return new Sealed(
+         Sealed::sampleSealed()
+        );
+    }
+}
+
+// This is an autogenerated file:Sel
+
+class Sel {
+    private int $sel; // json:SEL Required
+
+    /**
+     * @param int $sel
+     */
+    public function __construct(int $sel) {
+        $this->sel = $sel;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromSel(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toSel(): int {
+        if (Sel::validateSel($this->sel))  {
+            return $this->sel; /*int*/
+        }
+        throw new Exception('never get to this Sel::sel');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSel(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getSel(): int {
+        if (Sel::validateSel($this->sel))  {
+            return $this->sel;
+        }
+        throw new Exception('never get to getSel Sel::sel');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleSel(): int {
+        return 31; /*31:sel*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Sel::validateSel($this->sel);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'SEL'} = $this->toSel();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Sel
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Sel {
+        if (!property_exists($obj, 'SEL')) {
+            throw new Exception("Missing required property");
+        }
+        return new Sel(
+         Sel::fromSel($obj->{'SEL'})
+        );
+    }
+
+    /**
+     * @return Sel
+     */
+    public static function sample(): Sel {
+        return new Sel(
+         Sel::sampleSel()
+        );
+    }
+}
+
+// This is an autogenerated file:Select
+
+class Select {
+    private int $select; // json:select Required
+
+    /**
+     * @param int $select
+     */
+    public function __construct(int $select) {
+        $this->select = $select;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromSelect(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toSelect(): int {
+        if (Select::validateSelect($this->select))  {
+            return $this->select; /*int*/
+        }
+        throw new Exception('never get to this Select::select');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSelect(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getSelect(): int {
+        if (Select::validateSelect($this->select))  {
+            return $this->select;
+        }
+        throw new Exception('never get to getSelect Select::select');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleSelect(): int {
+        return 31; /*31:select*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Select::validateSelect($this->select);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'select'} = $this->toSelect();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Select
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Select {
+        if (!property_exists($obj, 'select')) {
+            throw new Exception("Missing required property");
+        }
+        return new Select(
+         Select::fromSelect($obj->{'select'})
+        );
+    }
+
+    /**
+     * @return Select
+     */
+    public static function sample(): Select {
+        return new Select(
+         Select::sampleSelect()
+        );
+    }
+}
+
+// This is an autogenerated file:SelfClass
+
+class SelfClass {
+    private int $self; // json:Self Required
+
+    /**
+     * @param int $self
+     */
+    public function __construct(int $self) {
+        $this->self = $self;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromSelf(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toSelf(): int {
+        if (SelfClass::validateSelf($this->self))  {
+            return $this->self; /*int*/
+        }
+        throw new Exception('never get to this SelfClass::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 (SelfClass::validateSelf($this->self))  {
+            return $this->self;
+        }
+        throw new Exception('never get to getSelf SelfClass::self');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleSelf(): int {
+        return 31; /*31:self*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return SelfClass::validateSelf($this->self);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'Self'} = $this->toSelf();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return SelfClass
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): SelfClass {
+        if (!property_exists($obj, 'Self')) {
+            throw new Exception("Missing required property");
+        }
+        return new SelfClass(
+         SelfClass::fromSelf($obj->{'Self'})
+        );
+    }
+
+    /**
+     * @return SelfClass
+     */
+    public static function sample(): SelfClass {
+        return new SelfClass(
+         SelfClass::sampleSelf()
+        );
+    }
+}
+
+// This is an autogenerated file:Sendable
+
+class Sendable {
+    private int $sendable; // json:Sendable Required
+
+    /**
+     * @param int $sendable
+     */
+    public function __construct(int $sendable) {
+        $this->sendable = $sendable;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromSendable(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toSendable(): int {
+        if (Sendable::validateSendable($this->sendable))  {
+            return $this->sendable; /*int*/
+        }
+        throw new Exception('never get to this Sendable::sendable');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSendable(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getSendable(): int {
+        if (Sendable::validateSendable($this->sendable))  {
+            return $this->sendable;
+        }
+        throw new Exception('never get to getSendable Sendable::sendable');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleSendable(): int {
+        return 31; /*31:sendable*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Sendable::validateSendable($this->sendable);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'Sendable'} = $this->toSendable();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Sendable
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Sendable {
+        if (!property_exists($obj, 'Sendable')) {
+            throw new Exception("Missing required property");
+        }
+        return new Sendable(
+         Sendable::fromSendable($obj->{'Sendable'})
+        );
+    }
+
+    /**
+     * @return Sendable
+     */
+    public static function sample(): Sendable {
+        return new Sendable(
+         Sendable::sampleSendable()
+        );
+    }
+}
+
+// This is an autogenerated file:SerializationFeature
+
+class SerializationFeature {
+    private int $serializationFeature; // json:SerializationFeature Required
+
+    /**
+     * @param int $serializationFeature
+     */
+    public function __construct(int $serializationFeature) {
+        $this->serializationFeature = $serializationFeature;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromSerializationFeature(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toSerializationFeature(): int {
+        if (SerializationFeature::validateSerializationFeature($this->serializationFeature))  {
+            return $this->serializationFeature; /*int*/
+        }
+        throw new Exception('never get to this SerializationFeature::serializationFeature');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSerializationFeature(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getSerializationFeature(): int {
+        if (SerializationFeature::validateSerializationFeature($this->serializationFeature))  {
+            return $this->serializationFeature;
+        }
+        throw new Exception('never get to getSerializationFeature SerializationFeature::serializationFeature');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleSerializationFeature(): int {
+        return 31; /*31:serializationFeature*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return SerializationFeature::validateSerializationFeature($this->serializationFeature);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'SerializationFeature'} = $this->toSerializationFeature();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return SerializationFeature
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): SerializationFeature {
+        if (!property_exists($obj, 'SerializationFeature')) {
+            throw new Exception("Missing required property");
+        }
+        return new SerializationFeature(
+         SerializationFeature::fromSerializationFeature($obj->{'SerializationFeature'})
+        );
+    }
+
+    /**
+     * @return SerializationFeature
+     */
+    public static function sample(): SerializationFeature {
+        return new SerializationFeature(
+         SerializationFeature::sampleSerializationFeature()
+        );
+    }
+}
+
+// This is an autogenerated file:Serialize
+
+class Serialize {
+    private int $serialize; // json:serialize Required
+
+    /**
+     * @param int $serialize
+     */
+    public function __construct(int $serialize) {
+        $this->serialize = $serialize;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromSerialize(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toSerialize(): int {
+        if (Serialize::validateSerialize($this->serialize))  {
+            return $this->serialize; /*int*/
+        }
+        throw new Exception('never get to this Serialize::serialize');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSerialize(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getSerialize(): int {
+        if (Serialize::validateSerialize($this->serialize))  {
+            return $this->serialize;
+        }
+        throw new Exception('never get to getSerialize Serialize::serialize');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleSerialize(): int {
+        return 31; /*31:serialize*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Serialize::validateSerialize($this->serialize);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'serialize'} = $this->toSerialize();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Serialize
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Serialize {
+        if (!property_exists($obj, 'serialize')) {
             throw new Exception("Missing required property");
         }
-        return new Obj5(
-         Obj5::fromDummy($obj->{'dummy'})
-        ,Obj5::fromObj5Self($obj->{'self'})
-        ,Obj5::fromObj5This($obj->{'this'})
-        ,Obj5::fromObj5True($obj->{'true'})
-        ,Obj5::fromObj5Type($obj->{'type'})
-        ,Obj5::fromSelf($obj->{'Self'})
-        ,Obj5::fromSendable($obj->{'Sendable'})
-        ,Obj5::fromSerialize($obj->{'serialize'})
-        ,Obj5::fromSerializerProvider($obj->{'SerializerProvider'})
-        ,Obj5::fromSet($obj->{'set'})
-        ,Obj5::fromShort($obj->{'short'})
-        ,Obj5::fromSigned($obj->{'signed'})
-        ,Obj5::fromSimpleModule($obj->{'SimpleModule'})
-        ,Obj5::fromSizeof($obj->{'sizeof'})
-        ,Obj5::fromStackalloc($obj->{'stackalloc'})
-        ,Obj5::fromStandards($obj->{'Standards'})
-        ,Obj5::fromStatic($obj->{'static'})
-        ,Obj5::fromStaticAssert($obj->{'static_assert'})
-        ,Obj5::fromStaticCast($obj->{'static_cast'})
-        ,Obj5::fromStdDeserializer($obj->{'StdDeserializer'})
-        ,Obj5::fromStdSerializer($obj->{'StdSerializer'})
-        ,Obj5::fromStrictfp($obj->{'strictfp'})
-        ,Obj5::fromString($obj->{'string'})
-        ,Obj5::fromStruct($obj->{'struct'})
-        ,Obj5::fromSubscript($obj->{'subscript'})
-        ,Obj5::fromSuper($obj->{'super'})
-        ,Obj5::fromSwitch($obj->{'switch'})
-        ,Obj5::fromSymbol($obj->{'symbol'})
-        ,Obj5::fromSynchronized($obj->{'synchronized'})
-        ,Obj5::fromSystem($obj->{'system'})
-        ,Obj5::fromTemplate($obj->{'template'})
-        ,Obj5::fromThen($obj->{'then'})
-        ,Obj5::fromThreadLocal($obj->{'thread_local'})
-        ,Obj5::fromThrow($obj->{'throw'})
-        ,Obj5::fromThrows($obj->{'throws'})
-        ,Obj5::fromTimeOnly($obj->{'TimeOnly'})
-        ,Obj5::fromTimeOnlyConverter($obj->{'TimeOnlyConverter'})
-        ,Obj5::fromTimeZone($obj->{'TimeZone'})
-        ,Obj5::fromToJSON($obj->{'to_json'})
-        ,Obj5::fromToString($obj->{'toString'})
-        ,Obj5::fromTopLevel($obj->{'top_level'})
-        ,Obj5::fromTransient($obj->{'transient'})
-        ,Obj5::fromTrue($obj->{'True'})
-        ,Obj5::fromTry($obj->{'try'})
-        ,Obj5::fromType($obj->{'Type'})
-        ,Obj5::fromTypealias($obj->{'typealias'})
-        ,Obj5::fromTypedef($obj->{'typedef'})
-        ,Obj5::fromTypeid($obj->{'typeid'})
-        ,Obj5::fromTypename($obj->{'typename'})
-        ,Obj5::fromTypeof($obj->{'typeof'})
-        ,Obj5::fromUint($obj->{'uint'})
-        ,Obj5::fromUlong($obj->{'ulong'})
-        ,Obj5::fromUnchecked($obj->{'unchecked'})
-        ,Obj5::fromUndefined($obj->{'undefined'})
-        ,Obj5::fromUnion($obj->{'union'})
-        ,Obj5::fromUnowned($obj->{'unowned'})
-        ,Obj5::fromUnsafe($obj->{'unsafe'})
-        ,Obj5::fromUnsigned($obj->{'unsigned'})
-        ,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'})
+        return new Serialize(
+         Serialize::fromSerialize($obj->{'serialize'})
         );
     }
 
     /**
-     * @return Obj5
+     * @return Serialize
      */
-    public static function sample(): Obj5 {
-        return new Obj5(
-         Obj5::sampleDummy()
-        ,Obj5::sampleObj5Self()
-        ,Obj5::sampleObj5This()
-        ,Obj5::sampleObj5True()
-        ,Obj5::sampleObj5Type()
-        ,Obj5::sampleSelf()
-        ,Obj5::sampleSendable()
-        ,Obj5::sampleSerialize()
-        ,Obj5::sampleSerializerProvider()
-        ,Obj5::sampleSet()
-        ,Obj5::sampleShort()
-        ,Obj5::sampleSigned()
-        ,Obj5::sampleSimpleModule()
-        ,Obj5::sampleSizeof()
-        ,Obj5::sampleStackalloc()
-        ,Obj5::sampleStandards()
-        ,Obj5::sampleStatic()
-        ,Obj5::sampleStaticAssert()
-        ,Obj5::sampleStaticCast()
-        ,Obj5::sampleStdDeserializer()
-        ,Obj5::sampleStdSerializer()
-        ,Obj5::sampleStrictfp()
-        ,Obj5::sampleString()
-        ,Obj5::sampleStruct()
-        ,Obj5::sampleSubscript()
-        ,Obj5::sampleSuper()
-        ,Obj5::sampleSwitch()
-        ,Obj5::sampleSymbol()
-        ,Obj5::sampleSynchronized()
-        ,Obj5::sampleSystem()
-        ,Obj5::sampleTemplate()
-        ,Obj5::sampleThen()
-        ,Obj5::sampleThreadLocal()
-        ,Obj5::sampleThrow()
-        ,Obj5::sampleThrows()
-        ,Obj5::sampleTimeOnly()
-        ,Obj5::sampleTimeOnlyConverter()
-        ,Obj5::sampleTimeZone()
-        ,Obj5::sampleToJSON()
-        ,Obj5::sampleToString()
-        ,Obj5::sampleTopLevel()
-        ,Obj5::sampleTransient()
-        ,Obj5::sampleTrue()
-        ,Obj5::sampleTry()
-        ,Obj5::sampleType()
-        ,Obj5::sampleTypealias()
-        ,Obj5::sampleTypedef()
-        ,Obj5::sampleTypeid()
-        ,Obj5::sampleTypename()
-        ,Obj5::sampleTypeof()
-        ,Obj5::sampleUint()
-        ,Obj5::sampleUlong()
-        ,Obj5::sampleUnchecked()
-        ,Obj5::sampleUndefined()
-        ,Obj5::sampleUnion()
-        ,Obj5::sampleUnowned()
-        ,Obj5::sampleUnsafe()
-        ,Obj5::sampleUnsigned()
-        ,Obj5::sampleUshort()
-        ,Obj5::sampleUsing()
-        ,Obj5::sampleUtf8JSONReader()
-        ,Obj5::sampleUtf8JSONWriter()
-        ,Obj5::sampleUUID()
-        ,Obj5::sampleVar()
-        ,Obj5::sampleVirtual()
+    public static function sample(): Serialize {
+        return new Serialize(
+         Serialize::sampleSerialize()
         );
     }
 }
 
-// This is an autogenerated file:Obj5Self
+// This is an autogenerated file:SerializerProvider
 
-class Obj5Self {
-    private int $self; // json:self Required
+class SerializerProvider {
+    private int $serializerProvider; // json:SerializerProvider Required
 
     /**
-     * @param int $self
+     * @param int $serializerProvider
      */
-    public function __construct(int $self) {
-        $this->self = $self;
+    public function __construct(int $serializerProvider) {
+        $this->serializerProvider = $serializerProvider;
     }
 
     /**
@@ -45462,7 +47078,7 @@ class Obj5Self {
      * @throws Exception
      * @return int
      */
-    public static function fromSelf(int $value): int {
+    public static function fromSerializerProvider(int $value): int {
         return $value; /*int*/
     }
 
@@ -45470,11 +47086,11 @@ class Obj5Self {
      * @throws Exception
      * @return int
      */
-    public function toSelf(): int {
-        if (Obj5Self::validateSelf($this->self))  {
-            return $this->self; /*int*/
+    public function toSerializerProvider(): int {
+        if (SerializerProvider::validateSerializerProvider($this->serializerProvider))  {
+            return $this->serializerProvider; /*int*/
         }
-        throw new Exception('never get to this Obj5Self::self');
+        throw new Exception('never get to this SerializerProvider::serializerProvider');
     }
 
     /**
@@ -45482,7 +47098,7 @@ class Obj5Self {
      * @return bool
      * @throws Exception
      */
-    public static function validateSelf(int $value): bool {
+    public static function validateSerializerProvider(int $value): bool {
         return true;
     }
 
@@ -45490,18 +47106,18 @@ class Obj5Self {
      * @throws Exception
      * @return int
      */
-    public function getSelf(): int {
-        if (Obj5Self::validateSelf($this->self))  {
-            return $this->self;
+    public function getSerializerProvider(): int {
+        if (SerializerProvider::validateSerializerProvider($this->serializerProvider))  {
+            return $this->serializerProvider;
         }
-        throw new Exception('never get to getSelf Obj5Self::self');
+        throw new Exception('never get to getSerializerProvider SerializerProvider::serializerProvider');
     }
 
     /**
      * @return int
      */
-    public static function sampleSelf(): int {
-        return 31; /*31:self*/
+    public static function sampleSerializerProvider(): int {
+        return 31; /*31:serializerProvider*/
     }
 
     /**
@@ -45509,7 +47125,7 @@ class Obj5Self {
      * @return bool
      */
     public function validate(): bool {
-        return Obj5Self::validateSelf($this->self);
+        return SerializerProvider::validateSerializerProvider($this->serializerProvider);
     }
 
     /**
@@ -45518,44 +47134,44 @@ class Obj5Self {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'self'} = $this->toSelf();
+        $out->{'SerializerProvider'} = $this->toSerializerProvider();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Obj5Self
+     * @return SerializerProvider
      * @throws Exception
      */
-    public static function from(stdClass $obj): Obj5Self {
-        if (!property_exists($obj, 'self')) {
+    public static function from(stdClass $obj): SerializerProvider {
+        if (!property_exists($obj, 'SerializerProvider')) {
             throw new Exception("Missing required property");
         }
-        return new Obj5Self(
-         Obj5Self::fromSelf($obj->{'self'})
+        return new SerializerProvider(
+         SerializerProvider::fromSerializerProvider($obj->{'SerializerProvider'})
         );
     }
 
     /**
-     * @return Obj5Self
+     * @return SerializerProvider
      */
-    public static function sample(): Obj5Self {
-        return new Obj5Self(
-         Obj5Self::sampleSelf()
+    public static function sample(): SerializerProvider {
+        return new SerializerProvider(
+         SerializerProvider::sampleSerializerProvider()
         );
     }
 }
 
-// This is an autogenerated file:This
+// This is an autogenerated file:Set
 
-class This {
-    private int $thisThis; // json:this Required
+class Set {
+    private int $set; // json:set Required
 
     /**
-     * @param int $thisThis
+     * @param int $set
      */
-    public function __construct(int $thisThis) {
-        $this->thisThis = $thisThis;
+    public function __construct(int $set) {
+        $this->set = $set;
     }
 
     /**
@@ -45563,7 +47179,7 @@ class This {
      * @throws Exception
      * @return int
      */
-    public static function fromThisThis(int $value): int {
+    public static function fromSet(int $value): int {
         return $value; /*int*/
     }
 
@@ -45571,11 +47187,11 @@ class This {
      * @throws Exception
      * @return int
      */
-    public function toThisThis(): int {
-        if (This::validateThisThis($this->thisThis))  {
-            return $this->thisThis; /*int*/
+    public function toSet(): int {
+        if (Set::validateSet($this->set))  {
+            return $this->set; /*int*/
         }
-        throw new Exception('never get to this This::thisThis');
+        throw new Exception('never get to this Set::set');
     }
 
     /**
@@ -45583,7 +47199,7 @@ class This {
      * @return bool
      * @throws Exception
      */
-    public static function validateThisThis(int $value): bool {
+    public static function validateSet(int $value): bool {
         return true;
     }
 
@@ -45591,18 +47207,18 @@ class This {
      * @throws Exception
      * @return int
      */
-    public function getThisThis(): int {
-        if (This::validateThisThis($this->thisThis))  {
-            return $this->thisThis;
+    public function getSet(): int {
+        if (Set::validateSet($this->set))  {
+            return $this->set;
         }
-        throw new Exception('never get to getThisThis This::thisThis');
+        throw new Exception('never get to getSet Set::set');
     }
 
     /**
      * @return int
      */
-    public static function sampleThisThis(): int {
-        return 31; /*31:thisThis*/
+    public static function sampleSet(): int {
+        return 31; /*31:set*/
     }
 
     /**
@@ -45610,7 +47226,7 @@ class This {
      * @return bool
      */
     public function validate(): bool {
-        return This::validateThisThis($this->thisThis);
+        return Set::validateSet($this->set);
     }
 
     /**
@@ -45619,44 +47235,44 @@ class This {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'this'} = $this->toThisThis();
+        $out->{'set'} = $this->toSet();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return This
+     * @return Set
      * @throws Exception
      */
-    public static function from(stdClass $obj): This {
-        if (!property_exists($obj, 'this')) {
+    public static function from(stdClass $obj): Set {
+        if (!property_exists($obj, 'set')) {
             throw new Exception("Missing required property");
         }
-        return new This(
-         This::fromThisThis($obj->{'this'})
+        return new Set(
+         Set::fromSet($obj->{'set'})
         );
     }
 
     /**
-     * @return This
+     * @return Set
      */
-    public static function sample(): This {
-        return new This(
-         This::sampleThisThis()
+    public static function sample(): Set {
+        return new Set(
+         Set::sampleSet()
         );
     }
 }
 
-// This is an autogenerated file:Obj5True
+// This is an autogenerated file:Short
 
-class Obj5True {
-    private int $true; // json:true Required
+class Short {
+    private int $short; // json:short Required
 
     /**
-     * @param int $true
+     * @param int $short
      */
-    public function __construct(int $true) {
-        $this->true = $true;
+    public function __construct(int $short) {
+        $this->short = $short;
     }
 
     /**
@@ -45664,7 +47280,7 @@ class Obj5True {
      * @throws Exception
      * @return int
      */
-    public static function fromTrue(int $value): int {
+    public static function fromShort(int $value): int {
         return $value; /*int*/
     }
 
@@ -45672,11 +47288,11 @@ class Obj5True {
      * @throws Exception
      * @return int
      */
-    public function toTrue(): int {
-        if (Obj5True::validateTrue($this->true))  {
-            return $this->true; /*int*/
+    public function toShort(): int {
+        if (Short::validateShort($this->short))  {
+            return $this->short; /*int*/
         }
-        throw new Exception('never get to this Obj5True::true');
+        throw new Exception('never get to this Short::short');
     }
 
     /**
@@ -45684,7 +47300,7 @@ class Obj5True {
      * @return bool
      * @throws Exception
      */
-    public static function validateTrue(int $value): bool {
+    public static function validateShort(int $value): bool {
         return true;
     }
 
@@ -45692,18 +47308,18 @@ class Obj5True {
      * @throws Exception
      * @return int
      */
-    public function getTrue(): int {
-        if (Obj5True::validateTrue($this->true))  {
-            return $this->true;
+    public function getShort(): int {
+        if (Short::validateShort($this->short))  {
+            return $this->short;
         }
-        throw new Exception('never get to getTrue Obj5True::true');
+        throw new Exception('never get to getShort Short::short');
     }
 
     /**
      * @return int
      */
-    public static function sampleTrue(): int {
-        return 31; /*31:true*/
+    public static function sampleShort(): int {
+        return 31; /*31:short*/
     }
 
     /**
@@ -45711,7 +47327,7 @@ class Obj5True {
      * @return bool
      */
     public function validate(): bool {
-        return Obj5True::validateTrue($this->true);
+        return Short::validateShort($this->short);
     }
 
     /**
@@ -45720,44 +47336,44 @@ class Obj5True {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'true'} = $this->toTrue();
+        $out->{'short'} = $this->toShort();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Obj5True
+     * @return Short
      * @throws Exception
      */
-    public static function from(stdClass $obj): Obj5True {
-        if (!property_exists($obj, 'true')) {
+    public static function from(stdClass $obj): Short {
+        if (!property_exists($obj, 'short')) {
             throw new Exception("Missing required property");
         }
-        return new Obj5True(
-         Obj5True::fromTrue($obj->{'true'})
+        return new Short(
+         Short::fromShort($obj->{'short'})
         );
     }
 
     /**
-     * @return Obj5True
+     * @return Short
      */
-    public static function sample(): Obj5True {
-        return new Obj5True(
-         Obj5True::sampleTrue()
+    public static function sample(): Short {
+        return new Short(
+         Short::sampleShort()
         );
     }
 }
 
-// This is an autogenerated file:TypeClass
+// This is an autogenerated file:Signed
 
-class TypeClass {
-    private int $type; // json:type Required
+class Signed {
+    private int $signed; // json:signed Required
 
     /**
-     * @param int $type
+     * @param int $signed
      */
-    public function __construct(int $type) {
-        $this->type = $type;
+    public function __construct(int $signed) {
+        $this->signed = $signed;
     }
 
     /**
@@ -45765,7 +47381,7 @@ class TypeClass {
      * @throws Exception
      * @return int
      */
-    public static function fromType(int $value): int {
+    public static function fromSigned(int $value): int {
         return $value; /*int*/
     }
 
@@ -45773,11 +47389,11 @@ class TypeClass {
      * @throws Exception
      * @return int
      */
-    public function toType(): int {
-        if (TypeClass::validateType($this->type))  {
-            return $this->type; /*int*/
+    public function toSigned(): int {
+        if (Signed::validateSigned($this->signed))  {
+            return $this->signed; /*int*/
         }
-        throw new Exception('never get to this TypeClass::type');
+        throw new Exception('never get to this Signed::signed');
     }
 
     /**
@@ -45785,7 +47401,7 @@ class TypeClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateType(int $value): bool {
+    public static function validateSigned(int $value): bool {
         return true;
     }
 
@@ -45793,18 +47409,18 @@ class TypeClass {
      * @throws Exception
      * @return int
      */
-    public function getType(): int {
-        if (TypeClass::validateType($this->type))  {
-            return $this->type;
+    public function getSigned(): int {
+        if (Signed::validateSigned($this->signed))  {
+            return $this->signed;
         }
-        throw new Exception('never get to getType TypeClass::type');
+        throw new Exception('never get to getSigned Signed::signed');
     }
 
     /**
      * @return int
      */
-    public static function sampleType(): int {
-        return 31; /*31:type*/
+    public static function sampleSigned(): int {
+        return 31; /*31:signed*/
     }
 
     /**
@@ -45812,7 +47428,7 @@ class TypeClass {
      * @return bool
      */
     public function validate(): bool {
-        return TypeClass::validateType($this->type);
+        return Signed::validateSigned($this->signed);
     }
 
     /**
@@ -45821,44 +47437,44 @@ class TypeClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'type'} = $this->toType();
+        $out->{'signed'} = $this->toSigned();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return TypeClass
+     * @return Signed
      * @throws Exception
      */
-    public static function from(stdClass $obj): TypeClass {
-        if (!property_exists($obj, 'type')) {
+    public static function from(stdClass $obj): Signed {
+        if (!property_exists($obj, 'signed')) {
             throw new Exception("Missing required property");
         }
-        return new TypeClass(
-         TypeClass::fromType($obj->{'type'})
+        return new Signed(
+         Signed::fromSigned($obj->{'signed'})
         );
     }
 
     /**
-     * @return TypeClass
+     * @return Signed
      */
-    public static function sample(): TypeClass {
-        return new TypeClass(
-         TypeClass::sampleType()
+    public static function sample(): Signed {
+        return new Signed(
+         Signed::sampleSigned()
         );
     }
 }
 
-// This is an autogenerated file:SelfClass
+// This is an autogenerated file:SimpleModule
 
-class SelfClass {
-    private int $self; // json:Self Required
+class SimpleModule {
+    private int $simpleModule; // json:SimpleModule Required
 
     /**
-     * @param int $self
+     * @param int $simpleModule
      */
-    public function __construct(int $self) {
-        $this->self = $self;
+    public function __construct(int $simpleModule) {
+        $this->simpleModule = $simpleModule;
     }
 
     /**
@@ -45866,7 +47482,7 @@ class SelfClass {
      * @throws Exception
      * @return int
      */
-    public static function fromSelf(int $value): int {
+    public static function fromSimpleModule(int $value): int {
         return $value; /*int*/
     }
 
@@ -45874,11 +47490,11 @@ class SelfClass {
      * @throws Exception
      * @return int
      */
-    public function toSelf(): int {
-        if (SelfClass::validateSelf($this->self))  {
-            return $this->self; /*int*/
+    public function toSimpleModule(): int {
+        if (SimpleModule::validateSimpleModule($this->simpleModule))  {
+            return $this->simpleModule; /*int*/
         }
-        throw new Exception('never get to this SelfClass::self');
+        throw new Exception('never get to this SimpleModule::simpleModule');
     }
 
     /**
@@ -45886,7 +47502,7 @@ class SelfClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateSelf(int $value): bool {
+    public static function validateSimpleModule(int $value): bool {
         return true;
     }
 
@@ -45894,18 +47510,18 @@ class SelfClass {
      * @throws Exception
      * @return int
      */
-    public function getSelf(): int {
-        if (SelfClass::validateSelf($this->self))  {
-            return $this->self;
+    public function getSimpleModule(): int {
+        if (SimpleModule::validateSimpleModule($this->simpleModule))  {
+            return $this->simpleModule;
         }
-        throw new Exception('never get to getSelf SelfClass::self');
+        throw new Exception('never get to getSimpleModule SimpleModule::simpleModule');
     }
 
     /**
      * @return int
      */
-    public static function sampleSelf(): int {
-        return 31; /*31:self*/
+    public static function sampleSimpleModule(): int {
+        return 31; /*31:simpleModule*/
     }
 
     /**
@@ -45913,7 +47529,7 @@ class SelfClass {
      * @return bool
      */
     public function validate(): bool {
-        return SelfClass::validateSelf($this->self);
+        return SimpleModule::validateSimpleModule($this->simpleModule);
     }
 
     /**
@@ -45922,44 +47538,44 @@ class SelfClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'Self'} = $this->toSelf();
+        $out->{'SimpleModule'} = $this->toSimpleModule();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return SelfClass
+     * @return SimpleModule
      * @throws Exception
      */
-    public static function from(stdClass $obj): SelfClass {
-        if (!property_exists($obj, 'Self')) {
+    public static function from(stdClass $obj): SimpleModule {
+        if (!property_exists($obj, 'SimpleModule')) {
             throw new Exception("Missing required property");
         }
-        return new SelfClass(
-         SelfClass::fromSelf($obj->{'Self'})
+        return new SimpleModule(
+         SimpleModule::fromSimpleModule($obj->{'SimpleModule'})
         );
     }
 
     /**
-     * @return SelfClass
+     * @return SimpleModule
      */
-    public static function sample(): SelfClass {
-        return new SelfClass(
-         SelfClass::sampleSelf()
+    public static function sample(): SimpleModule {
+        return new SimpleModule(
+         SimpleModule::sampleSimpleModule()
         );
     }
 }
 
-// This is an autogenerated file:Sendable
+// This is an autogenerated file:Sizeof
 
-class Sendable {
-    private int $sendable; // json:Sendable Required
+class Sizeof {
+    private int $sizeof; // json:sizeof Required
 
     /**
-     * @param int $sendable
+     * @param int $sizeof
      */
-    public function __construct(int $sendable) {
-        $this->sendable = $sendable;
+    public function __construct(int $sizeof) {
+        $this->sizeof = $sizeof;
     }
 
     /**
@@ -45967,7 +47583,7 @@ class Sendable {
      * @throws Exception
      * @return int
      */
-    public static function fromSendable(int $value): int {
+    public static function fromSizeof(int $value): int {
         return $value; /*int*/
     }
 
@@ -45975,11 +47591,11 @@ class Sendable {
      * @throws Exception
      * @return int
      */
-    public function toSendable(): int {
-        if (Sendable::validateSendable($this->sendable))  {
-            return $this->sendable; /*int*/
+    public function toSizeof(): int {
+        if (Sizeof::validateSizeof($this->sizeof))  {
+            return $this->sizeof; /*int*/
         }
-        throw new Exception('never get to this Sendable::sendable');
+        throw new Exception('never get to this Sizeof::sizeof');
     }
 
     /**
@@ -45987,7 +47603,7 @@ class Sendable {
      * @return bool
      * @throws Exception
      */
-    public static function validateSendable(int $value): bool {
+    public static function validateSizeof(int $value): bool {
         return true;
     }
 
@@ -45995,18 +47611,18 @@ class Sendable {
      * @throws Exception
      * @return int
      */
-    public function getSendable(): int {
-        if (Sendable::validateSendable($this->sendable))  {
-            return $this->sendable;
+    public function getSizeof(): int {
+        if (Sizeof::validateSizeof($this->sizeof))  {
+            return $this->sizeof;
         }
-        throw new Exception('never get to getSendable Sendable::sendable');
+        throw new Exception('never get to getSizeof Sizeof::sizeof');
     }
 
     /**
      * @return int
      */
-    public static function sampleSendable(): int {
-        return 31; /*31:sendable*/
+    public static function sampleSizeof(): int {
+        return 31; /*31:sizeof*/
     }
 
     /**
@@ -46014,7 +47630,7 @@ class Sendable {
      * @return bool
      */
     public function validate(): bool {
-        return Sendable::validateSendable($this->sendable);
+        return Sizeof::validateSizeof($this->sizeof);
     }
 
     /**
@@ -46023,44 +47639,44 @@ class Sendable {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'Sendable'} = $this->toSendable();
+        $out->{'sizeof'} = $this->toSizeof();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Sendable
+     * @return Sizeof
      * @throws Exception
      */
-    public static function from(stdClass $obj): Sendable {
-        if (!property_exists($obj, 'Sendable')) {
+    public static function from(stdClass $obj): Sizeof {
+        if (!property_exists($obj, 'sizeof')) {
             throw new Exception("Missing required property");
         }
-        return new Sendable(
-         Sendable::fromSendable($obj->{'Sendable'})
+        return new Sizeof(
+         Sizeof::fromSizeof($obj->{'sizeof'})
         );
     }
 
     /**
-     * @return Sendable
+     * @return Sizeof
      */
-    public static function sample(): Sendable {
-        return new Sendable(
-         Sendable::sampleSendable()
+    public static function sample(): Sizeof {
+        return new Sizeof(
+         Sizeof::sampleSizeof()
         );
     }
 }
 
-// This is an autogenerated file:Serialize
+// This is an autogenerated file:Stackalloc
 
-class Serialize {
-    private int $serialize; // json:serialize Required
+class Stackalloc {
+    private int $stackalloc; // json:stackalloc Required
 
     /**
-     * @param int $serialize
+     * @param int $stackalloc
      */
-    public function __construct(int $serialize) {
-        $this->serialize = $serialize;
+    public function __construct(int $stackalloc) {
+        $this->stackalloc = $stackalloc;
     }
 
     /**
@@ -46068,7 +47684,7 @@ class Serialize {
      * @throws Exception
      * @return int
      */
-    public static function fromSerialize(int $value): int {
+    public static function fromStackalloc(int $value): int {
         return $value; /*int*/
     }
 
@@ -46076,11 +47692,11 @@ class Serialize {
      * @throws Exception
      * @return int
      */
-    public function toSerialize(): int {
-        if (Serialize::validateSerialize($this->serialize))  {
-            return $this->serialize; /*int*/
+    public function toStackalloc(): int {
+        if (Stackalloc::validateStackalloc($this->stackalloc))  {
+            return $this->stackalloc; /*int*/
         }
-        throw new Exception('never get to this Serialize::serialize');
+        throw new Exception('never get to this Stackalloc::stackalloc');
     }
 
     /**
@@ -46088,7 +47704,7 @@ class Serialize {
      * @return bool
      * @throws Exception
      */
-    public static function validateSerialize(int $value): bool {
+    public static function validateStackalloc(int $value): bool {
         return true;
     }
 
@@ -46096,18 +47712,18 @@ class Serialize {
      * @throws Exception
      * @return int
      */
-    public function getSerialize(): int {
-        if (Serialize::validateSerialize($this->serialize))  {
-            return $this->serialize;
+    public function getStackalloc(): int {
+        if (Stackalloc::validateStackalloc($this->stackalloc))  {
+            return $this->stackalloc;
         }
-        throw new Exception('never get to getSerialize Serialize::serialize');
+        throw new Exception('never get to getStackalloc Stackalloc::stackalloc');
     }
 
     /**
      * @return int
      */
-    public static function sampleSerialize(): int {
-        return 31; /*31:serialize*/
+    public static function sampleStackalloc(): int {
+        return 31; /*31:stackalloc*/
     }
 
     /**
@@ -46115,7 +47731,7 @@ class Serialize {
      * @return bool
      */
     public function validate(): bool {
-        return Serialize::validateSerialize($this->serialize);
+        return Stackalloc::validateStackalloc($this->stackalloc);
     }
 
     /**
@@ -46124,44 +47740,44 @@ class Serialize {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'serialize'} = $this->toSerialize();
+        $out->{'stackalloc'} = $this->toStackalloc();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Serialize
+     * @return Stackalloc
      * @throws Exception
      */
-    public static function from(stdClass $obj): Serialize {
-        if (!property_exists($obj, 'serialize')) {
+    public static function from(stdClass $obj): Stackalloc {
+        if (!property_exists($obj, 'stackalloc')) {
             throw new Exception("Missing required property");
         }
-        return new Serialize(
-         Serialize::fromSerialize($obj->{'serialize'})
+        return new Stackalloc(
+         Stackalloc::fromStackalloc($obj->{'stackalloc'})
         );
     }
 
     /**
-     * @return Serialize
+     * @return Stackalloc
      */
-    public static function sample(): Serialize {
-        return new Serialize(
-         Serialize::sampleSerialize()
+    public static function sample(): Stackalloc {
+        return new Stackalloc(
+         Stackalloc::sampleStackalloc()
         );
     }
 }
 
-// This is an autogenerated file:SerializerProvider
+// This is an autogenerated file:Standards
 
-class SerializerProvider {
-    private int $serializerProvider; // json:SerializerProvider Required
+class Standards {
+    private int $standards; // json:Standards Required
 
     /**
-     * @param int $serializerProvider
+     * @param int $standards
      */
-    public function __construct(int $serializerProvider) {
-        $this->serializerProvider = $serializerProvider;
+    public function __construct(int $standards) {
+        $this->standards = $standards;
     }
 
     /**
@@ -46169,7 +47785,7 @@ class SerializerProvider {
      * @throws Exception
      * @return int
      */
-    public static function fromSerializerProvider(int $value): int {
+    public static function fromStandards(int $value): int {
         return $value; /*int*/
     }
 
@@ -46177,11 +47793,11 @@ class SerializerProvider {
      * @throws Exception
      * @return int
      */
-    public function toSerializerProvider(): int {
-        if (SerializerProvider::validateSerializerProvider($this->serializerProvider))  {
-            return $this->serializerProvider; /*int*/
+    public function toStandards(): int {
+        if (Standards::validateStandards($this->standards))  {
+            return $this->standards; /*int*/
         }
-        throw new Exception('never get to this SerializerProvider::serializerProvider');
+        throw new Exception('never get to this Standards::standards');
     }
 
     /**
@@ -46189,7 +47805,7 @@ class SerializerProvider {
      * @return bool
      * @throws Exception
      */
-    public static function validateSerializerProvider(int $value): bool {
+    public static function validateStandards(int $value): bool {
         return true;
     }
 
@@ -46197,18 +47813,18 @@ class SerializerProvider {
      * @throws Exception
      * @return int
      */
-    public function getSerializerProvider(): int {
-        if (SerializerProvider::validateSerializerProvider($this->serializerProvider))  {
-            return $this->serializerProvider;
+    public function getStandards(): int {
+        if (Standards::validateStandards($this->standards))  {
+            return $this->standards;
         }
-        throw new Exception('never get to getSerializerProvider SerializerProvider::serializerProvider');
+        throw new Exception('never get to getStandards Standards::standards');
     }
 
     /**
      * @return int
      */
-    public static function sampleSerializerProvider(): int {
-        return 31; /*31:serializerProvider*/
+    public static function sampleStandards(): int {
+        return 31; /*31:standards*/
     }
 
     /**
@@ -46216,7 +47832,7 @@ class SerializerProvider {
      * @return bool
      */
     public function validate(): bool {
-        return SerializerProvider::validateSerializerProvider($this->serializerProvider);
+        return Standards::validateStandards($this->standards);
     }
 
     /**
@@ -46225,44 +47841,44 @@ class SerializerProvider {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'SerializerProvider'} = $this->toSerializerProvider();
+        $out->{'Standards'} = $this->toStandards();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return SerializerProvider
+     * @return Standards
      * @throws Exception
      */
-    public static function from(stdClass $obj): SerializerProvider {
-        if (!property_exists($obj, 'SerializerProvider')) {
+    public static function from(stdClass $obj): Standards {
+        if (!property_exists($obj, 'Standards')) {
             throw new Exception("Missing required property");
         }
-        return new SerializerProvider(
-         SerializerProvider::fromSerializerProvider($obj->{'SerializerProvider'})
+        return new Standards(
+         Standards::fromStandards($obj->{'Standards'})
         );
     }
 
     /**
-     * @return SerializerProvider
+     * @return Standards
      */
-    public static function sample(): SerializerProvider {
-        return new SerializerProvider(
-         SerializerProvider::sampleSerializerProvider()
+    public static function sample(): Standards {
+        return new Standards(
+         Standards::sampleStandards()
         );
     }
 }
 
-// This is an autogenerated file:Set
+// This is an autogenerated file:StaticClass
 
-class Set {
-    private int $set; // json:set Required
+class StaticClass {
+    private int $static; // json:static Required
 
     /**
-     * @param int $set
+     * @param int $static
      */
-    public function __construct(int $set) {
-        $this->set = $set;
+    public function __construct(int $static) {
+        $this->static = $static;
     }
 
     /**
@@ -46270,7 +47886,7 @@ class Set {
      * @throws Exception
      * @return int
      */
-    public static function fromSet(int $value): int {
+    public static function fromStatic(int $value): int {
         return $value; /*int*/
     }
 
@@ -46278,11 +47894,11 @@ class Set {
      * @throws Exception
      * @return int
      */
-    public function toSet(): int {
-        if (Set::validateSet($this->set))  {
-            return $this->set; /*int*/
+    public function toStatic(): int {
+        if (StaticClass::validateStatic($this->static))  {
+            return $this->static; /*int*/
         }
-        throw new Exception('never get to this Set::set');
+        throw new Exception('never get to this StaticClass::static');
     }
 
     /**
@@ -46290,7 +47906,7 @@ class Set {
      * @return bool
      * @throws Exception
      */
-    public static function validateSet(int $value): bool {
+    public static function validateStatic(int $value): bool {
         return true;
     }
 
@@ -46298,18 +47914,18 @@ class Set {
      * @throws Exception
      * @return int
      */
-    public function getSet(): int {
-        if (Set::validateSet($this->set))  {
-            return $this->set;
+    public function getStatic(): int {
+        if (StaticClass::validateStatic($this->static))  {
+            return $this->static;
         }
-        throw new Exception('never get to getSet Set::set');
+        throw new Exception('never get to getStatic StaticClass::static');
     }
 
     /**
      * @return int
      */
-    public static function sampleSet(): int {
-        return 31; /*31:set*/
+    public static function sampleStatic(): int {
+        return 31; /*31:static*/
     }
 
     /**
@@ -46317,7 +47933,7 @@ class Set {
      * @return bool
      */
     public function validate(): bool {
-        return Set::validateSet($this->set);
+        return StaticClass::validateStatic($this->static);
     }
 
     /**
@@ -46326,44 +47942,44 @@ class Set {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'set'} = $this->toSet();
+        $out->{'static'} = $this->toStatic();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Set
+     * @return StaticClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): Set {
-        if (!property_exists($obj, 'set')) {
+    public static function from(stdClass $obj): StaticClass {
+        if (!property_exists($obj, 'static')) {
             throw new Exception("Missing required property");
         }
-        return new Set(
-         Set::fromSet($obj->{'set'})
+        return new StaticClass(
+         StaticClass::fromStatic($obj->{'static'})
         );
     }
 
     /**
-     * @return Set
+     * @return StaticClass
      */
-    public static function sample(): Set {
-        return new Set(
-         Set::sampleSet()
+    public static function sample(): StaticClass {
+        return new StaticClass(
+         StaticClass::sampleStatic()
         );
     }
 }
 
-// This is an autogenerated file:Short
+// This is an autogenerated file:StaticAssert
 
-class Short {
-    private int $short; // json:short Required
+class StaticAssert {
+    private int $staticAssert; // json:static_assert Required
 
     /**
-     * @param int $short
+     * @param int $staticAssert
      */
-    public function __construct(int $short) {
-        $this->short = $short;
+    public function __construct(int $staticAssert) {
+        $this->staticAssert = $staticAssert;
     }
 
     /**
@@ -46371,7 +47987,7 @@ class Short {
      * @throws Exception
      * @return int
      */
-    public static function fromShort(int $value): int {
+    public static function fromStaticAssert(int $value): int {
         return $value; /*int*/
     }
 
@@ -46379,11 +47995,11 @@ class Short {
      * @throws Exception
      * @return int
      */
-    public function toShort(): int {
-        if (Short::validateShort($this->short))  {
-            return $this->short; /*int*/
+    public function toStaticAssert(): int {
+        if (StaticAssert::validateStaticAssert($this->staticAssert))  {
+            return $this->staticAssert; /*int*/
         }
-        throw new Exception('never get to this Short::short');
+        throw new Exception('never get to this StaticAssert::staticAssert');
     }
 
     /**
@@ -46391,7 +48007,7 @@ class Short {
      * @return bool
      * @throws Exception
      */
-    public static function validateShort(int $value): bool {
+    public static function validateStaticAssert(int $value): bool {
         return true;
     }
 
@@ -46399,18 +48015,18 @@ class Short {
      * @throws Exception
      * @return int
      */
-    public function getShort(): int {
-        if (Short::validateShort($this->short))  {
-            return $this->short;
+    public function getStaticAssert(): int {
+        if (StaticAssert::validateStaticAssert($this->staticAssert))  {
+            return $this->staticAssert;
         }
-        throw new Exception('never get to getShort Short::short');
+        throw new Exception('never get to getStaticAssert StaticAssert::staticAssert');
     }
 
     /**
      * @return int
      */
-    public static function sampleShort(): int {
-        return 31; /*31:short*/
+    public static function sampleStaticAssert(): int {
+        return 31; /*31:staticAssert*/
     }
 
     /**
@@ -46418,7 +48034,7 @@ class Short {
      * @return bool
      */
     public function validate(): bool {
-        return Short::validateShort($this->short);
+        return StaticAssert::validateStaticAssert($this->staticAssert);
     }
 
     /**
@@ -46427,44 +48043,44 @@ class Short {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'short'} = $this->toShort();
+        $out->{'static_assert'} = $this->toStaticAssert();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Short
+     * @return StaticAssert
      * @throws Exception
      */
-    public static function from(stdClass $obj): Short {
-        if (!property_exists($obj, 'short')) {
+    public static function from(stdClass $obj): StaticAssert {
+        if (!property_exists($obj, 'static_assert')) {
             throw new Exception("Missing required property");
         }
-        return new Short(
-         Short::fromShort($obj->{'short'})
+        return new StaticAssert(
+         StaticAssert::fromStaticAssert($obj->{'static_assert'})
         );
     }
 
     /**
-     * @return Short
+     * @return StaticAssert
      */
-    public static function sample(): Short {
-        return new Short(
-         Short::sampleShort()
+    public static function sample(): StaticAssert {
+        return new StaticAssert(
+         StaticAssert::sampleStaticAssert()
         );
     }
 }
 
-// This is an autogenerated file:Signed
+// This is an autogenerated file:StaticCast
 
-class Signed {
-    private int $signed; // json:signed Required
+class StaticCast {
+    private int $staticCast; // json:static_cast Required
 
     /**
-     * @param int $signed
+     * @param int $staticCast
      */
-    public function __construct(int $signed) {
-        $this->signed = $signed;
+    public function __construct(int $staticCast) {
+        $this->staticCast = $staticCast;
     }
 
     /**
@@ -46472,7 +48088,7 @@ class Signed {
      * @throws Exception
      * @return int
      */
-    public static function fromSigned(int $value): int {
+    public static function fromStaticCast(int $value): int {
         return $value; /*int*/
     }
 
@@ -46480,11 +48096,11 @@ class Signed {
      * @throws Exception
      * @return int
      */
-    public function toSigned(): int {
-        if (Signed::validateSigned($this->signed))  {
-            return $this->signed; /*int*/
+    public function toStaticCast(): int {
+        if (StaticCast::validateStaticCast($this->staticCast))  {
+            return $this->staticCast; /*int*/
         }
-        throw new Exception('never get to this Signed::signed');
+        throw new Exception('never get to this StaticCast::staticCast');
     }
 
     /**
@@ -46492,7 +48108,7 @@ class Signed {
      * @return bool
      * @throws Exception
      */
-    public static function validateSigned(int $value): bool {
+    public static function validateStaticCast(int $value): bool {
         return true;
     }
 
@@ -46500,18 +48116,18 @@ class Signed {
      * @throws Exception
      * @return int
      */
-    public function getSigned(): int {
-        if (Signed::validateSigned($this->signed))  {
-            return $this->signed;
+    public function getStaticCast(): int {
+        if (StaticCast::validateStaticCast($this->staticCast))  {
+            return $this->staticCast;
         }
-        throw new Exception('never get to getSigned Signed::signed');
+        throw new Exception('never get to getStaticCast StaticCast::staticCast');
     }
 
     /**
      * @return int
      */
-    public static function sampleSigned(): int {
-        return 31; /*31:signed*/
+    public static function sampleStaticCast(): int {
+        return 31; /*31:staticCast*/
     }
 
     /**
@@ -46519,7 +48135,7 @@ class Signed {
      * @return bool
      */
     public function validate(): bool {
-        return Signed::validateSigned($this->signed);
+        return StaticCast::validateStaticCast($this->staticCast);
     }
 
     /**
@@ -46528,44 +48144,44 @@ class Signed {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'signed'} = $this->toSigned();
+        $out->{'static_cast'} = $this->toStaticCast();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Signed
+     * @return StaticCast
      * @throws Exception
      */
-    public static function from(stdClass $obj): Signed {
-        if (!property_exists($obj, 'signed')) {
+    public static function from(stdClass $obj): StaticCast {
+        if (!property_exists($obj, 'static_cast')) {
             throw new Exception("Missing required property");
         }
-        return new Signed(
-         Signed::fromSigned($obj->{'signed'})
+        return new StaticCast(
+         StaticCast::fromStaticCast($obj->{'static_cast'})
         );
     }
 
     /**
-     * @return Signed
+     * @return StaticCast
      */
-    public static function sample(): Signed {
-        return new Signed(
-         Signed::sampleSigned()
+    public static function sample(): StaticCast {
+        return new StaticCast(
+         StaticCast::sampleStaticCast()
         );
     }
 }
 
-// This is an autogenerated file:SimpleModule
+// This is an autogenerated file:StdDeserializer
 
-class SimpleModule {
-    private int $simpleModule; // json:SimpleModule Required
+class StdDeserializer {
+    private int $stdDeserializer; // json:StdDeserializer Required
 
     /**
-     * @param int $simpleModule
+     * @param int $stdDeserializer
      */
-    public function __construct(int $simpleModule) {
-        $this->simpleModule = $simpleModule;
+    public function __construct(int $stdDeserializer) {
+        $this->stdDeserializer = $stdDeserializer;
     }
 
     /**
@@ -46573,7 +48189,7 @@ class SimpleModule {
      * @throws Exception
      * @return int
      */
-    public static function fromSimpleModule(int $value): int {
+    public static function fromStdDeserializer(int $value): int {
         return $value; /*int*/
     }
 
@@ -46581,11 +48197,11 @@ class SimpleModule {
      * @throws Exception
      * @return int
      */
-    public function toSimpleModule(): int {
-        if (SimpleModule::validateSimpleModule($this->simpleModule))  {
-            return $this->simpleModule; /*int*/
+    public function toStdDeserializer(): int {
+        if (StdDeserializer::validateStdDeserializer($this->stdDeserializer))  {
+            return $this->stdDeserializer; /*int*/
         }
-        throw new Exception('never get to this SimpleModule::simpleModule');
+        throw new Exception('never get to this StdDeserializer::stdDeserializer');
     }
 
     /**
@@ -46593,7 +48209,7 @@ class SimpleModule {
      * @return bool
      * @throws Exception
      */
-    public static function validateSimpleModule(int $value): bool {
+    public static function validateStdDeserializer(int $value): bool {
         return true;
     }
 
@@ -46601,18 +48217,18 @@ class SimpleModule {
      * @throws Exception
      * @return int
      */
-    public function getSimpleModule(): int {
-        if (SimpleModule::validateSimpleModule($this->simpleModule))  {
-            return $this->simpleModule;
+    public function getStdDeserializer(): int {
+        if (StdDeserializer::validateStdDeserializer($this->stdDeserializer))  {
+            return $this->stdDeserializer;
         }
-        throw new Exception('never get to getSimpleModule SimpleModule::simpleModule');
+        throw new Exception('never get to getStdDeserializer StdDeserializer::stdDeserializer');
     }
 
     /**
      * @return int
      */
-    public static function sampleSimpleModule(): int {
-        return 31; /*31:simpleModule*/
+    public static function sampleStdDeserializer(): int {
+        return 31; /*31:stdDeserializer*/
     }
 
     /**
@@ -46620,7 +48236,7 @@ class SimpleModule {
      * @return bool
      */
     public function validate(): bool {
-        return SimpleModule::validateSimpleModule($this->simpleModule);
+        return StdDeserializer::validateStdDeserializer($this->stdDeserializer);
     }
 
     /**
@@ -46629,44 +48245,44 @@ class SimpleModule {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'SimpleModule'} = $this->toSimpleModule();
+        $out->{'StdDeserializer'} = $this->toStdDeserializer();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return SimpleModule
+     * @return StdDeserializer
      * @throws Exception
      */
-    public static function from(stdClass $obj): SimpleModule {
-        if (!property_exists($obj, 'SimpleModule')) {
+    public static function from(stdClass $obj): StdDeserializer {
+        if (!property_exists($obj, 'StdDeserializer')) {
             throw new Exception("Missing required property");
         }
-        return new SimpleModule(
-         SimpleModule::fromSimpleModule($obj->{'SimpleModule'})
+        return new StdDeserializer(
+         StdDeserializer::fromStdDeserializer($obj->{'StdDeserializer'})
         );
     }
 
     /**
-     * @return SimpleModule
+     * @return StdDeserializer
      */
-    public static function sample(): SimpleModule {
-        return new SimpleModule(
-         SimpleModule::sampleSimpleModule()
+    public static function sample(): StdDeserializer {
+        return new StdDeserializer(
+         StdDeserializer::sampleStdDeserializer()
         );
     }
 }
 
-// This is an autogenerated file:Sizeof
+// This is an autogenerated file:StdSerializer
 
-class Sizeof {
-    private int $sizeof; // json:sizeof Required
+class StdSerializer {
+    private int $stdSerializer; // json:StdSerializer Required
 
     /**
-     * @param int $sizeof
+     * @param int $stdSerializer
      */
-    public function __construct(int $sizeof) {
-        $this->sizeof = $sizeof;
+    public function __construct(int $stdSerializer) {
+        $this->stdSerializer = $stdSerializer;
     }
 
     /**
@@ -46674,7 +48290,7 @@ class Sizeof {
      * @throws Exception
      * @return int
      */
-    public static function fromSizeof(int $value): int {
+    public static function fromStdSerializer(int $value): int {
         return $value; /*int*/
     }
 
@@ -46682,11 +48298,11 @@ class Sizeof {
      * @throws Exception
      * @return int
      */
-    public function toSizeof(): int {
-        if (Sizeof::validateSizeof($this->sizeof))  {
-            return $this->sizeof; /*int*/
+    public function toStdSerializer(): int {
+        if (StdSerializer::validateStdSerializer($this->stdSerializer))  {
+            return $this->stdSerializer; /*int*/
         }
-        throw new Exception('never get to this Sizeof::sizeof');
+        throw new Exception('never get to this StdSerializer::stdSerializer');
     }
 
     /**
@@ -46694,7 +48310,7 @@ class Sizeof {
      * @return bool
      * @throws Exception
      */
-    public static function validateSizeof(int $value): bool {
+    public static function validateStdSerializer(int $value): bool {
         return true;
     }
 
@@ -46702,18 +48318,18 @@ class Sizeof {
      * @throws Exception
      * @return int
      */
-    public function getSizeof(): int {
-        if (Sizeof::validateSizeof($this->sizeof))  {
-            return $this->sizeof;
+    public function getStdSerializer(): int {
+        if (StdSerializer::validateStdSerializer($this->stdSerializer))  {
+            return $this->stdSerializer;
         }
-        throw new Exception('never get to getSizeof Sizeof::sizeof');
+        throw new Exception('never get to getStdSerializer StdSerializer::stdSerializer');
     }
 
     /**
      * @return int
      */
-    public static function sampleSizeof(): int {
-        return 31; /*31:sizeof*/
+    public static function sampleStdSerializer(): int {
+        return 31; /*31:stdSerializer*/
     }
 
     /**
@@ -46721,7 +48337,7 @@ class Sizeof {
      * @return bool
      */
     public function validate(): bool {
-        return Sizeof::validateSizeof($this->sizeof);
+        return StdSerializer::validateStdSerializer($this->stdSerializer);
     }
 
     /**
@@ -46730,44 +48346,44 @@ class Sizeof {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'sizeof'} = $this->toSizeof();
+        $out->{'StdSerializer'} = $this->toStdSerializer();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Sizeof
+     * @return StdSerializer
      * @throws Exception
      */
-    public static function from(stdClass $obj): Sizeof {
-        if (!property_exists($obj, 'sizeof')) {
+    public static function from(stdClass $obj): StdSerializer {
+        if (!property_exists($obj, 'StdSerializer')) {
             throw new Exception("Missing required property");
         }
-        return new Sizeof(
-         Sizeof::fromSizeof($obj->{'sizeof'})
+        return new StdSerializer(
+         StdSerializer::fromStdSerializer($obj->{'StdSerializer'})
         );
     }
 
     /**
-     * @return Sizeof
+     * @return StdSerializer
      */
-    public static function sample(): Sizeof {
-        return new Sizeof(
-         Sizeof::sampleSizeof()
+    public static function sample(): StdSerializer {
+        return new StdSerializer(
+         StdSerializer::sampleStdSerializer()
         );
     }
 }
 
-// This is an autogenerated file:Stackalloc
+// This is an autogenerated file:Strictfp
 
-class Stackalloc {
-    private int $stackalloc; // json:stackalloc Required
+class Strictfp {
+    private int $strictfp; // json:strictfp Required
 
     /**
-     * @param int $stackalloc
+     * @param int $strictfp
      */
-    public function __construct(int $stackalloc) {
-        $this->stackalloc = $stackalloc;
+    public function __construct(int $strictfp) {
+        $this->strictfp = $strictfp;
     }
 
     /**
@@ -46775,7 +48391,7 @@ class Stackalloc {
      * @throws Exception
      * @return int
      */
-    public static function fromStackalloc(int $value): int {
+    public static function fromStrictfp(int $value): int {
         return $value; /*int*/
     }
 
@@ -46783,11 +48399,11 @@ class Stackalloc {
      * @throws Exception
      * @return int
      */
-    public function toStackalloc(): int {
-        if (Stackalloc::validateStackalloc($this->stackalloc))  {
-            return $this->stackalloc; /*int*/
+    public function toStrictfp(): int {
+        if (Strictfp::validateStrictfp($this->strictfp))  {
+            return $this->strictfp; /*int*/
         }
-        throw new Exception('never get to this Stackalloc::stackalloc');
+        throw new Exception('never get to this Strictfp::strictfp');
     }
 
     /**
@@ -46795,7 +48411,7 @@ class Stackalloc {
      * @return bool
      * @throws Exception
      */
-    public static function validateStackalloc(int $value): bool {
+    public static function validateStrictfp(int $value): bool {
         return true;
     }
 
@@ -46803,18 +48419,18 @@ class Stackalloc {
      * @throws Exception
      * @return int
      */
-    public function getStackalloc(): int {
-        if (Stackalloc::validateStackalloc($this->stackalloc))  {
-            return $this->stackalloc;
+    public function getStrictfp(): int {
+        if (Strictfp::validateStrictfp($this->strictfp))  {
+            return $this->strictfp;
         }
-        throw new Exception('never get to getStackalloc Stackalloc::stackalloc');
+        throw new Exception('never get to getStrictfp Strictfp::strictfp');
     }
 
     /**
      * @return int
      */
-    public static function sampleStackalloc(): int {
-        return 31; /*31:stackalloc*/
+    public static function sampleStrictfp(): int {
+        return 31; /*31:strictfp*/
     }
 
     /**
@@ -46822,7 +48438,7 @@ class Stackalloc {
      * @return bool
      */
     public function validate(): bool {
-        return Stackalloc::validateStackalloc($this->stackalloc);
+        return Strictfp::validateStrictfp($this->strictfp);
     }
 
     /**
@@ -46831,44 +48447,44 @@ class Stackalloc {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'stackalloc'} = $this->toStackalloc();
+        $out->{'strictfp'} = $this->toStrictfp();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Stackalloc
+     * @return Strictfp
      * @throws Exception
      */
-    public static function from(stdClass $obj): Stackalloc {
-        if (!property_exists($obj, 'stackalloc')) {
+    public static function from(stdClass $obj): Strictfp {
+        if (!property_exists($obj, 'strictfp')) {
             throw new Exception("Missing required property");
         }
-        return new Stackalloc(
-         Stackalloc::fromStackalloc($obj->{'stackalloc'})
+        return new Strictfp(
+         Strictfp::fromStrictfp($obj->{'strictfp'})
         );
     }
 
     /**
-     * @return Stackalloc
+     * @return Strictfp
      */
-    public static function sample(): Stackalloc {
-        return new Stackalloc(
-         Stackalloc::sampleStackalloc()
+    public static function sample(): Strictfp {
+        return new Strictfp(
+         Strictfp::sampleStrictfp()
         );
     }
 }
 
-// This is an autogenerated file:Standards
+// This is an autogenerated file:StringClass
 
-class Standards {
-    private int $standards; // json:Standards Required
+class StringClass {
+    private int $string; // json:string Required
 
     /**
-     * @param int $standards
+     * @param int $string
      */
-    public function __construct(int $standards) {
-        $this->standards = $standards;
+    public function __construct(int $string) {
+        $this->string = $string;
     }
 
     /**
@@ -46876,7 +48492,7 @@ class Standards {
      * @throws Exception
      * @return int
      */
-    public static function fromStandards(int $value): int {
+    public static function fromString(int $value): int {
         return $value; /*int*/
     }
 
@@ -46884,11 +48500,11 @@ class Standards {
      * @throws Exception
      * @return int
      */
-    public function toStandards(): int {
-        if (Standards::validateStandards($this->standards))  {
-            return $this->standards; /*int*/
+    public function toString(): int {
+        if (StringClass::validateString($this->string))  {
+            return $this->string; /*int*/
         }
-        throw new Exception('never get to this Standards::standards');
+        throw new Exception('never get to this StringClass::string');
     }
 
     /**
@@ -46896,7 +48512,7 @@ class Standards {
      * @return bool
      * @throws Exception
      */
-    public static function validateStandards(int $value): bool {
+    public static function validateString(int $value): bool {
         return true;
     }
 
@@ -46904,18 +48520,18 @@ class Standards {
      * @throws Exception
      * @return int
      */
-    public function getStandards(): int {
-        if (Standards::validateStandards($this->standards))  {
-            return $this->standards;
+    public function getString(): int {
+        if (StringClass::validateString($this->string))  {
+            return $this->string;
         }
-        throw new Exception('never get to getStandards Standards::standards');
+        throw new Exception('never get to getString StringClass::string');
     }
 
     /**
      * @return int
      */
-    public static function sampleStandards(): int {
-        return 31; /*31:standards*/
+    public static function sampleString(): int {
+        return 31; /*31:string*/
     }
 
     /**
@@ -46923,7 +48539,7 @@ class Standards {
      * @return bool
      */
     public function validate(): bool {
-        return Standards::validateStandards($this->standards);
+        return StringClass::validateString($this->string);
     }
 
     /**
@@ -46932,44 +48548,44 @@ class Standards {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'Standards'} = $this->toStandards();
+        $out->{'string'} = $this->toString();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Standards
+     * @return StringClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): Standards {
-        if (!property_exists($obj, 'Standards')) {
+    public static function from(stdClass $obj): StringClass {
+        if (!property_exists($obj, 'string')) {
             throw new Exception("Missing required property");
         }
-        return new Standards(
-         Standards::fromStandards($obj->{'Standards'})
+        return new StringClass(
+         StringClass::fromString($obj->{'string'})
         );
     }
 
     /**
-     * @return Standards
+     * @return StringClass
      */
-    public static function sample(): Standards {
-        return new Standards(
-         Standards::sampleStandards()
+    public static function sample(): StringClass {
+        return new StringClass(
+         StringClass::sampleString()
         );
     }
 }
 
-// This is an autogenerated file:StaticClass
+// This is an autogenerated file:Struct
 
-class StaticClass {
-    private int $static; // json:static Required
+class Struct {
+    private int $struct; // json:struct Required
 
     /**
-     * @param int $static
+     * @param int $struct
      */
-    public function __construct(int $static) {
-        $this->static = $static;
+    public function __construct(int $struct) {
+        $this->struct = $struct;
     }
 
     /**
@@ -46977,7 +48593,7 @@ class StaticClass {
      * @throws Exception
      * @return int
      */
-    public static function fromStatic(int $value): int {
+    public static function fromStruct(int $value): int {
         return $value; /*int*/
     }
 
@@ -46985,11 +48601,11 @@ class StaticClass {
      * @throws Exception
      * @return int
      */
-    public function toStatic(): int {
-        if (StaticClass::validateStatic($this->static))  {
-            return $this->static; /*int*/
+    public function toStruct(): int {
+        if (Struct::validateStruct($this->struct))  {
+            return $this->struct; /*int*/
         }
-        throw new Exception('never get to this StaticClass::static');
+        throw new Exception('never get to this Struct::struct');
     }
 
     /**
@@ -46997,7 +48613,7 @@ class StaticClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateStatic(int $value): bool {
+    public static function validateStruct(int $value): bool {
         return true;
     }
 
@@ -47005,18 +48621,18 @@ class StaticClass {
      * @throws Exception
      * @return int
      */
-    public function getStatic(): int {
-        if (StaticClass::validateStatic($this->static))  {
-            return $this->static;
+    public function getStruct(): int {
+        if (Struct::validateStruct($this->struct))  {
+            return $this->struct;
         }
-        throw new Exception('never get to getStatic StaticClass::static');
+        throw new Exception('never get to getStruct Struct::struct');
     }
 
     /**
      * @return int
      */
-    public static function sampleStatic(): int {
-        return 31; /*31:static*/
+    public static function sampleStruct(): int {
+        return 31; /*31:struct*/
     }
 
     /**
@@ -47024,7 +48640,7 @@ class StaticClass {
      * @return bool
      */
     public function validate(): bool {
-        return StaticClass::validateStatic($this->static);
+        return Struct::validateStruct($this->struct);
     }
 
     /**
@@ -47033,44 +48649,44 @@ class StaticClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'static'} = $this->toStatic();
+        $out->{'struct'} = $this->toStruct();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return StaticClass
+     * @return Struct
      * @throws Exception
      */
-    public static function from(stdClass $obj): StaticClass {
-        if (!property_exists($obj, 'static')) {
+    public static function from(stdClass $obj): Struct {
+        if (!property_exists($obj, 'struct')) {
             throw new Exception("Missing required property");
         }
-        return new StaticClass(
-         StaticClass::fromStatic($obj->{'static'})
+        return new Struct(
+         Struct::fromStruct($obj->{'struct'})
         );
     }
 
     /**
-     * @return StaticClass
+     * @return Struct
      */
-    public static function sample(): StaticClass {
-        return new StaticClass(
-         StaticClass::sampleStatic()
+    public static function sample(): Struct {
+        return new Struct(
+         Struct::sampleStruct()
         );
     }
 }
 
-// This is an autogenerated file:StaticAssert
+// This is an autogenerated file:Subscript
 
-class StaticAssert {
-    private int $staticAssert; // json:static_assert Required
+class Subscript {
+    private int $subscript; // json:subscript Required
 
     /**
-     * @param int $staticAssert
+     * @param int $subscript
      */
-    public function __construct(int $staticAssert) {
-        $this->staticAssert = $staticAssert;
+    public function __construct(int $subscript) {
+        $this->subscript = $subscript;
     }
 
     /**
@@ -47078,7 +48694,7 @@ class StaticAssert {
      * @throws Exception
      * @return int
      */
-    public static function fromStaticAssert(int $value): int {
+    public static function fromSubscript(int $value): int {
         return $value; /*int*/
     }
 
@@ -47086,11 +48702,11 @@ class StaticAssert {
      * @throws Exception
      * @return int
      */
-    public function toStaticAssert(): int {
-        if (StaticAssert::validateStaticAssert($this->staticAssert))  {
-            return $this->staticAssert; /*int*/
+    public function toSubscript(): int {
+        if (Subscript::validateSubscript($this->subscript))  {
+            return $this->subscript; /*int*/
         }
-        throw new Exception('never get to this StaticAssert::staticAssert');
+        throw new Exception('never get to this Subscript::subscript');
     }
 
     /**
@@ -47098,7 +48714,7 @@ class StaticAssert {
      * @return bool
      * @throws Exception
      */
-    public static function validateStaticAssert(int $value): bool {
+    public static function validateSubscript(int $value): bool {
         return true;
     }
 
@@ -47106,18 +48722,18 @@ class StaticAssert {
      * @throws Exception
      * @return int
      */
-    public function getStaticAssert(): int {
-        if (StaticAssert::validateStaticAssert($this->staticAssert))  {
-            return $this->staticAssert;
+    public function getSubscript(): int {
+        if (Subscript::validateSubscript($this->subscript))  {
+            return $this->subscript;
         }
-        throw new Exception('never get to getStaticAssert StaticAssert::staticAssert');
+        throw new Exception('never get to getSubscript Subscript::subscript');
     }
 
     /**
      * @return int
      */
-    public static function sampleStaticAssert(): int {
-        return 31; /*31:staticAssert*/
+    public static function sampleSubscript(): int {
+        return 31; /*31:subscript*/
     }
 
     /**
@@ -47125,7 +48741,7 @@ class StaticAssert {
      * @return bool
      */
     public function validate(): bool {
-        return StaticAssert::validateStaticAssert($this->staticAssert);
+        return Subscript::validateSubscript($this->subscript);
     }
 
     /**
@@ -47134,44 +48750,44 @@ class StaticAssert {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'static_assert'} = $this->toStaticAssert();
+        $out->{'subscript'} = $this->toSubscript();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return StaticAssert
+     * @return Subscript
      * @throws Exception
      */
-    public static function from(stdClass $obj): StaticAssert {
-        if (!property_exists($obj, 'static_assert')) {
+    public static function from(stdClass $obj): Subscript {
+        if (!property_exists($obj, 'subscript')) {
             throw new Exception("Missing required property");
         }
-        return new StaticAssert(
-         StaticAssert::fromStaticAssert($obj->{'static_assert'})
+        return new Subscript(
+         Subscript::fromSubscript($obj->{'subscript'})
         );
     }
 
     /**
-     * @return StaticAssert
+     * @return Subscript
      */
-    public static function sample(): StaticAssert {
-        return new StaticAssert(
-         StaticAssert::sampleStaticAssert()
+    public static function sample(): Subscript {
+        return new Subscript(
+         Subscript::sampleSubscript()
         );
     }
 }
 
-// This is an autogenerated file:StaticCast
+// This is an autogenerated file:Super
 
-class StaticCast {
-    private int $staticCast; // json:static_cast Required
+class Super {
+    private int $super; // json:super Required
 
     /**
-     * @param int $staticCast
+     * @param int $super
      */
-    public function __construct(int $staticCast) {
-        $this->staticCast = $staticCast;
+    public function __construct(int $super) {
+        $this->super = $super;
     }
 
     /**
@@ -47179,7 +48795,7 @@ class StaticCast {
      * @throws Exception
      * @return int
      */
-    public static function fromStaticCast(int $value): int {
+    public static function fromSuper(int $value): int {
         return $value; /*int*/
     }
 
@@ -47187,11 +48803,11 @@ class StaticCast {
      * @throws Exception
      * @return int
      */
-    public function toStaticCast(): int {
-        if (StaticCast::validateStaticCast($this->staticCast))  {
-            return $this->staticCast; /*int*/
+    public function toSuper(): int {
+        if (Super::validateSuper($this->super))  {
+            return $this->super; /*int*/
         }
-        throw new Exception('never get to this StaticCast::staticCast');
+        throw new Exception('never get to this Super::super');
     }
 
     /**
@@ -47199,7 +48815,7 @@ class StaticCast {
      * @return bool
      * @throws Exception
      */
-    public static function validateStaticCast(int $value): bool {
+    public static function validateSuper(int $value): bool {
         return true;
     }
 
@@ -47207,18 +48823,18 @@ class StaticCast {
      * @throws Exception
      * @return int
      */
-    public function getStaticCast(): int {
-        if (StaticCast::validateStaticCast($this->staticCast))  {
-            return $this->staticCast;
+    public function getSuper(): int {
+        if (Super::validateSuper($this->super))  {
+            return $this->super;
         }
-        throw new Exception('never get to getStaticCast StaticCast::staticCast');
+        throw new Exception('never get to getSuper Super::super');
     }
 
     /**
      * @return int
      */
-    public static function sampleStaticCast(): int {
-        return 31; /*31:staticCast*/
+    public static function sampleSuper(): int {
+        return 31; /*31:super*/
     }
 
     /**
@@ -47226,7 +48842,7 @@ class StaticCast {
      * @return bool
      */
     public function validate(): bool {
-        return StaticCast::validateStaticCast($this->staticCast);
+        return Super::validateSuper($this->super);
     }
 
     /**
@@ -47235,44 +48851,44 @@ class StaticCast {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'static_cast'} = $this->toStaticCast();
+        $out->{'super'} = $this->toSuper();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return StaticCast
+     * @return Super
      * @throws Exception
      */
-    public static function from(stdClass $obj): StaticCast {
-        if (!property_exists($obj, 'static_cast')) {
+    public static function from(stdClass $obj): Super {
+        if (!property_exists($obj, 'super')) {
             throw new Exception("Missing required property");
         }
-        return new StaticCast(
-         StaticCast::fromStaticCast($obj->{'static_cast'})
+        return new Super(
+         Super::fromSuper($obj->{'super'})
         );
     }
 
     /**
-     * @return StaticCast
+     * @return Super
      */
-    public static function sample(): StaticCast {
-        return new StaticCast(
-         StaticCast::sampleStaticCast()
+    public static function sample(): Super {
+        return new Super(
+         Super::sampleSuper()
         );
     }
 }
 
-// This is an autogenerated file:StdDeserializer
+// This is an autogenerated file:SwitchClass
 
-class StdDeserializer {
-    private int $stdDeserializer; // json:StdDeserializer Required
+class SwitchClass {
+    private int $switch; // json:switch Required
 
     /**
-     * @param int $stdDeserializer
+     * @param int $switch
      */
-    public function __construct(int $stdDeserializer) {
-        $this->stdDeserializer = $stdDeserializer;
+    public function __construct(int $switch) {
+        $this->switch = $switch;
     }
 
     /**
@@ -47280,7 +48896,7 @@ class StdDeserializer {
      * @throws Exception
      * @return int
      */
-    public static function fromStdDeserializer(int $value): int {
+    public static function fromSwitch(int $value): int {
         return $value; /*int*/
     }
 
@@ -47288,11 +48904,11 @@ class StdDeserializer {
      * @throws Exception
      * @return int
      */
-    public function toStdDeserializer(): int {
-        if (StdDeserializer::validateStdDeserializer($this->stdDeserializer))  {
-            return $this->stdDeserializer; /*int*/
+    public function toSwitch(): int {
+        if (SwitchClass::validateSwitch($this->switch))  {
+            return $this->switch; /*int*/
         }
-        throw new Exception('never get to this StdDeserializer::stdDeserializer');
+        throw new Exception('never get to this SwitchClass::switch');
     }
 
     /**
@@ -47300,7 +48916,7 @@ class StdDeserializer {
      * @return bool
      * @throws Exception
      */
-    public static function validateStdDeserializer(int $value): bool {
+    public static function validateSwitch(int $value): bool {
         return true;
     }
 
@@ -47308,18 +48924,18 @@ class StdDeserializer {
      * @throws Exception
      * @return int
      */
-    public function getStdDeserializer(): int {
-        if (StdDeserializer::validateStdDeserializer($this->stdDeserializer))  {
-            return $this->stdDeserializer;
+    public function getSwitch(): int {
+        if (SwitchClass::validateSwitch($this->switch))  {
+            return $this->switch;
         }
-        throw new Exception('never get to getStdDeserializer StdDeserializer::stdDeserializer');
+        throw new Exception('never get to getSwitch SwitchClass::switch');
     }
 
     /**
      * @return int
      */
-    public static function sampleStdDeserializer(): int {
-        return 31; /*31:stdDeserializer*/
+    public static function sampleSwitch(): int {
+        return 31; /*31:switch*/
     }
 
     /**
@@ -47327,7 +48943,7 @@ class StdDeserializer {
      * @return bool
      */
     public function validate(): bool {
-        return StdDeserializer::validateStdDeserializer($this->stdDeserializer);
+        return SwitchClass::validateSwitch($this->switch);
     }
 
     /**
@@ -47336,44 +48952,44 @@ class StdDeserializer {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'StdDeserializer'} = $this->toStdDeserializer();
+        $out->{'switch'} = $this->toSwitch();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return StdDeserializer
+     * @return SwitchClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): StdDeserializer {
-        if (!property_exists($obj, 'StdDeserializer')) {
+    public static function from(stdClass $obj): SwitchClass {
+        if (!property_exists($obj, 'switch')) {
             throw new Exception("Missing required property");
         }
-        return new StdDeserializer(
-         StdDeserializer::fromStdDeserializer($obj->{'StdDeserializer'})
+        return new SwitchClass(
+         SwitchClass::fromSwitch($obj->{'switch'})
         );
     }
 
     /**
-     * @return StdDeserializer
+     * @return SwitchClass
      */
-    public static function sample(): StdDeserializer {
-        return new StdDeserializer(
-         StdDeserializer::sampleStdDeserializer()
+    public static function sample(): SwitchClass {
+        return new SwitchClass(
+         SwitchClass::sampleSwitch()
         );
     }
 }
 
-// This is an autogenerated file:StdSerializer
+// This is an autogenerated file:Symbol
 
-class StdSerializer {
-    private int $stdSerializer; // json:StdSerializer Required
+class Symbol {
+    private int $symbol; // json:symbol Required
 
     /**
-     * @param int $stdSerializer
+     * @param int $symbol
      */
-    public function __construct(int $stdSerializer) {
-        $this->stdSerializer = $stdSerializer;
+    public function __construct(int $symbol) {
+        $this->symbol = $symbol;
     }
 
     /**
@@ -47381,7 +48997,7 @@ class StdSerializer {
      * @throws Exception
      * @return int
      */
-    public static function fromStdSerializer(int $value): int {
+    public static function fromSymbol(int $value): int {
         return $value; /*int*/
     }
 
@@ -47389,11 +49005,11 @@ class StdSerializer {
      * @throws Exception
      * @return int
      */
-    public function toStdSerializer(): int {
-        if (StdSerializer::validateStdSerializer($this->stdSerializer))  {
-            return $this->stdSerializer; /*int*/
+    public function toSymbol(): int {
+        if (Symbol::validateSymbol($this->symbol))  {
+            return $this->symbol; /*int*/
         }
-        throw new Exception('never get to this StdSerializer::stdSerializer');
+        throw new Exception('never get to this Symbol::symbol');
     }
 
     /**
@@ -47401,7 +49017,7 @@ class StdSerializer {
      * @return bool
      * @throws Exception
      */
-    public static function validateStdSerializer(int $value): bool {
+    public static function validateSymbol(int $value): bool {
         return true;
     }
 
@@ -47409,18 +49025,18 @@ class StdSerializer {
      * @throws Exception
      * @return int
      */
-    public function getStdSerializer(): int {
-        if (StdSerializer::validateStdSerializer($this->stdSerializer))  {
-            return $this->stdSerializer;
+    public function getSymbol(): int {
+        if (Symbol::validateSymbol($this->symbol))  {
+            return $this->symbol;
         }
-        throw new Exception('never get to getStdSerializer StdSerializer::stdSerializer');
+        throw new Exception('never get to getSymbol Symbol::symbol');
     }
 
     /**
      * @return int
      */
-    public static function sampleStdSerializer(): int {
-        return 31; /*31:stdSerializer*/
+    public static function sampleSymbol(): int {
+        return 31; /*31:symbol*/
     }
 
     /**
@@ -47428,7 +49044,7 @@ class StdSerializer {
      * @return bool
      */
     public function validate(): bool {
-        return StdSerializer::validateStdSerializer($this->stdSerializer);
+        return Symbol::validateSymbol($this->symbol);
     }
 
     /**
@@ -47437,44 +49053,44 @@ class StdSerializer {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'StdSerializer'} = $this->toStdSerializer();
+        $out->{'symbol'} = $this->toSymbol();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return StdSerializer
+     * @return Symbol
      * @throws Exception
      */
-    public static function from(stdClass $obj): StdSerializer {
-        if (!property_exists($obj, 'StdSerializer')) {
+    public static function from(stdClass $obj): Symbol {
+        if (!property_exists($obj, 'symbol')) {
             throw new Exception("Missing required property");
         }
-        return new StdSerializer(
-         StdSerializer::fromStdSerializer($obj->{'StdSerializer'})
+        return new Symbol(
+         Symbol::fromSymbol($obj->{'symbol'})
         );
     }
 
     /**
-     * @return StdSerializer
+     * @return Symbol
      */
-    public static function sample(): StdSerializer {
-        return new StdSerializer(
-         StdSerializer::sampleStdSerializer()
+    public static function sample(): Symbol {
+        return new Symbol(
+         Symbol::sampleSymbol()
         );
     }
 }
 
-// This is an autogenerated file:Strictfp
+// This is an autogenerated file:Synchronized
 
-class Strictfp {
-    private int $strictfp; // json:strictfp Required
+class Synchronized {
+    private int $synchronized; // json:synchronized Required
 
     /**
-     * @param int $strictfp
+     * @param int $synchronized
      */
-    public function __construct(int $strictfp) {
-        $this->strictfp = $strictfp;
+    public function __construct(int $synchronized) {
+        $this->synchronized = $synchronized;
     }
 
     /**
@@ -47482,7 +49098,7 @@ class Strictfp {
      * @throws Exception
      * @return int
      */
-    public static function fromStrictfp(int $value): int {
+    public static function fromSynchronized(int $value): int {
         return $value; /*int*/
     }
 
@@ -47490,11 +49106,11 @@ class Strictfp {
      * @throws Exception
      * @return int
      */
-    public function toStrictfp(): int {
-        if (Strictfp::validateStrictfp($this->strictfp))  {
-            return $this->strictfp; /*int*/
+    public function toSynchronized(): int {
+        if (Synchronized::validateSynchronized($this->synchronized))  {
+            return $this->synchronized; /*int*/
         }
-        throw new Exception('never get to this Strictfp::strictfp');
+        throw new Exception('never get to this Synchronized::synchronized');
     }
 
     /**
@@ -47502,7 +49118,7 @@ class Strictfp {
      * @return bool
      * @throws Exception
      */
-    public static function validateStrictfp(int $value): bool {
+    public static function validateSynchronized(int $value): bool {
         return true;
     }
 
@@ -47510,18 +49126,18 @@ class Strictfp {
      * @throws Exception
      * @return int
      */
-    public function getStrictfp(): int {
-        if (Strictfp::validateStrictfp($this->strictfp))  {
-            return $this->strictfp;
+    public function getSynchronized(): int {
+        if (Synchronized::validateSynchronized($this->synchronized))  {
+            return $this->synchronized;
         }
-        throw new Exception('never get to getStrictfp Strictfp::strictfp');
+        throw new Exception('never get to getSynchronized Synchronized::synchronized');
     }
 
     /**
      * @return int
      */
-    public static function sampleStrictfp(): int {
-        return 31; /*31:strictfp*/
+    public static function sampleSynchronized(): int {
+        return 31; /*31:synchronized*/
     }
 
     /**
@@ -47529,7 +49145,7 @@ class Strictfp {
      * @return bool
      */
     public function validate(): bool {
-        return Strictfp::validateStrictfp($this->strictfp);
+        return Synchronized::validateSynchronized($this->synchronized);
     }
 
     /**
@@ -47538,44 +49154,44 @@ class Strictfp {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'strictfp'} = $this->toStrictfp();
+        $out->{'synchronized'} = $this->toSynchronized();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Strictfp
+     * @return Synchronized
      * @throws Exception
      */
-    public static function from(stdClass $obj): Strictfp {
-        if (!property_exists($obj, 'strictfp')) {
+    public static function from(stdClass $obj): Synchronized {
+        if (!property_exists($obj, 'synchronized')) {
             throw new Exception("Missing required property");
         }
-        return new Strictfp(
-         Strictfp::fromStrictfp($obj->{'strictfp'})
+        return new Synchronized(
+         Synchronized::fromSynchronized($obj->{'synchronized'})
         );
     }
 
     /**
-     * @return Strictfp
+     * @return Synchronized
      */
-    public static function sample(): Strictfp {
-        return new Strictfp(
-         Strictfp::sampleStrictfp()
+    public static function sample(): Synchronized {
+        return new Synchronized(
+         Synchronized::sampleSynchronized()
         );
     }
 }
 
-// This is an autogenerated file:StringClass
+// This is an autogenerated file:System
 
-class StringClass {
-    private int $string; // json:string Required
+class System {
+    private int $system; // json:system Required
 
     /**
-     * @param int $string
+     * @param int $system
      */
-    public function __construct(int $string) {
-        $this->string = $string;
+    public function __construct(int $system) {
+        $this->system = $system;
     }
 
     /**
@@ -47583,7 +49199,7 @@ class StringClass {
      * @throws Exception
      * @return int
      */
-    public static function fromString(int $value): int {
+    public static function fromSystem(int $value): int {
         return $value; /*int*/
     }
 
@@ -47591,11 +49207,11 @@ class StringClass {
      * @throws Exception
      * @return int
      */
-    public function toString(): int {
-        if (StringClass::validateString($this->string))  {
-            return $this->string; /*int*/
+    public function toSystem(): int {
+        if (System::validateSystem($this->system))  {
+            return $this->system; /*int*/
         }
-        throw new Exception('never get to this StringClass::string');
+        throw new Exception('never get to this System::system');
     }
 
     /**
@@ -47603,7 +49219,7 @@ class StringClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateString(int $value): bool {
+    public static function validateSystem(int $value): bool {
         return true;
     }
 
@@ -47611,18 +49227,18 @@ class StringClass {
      * @throws Exception
      * @return int
      */
-    public function getString(): int {
-        if (StringClass::validateString($this->string))  {
-            return $this->string;
+    public function getSystem(): int {
+        if (System::validateSystem($this->system))  {
+            return $this->system;
         }
-        throw new Exception('never get to getString StringClass::string');
+        throw new Exception('never get to getSystem System::system');
     }
 
     /**
      * @return int
      */
-    public static function sampleString(): int {
-        return 31; /*31:string*/
+    public static function sampleSystem(): int {
+        return 31; /*31:system*/
     }
 
     /**
@@ -47630,7 +49246,7 @@ class StringClass {
      * @return bool
      */
     public function validate(): bool {
-        return StringClass::validateString($this->string);
+        return System::validateSystem($this->system);
     }
 
     /**
@@ -47639,44 +49255,44 @@ class StringClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'string'} = $this->toString();
+        $out->{'system'} = $this->toSystem();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return StringClass
+     * @return System
      * @throws Exception
      */
-    public static function from(stdClass $obj): StringClass {
-        if (!property_exists($obj, 'string')) {
+    public static function from(stdClass $obj): System {
+        if (!property_exists($obj, 'system')) {
             throw new Exception("Missing required property");
         }
-        return new StringClass(
-         StringClass::fromString($obj->{'string'})
+        return new System(
+         System::fromSystem($obj->{'system'})
         );
     }
 
     /**
-     * @return StringClass
+     * @return System
      */
-    public static function sample(): StringClass {
-        return new StringClass(
-         StringClass::sampleString()
+    public static function sample(): System {
+        return new System(
+         System::sampleSystem()
         );
     }
 }
 
-// This is an autogenerated file:Struct
+// This is an autogenerated file:Template
 
-class Struct {
-    private int $struct; // json:struct Required
+class Template {
+    private int $template; // json:template Required
 
     /**
-     * @param int $struct
+     * @param int $template
      */
-    public function __construct(int $struct) {
-        $this->struct = $struct;
+    public function __construct(int $template) {
+        $this->template = $template;
     }
 
     /**
@@ -47684,7 +49300,7 @@ class Struct {
      * @throws Exception
      * @return int
      */
-    public static function fromStruct(int $value): int {
+    public static function fromTemplate(int $value): int {
         return $value; /*int*/
     }
 
@@ -47692,11 +49308,11 @@ class Struct {
      * @throws Exception
      * @return int
      */
-    public function toStruct(): int {
-        if (Struct::validateStruct($this->struct))  {
-            return $this->struct; /*int*/
+    public function toTemplate(): int {
+        if (Template::validateTemplate($this->template))  {
+            return $this->template; /*int*/
         }
-        throw new Exception('never get to this Struct::struct');
+        throw new Exception('never get to this Template::template');
     }
 
     /**
@@ -47704,7 +49320,7 @@ class Struct {
      * @return bool
      * @throws Exception
      */
-    public static function validateStruct(int $value): bool {
+    public static function validateTemplate(int $value): bool {
         return true;
     }
 
@@ -47712,18 +49328,18 @@ class Struct {
      * @throws Exception
      * @return int
      */
-    public function getStruct(): int {
-        if (Struct::validateStruct($this->struct))  {
-            return $this->struct;
+    public function getTemplate(): int {
+        if (Template::validateTemplate($this->template))  {
+            return $this->template;
         }
-        throw new Exception('never get to getStruct Struct::struct');
+        throw new Exception('never get to getTemplate Template::template');
     }
 
     /**
      * @return int
      */
-    public static function sampleStruct(): int {
-        return 31; /*31:struct*/
+    public static function sampleTemplate(): int {
+        return 31; /*31:template*/
     }
 
     /**
@@ -47731,7 +49347,7 @@ class Struct {
      * @return bool
      */
     public function validate(): bool {
-        return Struct::validateStruct($this->struct);
+        return Template::validateTemplate($this->template);
     }
 
     /**
@@ -47740,44 +49356,44 @@ class Struct {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'struct'} = $this->toStruct();
+        $out->{'template'} = $this->toTemplate();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Struct
+     * @return Template
      * @throws Exception
      */
-    public static function from(stdClass $obj): Struct {
-        if (!property_exists($obj, 'struct')) {
+    public static function from(stdClass $obj): Template {
+        if (!property_exists($obj, 'template')) {
             throw new Exception("Missing required property");
         }
-        return new Struct(
-         Struct::fromStruct($obj->{'struct'})
+        return new Template(
+         Template::fromTemplate($obj->{'template'})
         );
     }
 
     /**
-     * @return Struct
+     * @return Template
      */
-    public static function sample(): Struct {
-        return new Struct(
-         Struct::sampleStruct()
+    public static function sample(): Template {
+        return new Template(
+         Template::sampleTemplate()
         );
     }
 }
 
-// This is an autogenerated file:Subscript
+// This is an autogenerated file:TextNode
 
-class Subscript {
-    private int $subscript; // json:subscript Required
+class TextNode {
+    private int $textNode; // json:TextNode Required
 
     /**
-     * @param int $subscript
+     * @param int $textNode
      */
-    public function __construct(int $subscript) {
-        $this->subscript = $subscript;
+    public function __construct(int $textNode) {
+        $this->textNode = $textNode;
     }
 
     /**
@@ -47785,7 +49401,7 @@ class Subscript {
      * @throws Exception
      * @return int
      */
-    public static function fromSubscript(int $value): int {
+    public static function fromTextNode(int $value): int {
         return $value; /*int*/
     }
 
@@ -47793,11 +49409,11 @@ class Subscript {
      * @throws Exception
      * @return int
      */
-    public function toSubscript(): int {
-        if (Subscript::validateSubscript($this->subscript))  {
-            return $this->subscript; /*int*/
+    public function toTextNode(): int {
+        if (TextNode::validateTextNode($this->textNode))  {
+            return $this->textNode; /*int*/
         }
-        throw new Exception('never get to this Subscript::subscript');
+        throw new Exception('never get to this TextNode::textNode');
     }
 
     /**
@@ -47805,7 +49421,7 @@ class Subscript {
      * @return bool
      * @throws Exception
      */
-    public static function validateSubscript(int $value): bool {
+    public static function validateTextNode(int $value): bool {
         return true;
     }
 
@@ -47813,18 +49429,18 @@ class Subscript {
      * @throws Exception
      * @return int
      */
-    public function getSubscript(): int {
-        if (Subscript::validateSubscript($this->subscript))  {
-            return $this->subscript;
+    public function getTextNode(): int {
+        if (TextNode::validateTextNode($this->textNode))  {
+            return $this->textNode;
         }
-        throw new Exception('never get to getSubscript Subscript::subscript');
+        throw new Exception('never get to getTextNode TextNode::textNode');
     }
 
     /**
      * @return int
      */
-    public static function sampleSubscript(): int {
-        return 31; /*31:subscript*/
+    public static function sampleTextNode(): int {
+        return 31; /*31:textNode*/
     }
 
     /**
@@ -47832,7 +49448,7 @@ class Subscript {
      * @return bool
      */
     public function validate(): bool {
-        return Subscript::validateSubscript($this->subscript);
+        return TextNode::validateTextNode($this->textNode);
     }
 
     /**
@@ -47841,44 +49457,44 @@ class Subscript {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'subscript'} = $this->toSubscript();
+        $out->{'TextNode'} = $this->toTextNode();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Subscript
+     * @return TextNode
      * @throws Exception
      */
-    public static function from(stdClass $obj): Subscript {
-        if (!property_exists($obj, 'subscript')) {
+    public static function from(stdClass $obj): TextNode {
+        if (!property_exists($obj, 'TextNode')) {
             throw new Exception("Missing required property");
         }
-        return new Subscript(
-         Subscript::fromSubscript($obj->{'subscript'})
+        return new TextNode(
+         TextNode::fromTextNode($obj->{'TextNode'})
         );
     }
 
     /**
-     * @return Subscript
+     * @return TextNode
      */
-    public static function sample(): Subscript {
-        return new Subscript(
-         Subscript::sampleSubscript()
+    public static function sample(): TextNode {
+        return new TextNode(
+         TextNode::sampleTextNode()
         );
     }
 }
 
-// This is an autogenerated file:Super
+// This is an autogenerated file:Then
 
-class Super {
-    private int $super; // json:super Required
+class Then {
+    private int $then; // json:then Required
 
     /**
-     * @param int $super
+     * @param int $then
      */
-    public function __construct(int $super) {
-        $this->super = $super;
+    public function __construct(int $then) {
+        $this->then = $then;
     }
 
     /**
@@ -47886,7 +49502,7 @@ class Super {
      * @throws Exception
      * @return int
      */
-    public static function fromSuper(int $value): int {
+    public static function fromThen(int $value): int {
         return $value; /*int*/
     }
 
@@ -47894,11 +49510,11 @@ class Super {
      * @throws Exception
      * @return int
      */
-    public function toSuper(): int {
-        if (Super::validateSuper($this->super))  {
-            return $this->super; /*int*/
+    public function toThen(): int {
+        if (Then::validateThen($this->then))  {
+            return $this->then; /*int*/
         }
-        throw new Exception('never get to this Super::super');
+        throw new Exception('never get to this Then::then');
     }
 
     /**
@@ -47906,7 +49522,7 @@ class Super {
      * @return bool
      * @throws Exception
      */
-    public static function validateSuper(int $value): bool {
+    public static function validateThen(int $value): bool {
         return true;
     }
 
@@ -47914,18 +49530,18 @@ class Super {
      * @throws Exception
      * @return int
      */
-    public function getSuper(): int {
-        if (Super::validateSuper($this->super))  {
-            return $this->super;
+    public function getThen(): int {
+        if (Then::validateThen($this->then))  {
+            return $this->then;
         }
-        throw new Exception('never get to getSuper Super::super');
+        throw new Exception('never get to getThen Then::then');
     }
 
     /**
      * @return int
      */
-    public static function sampleSuper(): int {
-        return 31; /*31:super*/
+    public static function sampleThen(): int {
+        return 31; /*31:then*/
     }
 
     /**
@@ -47933,7 +49549,7 @@ class Super {
      * @return bool
      */
     public function validate(): bool {
-        return Super::validateSuper($this->super);
+        return Then::validateThen($this->then);
     }
 
     /**
@@ -47942,44 +49558,44 @@ class Super {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'super'} = $this->toSuper();
+        $out->{'then'} = $this->toThen();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Super
+     * @return Then
      * @throws Exception
      */
-    public static function from(stdClass $obj): Super {
-        if (!property_exists($obj, 'super')) {
+    public static function from(stdClass $obj): Then {
+        if (!property_exists($obj, 'then')) {
             throw new Exception("Missing required property");
         }
-        return new Super(
-         Super::fromSuper($obj->{'super'})
+        return new Then(
+         Then::fromThen($obj->{'then'})
         );
     }
 
     /**
-     * @return Super
+     * @return Then
      */
-    public static function sample(): Super {
-        return new Super(
-         Super::sampleSuper()
+    public static function sample(): Then {
+        return new Then(
+         Then::sampleThen()
         );
     }
 }
 
-// This is an autogenerated file:SwitchClass
+// This is an autogenerated file:ThreadLocal
 
-class SwitchClass {
-    private int $switch; // json:switch Required
+class ThreadLocal {
+    private int $threadLocal; // json:thread_local Required
 
     /**
-     * @param int $switch
+     * @param int $threadLocal
      */
-    public function __construct(int $switch) {
-        $this->switch = $switch;
+    public function __construct(int $threadLocal) {
+        $this->threadLocal = $threadLocal;
     }
 
     /**
@@ -47987,7 +49603,7 @@ class SwitchClass {
      * @throws Exception
      * @return int
      */
-    public static function fromSwitch(int $value): int {
+    public static function fromThreadLocal(int $value): int {
         return $value; /*int*/
     }
 
@@ -47995,11 +49611,11 @@ class SwitchClass {
      * @throws Exception
      * @return int
      */
-    public function toSwitch(): int {
-        if (SwitchClass::validateSwitch($this->switch))  {
-            return $this->switch; /*int*/
+    public function toThreadLocal(): int {
+        if (ThreadLocal::validateThreadLocal($this->threadLocal))  {
+            return $this->threadLocal; /*int*/
         }
-        throw new Exception('never get to this SwitchClass::switch');
+        throw new Exception('never get to this ThreadLocal::threadLocal');
     }
 
     /**
@@ -48007,7 +49623,7 @@ class SwitchClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateSwitch(int $value): bool {
+    public static function validateThreadLocal(int $value): bool {
         return true;
     }
 
@@ -48015,18 +49631,18 @@ class SwitchClass {
      * @throws Exception
      * @return int
      */
-    public function getSwitch(): int {
-        if (SwitchClass::validateSwitch($this->switch))  {
-            return $this->switch;
+    public function getThreadLocal(): int {
+        if (ThreadLocal::validateThreadLocal($this->threadLocal))  {
+            return $this->threadLocal;
         }
-        throw new Exception('never get to getSwitch SwitchClass::switch');
+        throw new Exception('never get to getThreadLocal ThreadLocal::threadLocal');
     }
 
     /**
      * @return int
      */
-    public static function sampleSwitch(): int {
-        return 31; /*31:switch*/
+    public static function sampleThreadLocal(): int {
+        return 31; /*31:threadLocal*/
     }
 
     /**
@@ -48034,7 +49650,7 @@ class SwitchClass {
      * @return bool
      */
     public function validate(): bool {
-        return SwitchClass::validateSwitch($this->switch);
+        return ThreadLocal::validateThreadLocal($this->threadLocal);
     }
 
     /**
@@ -48043,44 +49659,44 @@ class SwitchClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'switch'} = $this->toSwitch();
+        $out->{'thread_local'} = $this->toThreadLocal();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return SwitchClass
+     * @return ThreadLocal
      * @throws Exception
      */
-    public static function from(stdClass $obj): SwitchClass {
-        if (!property_exists($obj, 'switch')) {
+    public static function from(stdClass $obj): ThreadLocal {
+        if (!property_exists($obj, 'thread_local')) {
             throw new Exception("Missing required property");
         }
-        return new SwitchClass(
-         SwitchClass::fromSwitch($obj->{'switch'})
+        return new ThreadLocal(
+         ThreadLocal::fromThreadLocal($obj->{'thread_local'})
         );
     }
 
     /**
-     * @return SwitchClass
+     * @return ThreadLocal
      */
-    public static function sample(): SwitchClass {
-        return new SwitchClass(
-         SwitchClass::sampleSwitch()
+    public static function sample(): ThreadLocal {
+        return new ThreadLocal(
+         ThreadLocal::sampleThreadLocal()
         );
     }
 }
 
-// This is an autogenerated file:Symbol
+// This is an autogenerated file:ThrowClass
 
-class Symbol {
-    private int $symbol; // json:symbol Required
+class ThrowClass {
+    private int $throw; // json:throw Required
 
     /**
-     * @param int $symbol
+     * @param int $throw
      */
-    public function __construct(int $symbol) {
-        $this->symbol = $symbol;
+    public function __construct(int $throw) {
+        $this->throw = $throw;
     }
 
     /**
@@ -48088,7 +49704,7 @@ class Symbol {
      * @throws Exception
      * @return int
      */
-    public static function fromSymbol(int $value): int {
+    public static function fromThrow(int $value): int {
         return $value; /*int*/
     }
 
@@ -48096,11 +49712,11 @@ class Symbol {
      * @throws Exception
      * @return int
      */
-    public function toSymbol(): int {
-        if (Symbol::validateSymbol($this->symbol))  {
-            return $this->symbol; /*int*/
+    public function toThrow(): int {
+        if (ThrowClass::validateThrow($this->throw))  {
+            return $this->throw; /*int*/
         }
-        throw new Exception('never get to this Symbol::symbol');
+        throw new Exception('never get to this ThrowClass::throw');
     }
 
     /**
@@ -48108,7 +49724,7 @@ class Symbol {
      * @return bool
      * @throws Exception
      */
-    public static function validateSymbol(int $value): bool {
+    public static function validateThrow(int $value): bool {
         return true;
     }
 
@@ -48116,18 +49732,18 @@ class Symbol {
      * @throws Exception
      * @return int
      */
-    public function getSymbol(): int {
-        if (Symbol::validateSymbol($this->symbol))  {
-            return $this->symbol;
+    public function getThrow(): int {
+        if (ThrowClass::validateThrow($this->throw))  {
+            return $this->throw;
         }
-        throw new Exception('never get to getSymbol Symbol::symbol');
+        throw new Exception('never get to getThrow ThrowClass::throw');
     }
 
     /**
      * @return int
      */
-    public static function sampleSymbol(): int {
-        return 31; /*31:symbol*/
+    public static function sampleThrow(): int {
+        return 31; /*31:throw*/
     }
 
     /**
@@ -48135,7 +49751,7 @@ class Symbol {
      * @return bool
      */
     public function validate(): bool {
-        return Symbol::validateSymbol($this->symbol);
+        return ThrowClass::validateThrow($this->throw);
     }
 
     /**
@@ -48144,44 +49760,44 @@ class Symbol {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'symbol'} = $this->toSymbol();
+        $out->{'throw'} = $this->toThrow();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Symbol
+     * @return ThrowClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): Symbol {
-        if (!property_exists($obj, 'symbol')) {
+    public static function from(stdClass $obj): ThrowClass {
+        if (!property_exists($obj, 'throw')) {
             throw new Exception("Missing required property");
         }
-        return new Symbol(
-         Symbol::fromSymbol($obj->{'symbol'})
+        return new ThrowClass(
+         ThrowClass::fromThrow($obj->{'throw'})
         );
     }
 
     /**
-     * @return Symbol
+     * @return ThrowClass
      */
-    public static function sample(): Symbol {
-        return new Symbol(
-         Symbol::sampleSymbol()
+    public static function sample(): ThrowClass {
+        return new ThrowClass(
+         ThrowClass::sampleThrow()
         );
     }
 }
 
-// This is an autogenerated file:Synchronized
+// This is an autogenerated file:Throws
 
-class Synchronized {
-    private int $synchronized; // json:synchronized Required
+class Throws {
+    private int $throws; // json:throws Required
 
     /**
-     * @param int $synchronized
+     * @param int $throws
      */
-    public function __construct(int $synchronized) {
-        $this->synchronized = $synchronized;
+    public function __construct(int $throws) {
+        $this->throws = $throws;
     }
 
     /**
@@ -48189,7 +49805,7 @@ class Synchronized {
      * @throws Exception
      * @return int
      */
-    public static function fromSynchronized(int $value): int {
+    public static function fromThrows(int $value): int {
         return $value; /*int*/
     }
 
@@ -48197,11 +49813,11 @@ class Synchronized {
      * @throws Exception
      * @return int
      */
-    public function toSynchronized(): int {
-        if (Synchronized::validateSynchronized($this->synchronized))  {
-            return $this->synchronized; /*int*/
+    public function toThrows(): int {
+        if (Throws::validateThrows($this->throws))  {
+            return $this->throws; /*int*/
         }
-        throw new Exception('never get to this Synchronized::synchronized');
+        throw new Exception('never get to this Throws::throws');
     }
 
     /**
@@ -48209,7 +49825,7 @@ class Synchronized {
      * @return bool
      * @throws Exception
      */
-    public static function validateSynchronized(int $value): bool {
+    public static function validateThrows(int $value): bool {
         return true;
     }
 
@@ -48217,18 +49833,18 @@ class Synchronized {
      * @throws Exception
      * @return int
      */
-    public function getSynchronized(): int {
-        if (Synchronized::validateSynchronized($this->synchronized))  {
-            return $this->synchronized;
+    public function getThrows(): int {
+        if (Throws::validateThrows($this->throws))  {
+            return $this->throws;
         }
-        throw new Exception('never get to getSynchronized Synchronized::synchronized');
+        throw new Exception('never get to getThrows Throws::throws');
     }
 
     /**
      * @return int
      */
-    public static function sampleSynchronized(): int {
-        return 31; /*31:synchronized*/
+    public static function sampleThrows(): int {
+        return 31; /*31:throws*/
     }
 
     /**
@@ -48236,7 +49852,7 @@ class Synchronized {
      * @return bool
      */
     public function validate(): bool {
-        return Synchronized::validateSynchronized($this->synchronized);
+        return Throws::validateThrows($this->throws);
     }
 
     /**
@@ -48245,44 +49861,44 @@ class Synchronized {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'synchronized'} = $this->toSynchronized();
+        $out->{'throws'} = $this->toThrows();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Synchronized
+     * @return Throws
      * @throws Exception
      */
-    public static function from(stdClass $obj): Synchronized {
-        if (!property_exists($obj, 'synchronized')) {
+    public static function from(stdClass $obj): Throws {
+        if (!property_exists($obj, 'throws')) {
             throw new Exception("Missing required property");
         }
-        return new Synchronized(
-         Synchronized::fromSynchronized($obj->{'synchronized'})
+        return new Throws(
+         Throws::fromThrows($obj->{'throws'})
         );
     }
 
     /**
-     * @return Synchronized
+     * @return Throws
      */
-    public static function sample(): Synchronized {
-        return new Synchronized(
-         Synchronized::sampleSynchronized()
+    public static function sample(): Throws {
+        return new Throws(
+         Throws::sampleThrows()
         );
     }
 }
 
-// This is an autogenerated file:System
+// This is an autogenerated file:TimeOnly
 
-class System {
-    private int $system; // json:system Required
+class TimeOnly {
+    private int $timeOnly; // json:TimeOnly Required
 
     /**
-     * @param int $system
+     * @param int $timeOnly
      */
-    public function __construct(int $system) {
-        $this->system = $system;
+    public function __construct(int $timeOnly) {
+        $this->timeOnly = $timeOnly;
     }
 
     /**
@@ -48290,7 +49906,7 @@ class System {
      * @throws Exception
      * @return int
      */
-    public static function fromSystem(int $value): int {
+    public static function fromTimeOnly(int $value): int {
         return $value; /*int*/
     }
 
@@ -48298,11 +49914,11 @@ class System {
      * @throws Exception
      * @return int
      */
-    public function toSystem(): int {
-        if (System::validateSystem($this->system))  {
-            return $this->system; /*int*/
+    public function toTimeOnly(): int {
+        if (TimeOnly::validateTimeOnly($this->timeOnly))  {
+            return $this->timeOnly; /*int*/
         }
-        throw new Exception('never get to this System::system');
+        throw new Exception('never get to this TimeOnly::timeOnly');
     }
 
     /**
@@ -48310,7 +49926,7 @@ class System {
      * @return bool
      * @throws Exception
      */
-    public static function validateSystem(int $value): bool {
+    public static function validateTimeOnly(int $value): bool {
         return true;
     }
 
@@ -48318,18 +49934,18 @@ class System {
      * @throws Exception
      * @return int
      */
-    public function getSystem(): int {
-        if (System::validateSystem($this->system))  {
-            return $this->system;
+    public function getTimeOnly(): int {
+        if (TimeOnly::validateTimeOnly($this->timeOnly))  {
+            return $this->timeOnly;
         }
-        throw new Exception('never get to getSystem System::system');
+        throw new Exception('never get to getTimeOnly TimeOnly::timeOnly');
     }
 
     /**
      * @return int
      */
-    public static function sampleSystem(): int {
-        return 31; /*31:system*/
+    public static function sampleTimeOnly(): int {
+        return 31; /*31:timeOnly*/
     }
 
     /**
@@ -48337,7 +49953,7 @@ class System {
      * @return bool
      */
     public function validate(): bool {
-        return System::validateSystem($this->system);
+        return TimeOnly::validateTimeOnly($this->timeOnly);
     }
 
     /**
@@ -48346,44 +49962,44 @@ class System {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'system'} = $this->toSystem();
+        $out->{'TimeOnly'} = $this->toTimeOnly();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return System
+     * @return TimeOnly
      * @throws Exception
      */
-    public static function from(stdClass $obj): System {
-        if (!property_exists($obj, 'system')) {
+    public static function from(stdClass $obj): TimeOnly {
+        if (!property_exists($obj, 'TimeOnly')) {
             throw new Exception("Missing required property");
         }
-        return new System(
-         System::fromSystem($obj->{'system'})
+        return new TimeOnly(
+         TimeOnly::fromTimeOnly($obj->{'TimeOnly'})
         );
     }
 
     /**
-     * @return System
+     * @return TimeOnly
      */
-    public static function sample(): System {
-        return new System(
-         System::sampleSystem()
+    public static function sample(): TimeOnly {
+        return new TimeOnly(
+         TimeOnly::sampleTimeOnly()
         );
     }
 }
 
-// This is an autogenerated file:Template
+// This is an autogenerated file:TimeOnlyConverter
 
-class Template {
-    private int $template; // json:template Required
+class TimeOnlyConverter {
+    private int $timeOnlyConverter; // json:TimeOnlyConverter Required
 
     /**
-     * @param int $template
+     * @param int $timeOnlyConverter
      */
-    public function __construct(int $template) {
-        $this->template = $template;
+    public function __construct(int $timeOnlyConverter) {
+        $this->timeOnlyConverter = $timeOnlyConverter;
     }
 
     /**
@@ -48391,7 +50007,7 @@ class Template {
      * @throws Exception
      * @return int
      */
-    public static function fromTemplate(int $value): int {
+    public static function fromTimeOnlyConverter(int $value): int {
         return $value; /*int*/
     }
 
@@ -48399,11 +50015,11 @@ class Template {
      * @throws Exception
      * @return int
      */
-    public function toTemplate(): int {
-        if (Template::validateTemplate($this->template))  {
-            return $this->template; /*int*/
+    public function toTimeOnlyConverter(): int {
+        if (TimeOnlyConverter::validateTimeOnlyConverter($this->timeOnlyConverter))  {
+            return $this->timeOnlyConverter; /*int*/
         }
-        throw new Exception('never get to this Template::template');
+        throw new Exception('never get to this TimeOnlyConverter::timeOnlyConverter');
     }
 
     /**
@@ -48411,7 +50027,7 @@ class Template {
      * @return bool
      * @throws Exception
      */
-    public static function validateTemplate(int $value): bool {
+    public static function validateTimeOnlyConverter(int $value): bool {
         return true;
     }
 
@@ -48419,18 +50035,18 @@ class Template {
      * @throws Exception
      * @return int
      */
-    public function getTemplate(): int {
-        if (Template::validateTemplate($this->template))  {
-            return $this->template;
+    public function getTimeOnlyConverter(): int {
+        if (TimeOnlyConverter::validateTimeOnlyConverter($this->timeOnlyConverter))  {
+            return $this->timeOnlyConverter;
         }
-        throw new Exception('never get to getTemplate Template::template');
+        throw new Exception('never get to getTimeOnlyConverter TimeOnlyConverter::timeOnlyConverter');
     }
 
     /**
      * @return int
      */
-    public static function sampleTemplate(): int {
-        return 31; /*31:template*/
+    public static function sampleTimeOnlyConverter(): int {
+        return 31; /*31:timeOnlyConverter*/
     }
 
     /**
@@ -48438,7 +50054,7 @@ class Template {
      * @return bool
      */
     public function validate(): bool {
-        return Template::validateTemplate($this->template);
+        return TimeOnlyConverter::validateTimeOnlyConverter($this->timeOnlyConverter);
     }
 
     /**
@@ -48447,44 +50063,44 @@ class Template {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'template'} = $this->toTemplate();
+        $out->{'TimeOnlyConverter'} = $this->toTimeOnlyConverter();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Template
+     * @return TimeOnlyConverter
      * @throws Exception
      */
-    public static function from(stdClass $obj): Template {
-        if (!property_exists($obj, 'template')) {
+    public static function from(stdClass $obj): TimeOnlyConverter {
+        if (!property_exists($obj, 'TimeOnlyConverter')) {
             throw new Exception("Missing required property");
         }
-        return new Template(
-         Template::fromTemplate($obj->{'template'})
+        return new TimeOnlyConverter(
+         TimeOnlyConverter::fromTimeOnlyConverter($obj->{'TimeOnlyConverter'})
         );
     }
 
     /**
-     * @return Template
+     * @return TimeOnlyConverter
      */
-    public static function sample(): Template {
-        return new Template(
-         Template::sampleTemplate()
+    public static function sample(): TimeOnlyConverter {
+        return new TimeOnlyConverter(
+         TimeOnlyConverter::sampleTimeOnlyConverter()
         );
     }
 }
 
-// This is an autogenerated file:Then
+// This is an autogenerated file:TimeZone
 
-class Then {
-    private int $then; // json:then Required
+class TimeZone {
+    private int $timeZone; // json:TimeZone Required
 
     /**
-     * @param int $then
+     * @param int $timeZone
      */
-    public function __construct(int $then) {
-        $this->then = $then;
+    public function __construct(int $timeZone) {
+        $this->timeZone = $timeZone;
     }
 
     /**
@@ -48492,7 +50108,7 @@ class Then {
      * @throws Exception
      * @return int
      */
-    public static function fromThen(int $value): int {
+    public static function fromTimeZone(int $value): int {
         return $value; /*int*/
     }
 
@@ -48500,11 +50116,11 @@ class Then {
      * @throws Exception
      * @return int
      */
-    public function toThen(): int {
-        if (Then::validateThen($this->then))  {
-            return $this->then; /*int*/
+    public function toTimeZone(): int {
+        if (TimeZone::validateTimeZone($this->timeZone))  {
+            return $this->timeZone; /*int*/
         }
-        throw new Exception('never get to this Then::then');
+        throw new Exception('never get to this TimeZone::timeZone');
     }
 
     /**
@@ -48512,7 +50128,7 @@ class Then {
      * @return bool
      * @throws Exception
      */
-    public static function validateThen(int $value): bool {
+    public static function validateTimeZone(int $value): bool {
         return true;
     }
 
@@ -48520,18 +50136,18 @@ class Then {
      * @throws Exception
      * @return int
      */
-    public function getThen(): int {
-        if (Then::validateThen($this->then))  {
-            return $this->then;
+    public function getTimeZone(): int {
+        if (TimeZone::validateTimeZone($this->timeZone))  {
+            return $this->timeZone;
         }
-        throw new Exception('never get to getThen Then::then');
+        throw new Exception('never get to getTimeZone TimeZone::timeZone');
     }
 
     /**
      * @return int
      */
-    public static function sampleThen(): int {
-        return 31; /*31:then*/
+    public static function sampleTimeZone(): int {
+        return 31; /*31:timeZone*/
     }
 
     /**
@@ -48539,7 +50155,7 @@ class Then {
      * @return bool
      */
     public function validate(): bool {
-        return Then::validateThen($this->then);
+        return TimeZone::validateTimeZone($this->timeZone);
     }
 
     /**
@@ -48548,44 +50164,44 @@ class Then {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'then'} = $this->toThen();
+        $out->{'TimeZone'} = $this->toTimeZone();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Then
+     * @return TimeZone
      * @throws Exception
      */
-    public static function from(stdClass $obj): Then {
-        if (!property_exists($obj, 'then')) {
+    public static function from(stdClass $obj): TimeZone {
+        if (!property_exists($obj, 'TimeZone')) {
             throw new Exception("Missing required property");
         }
-        return new Then(
-         Then::fromThen($obj->{'then'})
+        return new TimeZone(
+         TimeZone::fromTimeZone($obj->{'TimeZone'})
         );
     }
 
     /**
-     * @return Then
+     * @return TimeZone
      */
-    public static function sample(): Then {
-        return new Then(
-         Then::sampleThen()
+    public static function sample(): TimeZone {
+        return new TimeZone(
+         TimeZone::sampleTimeZone()
         );
     }
 }
 
-// This is an autogenerated file:ThreadLocal
+// This is an autogenerated file:ToJSON
 
-class ThreadLocal {
-    private int $threadLocal; // json:thread_local Required
+class ToJSON {
+    private int $toJSON; // json:to_json Required
 
     /**
-     * @param int $threadLocal
+     * @param int $toJSON
      */
-    public function __construct(int $threadLocal) {
-        $this->threadLocal = $threadLocal;
+    public function __construct(int $toJSON) {
+        $this->toJSON = $toJSON;
     }
 
     /**
@@ -48593,7 +50209,7 @@ class ThreadLocal {
      * @throws Exception
      * @return int
      */
-    public static function fromThreadLocal(int $value): int {
+    public static function fromToJSON(int $value): int {
         return $value; /*int*/
     }
 
@@ -48601,11 +50217,11 @@ class ThreadLocal {
      * @throws Exception
      * @return int
      */
-    public function toThreadLocal(): int {
-        if (ThreadLocal::validateThreadLocal($this->threadLocal))  {
-            return $this->threadLocal; /*int*/
+    public function toToJSON(): int {
+        if (ToJSON::validateToJSON($this->toJSON))  {
+            return $this->toJSON; /*int*/
         }
-        throw new Exception('never get to this ThreadLocal::threadLocal');
+        throw new Exception('never get to this ToJSON::toJSON');
     }
 
     /**
@@ -48613,7 +50229,7 @@ class ThreadLocal {
      * @return bool
      * @throws Exception
      */
-    public static function validateThreadLocal(int $value): bool {
+    public static function validateToJSON(int $value): bool {
         return true;
     }
 
@@ -48621,18 +50237,18 @@ class ThreadLocal {
      * @throws Exception
      * @return int
      */
-    public function getThreadLocal(): int {
-        if (ThreadLocal::validateThreadLocal($this->threadLocal))  {
-            return $this->threadLocal;
+    public function getToJSON(): int {
+        if (ToJSON::validateToJSON($this->toJSON))  {
+            return $this->toJSON;
         }
-        throw new Exception('never get to getThreadLocal ThreadLocal::threadLocal');
+        throw new Exception('never get to getToJSON ToJSON::toJSON');
     }
 
     /**
      * @return int
      */
-    public static function sampleThreadLocal(): int {
-        return 31; /*31:threadLocal*/
+    public static function sampleToJSON(): int {
+        return 31; /*31:toJSON*/
     }
 
     /**
@@ -48640,7 +50256,7 @@ class ThreadLocal {
      * @return bool
      */
     public function validate(): bool {
-        return ThreadLocal::validateThreadLocal($this->threadLocal);
+        return ToJSON::validateToJSON($this->toJSON);
     }
 
     /**
@@ -48649,44 +50265,44 @@ class ThreadLocal {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'thread_local'} = $this->toThreadLocal();
+        $out->{'to_json'} = $this->toToJSON();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return ThreadLocal
+     * @return ToJSON
      * @throws Exception
      */
-    public static function from(stdClass $obj): ThreadLocal {
-        if (!property_exists($obj, 'thread_local')) {
+    public static function from(stdClass $obj): ToJSON {
+        if (!property_exists($obj, 'to_json')) {
             throw new Exception("Missing required property");
         }
-        return new ThreadLocal(
-         ThreadLocal::fromThreadLocal($obj->{'thread_local'})
+        return new ToJSON(
+         ToJSON::fromToJSON($obj->{'to_json'})
         );
     }
 
     /**
-     * @return ThreadLocal
+     * @return ToJSON
      */
-    public static function sample(): ThreadLocal {
-        return new ThreadLocal(
-         ThreadLocal::sampleThreadLocal()
+    public static function sample(): ToJSON {
+        return new ToJSON(
+         ToJSON::sampleToJSON()
         );
     }
 }
 
-// This is an autogenerated file:ThrowClass
+// This is an autogenerated file:ToString
 
-class ThrowClass {
-    private int $throw; // json:throw Required
+class ToString {
+    private int $toString; // json:toString Required
 
     /**
-     * @param int $throw
+     * @param int $toString
      */
-    public function __construct(int $throw) {
-        $this->throw = $throw;
+    public function __construct(int $toString) {
+        $this->toString = $toString;
     }
 
     /**
@@ -48694,7 +50310,7 @@ class ThrowClass {
      * @throws Exception
      * @return int
      */
-    public static function fromThrow(int $value): int {
+    public static function fromToString(int $value): int {
         return $value; /*int*/
     }
 
@@ -48702,11 +50318,11 @@ class ThrowClass {
      * @throws Exception
      * @return int
      */
-    public function toThrow(): int {
-        if (ThrowClass::validateThrow($this->throw))  {
-            return $this->throw; /*int*/
+    public function toToString(): int {
+        if (ToString::validateToString($this->toString))  {
+            return $this->toString; /*int*/
         }
-        throw new Exception('never get to this ThrowClass::throw');
+        throw new Exception('never get to this ToString::toString');
     }
 
     /**
@@ -48714,7 +50330,7 @@ class ThrowClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateThrow(int $value): bool {
+    public static function validateToString(int $value): bool {
         return true;
     }
 
@@ -48722,18 +50338,18 @@ class ThrowClass {
      * @throws Exception
      * @return int
      */
-    public function getThrow(): int {
-        if (ThrowClass::validateThrow($this->throw))  {
-            return $this->throw;
+    public function getToString(): int {
+        if (ToString::validateToString($this->toString))  {
+            return $this->toString;
         }
-        throw new Exception('never get to getThrow ThrowClass::throw');
+        throw new Exception('never get to getToString ToString::toString');
     }
 
     /**
      * @return int
      */
-    public static function sampleThrow(): int {
-        return 31; /*31:throw*/
+    public static function sampleToString(): int {
+        return 31; /*31:toString*/
     }
 
     /**
@@ -48741,7 +50357,7 @@ class ThrowClass {
      * @return bool
      */
     public function validate(): bool {
-        return ThrowClass::validateThrow($this->throw);
+        return ToString::validateToString($this->toString);
     }
 
     /**
@@ -48750,44 +50366,44 @@ class ThrowClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'throw'} = $this->toThrow();
+        $out->{'toString'} = $this->toToString();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return ThrowClass
+     * @return ToString
      * @throws Exception
      */
-    public static function from(stdClass $obj): ThrowClass {
-        if (!property_exists($obj, 'throw')) {
+    public static function from(stdClass $obj): ToString {
+        if (!property_exists($obj, 'toString')) {
             throw new Exception("Missing required property");
         }
-        return new ThrowClass(
-         ThrowClass::fromThrow($obj->{'throw'})
+        return new ToString(
+         ToString::fromToString($obj->{'toString'})
         );
     }
 
     /**
-     * @return ThrowClass
+     * @return ToString
      */
-    public static function sample(): ThrowClass {
-        return new ThrowClass(
-         ThrowClass::sampleThrow()
+    public static function sample(): ToString {
+        return new ToString(
+         ToString::sampleToString()
         );
     }
 }
 
-// This is an autogenerated file:Throws
+// This is an autogenerated file:TopLevelClass
 
-class Throws {
-    private int $throws; // json:throws Required
+class TopLevelClass {
+    private int $topLevel; // json:top_level Required
 
     /**
-     * @param int $throws
+     * @param int $topLevel
      */
-    public function __construct(int $throws) {
-        $this->throws = $throws;
+    public function __construct(int $topLevel) {
+        $this->topLevel = $topLevel;
     }
 
     /**
@@ -48795,7 +50411,7 @@ class Throws {
      * @throws Exception
      * @return int
      */
-    public static function fromThrows(int $value): int {
+    public static function fromTopLevel(int $value): int {
         return $value; /*int*/
     }
 
@@ -48803,11 +50419,11 @@ class Throws {
      * @throws Exception
      * @return int
      */
-    public function toThrows(): int {
-        if (Throws::validateThrows($this->throws))  {
-            return $this->throws; /*int*/
+    public function toTopLevel(): int {
+        if (TopLevelClass::validateTopLevel($this->topLevel))  {
+            return $this->topLevel; /*int*/
         }
-        throw new Exception('never get to this Throws::throws');
+        throw new Exception('never get to this TopLevelClass::topLevel');
     }
 
     /**
@@ -48815,7 +50431,7 @@ class Throws {
      * @return bool
      * @throws Exception
      */
-    public static function validateThrows(int $value): bool {
+    public static function validateTopLevel(int $value): bool {
         return true;
     }
 
@@ -48823,18 +50439,18 @@ class Throws {
      * @throws Exception
      * @return int
      */
-    public function getThrows(): int {
-        if (Throws::validateThrows($this->throws))  {
-            return $this->throws;
+    public function getTopLevel(): int {
+        if (TopLevelClass::validateTopLevel($this->topLevel))  {
+            return $this->topLevel;
         }
-        throw new Exception('never get to getThrows Throws::throws');
+        throw new Exception('never get to getTopLevel TopLevelClass::topLevel');
     }
 
     /**
      * @return int
      */
-    public static function sampleThrows(): int {
-        return 31; /*31:throws*/
+    public static function sampleTopLevel(): int {
+        return 31; /*31:topLevel*/
     }
 
     /**
@@ -48842,7 +50458,7 @@ class Throws {
      * @return bool
      */
     public function validate(): bool {
-        return Throws::validateThrows($this->throws);
+        return TopLevelClass::validateTopLevel($this->topLevel);
     }
 
     /**
@@ -48851,44 +50467,44 @@ class Throws {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'throws'} = $this->toThrows();
+        $out->{'top_level'} = $this->toTopLevel();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Throws
+     * @return TopLevelClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): Throws {
-        if (!property_exists($obj, 'throws')) {
+    public static function from(stdClass $obj): TopLevelClass {
+        if (!property_exists($obj, 'top_level')) {
             throw new Exception("Missing required property");
         }
-        return new Throws(
-         Throws::fromThrows($obj->{'throws'})
+        return new TopLevelClass(
+         TopLevelClass::fromTopLevel($obj->{'top_level'})
         );
     }
 
     /**
-     * @return Throws
+     * @return TopLevelClass
      */
-    public static function sample(): Throws {
-        return new Throws(
-         Throws::sampleThrows()
+    public static function sample(): TopLevelClass {
+        return new TopLevelClass(
+         TopLevelClass::sampleTopLevel()
         );
     }
 }
 
-// This is an autogenerated file:TimeOnly
+// This is an autogenerated file:Transient
 
-class TimeOnly {
-    private int $timeOnly; // json:TimeOnly Required
+class Transient {
+    private int $transient; // json:transient Required
 
     /**
-     * @param int $timeOnly
+     * @param int $transient
      */
-    public function __construct(int $timeOnly) {
-        $this->timeOnly = $timeOnly;
+    public function __construct(int $transient) {
+        $this->transient = $transient;
     }
 
     /**
@@ -48896,7 +50512,7 @@ class TimeOnly {
      * @throws Exception
      * @return int
      */
-    public static function fromTimeOnly(int $value): int {
+    public static function fromTransient(int $value): int {
         return $value; /*int*/
     }
 
@@ -48904,11 +50520,11 @@ class TimeOnly {
      * @throws Exception
      * @return int
      */
-    public function toTimeOnly(): int {
-        if (TimeOnly::validateTimeOnly($this->timeOnly))  {
-            return $this->timeOnly; /*int*/
+    public function toTransient(): int {
+        if (Transient::validateTransient($this->transient))  {
+            return $this->transient; /*int*/
         }
-        throw new Exception('never get to this TimeOnly::timeOnly');
+        throw new Exception('never get to this Transient::transient');
     }
 
     /**
@@ -48916,7 +50532,7 @@ class TimeOnly {
      * @return bool
      * @throws Exception
      */
-    public static function validateTimeOnly(int $value): bool {
+    public static function validateTransient(int $value): bool {
         return true;
     }
 
@@ -48924,18 +50540,18 @@ class TimeOnly {
      * @throws Exception
      * @return int
      */
-    public function getTimeOnly(): int {
-        if (TimeOnly::validateTimeOnly($this->timeOnly))  {
-            return $this->timeOnly;
+    public function getTransient(): int {
+        if (Transient::validateTransient($this->transient))  {
+            return $this->transient;
         }
-        throw new Exception('never get to getTimeOnly TimeOnly::timeOnly');
+        throw new Exception('never get to getTransient Transient::transient');
     }
 
     /**
      * @return int
      */
-    public static function sampleTimeOnly(): int {
-        return 31; /*31:timeOnly*/
+    public static function sampleTransient(): int {
+        return 31; /*31:transient*/
     }
 
     /**
@@ -48943,7 +50559,7 @@ class TimeOnly {
      * @return bool
      */
     public function validate(): bool {
-        return TimeOnly::validateTimeOnly($this->timeOnly);
+        return Transient::validateTransient($this->transient);
     }
 
     /**
@@ -48952,44 +50568,44 @@ class TimeOnly {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'TimeOnly'} = $this->toTimeOnly();
+        $out->{'transient'} = $this->toTransient();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return TimeOnly
+     * @return Transient
      * @throws Exception
      */
-    public static function from(stdClass $obj): TimeOnly {
-        if (!property_exists($obj, 'TimeOnly')) {
+    public static function from(stdClass $obj): Transient {
+        if (!property_exists($obj, 'transient')) {
             throw new Exception("Missing required property");
         }
-        return new TimeOnly(
-         TimeOnly::fromTimeOnly($obj->{'TimeOnly'})
+        return new Transient(
+         Transient::fromTransient($obj->{'transient'})
         );
     }
 
     /**
-     * @return TimeOnly
+     * @return Transient
      */
-    public static function sample(): TimeOnly {
-        return new TimeOnly(
-         TimeOnly::sampleTimeOnly()
+    public static function sample(): Transient {
+        return new Transient(
+         Transient::sampleTransient()
         );
     }
 }
 
-// This is an autogenerated file:TimeOnlyConverter
+// This is an autogenerated file:TrueClass
 
-class TimeOnlyConverter {
-    private int $timeOnlyConverter; // json:TimeOnlyConverter Required
+class TrueClass {
+    private int $true; // json:True Required
 
     /**
-     * @param int $timeOnlyConverter
+     * @param int $true
      */
-    public function __construct(int $timeOnlyConverter) {
-        $this->timeOnlyConverter = $timeOnlyConverter;
+    public function __construct(int $true) {
+        $this->true = $true;
     }
 
     /**
@@ -48997,7 +50613,7 @@ class TimeOnlyConverter {
      * @throws Exception
      * @return int
      */
-    public static function fromTimeOnlyConverter(int $value): int {
+    public static function fromTrue(int $value): int {
         return $value; /*int*/
     }
 
@@ -49005,11 +50621,11 @@ class TimeOnlyConverter {
      * @throws Exception
      * @return int
      */
-    public function toTimeOnlyConverter(): int {
-        if (TimeOnlyConverter::validateTimeOnlyConverter($this->timeOnlyConverter))  {
-            return $this->timeOnlyConverter; /*int*/
+    public function toTrue(): int {
+        if (TrueClass::validateTrue($this->true))  {
+            return $this->true; /*int*/
         }
-        throw new Exception('never get to this TimeOnlyConverter::timeOnlyConverter');
+        throw new Exception('never get to this TrueClass::true');
     }
 
     /**
@@ -49017,7 +50633,7 @@ class TimeOnlyConverter {
      * @return bool
      * @throws Exception
      */
-    public static function validateTimeOnlyConverter(int $value): bool {
+    public static function validateTrue(int $value): bool {
         return true;
     }
 
@@ -49025,18 +50641,18 @@ class TimeOnlyConverter {
      * @throws Exception
      * @return int
      */
-    public function getTimeOnlyConverter(): int {
-        if (TimeOnlyConverter::validateTimeOnlyConverter($this->timeOnlyConverter))  {
-            return $this->timeOnlyConverter;
+    public function getTrue(): int {
+        if (TrueClass::validateTrue($this->true))  {
+            return $this->true;
         }
-        throw new Exception('never get to getTimeOnlyConverter TimeOnlyConverter::timeOnlyConverter');
+        throw new Exception('never get to getTrue TrueClass::true');
     }
 
     /**
      * @return int
      */
-    public static function sampleTimeOnlyConverter(): int {
-        return 31; /*31:timeOnlyConverter*/
+    public static function sampleTrue(): int {
+        return 31; /*31:true*/
     }
 
     /**
@@ -49044,7 +50660,7 @@ class TimeOnlyConverter {
      * @return bool
      */
     public function validate(): bool {
-        return TimeOnlyConverter::validateTimeOnlyConverter($this->timeOnlyConverter);
+        return TrueClass::validateTrue($this->true);
     }
 
     /**
@@ -49053,44 +50669,44 @@ class TimeOnlyConverter {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'TimeOnlyConverter'} = $this->toTimeOnlyConverter();
+        $out->{'True'} = $this->toTrue();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return TimeOnlyConverter
+     * @return TrueClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): TimeOnlyConverter {
-        if (!property_exists($obj, 'TimeOnlyConverter')) {
+    public static function from(stdClass $obj): TrueClass {
+        if (!property_exists($obj, 'True')) {
             throw new Exception("Missing required property");
         }
-        return new TimeOnlyConverter(
-         TimeOnlyConverter::fromTimeOnlyConverter($obj->{'TimeOnlyConverter'})
+        return new TrueClass(
+         TrueClass::fromTrue($obj->{'True'})
         );
     }
 
     /**
-     * @return TimeOnlyConverter
+     * @return TrueClass
      */
-    public static function sample(): TimeOnlyConverter {
-        return new TimeOnlyConverter(
-         TimeOnlyConverter::sampleTimeOnlyConverter()
+    public static function sample(): TrueClass {
+        return new TrueClass(
+         TrueClass::sampleTrue()
         );
     }
 }
 
-// This is an autogenerated file:TimeZone
+// This is an autogenerated file:TryClass
 
-class TimeZone {
-    private int $timeZone; // json:TimeZone Required
+class TryClass {
+    private int $try; // json:try Required
 
     /**
-     * @param int $timeZone
+     * @param int $try
      */
-    public function __construct(int $timeZone) {
-        $this->timeZone = $timeZone;
+    public function __construct(int $try) {
+        $this->try = $try;
     }
 
     /**
@@ -49098,7 +50714,7 @@ class TimeZone {
      * @throws Exception
      * @return int
      */
-    public static function fromTimeZone(int $value): int {
+    public static function fromTry(int $value): int {
         return $value; /*int*/
     }
 
@@ -49106,11 +50722,11 @@ class TimeZone {
      * @throws Exception
      * @return int
      */
-    public function toTimeZone(): int {
-        if (TimeZone::validateTimeZone($this->timeZone))  {
-            return $this->timeZone; /*int*/
+    public function toTry(): int {
+        if (TryClass::validateTry($this->try))  {
+            return $this->try; /*int*/
         }
-        throw new Exception('never get to this TimeZone::timeZone');
+        throw new Exception('never get to this TryClass::try');
     }
 
     /**
@@ -49118,7 +50734,7 @@ class TimeZone {
      * @return bool
      * @throws Exception
      */
-    public static function validateTimeZone(int $value): bool {
+    public static function validateTry(int $value): bool {
         return true;
     }
 
@@ -49126,18 +50742,18 @@ class TimeZone {
      * @throws Exception
      * @return int
      */
-    public function getTimeZone(): int {
-        if (TimeZone::validateTimeZone($this->timeZone))  {
-            return $this->timeZone;
+    public function getTry(): int {
+        if (TryClass::validateTry($this->try))  {
+            return $this->try;
         }
-        throw new Exception('never get to getTimeZone TimeZone::timeZone');
+        throw new Exception('never get to getTry TryClass::try');
     }
 
     /**
      * @return int
      */
-    public static function sampleTimeZone(): int {
-        return 31; /*31:timeZone*/
+    public static function sampleTry(): int {
+        return 31; /*31:try*/
     }
 
     /**
@@ -49145,7 +50761,7 @@ class TimeZone {
      * @return bool
      */
     public function validate(): bool {
-        return TimeZone::validateTimeZone($this->timeZone);
+        return TryClass::validateTry($this->try);
     }
 
     /**
@@ -49154,44 +50770,44 @@ class TimeZone {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'TimeZone'} = $this->toTimeZone();
+        $out->{'try'} = $this->toTry();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return TimeZone
+     * @return TryClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): TimeZone {
-        if (!property_exists($obj, 'TimeZone')) {
+    public static function from(stdClass $obj): TryClass {
+        if (!property_exists($obj, 'try')) {
             throw new Exception("Missing required property");
         }
-        return new TimeZone(
-         TimeZone::fromTimeZone($obj->{'TimeZone'})
+        return new TryClass(
+         TryClass::fromTry($obj->{'try'})
         );
     }
 
     /**
-     * @return TimeZone
+     * @return TryClass
      */
-    public static function sample(): TimeZone {
-        return new TimeZone(
-         TimeZone::sampleTimeZone()
+    public static function sample(): TryClass {
+        return new TryClass(
+         TryClass::sampleTry()
         );
     }
 }
 
-// This is an autogenerated file:ToJSON
+// This is an autogenerated file:Type
 
-class ToJSON {
-    private int $toJSON; // json:to_json Required
+class Type {
+    private int $type; // json:Type Required
 
     /**
-     * @param int $toJSON
+     * @param int $type
      */
-    public function __construct(int $toJSON) {
-        $this->toJSON = $toJSON;
+    public function __construct(int $type) {
+        $this->type = $type;
     }
 
     /**
@@ -49199,7 +50815,7 @@ class ToJSON {
      * @throws Exception
      * @return int
      */
-    public static function fromToJSON(int $value): int {
+    public static function fromType(int $value): int {
         return $value; /*int*/
     }
 
@@ -49207,11 +50823,11 @@ class ToJSON {
      * @throws Exception
      * @return int
      */
-    public function toToJSON(): int {
-        if (ToJSON::validateToJSON($this->toJSON))  {
-            return $this->toJSON; /*int*/
+    public function toType(): int {
+        if (Type::validateType($this->type))  {
+            return $this->type; /*int*/
         }
-        throw new Exception('never get to this ToJSON::toJSON');
+        throw new Exception('never get to this Type::type');
     }
 
     /**
@@ -49219,7 +50835,7 @@ class ToJSON {
      * @return bool
      * @throws Exception
      */
-    public static function validateToJSON(int $value): bool {
+    public static function validateType(int $value): bool {
         return true;
     }
 
@@ -49227,18 +50843,18 @@ class ToJSON {
      * @throws Exception
      * @return int
      */
-    public function getToJSON(): int {
-        if (ToJSON::validateToJSON($this->toJSON))  {
-            return $this->toJSON;
+    public function getType(): int {
+        if (Type::validateType($this->type))  {
+            return $this->type;
         }
-        throw new Exception('never get to getToJSON ToJSON::toJSON');
+        throw new Exception('never get to getType Type::type');
     }
 
     /**
      * @return int
      */
-    public static function sampleToJSON(): int {
-        return 31; /*31:toJSON*/
+    public static function sampleType(): int {
+        return 31; /*31:type*/
     }
 
     /**
@@ -49246,7 +50862,7 @@ class ToJSON {
      * @return bool
      */
     public function validate(): bool {
-        return ToJSON::validateToJSON($this->toJSON);
+        return Type::validateType($this->type);
     }
 
     /**
@@ -49255,44 +50871,44 @@ class ToJSON {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'to_json'} = $this->toToJSON();
+        $out->{'Type'} = $this->toType();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return ToJSON
+     * @return Type
      * @throws Exception
      */
-    public static function from(stdClass $obj): ToJSON {
-        if (!property_exists($obj, 'to_json')) {
+    public static function from(stdClass $obj): Type {
+        if (!property_exists($obj, 'Type')) {
             throw new Exception("Missing required property");
         }
-        return new ToJSON(
-         ToJSON::fromToJSON($obj->{'to_json'})
+        return new Type(
+         Type::fromType($obj->{'Type'})
         );
     }
 
     /**
-     * @return ToJSON
+     * @return Type
      */
-    public static function sample(): ToJSON {
-        return new ToJSON(
-         ToJSON::sampleToJSON()
+    public static function sample(): Type {
+        return new Type(
+         Type::sampleType()
         );
     }
 }
 
-// This is an autogenerated file:ToString
+// This is an autogenerated file:Typealias
 
-class ToString {
-    private int $toString; // json:toString Required
+class Typealias {
+    private int $typealias; // json:typealias Required
 
     /**
-     * @param int $toString
+     * @param int $typealias
      */
-    public function __construct(int $toString) {
-        $this->toString = $toString;
+    public function __construct(int $typealias) {
+        $this->typealias = $typealias;
     }
 
     /**
@@ -49300,7 +50916,7 @@ class ToString {
      * @throws Exception
      * @return int
      */
-    public static function fromToString(int $value): int {
+    public static function fromTypealias(int $value): int {
         return $value; /*int*/
     }
 
@@ -49308,11 +50924,11 @@ class ToString {
      * @throws Exception
      * @return int
      */
-    public function toToString(): int {
-        if (ToString::validateToString($this->toString))  {
-            return $this->toString; /*int*/
+    public function toTypealias(): int {
+        if (Typealias::validateTypealias($this->typealias))  {
+            return $this->typealias; /*int*/
         }
-        throw new Exception('never get to this ToString::toString');
+        throw new Exception('never get to this Typealias::typealias');
     }
 
     /**
@@ -49320,7 +50936,7 @@ class ToString {
      * @return bool
      * @throws Exception
      */
-    public static function validateToString(int $value): bool {
+    public static function validateTypealias(int $value): bool {
         return true;
     }
 
@@ -49328,18 +50944,18 @@ class ToString {
      * @throws Exception
      * @return int
      */
-    public function getToString(): int {
-        if (ToString::validateToString($this->toString))  {
-            return $this->toString;
+    public function getTypealias(): int {
+        if (Typealias::validateTypealias($this->typealias))  {
+            return $this->typealias;
         }
-        throw new Exception('never get to getToString ToString::toString');
+        throw new Exception('never get to getTypealias Typealias::typealias');
     }
 
     /**
      * @return int
      */
-    public static function sampleToString(): int {
-        return 31; /*31:toString*/
+    public static function sampleTypealias(): int {
+        return 31; /*31:typealias*/
     }
 
     /**
@@ -49347,7 +50963,7 @@ class ToString {
      * @return bool
      */
     public function validate(): bool {
-        return ToString::validateToString($this->toString);
+        return Typealias::validateTypealias($this->typealias);
     }
 
     /**
@@ -49356,44 +50972,44 @@ class ToString {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'toString'} = $this->toToString();
+        $out->{'typealias'} = $this->toTypealias();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return ToString
+     * @return Typealias
      * @throws Exception
      */
-    public static function from(stdClass $obj): ToString {
-        if (!property_exists($obj, 'toString')) {
+    public static function from(stdClass $obj): Typealias {
+        if (!property_exists($obj, 'typealias')) {
             throw new Exception("Missing required property");
         }
-        return new ToString(
-         ToString::fromToString($obj->{'toString'})
+        return new Typealias(
+         Typealias::fromTypealias($obj->{'typealias'})
         );
     }
 
     /**
-     * @return ToString
+     * @return Typealias
      */
-    public static function sample(): ToString {
-        return new ToString(
-         ToString::sampleToString()
+    public static function sample(): Typealias {
+        return new Typealias(
+         Typealias::sampleTypealias()
         );
     }
 }
 
-// This is an autogenerated file:TopLevelClass
+// This is an autogenerated file:Typedef
 
-class TopLevelClass {
-    private int $topLevel; // json:top_level Required
+class Typedef {
+    private int $typedef; // json:typedef Required
 
     /**
-     * @param int $topLevel
+     * @param int $typedef
      */
-    public function __construct(int $topLevel) {
-        $this->topLevel = $topLevel;
+    public function __construct(int $typedef) {
+        $this->typedef = $typedef;
     }
 
     /**
@@ -49401,7 +51017,7 @@ class TopLevelClass {
      * @throws Exception
      * @return int
      */
-    public static function fromTopLevel(int $value): int {
+    public static function fromTypedef(int $value): int {
         return $value; /*int*/
     }
 
@@ -49409,11 +51025,11 @@ class TopLevelClass {
      * @throws Exception
      * @return int
      */
-    public function toTopLevel(): int {
-        if (TopLevelClass::validateTopLevel($this->topLevel))  {
-            return $this->topLevel; /*int*/
+    public function toTypedef(): int {
+        if (Typedef::validateTypedef($this->typedef))  {
+            return $this->typedef; /*int*/
         }
-        throw new Exception('never get to this TopLevelClass::topLevel');
+        throw new Exception('never get to this Typedef::typedef');
     }
 
     /**
@@ -49421,7 +51037,7 @@ class TopLevelClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateTopLevel(int $value): bool {
+    public static function validateTypedef(int $value): bool {
         return true;
     }
 
@@ -49429,18 +51045,18 @@ class TopLevelClass {
      * @throws Exception
      * @return int
      */
-    public function getTopLevel(): int {
-        if (TopLevelClass::validateTopLevel($this->topLevel))  {
-            return $this->topLevel;
+    public function getTypedef(): int {
+        if (Typedef::validateTypedef($this->typedef))  {
+            return $this->typedef;
         }
-        throw new Exception('never get to getTopLevel TopLevelClass::topLevel');
+        throw new Exception('never get to getTypedef Typedef::typedef');
     }
 
     /**
      * @return int
      */
-    public static function sampleTopLevel(): int {
-        return 31; /*31:topLevel*/
+    public static function sampleTypedef(): int {
+        return 31; /*31:typedef*/
     }
 
     /**
@@ -49448,7 +51064,7 @@ class TopLevelClass {
      * @return bool
      */
     public function validate(): bool {
-        return TopLevelClass::validateTopLevel($this->topLevel);
+        return Typedef::validateTypedef($this->typedef);
     }
 
     /**
@@ -49457,44 +51073,44 @@ class TopLevelClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'top_level'} = $this->toTopLevel();
+        $out->{'typedef'} = $this->toTypedef();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return TopLevelClass
+     * @return Typedef
      * @throws Exception
      */
-    public static function from(stdClass $obj): TopLevelClass {
-        if (!property_exists($obj, 'top_level')) {
+    public static function from(stdClass $obj): Typedef {
+        if (!property_exists($obj, 'typedef')) {
             throw new Exception("Missing required property");
         }
-        return new TopLevelClass(
-         TopLevelClass::fromTopLevel($obj->{'top_level'})
+        return new Typedef(
+         Typedef::fromTypedef($obj->{'typedef'})
         );
     }
 
     /**
-     * @return TopLevelClass
+     * @return Typedef
      */
-    public static function sample(): TopLevelClass {
-        return new TopLevelClass(
-         TopLevelClass::sampleTopLevel()
+    public static function sample(): Typedef {
+        return new Typedef(
+         Typedef::sampleTypedef()
         );
     }
 }
 
-// This is an autogenerated file:Transient
+// This is an autogenerated file:Typeid
 
-class Transient {
-    private int $transient; // json:transient Required
+class Typeid {
+    private int $typeid; // json:typeid Required
 
     /**
-     * @param int $transient
+     * @param int $typeid
      */
-    public function __construct(int $transient) {
-        $this->transient = $transient;
+    public function __construct(int $typeid) {
+        $this->typeid = $typeid;
     }
 
     /**
@@ -49502,7 +51118,7 @@ class Transient {
      * @throws Exception
      * @return int
      */
-    public static function fromTransient(int $value): int {
+    public static function fromTypeid(int $value): int {
         return $value; /*int*/
     }
 
@@ -49510,11 +51126,11 @@ class Transient {
      * @throws Exception
      * @return int
      */
-    public function toTransient(): int {
-        if (Transient::validateTransient($this->transient))  {
-            return $this->transient; /*int*/
+    public function toTypeid(): int {
+        if (Typeid::validateTypeid($this->typeid))  {
+            return $this->typeid; /*int*/
         }
-        throw new Exception('never get to this Transient::transient');
+        throw new Exception('never get to this Typeid::typeid');
     }
 
     /**
@@ -49522,7 +51138,7 @@ class Transient {
      * @return bool
      * @throws Exception
      */
-    public static function validateTransient(int $value): bool {
+    public static function validateTypeid(int $value): bool {
         return true;
     }
 
@@ -49530,18 +51146,18 @@ class Transient {
      * @throws Exception
      * @return int
      */
-    public function getTransient(): int {
-        if (Transient::validateTransient($this->transient))  {
-            return $this->transient;
+    public function getTypeid(): int {
+        if (Typeid::validateTypeid($this->typeid))  {
+            return $this->typeid;
         }
-        throw new Exception('never get to getTransient Transient::transient');
+        throw new Exception('never get to getTypeid Typeid::typeid');
     }
 
     /**
      * @return int
      */
-    public static function sampleTransient(): int {
-        return 31; /*31:transient*/
+    public static function sampleTypeid(): int {
+        return 31; /*31:typeid*/
     }
 
     /**
@@ -49549,7 +51165,7 @@ class Transient {
      * @return bool
      */
     public function validate(): bool {
-        return Transient::validateTransient($this->transient);
+        return Typeid::validateTypeid($this->typeid);
     }
 
     /**
@@ -49558,44 +51174,44 @@ class Transient {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'transient'} = $this->toTransient();
+        $out->{'typeid'} = $this->toTypeid();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Transient
+     * @return Typeid
      * @throws Exception
      */
-    public static function from(stdClass $obj): Transient {
-        if (!property_exists($obj, 'transient')) {
+    public static function from(stdClass $obj): Typeid {
+        if (!property_exists($obj, 'typeid')) {
             throw new Exception("Missing required property");
         }
-        return new Transient(
-         Transient::fromTransient($obj->{'transient'})
+        return new Typeid(
+         Typeid::fromTypeid($obj->{'typeid'})
         );
     }
 
     /**
-     * @return Transient
+     * @return Typeid
      */
-    public static function sample(): Transient {
-        return new Transient(
-         Transient::sampleTransient()
+    public static function sample(): Typeid {
+        return new Typeid(
+         Typeid::sampleTypeid()
         );
     }
 }
 
-// This is an autogenerated file:TrueClass
+// This is an autogenerated file:Typename
 
-class TrueClass {
-    private int $true; // json:True Required
+class Typename {
+    private int $typename; // json:typename Required
 
     /**
-     * @param int $true
+     * @param int $typename
      */
-    public function __construct(int $true) {
-        $this->true = $true;
+    public function __construct(int $typename) {
+        $this->typename = $typename;
     }
 
     /**
@@ -49603,7 +51219,7 @@ class TrueClass {
      * @throws Exception
      * @return int
      */
-    public static function fromTrue(int $value): int {
+    public static function fromTypename(int $value): int {
         return $value; /*int*/
     }
 
@@ -49611,11 +51227,11 @@ class TrueClass {
      * @throws Exception
      * @return int
      */
-    public function toTrue(): int {
-        if (TrueClass::validateTrue($this->true))  {
-            return $this->true; /*int*/
+    public function toTypename(): int {
+        if (Typename::validateTypename($this->typename))  {
+            return $this->typename; /*int*/
         }
-        throw new Exception('never get to this TrueClass::true');
+        throw new Exception('never get to this Typename::typename');
     }
 
     /**
@@ -49623,7 +51239,7 @@ class TrueClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateTrue(int $value): bool {
+    public static function validateTypename(int $value): bool {
         return true;
     }
 
@@ -49631,18 +51247,18 @@ class TrueClass {
      * @throws Exception
      * @return int
      */
-    public function getTrue(): int {
-        if (TrueClass::validateTrue($this->true))  {
-            return $this->true;
+    public function getTypename(): int {
+        if (Typename::validateTypename($this->typename))  {
+            return $this->typename;
         }
-        throw new Exception('never get to getTrue TrueClass::true');
+        throw new Exception('never get to getTypename Typename::typename');
     }
 
     /**
      * @return int
      */
-    public static function sampleTrue(): int {
-        return 31; /*31:true*/
+    public static function sampleTypename(): int {
+        return 31; /*31:typename*/
     }
 
     /**
@@ -49650,7 +51266,7 @@ class TrueClass {
      * @return bool
      */
     public function validate(): bool {
-        return TrueClass::validateTrue($this->true);
+        return Typename::validateTypename($this->typename);
     }
 
     /**
@@ -49659,44 +51275,44 @@ class TrueClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'True'} = $this->toTrue();
+        $out->{'typename'} = $this->toTypename();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return TrueClass
+     * @return Typename
      * @throws Exception
      */
-    public static function from(stdClass $obj): TrueClass {
-        if (!property_exists($obj, 'True')) {
+    public static function from(stdClass $obj): Typename {
+        if (!property_exists($obj, 'typename')) {
             throw new Exception("Missing required property");
         }
-        return new TrueClass(
-         TrueClass::fromTrue($obj->{'True'})
+        return new Typename(
+         Typename::fromTypename($obj->{'typename'})
         );
     }
 
     /**
-     * @return TrueClass
+     * @return Typename
      */
-    public static function sample(): TrueClass {
-        return new TrueClass(
-         TrueClass::sampleTrue()
+    public static function sample(): Typename {
+        return new Typename(
+         Typename::sampleTypename()
         );
     }
 }
 
-// This is an autogenerated file:TryClass
+// This is an autogenerated file:Typeof
 
-class TryClass {
-    private int $try; // json:try Required
+class Typeof {
+    private int $typeof; // json:typeof Required
 
     /**
-     * @param int $try
+     * @param int $typeof
      */
-    public function __construct(int $try) {
-        $this->try = $try;
+    public function __construct(int $typeof) {
+        $this->typeof = $typeof;
     }
 
     /**
@@ -49704,7 +51320,7 @@ class TryClass {
      * @throws Exception
      * @return int
      */
-    public static function fromTry(int $value): int {
+    public static function fromTypeof(int $value): int {
         return $value; /*int*/
     }
 
@@ -49712,11 +51328,11 @@ class TryClass {
      * @throws Exception
      * @return int
      */
-    public function toTry(): int {
-        if (TryClass::validateTry($this->try))  {
-            return $this->try; /*int*/
+    public function toTypeof(): int {
+        if (Typeof::validateTypeof($this->typeof))  {
+            return $this->typeof; /*int*/
         }
-        throw new Exception('never get to this TryClass::try');
+        throw new Exception('never get to this Typeof::typeof');
     }
 
     /**
@@ -49724,7 +51340,7 @@ class TryClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateTry(int $value): bool {
+    public static function validateTypeof(int $value): bool {
         return true;
     }
 
@@ -49732,18 +51348,18 @@ class TryClass {
      * @throws Exception
      * @return int
      */
-    public function getTry(): int {
-        if (TryClass::validateTry($this->try))  {
-            return $this->try;
+    public function getTypeof(): int {
+        if (Typeof::validateTypeof($this->typeof))  {
+            return $this->typeof;
         }
-        throw new Exception('never get to getTry TryClass::try');
+        throw new Exception('never get to getTypeof Typeof::typeof');
     }
 
     /**
      * @return int
      */
-    public static function sampleTry(): int {
-        return 31; /*31:try*/
+    public static function sampleTypeof(): int {
+        return 31; /*31:typeof*/
     }
 
     /**
@@ -49751,7 +51367,7 @@ class TryClass {
      * @return bool
      */
     public function validate(): bool {
-        return TryClass::validateTry($this->try);
+        return Typeof::validateTypeof($this->typeof);
     }
 
     /**
@@ -49760,44 +51376,44 @@ class TryClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'try'} = $this->toTry();
+        $out->{'typeof'} = $this->toTypeof();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return TryClass
+     * @return Typeof
      * @throws Exception
      */
-    public static function from(stdClass $obj): TryClass {
-        if (!property_exists($obj, 'try')) {
+    public static function from(stdClass $obj): Typeof {
+        if (!property_exists($obj, 'typeof')) {
             throw new Exception("Missing required property");
         }
-        return new TryClass(
-         TryClass::fromTry($obj->{'try'})
+        return new Typeof(
+         Typeof::fromTypeof($obj->{'typeof'})
         );
     }
 
     /**
-     * @return TryClass
+     * @return Typeof
      */
-    public static function sample(): TryClass {
-        return new TryClass(
-         TryClass::sampleTry()
+    public static function sample(): Typeof {
+        return new Typeof(
+         Typeof::sampleTypeof()
         );
     }
 }
 
-// This is an autogenerated file:Type
+// This is an autogenerated file:Uint
 
-class Type {
-    private int $type; // json:Type Required
+class Uint {
+    private int $uint; // json:uint Required
 
     /**
-     * @param int $type
+     * @param int $uint
      */
-    public function __construct(int $type) {
-        $this->type = $type;
+    public function __construct(int $uint) {
+        $this->uint = $uint;
     }
 
     /**
@@ -49805,7 +51421,7 @@ class Type {
      * @throws Exception
      * @return int
      */
-    public static function fromType(int $value): int {
+    public static function fromUint(int $value): int {
         return $value; /*int*/
     }
 
@@ -49813,11 +51429,11 @@ class Type {
      * @throws Exception
      * @return int
      */
-    public function toType(): int {
-        if (Type::validateType($this->type))  {
-            return $this->type; /*int*/
+    public function toUint(): int {
+        if (Uint::validateUint($this->uint))  {
+            return $this->uint; /*int*/
         }
-        throw new Exception('never get to this Type::type');
+        throw new Exception('never get to this Uint::uint');
     }
 
     /**
@@ -49825,7 +51441,7 @@ class Type {
      * @return bool
      * @throws Exception
      */
-    public static function validateType(int $value): bool {
+    public static function validateUint(int $value): bool {
         return true;
     }
 
@@ -49833,18 +51449,18 @@ class Type {
      * @throws Exception
      * @return int
      */
-    public function getType(): int {
-        if (Type::validateType($this->type))  {
-            return $this->type;
+    public function getUint(): int {
+        if (Uint::validateUint($this->uint))  {
+            return $this->uint;
         }
-        throw new Exception('never get to getType Type::type');
+        throw new Exception('never get to getUint Uint::uint');
     }
 
     /**
      * @return int
      */
-    public static function sampleType(): int {
-        return 31; /*31:type*/
+    public static function sampleUint(): int {
+        return 31; /*31:uint*/
     }
 
     /**
@@ -49852,7 +51468,7 @@ class Type {
      * @return bool
      */
     public function validate(): bool {
-        return Type::validateType($this->type);
+        return Uint::validateUint($this->uint);
     }
 
     /**
@@ -49861,44 +51477,44 @@ class Type {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'Type'} = $this->toType();
+        $out->{'uint'} = $this->toUint();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Type
+     * @return Uint
      * @throws Exception
      */
-    public static function from(stdClass $obj): Type {
-        if (!property_exists($obj, 'Type')) {
+    public static function from(stdClass $obj): Uint {
+        if (!property_exists($obj, 'uint')) {
             throw new Exception("Missing required property");
         }
-        return new Type(
-         Type::fromType($obj->{'Type'})
+        return new Uint(
+         Uint::fromUint($obj->{'uint'})
         );
     }
 
     /**
-     * @return Type
+     * @return Uint
      */
-    public static function sample(): Type {
-        return new Type(
-         Type::sampleType()
+    public static function sample(): Uint {
+        return new Uint(
+         Uint::sampleUint()
         );
     }
 }
 
-// This is an autogenerated file:Typealias
+// This is an autogenerated file:Ulong
 
-class Typealias {
-    private int $typealias; // json:typealias Required
+class Ulong {
+    private int $ulong; // json:ulong Required
 
     /**
-     * @param int $typealias
+     * @param int $ulong
      */
-    public function __construct(int $typealias) {
-        $this->typealias = $typealias;
+    public function __construct(int $ulong) {
+        $this->ulong = $ulong;
     }
 
     /**
@@ -49906,7 +51522,7 @@ class Typealias {
      * @throws Exception
      * @return int
      */
-    public static function fromTypealias(int $value): int {
+    public static function fromUlong(int $value): int {
         return $value; /*int*/
     }
 
@@ -49914,11 +51530,11 @@ class Typealias {
      * @throws Exception
      * @return int
      */
-    public function toTypealias(): int {
-        if (Typealias::validateTypealias($this->typealias))  {
-            return $this->typealias; /*int*/
+    public function toUlong(): int {
+        if (Ulong::validateUlong($this->ulong))  {
+            return $this->ulong; /*int*/
         }
-        throw new Exception('never get to this Typealias::typealias');
+        throw new Exception('never get to this Ulong::ulong');
     }
 
     /**
@@ -49926,7 +51542,7 @@ class Typealias {
      * @return bool
      * @throws Exception
      */
-    public static function validateTypealias(int $value): bool {
+    public static function validateUlong(int $value): bool {
         return true;
     }
 
@@ -49934,18 +51550,18 @@ class Typealias {
      * @throws Exception
      * @return int
      */
-    public function getTypealias(): int {
-        if (Typealias::validateTypealias($this->typealias))  {
-            return $this->typealias;
+    public function getUlong(): int {
+        if (Ulong::validateUlong($this->ulong))  {
+            return $this->ulong;
         }
-        throw new Exception('never get to getTypealias Typealias::typealias');
+        throw new Exception('never get to getUlong Ulong::ulong');
     }
 
     /**
      * @return int
      */
-    public static function sampleTypealias(): int {
-        return 31; /*31:typealias*/
+    public static function sampleUlong(): int {
+        return 31; /*31:ulong*/
     }
 
     /**
@@ -49953,7 +51569,7 @@ class Typealias {
      * @return bool
      */
     public function validate(): bool {
-        return Typealias::validateTypealias($this->typealias);
+        return Ulong::validateUlong($this->ulong);
     }
 
     /**
@@ -49962,44 +51578,44 @@ class Typealias {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'typealias'} = $this->toTypealias();
+        $out->{'ulong'} = $this->toUlong();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Typealias
+     * @return Ulong
      * @throws Exception
      */
-    public static function from(stdClass $obj): Typealias {
-        if (!property_exists($obj, 'typealias')) {
+    public static function from(stdClass $obj): Ulong {
+        if (!property_exists($obj, 'ulong')) {
             throw new Exception("Missing required property");
         }
-        return new Typealias(
-         Typealias::fromTypealias($obj->{'typealias'})
+        return new Ulong(
+         Ulong::fromUlong($obj->{'ulong'})
         );
     }
 
     /**
-     * @return Typealias
+     * @return Ulong
      */
-    public static function sample(): Typealias {
-        return new Typealias(
-         Typealias::sampleTypealias()
+    public static function sample(): Ulong {
+        return new Ulong(
+         Ulong::sampleUlong()
         );
     }
 }
 
-// This is an autogenerated file:Typedef
+// This is an autogenerated file:Unchecked
 
-class Typedef {
-    private int $typedef; // json:typedef Required
+class Unchecked {
+    private int $unchecked; // json:unchecked Required
 
     /**
-     * @param int $typedef
+     * @param int $unchecked
      */
-    public function __construct(int $typedef) {
-        $this->typedef = $typedef;
+    public function __construct(int $unchecked) {
+        $this->unchecked = $unchecked;
     }
 
     /**
@@ -50007,7 +51623,7 @@ class Typedef {
      * @throws Exception
      * @return int
      */
-    public static function fromTypedef(int $value): int {
+    public static function fromUnchecked(int $value): int {
         return $value; /*int*/
     }
 
@@ -50015,11 +51631,11 @@ class Typedef {
      * @throws Exception
      * @return int
      */
-    public function toTypedef(): int {
-        if (Typedef::validateTypedef($this->typedef))  {
-            return $this->typedef; /*int*/
+    public function toUnchecked(): int {
+        if (Unchecked::validateUnchecked($this->unchecked))  {
+            return $this->unchecked; /*int*/
         }
-        throw new Exception('never get to this Typedef::typedef');
+        throw new Exception('never get to this Unchecked::unchecked');
     }
 
     /**
@@ -50027,7 +51643,7 @@ class Typedef {
      * @return bool
      * @throws Exception
      */
-    public static function validateTypedef(int $value): bool {
+    public static function validateUnchecked(int $value): bool {
         return true;
     }
 
@@ -50035,18 +51651,18 @@ class Typedef {
      * @throws Exception
      * @return int
      */
-    public function getTypedef(): int {
-        if (Typedef::validateTypedef($this->typedef))  {
-            return $this->typedef;
+    public function getUnchecked(): int {
+        if (Unchecked::validateUnchecked($this->unchecked))  {
+            return $this->unchecked;
         }
-        throw new Exception('never get to getTypedef Typedef::typedef');
+        throw new Exception('never get to getUnchecked Unchecked::unchecked');
     }
 
     /**
      * @return int
      */
-    public static function sampleTypedef(): int {
-        return 31; /*31:typedef*/
+    public static function sampleUnchecked(): int {
+        return 31; /*31:unchecked*/
     }
 
     /**
@@ -50054,7 +51670,7 @@ class Typedef {
      * @return bool
      */
     public function validate(): bool {
-        return Typedef::validateTypedef($this->typedef);
+        return Unchecked::validateUnchecked($this->unchecked);
     }
 
     /**
@@ -50063,44 +51679,44 @@ class Typedef {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'typedef'} = $this->toTypedef();
+        $out->{'unchecked'} = $this->toUnchecked();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Typedef
+     * @return Unchecked
      * @throws Exception
      */
-    public static function from(stdClass $obj): Typedef {
-        if (!property_exists($obj, 'typedef')) {
+    public static function from(stdClass $obj): Unchecked {
+        if (!property_exists($obj, 'unchecked')) {
             throw new Exception("Missing required property");
         }
-        return new Typedef(
-         Typedef::fromTypedef($obj->{'typedef'})
+        return new Unchecked(
+         Unchecked::fromUnchecked($obj->{'unchecked'})
         );
     }
 
     /**
-     * @return Typedef
+     * @return Unchecked
      */
-    public static function sample(): Typedef {
-        return new Typedef(
-         Typedef::sampleTypedef()
+    public static function sample(): Unchecked {
+        return new Unchecked(
+         Unchecked::sampleUnchecked()
         );
     }
 }
 
-// This is an autogenerated file:Typeid
+// This is an autogenerated file:Undefined
 
-class Typeid {
-    private int $typeid; // json:typeid Required
+class Undefined {
+    private int $undefined; // json:undefined Required
 
     /**
-     * @param int $typeid
+     * @param int $undefined
      */
-    public function __construct(int $typeid) {
-        $this->typeid = $typeid;
+    public function __construct(int $undefined) {
+        $this->undefined = $undefined;
     }
 
     /**
@@ -50108,7 +51724,7 @@ class Typeid {
      * @throws Exception
      * @return int
      */
-    public static function fromTypeid(int $value): int {
+    public static function fromUndefined(int $value): int {
         return $value; /*int*/
     }
 
@@ -50116,11 +51732,11 @@ class Typeid {
      * @throws Exception
      * @return int
      */
-    public function toTypeid(): int {
-        if (Typeid::validateTypeid($this->typeid))  {
-            return $this->typeid; /*int*/
+    public function toUndefined(): int {
+        if (Undefined::validateUndefined($this->undefined))  {
+            return $this->undefined; /*int*/
         }
-        throw new Exception('never get to this Typeid::typeid');
+        throw new Exception('never get to this Undefined::undefined');
     }
 
     /**
@@ -50128,7 +51744,7 @@ class Typeid {
      * @return bool
      * @throws Exception
      */
-    public static function validateTypeid(int $value): bool {
+    public static function validateUndefined(int $value): bool {
         return true;
     }
 
@@ -50136,18 +51752,18 @@ class Typeid {
      * @throws Exception
      * @return int
      */
-    public function getTypeid(): int {
-        if (Typeid::validateTypeid($this->typeid))  {
-            return $this->typeid;
+    public function getUndefined(): int {
+        if (Undefined::validateUndefined($this->undefined))  {
+            return $this->undefined;
         }
-        throw new Exception('never get to getTypeid Typeid::typeid');
+        throw new Exception('never get to getUndefined Undefined::undefined');
     }
 
     /**
      * @return int
      */
-    public static function sampleTypeid(): int {
-        return 31; /*31:typeid*/
+    public static function sampleUndefined(): int {
+        return 31; /*31:undefined*/
     }
 
     /**
@@ -50155,7 +51771,7 @@ class Typeid {
      * @return bool
      */
     public function validate(): bool {
-        return Typeid::validateTypeid($this->typeid);
+        return Undefined::validateUndefined($this->undefined);
     }
 
     /**
@@ -50164,44 +51780,44 @@ class Typeid {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'typeid'} = $this->toTypeid();
+        $out->{'undefined'} = $this->toUndefined();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Typeid
+     * @return Undefined
      * @throws Exception
      */
-    public static function from(stdClass $obj): Typeid {
-        if (!property_exists($obj, 'typeid')) {
+    public static function from(stdClass $obj): Undefined {
+        if (!property_exists($obj, 'undefined')) {
             throw new Exception("Missing required property");
         }
-        return new Typeid(
-         Typeid::fromTypeid($obj->{'typeid'})
+        return new Undefined(
+         Undefined::fromUndefined($obj->{'undefined'})
         );
     }
 
     /**
-     * @return Typeid
+     * @return Undefined
      */
-    public static function sample(): Typeid {
-        return new Typeid(
-         Typeid::sampleTypeid()
+    public static function sample(): Undefined {
+        return new Undefined(
+         Undefined::sampleUndefined()
         );
     }
 }
 
-// This is an autogenerated file:Typename
+// This is an autogenerated file:Union
 
-class Typename {
-    private int $typename; // json:typename Required
+class Union {
+    private int $union; // json:union Required
 
     /**
-     * @param int $typename
+     * @param int $union
      */
-    public function __construct(int $typename) {
-        $this->typename = $typename;
+    public function __construct(int $union) {
+        $this->union = $union;
     }
 
     /**
@@ -50209,7 +51825,7 @@ class Typename {
      * @throws Exception
      * @return int
      */
-    public static function fromTypename(int $value): int {
+    public static function fromUnion(int $value): int {
         return $value; /*int*/
     }
 
@@ -50217,11 +51833,11 @@ class Typename {
      * @throws Exception
      * @return int
      */
-    public function toTypename(): int {
-        if (Typename::validateTypename($this->typename))  {
-            return $this->typename; /*int*/
+    public function toUnion(): int {
+        if (Union::validateUnion($this->union))  {
+            return $this->union; /*int*/
         }
-        throw new Exception('never get to this Typename::typename');
+        throw new Exception('never get to this Union::union');
     }
 
     /**
@@ -50229,7 +51845,7 @@ class Typename {
      * @return bool
      * @throws Exception
      */
-    public static function validateTypename(int $value): bool {
+    public static function validateUnion(int $value): bool {
         return true;
     }
 
@@ -50237,18 +51853,18 @@ class Typename {
      * @throws Exception
      * @return int
      */
-    public function getTypename(): int {
-        if (Typename::validateTypename($this->typename))  {
-            return $this->typename;
+    public function getUnion(): int {
+        if (Union::validateUnion($this->union))  {
+            return $this->union;
         }
-        throw new Exception('never get to getTypename Typename::typename');
+        throw new Exception('never get to getUnion Union::union');
     }
 
     /**
      * @return int
      */
-    public static function sampleTypename(): int {
-        return 31; /*31:typename*/
+    public static function sampleUnion(): int {
+        return 31; /*31:union*/
     }
 
     /**
@@ -50256,7 +51872,7 @@ class Typename {
      * @return bool
      */
     public function validate(): bool {
-        return Typename::validateTypename($this->typename);
+        return Union::validateUnion($this->union);
     }
 
     /**
@@ -50265,44 +51881,110 @@ class Typename {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'typename'} = $this->toTypename();
+        $out->{'union'} = $this->toUnion();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Typename
+     * @return Union
      * @throws Exception
      */
-    public static function from(stdClass $obj): Typename {
-        if (!property_exists($obj, 'typename')) {
+    public static function from(stdClass $obj): Union {
+        if (!property_exists($obj, 'union')) {
             throw new Exception("Missing required property");
         }
-        return new Typename(
-         Typename::fromTypename($obj->{'typename'})
+        return new Union(
+         Union::fromUnion($obj->{'union'})
         );
     }
 
     /**
-     * @return Typename
+     * @return Union
      */
-    public static function sample(): Typename {
-        return new Typename(
-         Typename::sampleTypename()
+    public static function sample(): Union {
+        return new Union(
+         Union::sampleUnion()
         );
     }
 }
 
-// This is an autogenerated file:Typeof
+// This is an autogenerated file:Obj6
 
-class Typeof {
-    private int $typeof; // json:typeof Required
+class Obj6 {
+    private int $dummy; // json:dummy Required
+    private Unowned $unowned; // json:unowned Required
+    private Unsafe $unsafe; // json:unsafe Required
+    private Unsigned $unsigned; // json:unsigned 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
+    private VoidClass $void; // json:void Required
+    private Volatile $volatile; // json:volatile Required
+    private WcharT $wcharT; // json:wchar_t Required
+    private Weak $weak; // json:weak Required
+    private Where $where; // json:where Required
+    private WhileClass $while; // json:while Required
+    private WillSet $willSet; // json:willSet Required
+    private With $with; // json:with Required
+    private XorClass $xor; // json:xor Required
+    private XorEq $xorEq; // json:xor_eq Required
+    private Yes $yes; // json:YES Required
+    private YieldClass $yield; // json:yield Required
 
     /**
-     * @param int $typeof
+     * @param int $dummy
+     * @param Unowned $unowned
+     * @param Unsafe $unsafe
+     * @param Unsigned $unsigned
+     * @param Ushort $ushort
+     * @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
+     * @param Weak $weak
+     * @param Where $where
+     * @param WhileClass $while
+     * @param WillSet $willSet
+     * @param With $with
+     * @param XorClass $xor
+     * @param XorEq $xorEq
+     * @param Yes $yes
+     * @param YieldClass $yield
      */
-    public function __construct(int $typeof) {
-        $this->typeof = $typeof;
+    public function __construct(int $dummy, Unowned $unowned, Unsafe $unsafe, Unsigned $unsigned, Ushort $ushort, 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->unowned = $unowned;
+        $this->unsafe = $unsafe;
+        $this->unsigned = $unsigned;
+        $this->ushort = $ushort;
+        $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;
+        $this->weak = $weak;
+        $this->where = $where;
+        $this->while = $while;
+        $this->willSet = $willSet;
+        $this->with = $with;
+        $this->xor = $xor;
+        $this->xorEq = $xorEq;
+        $this->yes = $yes;
+        $this->yield = $yield;
     }
 
     /**
@@ -50310,7 +51992,7 @@ class Typeof {
      * @throws Exception
      * @return int
      */
-    public static function fromTypeof(int $value): int {
+    public static function fromDummy(int $value): int {
         return $value; /*int*/
     }
 
@@ -50318,11 +52000,11 @@ class Typeof {
      * @throws Exception
      * @return int
      */
-    public function toTypeof(): int {
-        if (Typeof::validateTypeof($this->typeof))  {
-            return $this->typeof; /*int*/
+    public function toDummy(): int {
+        if (Obj6::validateDummy($this->dummy))  {
+            return $this->dummy; /*int*/
         }
-        throw new Exception('never get to this Typeof::typeof');
+        throw new Exception('never get to this Obj6::dummy');
     }
 
     /**
@@ -50330,7 +52012,7 @@ class Typeof {
      * @return bool
      * @throws Exception
      */
-    public static function validateTypeof(int $value): bool {
+    public static function validateDummy(int $value): bool {
         return true;
     }
 
@@ -50338,1129 +52020,1074 @@ class Typeof {
      * @throws Exception
      * @return int
      */
-    public function getTypeof(): int {
-        if (Typeof::validateTypeof($this->typeof))  {
-            return $this->typeof;
+    public function getDummy(): int {
+        if (Obj6::validateDummy($this->dummy))  {
+            return $this->dummy;
         }
-        throw new Exception('never get to getTypeof Typeof::typeof');
+        throw new Exception('never get to getDummy Obj6::dummy');
     }
 
     /**
      * @return int
      */
-    public static function sampleTypeof(): int {
-        return 31; /*31:typeof*/
-    }
-
-    /**
-     * @throws Exception
-     * @return bool
-     */
-    public function validate(): bool {
-        return Typeof::validateTypeof($this->typeof);
+    public static function sampleDummy(): int {
+        return 31; /*31:dummy*/
     }
 
     /**
-     * @return stdClass
+     * @param stdClass $value
      * @throws Exception
+     * @return Unowned
      */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'typeof'} = $this->toTypeof();
-        return $out;
+    public static function fromUnowned(stdClass $value): Unowned {
+        return Unowned::from($value); /*class*/
     }
 
     /**
-     * @param stdClass $obj
-     * @return Typeof
      * @throws Exception
+     * @return stdClass
      */
-    public static function from(stdClass $obj): Typeof {
-        if (!property_exists($obj, 'typeof')) {
-            throw new Exception("Missing required property");
+    public function toUnowned(): stdClass {
+        if (Obj6::validateUnowned($this->unowned))  {
+            return $this->unowned->to(); /*class*/
         }
-        return new Typeof(
-         Typeof::fromTypeof($obj->{'typeof'})
-        );
+        throw new Exception('never get to this Obj6::unowned');
     }
 
     /**
-     * @return Typeof
+     * @param Unowned
+     * @return bool
+     * @throws Exception
      */
-    public static function sample(): Typeof {
-        return new Typeof(
-         Typeof::sampleTypeof()
-        );
-    }
-}
-
-// This is an autogenerated file:Uint
+    public static function validateUnowned(Unowned $value): bool {
+        $value->validate();
+        return true;
+    }
 
-class Uint {
-    private int $uint; // json:uint Required
+    /**
+     * @throws Exception
+     * @return Unowned
+     */
+    public function getUnowned(): Unowned {
+        if (Obj6::validateUnowned($this->unowned))  {
+            return $this->unowned;
+        }
+        throw new Exception('never get to getUnowned Obj6::unowned');
+    }
 
     /**
-     * @param int $uint
+     * @return Unowned
      */
-    public function __construct(int $uint) {
-        $this->uint = $uint;
+    public static function sampleUnowned(): Unowned {
+        return Unowned::sample(); /*32:unowned*/
     }
 
     /**
-     * @param int $value
+     * @param stdClass $value
      * @throws Exception
-     * @return int
+     * @return Unsafe
      */
-    public static function fromUint(int $value): int {
-        return $value; /*int*/
+    public static function fromUnsafe(stdClass $value): Unsafe {
+        return Unsafe::from($value); /*class*/
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return stdClass
      */
-    public function toUint(): int {
-        if (Uint::validateUint($this->uint))  {
-            return $this->uint; /*int*/
+    public function toUnsafe(): stdClass {
+        if (Obj6::validateUnsafe($this->unsafe))  {
+            return $this->unsafe->to(); /*class*/
         }
-        throw new Exception('never get to this Uint::uint');
+        throw new Exception('never get to this Obj6::unsafe');
     }
 
     /**
-     * @param int
+     * @param Unsafe
      * @return bool
      * @throws Exception
      */
-    public static function validateUint(int $value): bool {
+    public static function validateUnsafe(Unsafe $value): bool {
+        $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return Unsafe
      */
-    public function getUint(): int {
-        if (Uint::validateUint($this->uint))  {
-            return $this->uint;
+    public function getUnsafe(): Unsafe {
+        if (Obj6::validateUnsafe($this->unsafe))  {
+            return $this->unsafe;
         }
-        throw new Exception('never get to getUint Uint::uint');
+        throw new Exception('never get to getUnsafe Obj6::unsafe');
     }
 
     /**
-     * @return int
+     * @return Unsafe
      */
-    public static function sampleUint(): int {
-        return 31; /*31:uint*/
+    public static function sampleUnsafe(): Unsafe {
+        return Unsafe::sample(); /*33:unsafe*/
     }
 
     /**
+     * @param stdClass $value
      * @throws Exception
-     * @return bool
+     * @return Unsigned
      */
-    public function validate(): bool {
-        return Uint::validateUint($this->uint);
+    public static function fromUnsigned(stdClass $value): Unsigned {
+        return Unsigned::from($value); /*class*/
     }
 
     /**
-     * @return stdClass
      * @throws Exception
+     * @return stdClass
      */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'uint'} = $this->toUint();
-        return $out;
+    public function toUnsigned(): stdClass {
+        if (Obj6::validateUnsigned($this->unsigned))  {
+            return $this->unsigned->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj6::unsigned');
     }
 
     /**
-     * @param stdClass $obj
-     * @return Uint
+     * @param Unsigned
+     * @return bool
      * @throws Exception
      */
-    public static function from(stdClass $obj): Uint {
-        if (!property_exists($obj, 'uint')) {
-            throw new Exception("Missing required property");
-        }
-        return new Uint(
-         Uint::fromUint($obj->{'uint'})
-        );
+    public static function validateUnsigned(Unsigned $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
-     * @return Uint
+     * @throws Exception
+     * @return Unsigned
      */
-    public static function sample(): Uint {
-        return new Uint(
-         Uint::sampleUint()
-        );
+    public function getUnsigned(): Unsigned {
+        if (Obj6::validateUnsigned($this->unsigned))  {
+            return $this->unsigned;
+        }
+        throw new Exception('never get to getUnsigned Obj6::unsigned');
     }
-}
-
-// This is an autogenerated file:Ulong
-
-class Ulong {
-    private int $ulong; // json:ulong Required
 
     /**
-     * @param int $ulong
+     * @return Unsigned
      */
-    public function __construct(int $ulong) {
-        $this->ulong = $ulong;
+    public static function sampleUnsigned(): Unsigned {
+        return Unsigned::sample(); /*34:unsigned*/
     }
 
     /**
-     * @param int $value
+     * @param stdClass $value
      * @throws Exception
-     * @return int
+     * @return Ushort
      */
-    public static function fromUlong(int $value): int {
-        return $value; /*int*/
+    public static function fromUshort(stdClass $value): Ushort {
+        return Ushort::from($value); /*class*/
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return stdClass
      */
-    public function toUlong(): int {
-        if (Ulong::validateUlong($this->ulong))  {
-            return $this->ulong; /*int*/
+    public function toUshort(): stdClass {
+        if (Obj6::validateUshort($this->ushort))  {
+            return $this->ushort->to(); /*class*/
         }
-        throw new Exception('never get to this Ulong::ulong');
+        throw new Exception('never get to this Obj6::ushort');
     }
 
     /**
-     * @param int
+     * @param Ushort
      * @return bool
      * @throws Exception
      */
-    public static function validateUlong(int $value): bool {
+    public static function validateUshort(Ushort $value): bool {
+        $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return Ushort
      */
-    public function getUlong(): int {
-        if (Ulong::validateUlong($this->ulong))  {
-            return $this->ulong;
+    public function getUshort(): Ushort {
+        if (Obj6::validateUshort($this->ushort))  {
+            return $this->ushort;
         }
-        throw new Exception('never get to getUlong Ulong::ulong');
+        throw new Exception('never get to getUshort Obj6::ushort');
     }
 
     /**
-     * @return int
+     * @return Ushort
      */
-    public static function sampleUlong(): int {
-        return 31; /*31:ulong*/
+    public static function sampleUshort(): Ushort {
+        return Ushort::sample(); /*35:ushort*/
     }
 
     /**
+     * @param stdClass $value
      * @throws Exception
-     * @return bool
+     * @return Using
      */
-    public function validate(): bool {
-        return Ulong::validateUlong($this->ulong);
+    public static function fromUsing(stdClass $value): Using {
+        return Using::from($value); /*class*/
     }
 
     /**
-     * @return stdClass
      * @throws Exception
+     * @return stdClass
      */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'ulong'} = $this->toUlong();
-        return $out;
+    public function toUsing(): stdClass {
+        if (Obj6::validateUsing($this->using))  {
+            return $this->using->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj6::using');
     }
 
     /**
-     * @param stdClass $obj
-     * @return Ulong
+     * @param Using
+     * @return bool
      * @throws Exception
      */
-    public static function from(stdClass $obj): Ulong {
-        if (!property_exists($obj, 'ulong')) {
-            throw new Exception("Missing required property");
-        }
-        return new Ulong(
-         Ulong::fromUlong($obj->{'ulong'})
-        );
+    public static function validateUsing(Using $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
-     * @return Ulong
+     * @throws Exception
+     * @return Using
      */
-    public static function sample(): Ulong {
-        return new Ulong(
-         Ulong::sampleUlong()
-        );
+    public function getUsing(): Using {
+        if (Obj6::validateUsing($this->using))  {
+            return $this->using;
+        }
+        throw new Exception('never get to getUsing Obj6::using');
     }
-}
-
-// This is an autogenerated file:Unchecked
-
-class Unchecked {
-    private int $unchecked; // json:unchecked Required
 
     /**
-     * @param int $unchecked
+     * @return Using
      */
-    public function __construct(int $unchecked) {
-        $this->unchecked = $unchecked;
+    public static function sampleUsing(): Using {
+        return Using::sample(); /*36:using*/
     }
 
     /**
-     * @param int $value
+     * @param stdClass $value
      * @throws Exception
-     * @return int
+     * @return Utf8JSONReader
      */
-    public static function fromUnchecked(int $value): int {
-        return $value; /*int*/
+    public static function fromUtf8JSONReader(stdClass $value): Utf8JSONReader {
+        return Utf8JSONReader::from($value); /*class*/
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return stdClass
      */
-    public function toUnchecked(): int {
-        if (Unchecked::validateUnchecked($this->unchecked))  {
-            return $this->unchecked; /*int*/
+    public function toUtf8JSONReader(): stdClass {
+        if (Obj6::validateUtf8JSONReader($this->utf8JSONReader))  {
+            return $this->utf8JSONReader->to(); /*class*/
         }
-        throw new Exception('never get to this Unchecked::unchecked');
+        throw new Exception('never get to this Obj6::utf8JSONReader');
     }
 
     /**
-     * @param int
+     * @param Utf8JSONReader
      * @return bool
      * @throws Exception
      */
-    public static function validateUnchecked(int $value): bool {
+    public static function validateUtf8JSONReader(Utf8JSONReader $value): bool {
+        $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return Utf8JSONReader
      */
-    public function getUnchecked(): int {
-        if (Unchecked::validateUnchecked($this->unchecked))  {
-            return $this->unchecked;
+    public function getUtf8JSONReader(): Utf8JSONReader {
+        if (Obj6::validateUtf8JSONReader($this->utf8JSONReader))  {
+            return $this->utf8JSONReader;
         }
-        throw new Exception('never get to getUnchecked Unchecked::unchecked');
+        throw new Exception('never get to getUtf8JSONReader Obj6::utf8JSONReader');
     }
 
     /**
-     * @return int
+     * @return Utf8JSONReader
      */
-    public static function sampleUnchecked(): int {
-        return 31; /*31:unchecked*/
+    public static function sampleUtf8JSONReader(): Utf8JSONReader {
+        return Utf8JSONReader::sample(); /*37:utf8JSONReader*/
     }
 
     /**
+     * @param stdClass $value
      * @throws Exception
-     * @return bool
+     * @return Utf8JSONWriter
      */
-    public function validate(): bool {
-        return Unchecked::validateUnchecked($this->unchecked);
+    public static function fromUtf8JSONWriter(stdClass $value): Utf8JSONWriter {
+        return Utf8JSONWriter::from($value); /*class*/
     }
 
     /**
-     * @return stdClass
      * @throws Exception
+     * @return stdClass
      */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'unchecked'} = $this->toUnchecked();
-        return $out;
+    public function toUtf8JSONWriter(): stdClass {
+        if (Obj6::validateUtf8JSONWriter($this->utf8JSONWriter))  {
+            return $this->utf8JSONWriter->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj6::utf8JSONWriter');
     }
 
     /**
-     * @param stdClass $obj
-     * @return Unchecked
+     * @param Utf8JSONWriter
+     * @return bool
      * @throws Exception
      */
-    public static function from(stdClass $obj): Unchecked {
-        if (!property_exists($obj, 'unchecked')) {
-            throw new Exception("Missing required property");
-        }
-        return new Unchecked(
-         Unchecked::fromUnchecked($obj->{'unchecked'})
-        );
+    public static function validateUtf8JSONWriter(Utf8JSONWriter $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
-     * @return Unchecked
+     * @throws Exception
+     * @return Utf8JSONWriter
      */
-    public static function sample(): Unchecked {
-        return new Unchecked(
-         Unchecked::sampleUnchecked()
-        );
+    public function getUtf8JSONWriter(): Utf8JSONWriter {
+        if (Obj6::validateUtf8JSONWriter($this->utf8JSONWriter))  {
+            return $this->utf8JSONWriter;
+        }
+        throw new Exception('never get to getUtf8JSONWriter Obj6::utf8JSONWriter');
     }
-}
-
-// This is an autogenerated file:Undefined
-
-class Undefined {
-    private int $undefined; // json:undefined Required
 
     /**
-     * @param int $undefined
+     * @return Utf8JSONWriter
      */
-    public function __construct(int $undefined) {
-        $this->undefined = $undefined;
+    public static function sampleUtf8JSONWriter(): Utf8JSONWriter {
+        return Utf8JSONWriter::sample(); /*38:utf8JSONWriter*/
     }
 
     /**
-     * @param int $value
+     * @param stdClass $value
      * @throws Exception
-     * @return int
+     * @return UUID
      */
-    public static function fromUndefined(int $value): int {
-        return $value; /*int*/
+    public static function fromUUID(stdClass $value): UUID {
+        return UUID::from($value); /*class*/
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return stdClass
      */
-    public function toUndefined(): int {
-        if (Undefined::validateUndefined($this->undefined))  {
-            return $this->undefined; /*int*/
+    public function toUUID(): stdClass {
+        if (Obj6::validateUUID($this->uuid))  {
+            return $this->uuid->to(); /*class*/
         }
-        throw new Exception('never get to this Undefined::undefined');
+        throw new Exception('never get to this Obj6::uuid');
     }
 
     /**
-     * @param int
+     * @param UUID
      * @return bool
      * @throws Exception
      */
-    public static function validateUndefined(int $value): bool {
+    public static function validateUUID(UUID $value): bool {
+        $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return UUID
      */
-    public function getUndefined(): int {
-        if (Undefined::validateUndefined($this->undefined))  {
-            return $this->undefined;
+    public function getUUID(): UUID {
+        if (Obj6::validateUUID($this->uuid))  {
+            return $this->uuid;
         }
-        throw new Exception('never get to getUndefined Undefined::undefined');
+        throw new Exception('never get to getUUID Obj6::uuid');
     }
 
     /**
-     * @return int
+     * @return UUID
      */
-    public static function sampleUndefined(): int {
-        return 31; /*31:undefined*/
+    public static function sampleUUID(): UUID {
+        return UUID::sample(); /*39:uuid*/
     }
 
     /**
+     * @param stdClass $value
      * @throws Exception
-     * @return bool
+     * @return VarClass
      */
-    public function validate(): bool {
-        return Undefined::validateUndefined($this->undefined);
+    public static function fromVar(stdClass $value): VarClass {
+        return VarClass::from($value); /*class*/
     }
 
     /**
-     * @return stdClass
      * @throws Exception
+     * @return stdClass
      */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'undefined'} = $this->toUndefined();
-        return $out;
+    public function toVar(): stdClass {
+        if (Obj6::validateVar($this->var))  {
+            return $this->var->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj6::var');
     }
 
     /**
-     * @param stdClass $obj
-     * @return Undefined
+     * @param VarClass
+     * @return bool
      * @throws Exception
      */
-    public static function from(stdClass $obj): Undefined {
-        if (!property_exists($obj, 'undefined')) {
-            throw new Exception("Missing required property");
-        }
-        return new Undefined(
-         Undefined::fromUndefined($obj->{'undefined'})
-        );
+    public static function validateVar(VarClass $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
-     * @return Undefined
+     * @throws Exception
+     * @return VarClass
      */
-    public static function sample(): Undefined {
-        return new Undefined(
-         Undefined::sampleUndefined()
-        );
+    public function getVar(): VarClass {
+        if (Obj6::validateVar($this->var))  {
+            return $this->var;
+        }
+        throw new Exception('never get to getVar Obj6::var');
     }
-}
-
-// This is an autogenerated file:Union
-
-class Union {
-    private int $union; // json:union Required
 
     /**
-     * @param int $union
+     * @return VarClass
      */
-    public function __construct(int $union) {
-        $this->union = $union;
+    public static function sampleVar(): VarClass {
+        return VarClass::sample(); /*40:var*/
     }
 
     /**
-     * @param int $value
+     * @param stdClass $value
      * @throws Exception
-     * @return int
+     * @return Virtual
      */
-    public static function fromUnion(int $value): int {
-        return $value; /*int*/
+    public static function fromVirtual(stdClass $value): Virtual {
+        return Virtual::from($value); /*class*/
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return stdClass
      */
-    public function toUnion(): int {
-        if (Union::validateUnion($this->union))  {
-            return $this->union; /*int*/
+    public function toVirtual(): stdClass {
+        if (Obj6::validateVirtual($this->virtual))  {
+            return $this->virtual->to(); /*class*/
         }
-        throw new Exception('never get to this Union::union');
+        throw new Exception('never get to this Obj6::virtual');
     }
 
     /**
-     * @param int
+     * @param Virtual
      * @return bool
      * @throws Exception
      */
-    public static function validateUnion(int $value): bool {
+    public static function validateVirtual(Virtual $value): bool {
+        $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return Virtual
      */
-    public function getUnion(): int {
-        if (Union::validateUnion($this->union))  {
-            return $this->union;
+    public function getVirtual(): Virtual {
+        if (Obj6::validateVirtual($this->virtual))  {
+            return $this->virtual;
         }
-        throw new Exception('never get to getUnion Union::union');
+        throw new Exception('never get to getVirtual Obj6::virtual');
     }
 
     /**
-     * @return int
+     * @return Virtual
      */
-    public static function sampleUnion(): int {
-        return 31; /*31:union*/
+    public static function sampleVirtual(): Virtual {
+        return Virtual::sample(); /*41:virtual*/
     }
 
     /**
+     * @param stdClass $value
      * @throws Exception
-     * @return bool
+     * @return VoidClass
      */
-    public function validate(): bool {
-        return Union::validateUnion($this->union);
+    public static function fromVoid(stdClass $value): VoidClass {
+        return VoidClass::from($value); /*class*/
     }
 
     /**
-     * @return stdClass
      * @throws Exception
+     * @return stdClass
      */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'union'} = $this->toUnion();
-        return $out;
+    public function toVoid(): stdClass {
+        if (Obj6::validateVoid($this->void))  {
+            return $this->void->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj6::void');
     }
 
     /**
-     * @param stdClass $obj
-     * @return Union
+     * @param VoidClass
+     * @return bool
      * @throws Exception
      */
-    public static function from(stdClass $obj): Union {
-        if (!property_exists($obj, 'union')) {
-            throw new Exception("Missing required property");
-        }
-        return new Union(
-         Union::fromUnion($obj->{'union'})
-        );
+    public static function validateVoid(VoidClass $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
-     * @return Union
+     * @throws Exception
+     * @return VoidClass
      */
-    public static function sample(): Union {
-        return new Union(
-         Union::sampleUnion()
-        );
+    public function getVoid(): VoidClass {
+        if (Obj6::validateVoid($this->void))  {
+            return $this->void;
+        }
+        throw new Exception('never get to getVoid Obj6::void');
     }
-}
-
-// This is an autogenerated file:Unowned
-
-class Unowned {
-    private int $unowned; // json:unowned Required
 
     /**
-     * @param int $unowned
+     * @return VoidClass
      */
-    public function __construct(int $unowned) {
-        $this->unowned = $unowned;
+    public static function sampleVoid(): VoidClass {
+        return VoidClass::sample(); /*42:void*/
     }
 
     /**
-     * @param int $value
+     * @param stdClass $value
      * @throws Exception
-     * @return int
+     * @return Volatile
      */
-    public static function fromUnowned(int $value): int {
-        return $value; /*int*/
+    public static function fromVolatile(stdClass $value): Volatile {
+        return Volatile::from($value); /*class*/
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return stdClass
      */
-    public function toUnowned(): int {
-        if (Unowned::validateUnowned($this->unowned))  {
-            return $this->unowned; /*int*/
+    public function toVolatile(): stdClass {
+        if (Obj6::validateVolatile($this->volatile))  {
+            return $this->volatile->to(); /*class*/
         }
-        throw new Exception('never get to this Unowned::unowned');
+        throw new Exception('never get to this Obj6::volatile');
     }
 
     /**
-     * @param int
+     * @param Volatile
      * @return bool
      * @throws Exception
      */
-    public static function validateUnowned(int $value): bool {
+    public static function validateVolatile(Volatile $value): bool {
+        $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return Volatile
      */
-    public function getUnowned(): int {
-        if (Unowned::validateUnowned($this->unowned))  {
-            return $this->unowned;
+    public function getVolatile(): Volatile {
+        if (Obj6::validateVolatile($this->volatile))  {
+            return $this->volatile;
         }
-        throw new Exception('never get to getUnowned Unowned::unowned');
+        throw new Exception('never get to getVolatile Obj6::volatile');
     }
 
     /**
-     * @return int
+     * @return Volatile
      */
-    public static function sampleUnowned(): int {
-        return 31; /*31:unowned*/
+    public static function sampleVolatile(): Volatile {
+        return Volatile::sample(); /*43:volatile*/
     }
 
     /**
+     * @param stdClass $value
      * @throws Exception
-     * @return bool
+     * @return WcharT
      */
-    public function validate(): bool {
-        return Unowned::validateUnowned($this->unowned);
+    public static function fromWcharT(stdClass $value): WcharT {
+        return WcharT::from($value); /*class*/
     }
 
     /**
-     * @return stdClass
      * @throws Exception
+     * @return stdClass
      */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'unowned'} = $this->toUnowned();
-        return $out;
+    public function toWcharT(): stdClass {
+        if (Obj6::validateWcharT($this->wcharT))  {
+            return $this->wcharT->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj6::wcharT');
     }
 
     /**
-     * @param stdClass $obj
-     * @return Unowned
+     * @param WcharT
+     * @return bool
      * @throws Exception
      */
-    public static function from(stdClass $obj): Unowned {
-        if (!property_exists($obj, 'unowned')) {
-            throw new Exception("Missing required property");
-        }
-        return new Unowned(
-         Unowned::fromUnowned($obj->{'unowned'})
-        );
+    public static function validateWcharT(WcharT $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
-     * @return Unowned
+     * @throws Exception
+     * @return WcharT
      */
-    public static function sample(): Unowned {
-        return new Unowned(
-         Unowned::sampleUnowned()
-        );
+    public function getWcharT(): WcharT {
+        if (Obj6::validateWcharT($this->wcharT))  {
+            return $this->wcharT;
+        }
+        throw new Exception('never get to getWcharT Obj6::wcharT');
     }
-}
-
-// This is an autogenerated file:Unsafe
-
-class Unsafe {
-    private int $unsafe; // json:unsafe Required
 
     /**
-     * @param int $unsafe
+     * @return WcharT
      */
-    public function __construct(int $unsafe) {
-        $this->unsafe = $unsafe;
+    public static function sampleWcharT(): WcharT {
+        return WcharT::sample(); /*44:wcharT*/
     }
 
     /**
-     * @param int $value
+     * @param stdClass $value
      * @throws Exception
-     * @return int
+     * @return Weak
      */
-    public static function fromUnsafe(int $value): int {
-        return $value; /*int*/
+    public static function fromWeak(stdClass $value): Weak {
+        return Weak::from($value); /*class*/
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return stdClass
      */
-    public function toUnsafe(): int {
-        if (Unsafe::validateUnsafe($this->unsafe))  {
-            return $this->unsafe; /*int*/
+    public function toWeak(): stdClass {
+        if (Obj6::validateWeak($this->weak))  {
+            return $this->weak->to(); /*class*/
         }
-        throw new Exception('never get to this Unsafe::unsafe');
+        throw new Exception('never get to this Obj6::weak');
     }
 
     /**
-     * @param int
+     * @param Weak
      * @return bool
      * @throws Exception
      */
-    public static function validateUnsafe(int $value): bool {
+    public static function validateWeak(Weak $value): bool {
+        $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return Weak
      */
-    public function getUnsafe(): int {
-        if (Unsafe::validateUnsafe($this->unsafe))  {
-            return $this->unsafe;
+    public function getWeak(): Weak {
+        if (Obj6::validateWeak($this->weak))  {
+            return $this->weak;
         }
-        throw new Exception('never get to getUnsafe Unsafe::unsafe');
+        throw new Exception('never get to getWeak Obj6::weak');
     }
 
     /**
-     * @return int
+     * @return Weak
      */
-    public static function sampleUnsafe(): int {
-        return 31; /*31:unsafe*/
+    public static function sampleWeak(): Weak {
+        return Weak::sample(); /*45:weak*/
     }
 
     /**
+     * @param stdClass $value
      * @throws Exception
-     * @return bool
+     * @return Where
      */
-    public function validate(): bool {
-        return Unsafe::validateUnsafe($this->unsafe);
+    public static function fromWhere(stdClass $value): Where {
+        return Where::from($value); /*class*/
     }
 
     /**
-     * @return stdClass
      * @throws Exception
+     * @return stdClass
      */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'unsafe'} = $this->toUnsafe();
-        return $out;
+    public function toWhere(): stdClass {
+        if (Obj6::validateWhere($this->where))  {
+            return $this->where->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj6::where');
     }
 
     /**
-     * @param stdClass $obj
-     * @return Unsafe
+     * @param Where
+     * @return bool
      * @throws Exception
      */
-    public static function from(stdClass $obj): Unsafe {
-        if (!property_exists($obj, 'unsafe')) {
-            throw new Exception("Missing required property");
-        }
-        return new Unsafe(
-         Unsafe::fromUnsafe($obj->{'unsafe'})
-        );
+    public static function validateWhere(Where $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
-     * @return Unsafe
+     * @throws Exception
+     * @return Where
      */
-    public static function sample(): Unsafe {
-        return new Unsafe(
-         Unsafe::sampleUnsafe()
-        );
+    public function getWhere(): Where {
+        if (Obj6::validateWhere($this->where))  {
+            return $this->where;
+        }
+        throw new Exception('never get to getWhere Obj6::where');
     }
-}
-
-// This is an autogenerated file:Unsigned
-
-class Unsigned {
-    private int $unsigned; // json:unsigned Required
 
     /**
-     * @param int $unsigned
+     * @return Where
      */
-    public function __construct(int $unsigned) {
-        $this->unsigned = $unsigned;
+    public static function sampleWhere(): Where {
+        return Where::sample(); /*46:where*/
     }
 
     /**
-     * @param int $value
+     * @param stdClass $value
      * @throws Exception
-     * @return int
+     * @return WhileClass
      */
-    public static function fromUnsigned(int $value): int {
-        return $value; /*int*/
+    public static function fromWhile(stdClass $value): WhileClass {
+        return WhileClass::from($value); /*class*/
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return stdClass
      */
-    public function toUnsigned(): int {
-        if (Unsigned::validateUnsigned($this->unsigned))  {
-            return $this->unsigned; /*int*/
+    public function toWhile(): stdClass {
+        if (Obj6::validateWhile($this->while))  {
+            return $this->while->to(); /*class*/
         }
-        throw new Exception('never get to this Unsigned::unsigned');
+        throw new Exception('never get to this Obj6::while');
     }
 
     /**
-     * @param int
+     * @param WhileClass
      * @return bool
      * @throws Exception
      */
-    public static function validateUnsigned(int $value): bool {
+    public static function validateWhile(WhileClass $value): bool {
+        $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return WhileClass
      */
-    public function getUnsigned(): int {
-        if (Unsigned::validateUnsigned($this->unsigned))  {
-            return $this->unsigned;
+    public function getWhile(): WhileClass {
+        if (Obj6::validateWhile($this->while))  {
+            return $this->while;
         }
-        throw new Exception('never get to getUnsigned Unsigned::unsigned');
+        throw new Exception('never get to getWhile Obj6::while');
     }
 
     /**
-     * @return int
+     * @return WhileClass
      */
-    public static function sampleUnsigned(): int {
-        return 31; /*31:unsigned*/
+    public static function sampleWhile(): WhileClass {
+        return WhileClass::sample(); /*47:while*/
     }
 
     /**
+     * @param stdClass $value
      * @throws Exception
-     * @return bool
+     * @return WillSet
      */
-    public function validate(): bool {
-        return Unsigned::validateUnsigned($this->unsigned);
+    public static function fromWillSet(stdClass $value): WillSet {
+        return WillSet::from($value); /*class*/
     }
 
     /**
-     * @return stdClass
      * @throws Exception
+     * @return stdClass
      */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'unsigned'} = $this->toUnsigned();
-        return $out;
+    public function toWillSet(): stdClass {
+        if (Obj6::validateWillSet($this->willSet))  {
+            return $this->willSet->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj6::willSet');
     }
 
     /**
-     * @param stdClass $obj
-     * @return Unsigned
+     * @param WillSet
+     * @return bool
      * @throws Exception
      */
-    public static function from(stdClass $obj): Unsigned {
-        if (!property_exists($obj, 'unsigned')) {
-            throw new Exception("Missing required property");
-        }
-        return new Unsigned(
-         Unsigned::fromUnsigned($obj->{'unsigned'})
-        );
+    public static function validateWillSet(WillSet $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
-     * @return Unsigned
+     * @throws Exception
+     * @return WillSet
      */
-    public static function sample(): Unsigned {
-        return new Unsigned(
-         Unsigned::sampleUnsigned()
-        );
+    public function getWillSet(): WillSet {
+        if (Obj6::validateWillSet($this->willSet))  {
+            return $this->willSet;
+        }
+        throw new Exception('never get to getWillSet Obj6::willSet');
     }
-}
-
-// This is an autogenerated file:Ushort
-
-class Ushort {
-    private int $ushort; // json:ushort Required
 
     /**
-     * @param int $ushort
+     * @return WillSet
      */
-    public function __construct(int $ushort) {
-        $this->ushort = $ushort;
+    public static function sampleWillSet(): WillSet {
+        return WillSet::sample(); /*48:willSet*/
     }
 
     /**
-     * @param int $value
+     * @param stdClass $value
      * @throws Exception
-     * @return int
+     * @return With
      */
-    public static function fromUshort(int $value): int {
-        return $value; /*int*/
+    public static function fromWith(stdClass $value): With {
+        return With::from($value); /*class*/
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return stdClass
      */
-    public function toUshort(): int {
-        if (Ushort::validateUshort($this->ushort))  {
-            return $this->ushort; /*int*/
+    public function toWith(): stdClass {
+        if (Obj6::validateWith($this->with))  {
+            return $this->with->to(); /*class*/
         }
-        throw new Exception('never get to this Ushort::ushort');
+        throw new Exception('never get to this Obj6::with');
     }
 
     /**
-     * @param int
+     * @param With
      * @return bool
      * @throws Exception
      */
-    public static function validateUshort(int $value): bool {
+    public static function validateWith(With $value): bool {
+        $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return With
      */
-    public function getUshort(): int {
-        if (Ushort::validateUshort($this->ushort))  {
-            return $this->ushort;
+    public function getWith(): With {
+        if (Obj6::validateWith($this->with))  {
+            return $this->with;
         }
-        throw new Exception('never get to getUshort Ushort::ushort');
+        throw new Exception('never get to getWith Obj6::with');
     }
 
     /**
-     * @return int
+     * @return With
      */
-    public static function sampleUshort(): int {
-        return 31; /*31:ushort*/
+    public static function sampleWith(): With {
+        return With::sample(); /*49:with*/
     }
 
     /**
+     * @param stdClass $value
      * @throws Exception
-     * @return bool
+     * @return XorClass
      */
-    public function validate(): bool {
-        return Ushort::validateUshort($this->ushort);
+    public static function fromXor(stdClass $value): XorClass {
+        return XorClass::from($value); /*class*/
     }
 
     /**
-     * @return stdClass
      * @throws Exception
+     * @return stdClass
      */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'ushort'} = $this->toUshort();
-        return $out;
+    public function toXor(): stdClass {
+        if (Obj6::validateXor($this->xor))  {
+            return $this->xor->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj6::xor');
     }
 
     /**
-     * @param stdClass $obj
-     * @return Ushort
+     * @param XorClass
+     * @return bool
      * @throws Exception
      */
-    public static function from(stdClass $obj): Ushort {
-        if (!property_exists($obj, 'ushort')) {
-            throw new Exception("Missing required property");
-        }
-        return new Ushort(
-         Ushort::fromUshort($obj->{'ushort'})
-        );
+    public static function validateXor(XorClass $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
-     * @return Ushort
+     * @throws Exception
+     * @return XorClass
      */
-    public static function sample(): Ushort {
-        return new Ushort(
-         Ushort::sampleUshort()
-        );
+    public function getXor(): XorClass {
+        if (Obj6::validateXor($this->xor))  {
+            return $this->xor;
+        }
+        throw new Exception('never get to getXor Obj6::xor');
     }
-}
-
-// This is an autogenerated file:Using
-
-class Using {
-    private int $using; // json:using Required
 
     /**
-     * @param int $using
+     * @return XorClass
      */
-    public function __construct(int $using) {
-        $this->using = $using;
+    public static function sampleXor(): XorClass {
+        return XorClass::sample(); /*50:xor*/
     }
 
     /**
-     * @param int $value
+     * @param stdClass $value
      * @throws Exception
-     * @return int
+     * @return XorEq
      */
-    public static function fromUsing(int $value): int {
-        return $value; /*int*/
+    public static function fromXorEq(stdClass $value): XorEq {
+        return XorEq::from($value); /*class*/
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return stdClass
      */
-    public function toUsing(): int {
-        if (Using::validateUsing($this->using))  {
-            return $this->using; /*int*/
+    public function toXorEq(): stdClass {
+        if (Obj6::validateXorEq($this->xorEq))  {
+            return $this->xorEq->to(); /*class*/
         }
-        throw new Exception('never get to this Using::using');
+        throw new Exception('never get to this Obj6::xorEq');
     }
 
     /**
-     * @param int
+     * @param XorEq
      * @return bool
      * @throws Exception
      */
-    public static function validateUsing(int $value): bool {
+    public static function validateXorEq(XorEq $value): bool {
+        $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return XorEq
      */
-    public function getUsing(): int {
-        if (Using::validateUsing($this->using))  {
-            return $this->using;
+    public function getXorEq(): XorEq {
+        if (Obj6::validateXorEq($this->xorEq))  {
+            return $this->xorEq;
         }
-        throw new Exception('never get to getUsing Using::using');
+        throw new Exception('never get to getXorEq Obj6::xorEq');
     }
 
     /**
-     * @return int
+     * @return XorEq
      */
-    public static function sampleUsing(): int {
-        return 31; /*31:using*/
+    public static function sampleXorEq(): XorEq {
+        return XorEq::sample(); /*51:xorEq*/
     }
 
     /**
+     * @param stdClass $value
      * @throws Exception
-     * @return bool
+     * @return Yes
      */
-    public function validate(): bool {
-        return Using::validateUsing($this->using);
+    public static function fromYes(stdClass $value): Yes {
+        return Yes::from($value); /*class*/
     }
 
     /**
-     * @return stdClass
      * @throws Exception
+     * @return stdClass
      */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'using'} = $this->toUsing();
-        return $out;
+    public function toYes(): stdClass {
+        if (Obj6::validateYes($this->yes))  {
+            return $this->yes->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj6::yes');
     }
 
     /**
-     * @param stdClass $obj
-     * @return Using
+     * @param Yes
+     * @return bool
      * @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'})
-        );
+    public static function validateYes(Yes $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
-     * @return Using
+     * @throws Exception
+     * @return Yes
      */
-    public static function sample(): Using {
-        return new Using(
-         Using::sampleUsing()
-        );
+    public function getYes(): Yes {
+        if (Obj6::validateYes($this->yes))  {
+            return $this->yes;
+        }
+        throw new Exception('never get to getYes Obj6::yes');
     }
-}
-
-// This is an autogenerated file:Utf8JSONReader
-
-class Utf8JSONReader {
-    private int $utf8JSONReader; // json:Utf8JsonReader Required
 
     /**
-     * @param int $utf8JSONReader
+     * @return Yes
      */
-    public function __construct(int $utf8JSONReader) {
-        $this->utf8JSONReader = $utf8JSONReader;
+    public static function sampleYes(): Yes {
+        return Yes::sample(); /*52:yes*/
     }
 
     /**
-     * @param int $value
+     * @param stdClass $value
      * @throws Exception
-     * @return int
+     * @return YieldClass
      */
-    public static function fromUtf8JSONReader(int $value): int {
-        return $value; /*int*/
+    public static function fromYield(stdClass $value): YieldClass {
+        return YieldClass::from($value); /*class*/
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return stdClass
      */
-    public function toUtf8JSONReader(): int {
-        if (Utf8JSONReader::validateUtf8JSONReader($this->utf8JSONReader))  {
-            return $this->utf8JSONReader; /*int*/
+    public function toYield(): stdClass {
+        if (Obj6::validateYield($this->yield))  {
+            return $this->yield->to(); /*class*/
         }
-        throw new Exception('never get to this Utf8JSONReader::utf8JSONReader');
+        throw new Exception('never get to this Obj6::yield');
     }
 
     /**
-     * @param int
+     * @param YieldClass
      * @return bool
      * @throws Exception
      */
-    public static function validateUtf8JSONReader(int $value): bool {
+    public static function validateYield(YieldClass $value): bool {
+        $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return YieldClass
      */
-    public function getUtf8JSONReader(): int {
-        if (Utf8JSONReader::validateUtf8JSONReader($this->utf8JSONReader))  {
-            return $this->utf8JSONReader;
+    public function getYield(): YieldClass {
+        if (Obj6::validateYield($this->yield))  {
+            return $this->yield;
         }
-        throw new Exception('never get to getUtf8JSONReader Utf8JSONReader::utf8JSONReader');
+        throw new Exception('never get to getYield Obj6::yield');
     }
 
     /**
-     * @return int
+     * @return YieldClass
      */
-    public static function sampleUtf8JSONReader(): int {
-        return 31; /*31:utf8JSONReader*/
+    public static function sampleYield(): YieldClass {
+        return YieldClass::sample(); /*53:yield*/
     }
 
     /**
@@ -51468,7 +53095,29 @@ class Utf8JSONReader {
      * @return bool
      */
     public function validate(): bool {
-        return Utf8JSONReader::validateUtf8JSONReader($this->utf8JSONReader);
+        return Obj6::validateDummy($this->dummy)
+        || Obj6::validateUnowned($this->unowned)
+        || Obj6::validateUnsafe($this->unsafe)
+        || Obj6::validateUnsigned($this->unsigned)
+        || Obj6::validateUshort($this->ushort)
+        || 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);
     }
 
     /**
@@ -51477,44 +53126,176 @@ class Utf8JSONReader {
      */
     public function to(): stdClass  {
         $out = new stdClass();
+        $out->{'dummy'} = $this->toDummy();
+        $out->{'unowned'} = $this->toUnowned();
+        $out->{'unsafe'} = $this->toUnsafe();
+        $out->{'unsigned'} = $this->toUnsigned();
+        $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();
+        $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 Utf8JSONReader
+     * @return Obj6
      * @throws Exception
      */
-    public static function from(stdClass $obj): Utf8JSONReader {
+    public static function from(stdClass $obj): Obj6 {
+        if (!property_exists($obj, 'dummy')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'unowned')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'unsafe')) {
+            throw new Exception("Missing required property");
+        }
+        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");
         }
-        return new Utf8JSONReader(
-         Utf8JSONReader::fromUtf8JSONReader($obj->{'Utf8JsonReader'})
+        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::fromUnowned($obj->{'unowned'})
+        ,Obj6::fromUnsafe($obj->{'unsafe'})
+        ,Obj6::fromUnsigned($obj->{'unsigned'})
+        ,Obj6::fromUshort($obj->{'ushort'})
+        ,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 Utf8JSONReader
+     * @return Obj6
      */
-    public static function sample(): Utf8JSONReader {
-        return new Utf8JSONReader(
-         Utf8JSONReader::sampleUtf8JSONReader()
+    public static function sample(): Obj6 {
+        return new Obj6(
+         Obj6::sampleDummy()
+        ,Obj6::sampleUnowned()
+        ,Obj6::sampleUnsafe()
+        ,Obj6::sampleUnsigned()
+        ,Obj6::sampleUshort()
+        ,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:Utf8JSONWriter
+// This is an autogenerated file:Unowned
 
-class Utf8JSONWriter {
-    private int $utf8JSONWriter; // json:Utf8JsonWriter Required
+class Unowned {
+    private int $unowned; // json:unowned Required
 
     /**
-     * @param int $utf8JSONWriter
+     * @param int $unowned
      */
-    public function __construct(int $utf8JSONWriter) {
-        $this->utf8JSONWriter = $utf8JSONWriter;
+    public function __construct(int $unowned) {
+        $this->unowned = $unowned;
     }
 
     /**
@@ -51522,7 +53303,7 @@ class Utf8JSONWriter {
      * @throws Exception
      * @return int
      */
-    public static function fromUtf8JSONWriter(int $value): int {
+    public static function fromUnowned(int $value): int {
         return $value; /*int*/
     }
 
@@ -51530,11 +53311,11 @@ class Utf8JSONWriter {
      * @throws Exception
      * @return int
      */
-    public function toUtf8JSONWriter(): int {
-        if (Utf8JSONWriter::validateUtf8JSONWriter($this->utf8JSONWriter))  {
-            return $this->utf8JSONWriter; /*int*/
+    public function toUnowned(): int {
+        if (Unowned::validateUnowned($this->unowned))  {
+            return $this->unowned; /*int*/
         }
-        throw new Exception('never get to this Utf8JSONWriter::utf8JSONWriter');
+        throw new Exception('never get to this Unowned::unowned');
     }
 
     /**
@@ -51542,7 +53323,7 @@ class Utf8JSONWriter {
      * @return bool
      * @throws Exception
      */
-    public static function validateUtf8JSONWriter(int $value): bool {
+    public static function validateUnowned(int $value): bool {
         return true;
     }
 
@@ -51550,18 +53331,18 @@ class Utf8JSONWriter {
      * @throws Exception
      * @return int
      */
-    public function getUtf8JSONWriter(): int {
-        if (Utf8JSONWriter::validateUtf8JSONWriter($this->utf8JSONWriter))  {
-            return $this->utf8JSONWriter;
+    public function getUnowned(): int {
+        if (Unowned::validateUnowned($this->unowned))  {
+            return $this->unowned;
         }
-        throw new Exception('never get to getUtf8JSONWriter Utf8JSONWriter::utf8JSONWriter');
+        throw new Exception('never get to getUnowned Unowned::unowned');
     }
 
     /**
      * @return int
      */
-    public static function sampleUtf8JSONWriter(): int {
-        return 31; /*31:utf8JSONWriter*/
+    public static function sampleUnowned(): int {
+        return 31; /*31:unowned*/
     }
 
     /**
@@ -51569,7 +53350,7 @@ class Utf8JSONWriter {
      * @return bool
      */
     public function validate(): bool {
-        return Utf8JSONWriter::validateUtf8JSONWriter($this->utf8JSONWriter);
+        return Unowned::validateUnowned($this->unowned);
     }
 
     /**
@@ -51578,44 +53359,44 @@ class Utf8JSONWriter {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'Utf8JsonWriter'} = $this->toUtf8JSONWriter();
+        $out->{'unowned'} = $this->toUnowned();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Utf8JSONWriter
+     * @return Unowned
      * @throws Exception
      */
-    public static function from(stdClass $obj): Utf8JSONWriter {
-        if (!property_exists($obj, 'Utf8JsonWriter')) {
+    public static function from(stdClass $obj): Unowned {
+        if (!property_exists($obj, 'unowned')) {
             throw new Exception("Missing required property");
         }
-        return new Utf8JSONWriter(
-         Utf8JSONWriter::fromUtf8JSONWriter($obj->{'Utf8JsonWriter'})
+        return new Unowned(
+         Unowned::fromUnowned($obj->{'unowned'})
         );
     }
 
     /**
-     * @return Utf8JSONWriter
+     * @return Unowned
      */
-    public static function sample(): Utf8JSONWriter {
-        return new Utf8JSONWriter(
-         Utf8JSONWriter::sampleUtf8JSONWriter()
+    public static function sample(): Unowned {
+        return new Unowned(
+         Unowned::sampleUnowned()
         );
     }
 }
 
-// This is an autogenerated file:UUID
+// This is an autogenerated file:Unsafe
 
-class UUID {
-    private int $uuid; // json:UUID Required
+class Unsafe {
+    private int $unsafe; // json:unsafe Required
 
     /**
-     * @param int $uuid
+     * @param int $unsafe
      */
-    public function __construct(int $uuid) {
-        $this->uuid = $uuid;
+    public function __construct(int $unsafe) {
+        $this->unsafe = $unsafe;
     }
 
     /**
@@ -51623,7 +53404,7 @@ class UUID {
      * @throws Exception
      * @return int
      */
-    public static function fromUUID(int $value): int {
+    public static function fromUnsafe(int $value): int {
         return $value; /*int*/
     }
 
@@ -51631,11 +53412,11 @@ class UUID {
      * @throws Exception
      * @return int
      */
-    public function toUUID(): int {
-        if (UUID::validateUUID($this->uuid))  {
-            return $this->uuid; /*int*/
+    public function toUnsafe(): int {
+        if (Unsafe::validateUnsafe($this->unsafe))  {
+            return $this->unsafe; /*int*/
         }
-        throw new Exception('never get to this UUID::uuid');
+        throw new Exception('never get to this Unsafe::unsafe');
     }
 
     /**
@@ -51643,7 +53424,7 @@ class UUID {
      * @return bool
      * @throws Exception
      */
-    public static function validateUUID(int $value): bool {
+    public static function validateUnsafe(int $value): bool {
         return true;
     }
 
@@ -51651,18 +53432,18 @@ class UUID {
      * @throws Exception
      * @return int
      */
-    public function getUUID(): int {
-        if (UUID::validateUUID($this->uuid))  {
-            return $this->uuid;
+    public function getUnsafe(): int {
+        if (Unsafe::validateUnsafe($this->unsafe))  {
+            return $this->unsafe;
         }
-        throw new Exception('never get to getUUID UUID::uuid');
+        throw new Exception('never get to getUnsafe Unsafe::unsafe');
     }
 
     /**
      * @return int
      */
-    public static function sampleUUID(): int {
-        return 31; /*31:uuid*/
+    public static function sampleUnsafe(): int {
+        return 31; /*31:unsafe*/
     }
 
     /**
@@ -51670,7 +53451,7 @@ class UUID {
      * @return bool
      */
     public function validate(): bool {
-        return UUID::validateUUID($this->uuid);
+        return Unsafe::validateUnsafe($this->unsafe);
     }
 
     /**
@@ -51679,44 +53460,44 @@ class UUID {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'UUID'} = $this->toUUID();
+        $out->{'unsafe'} = $this->toUnsafe();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return UUID
+     * @return Unsafe
      * @throws Exception
      */
-    public static function from(stdClass $obj): UUID {
-        if (!property_exists($obj, 'UUID')) {
+    public static function from(stdClass $obj): Unsafe {
+        if (!property_exists($obj, 'unsafe')) {
             throw new Exception("Missing required property");
         }
-        return new UUID(
-         UUID::fromUUID($obj->{'UUID'})
+        return new Unsafe(
+         Unsafe::fromUnsafe($obj->{'unsafe'})
         );
     }
 
     /**
-     * @return UUID
+     * @return Unsafe
      */
-    public static function sample(): UUID {
-        return new UUID(
-         UUID::sampleUUID()
+    public static function sample(): Unsafe {
+        return new Unsafe(
+         Unsafe::sampleUnsafe()
         );
     }
 }
 
-// This is an autogenerated file:VarClass
+// This is an autogenerated file:Unsigned
 
-class VarClass {
-    private int $var; // json:var Required
+class Unsigned {
+    private int $unsigned; // json:unsigned Required
 
     /**
-     * @param int $var
+     * @param int $unsigned
      */
-    public function __construct(int $var) {
-        $this->var = $var;
+    public function __construct(int $unsigned) {
+        $this->unsigned = $unsigned;
     }
 
     /**
@@ -51724,7 +53505,7 @@ class VarClass {
      * @throws Exception
      * @return int
      */
-    public static function fromVar(int $value): int {
+    public static function fromUnsigned(int $value): int {
         return $value; /*int*/
     }
 
@@ -51732,11 +53513,11 @@ class VarClass {
      * @throws Exception
      * @return int
      */
-    public function toVar(): int {
-        if (VarClass::validateVar($this->var))  {
-            return $this->var; /*int*/
+    public function toUnsigned(): int {
+        if (Unsigned::validateUnsigned($this->unsigned))  {
+            return $this->unsigned; /*int*/
         }
-        throw new Exception('never get to this VarClass::var');
+        throw new Exception('never get to this Unsigned::unsigned');
     }
 
     /**
@@ -51744,7 +53525,7 @@ class VarClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateVar(int $value): bool {
+    public static function validateUnsigned(int $value): bool {
         return true;
     }
 
@@ -51752,18 +53533,18 @@ class VarClass {
      * @throws Exception
      * @return int
      */
-    public function getVar(): int {
-        if (VarClass::validateVar($this->var))  {
-            return $this->var;
+    public function getUnsigned(): int {
+        if (Unsigned::validateUnsigned($this->unsigned))  {
+            return $this->unsigned;
         }
-        throw new Exception('never get to getVar VarClass::var');
+        throw new Exception('never get to getUnsigned Unsigned::unsigned');
     }
 
     /**
      * @return int
      */
-    public static function sampleVar(): int {
-        return 31; /*31:var*/
+    public static function sampleUnsigned(): int {
+        return 31; /*31:unsigned*/
     }
 
     /**
@@ -51771,7 +53552,7 @@ class VarClass {
      * @return bool
      */
     public function validate(): bool {
-        return VarClass::validateVar($this->var);
+        return Unsigned::validateUnsigned($this->unsigned);
     }
 
     /**
@@ -51780,44 +53561,44 @@ class VarClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'var'} = $this->toVar();
+        $out->{'unsigned'} = $this->toUnsigned();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return VarClass
+     * @return Unsigned
      * @throws Exception
      */
-    public static function from(stdClass $obj): VarClass {
-        if (!property_exists($obj, 'var')) {
+    public static function from(stdClass $obj): Unsigned {
+        if (!property_exists($obj, 'unsigned')) {
             throw new Exception("Missing required property");
         }
-        return new VarClass(
-         VarClass::fromVar($obj->{'var'})
+        return new Unsigned(
+         Unsigned::fromUnsigned($obj->{'unsigned'})
         );
     }
 
     /**
-     * @return VarClass
+     * @return Unsigned
      */
-    public static function sample(): VarClass {
-        return new VarClass(
-         VarClass::sampleVar()
+    public static function sample(): Unsigned {
+        return new Unsigned(
+         Unsigned::sampleUnsigned()
         );
     }
 }
 
-// This is an autogenerated file:Virtual
+// This is an autogenerated file:Ushort
 
-class Virtual {
-    private int $virtual; // json:virtual Required
+class Ushort {
+    private int $ushort; // json:ushort Required
 
     /**
-     * @param int $virtual
+     * @param int $ushort
      */
-    public function __construct(int $virtual) {
-        $this->virtual = $virtual;
+    public function __construct(int $ushort) {
+        $this->ushort = $ushort;
     }
 
     /**
@@ -51825,7 +53606,7 @@ class Virtual {
      * @throws Exception
      * @return int
      */
-    public static function fromVirtual(int $value): int {
+    public static function fromUshort(int $value): int {
         return $value; /*int*/
     }
 
@@ -51833,11 +53614,11 @@ class Virtual {
      * @throws Exception
      * @return int
      */
-    public function toVirtual(): int {
-        if (Virtual::validateVirtual($this->virtual))  {
-            return $this->virtual; /*int*/
+    public function toUshort(): int {
+        if (Ushort::validateUshort($this->ushort))  {
+            return $this->ushort; /*int*/
         }
-        throw new Exception('never get to this Virtual::virtual');
+        throw new Exception('never get to this Ushort::ushort');
     }
 
     /**
@@ -51845,7 +53626,7 @@ class Virtual {
      * @return bool
      * @throws Exception
      */
-    public static function validateVirtual(int $value): bool {
+    public static function validateUshort(int $value): bool {
         return true;
     }
 
@@ -51853,18 +53634,18 @@ class Virtual {
      * @throws Exception
      * @return int
      */
-    public function getVirtual(): int {
-        if (Virtual::validateVirtual($this->virtual))  {
-            return $this->virtual;
+    public function getUshort(): int {
+        if (Ushort::validateUshort($this->ushort))  {
+            return $this->ushort;
         }
-        throw new Exception('never get to getVirtual Virtual::virtual');
+        throw new Exception('never get to getUshort Ushort::ushort');
     }
 
     /**
      * @return int
      */
-    public static function sampleVirtual(): int {
-        return 31; /*31:virtual*/
+    public static function sampleUshort(): int {
+        return 31; /*31:ushort*/
     }
 
     /**
@@ -51872,7 +53653,7 @@ class Virtual {
      * @return bool
      */
     public function validate(): bool {
-        return Virtual::validateVirtual($this->virtual);
+        return Ushort::validateUshort($this->ushort);
     }
 
     /**
@@ -51881,80 +53662,44 @@ class Virtual {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'virtual'} = $this->toVirtual();
+        $out->{'ushort'} = $this->toUshort();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Virtual
+     * @return Ushort
      * @throws Exception
      */
-    public static function from(stdClass $obj): Virtual {
-        if (!property_exists($obj, 'virtual')) {
+    public static function from(stdClass $obj): Ushort {
+        if (!property_exists($obj, 'ushort')) {
             throw new Exception("Missing required property");
         }
-        return new Virtual(
-         Virtual::fromVirtual($obj->{'virtual'})
+        return new Ushort(
+         Ushort::fromUshort($obj->{'ushort'})
         );
     }
 
     /**
-     * @return Virtual
+     * @return Ushort
      */
-    public static function sample(): Virtual {
-        return new Virtual(
-         Virtual::sampleVirtual()
+    public static function sample(): Ushort {
+        return new Ushort(
+         Ushort::sampleUshort()
         );
     }
 }
 
-// This is an autogenerated file:Obj6
+// This is an autogenerated file:Using
 
-class Obj6 {
-    private int $dummy; // json:dummy Required
-    private VoidClass $void; // json:void Required
-    private Volatile $volatile; // json:volatile Required
-    private WcharT $wcharT; // json:wchar_t Required
-    private Weak $weak; // json:weak Required
-    private Where $where; // json:where Required
-    private WhileClass $while; // json:while Required
-    private WillSet $willSet; // json:willSet Required
-    private With $with; // json:with Required
-    private XorClass $xor; // json:xor Required
-    private XorEq $xorEq; // json:xor_eq Required
-    private Yes $yes; // json:YES Required
-    private YieldClass $yield; // json:yield Required
+class Using {
+    private int $using; // json:using Required
 
     /**
-     * @param int $dummy
-     * @param VoidClass $void
-     * @param Volatile $volatile
-     * @param WcharT $wcharT
-     * @param Weak $weak
-     * @param Where $where
-     * @param WhileClass $while
-     * @param WillSet $willSet
-     * @param With $with
-     * @param XorClass $xor
-     * @param XorEq $xorEq
-     * @param Yes $yes
-     * @param YieldClass $yield
+     * @param int $using
      */
-    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) {
-        $this->dummy = $dummy;
-        $this->void = $void;
-        $this->volatile = $volatile;
-        $this->wcharT = $wcharT;
-        $this->weak = $weak;
-        $this->where = $where;
-        $this->while = $while;
-        $this->willSet = $willSet;
-        $this->with = $with;
-        $this->xor = $xor;
-        $this->xorEq = $xorEq;
-        $this->yes = $yes;
-        $this->yield = $yield;
+    public function __construct(int $using) {
+        $this->using = $using;
     }
 
     /**
@@ -51962,7 +53707,7 @@ class Obj6 {
      * @throws Exception
      * @return int
      */
-    public static function fromDummy(int $value): int {
+    public static function fromUsing(int $value): int {
         return $value; /*int*/
     }
 
@@ -51970,11 +53715,11 @@ class Obj6 {
      * @throws Exception
      * @return int
      */
-    public function toDummy(): int {
-        if (Obj6::validateDummy($this->dummy))  {
-            return $this->dummy; /*int*/
+    public function toUsing(): int {
+        if (Using::validateUsing($this->using))  {
+            return $this->using; /*int*/
         }
-        throw new Exception('never get to this Obj6::dummy');
+        throw new Exception('never get to this Using::using');
     }
 
     /**
@@ -51982,7 +53727,7 @@ class Obj6 {
      * @return bool
      * @throws Exception
      */
-    public static function validateDummy(int $value): bool {
+    public static function validateUsing(int $value): bool {
         return true;
     }
 
@@ -51990,594 +53735,523 @@ class Obj6 {
      * @throws Exception
      * @return int
      */
-    public function getDummy(): int {
-        if (Obj6::validateDummy($this->dummy))  {
-            return $this->dummy;
+    public function getUsing(): int {
+        if (Using::validateUsing($this->using))  {
+            return $this->using;
         }
-        throw new Exception('never get to getDummy Obj6::dummy');
+        throw new Exception('never get to getUsing Using::using');
     }
 
     /**
      * @return int
      */
-    public static function sampleDummy(): int {
-        return 31; /*31:dummy*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return VoidClass
-     */
-    public static function fromVoid(stdClass $value): VoidClass {
-        return VoidClass::from($value); /*class*/
+    public static function sampleUsing(): int {
+        return 31; /*31:using*/
     }
 
     /**
      * @throws Exception
-     * @return stdClass
-     */
-    public function toVoid(): stdClass {
-        if (Obj6::validateVoid($this->void))  {
-            return $this->void->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj6::void');
-    }
-
-    /**
-     * @param VoidClass
      * @return bool
-     * @throws Exception
-     */
-    public static function validateVoid(VoidClass $value): bool {
-        $value->validate();
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return VoidClass
-     */
-    public function getVoid(): VoidClass {
-        if (Obj6::validateVoid($this->void))  {
-            return $this->void;
-        }
-        throw new Exception('never get to getVoid Obj6::void');
-    }
-
-    /**
-     * @return VoidClass
-     */
-    public static function sampleVoid(): VoidClass {
-        return VoidClass::sample(); /*32:void*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return Volatile
      */
-    public static function fromVolatile(stdClass $value): Volatile {
-        return Volatile::from($value); /*class*/
+    public function validate(): bool {
+        return Using::validateUsing($this->using);
     }
 
     /**
-     * @throws Exception
      * @return stdClass
-     */
-    public function toVolatile(): stdClass {
-        if (Obj6::validateVolatile($this->volatile))  {
-            return $this->volatile->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj6::volatile');
-    }
-
-    /**
-     * @param Volatile
-     * @return bool
      * @throws Exception
      */
-    public static function validateVolatile(Volatile $value): bool {
-        $value->validate();
-        return true;
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'using'} = $this->toUsing();
+        return $out;
     }
 
     /**
+     * @param stdClass $obj
+     * @return Using
      * @throws Exception
-     * @return Volatile
      */
-    public function getVolatile(): Volatile {
-        if (Obj6::validateVolatile($this->volatile))  {
-            return $this->volatile;
+    public static function from(stdClass $obj): Using {
+        if (!property_exists($obj, 'using')) {
+            throw new Exception("Missing required property");
         }
-        throw new Exception('never get to getVolatile Obj6::volatile');
-    }
-
-    /**
-     * @return Volatile
-     */
-    public static function sampleVolatile(): Volatile {
-        return Volatile::sample(); /*33:volatile*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return WcharT
-     */
-    public static function fromWcharT(stdClass $value): WcharT {
-        return WcharT::from($value); /*class*/
+        return new Using(
+         Using::fromUsing($obj->{'using'})
+        );
     }
 
     /**
-     * @throws Exception
-     * @return stdClass
+     * @return Using
      */
-    public function toWcharT(): stdClass {
-        if (Obj6::validateWcharT($this->wcharT))  {
-            return $this->wcharT->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj6::wcharT');
+    public static function sample(): Using {
+        return new Using(
+         Using::sampleUsing()
+        );
     }
+}
 
-    /**
-     * @param WcharT
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateWcharT(WcharT $value): bool {
-        $value->validate();
-        return true;
-    }
+// This is an autogenerated file:Utf8JSONReader
 
-    /**
-     * @throws Exception
-     * @return WcharT
-     */
-    public function getWcharT(): WcharT {
-        if (Obj6::validateWcharT($this->wcharT))  {
-            return $this->wcharT;
-        }
-        throw new Exception('never get to getWcharT Obj6::wcharT');
-    }
+class Utf8JSONReader {
+    private int $utf8JSONReader; // json:Utf8JsonReader Required
 
     /**
-     * @return WcharT
+     * @param int $utf8JSONReader
      */
-    public static function sampleWcharT(): WcharT {
-        return WcharT::sample(); /*34:wcharT*/
+    public function __construct(int $utf8JSONReader) {
+        $this->utf8JSONReader = $utf8JSONReader;
     }
 
     /**
-     * @param stdClass $value
+     * @param int $value
      * @throws Exception
-     * @return Weak
+     * @return int
      */
-    public static function fromWeak(stdClass $value): Weak {
-        return Weak::from($value); /*class*/
+    public static function fromUtf8JSONReader(int $value): int {
+        return $value; /*int*/
     }
 
     /**
      * @throws Exception
-     * @return stdClass
+     * @return int
      */
-    public function toWeak(): stdClass {
-        if (Obj6::validateWeak($this->weak))  {
-            return $this->weak->to(); /*class*/
+    public function toUtf8JSONReader(): int {
+        if (Utf8JSONReader::validateUtf8JSONReader($this->utf8JSONReader))  {
+            return $this->utf8JSONReader; /*int*/
         }
-        throw new Exception('never get to this Obj6::weak');
+        throw new Exception('never get to this Utf8JSONReader::utf8JSONReader');
     }
 
     /**
-     * @param Weak
+     * @param int
      * @return bool
      * @throws Exception
      */
-    public static function validateWeak(Weak $value): bool {
-        $value->validate();
+    public static function validateUtf8JSONReader(int $value): bool {
         return true;
     }
 
     /**
      * @throws Exception
-     * @return Weak
+     * @return int
      */
-    public function getWeak(): Weak {
-        if (Obj6::validateWeak($this->weak))  {
-            return $this->weak;
+    public function getUtf8JSONReader(): int {
+        if (Utf8JSONReader::validateUtf8JSONReader($this->utf8JSONReader))  {
+            return $this->utf8JSONReader;
         }
-        throw new Exception('never get to getWeak Obj6::weak');
+        throw new Exception('never get to getUtf8JSONReader Utf8JSONReader::utf8JSONReader');
     }
 
     /**
-     * @return Weak
+     * @return int
      */
-    public static function sampleWeak(): Weak {
-        return Weak::sample(); /*35:weak*/
+    public static function sampleUtf8JSONReader(): int {
+        return 31; /*31:utf8JSONReader*/
     }
 
     /**
-     * @param stdClass $value
      * @throws Exception
-     * @return Where
+     * @return bool
      */
-    public static function fromWhere(stdClass $value): Where {
-        return Where::from($value); /*class*/
+    public function validate(): bool {
+        return Utf8JSONReader::validateUtf8JSONReader($this->utf8JSONReader);
     }
 
     /**
-     * @throws Exception
      * @return stdClass
+     * @throws Exception
      */
-    public function toWhere(): stdClass {
-        if (Obj6::validateWhere($this->where))  {
-            return $this->where->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj6::where');
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'Utf8JsonReader'} = $this->toUtf8JSONReader();
+        return $out;
     }
 
     /**
-     * @param Where
-     * @return bool
+     * @param stdClass $obj
+     * @return Utf8JSONReader
      * @throws Exception
      */
-    public static function validateWhere(Where $value): bool {
-        $value->validate();
-        return true;
+    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'})
+        );
     }
 
     /**
-     * @throws Exception
-     * @return Where
+     * @return Utf8JSONReader
      */
-    public function getWhere(): Where {
-        if (Obj6::validateWhere($this->where))  {
-            return $this->where;
-        }
-        throw new Exception('never get to getWhere Obj6::where');
+    public static function sample(): Utf8JSONReader {
+        return new Utf8JSONReader(
+         Utf8JSONReader::sampleUtf8JSONReader()
+        );
     }
+}
+
+// This is an autogenerated file:Utf8JSONWriter
+
+class Utf8JSONWriter {
+    private int $utf8JSONWriter; // json:Utf8JsonWriter Required
 
     /**
-     * @return Where
+     * @param int $utf8JSONWriter
      */
-    public static function sampleWhere(): Where {
-        return Where::sample(); /*36:where*/
+    public function __construct(int $utf8JSONWriter) {
+        $this->utf8JSONWriter = $utf8JSONWriter;
     }
 
     /**
-     * @param stdClass $value
+     * @param int $value
      * @throws Exception
-     * @return WhileClass
+     * @return int
      */
-    public static function fromWhile(stdClass $value): WhileClass {
-        return WhileClass::from($value); /*class*/
+    public static function fromUtf8JSONWriter(int $value): int {
+        return $value; /*int*/
     }
 
     /**
      * @throws Exception
-     * @return stdClass
+     * @return int
      */
-    public function toWhile(): stdClass {
-        if (Obj6::validateWhile($this->while))  {
-            return $this->while->to(); /*class*/
+    public function toUtf8JSONWriter(): int {
+        if (Utf8JSONWriter::validateUtf8JSONWriter($this->utf8JSONWriter))  {
+            return $this->utf8JSONWriter; /*int*/
         }
-        throw new Exception('never get to this Obj6::while');
+        throw new Exception('never get to this Utf8JSONWriter::utf8JSONWriter');
     }
 
     /**
-     * @param WhileClass
+     * @param int
      * @return bool
      * @throws Exception
      */
-    public static function validateWhile(WhileClass $value): bool {
-        $value->validate();
+    public static function validateUtf8JSONWriter(int $value): bool {
         return true;
     }
 
     /**
      * @throws Exception
-     * @return WhileClass
+     * @return int
      */
-    public function getWhile(): WhileClass {
-        if (Obj6::validateWhile($this->while))  {
-            return $this->while;
+    public function getUtf8JSONWriter(): int {
+        if (Utf8JSONWriter::validateUtf8JSONWriter($this->utf8JSONWriter))  {
+            return $this->utf8JSONWriter;
         }
-        throw new Exception('never get to getWhile Obj6::while');
+        throw new Exception('never get to getUtf8JSONWriter Utf8JSONWriter::utf8JSONWriter');
     }
 
     /**
-     * @return WhileClass
+     * @return int
      */
-    public static function sampleWhile(): WhileClass {
-        return WhileClass::sample(); /*37:while*/
+    public static function sampleUtf8JSONWriter(): int {
+        return 31; /*31:utf8JSONWriter*/
     }
 
     /**
-     * @param stdClass $value
      * @throws Exception
-     * @return WillSet
+     * @return bool
      */
-    public static function fromWillSet(stdClass $value): WillSet {
-        return WillSet::from($value); /*class*/
+    public function validate(): bool {
+        return Utf8JSONWriter::validateUtf8JSONWriter($this->utf8JSONWriter);
     }
 
     /**
-     * @throws Exception
      * @return stdClass
+     * @throws Exception
      */
-    public function toWillSet(): stdClass {
-        if (Obj6::validateWillSet($this->willSet))  {
-            return $this->willSet->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj6::willSet');
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'Utf8JsonWriter'} = $this->toUtf8JSONWriter();
+        return $out;
     }
 
     /**
-     * @param WillSet
-     * @return bool
+     * @param stdClass $obj
+     * @return Utf8JSONWriter
      * @throws Exception
      */
-    public static function validateWillSet(WillSet $value): bool {
-        $value->validate();
-        return true;
+    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'})
+        );
     }
 
     /**
-     * @throws Exception
-     * @return WillSet
+     * @return Utf8JSONWriter
      */
-    public function getWillSet(): WillSet {
-        if (Obj6::validateWillSet($this->willSet))  {
-            return $this->willSet;
-        }
-        throw new Exception('never get to getWillSet Obj6::willSet');
+    public static function sample(): Utf8JSONWriter {
+        return new Utf8JSONWriter(
+         Utf8JSONWriter::sampleUtf8JSONWriter()
+        );
     }
+}
+
+// This is an autogenerated file:UUID
+
+class UUID {
+    private int $uuid; // json:UUID Required
 
     /**
-     * @return WillSet
+     * @param int $uuid
      */
-    public static function sampleWillSet(): WillSet {
-        return WillSet::sample(); /*38:willSet*/
+    public function __construct(int $uuid) {
+        $this->uuid = $uuid;
     }
 
     /**
-     * @param stdClass $value
+     * @param int $value
      * @throws Exception
-     * @return With
+     * @return int
      */
-    public static function fromWith(stdClass $value): With {
-        return With::from($value); /*class*/
+    public static function fromUUID(int $value): int {
+        return $value; /*int*/
     }
 
     /**
      * @throws Exception
-     * @return stdClass
+     * @return int
      */
-    public function toWith(): stdClass {
-        if (Obj6::validateWith($this->with))  {
-            return $this->with->to(); /*class*/
+    public function toUUID(): int {
+        if (UUID::validateUUID($this->uuid))  {
+            return $this->uuid; /*int*/
         }
-        throw new Exception('never get to this Obj6::with');
+        throw new Exception('never get to this UUID::uuid');
     }
 
     /**
-     * @param With
+     * @param int
      * @return bool
      * @throws Exception
      */
-    public static function validateWith(With $value): bool {
-        $value->validate();
+    public static function validateUUID(int $value): bool {
         return true;
     }
 
     /**
      * @throws Exception
-     * @return With
+     * @return int
      */
-    public function getWith(): With {
-        if (Obj6::validateWith($this->with))  {
-            return $this->with;
+    public function getUUID(): int {
+        if (UUID::validateUUID($this->uuid))  {
+            return $this->uuid;
         }
-        throw new Exception('never get to getWith Obj6::with');
+        throw new Exception('never get to getUUID UUID::uuid');
     }
 
     /**
-     * @return With
+     * @return int
      */
-    public static function sampleWith(): With {
-        return With::sample(); /*39:with*/
+    public static function sampleUUID(): int {
+        return 31; /*31:uuid*/
     }
 
     /**
-     * @param stdClass $value
      * @throws Exception
-     * @return XorClass
+     * @return bool
      */
-    public static function fromXor(stdClass $value): XorClass {
-        return XorClass::from($value); /*class*/
+    public function validate(): bool {
+        return UUID::validateUUID($this->uuid);
     }
 
     /**
-     * @throws Exception
      * @return stdClass
+     * @throws Exception
      */
-    public function toXor(): stdClass {
-        if (Obj6::validateXor($this->xor))  {
-            return $this->xor->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj6::xor');
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'UUID'} = $this->toUUID();
+        return $out;
     }
 
     /**
-     * @param XorClass
-     * @return bool
+     * @param stdClass $obj
+     * @return UUID
      * @throws Exception
      */
-    public static function validateXor(XorClass $value): bool {
-        $value->validate();
-        return true;
+    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'})
+        );
     }
 
     /**
-     * @throws Exception
-     * @return XorClass
+     * @return UUID
      */
-    public function getXor(): XorClass {
-        if (Obj6::validateXor($this->xor))  {
-            return $this->xor;
-        }
-        throw new Exception('never get to getXor Obj6::xor');
+    public static function sample(): UUID {
+        return new UUID(
+         UUID::sampleUUID()
+        );
     }
+}
+
+// This is an autogenerated file:VarClass
+
+class VarClass {
+    private int $var; // json:var Required
 
     /**
-     * @return XorClass
+     * @param int $var
      */
-    public static function sampleXor(): XorClass {
-        return XorClass::sample(); /*40:xor*/
+    public function __construct(int $var) {
+        $this->var = $var;
     }
 
     /**
-     * @param stdClass $value
+     * @param int $value
      * @throws Exception
-     * @return XorEq
+     * @return int
      */
-    public static function fromXorEq(stdClass $value): XorEq {
-        return XorEq::from($value); /*class*/
+    public static function fromVar(int $value): int {
+        return $value; /*int*/
     }
 
     /**
      * @throws Exception
-     * @return stdClass
+     * @return int
      */
-    public function toXorEq(): stdClass {
-        if (Obj6::validateXorEq($this->xorEq))  {
-            return $this->xorEq->to(); /*class*/
+    public function toVar(): int {
+        if (VarClass::validateVar($this->var))  {
+            return $this->var; /*int*/
         }
-        throw new Exception('never get to this Obj6::xorEq');
+        throw new Exception('never get to this VarClass::var');
     }
 
     /**
-     * @param XorEq
+     * @param int
      * @return bool
      * @throws Exception
      */
-    public static function validateXorEq(XorEq $value): bool {
-        $value->validate();
+    public static function validateVar(int $value): bool {
         return true;
     }
 
     /**
      * @throws Exception
-     * @return XorEq
+     * @return int
      */
-    public function getXorEq(): XorEq {
-        if (Obj6::validateXorEq($this->xorEq))  {
-            return $this->xorEq;
+    public function getVar(): int {
+        if (VarClass::validateVar($this->var))  {
+            return $this->var;
         }
-        throw new Exception('never get to getXorEq Obj6::xorEq');
+        throw new Exception('never get to getVar VarClass::var');
     }
 
     /**
-     * @return XorEq
+     * @return int
      */
-    public static function sampleXorEq(): XorEq {
-        return XorEq::sample(); /*41:xorEq*/
+    public static function sampleVar(): int {
+        return 31; /*31:var*/
     }
 
     /**
-     * @param stdClass $value
      * @throws Exception
-     * @return Yes
+     * @return bool
      */
-    public static function fromYes(stdClass $value): Yes {
-        return Yes::from($value); /*class*/
+    public function validate(): bool {
+        return VarClass::validateVar($this->var);
     }
 
     /**
-     * @throws Exception
      * @return stdClass
+     * @throws Exception
      */
-    public function toYes(): stdClass {
-        if (Obj6::validateYes($this->yes))  {
-            return $this->yes->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj6::yes');
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'var'} = $this->toVar();
+        return $out;
     }
 
     /**
-     * @param Yes
-     * @return bool
+     * @param stdClass $obj
+     * @return VarClass
      * @throws Exception
      */
-    public static function validateYes(Yes $value): bool {
-        $value->validate();
-        return true;
+    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'})
+        );
     }
 
     /**
-     * @throws Exception
-     * @return Yes
+     * @return VarClass
      */
-    public function getYes(): Yes {
-        if (Obj6::validateYes($this->yes))  {
-            return $this->yes;
-        }
-        throw new Exception('never get to getYes Obj6::yes');
+    public static function sample(): VarClass {
+        return new VarClass(
+         VarClass::sampleVar()
+        );
     }
+}
+
+// This is an autogenerated file:Virtual
+
+class Virtual {
+    private int $virtual; // json:virtual Required
 
     /**
-     * @return Yes
+     * @param int $virtual
      */
-    public static function sampleYes(): Yes {
-        return Yes::sample(); /*42:yes*/
+    public function __construct(int $virtual) {
+        $this->virtual = $virtual;
     }
 
     /**
-     * @param stdClass $value
+     * @param int $value
      * @throws Exception
-     * @return YieldClass
+     * @return int
      */
-    public static function fromYield(stdClass $value): YieldClass {
-        return YieldClass::from($value); /*class*/
+    public static function fromVirtual(int $value): int {
+        return $value; /*int*/
     }
 
     /**
      * @throws Exception
-     * @return stdClass
+     * @return int
      */
-    public function toYield(): stdClass {
-        if (Obj6::validateYield($this->yield))  {
-            return $this->yield->to(); /*class*/
+    public function toVirtual(): int {
+        if (Virtual::validateVirtual($this->virtual))  {
+            return $this->virtual; /*int*/
         }
-        throw new Exception('never get to this Obj6::yield');
+        throw new Exception('never get to this Virtual::virtual');
     }
 
     /**
-     * @param YieldClass
+     * @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 +54259,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 +54268,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..d7fccd6 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
@@ -64,6 +64,7 @@ class Obj1 {
     And            and;             // json: "and"
     AndEq          and_eq;          // json: "and_eq"
     Any            any;             // json: "Any"
+    ArrayNode      array_node;      // json: "ArrayNode"
     As             as;              // json: "as"
     Asm            asm;             // json: "asm"
     Assert         assert;          // json: "assert"
@@ -80,6 +81,7 @@ class Obj1 {
     Bitor          bitor;           // json: "bitor"
     Bool           bool;            // json: "BOOL"
     Boolean        boolean;         // json: "boolean"
+    BooleanNode    boolean_node;    // json: "BooleanNode"
     Bycopy         bycopy;          // json: "bycopy"
     Byref          byref;           // json: "byref"
     Byte           byte;            // json: "byte"
@@ -106,8 +108,6 @@ class Obj1 {
     Convenience    convenience;     // json: "convenience"
     Convert        convert;         // json: "convert"
     Converter      converter;       // json: "converter"
-    CultureInfo    culture_info;    // json: "CultureInfo"
-    Date           date;            // json: "date"
     int            dummy;           // json: "dummy"
     Empty          empty;           // json: "_"
     Imaginery      imaginery;       // json: "_Imaginery"
@@ -132,6 +132,7 @@ class Obj1 {
             "and" : and,
             "and_eq" : and_eq,
             "Any" : any,
+            "ArrayNode" : array_node,
             "as" : as,
             "asm" : asm,
             "assert" : assert,
@@ -148,6 +149,7 @@ class Obj1 {
             "bitor" : bitor,
             "BOOL" : bool,
             "boolean" : boolean,
+            "BooleanNode" : boolean_node,
             "bycopy" : bycopy,
             "byref" : byref,
             "byte" : byte,
@@ -174,8 +176,6 @@ class Obj1 {
             "convenience" : convenience,
             "convert" : convert,
             "converter" : converter,
-            "CultureInfo" : culture_info,
-            "date" : date,
             "dummy" : dummy,
             "_" : empty,
             "_Imaginery" : imaginery,
@@ -212,6 +212,8 @@ Obj1 Obj1_from_JSON(mixed json) {
     retval.and_eq = json["and_eq"];
     if (!mappingp(json["Any"])) error("Expected object");
     retval.any = json["Any"];
+    if (!mappingp(json["ArrayNode"])) error("Expected object");
+    retval.array_node = json["ArrayNode"];
     if (!mappingp(json["as"])) error("Expected object");
     retval.as = json["as"];
     if (!mappingp(json["asm"])) error("Expected object");
@@ -244,6 +246,8 @@ Obj1 Obj1_from_JSON(mixed json) {
     retval.bool = json["BOOL"];
     if (!mappingp(json["boolean"])) error("Expected object");
     retval.boolean = json["boolean"];
+    if (!mappingp(json["BooleanNode"])) error("Expected object");
+    retval.boolean_node = json["BooleanNode"];
     if (!mappingp(json["bycopy"])) error("Expected object");
     retval.bycopy = json["bycopy"];
     if (!mappingp(json["byref"])) error("Expected object");
@@ -296,10 +300,6 @@ Obj1 Obj1_from_JSON(mixed json) {
     retval.convert = json["convert"];
     if (!mappingp(json["converter"])) error("Expected object");
     retval.converter = json["converter"];
-    if (!mappingp(json["CultureInfo"])) error("Expected object");
-    retval.culture_info = json["CultureInfo"];
-    if (!mappingp(json["date"])) error("Expected object");
-    retval.date = json["date"];
     if (!intp(json["dummy"])) error("Expected integer");
     retval.dummy = json["dummy"];
     if (!mappingp(json["_"])) error("Expected object");
@@ -460,6 +460,27 @@ Any Any_from_JSON(mixed json) {
     return retval;
 }
 
+class ArrayNode {
+    int array_node; // json: "ArrayNode"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "ArrayNode" : array_node,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+ArrayNode ArrayNode_from_JSON(mixed json) {
+    ArrayNode retval = ArrayNode();
+
+    if (!intp(json["ArrayNode"])) error("Expected integer");
+    retval.array_node = json["ArrayNode"];
+
+    return retval;
+}
+
 class As {
     int as; // json: "as"
 
@@ -796,6 +817,27 @@ Boolean Boolean_from_JSON(mixed json) {
     return retval;
 }
 
+class BooleanNode {
+    int boolean_node; // json: "BooleanNode"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "BooleanNode" : boolean_node,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+BooleanNode BooleanNode_from_JSON(mixed json) {
+    BooleanNode retval = BooleanNode();
+
+    if (!intp(json["BooleanNode"])) error("Expected integer");
+    retval.boolean_node = json["BooleanNode"];
+
+    return retval;
+}
+
 class Bycopy {
     int bycopy; // json: "bycopy"
 
@@ -1342,48 +1384,6 @@ Converter Converter_from_JSON(mixed json) {
     return retval;
 }
 
-class CultureInfo {
-    int culture_info; // json: "CultureInfo"
-
-    string encode_json() {
-        mapping(string:mixed) json = ([
-            "CultureInfo" : culture_info,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-CultureInfo CultureInfo_from_JSON(mixed json) {
-    CultureInfo retval = CultureInfo();
-
-    if (!intp(json["CultureInfo"])) error("Expected integer");
-    retval.culture_info = json["CultureInfo"];
-
-    return retval;
-}
-
-class Date {
-    int date; // json: "date"
-
-    string encode_json() {
-        mapping(string:mixed) json = ([
-            "date" : date,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-Date Date_from_JSON(mixed json) {
-    Date retval = Date();
-
-    if (!intp(json["date"])) error("Expected integer");
-    retval.date = json["date"];
-
-    return retval;
-}
-
 class Empty {
     int empty; // json: "_"
 
@@ -1679,74 +1679,76 @@ ClassClass ClassClass_from_JSON(mixed json) {
 }
 
 class Obj2 {
-    DateFormatter     date_formatter;      // json: "DateFormatter"
-    DateOnly          date_only;           // json: "DateOnly"
-    DateOnlyConverter date_only_converter; // json: "DateOnlyConverter"
-    DateParseHandling date_parse_handling; // json: "date_parse_handling"
-    DateTime          date_time;           // json: "DateTime"
-    DateTimeStyles    date_time_styles;    // json: "DateTimeStyles"
-    Debugger          debugger;            // json: "debugger"
-    Decimal           decimal;             // json: "decimal"
-    Declare           declare;             // json: "declare"
-    Decltype          decltype;            // json: "decltype"
-    DecodeString      decode_string;       // json: "decode_string"
-    Decoder           decoder;             // json: "Decoder"
-    DecodingError     decoding_error;      // json: "DecodingError"
-    Def               def;                 // json: "def"
-    Defer             defer;               // json: "defer"
-    Deinit            deinit;              // json: "deinit"
-    Del               del;                 // json: "del"
-    Delegate          delegate;            // json: "delegate"
-    Delete            delete;              // json: "delete"
-    Dict              dict;                // json: "dict"
-    Dictionary        dictionary;          // json: "dictionary"
-    DidSet            did_set;             // json: "didSet"
-    Double            double;              // json: "double"
-    int               dummy;               // json: "dummy"
-    Dynamic           dynamic;             // json: "dynamic"
-    DynamicCast       dynamic_cast;        // json: "dynamic_cast"
-    Elif              elif;                // json: "elif"
-    EncodeQuickType   encode_quick_type;   // json: "encode_quick_type"
-    Encoder           encoder;             // json: "Encoder"
-    EnumValues        enum_values;         // json: "EnumValues"
-    EqualityContract  equality_contract;   // json: "equalityContract"
-    Equatable         equatable;           // json: "Equatable"
-    Event             event;               // json: "event"
-    Except            except;              // json: "except"
-    Exception         exception;           // json: "exception"
-    Explicit          explicit;            // json: "explicit"
-    Export            export;              // json: "export"
-    Exposing          exposing;            // json: "exposing"
-    Extends           extends;             // json: "extends"
-    Extension         extension;           // json: "extension"
-    Fallthrough       fallthrough;         // json: "fallthrough"
-    False             false;               // json: "False"
-    Fileprivate       fileprivate;         // json: "fileprivate"
-    Finally           finally;             // json: "finally"
-    Fixed             fixed;               // json: "fixed"
-    FormatException   format_exception;    // json: "FormatException"
-    Friend            friend;              // json: "friend"
-    From              from;                // json: "from"
-    FromJson          from_json;           // json: "from_json"
-    Func              func;                // json: "func"
-    Get               get;                 // json: "get"
-    Go                go;                  // json: "go"
-    Goto              goto;                // json: "goto"
-    Default           obj2_default;        // json: "default"
-    Do                obj2_do;             // json: "do"
-    Else              obj2_else;           // json: "else"
-    Enum              obj2_enum;           // json: "enum"
-    Extern            obj2_extern;         // json: "extern"
-    FalseClass        obj2_false;          // json: "false"
-    Final             obj2_final;          // json: "final"
-    Float             obj2_float;          // json: "float"
-    For               obj2_for;            // json: "for"
-    Foreach           obj2_foreach;        // json: "foreach"
-    Function          obj2_function;       // json: "function"
-    Global            obj2_global;         // json: "global"
+    CultureInfo            culture_info;            // json: "CultureInfo"
+    Date                   date;                    // json: "date"
+    DateFormatter          date_formatter;          // json: "DateFormatter"
+    DateOnly               date_only;               // json: "DateOnly"
+    DateOnlyConverter      date_only_converter;     // json: "DateOnlyConverter"
+    DateParseHandling      date_parse_handling;     // json: "date_parse_handling"
+    DateTime               date_time;               // json: "DateTime"
+    DateTimeStyles         date_time_styles;        // json: "DateTimeStyles"
+    Debugger               debugger;                // json: "debugger"
+    Decimal                decimal;                 // json: "decimal"
+    Declare                declare;                 // json: "declare"
+    Decltype               decltype;                // json: "decltype"
+    DecodeString           decode_string;           // json: "decode_string"
+    Decoder                decoder;                 // json: "Decoder"
+    DecodingError          decoding_error;          // json: "DecodingError"
+    Def                    def;                     // json: "def"
+    Defer                  defer;                   // json: "defer"
+    Deinit                 deinit;                  // json: "deinit"
+    Del                    del;                     // json: "del"
+    Delegate               delegate;                // json: "delegate"
+    Delete                 delete;                  // json: "delete"
+    DeserializationFeature deserialization_feature; // json: "DeserializationFeature"
+    Dict                   dict;                    // json: "dict"
+    Dictionary             dictionary;              // json: "dictionary"
+    DidSet                 did_set;                 // json: "didSet"
+    Double                 double;                  // json: "double"
+    DoubleNode             double_node;             // json: "DoubleNode"
+    int                    dummy;                   // json: "dummy"
+    Dynamic                dynamic;                 // json: "dynamic"
+    DynamicCast            dynamic_cast;            // json: "dynamic_cast"
+    Elif                   elif;                    // json: "elif"
+    EncodeQuickType        encode_quick_type;       // json: "encode_quick_type"
+    Encoder                encoder;                 // json: "Encoder"
+    EnumValues             enum_values;             // json: "EnumValues"
+    EqualityContract       equality_contract;       // json: "equalityContract"
+    Equatable              equatable;               // json: "Equatable"
+    Event                  event;                   // json: "event"
+    Except                 except;                  // json: "except"
+    Exception              exception;               // json: "exception"
+    Explicit               explicit;                // json: "explicit"
+    Export                 export;                  // json: "export"
+    Exposing               exposing;                // json: "exposing"
+    Extends                extends;                 // json: "extends"
+    Extension              extension;               // json: "extension"
+    Fallthrough            fallthrough;             // json: "fallthrough"
+    False                  false;                   // json: "False"
+    Fileprivate            fileprivate;             // json: "fileprivate"
+    Finally                finally;                 // json: "finally"
+    Fixed                  fixed;                   // json: "fixed"
+    FormatException        format_exception;        // json: "FormatException"
+    Friend                 friend;                  // json: "friend"
+    From                   from;                    // json: "from"
+    FromJson               from_json;               // json: "from_json"
+    Func                   func;                    // json: "func"
+    Default                obj2_default;            // json: "default"
+    Do                     obj2_do;                 // json: "do"
+    Else                   obj2_else;               // json: "else"
+    Enum                   obj2_enum;               // json: "enum"
+    Extern                 obj2_extern;             // json: "extern"
+    FalseClass             obj2_false;              // json: "false"
+    Final                  obj2_final;              // json: "final"
+    Float                  obj2_float;              // json: "float"
+    For                    obj2_for;                // json: "for"
+    Foreach                obj2_foreach;            // json: "foreach"
+    Function               obj2_function;           // json: "function"
 
     string encode_json() {
         mapping(string:mixed) json = ([
+            "CultureInfo" : culture_info,
+            "date" : date,
             "DateFormatter" : date_formatter,
             "DateOnly" : date_only,
             "DateOnlyConverter" : date_only_converter,
@@ -1766,10 +1768,12 @@ class Obj2 {
             "del" : del,
             "delegate" : delegate,
             "delete" : delete,
+            "DeserializationFeature" : deserialization_feature,
             "dict" : dict,
             "dictionary" : dictionary,
             "didSet" : did_set,
             "double" : double,
+            "DoubleNode" : double_node,
             "dummy" : dummy,
             "dynamic" : dynamic,
             "dynamic_cast" : dynamic_cast,
@@ -1797,9 +1801,6 @@ class Obj2 {
             "from" : from,
             "from_json" : from_json,
             "func" : func,
-            "get" : get,
-            "go" : go,
-            "goto" : goto,
             "default" : obj2_default,
             "do" : obj2_do,
             "else" : obj2_else,
@@ -1811,7 +1812,6 @@ class Obj2 {
             "for" : obj2_for,
             "foreach" : obj2_foreach,
             "function" : obj2_function,
-            "global" : obj2_global,
         ]);
 
         return Standards.JSON.encode(json);
@@ -1821,6 +1821,10 @@ class Obj2 {
 Obj2 Obj2_from_JSON(mixed json) {
     Obj2 retval = Obj2();
 
+    if (!mappingp(json["CultureInfo"])) error("Expected object");
+    retval.culture_info = json["CultureInfo"];
+    if (!mappingp(json["date"])) error("Expected object");
+    retval.date = json["date"];
     if (!mappingp(json["DateFormatter"])) error("Expected object");
     retval.date_formatter = json["DateFormatter"];
     if (!mappingp(json["DateOnly"])) error("Expected object");
@@ -1859,6 +1863,8 @@ Obj2 Obj2_from_JSON(mixed json) {
     retval.delegate = json["delegate"];
     if (!mappingp(json["delete"])) error("Expected object");
     retval.delete = json["delete"];
+    if (!mappingp(json["DeserializationFeature"])) error("Expected object");
+    retval.deserialization_feature = json["DeserializationFeature"];
     if (!mappingp(json["dict"])) error("Expected object");
     retval.dict = json["dict"];
     if (!mappingp(json["dictionary"])) error("Expected object");
@@ -1867,6 +1873,8 @@ Obj2 Obj2_from_JSON(mixed json) {
     retval.did_set = json["didSet"];
     if (!mappingp(json["double"])) error("Expected object");
     retval.double = json["double"];
+    if (!mappingp(json["DoubleNode"])) error("Expected object");
+    retval.double_node = json["DoubleNode"];
     if (!intp(json["dummy"])) error("Expected integer");
     retval.dummy = json["dummy"];
     if (!mappingp(json["dynamic"])) error("Expected object");
@@ -1921,12 +1929,6 @@ Obj2 Obj2_from_JSON(mixed json) {
     retval.from_json = json["from_json"];
     if (!mappingp(json["func"])) error("Expected object");
     retval.func = json["func"];
-    if (!mappingp(json["get"])) error("Expected object");
-    retval.get = json["get"];
-    if (!mappingp(json["go"])) error("Expected object");
-    retval.go = json["go"];
-    if (!mappingp(json["goto"])) error("Expected object");
-    retval.goto = json["goto"];
     if (!mappingp(json["default"])) error("Expected object");
     retval.obj2_default = json["default"];
     if (!mappingp(json["do"])) error("Expected object");
@@ -1949,8 +1951,48 @@ Obj2 Obj2_from_JSON(mixed json) {
     retval.obj2_foreach = json["foreach"];
     if (!mappingp(json["function"])) error("Expected object");
     retval.obj2_function = json["function"];
-    if (!mappingp(json["global"])) error("Expected object");
-    retval.obj2_global = json["global"];
+
+    return retval;
+}
+
+class CultureInfo {
+    int culture_info; // json: "CultureInfo"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "CultureInfo" : culture_info,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+CultureInfo CultureInfo_from_JSON(mixed json) {
+    CultureInfo retval = CultureInfo();
+
+    if (!intp(json["CultureInfo"])) error("Expected integer");
+    retval.culture_info = json["CultureInfo"];
+
+    return retval;
+}
+
+class Date {
+    int date; // json: "date"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "date" : date,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Date Date_from_JSON(mixed json) {
+    Date retval = Date();
+
+    if (!intp(json["date"])) error("Expected integer");
+    retval.date = json["date"];
 
     return retval;
 }
@@ -2353,6 +2395,27 @@ Delete Delete_from_JSON(mixed json) {
     return retval;
 }
 
+class DeserializationFeature {
+    int deserialization_feature; // json: "DeserializationFeature"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "DeserializationFeature" : deserialization_feature,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+DeserializationFeature DeserializationFeature_from_JSON(mixed json) {
+    DeserializationFeature retval = DeserializationFeature();
+
+    if (!intp(json["DeserializationFeature"])) error("Expected integer");
+    retval.deserialization_feature = json["DeserializationFeature"];
+
+    return retval;
+}
+
 class Dict {
     int dict; // json: "dict"
 
@@ -2437,6 +2500,27 @@ Double Double_from_JSON(mixed json) {
     return retval;
 }
 
+class DoubleNode {
+    int double_node; // json: "DoubleNode"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "DoubleNode" : double_node,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+DoubleNode DoubleNode_from_JSON(mixed json) {
+    DoubleNode retval = DoubleNode();
+
+    if (!intp(json["DoubleNode"])) error("Expected integer");
+    retval.double_node = json["DoubleNode"];
+
+    return retval;
+}
+
 class Dynamic {
     int dynamic; // json: "dynamic"
 
@@ -2991,69 +3075,6 @@ Func Func_from_JSON(mixed json) {
     return retval;
 }
 
-class Get {
-    int get; // json: "get"
-
-    string encode_json() {
-        mapping(string:mixed) json = ([
-            "get" : get,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-Get Get_from_JSON(mixed json) {
-    Get retval = Get();
-
-    if (!intp(json["get"])) error("Expected integer");
-    retval.get = json["get"];
-
-    return retval;
-}
-
-class Go {
-    int go; // json: "go"
-
-    string encode_json() {
-        mapping(string:mixed) json = ([
-            "go" : go,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-Go Go_from_JSON(mixed json) {
-    Go retval = Go();
-
-    if (!intp(json["go"])) error("Expected integer");
-    retval.go = json["go"];
-
-    return retval;
-}
-
-class Goto {
-    int goto; // json: "goto"
-
-    string encode_json() {
-        mapping(string:mixed) json = ([
-            "goto" : goto,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-Goto Goto_from_JSON(mixed json) {
-    Goto retval = Goto();
-
-    if (!intp(json["goto"])) error("Expected integer");
-    retval.goto = json["goto"];
-
-    return retval;
-}
-
 class Default {
     int default_default; // json: "default"
 
@@ -3285,29 +3306,11 @@ Function Function_from_JSON(mixed json) {
     return retval;
 }
 
-class Global {
-    int global_global; // json: "global"
-
-    string encode_json() {
-        mapping(string:mixed) json = ([
-            "global" : global_global,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-Global Global_from_JSON(mixed json) {
-    Global retval = Global();
-
-    if (!intp(json["global"])) error("Expected integer");
-    retval.global_global = json["global"];
-
-    return retval;
-}
-
 class Obj3 {
     int                        dummy;                          // json: "dummy"
+    Get                        get;                            // json: "get"
+    Go                         go;                             // json: "go"
+    Goto                       goto;                           // json: "goto"
     Guard                      guard;                          // json: "guard"
     HasOwnProperty             has_own_property;               // json: "hasOwnProperty"
     HashCode                   hash_code;                      // json: "hashCode"
@@ -3323,6 +3326,7 @@ class Obj3 {
     Init                       init;                           // json: "init"
     Inout                      inout;                          // json: "inout"
     Instanceof                 instanceof;                     // json: "instanceof"
+    IntNode                    int_node;                       // json: "IntNode"
     Interface                  interface;                      // json: "interface"
     Internal                   internal;                       // json: "internal"
     Is                         is;                             // json: "is"
@@ -3354,6 +3358,7 @@ class Obj3 {
     Locale                     locale;                         // json: "Locale"
     Lock                       lock;                           // json: "lock"
     Long                       long;                           // json: "long"
+    LongNode                   long_node;                      // json: "LongNode"
     Map                        map;                            // json: "map"
     MapEntry                   map_entry;                      // json: "MapEntry"
     MetadataPropertyHandling   metadata_property_handling;     // json: "metadata_property_handling"
@@ -3361,12 +3366,7 @@ class Obj3 {
     Mutable                    mutable;                        // json: "mutable"
     Mutating                   mutating;                       // json: "mutating"
     Namespace                  namespace;                      // json: "namespace"
-    Native                     native;                         // json: "native"
-    New                        new;                            // json: "new"
-    Newtonsoft                 newtonsoft;                     // json: "newtonsoft"
-    Nil                        nil;                            // json: "nil"
-    No                         no;                             // json: "NO"
-    Noexcept                   noexcept;                       // json: "noexcept"
+    Global                     obj3_global;                    // json: "global"
     If                         obj3_if;                        // json: "if"
     Import                     obj3_import;                    // json: "import"
     Inline                     obj3_inline;                    // json: "inline"
@@ -3376,6 +3376,9 @@ class Obj3 {
     string encode_json() {
         mapping(string:mixed) json = ([
             "dummy" : dummy,
+            "get" : get,
+            "go" : go,
+            "goto" : goto,
             "guard" : guard,
             "hasOwnProperty" : has_own_property,
             "hashCode" : hash_code,
@@ -3391,6 +3394,7 @@ class Obj3 {
             "init" : init,
             "inout" : inout,
             "instanceof" : instanceof,
+            "IntNode" : int_node,
             "interface" : interface,
             "internal" : internal,
             "is" : is,
@@ -3422,6 +3426,7 @@ class Obj3 {
             "Locale" : locale,
             "lock" : lock,
             "long" : long,
+            "LongNode" : long_node,
             "map" : map,
             "MapEntry" : map_entry,
             "metadata_property_handling" : metadata_property_handling,
@@ -3429,12 +3434,7 @@ class Obj3 {
             "mutable" : mutable,
             "mutating" : mutating,
             "namespace" : namespace,
-            "native" : native,
-            "new" : new,
-            "newtonsoft" : newtonsoft,
-            "nil" : nil,
-            "NO" : no,
-            "noexcept" : noexcept,
+            "global" : obj3_global,
             "if" : obj3_if,
             "import" : obj3_import,
             "inline" : obj3_inline,
@@ -3451,7 +3451,13 @@ Obj3 Obj3_from_JSON(mixed json) {
 
     if (!intp(json["dummy"])) error("Expected integer");
     retval.dummy = json["dummy"];
-    if (!mappingp(json["guard"])) error("Expected object");
+    if (!mappingp(json["get"])) error("Expected object");
+    retval.get = json["get"];
+    if (!mappingp(json["go"])) error("Expected object");
+    retval.go = json["go"];
+    if (!mappingp(json["goto"])) error("Expected object");
+    retval.goto = json["goto"];
+    if (!mappingp(json["guard"])) error("Expected object");
     retval.guard = json["guard"];
     if (!mappingp(json["hasOwnProperty"])) error("Expected object");
     retval.has_own_property = json["hasOwnProperty"];
@@ -3481,6 +3487,8 @@ Obj3 Obj3_from_JSON(mixed json) {
     retval.inout = json["inout"];
     if (!mappingp(json["instanceof"])) error("Expected object");
     retval.instanceof = json["instanceof"];
+    if (!mappingp(json["IntNode"])) error("Expected object");
+    retval.int_node = json["IntNode"];
     if (!mappingp(json["interface"])) error("Expected object");
     retval.interface = json["interface"];
     if (!mappingp(json["internal"])) error("Expected object");
@@ -3543,6 +3551,8 @@ Obj3 Obj3_from_JSON(mixed json) {
     retval.lock = json["lock"];
     if (!mappingp(json["long"])) error("Expected object");
     retval.long = json["long"];
+    if (!mappingp(json["LongNode"])) error("Expected object");
+    retval.long_node = json["LongNode"];
     if (!mappingp(json["map"])) error("Expected object");
     retval.map = json["map"];
     if (!mappingp(json["MapEntry"])) error("Expected object");
@@ -3557,18 +3567,8 @@ Obj3 Obj3_from_JSON(mixed json) {
     retval.mutating = json["mutating"];
     if (!mappingp(json["namespace"])) error("Expected object");
     retval.namespace = json["namespace"];
-    if (!mappingp(json["native"])) error("Expected object");
-    retval.native = json["native"];
-    if (!mappingp(json["new"])) error("Expected object");
-    retval.new = json["new"];
-    if (!mappingp(json["newtonsoft"])) error("Expected object");
-    retval.newtonsoft = json["newtonsoft"];
-    if (!mappingp(json["nil"])) error("Expected object");
-    retval.nil = json["nil"];
-    if (!mappingp(json["NO"])) error("Expected object");
-    retval.no = json["NO"];
-    if (!mappingp(json["noexcept"])) error("Expected object");
-    retval.noexcept = json["noexcept"];
+    if (!mappingp(json["global"])) error("Expected object");
+    retval.obj3_global = json["global"];
     if (!mappingp(json["if"])) error("Expected object");
     retval.obj3_if = json["if"];
     if (!mappingp(json["import"])) error("Expected object");
@@ -3583,6 +3583,69 @@ Obj3 Obj3_from_JSON(mixed json) {
     return retval;
 }
 
+class Get {
+    int get; // json: "get"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "get" : get,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Get Get_from_JSON(mixed json) {
+    Get retval = Get();
+
+    if (!intp(json["get"])) error("Expected integer");
+    retval.get = json["get"];
+
+    return retval;
+}
+
+class Go {
+    int go; // json: "go"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "go" : go,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Go Go_from_JSON(mixed json) {
+    Go retval = Go();
+
+    if (!intp(json["go"])) error("Expected integer");
+    retval.go = json["go"];
+
+    return retval;
+}
+
+class Goto {
+    int goto; // json: "goto"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "goto" : goto,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Goto Goto_from_JSON(mixed json) {
+    Goto retval = Goto();
+
+    if (!intp(json["goto"])) error("Expected integer");
+    retval.goto = json["goto"];
+
+    return retval;
+}
+
 class Guard {
     int guard; // json: "guard"
 
@@ -3898,6 +3961,27 @@ Instanceof Instanceof_from_JSON(mixed json) {
     return retval;
 }
 
+class IntNode {
+    int int_node; // json: "IntNode"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "IntNode" : int_node,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+IntNode IntNode_from_JSON(mixed json) {
+    IntNode retval = IntNode();
+
+    if (!intp(json["IntNode"])) error("Expected integer");
+    retval.int_node = json["IntNode"];
+
+    return retval;
+}
+
 class Interface {
     int interface; // json: "interface"
 
@@ -4548,6 +4632,27 @@ Long Long_from_JSON(mixed json) {
     return retval;
 }
 
+class LongNode {
+    int long_node; // json: "LongNode"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "LongNode" : long_node,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+LongNode LongNode_from_JSON(mixed json) {
+    LongNode retval = LongNode();
+
+    if (!intp(json["LongNode"])) error("Expected integer");
+    retval.long_node = json["LongNode"];
+
+    return retval;
+}
+
 class Map {
     int map; // json: "map"
 
@@ -4695,128 +4800,23 @@ Namespace Namespace_from_JSON(mixed json) {
     return retval;
 }
 
-class Native {
-    int native; // json: "native"
-
-    string encode_json() {
-        mapping(string:mixed) json = ([
-            "native" : native,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-Native Native_from_JSON(mixed json) {
-    Native retval = Native();
-
-    if (!intp(json["native"])) error("Expected integer");
-    retval.native = json["native"];
-
-    return retval;
-}
-
-class New {
-    int new; // json: "new"
-
-    string encode_json() {
-        mapping(string:mixed) json = ([
-            "new" : new,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-New New_from_JSON(mixed json) {
-    New retval = New();
-
-    if (!intp(json["new"])) error("Expected integer");
-    retval.new = json["new"];
-
-    return retval;
-}
-
-class Newtonsoft {
-    int newtonsoft; // json: "newtonsoft"
-
-    string encode_json() {
-        mapping(string:mixed) json = ([
-            "newtonsoft" : newtonsoft,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-Newtonsoft Newtonsoft_from_JSON(mixed json) {
-    Newtonsoft retval = Newtonsoft();
-
-    if (!intp(json["newtonsoft"])) error("Expected integer");
-    retval.newtonsoft = json["newtonsoft"];
-
-    return retval;
-}
-
-class Nil {
-    int nil; // json: "nil"
-
-    string encode_json() {
-        mapping(string:mixed) json = ([
-            "nil" : nil,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-Nil Nil_from_JSON(mixed json) {
-    Nil retval = Nil();
-
-    if (!intp(json["nil"])) error("Expected integer");
-    retval.nil = json["nil"];
-
-    return retval;
-}
-
-class No {
-    int no; // json: "NO"
-
-    string encode_json() {
-        mapping(string:mixed) json = ([
-            "NO" : no,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-No No_from_JSON(mixed json) {
-    No retval = No();
-
-    if (!intp(json["NO"])) error("Expected integer");
-    retval.no = json["NO"];
-
-    return retval;
-}
-
-class Noexcept {
-    int noexcept; // json: "noexcept"
+class Global {
+    int global_global; // json: "global"
 
     string encode_json() {
         mapping(string:mixed) json = ([
-            "noexcept" : noexcept,
+            "global" : global_global,
         ]);
 
         return Standards.JSON.encode(json);
     }
 }
 
-Noexcept Noexcept_from_JSON(mixed json) {
-    Noexcept retval = Noexcept();
+Global Global_from_JSON(mixed json) {
+    Global retval = Global();
 
-    if (!intp(json["noexcept"])) error("Expected integer");
-    retval.noexcept = json["noexcept"];
+    if (!intp(json["global"])) error("Expected integer");
+    retval.global_global = json["global"];
 
     return retval;
 }
@@ -4928,7 +4928,13 @@ Lambda Lambda_from_JSON(mixed json) {
 
 class Obj4 {
     int             dummy;            // json: "dummy"
+    Native          native;           // json: "native"
+    New             new;              // json: "new"
+    Newtonsoft      newtonsoft;       // json: "newtonsoft"
+    Nil             nil;              // json: "nil"
+    No              no;               // json: "NO"
     NoSuchMethod    no_such_method;   // json: "noSuchMethod"
+    Noexcept        noexcept;         // json: "noexcept"
     Nonatomic       nonatomic;        // json: "nonatomic"
     None            none;             // json: "None"
     Nonlocal        nonlocal;         // json: "nonlocal"
@@ -4939,6 +4945,7 @@ class Obj4 {
     NsObject        ns_object;        // json: "NSObject"
     NsString        ns_string;        // json: "NSString"
     Null            null;             // json: "NULL"
+    NullNode        null_node;        // json: "NullNode"
     Nullptr         nullptr;          // json: "nullptr"
     Number          number;           // json: "number"
     NoneClass       obj4_none;        // json: "none"
@@ -4949,8 +4956,8 @@ class Obj4 {
     Protected       obj4_protected;   // json: "protected"
     ProtocolClass   obj4_protocol;    // json: "protocol"
     Public          obj4_public;      // json: "public"
-    Return          obj4_return;      // json: "return"
     ObjectMapper    object_mapper;    // json: "ObjectMapper"
+    ObjectNode      object_node;      // json: "ObjectNode"
     Of              of;               // json: "of"
     Oneway          oneway;           // json: "oneway"
     Open            open;             // json: "open"
@@ -4985,18 +4992,17 @@ class Obj4 {
     Restrict        restrict;         // json: "restrict"
     Retain          retain;           // json: "retain"
     Rethrows        rethrows;         // json: "rethrows"
-    Right           right;            // json: "right"
-    RuntimeType     runtime_type;     // json: "runtimeType"
-    S               s;                // json: "s"
-    Sbyte           sbyte;            // json: "sbyte"
-    Sealed          sealed;           // json: "sealed"
-    Sel             sel;              // json: "SEL"
-    Select          select;           // json: "select"
 
     string encode_json() {
         mapping(string:mixed) json = ([
             "dummy" : dummy,
+            "native" : native,
+            "new" : new,
+            "newtonsoft" : newtonsoft,
+            "nil" : nil,
+            "NO" : no,
             "noSuchMethod" : no_such_method,
+            "noexcept" : noexcept,
             "nonatomic" : nonatomic,
             "None" : none,
             "nonlocal" : nonlocal,
@@ -5007,6 +5013,7 @@ class Obj4 {
             "NSObject" : ns_object,
             "NSString" : ns_string,
             "NULL" : null,
+            "NullNode" : null_node,
             "nullptr" : nullptr,
             "number" : number,
             "none" : obj4_none,
@@ -5017,8 +5024,8 @@ class Obj4 {
             "protected" : obj4_protected,
             "protocol" : obj4_protocol,
             "public" : obj4_public,
-            "return" : obj4_return,
             "ObjectMapper" : object_mapper,
+            "ObjectNode" : object_node,
             "of" : of,
             "oneway" : oneway,
             "open" : open,
@@ -5053,13 +5060,6 @@ class Obj4 {
             "restrict" : restrict,
             "retain" : retain,
             "rethrows" : rethrows,
-            "right" : right,
-            "runtimeType" : runtime_type,
-            "s" : s,
-            "sbyte" : sbyte,
-            "sealed" : sealed,
-            "SEL" : sel,
-            "select" : select,
         ]);
 
         return Standards.JSON.encode(json);
@@ -5071,8 +5071,20 @@ Obj4 Obj4_from_JSON(mixed json) {
 
     if (!intp(json["dummy"])) error("Expected integer");
     retval.dummy = json["dummy"];
+    if (!mappingp(json["native"])) error("Expected object");
+    retval.native = json["native"];
+    if (!mappingp(json["new"])) error("Expected object");
+    retval.new = json["new"];
+    if (!mappingp(json["newtonsoft"])) error("Expected object");
+    retval.newtonsoft = json["newtonsoft"];
+    if (!mappingp(json["nil"])) error("Expected object");
+    retval.nil = json["nil"];
+    if (!mappingp(json["NO"])) error("Expected object");
+    retval.no = json["NO"];
     if (!mappingp(json["noSuchMethod"])) error("Expected object");
     retval.no_such_method = json["noSuchMethod"];
+    if (!mappingp(json["noexcept"])) error("Expected object");
+    retval.noexcept = json["noexcept"];
     if (!mappingp(json["nonatomic"])) error("Expected object");
     retval.nonatomic = json["nonatomic"];
     if (!mappingp(json["None"])) error("Expected object");
@@ -5093,6 +5105,8 @@ Obj4 Obj4_from_JSON(mixed json) {
     retval.ns_string = json["NSString"];
     if (!mappingp(json["NULL"])) error("Expected object");
     retval.null = json["NULL"];
+    if (!mappingp(json["NullNode"])) error("Expected object");
+    retval.null_node = json["NullNode"];
     if (!mappingp(json["nullptr"])) error("Expected object");
     retval.nullptr = json["nullptr"];
     if (!mappingp(json["number"])) error("Expected object");
@@ -5113,10 +5127,10 @@ Obj4 Obj4_from_JSON(mixed json) {
     retval.obj4_protocol = json["protocol"];
     if (!mappingp(json["public"])) error("Expected object");
     retval.obj4_public = json["public"];
-    if (!mappingp(json["return"])) error("Expected object");
-    retval.obj4_return = json["return"];
     if (!mappingp(json["ObjectMapper"])) error("Expected object");
     retval.object_mapper = json["ObjectMapper"];
+    if (!mappingp(json["ObjectNode"])) error("Expected object");
+    retval.object_node = json["ObjectNode"];
     if (!mappingp(json["of"])) error("Expected object");
     retval.of = json["of"];
     if (!mappingp(json["oneway"])) error("Expected object");
@@ -5185,20 +5199,111 @@ Obj4 Obj4_from_JSON(mixed json) {
     retval.retain = json["retain"];
     if (!mappingp(json["rethrows"])) error("Expected object");
     retval.rethrows = json["rethrows"];
-    if (!mappingp(json["right"])) error("Expected object");
-    retval.right = json["right"];
-    if (!mappingp(json["runtimeType"])) error("Expected object");
-    retval.runtime_type = json["runtimeType"];
-    if (!mappingp(json["s"])) error("Expected object");
-    retval.s = json["s"];
-    if (!mappingp(json["sbyte"])) error("Expected object");
-    retval.sbyte = json["sbyte"];
-    if (!mappingp(json["sealed"])) error("Expected object");
-    retval.sealed = json["sealed"];
-    if (!mappingp(json["SEL"])) error("Expected object");
-    retval.sel = json["SEL"];
-    if (!mappingp(json["select"])) error("Expected object");
-    retval.select = json["select"];
+
+    return retval;
+}
+
+class Native {
+    int native; // json: "native"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "native" : native,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Native Native_from_JSON(mixed json) {
+    Native retval = Native();
+
+    if (!intp(json["native"])) error("Expected integer");
+    retval.native = json["native"];
+
+    return retval;
+}
+
+class New {
+    int new; // json: "new"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "new" : new,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+New New_from_JSON(mixed json) {
+    New retval = New();
+
+    if (!intp(json["new"])) error("Expected integer");
+    retval.new = json["new"];
+
+    return retval;
+}
+
+class Newtonsoft {
+    int newtonsoft; // json: "newtonsoft"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "newtonsoft" : newtonsoft,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Newtonsoft Newtonsoft_from_JSON(mixed json) {
+    Newtonsoft retval = Newtonsoft();
+
+    if (!intp(json["newtonsoft"])) error("Expected integer");
+    retval.newtonsoft = json["newtonsoft"];
+
+    return retval;
+}
+
+class Nil {
+    int nil; // json: "nil"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "nil" : nil,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Nil Nil_from_JSON(mixed json) {
+    Nil retval = Nil();
+
+    if (!intp(json["nil"])) error("Expected integer");
+    retval.nil = json["nil"];
+
+    return retval;
+}
+
+class No {
+    int no; // json: "NO"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "NO" : no,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+No No_from_JSON(mixed json) {
+    No retval = No();
+
+    if (!intp(json["NO"])) error("Expected integer");
+    retval.no = json["NO"];
 
     return retval;
 }
@@ -5224,6 +5329,27 @@ NoSuchMethod NoSuchMethod_from_JSON(mixed json) {
     return retval;
 }
 
+class Noexcept {
+    int noexcept; // json: "noexcept"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "noexcept" : noexcept,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Noexcept Noexcept_from_JSON(mixed json) {
+    Noexcept retval = Noexcept();
+
+    if (!intp(json["noexcept"])) error("Expected integer");
+    retval.noexcept = json["noexcept"];
+
+    return retval;
+}
+
 class Nonatomic {
     int nonatomic; // json: "nonatomic"
 
@@ -5434,6 +5560,27 @@ Null Null_from_JSON(mixed json) {
     return retval;
 }
 
+class NullNode {
+    int null_node; // json: "NullNode"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "NullNode" : null_node,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+NullNode NullNode_from_JSON(mixed json) {
+    NullNode retval = NullNode();
+
+    if (!intp(json["NullNode"])) error("Expected integer");
+    retval.null_node = json["NullNode"];
+
+    return retval;
+}
+
 class Nullptr {
     int nullptr; // json: "nullptr"
 
@@ -5644,44 +5791,44 @@ Public Public_from_JSON(mixed json) {
     return retval;
 }
 
-class Return {
-    int return_return; // json: "return"
+class ObjectMapper {
+    int object_mapper; // json: "ObjectMapper"
 
     string encode_json() {
         mapping(string:mixed) json = ([
-            "return" : return_return,
+            "ObjectMapper" : object_mapper,
         ]);
 
         return Standards.JSON.encode(json);
     }
 }
 
-Return Return_from_JSON(mixed json) {
-    Return retval = Return();
+ObjectMapper ObjectMapper_from_JSON(mixed json) {
+    ObjectMapper retval = ObjectMapper();
 
-    if (!intp(json["return"])) error("Expected integer");
-    retval.return_return = json["return"];
+    if (!intp(json["ObjectMapper"])) error("Expected integer");
+    retval.object_mapper = json["ObjectMapper"];
 
     return retval;
 }
 
-class ObjectMapper {
-    int object_mapper; // json: "ObjectMapper"
+class ObjectNode {
+    int object_node; // json: "ObjectNode"
 
     string encode_json() {
         mapping(string:mixed) json = ([
-            "ObjectMapper" : object_mapper,
+            "ObjectNode" : object_node,
         ]);
 
         return Standards.JSON.encode(json);
     }
 }
 
-ObjectMapper ObjectMapper_from_JSON(mixed json) {
-    ObjectMapper retval = ObjectMapper();
+ObjectNode ObjectNode_from_JSON(mixed json) {
+    ObjectNode retval = ObjectNode();
 
-    if (!intp(json["ObjectMapper"])) error("Expected integer");
-    retval.object_mapper = json["ObjectMapper"];
+    if (!intp(json["ObjectNode"])) error("Expected integer");
+    retval.object_node = json["ObjectNode"];
 
     return retval;
 }
@@ -6399,298 +6546,153 @@ Rethrows Rethrows_from_JSON(mixed json) {
     return retval;
 }
 
-class Right {
-    int right; // json: "right"
+class Obj5 {
+    int                  dummy;                 // json: "dummy"
+    Return               obj5_return;           // json: "return"
+    SelfClass            obj5_self;             // json: "self"
+    Static               obj5_static;           // json: "static"
+    String               obj5_string;           // json: "string"
+    Switch               obj5_switch;           // json: "switch"
+    TrueClass            obj5_true;             // json: "true"
+    TypeClass            obj5_type;             // json: "type"
+    Typedef              obj5_typedef;          // json: "typedef"
+    Typeof               obj5_typeof;           // json: "typeof"
+    Right                right;                 // json: "right"
+    RuntimeType          runtime_type;          // json: "runtimeType"
+    S                    s;                     // json: "s"
+    Sbyte                sbyte;                 // json: "sbyte"
+    Sealed               sealed;                // json: "sealed"
+    Sel                  sel;                   // json: "SEL"
+    Select               select;                // json: "select"
+    Self                 self;                  // json: "Self"
+    Sendable             sendable;              // json: "Sendable"
+    SerializationFeature serialization_feature; // json: "SerializationFeature"
+    Serialize            serialize;             // json: "serialize"
+    SerializerProvider   serializer_provider;   // json: "SerializerProvider"
+    Set                  set;                   // json: "set"
+    Short                short;                 // json: "short"
+    Signed               signed;                // json: "signed"
+    SimpleModule         simple_module;         // json: "SimpleModule"
+    Sizeof               sizeof;                // json: "sizeof"
+    Stackalloc           stackalloc;            // json: "stackalloc"
+    StandardsClass       standards;             // json: "Standards"
+    StaticAssert         static_assert;         // json: "static_assert"
+    StaticCast           static_cast;           // json: "static_cast"
+    StdDeserializer      std_deserializer;      // json: "StdDeserializer"
+    StdSerializer        std_serializer;        // json: "StdSerializer"
+    Strictfp             strictfp;              // json: "strictfp"
+    Struct               struct;                // json: "struct"
+    Subscript            subscript;             // json: "subscript"
+    Super                super;                 // json: "super"
+    Symbol               symbol;                // json: "symbol"
+    Synchronized         synchronized;          // json: "synchronized"
+    System               system;                // json: "system"
+    Template             template;              // json: "template"
+    TextNode             text_node;             // json: "TextNode"
+    Then                 then;                  // json: "then"
+    This                 this;                  // json: "this"
+    ThreadLocal          thread_local;          // json: "thread_local"
+    Throw                throw;                 // json: "throw"
+    Throws               throws;                // json: "throws"
+    TimeOnly             time_only;             // json: "TimeOnly"
+    TimeOnlyConverter    time_only_converter;   // json: "TimeOnlyConverter"
+    TimeZone             time_zone;             // json: "TimeZone"
+    ToJson               to_json;               // json: "to_json"
+    ToString             to_string;             // json: "toString"
+    TopLevelClass        top_level;             // json: "top_level"
+    Transient            transient;             // json: "transient"
+    True                 true;                  // json: "True"
+    Try                  try;                   // json: "try"
+    Type                 type;                  // json: "Type"
+    Typealias            typealias;             // json: "typealias"
+    Typeid               typeid;                // json: "typeid"
+    Typename             typename;              // json: "typename"
+    Uint                 uint;                  // json: "uint"
+    Ulong                ulong;                 // json: "ulong"
+    Unchecked            unchecked;             // json: "unchecked"
+    Undefined            undefined;             // json: "undefined"
+    Union                union;                 // json: "union"
 
     string encode_json() {
         mapping(string:mixed) json = ([
+            "dummy" : dummy,
+            "return" : obj5_return,
+            "self" : obj5_self,
+            "static" : obj5_static,
+            "string" : obj5_string,
+            "switch" : obj5_switch,
+            "true" : obj5_true,
+            "type" : obj5_type,
+            "typedef" : obj5_typedef,
+            "typeof" : obj5_typeof,
             "right" : right,
+            "runtimeType" : runtime_type,
+            "s" : s,
+            "sbyte" : sbyte,
+            "sealed" : sealed,
+            "SEL" : sel,
+            "select" : select,
+            "Self" : self,
+            "Sendable" : sendable,
+            "SerializationFeature" : serialization_feature,
+            "serialize" : serialize,
+            "SerializerProvider" : serializer_provider,
+            "set" : set,
+            "short" : short,
+            "signed" : signed,
+            "SimpleModule" : simple_module,
+            "sizeof" : sizeof,
+            "stackalloc" : stackalloc,
+            "Standards" : standards,
+            "static_assert" : static_assert,
+            "static_cast" : static_cast,
+            "StdDeserializer" : std_deserializer,
+            "StdSerializer" : std_serializer,
+            "strictfp" : strictfp,
+            "struct" : struct,
+            "subscript" : subscript,
+            "super" : super,
+            "symbol" : symbol,
+            "synchronized" : synchronized,
+            "system" : system,
+            "template" : template,
+            "TextNode" : text_node,
+            "then" : then,
+            "this" : this,
+            "thread_local" : thread_local,
+            "throw" : throw,
+            "throws" : throws,
+            "TimeOnly" : time_only,
+            "TimeOnlyConverter" : time_only_converter,
+            "TimeZone" : time_zone,
+            "to_json" : to_json,
+            "toString" : to_string,
+            "top_level" : top_level,
+            "transient" : transient,
+            "True" : true,
+            "try" : try,
+            "Type" : type,
+            "typealias" : typealias,
+            "typeid" : typeid,
+            "typename" : typename,
+            "uint" : uint,
+            "ulong" : ulong,
+            "unchecked" : unchecked,
+            "undefined" : undefined,
+            "union" : union,
         ]);
 
         return Standards.JSON.encode(json);
     }
 }
 
-Right Right_from_JSON(mixed json) {
-    Right retval = Right();
-
-    if (!intp(json["right"])) error("Expected integer");
-    retval.right = json["right"];
-
-    return retval;
-}
-
-class RuntimeType {
-    int runtime_type; // json: "runtimeType"
-
-    string encode_json() {
-        mapping(string:mixed) json = ([
-            "runtimeType" : runtime_type,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-RuntimeType RuntimeType_from_JSON(mixed json) {
-    RuntimeType retval = RuntimeType();
-
-    if (!intp(json["runtimeType"])) error("Expected integer");
-    retval.runtime_type = json["runtimeType"];
-
-    return retval;
-}
-
-class S {
-    int s; // json: "s"
-
-    string encode_json() {
-        mapping(string:mixed) json = ([
-            "s" : s,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-S S_from_JSON(mixed json) {
-    S retval = S();
-
-    if (!intp(json["s"])) error("Expected integer");
-    retval.s = json["s"];
-
-    return retval;
-}
-
-class Sbyte {
-    int sbyte; // json: "sbyte"
-
-    string encode_json() {
-        mapping(string:mixed) json = ([
-            "sbyte" : sbyte,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-Sbyte Sbyte_from_JSON(mixed json) {
-    Sbyte retval = Sbyte();
-
-    if (!intp(json["sbyte"])) error("Expected integer");
-    retval.sbyte = json["sbyte"];
-
-    return retval;
-}
-
-class Sealed {
-    int sealed; // json: "sealed"
-
-    string encode_json() {
-        mapping(string:mixed) json = ([
-            "sealed" : sealed,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-Sealed Sealed_from_JSON(mixed json) {
-    Sealed retval = Sealed();
-
-    if (!intp(json["sealed"])) error("Expected integer");
-    retval.sealed = json["sealed"];
-
-    return retval;
-}
-
-class Sel {
-    int sel; // json: "SEL"
-
-    string encode_json() {
-        mapping(string:mixed) json = ([
-            "SEL" : sel,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-Sel Sel_from_JSON(mixed json) {
-    Sel retval = Sel();
-
-    if (!intp(json["SEL"])) error("Expected integer");
-    retval.sel = json["SEL"];
-
-    return retval;
-}
-
-class Select {
-    int select; // json: "select"
-
-    string encode_json() {
-        mapping(string:mixed) json = ([
-            "select" : select,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-Select Select_from_JSON(mixed json) {
-    Select retval = Select();
-
-    if (!intp(json["select"])) error("Expected integer");
-    retval.select = json["select"];
-
-    return retval;
-}
-
-class Obj5 {
-    int                dummy;               // json: "dummy"
-    SelfClass          obj5_self;           // json: "self"
-    Static             obj5_static;         // json: "static"
-    String             obj5_string;         // json: "string"
-    Switch             obj5_switch;         // json: "switch"
-    TrueClass          obj5_true;           // json: "true"
-    TypeClass          obj5_type;           // json: "type"
-    Typedef            obj5_typedef;        // json: "typedef"
-    Typeof             obj5_typeof;         // json: "typeof"
-    Self               self;                // json: "Self"
-    Sendable           sendable;            // json: "Sendable"
-    Serialize          serialize;           // json: "serialize"
-    SerializerProvider serializer_provider; // json: "SerializerProvider"
-    Set                set;                 // json: "set"
-    Short              short;               // json: "short"
-    Signed             signed;              // json: "signed"
-    SimpleModule       simple_module;       // json: "SimpleModule"
-    Sizeof             sizeof;              // json: "sizeof"
-    Stackalloc         stackalloc;          // json: "stackalloc"
-    StandardsClass     standards;           // json: "Standards"
-    StaticAssert       static_assert;       // json: "static_assert"
-    StaticCast         static_cast;         // json: "static_cast"
-    StdDeserializer    std_deserializer;    // json: "StdDeserializer"
-    StdSerializer      std_serializer;      // json: "StdSerializer"
-    Strictfp           strictfp;            // json: "strictfp"
-    Struct             struct;              // json: "struct"
-    Subscript          subscript;           // json: "subscript"
-    Super              super;               // json: "super"
-    Symbol             symbol;              // json: "symbol"
-    Synchronized       synchronized;        // json: "synchronized"
-    System             system;              // json: "system"
-    Template           template;            // json: "template"
-    Then               then;                // json: "then"
-    This               this;                // json: "this"
-    ThreadLocal        thread_local;        // json: "thread_local"
-    Throw              throw;               // json: "throw"
-    Throws             throws;              // json: "throws"
-    TimeOnly           time_only;           // json: "TimeOnly"
-    TimeOnlyConverter  time_only_converter; // json: "TimeOnlyConverter"
-    TimeZone           time_zone;           // json: "TimeZone"
-    ToJson             to_json;             // json: "to_json"
-    ToString           to_string;           // json: "toString"
-    TopLevelClass      top_level;           // json: "top_level"
-    Transient          transient;           // json: "transient"
-    True               true;                // json: "True"
-    Try                try;                 // json: "try"
-    Type               type;                // json: "Type"
-    Typealias          typealias;           // json: "typealias"
-    Typeid             typeid;              // json: "typeid"
-    Typename           typename;            // json: "typename"
-    Uint               uint;                // json: "uint"
-    Ulong              ulong;               // json: "ulong"
-    Unchecked          unchecked;           // json: "unchecked"
-    Undefined          undefined;           // json: "undefined"
-    Union              union;               // json: "union"
-    Unowned            unowned;             // json: "unowned"
-    Unsafe             unsafe;              // json: "unsafe"
-    Unsigned           unsigned;            // json: "unsigned"
-    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,
-            "self" : obj5_self,
-            "static" : obj5_static,
-            "string" : obj5_string,
-            "switch" : obj5_switch,
-            "true" : obj5_true,
-            "type" : obj5_type,
-            "typedef" : obj5_typedef,
-            "typeof" : obj5_typeof,
-            "Self" : self,
-            "Sendable" : sendable,
-            "serialize" : serialize,
-            "SerializerProvider" : serializer_provider,
-            "set" : set,
-            "short" : short,
-            "signed" : signed,
-            "SimpleModule" : simple_module,
-            "sizeof" : sizeof,
-            "stackalloc" : stackalloc,
-            "Standards" : standards,
-            "static_assert" : static_assert,
-            "static_cast" : static_cast,
-            "StdDeserializer" : std_deserializer,
-            "StdSerializer" : std_serializer,
-            "strictfp" : strictfp,
-            "struct" : struct,
-            "subscript" : subscript,
-            "super" : super,
-            "symbol" : symbol,
-            "synchronized" : synchronized,
-            "system" : system,
-            "template" : template,
-            "then" : then,
-            "this" : this,
-            "thread_local" : thread_local,
-            "throw" : throw,
-            "throws" : throws,
-            "TimeOnly" : time_only,
-            "TimeOnlyConverter" : time_only_converter,
-            "TimeZone" : time_zone,
-            "to_json" : to_json,
-            "toString" : to_string,
-            "top_level" : top_level,
-            "transient" : transient,
-            "True" : true,
-            "try" : try,
-            "Type" : type,
-            "typealias" : typealias,
-            "typeid" : typeid,
-            "typename" : typename,
-            "uint" : uint,
-            "ulong" : ulong,
-            "unchecked" : unchecked,
-            "undefined" : undefined,
-            "union" : union,
-            "unowned" : unowned,
-            "unsafe" : unsafe,
-            "unsigned" : unsigned,
-            "ushort" : ushort,
-            "using" : using,
-            "Utf8JsonReader" : utf8_json_reader,
-            "Utf8JsonWriter" : utf8_json_writer,
-            "UUID" : uuid,
-            "var" : var,
-            "virtual" : virtual,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-Obj5 Obj5_from_JSON(mixed json) {
-    Obj5 retval = Obj5();
+Obj5 Obj5_from_JSON(mixed json) {
+    Obj5 retval = Obj5();
 
     if (!intp(json["dummy"])) error("Expected integer");
     retval.dummy = json["dummy"];
+    if (!mappingp(json["return"])) error("Expected object");
+    retval.obj5_return = json["return"];
     if (!mappingp(json["self"])) error("Expected object");
     retval.obj5_self = json["self"];
     if (!mappingp(json["static"])) error("Expected object");
@@ -6707,10 +6709,26 @@ 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["right"])) error("Expected object");
+    retval.right = json["right"];
+    if (!mappingp(json["runtimeType"])) error("Expected object");
+    retval.runtime_type = json["runtimeType"];
+    if (!mappingp(json["s"])) error("Expected object");
+    retval.s = json["s"];
+    if (!mappingp(json["sbyte"])) error("Expected object");
+    retval.sbyte = json["sbyte"];
+    if (!mappingp(json["sealed"])) error("Expected object");
+    retval.sealed = json["sealed"];
+    if (!mappingp(json["SEL"])) error("Expected object");
+    retval.sel = json["SEL"];
+    if (!mappingp(json["select"])) error("Expected object");
+    retval.select = json["select"];
     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["SerializationFeature"])) error("Expected object");
+    retval.serialization_feature = json["SerializationFeature"];
     if (!mappingp(json["serialize"])) error("Expected object");
     retval.serialize = json["serialize"];
     if (!mappingp(json["SerializerProvider"])) error("Expected object");
@@ -6753,6 +6771,8 @@ Obj5 Obj5_from_JSON(mixed json) {
     retval.system = json["system"];
     if (!mappingp(json["template"])) error("Expected object");
     retval.template = json["template"];
+    if (!mappingp(json["TextNode"])) error("Expected object");
+    retval.text_node = json["TextNode"];
     if (!mappingp(json["then"])) error("Expected object");
     retval.then = json["then"];
     if (!mappingp(json["this"])) error("Expected object");
@@ -6799,26 +6819,27 @@ Obj5 Obj5_from_JSON(mixed json) {
     retval.undefined = json["undefined"];
     if (!mappingp(json["union"])) error("Expected object");
     retval.union = json["union"];
-    if (!mappingp(json["unowned"])) error("Expected object");
-    retval.unowned = json["unowned"];
-    if (!mappingp(json["unsafe"])) error("Expected object");
-    retval.unsafe = json["unsafe"];
-    if (!mappingp(json["unsigned"])) error("Expected object");
-    retval.unsigned = json["unsigned"];
-    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 Return {
+    int return_return; // json: "return"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "return" : return_return,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Return Return_from_JSON(mixed json) {
+    Return retval = Return();
+
+    if (!intp(json["return"])) error("Expected integer");
+    retval.return_return = json["return"];
 
     return retval;
 }
@@ -6991,6 +7012,153 @@ Typeof Typeof_from_JSON(mixed json) {
     return retval;
 }
 
+class Right {
+    int right; // json: "right"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "right" : right,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Right Right_from_JSON(mixed json) {
+    Right retval = Right();
+
+    if (!intp(json["right"])) error("Expected integer");
+    retval.right = json["right"];
+
+    return retval;
+}
+
+class RuntimeType {
+    int runtime_type; // json: "runtimeType"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "runtimeType" : runtime_type,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+RuntimeType RuntimeType_from_JSON(mixed json) {
+    RuntimeType retval = RuntimeType();
+
+    if (!intp(json["runtimeType"])) error("Expected integer");
+    retval.runtime_type = json["runtimeType"];
+
+    return retval;
+}
+
+class S {
+    int s; // json: "s"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "s" : s,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+S S_from_JSON(mixed json) {
+    S retval = S();
+
+    if (!intp(json["s"])) error("Expected integer");
+    retval.s = json["s"];
+
+    return retval;
+}
+
+class Sbyte {
+    int sbyte; // json: "sbyte"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "sbyte" : sbyte,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Sbyte Sbyte_from_JSON(mixed json) {
+    Sbyte retval = Sbyte();
+
+    if (!intp(json["sbyte"])) error("Expected integer");
+    retval.sbyte = json["sbyte"];
+
+    return retval;
+}
+
+class Sealed {
+    int sealed; // json: "sealed"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "sealed" : sealed,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Sealed Sealed_from_JSON(mixed json) {
+    Sealed retval = Sealed();
+
+    if (!intp(json["sealed"])) error("Expected integer");
+    retval.sealed = json["sealed"];
+
+    return retval;
+}
+
+class Sel {
+    int sel; // json: "SEL"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "SEL" : sel,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Sel Sel_from_JSON(mixed json) {
+    Sel retval = Sel();
+
+    if (!intp(json["SEL"])) error("Expected integer");
+    retval.sel = json["SEL"];
+
+    return retval;
+}
+
+class Select {
+    int select; // json: "select"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "select" : select,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Select Select_from_JSON(mixed json) {
+    Select retval = Select();
+
+    if (!intp(json["select"])) error("Expected integer");
+    retval.select = json["select"];
+
+    return retval;
+}
+
 class Self {
     int self; // json: "Self"
 
@@ -7033,6 +7201,27 @@ Sendable Sendable_from_JSON(mixed json) {
     return retval;
 }
 
+class SerializationFeature {
+    int serialization_feature; // json: "SerializationFeature"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "SerializationFeature" : serialization_feature,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+SerializationFeature SerializationFeature_from_JSON(mixed json) {
+    SerializationFeature retval = SerializationFeature();
+
+    if (!intp(json["SerializationFeature"])) error("Expected integer");
+    retval.serialization_feature = json["SerializationFeature"];
+
+    return retval;
+}
+
 class Serialize {
     int serialize; // json: "serialize"
 
@@ -7474,6 +7663,27 @@ Template Template_from_JSON(mixed json) {
     return retval;
 }
 
+class TextNode {
+    int text_node; // json: "TextNode"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "TextNode" : text_node,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+TextNode TextNode_from_JSON(mixed json) {
+    TextNode retval = TextNode();
+
+    if (!intp(json["TextNode"])) error("Expected integer");
+    retval.text_node = json["TextNode"];
+
+    return retval;
+}
+
 class Then {
     int then; // json: "then"
 
@@ -7957,6 +8167,157 @@ Union Union_from_JSON(mixed json) {
     return retval;
 }
 
+class Obj6 {
+    int            dummy;            // json: "dummy"
+    Void           obj6_void;        // json: "void"
+    While          obj6_while;       // json: "while"
+    Unowned        unowned;          // json: "unowned"
+    Unsafe         unsafe;           // json: "unsafe"
+    Unsigned       unsigned;         // json: "unsigned"
+    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"
+    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,
+            "unowned" : unowned,
+            "unsafe" : unsafe,
+            "unsigned" : unsigned,
+            "ushort" : ushort,
+            "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);
+    }
+}
+
+Obj6 Obj6_from_JSON(mixed json) {
+    Obj6 retval = Obj6();
+
+    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["unowned"])) error("Expected object");
+    retval.unowned = json["unowned"];
+    if (!mappingp(json["unsafe"])) error("Expected object");
+    retval.unsafe = json["unsafe"];
+    if (!mappingp(json["unsigned"])) error("Expected object");
+    retval.unsigned = json["unsigned"];
+    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"];
+    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 Void {
+    int void_void; // json: "void"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "void" : void_void,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Void Void_from_JSON(mixed json) {
+    Void retval = Void();
+
+    if (!intp(json["void"])) error("Expected integer");
+    retval.void_void = json["void"];
+
+    return retval;
+}
+
+class While {
+    int while_while; // json: "while"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "while" : while_while,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+While While_from_JSON(mixed json) {
+    While retval = While();
+
+    if (!intp(json["while"])) error("Expected integer");
+    retval.while_while = json["while"];
+
+    return retval;
+}
+
 class Unowned {
     int unowned; // json: "unowned"
 
@@ -8167,117 +8528,6 @@ Virtual Virtual_from_JSON(mixed json) {
     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"
-
-    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,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-Obj6 Obj6_from_JSON(mixed json) {
-    Obj6 retval = Obj6();
-
-    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"];
-
-    return retval;
-}
-
-class Void {
-    int void_void; // json: "void"
-
-    string encode_json() {
-        mapping(string:mixed) json = ([
-            "void" : void_void,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-Void Void_from_JSON(mixed json) {
-    Void retval = Void();
-
-    if (!intp(json["void"])) error("Expected integer");
-    retval.void_void = json["void"];
-
-    return retval;
-}
-
-class While {
-    int while_while; // json: "while"
-
-    string encode_json() {
-        mapping(string:mixed) json = ([
-            "while" : while_while,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-While While_from_JSON(mixed json) {
-    While retval = While();
-
-    if (!intp(json["while"])) error("Expected integer");
-    retval.while_while = json["while"];
-
-    return retval;
-}
-
 class Volatile {
     int volatile; // json: "volatile"
 
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..9e92cde 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
@@ -135,6 +135,22 @@ class Array:
         return result
 
 
+@dataclass
+class ArrayNode:
+    array_node: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'ArrayNode':
+        assert isinstance(obj, dict)
+        array_node = from_int(obj["ArrayNode"])
+        return ArrayNode(array_node)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["ArrayNode"] = from_int(self.array_node)
+        return result
+
+
 @dataclass
 class ASM:
     asm: int
@@ -327,6 +343,22 @@ class Boolean:
         return result
 
 
+@dataclass
+class BooleanNode:
+    boolean_node: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'BooleanNode':
+        assert isinstance(obj, dict)
+        boolean_node = from_int(obj["BooleanNode"])
+        return BooleanNode(boolean_node)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["BooleanNode"] = from_int(self.boolean_node)
+        return result
+
+
 @dataclass
 class Bycopy:
     bycopy: int
@@ -791,38 +823,6 @@ class Converter:
         return result
 
 
-@dataclass
-class CultureInfo:
-    culture_info: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'CultureInfo':
-        assert isinstance(obj, dict)
-        culture_info = from_int(obj["CultureInfo"])
-        return CultureInfo(culture_info)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["CultureInfo"] = from_int(self.culture_info)
-        return result
-
-
-@dataclass
-class Date:
-    date: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'Date':
-        assert isinstance(obj, dict)
-        date = from_int(obj["date"])
-        return Date(date)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["date"] = from_int(self.date)
-        return result
-
-
 @dataclass
 class Empty:
     empty: int
@@ -1066,13 +1066,14 @@ class ClassClass:
 @dataclass
 class Obj1:
     any: AnyClass
+    array_node: ArrayNode
     obj1_bool: Bool
+    boolean_node: BooleanNode
     calendar: Calendar
     obj1_class: Class
     codable: Codable
     coding_key: CodingKey
     coding_keys: CodingKeys
-    culture_info: CultureInfo
     empty: Empty
     purple_bool: BoolClass
     complex: Complex
@@ -1128,20 +1129,20 @@ class Obj1:
     convenience: Convenience
     convert: Convert
     converter: Converter
-    date: Date
     dummy: int
 
     @staticmethod
     def from_dict(obj: Any) -> 'Obj1':
         assert isinstance(obj, dict)
         any = AnyClass.from_dict(obj["Any"])
+        array_node = ArrayNode.from_dict(obj["ArrayNode"])
         obj1_bool = Bool.from_dict(obj["BOOL"])
+        boolean_node = BooleanNode.from_dict(obj["BooleanNode"])
         calendar = Calendar.from_dict(obj["Calendar"])
         obj1_class = Class.from_dict(obj["Class"])
         codable = Codable.from_dict(obj["Codable"])
         coding_key = CodingKey.from_dict(obj["CodingKey"])
         coding_keys = CodingKeys.from_dict(obj["CodingKeys"])
-        culture_info = CultureInfo.from_dict(obj["CultureInfo"])
         empty = Empty.from_dict(obj["_"])
         purple_bool = BoolClass.from_dict(obj["_Bool"])
         complex = Complex.from_dict(obj["_Complex"])
@@ -1197,20 +1198,20 @@ class Obj1:
         convenience = Convenience.from_dict(obj["convenience"])
         convert = Convert.from_dict(obj["convert"])
         converter = Converter.from_dict(obj["converter"])
-        date = Date.from_dict(obj["date"])
         dummy = from_int(obj["dummy"])
-        return Obj1(any, obj1_bool, calendar, obj1_class, codable, coding_key, coding_keys, culture_info, empty, purple_bool, complex, imaginery, abstract, alignas, alignof, obj1_and, and_eq, obj1_any, array, obj1_as, asm, obj1_assert, associatedtype, associativity, obj1_async, atomic, atomic_cancel, atomic_commit, atomic_noexcept, auto, obj1_await, base, bitand, bitor, fluffy_bool, boolean, obj1_break, bycopy, byref, byte, case, catch, chan, char, char16_t, char32_t, checked, purple_class, clone, co_await, co_return, co_yield, compl, concept, console, const, const_cast, constexpr, constructor, obj1_continue, convenience, convert, converter, date, dummy)
+        return Obj1(any, array_node, obj1_bool, boolean_node, calendar, obj1_class, codable, coding_key, coding_keys, empty, purple_bool, complex, imaginery, abstract, alignas, alignof, obj1_and, and_eq, obj1_any, array, obj1_as, asm, obj1_assert, associatedtype, associativity, obj1_async, atomic, atomic_cancel, atomic_commit, atomic_noexcept, auto, obj1_await, base, bitand, bitor, fluffy_bool, boolean, obj1_break, bycopy, byref, byte, case, catch, chan, char, char16_t, char32_t, checked, purple_class, clone, co_await, co_return, co_yield, compl, concept, console, const, const_cast, constexpr, constructor, obj1_continue, convenience, convert, converter, dummy)
 
     def to_dict(self) -> dict:
         result: dict = {}
         result["Any"] = to_class(AnyClass, self.any)
+        result["ArrayNode"] = to_class(ArrayNode, self.array_node)
         result["BOOL"] = to_class(Bool, self.obj1_bool)
+        result["BooleanNode"] = to_class(BooleanNode, self.boolean_node)
         result["Calendar"] = to_class(Calendar, self.calendar)
         result["Class"] = to_class(Class, self.obj1_class)
         result["Codable"] = to_class(Codable, self.codable)
         result["CodingKey"] = to_class(CodingKey, self.coding_key)
         result["CodingKeys"] = to_class(CodingKeys, self.coding_keys)
-        result["CultureInfo"] = to_class(CultureInfo, self.culture_info)
         result["_"] = to_class(Empty, self.empty)
         result["_Bool"] = to_class(BoolClass, self.purple_bool)
         result["_Complex"] = to_class(Complex, self.complex)
@@ -1266,11 +1267,42 @@ class Obj1:
         result["convenience"] = to_class(Convenience, self.convenience)
         result["convert"] = to_class(Convert, self.convert)
         result["converter"] = to_class(Converter, self.converter)
-        result["date"] = to_class(Date, self.date)
         result["dummy"] = from_int(self.dummy)
         return result
 
 
+@dataclass
+class CultureInfo:
+    culture_info: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'CultureInfo':
+        assert isinstance(obj, dict)
+        culture_info = from_int(obj["CultureInfo"])
+        return CultureInfo(culture_info)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["CultureInfo"] = from_int(self.culture_info)
+        return result
+
+
+@dataclass
+class Date:
+    date: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Date':
+        assert isinstance(obj, dict)
+        date = from_int(obj["date"])
+        return Date(date)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["date"] = from_int(self.date)
+        return result
+
+
 @dataclass
 class DateFormatter:
     date_formatter: int
@@ -1559,6 +1591,22 @@ class Delete:
         return result
 
 
+@dataclass
+class DeserializationFeature:
+    deserialization_feature: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'DeserializationFeature':
+        assert isinstance(obj, dict)
+        deserialization_feature = from_int(obj["DeserializationFeature"])
+        return DeserializationFeature(deserialization_feature)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["DeserializationFeature"] = from_int(self.deserialization_feature)
+        return result
+
+
 @dataclass
 class Dictionary:
     dictionary: int
@@ -1623,6 +1671,22 @@ class Double:
         return result
 
 
+@dataclass
+class DoubleNode:
+    double_node: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'DoubleNode':
+        assert isinstance(obj, dict)
+        double_node = from_int(obj["DoubleNode"])
+        return DoubleNode(double_node)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["DoubleNode"] = from_int(self.double_node)
+        return result
+
+
 @dataclass
 class Dynamic:
     dynamic: int
@@ -2060,54 +2124,6 @@ class Function:
         return result
 
 
-@dataclass
-class Get:
-    get: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'Get':
-        assert isinstance(obj, dict)
-        get = from_int(obj["get"])
-        return Get(get)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["get"] = from_int(self.get)
-        return result
-
-
-@dataclass
-class Go:
-    go: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'Go':
-        assert isinstance(obj, dict)
-        go = from_int(obj["go"])
-        return Go(go)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["go"] = from_int(self.go)
-        return result
-
-
-@dataclass
-class Goto:
-    goto: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'Goto':
-        assert isinstance(obj, dict)
-        goto = from_int(obj["goto"])
-        return Goto(goto)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["goto"] = from_int(self.goto)
-        return result
-
-
 @dataclass
 class Def:
     def_def: int
@@ -2284,24 +2300,9 @@ class From:
         return result
 
 
-@dataclass
-class Global:
-    global_global: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'Global':
-        assert isinstance(obj, dict)
-        global_global = from_int(obj["global"])
-        return Global(global_global)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["global"] = from_int(self.global_global)
-        return result
-
-
 @dataclass
 class Obj2:
+    culture_info: CultureInfo
     date_formatter: DateFormatter
     date_only: DateOnly
     date_only_converter: DateOnlyConverter
@@ -2309,11 +2310,14 @@ class Obj2:
     date_time_styles: DateTimeStyles
     decoder: Decoder
     decoding_error: DecodingError
+    deserialization_feature: DeserializationFeature
+    double_node: DoubleNode
     encoder: Encoder
     enum_values: EnumValues
     equatable: Equatable
     false: FalseClass
     format_exception: FormatException
+    date: Date
     date_parse_handling: DateParseHandling
     debugger: Debugger
     decimal: Decimal
@@ -2363,14 +2367,11 @@ class Obj2:
     from_json: FromJSON
     func: Func
     function: Function
-    get: Get
-    obj2_global: Global
-    go: Go
-    goto: Goto
 
     @staticmethod
     def from_dict(obj: Any) -> 'Obj2':
         assert isinstance(obj, dict)
+        culture_info = CultureInfo.from_dict(obj["CultureInfo"])
         date_formatter = DateFormatter.from_dict(obj["DateFormatter"])
         date_only = DateOnly.from_dict(obj["DateOnly"])
         date_only_converter = DateOnlyConverter.from_dict(obj["DateOnlyConverter"])
@@ -2378,11 +2379,14 @@ class Obj2:
         date_time_styles = DateTimeStyles.from_dict(obj["DateTimeStyles"])
         decoder = Decoder.from_dict(obj["Decoder"])
         decoding_error = DecodingError.from_dict(obj["DecodingError"])
+        deserialization_feature = DeserializationFeature.from_dict(obj["DeserializationFeature"])
+        double_node = DoubleNode.from_dict(obj["DoubleNode"])
         encoder = Encoder.from_dict(obj["Encoder"])
         enum_values = EnumValues.from_dict(obj["EnumValues"])
         equatable = Equatable.from_dict(obj["Equatable"])
         false = FalseClass.from_dict(obj["False"])
         format_exception = FormatException.from_dict(obj["FormatException"])
+        date = Date.from_dict(obj["date"])
         date_parse_handling = DateParseHandling.from_dict(obj["date_parse_handling"])
         debugger = Debugger.from_dict(obj["debugger"])
         decimal = Decimal.from_dict(obj["decimal"])
@@ -2432,14 +2436,11 @@ class Obj2:
         from_json = FromJSON.from_dict(obj["from_json"])
         func = Func.from_dict(obj["func"])
         function = Function.from_dict(obj["function"])
-        get = Get.from_dict(obj["get"])
-        obj2_global = Global.from_dict(obj["global"])
-        go = Go.from_dict(obj["go"])
-        goto = Goto.from_dict(obj["goto"])
-        return Obj2(date_formatter, date_only, date_only_converter, date_time, date_time_styles, decoder, decoding_error, encoder, enum_values, equatable, false, format_exception, date_parse_handling, debugger, decimal, declare, decltype, decode_string, obj2_def, default, defer, deinit, obj2_del, delegate, delete, obj2_dict, dictionary, did_set, do, double, dummy, dynamic, dynamic_cast, obj2_elif, obj2_else, encode_quick_type, enum, equality_contract, event, obj2_except, exception, explicit, export, exposing, extends, extension, extern, fallthrough, obj2_false, fileprivate, final, obj2_finally, fixed, obj2_float, obj2_for, foreach, friend, obj2_from, from_json, func, function, get, obj2_global, go, goto)
+        return Obj2(culture_info, date_formatter, date_only, date_only_converter, date_time, date_time_styles, decoder, decoding_error, deserialization_feature, double_node, encoder, enum_values, equatable, false, format_exception, date, date_parse_handling, debugger, decimal, declare, decltype, decode_string, obj2_def, default, defer, deinit, obj2_del, delegate, delete, obj2_dict, dictionary, did_set, do, double, dummy, dynamic, dynamic_cast, obj2_elif, obj2_else, encode_quick_type, enum, equality_contract, event, obj2_except, exception, explicit, export, exposing, extends, extension, extern, fallthrough, obj2_false, fileprivate, final, obj2_finally, fixed, obj2_float, obj2_for, foreach, friend, obj2_from, from_json, func, function)
 
     def to_dict(self) -> dict:
         result: dict = {}
+        result["CultureInfo"] = to_class(CultureInfo, self.culture_info)
         result["DateFormatter"] = to_class(DateFormatter, self.date_formatter)
         result["DateOnly"] = to_class(DateOnly, self.date_only)
         result["DateOnlyConverter"] = to_class(DateOnlyConverter, self.date_only_converter)
@@ -2447,11 +2448,14 @@ class Obj2:
         result["DateTimeStyles"] = to_class(DateTimeStyles, self.date_time_styles)
         result["Decoder"] = to_class(Decoder, self.decoder)
         result["DecodingError"] = to_class(DecodingError, self.decoding_error)
+        result["DeserializationFeature"] = to_class(DeserializationFeature, self.deserialization_feature)
+        result["DoubleNode"] = to_class(DoubleNode, self.double_node)
         result["Encoder"] = to_class(Encoder, self.encoder)
         result["EnumValues"] = to_class(EnumValues, self.enum_values)
         result["Equatable"] = to_class(Equatable, self.equatable)
         result["False"] = to_class(FalseClass, self.false)
         result["FormatException"] = to_class(FormatException, self.format_exception)
+        result["date"] = to_class(Date, self.date)
         result["date_parse_handling"] = to_class(DateParseHandling, self.date_parse_handling)
         result["debugger"] = to_class(Debugger, self.debugger)
         result["decimal"] = to_class(Decimal, self.decimal)
@@ -2501,10 +2505,54 @@ class Obj2:
         result["from_json"] = to_class(FromJSON, self.from_json)
         result["func"] = to_class(Func, self.func)
         result["function"] = to_class(Function, self.function)
-        result["get"] = to_class(Get, self.get)
-        result["global"] = to_class(Global, self.obj2_global)
-        result["go"] = to_class(Go, self.go)
-        result["goto"] = to_class(Goto, self.goto)
+        return result
+
+
+@dataclass
+class Get:
+    get: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Get':
+        assert isinstance(obj, dict)
+        get = from_int(obj["get"])
+        return Get(get)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["get"] = from_int(self.get)
+        return result
+
+
+@dataclass
+class Go:
+    go: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Go':
+        assert isinstance(obj, dict)
+        go = from_int(obj["go"])
+        return Go(go)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["go"] = from_int(self.go)
+        return result
+
+
+@dataclass
+class Goto:
+    goto: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Goto':
+        assert isinstance(obj, dict)
+        goto = from_int(obj["goto"])
+        return Goto(goto)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["goto"] = from_int(self.goto)
         return result
 
 
@@ -2748,6 +2796,22 @@ class Instanceof:
         return result
 
 
+@dataclass
+class IntNode:
+    int_node: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'IntNode':
+        assert isinstance(obj, dict)
+        int_node = from_int(obj["IntNode"])
+        return IntNode(int_node)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["IntNode"] = from_int(self.int_node)
+        return result
+
+
 @dataclass
 class Interface:
     interface: int
@@ -3229,25 +3293,41 @@ class Long:
 
 
 @dataclass
-class Map:
-    map: int
+class LongNode:
+    long_node: int
 
     @staticmethod
-    def from_dict(obj: Any) -> 'Map':
+    def from_dict(obj: Any) -> 'LongNode':
         assert isinstance(obj, dict)
-        map = from_int(obj["map"])
-        return Map(map)
+        long_node = from_int(obj["LongNode"])
+        return LongNode(long_node)
 
     def to_dict(self) -> dict:
         result: dict = {}
-        result["map"] = from_int(self.map)
+        result["LongNode"] = from_int(self.long_node)
         return result
 
 
 @dataclass
-class MapEntry:
-    map_entry: int
-
+class Map:
+    map: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Map':
+        assert isinstance(obj, dict)
+        map = from_int(obj["map"])
+        return Map(map)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["map"] = from_int(self.map)
+        return result
+
+
+@dataclass
+class MapEntry:
+    map_entry: int
+
     @staticmethod
     def from_dict(obj: Any) -> 'MapEntry':
         assert isinstance(obj, dict)
@@ -3341,98 +3421,18 @@ class Namespace:
 
 
 @dataclass
-class Native:
-    native: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'Native':
-        assert isinstance(obj, dict)
-        native = from_int(obj["native"])
-        return Native(native)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["native"] = from_int(self.native)
-        return result
-
-
-@dataclass
-class New:
-    new: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'New':
-        assert isinstance(obj, dict)
-        new = from_int(obj["new"])
-        return New(new)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["new"] = from_int(self.new)
-        return result
-
-
-@dataclass
-class Newtonsoft:
-    newtonsoft: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'Newtonsoft':
-        assert isinstance(obj, dict)
-        newtonsoft = from_int(obj["newtonsoft"])
-        return Newtonsoft(newtonsoft)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["newtonsoft"] = from_int(self.newtonsoft)
-        return result
-
-
-@dataclass
-class Nil:
-    nil: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'Nil':
-        assert isinstance(obj, dict)
-        nil = from_int(obj["nil"])
-        return Nil(nil)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["nil"] = from_int(self.nil)
-        return result
-
-
-@dataclass
-class No:
-    no: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'No':
-        assert isinstance(obj, dict)
-        no = from_int(obj["NO"])
-        return No(no)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["NO"] = from_int(self.no)
-        return result
-
-
-@dataclass
-class Noexcept:
-    noexcept: int
+class Global:
+    global_global: int
 
     @staticmethod
-    def from_dict(obj: Any) -> 'Noexcept':
+    def from_dict(obj: Any) -> 'Global':
         assert isinstance(obj, dict)
-        noexcept = from_int(obj["noexcept"])
-        return Noexcept(noexcept)
+        global_global = from_int(obj["global"])
+        return Global(global_global)
 
     def to_dict(self) -> dict:
         result: dict = {}
-        result["noexcept"] = from_int(self.noexcept)
+        result["global"] = from_int(self.global_global)
         return result
 
 
@@ -3537,6 +3537,7 @@ class Obj3:
     hashable: Hashable
     hasher: Hasher
     imp: Imp
+    int_node: IntNode
     iso_date_time_offset_converter: ISODateTimeOffsetConverter
     json_any: JSONAny
     json_coding_key: JSONCodingKey
@@ -3550,9 +3551,13 @@ class Obj3:
     json_reader: JSONReader
     json_token_type: JSONTokenType
     locale: Locale
+    long_node: LongNode
     map_entry: MapEntry
-    no: No
     dummy: int
+    get: Get
+    obj3_global: Global
+    go: Go
+    goto: Goto
     guard: Guard
     has_own_property: HasOwnProperty
     hash_code: HashCode
@@ -3594,11 +3599,6 @@ class Obj3:
     mutable: Mutable
     mutating: Mutating
     namespace: Namespace
-    native: Native
-    new: New
-    newtonsoft: Newtonsoft
-    nil: Nil
-    noexcept: Noexcept
 
     @staticmethod
     def from_dict(obj: Any) -> 'Obj3':
@@ -3606,6 +3606,7 @@ class Obj3:
         hashable = Hashable.from_dict(obj["Hashable"])
         hasher = Hasher.from_dict(obj["Hasher"])
         imp = Imp.from_dict(obj["IMP"])
+        int_node = IntNode.from_dict(obj["IntNode"])
         iso_date_time_offset_converter = ISODateTimeOffsetConverter.from_dict(obj["IsoDateTimeOffsetConverter"])
         json_any = JSONAny.from_dict(obj["JSONAny"])
         json_coding_key = JSONCodingKey.from_dict(obj["JSONCodingKey"])
@@ -3619,9 +3620,13 @@ class Obj3:
         json_reader = JSONReader.from_dict(obj["JsonReader"])
         json_token_type = JSONTokenType.from_dict(obj["JsonTokenType"])
         locale = Locale.from_dict(obj["Locale"])
+        long_node = LongNode.from_dict(obj["LongNode"])
         map_entry = MapEntry.from_dict(obj["MapEntry"])
-        no = No.from_dict(obj["NO"])
         dummy = from_int(obj["dummy"])
+        get = Get.from_dict(obj["get"])
+        obj3_global = Global.from_dict(obj["global"])
+        go = Go.from_dict(obj["go"])
+        goto = Goto.from_dict(obj["goto"])
         guard = Guard.from_dict(obj["guard"])
         has_own_property = HasOwnProperty.from_dict(obj["hasOwnProperty"])
         hash_code = HashCode.from_dict(obj["hashCode"])
@@ -3663,18 +3668,14 @@ class Obj3:
         mutable = Mutable.from_dict(obj["mutable"])
         mutating = Mutating.from_dict(obj["mutating"])
         namespace = Namespace.from_dict(obj["namespace"])
-        native = Native.from_dict(obj["native"])
-        new = New.from_dict(obj["new"])
-        newtonsoft = Newtonsoft.from_dict(obj["newtonsoft"])
-        nil = Nil.from_dict(obj["nil"])
-        noexcept = Noexcept.from_dict(obj["noexcept"])
-        return Obj3(hashable, hasher, imp, iso_date_time_offset_converter, json_any, json_coding_key, json_decoder, json_encoder, json_null, json_exception, json_generator, json_node, json_parser, json_reader, json_token_type, locale, map_entry, no, dummy, guard, has_own_property, hash_code, id, obj3_if, implements, implicit, obj3_import, obj3_in, indirect, infix, init, inline, inout, instanceof, obj3_int, interface, internal, obj3_is, iterable, jdec, jenc, jpipe, json, json_converter, json_serializer, json_token, json_writer, obj3_lambda, lazy, left, let, list, lock, long, map, metadata_property_handling, module, mutable, mutating, namespace, native, new, newtonsoft, nil, noexcept)
+        return Obj3(hashable, hasher, imp, int_node, iso_date_time_offset_converter, json_any, json_coding_key, json_decoder, json_encoder, json_null, json_exception, json_generator, json_node, json_parser, json_reader, json_token_type, locale, long_node, map_entry, dummy, get, obj3_global, go, goto, guard, has_own_property, hash_code, id, obj3_if, implements, implicit, obj3_import, obj3_in, indirect, infix, init, inline, inout, instanceof, obj3_int, interface, internal, obj3_is, iterable, jdec, jenc, jpipe, json, json_converter, json_serializer, json_token, json_writer, obj3_lambda, lazy, left, let, list, lock, long, map, metadata_property_handling, module, mutable, mutating, namespace)
 
     def to_dict(self) -> dict:
         result: dict = {}
         result["Hashable"] = to_class(Hashable, self.hashable)
         result["Hasher"] = to_class(Hasher, self.hasher)
         result["IMP"] = to_class(Imp, self.imp)
+        result["IntNode"] = to_class(IntNode, self.int_node)
         result["IsoDateTimeOffsetConverter"] = to_class(ISODateTimeOffsetConverter, self.iso_date_time_offset_converter)
         result["JSONAny"] = to_class(JSONAny, self.json_any)
         result["JSONCodingKey"] = to_class(JSONCodingKey, self.json_coding_key)
@@ -3688,9 +3689,13 @@ class Obj3:
         result["JsonReader"] = to_class(JSONReader, self.json_reader)
         result["JsonTokenType"] = to_class(JSONTokenType, self.json_token_type)
         result["Locale"] = to_class(Locale, self.locale)
+        result["LongNode"] = to_class(LongNode, self.long_node)
         result["MapEntry"] = to_class(MapEntry, self.map_entry)
-        result["NO"] = to_class(No, self.no)
         result["dummy"] = from_int(self.dummy)
+        result["get"] = to_class(Get, self.get)
+        result["global"] = to_class(Global, self.obj3_global)
+        result["go"] = to_class(Go, self.go)
+        result["goto"] = to_class(Goto, self.goto)
         result["guard"] = to_class(Guard, self.guard)
         result["hasOwnProperty"] = to_class(HasOwnProperty, self.has_own_property)
         result["hashCode"] = to_class(HashCode, self.hash_code)
@@ -3732,11 +3737,86 @@ class Obj3:
         result["mutable"] = to_class(Mutable, self.mutable)
         result["mutating"] = to_class(Mutating, self.mutating)
         result["namespace"] = to_class(Namespace, self.namespace)
-        result["native"] = to_class(Native, self.native)
-        result["new"] = to_class(New, self.new)
-        result["newtonsoft"] = to_class(Newtonsoft, self.newtonsoft)
-        result["nil"] = to_class(Nil, self.nil)
-        result["noexcept"] = to_class(Noexcept, self.noexcept)
+        return result
+
+
+@dataclass
+class Native:
+    native: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Native':
+        assert isinstance(obj, dict)
+        native = from_int(obj["native"])
+        return Native(native)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["native"] = from_int(self.native)
+        return result
+
+
+@dataclass
+class New:
+    new: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'New':
+        assert isinstance(obj, dict)
+        new = from_int(obj["new"])
+        return New(new)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["new"] = from_int(self.new)
+        return result
+
+
+@dataclass
+class Newtonsoft:
+    newtonsoft: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Newtonsoft':
+        assert isinstance(obj, dict)
+        newtonsoft = from_int(obj["newtonsoft"])
+        return Newtonsoft(newtonsoft)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["newtonsoft"] = from_int(self.newtonsoft)
+        return result
+
+
+@dataclass
+class Nil:
+    nil: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Nil':
+        assert isinstance(obj, dict)
+        nil = from_int(obj["nil"])
+        return Nil(nil)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["nil"] = from_int(self.nil)
+        return result
+
+
+@dataclass
+class No:
+    no: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'No':
+        assert isinstance(obj, dict)
+        no = from_int(obj["NO"])
+        return No(no)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["NO"] = from_int(self.no)
         return result
 
 
@@ -3756,6 +3836,22 @@ class NoSuchMethod:
         return result
 
 
+@dataclass
+class Noexcept:
+    noexcept: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Noexcept':
+        assert isinstance(obj, dict)
+        noexcept = from_int(obj["noexcept"])
+        return Noexcept(noexcept)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["noexcept"] = from_int(self.noexcept)
+        return result
+
+
 @dataclass
 class Nonatomic:
     nonatomic: int
@@ -3884,6 +3980,22 @@ class Null:
         return result
 
 
+@dataclass
+class NullNode:
+    null_node: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'NullNode':
+        assert isinstance(obj, dict)
+        null_node = from_int(obj["NullNode"])
+        return NullNode(null_node)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["NullNode"] = from_int(self.null_node)
+        return result
+
+
 @dataclass
 class Nullptr:
     nullptr: int
@@ -4061,50 +4173,50 @@ class Raise:
 
 
 @dataclass
-class Return:
-    return_return: int
+class Object:
+    object: int
 
     @staticmethod
-    def from_dict(obj: Any) -> 'Return':
+    def from_dict(obj: Any) -> 'Object':
         assert isinstance(obj, dict)
-        return_return = from_int(obj["return"])
-        return Return(return_return)
+        object = from_int(obj["object"])
+        return Object(object)
 
     def to_dict(self) -> dict:
         result: dict = {}
-        result["return"] = from_int(self.return_return)
+        result["object"] = from_int(self.object)
         return result
 
 
 @dataclass
-class Object:
-    object: int
+class ObjectMapper:
+    object_mapper: int
 
     @staticmethod
-    def from_dict(obj: Any) -> 'Object':
+    def from_dict(obj: Any) -> 'ObjectMapper':
         assert isinstance(obj, dict)
-        object = from_int(obj["object"])
-        return Object(object)
+        object_mapper = from_int(obj["ObjectMapper"])
+        return ObjectMapper(object_mapper)
 
     def to_dict(self) -> dict:
         result: dict = {}
-        result["object"] = from_int(self.object)
+        result["ObjectMapper"] = from_int(self.object_mapper)
         return result
 
 
 @dataclass
-class ObjectMapper:
-    object_mapper: int
+class ObjectNode:
+    object_node: int
 
     @staticmethod
-    def from_dict(obj: Any) -> 'ObjectMapper':
+    def from_dict(obj: Any) -> 'ObjectNode':
         assert isinstance(obj, dict)
-        object_mapper = from_int(obj["ObjectMapper"])
-        return ObjectMapper(object_mapper)
+        object_node = from_int(obj["ObjectNode"])
+        return ObjectNode(object_node)
 
     def to_dict(self) -> dict:
         result: dict = {}
-        result["ObjectMapper"] = from_int(self.object_mapper)
+        result["ObjectNode"] = from_int(self.object_node)
         return result
 
 
@@ -4652,131 +4764,26 @@ class Rethrows:
         return result
 
 
-@dataclass
-class Right:
-    right: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'Right':
-        assert isinstance(obj, dict)
-        right = from_int(obj["right"])
-        return Right(right)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["right"] = from_int(self.right)
-        return result
-
-
-@dataclass
-class RuntimeType:
-    runtime_type: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'RuntimeType':
-        assert isinstance(obj, dict)
-        runtime_type = from_int(obj["runtimeType"])
-        return RuntimeType(runtime_type)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["runtimeType"] = from_int(self.runtime_type)
-        return result
-
-
-@dataclass
-class S:
-    s: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'S':
-        assert isinstance(obj, dict)
-        s = from_int(obj["s"])
-        return S(s)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["s"] = from_int(self.s)
-        return result
-
-
-@dataclass
-class Sbyte:
-    sbyte: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'Sbyte':
-        assert isinstance(obj, dict)
-        sbyte = from_int(obj["sbyte"])
-        return Sbyte(sbyte)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["sbyte"] = from_int(self.sbyte)
-        return result
-
-
-@dataclass
-class Sealed:
-    sealed: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'Sealed':
-        assert isinstance(obj, dict)
-        sealed = from_int(obj["sealed"])
-        return Sealed(sealed)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["sealed"] = from_int(self.sealed)
-        return result
-
-
-@dataclass
-class Sel:
-    sel: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'Sel':
-        assert isinstance(obj, dict)
-        sel = from_int(obj["SEL"])
-        return Sel(sel)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["SEL"] = from_int(self.sel)
-        return result
-
-
-@dataclass
-class Select:
-    select: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'Select':
-        assert isinstance(obj, dict)
-        select = from_int(obj["select"])
-        return Select(select)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["select"] = from_int(self.select)
-        return result
-
-
 @dataclass
 class Obj4:
+    no: No
     ns_error: NSError
     ns_object: NSObject
     ns_string: NSString
     null: Null
     none: NoneClass
+    null_node: NullNode
     object_mapper: ObjectMapper
+    object_node: ObjectNode
     protocol: Protocol
     reg_exp: RegExp
-    sel: Sel
     dummy: int
+    native: Native
+    new: New
+    newtonsoft: Newtonsoft
+    nil: Nil
     no_such_method: NoSuchMethod
+    noexcept: Noexcept
     nonatomic: Nonatomic
     obj4_none: Obj4None
     obj4_nonlocal: Nonlocal
@@ -4824,28 +4831,28 @@ class Obj4:
     restrict: Restrict
     retain: Retain
     rethrows: Rethrows
-    obj4_return: Return
-    right: Right
-    runtime_type: RuntimeType
-    s: S
-    sbyte: Sbyte
-    sealed: Sealed
-    select: Select
 
     @staticmethod
     def from_dict(obj: Any) -> 'Obj4':
         assert isinstance(obj, dict)
+        no = No.from_dict(obj["NO"])
         ns_error = NSError.from_dict(obj["NSError"])
         ns_object = NSObject.from_dict(obj["NSObject"])
         ns_string = NSString.from_dict(obj["NSString"])
         null = Null.from_dict(obj["NULL"])
         none = NoneClass.from_dict(obj["None"])
+        null_node = NullNode.from_dict(obj["NullNode"])
         object_mapper = ObjectMapper.from_dict(obj["ObjectMapper"])
+        object_node = ObjectNode.from_dict(obj["ObjectNode"])
         protocol = Protocol.from_dict(obj["Protocol"])
         reg_exp = RegExp.from_dict(obj["RegExp"])
-        sel = Sel.from_dict(obj["SEL"])
         dummy = from_int(obj["dummy"])
+        native = Native.from_dict(obj["native"])
+        new = New.from_dict(obj["new"])
+        newtonsoft = Newtonsoft.from_dict(obj["newtonsoft"])
+        nil = Nil.from_dict(obj["nil"])
         no_such_method = NoSuchMethod.from_dict(obj["noSuchMethod"])
+        noexcept = Noexcept.from_dict(obj["noexcept"])
         nonatomic = Nonatomic.from_dict(obj["nonatomic"])
         obj4_none = Obj4None.from_dict(obj["none"])
         obj4_nonlocal = Nonlocal.from_dict(obj["nonlocal"])
@@ -4893,28 +4900,28 @@ class Obj4:
         restrict = Restrict.from_dict(obj["restrict"])
         retain = Retain.from_dict(obj["retain"])
         rethrows = Rethrows.from_dict(obj["rethrows"])
-        obj4_return = Return.from_dict(obj["return"])
-        right = Right.from_dict(obj["right"])
-        runtime_type = RuntimeType.from_dict(obj["runtimeType"])
-        s = S.from_dict(obj["s"])
-        sbyte = Sbyte.from_dict(obj["sbyte"])
-        sealed = Sealed.from_dict(obj["sealed"])
-        select = Select.from_dict(obj["select"])
-        return Obj4(ns_error, ns_object, ns_string, null, none, object_mapper, protocol, reg_exp, sel, dummy, no_such_method, nonatomic, obj4_none, obj4_nonlocal, nonmutating, obj4_not, not_eq, obj4_null, nullptr, number, object, of, oneway, open, operator, optional, obj4_or, or_eq, out, override, package, params, obj4_pass, port, postfix, precedence, prefix, obj4_print, print_members, printf, private, protected, obj4_protocol, public, quicktype, obj4_raise, range, readonly, ref, register, reinterpret_cast, repeat, require, required, requires, restrict, retain, rethrows, obj4_return, right, runtime_type, s, sbyte, sealed, select)
+        return Obj4(no, ns_error, ns_object, ns_string, null, none, null_node, object_mapper, object_node, protocol, reg_exp, dummy, native, new, newtonsoft, nil, no_such_method, noexcept, nonatomic, obj4_none, obj4_nonlocal, nonmutating, obj4_not, not_eq, obj4_null, nullptr, number, object, of, oneway, open, operator, optional, obj4_or, or_eq, out, override, package, params, obj4_pass, port, postfix, precedence, prefix, obj4_print, print_members, printf, private, protected, obj4_protocol, public, quicktype, obj4_raise, range, readonly, ref, register, reinterpret_cast, repeat, require, required, requires, restrict, retain, rethrows)
 
     def to_dict(self) -> dict:
         result: dict = {}
+        result["NO"] = to_class(No, self.no)
         result["NSError"] = to_class(NSError, self.ns_error)
         result["NSObject"] = to_class(NSObject, self.ns_object)
         result["NSString"] = to_class(NSString, self.ns_string)
         result["NULL"] = to_class(Null, self.null)
         result["None"] = to_class(NoneClass, self.none)
+        result["NullNode"] = to_class(NullNode, self.null_node)
         result["ObjectMapper"] = to_class(ObjectMapper, self.object_mapper)
+        result["ObjectNode"] = to_class(ObjectNode, self.object_node)
         result["Protocol"] = to_class(Protocol, self.protocol)
         result["RegExp"] = to_class(RegExp, self.reg_exp)
-        result["SEL"] = to_class(Sel, self.sel)
         result["dummy"] = from_int(self.dummy)
+        result["native"] = to_class(Native, self.native)
+        result["new"] = to_class(New, self.new)
+        result["newtonsoft"] = to_class(Newtonsoft, self.newtonsoft)
+        result["nil"] = to_class(Nil, self.nil)
         result["noSuchMethod"] = to_class(NoSuchMethod, self.no_such_method)
+        result["noexcept"] = to_class(Noexcept, self.noexcept)
         result["nonatomic"] = to_class(Nonatomic, self.nonatomic)
         result["none"] = to_class(Obj4None, self.obj4_none)
         result["nonlocal"] = to_class(Nonlocal, self.obj4_nonlocal)
@@ -4962,13 +4969,22 @@ class Obj4:
         result["restrict"] = to_class(Restrict, self.restrict)
         result["retain"] = to_class(Retain, self.retain)
         result["rethrows"] = to_class(Rethrows, self.rethrows)
-        result["return"] = to_class(Return, self.obj4_return)
-        result["right"] = to_class(Right, self.right)
-        result["runtimeType"] = to_class(RuntimeType, self.runtime_type)
-        result["s"] = to_class(S, self.s)
-        result["sbyte"] = to_class(Sbyte, self.sbyte)
-        result["sealed"] = to_class(Sealed, self.sealed)
-        result["select"] = to_class(Select, self.select)
+        return result
+
+
+@dataclass
+class Return:
+    return_return: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Return':
+        assert isinstance(obj, dict)
+        return_return = from_int(obj["return"])
+        return Return(return_return)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["return"] = from_int(self.return_return)
         return result
 
 
@@ -5053,98 +5069,226 @@ class SelfClass:
 
 
 @dataclass
-class Sendable:
-    sendable: int
+class Right:
+    right: int
 
     @staticmethod
-    def from_dict(obj: Any) -> 'Sendable':
+    def from_dict(obj: Any) -> 'Right':
         assert isinstance(obj, dict)
-        sendable = from_int(obj["Sendable"])
-        return Sendable(sendable)
+        right = from_int(obj["right"])
+        return Right(right)
 
     def to_dict(self) -> dict:
         result: dict = {}
-        result["Sendable"] = from_int(self.sendable)
+        result["right"] = from_int(self.right)
         return result
 
 
 @dataclass
-class Serialize:
-    serialize: int
+class RuntimeType:
+    runtime_type: int
 
     @staticmethod
-    def from_dict(obj: Any) -> 'Serialize':
+    def from_dict(obj: Any) -> 'RuntimeType':
         assert isinstance(obj, dict)
-        serialize = from_int(obj["serialize"])
-        return Serialize(serialize)
+        runtime_type = from_int(obj["runtimeType"])
+        return RuntimeType(runtime_type)
 
     def to_dict(self) -> dict:
         result: dict = {}
-        result["serialize"] = from_int(self.serialize)
+        result["runtimeType"] = from_int(self.runtime_type)
         return result
 
 
 @dataclass
-class SerializerProvider:
-    serializer_provider: int
+class S:
+    s: int
 
     @staticmethod
-    def from_dict(obj: Any) -> 'SerializerProvider':
+    def from_dict(obj: Any) -> 'S':
         assert isinstance(obj, dict)
-        serializer_provider = from_int(obj["SerializerProvider"])
-        return SerializerProvider(serializer_provider)
+        s = from_int(obj["s"])
+        return S(s)
 
     def to_dict(self) -> dict:
         result: dict = {}
-        result["SerializerProvider"] = from_int(self.serializer_provider)
+        result["s"] = from_int(self.s)
         return result
 
 
 @dataclass
-class Set:
-    set: int
+class Sbyte:
+    sbyte: int
 
     @staticmethod
-    def from_dict(obj: Any) -> 'Set':
+    def from_dict(obj: Any) -> 'Sbyte':
         assert isinstance(obj, dict)
-        set = from_int(obj["set"])
-        return Set(set)
+        sbyte = from_int(obj["sbyte"])
+        return Sbyte(sbyte)
 
     def to_dict(self) -> dict:
         result: dict = {}
-        result["set"] = from_int(self.set)
+        result["sbyte"] = from_int(self.sbyte)
         return result
 
 
 @dataclass
-class Short:
-    short: int
+class Sealed:
+    sealed: int
 
     @staticmethod
-    def from_dict(obj: Any) -> 'Short':
+    def from_dict(obj: Any) -> 'Sealed':
         assert isinstance(obj, dict)
-        short = from_int(obj["short"])
-        return Short(short)
+        sealed = from_int(obj["sealed"])
+        return Sealed(sealed)
 
     def to_dict(self) -> dict:
         result: dict = {}
-        result["short"] = from_int(self.short)
+        result["sealed"] = from_int(self.sealed)
         return result
 
 
 @dataclass
-class Signed:
-    signed: int
+class Sel:
+    sel: int
 
     @staticmethod
-    def from_dict(obj: Any) -> 'Signed':
+    def from_dict(obj: Any) -> 'Sel':
         assert isinstance(obj, dict)
-        signed = from_int(obj["signed"])
-        return Signed(signed)
+        sel = from_int(obj["SEL"])
+        return Sel(sel)
 
     def to_dict(self) -> dict:
         result: dict = {}
-        result["signed"] = from_int(self.signed)
+        result["SEL"] = from_int(self.sel)
+        return result
+
+
+@dataclass
+class Select:
+    select: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Select':
+        assert isinstance(obj, dict)
+        select = from_int(obj["select"])
+        return Select(select)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["select"] = from_int(self.select)
+        return result
+
+
+@dataclass
+class Sendable:
+    sendable: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Sendable':
+        assert isinstance(obj, dict)
+        sendable = from_int(obj["Sendable"])
+        return Sendable(sendable)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["Sendable"] = from_int(self.sendable)
+        return result
+
+
+@dataclass
+class SerializationFeature:
+    serialization_feature: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'SerializationFeature':
+        assert isinstance(obj, dict)
+        serialization_feature = from_int(obj["SerializationFeature"])
+        return SerializationFeature(serialization_feature)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["SerializationFeature"] = from_int(self.serialization_feature)
+        return result
+
+
+@dataclass
+class Serialize:
+    serialize: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Serialize':
+        assert isinstance(obj, dict)
+        serialize = from_int(obj["serialize"])
+        return Serialize(serialize)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["serialize"] = from_int(self.serialize)
+        return result
+
+
+@dataclass
+class SerializerProvider:
+    serializer_provider: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'SerializerProvider':
+        assert isinstance(obj, dict)
+        serializer_provider = from_int(obj["SerializerProvider"])
+        return SerializerProvider(serializer_provider)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["SerializerProvider"] = from_int(self.serializer_provider)
+        return result
+
+
+@dataclass
+class Set:
+    set: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Set':
+        assert isinstance(obj, dict)
+        set = from_int(obj["set"])
+        return Set(set)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["set"] = from_int(self.set)
+        return result
+
+
+@dataclass
+class Short:
+    short: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Short':
+        assert isinstance(obj, dict)
+        short = from_int(obj["short"])
+        return Short(short)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["short"] = from_int(self.short)
+        return result
+
+
+@dataclass
+class Signed:
+    signed: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Signed':
+        assert isinstance(obj, dict)
+        signed = from_int(obj["signed"])
+        return Signed(signed)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["signed"] = from_int(self.signed)
         return result
 
 
@@ -5452,6 +5596,22 @@ class Template:
         return result
 
 
+@dataclass
+class TextNode:
+    text_node: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'TextNode':
+        assert isinstance(obj, dict)
+        text_node = from_int(obj["TextNode"])
+        return TextNode(text_node)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["TextNode"] = from_int(self.text_node)
+        return result
+
+
 @dataclass
 class Then:
     then: int
@@ -5837,252 +5997,99 @@ class UnionClass:
 
 
 @dataclass
-class Unowned:
-    unowned: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'Unowned':
-        assert isinstance(obj, dict)
-        unowned = from_int(obj["unowned"])
-        return Unowned(unowned)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["unowned"] = from_int(self.unowned)
-        return result
-
-
-@dataclass
-class Unsafe:
-    unsafe: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'Unsafe':
-        assert isinstance(obj, dict)
-        unsafe = from_int(obj["unsafe"])
-        return Unsafe(unsafe)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["unsafe"] = from_int(self.unsafe)
-        return result
-
-
-@dataclass
-class Unsigned:
-    unsigned: int
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'Unsigned':
-        assert isinstance(obj, dict)
-        unsigned = from_int(obj["unsigned"])
-        return Unsigned(unsigned)
-
-    def to_dict(self) -> dict:
-        result: dict = {}
-        result["unsigned"] = from_int(self.unsigned)
-        return result
-
-
-@dataclass
-class Ushort:
-    ushort: int
+class Obj5:
+    sel: Sel
+    obj5_self: Self
+    sendable: Sendable
+    serialization_feature: SerializationFeature
+    serializer_provider: SerializerProvider
+    simple_module: SimpleModule
+    standards: Standards
+    std_deserializer: StdDeserializer
+    std_serializer: StdSerializer
+    text_node: TextNode
+    time_only: TimeOnly
+    time_only_converter: TimeOnlyConverter
+    time_zone: TimeZone
+    true: TrueClass
+    type: TypeClass
+    dummy: int
+    obj5_return: Return
+    right: Right
+    runtime_type: RuntimeType
+    s: S
+    sbyte: Sbyte
+    sealed: Sealed
+    select: Select
+    purple_self: SelfClass
+    serialize: Serialize
+    set: Set
+    short: Short
+    signed: Signed
+    sizeof: Sizeof
+    stackalloc: Stackalloc
+    static: Static
+    static_assert: StaticAssert
+    static_cast: StaticCast
+    strictfp: Strictfp
+    string: String
+    struct: Struct
+    subscript: Subscript
+    super: Super
+    switch: Switch
+    symbol: Symbol
+    synchronized: Synchronized
+    system: System
+    template: Template
+    then: Then
+    this: This
+    thread_local: ThreadLocal
+    throw: Throw
+    throws: Throws
+    to_string: ToString
+    to_json: ToJSON
+    top_level: TopLevelClass
+    transient: Transient
+    obj5_true: Obj5True
+    obj5_try: Try
+    obj5_type: Obj5Type
+    typealias: Typealias
+    typedef: Typedef
+    typeid: Typeid
+    typename: Typename
+    typeof: Typeof
+    uint: Uint
+    ulong: Ulong
+    unchecked: Unchecked
+    undefined: Undefined
+    union: UnionClass
 
     @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
-
-    @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 Obj5:
-    obj5_self: Self
-    sendable: Sendable
-    serializer_provider: SerializerProvider
-    simple_module: SimpleModule
-    standards: Standards
-    std_deserializer: StdDeserializer
-    std_serializer: StdSerializer
-    time_only: TimeOnly
-    time_only_converter: TimeOnlyConverter
-    time_zone: TimeZone
-    true: TrueClass
-    type: TypeClass
-    uuid: UUIDClass
-    utf8_json_reader: Utf8JSONReader
-    utf8_json_writer: Utf8JSONWriter
-    dummy: int
-    purple_self: SelfClass
-    serialize: Serialize
-    set: Set
-    short: Short
-    signed: Signed
-    sizeof: Sizeof
-    stackalloc: Stackalloc
-    static: Static
-    static_assert: StaticAssert
-    static_cast: StaticCast
-    strictfp: Strictfp
-    string: String
-    struct: Struct
-    subscript: Subscript
-    super: Super
-    switch: Switch
-    symbol: Symbol
-    synchronized: Synchronized
-    system: System
-    template: Template
-    then: Then
-    this: This
-    thread_local: ThreadLocal
-    throw: Throw
-    throws: Throws
-    to_string: ToString
-    to_json: ToJSON
-    top_level: TopLevelClass
-    transient: Transient
-    obj5_true: Obj5True
-    obj5_try: Try
-    obj5_type: Obj5Type
-    typealias: Typealias
-    typedef: Typedef
-    typeid: Typeid
-    typename: Typename
-    typeof: Typeof
-    uint: Uint
-    ulong: Ulong
-    unchecked: Unchecked
-    undefined: Undefined
-    union: UnionClass
-    unowned: Unowned
-    unsafe: Unsafe
-    unsigned: Unsigned
-    ushort: Ushort
-    using: Using
-    var: Var
-    virtual: Virtual
-
-    @staticmethod
-    def from_dict(obj: Any) -> 'Obj5':
+    def from_dict(obj: Any) -> 'Obj5':
         assert isinstance(obj, dict)
+        sel = Sel.from_dict(obj["SEL"])
         obj5_self = Self.from_dict(obj["Self"])
         sendable = Sendable.from_dict(obj["Sendable"])
+        serialization_feature = SerializationFeature.from_dict(obj["SerializationFeature"])
         serializer_provider = SerializerProvider.from_dict(obj["SerializerProvider"])
         simple_module = SimpleModule.from_dict(obj["SimpleModule"])
         standards = Standards.from_dict(obj["Standards"])
         std_deserializer = StdDeserializer.from_dict(obj["StdDeserializer"])
         std_serializer = StdSerializer.from_dict(obj["StdSerializer"])
+        text_node = TextNode.from_dict(obj["TextNode"])
         time_only = TimeOnly.from_dict(obj["TimeOnly"])
         time_only_converter = TimeOnlyConverter.from_dict(obj["TimeOnlyConverter"])
         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"])
         dummy = from_int(obj["dummy"])
+        obj5_return = Return.from_dict(obj["return"])
+        right = Right.from_dict(obj["right"])
+        runtime_type = RuntimeType.from_dict(obj["runtimeType"])
+        s = S.from_dict(obj["s"])
+        sbyte = Sbyte.from_dict(obj["sbyte"])
+        sealed = Sealed.from_dict(obj["sealed"])
+        select = Select.from_dict(obj["select"])
         purple_self = SelfClass.from_dict(obj["self"])
         serialize = Serialize.from_dict(obj["serialize"])
         set = Set.from_dict(obj["set"])
@@ -6125,33 +6132,33 @@ class Obj5:
         unchecked = Unchecked.from_dict(obj["unchecked"])
         undefined = Undefined.from_dict(obj["undefined"])
         union = UnionClass.from_dict(obj["union"])
-        unowned = Unowned.from_dict(obj["unowned"])
-        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(sel, obj5_self, sendable, serialization_feature, serializer_provider, simple_module, standards, std_deserializer, std_serializer, text_node, time_only, time_only_converter, time_zone, true, type, dummy, obj5_return, right, runtime_type, s, sbyte, sealed, select, 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)
 
     def to_dict(self) -> dict:
         result: dict = {}
+        result["SEL"] = to_class(Sel, self.sel)
         result["Self"] = to_class(Self, self.obj5_self)
         result["Sendable"] = to_class(Sendable, self.sendable)
+        result["SerializationFeature"] = to_class(SerializationFeature, self.serialization_feature)
         result["SerializerProvider"] = to_class(SerializerProvider, self.serializer_provider)
         result["SimpleModule"] = to_class(SimpleModule, self.simple_module)
         result["Standards"] = to_class(Standards, self.standards)
         result["StdDeserializer"] = to_class(StdDeserializer, self.std_deserializer)
         result["StdSerializer"] = to_class(StdSerializer, self.std_serializer)
+        result["TextNode"] = to_class(TextNode, self.text_node)
         result["TimeOnly"] = to_class(TimeOnly, self.time_only)
         result["TimeOnlyConverter"] = to_class(TimeOnlyConverter, self.time_only_converter)
         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["dummy"] = from_int(self.dummy)
+        result["return"] = to_class(Return, self.obj5_return)
+        result["right"] = to_class(Right, self.right)
+        result["runtimeType"] = to_class(RuntimeType, self.runtime_type)
+        result["s"] = to_class(S, self.s)
+        result["sbyte"] = to_class(Sbyte, self.sbyte)
+        result["sealed"] = to_class(Sealed, self.sealed)
+        result["select"] = to_class(Select, self.select)
         result["self"] = to_class(SelfClass, self.purple_self)
         result["serialize"] = to_class(Serialize, self.serialize)
         result["set"] = to_class(Set, self.set)
@@ -6194,13 +6201,6 @@ class Obj5:
         result["unchecked"] = to_class(Unchecked, self.unchecked)
         result["undefined"] = to_class(Undefined, self.undefined)
         result["union"] = to_class(UnionClass, self.union)
-        result["unowned"] = to_class(Unowned, self.unowned)
-        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,166 @@ class Yield:
         return result
 
 
+@dataclass
+class Unowned:
+    unowned: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Unowned':
+        assert isinstance(obj, dict)
+        unowned = from_int(obj["unowned"])
+        return Unowned(unowned)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["unowned"] = from_int(self.unowned)
+        return result
+
+
+@dataclass
+class Unsafe:
+    unsafe: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Unsafe':
+        assert isinstance(obj, dict)
+        unsafe = from_int(obj["unsafe"])
+        return Unsafe(unsafe)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["unsafe"] = from_int(self.unsafe)
+        return result
+
+
+@dataclass
+class Unsigned:
+    unsigned: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'Unsigned':
+        assert isinstance(obj, dict)
+        unsigned = from_int(obj["unsigned"])
+        return Unsigned(unsigned)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["unsigned"] = from_int(self.unsigned)
+        return result
+
+
+@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
+
+    @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 +6558,18 @@ class Yes:
 
 @dataclass
 class Obj6:
+    uuid: UUIDClass
+    utf8_json_reader: Utf8JSONReader
+    utf8_json_writer: Utf8JSONWriter
     yes: Yes
     dummy: int
+    unowned: Unowned
+    unsafe: Unsafe
+    unsigned: Unsigned
+    ushort: Ushort
+    using: Using
+    var: Var
+    virtual: Virtual
     void: Void
     volatile: Volatile
     wchar_t: WcharT
@@ -6415,8 +6585,18 @@ 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"])
+        unowned = Unowned.from_dict(obj["unowned"])
+        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"])
         void = Void.from_dict(obj["void"])
         volatile = Volatile.from_dict(obj["volatile"])
         wchar_t = WcharT.from_dict(obj["wchar_t"])
@@ -6428,12 +6608,22 @@ 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, unowned, unsafe, unsigned, ushort, 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["unowned"] = to_class(Unowned, self.unowned)
+        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)
         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..4080339 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
@@ -172,6 +172,31 @@ class ArrayClass < Dry::Struct
   end
 end
 
+class ArrayNode < Dry::Struct
+  attribute :array_node, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      array_node: d.fetch("ArrayNode"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "ArrayNode" => array_node,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class As < Dry::Struct
   attribute :as, Types::Integer
 
@@ -622,6 +647,31 @@ class Boolean < Dry::Struct
   end
 end
 
+class BooleanNode < Dry::Struct
+  attribute :boolean_node, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      boolean_node: d.fetch("BooleanNode"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "BooleanNode" => boolean_node,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Bycopy < Dry::Struct
   attribute :bycopy, Types::Integer
 
@@ -1297,56 +1347,6 @@ class Converter < Dry::Struct
   end
 end
 
-class CultureInfo < Dry::Struct
-  attribute :culture_info, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      culture_info: d.fetch("CultureInfo"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "CultureInfo" => culture_info,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
-class DateClass < Dry::Struct
-  attribute :date, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      date: d.fetch("date"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "date" => date,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
 class Empty < Dry::Struct
   attribute :empty, Types::Integer
 
@@ -1629,6 +1629,7 @@ class Obj1 < Dry::Struct
   attribute :and_eq,           AndEq
   attribute :any,              Any
   attribute :array,            ArrayClass
+  attribute :array_node,       ArrayNode
   attribute :as,               As
   attribute :asm,              ASM
   attribute :assert,           Assert
@@ -1647,6 +1648,7 @@ class Obj1 < Dry::Struct
   attribute :bool,             Bool
   attribute :bool_1,           Obj1Bool
   attribute :boolean,          Boolean
+  attribute :boolean_node,     BooleanNode
   attribute :bycopy,           Bycopy
   attribute :byref,            Byref
   attribute :byte,             Byte
@@ -1674,8 +1676,6 @@ class Obj1 < Dry::Struct
   attribute :convenience,      Convenience
   attribute :convert,          Convert
   attribute :converter,        Converter
-  attribute :culture_info,     CultureInfo
-  attribute :date,             DateClass
   attribute :dummy,            Types::Integer
   attribute :empty,            Empty
   attribute :imaginery,        Imaginery
@@ -1698,6 +1698,7 @@ class Obj1 < Dry::Struct
       and_eq:           AndEq.from_dynamic!(d.fetch("and_eq")),
       any:              Any.from_dynamic!(d.fetch("Any")),
       array:            ArrayClass.from_dynamic!(d.fetch("array")),
+      array_node:       ArrayNode.from_dynamic!(d.fetch("ArrayNode")),
       as:               As.from_dynamic!(d.fetch("as")),
       asm:              ASM.from_dynamic!(d.fetch("asm")),
       assert:           Assert.from_dynamic!(d.fetch("assert")),
@@ -1716,6 +1717,7 @@ class Obj1 < Dry::Struct
       bool:             Bool.from_dynamic!(d.fetch("BOOL")),
       bool_1:           Obj1Bool.from_dynamic!(d.fetch("bool")),
       boolean:          Boolean.from_dynamic!(d.fetch("boolean")),
+      boolean_node:     BooleanNode.from_dynamic!(d.fetch("BooleanNode")),
       bycopy:           Bycopy.from_dynamic!(d.fetch("bycopy")),
       byref:            Byref.from_dynamic!(d.fetch("byref")),
       byte:             Byte.from_dynamic!(d.fetch("byte")),
@@ -1743,8 +1745,6 @@ class Obj1 < Dry::Struct
       convenience:      Convenience.from_dynamic!(d.fetch("convenience")),
       convert:          Convert.from_dynamic!(d.fetch("convert")),
       converter:        Converter.from_dynamic!(d.fetch("converter")),
-      culture_info:     CultureInfo.from_dynamic!(d.fetch("CultureInfo")),
-      date:             DateClass.from_dynamic!(d.fetch("date")),
       dummy:            d.fetch("dummy"),
       empty:            Empty.from_dynamic!(d.fetch("_")),
       imaginery:        Imaginery.from_dynamic!(d.fetch("_Imaginery")),
@@ -1772,6 +1772,7 @@ class Obj1 < Dry::Struct
       "and_eq"          => and_eq.to_dynamic,
       "Any"             => any.to_dynamic,
       "array"           => array.to_dynamic,
+      "ArrayNode"       => array_node.to_dynamic,
       "as"              => as.to_dynamic,
       "asm"             => asm.to_dynamic,
       "assert"          => assert.to_dynamic,
@@ -1790,6 +1791,7 @@ class Obj1 < Dry::Struct
       "BOOL"            => bool.to_dynamic,
       "bool"            => bool_1.to_dynamic,
       "boolean"         => boolean.to_dynamic,
+      "BooleanNode"     => boolean_node.to_dynamic,
       "bycopy"          => bycopy.to_dynamic,
       "byref"           => byref.to_dynamic,
       "byte"            => byte.to_dynamic,
@@ -1817,8 +1819,6 @@ class Obj1 < Dry::Struct
       "convenience"     => convenience.to_dynamic,
       "convert"         => convert.to_dynamic,
       "converter"       => converter.to_dynamic,
-      "CultureInfo"     => culture_info.to_dynamic,
-      "date"            => date.to_dynamic,
       "dummy"           => dummy,
       "_"               => empty.to_dynamic,
       "_Imaginery"      => imaginery.to_dynamic,
@@ -1839,6 +1839,56 @@ class Obj1 < Dry::Struct
   end
 end
 
+class CultureInfo < Dry::Struct
+  attribute :culture_info, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      culture_info: d.fetch("CultureInfo"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "CultureInfo" => culture_info,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class DateClass < Dry::Struct
+  attribute :date, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      date: d.fetch("date"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "date" => date,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class DateFormatter < Dry::Struct
   attribute :date_formatter, Types::Integer
 
@@ -2289,6 +2339,31 @@ class Delete < Dry::Struct
   end
 end
 
+class DeserializationFeature < Dry::Struct
+  attribute :deserialization_feature, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      deserialization_feature: d.fetch("DeserializationFeature"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "DeserializationFeature" => deserialization_feature,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Dict < Dry::Struct
   attribute :dict, Types::Integer
 
@@ -2389,6 +2464,31 @@ class Double < Dry::Struct
   end
 end
 
+class DoubleNode < Dry::Struct
+  attribute :double_node, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      double_node: d.fetch("DoubleNode"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "DoubleNode" => double_node,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Dynamic < Dry::Struct
   attribute :dynamic, Types::Integer
 
@@ -3169,13 +3269,13 @@ class Function < Dry::Struct
   end
 end
 
-class Get < Dry::Struct
-  attribute :get, Types::Integer
+class Def < Dry::Struct
+  attribute :def_def, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      get: d.fetch("get"),
+      def_def: d.fetch("def"),
     )
   end
 
@@ -3185,7 +3285,7 @@ class Get < Dry::Struct
 
   def to_dynamic
     {
-      "get" => get,
+      "def" => def_def,
     }
   end
 
@@ -3194,13 +3294,13 @@ class Get < Dry::Struct
   end
 end
 
-class Global < Dry::Struct
-  attribute :global, Types::Integer
+class Default < Dry::Struct
+  attribute :default_default, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      global: d.fetch("global"),
+      default_default: d.fetch("default"),
     )
   end
 
@@ -3210,7 +3310,7 @@ class Global < Dry::Struct
 
   def to_dynamic
     {
-      "global" => global,
+      "default" => default_default,
     }
   end
 
@@ -3219,13 +3319,13 @@ class Global < Dry::Struct
   end
 end
 
-class Go < Dry::Struct
-  attribute :go, Types::Integer
+class Do < Dry::Struct
+  attribute :do_do, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      go: d.fetch("go"),
+      do_do: d.fetch("do"),
     )
   end
 
@@ -3235,7 +3335,7 @@ class Go < Dry::Struct
 
   def to_dynamic
     {
-      "go" => go,
+      "do" => do_do,
     }
   end
 
@@ -3244,13 +3344,13 @@ class Go < Dry::Struct
   end
 end
 
-class Goto < Dry::Struct
-  attribute :goto, Types::Integer
+class Else < Dry::Struct
+  attribute :else_else, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      goto: d.fetch("goto"),
+      else_else: d.fetch("else"),
     )
   end
 
@@ -3260,7 +3360,7 @@ class Goto < Dry::Struct
 
   def to_dynamic
     {
-      "goto" => goto,
+      "else" => else_else,
     }
   end
 
@@ -3269,13 +3369,13 @@ class Goto < Dry::Struct
   end
 end
 
-class Def < Dry::Struct
-  attribute :def_def, Types::Integer
+class Enum < Dry::Struct
+  attribute :enum_enum, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      def_def: d.fetch("def"),
+      enum_enum: d.fetch("enum"),
     )
   end
 
@@ -3285,7 +3385,7 @@ class Def < Dry::Struct
 
   def to_dynamic
     {
-      "def" => def_def,
+      "enum" => enum_enum,
     }
   end
 
@@ -3294,13 +3394,13 @@ class Def < Dry::Struct
   end
 end
 
-class Default < Dry::Struct
-  attribute :default_default, Types::Integer
+class False < Dry::Struct
+  attribute :false_false, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      default_default: d.fetch("default"),
+      false_false: d.fetch("False"),
     )
   end
 
@@ -3310,7 +3410,7 @@ class Default < Dry::Struct
 
   def to_dynamic
     {
-      "default" => default_default,
+      "False" => false_false,
     }
   end
 
@@ -3319,13 +3419,13 @@ class Default < Dry::Struct
   end
 end
 
-class Do < Dry::Struct
-  attribute :do_do, Types::Integer
+class For < Dry::Struct
+  attribute :for_for, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      do_do: d.fetch("do"),
+      for_for: d.fetch("for"),
     )
   end
 
@@ -3335,7 +3435,7 @@ class Do < Dry::Struct
 
   def to_dynamic
     {
-      "do" => do_do,
+      "for" => for_for,
     }
   end
 
@@ -3344,13 +3444,230 @@ class Do < Dry::Struct
   end
 end
 
-class Else < Dry::Struct
-  attribute :else_else, Types::Integer
+class Obj2 < Dry::Struct
+  attribute :culture_info,            CultureInfo
+  attribute :date,                    DateClass
+  attribute :date_formatter,          DateFormatter
+  attribute :date_only,               DateOnly
+  attribute :date_only_converter,     DateOnlyConverter
+  attribute :date_parse_handling,     DateParseHandling
+  attribute :date_time,               DateTimeClass
+  attribute :date_time_styles,        DateTimeStyles
+  attribute :debugger,                Debugger
+  attribute :decimal,                 Decimal
+  attribute :declare,                 Declare
+  attribute :decltype,                Decltype
+  attribute :decode_string,           DecodeString
+  attribute :decoder,                 Decoder
+  attribute :decoding_error,          DecodingError
+  attribute :defer,                   Defer
+  attribute :deinit,                  Deinit
+  attribute :del,                     Del
+  attribute :delegate,                Delegate
+  attribute :delete,                  Delete
+  attribute :deserialization_feature, DeserializationFeature
+  attribute :dict,                    Dict
+  attribute :dictionary,              Dictionary
+  attribute :did_set,                 DidSet
+  attribute :double,                  Double
+  attribute :double_node,             DoubleNode
+  attribute :dummy,                   Types::Integer
+  attribute :dynamic,                 Dynamic
+  attribute :dynamic_cast,            DynamicCast
+  attribute :elif,                    Elif
+  attribute :encode_quick_type,       EncodeQuickType
+  attribute :encoder,                 Encoder
+  attribute :enum_values,             EnumValues
+  attribute :equality_contract,       EqualityContract
+  attribute :equatable,               Equatable
+  attribute :event,                   Event
+  attribute :except,                  Except
+  attribute :exception,               ExceptionClass
+  attribute :explicit,                Explicit
+  attribute :export,                  Export
+  attribute :exposing,                Exposing
+  attribute :extends,                 Extends
+  attribute :extension,               Extension
+  attribute :extern,                  Extern
+  attribute :fallthrough,             Fallthrough
+  attribute :false_1,                 Obj2False
+  attribute :fileprivate,             Fileprivate
+  attribute :final,                   Final
+  attribute :finally,                 Finally
+  attribute :fixed,                   Fixed
+  attribute :float,                   FloatClass
+  attribute :foreach,                 Foreach
+  attribute :format_exception,        FormatException
+  attribute :friend,                  Friend
+  attribute :from,                    From
+  attribute :from_json,               FromJSON
+  attribute :func,                    Func
+  attribute :function,                Function
+  attribute :obj2_def,                Def
+  attribute :obj2_default,            Default
+  attribute :obj2_do,                 Do
+  attribute :obj2_else,               Else
+  attribute :obj2_enum,               Enum
+  attribute :obj2_false,              False
+  attribute :obj2_for,                For
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      culture_info:            CultureInfo.from_dynamic!(d.fetch("CultureInfo")),
+      date:                    DateClass.from_dynamic!(d.fetch("date")),
+      date_formatter:          DateFormatter.from_dynamic!(d.fetch("DateFormatter")),
+      date_only:               DateOnly.from_dynamic!(d.fetch("DateOnly")),
+      date_only_converter:     DateOnlyConverter.from_dynamic!(d.fetch("DateOnlyConverter")),
+      date_parse_handling:     DateParseHandling.from_dynamic!(d.fetch("date_parse_handling")),
+      date_time:               DateTimeClass.from_dynamic!(d.fetch("DateTime")),
+      date_time_styles:        DateTimeStyles.from_dynamic!(d.fetch("DateTimeStyles")),
+      debugger:                Debugger.from_dynamic!(d.fetch("debugger")),
+      decimal:                 Decimal.from_dynamic!(d.fetch("decimal")),
+      declare:                 Declare.from_dynamic!(d.fetch("declare")),
+      decltype:                Decltype.from_dynamic!(d.fetch("decltype")),
+      decode_string:           DecodeString.from_dynamic!(d.fetch("decode_string")),
+      decoder:                 Decoder.from_dynamic!(d.fetch("Decoder")),
+      decoding_error:          DecodingError.from_dynamic!(d.fetch("DecodingError")),
+      defer:                   Defer.from_dynamic!(d.fetch("defer")),
+      deinit:                  Deinit.from_dynamic!(d.fetch("deinit")),
+      del:                     Del.from_dynamic!(d.fetch("del")),
+      delegate:                Delegate.from_dynamic!(d.fetch("delegate")),
+      delete:                  Delete.from_dynamic!(d.fetch("delete")),
+      deserialization_feature: DeserializationFeature.from_dynamic!(d.fetch("DeserializationFeature")),
+      dict:                    Dict.from_dynamic!(d.fetch("dict")),
+      dictionary:              Dictionary.from_dynamic!(d.fetch("dictionary")),
+      did_set:                 DidSet.from_dynamic!(d.fetch("didSet")),
+      double:                  Double.from_dynamic!(d.fetch("double")),
+      double_node:             DoubleNode.from_dynamic!(d.fetch("DoubleNode")),
+      dummy:                   d.fetch("dummy"),
+      dynamic:                 Dynamic.from_dynamic!(d.fetch("dynamic")),
+      dynamic_cast:            DynamicCast.from_dynamic!(d.fetch("dynamic_cast")),
+      elif:                    Elif.from_dynamic!(d.fetch("elif")),
+      encode_quick_type:       EncodeQuickType.from_dynamic!(d.fetch("encode_quick_type")),
+      encoder:                 Encoder.from_dynamic!(d.fetch("Encoder")),
+      enum_values:             EnumValues.from_dynamic!(d.fetch("EnumValues")),
+      equality_contract:       EqualityContract.from_dynamic!(d.fetch("equalityContract")),
+      equatable:               Equatable.from_dynamic!(d.fetch("Equatable")),
+      event:                   Event.from_dynamic!(d.fetch("event")),
+      except:                  Except.from_dynamic!(d.fetch("except")),
+      exception:               ExceptionClass.from_dynamic!(d.fetch("exception")),
+      explicit:                Explicit.from_dynamic!(d.fetch("explicit")),
+      export:                  Export.from_dynamic!(d.fetch("export")),
+      exposing:                Exposing.from_dynamic!(d.fetch("exposing")),
+      extends:                 Extends.from_dynamic!(d.fetch("extends")),
+      extension:               Extension.from_dynamic!(d.fetch("extension")),
+      extern:                  Extern.from_dynamic!(d.fetch("extern")),
+      fallthrough:             Fallthrough.from_dynamic!(d.fetch("fallthrough")),
+      false_1:                 Obj2False.from_dynamic!(d.fetch("false")),
+      fileprivate:             Fileprivate.from_dynamic!(d.fetch("fileprivate")),
+      final:                   Final.from_dynamic!(d.fetch("final")),
+      finally:                 Finally.from_dynamic!(d.fetch("finally")),
+      fixed:                   Fixed.from_dynamic!(d.fetch("fixed")),
+      float:                   FloatClass.from_dynamic!(d.fetch("float")),
+      foreach:                 Foreach.from_dynamic!(d.fetch("foreach")),
+      format_exception:        FormatException.from_dynamic!(d.fetch("FormatException")),
+      friend:                  Friend.from_dynamic!(d.fetch("friend")),
+      from:                    From.from_dynamic!(d.fetch("from")),
+      from_json:               FromJSON.from_dynamic!(d.fetch("from_json")),
+      func:                    Func.from_dynamic!(d.fetch("func")),
+      function:                Function.from_dynamic!(d.fetch("function")),
+      obj2_def:                Def.from_dynamic!(d.fetch("def")),
+      obj2_default:            Default.from_dynamic!(d.fetch("default")),
+      obj2_do:                 Do.from_dynamic!(d.fetch("do")),
+      obj2_else:               Else.from_dynamic!(d.fetch("else")),
+      obj2_enum:               Enum.from_dynamic!(d.fetch("enum")),
+      obj2_false:              False.from_dynamic!(d.fetch("False")),
+      obj2_for:                For.from_dynamic!(d.fetch("for")),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "CultureInfo"            => culture_info.to_dynamic,
+      "date"                   => date.to_dynamic,
+      "DateFormatter"          => date_formatter.to_dynamic,
+      "DateOnly"               => date_only.to_dynamic,
+      "DateOnlyConverter"      => date_only_converter.to_dynamic,
+      "date_parse_handling"    => date_parse_handling.to_dynamic,
+      "DateTime"               => date_time.to_dynamic,
+      "DateTimeStyles"         => date_time_styles.to_dynamic,
+      "debugger"               => debugger.to_dynamic,
+      "decimal"                => decimal.to_dynamic,
+      "declare"                => declare.to_dynamic,
+      "decltype"               => decltype.to_dynamic,
+      "decode_string"          => decode_string.to_dynamic,
+      "Decoder"                => decoder.to_dynamic,
+      "DecodingError"          => decoding_error.to_dynamic,
+      "defer"                  => defer.to_dynamic,
+      "deinit"                 => deinit.to_dynamic,
+      "del"                    => del.to_dynamic,
+      "delegate"               => delegate.to_dynamic,
+      "delete"                 => delete.to_dynamic,
+      "DeserializationFeature" => deserialization_feature.to_dynamic,
+      "dict"                   => dict.to_dynamic,
+      "dictionary"             => dictionary.to_dynamic,
+      "didSet"                 => did_set.to_dynamic,
+      "double"                 => double.to_dynamic,
+      "DoubleNode"             => double_node.to_dynamic,
+      "dummy"                  => dummy,
+      "dynamic"                => dynamic.to_dynamic,
+      "dynamic_cast"           => dynamic_cast.to_dynamic,
+      "elif"                   => elif.to_dynamic,
+      "encode_quick_type"      => encode_quick_type.to_dynamic,
+      "Encoder"                => encoder.to_dynamic,
+      "EnumValues"             => enum_values.to_dynamic,
+      "equalityContract"       => equality_contract.to_dynamic,
+      "Equatable"              => equatable.to_dynamic,
+      "event"                  => event.to_dynamic,
+      "except"                 => except.to_dynamic,
+      "exception"              => exception.to_dynamic,
+      "explicit"               => explicit.to_dynamic,
+      "export"                 => export.to_dynamic,
+      "exposing"               => exposing.to_dynamic,
+      "extends"                => extends.to_dynamic,
+      "extension"              => extension.to_dynamic,
+      "extern"                 => extern.to_dynamic,
+      "fallthrough"            => fallthrough.to_dynamic,
+      "false"                  => false_1.to_dynamic,
+      "fileprivate"            => fileprivate.to_dynamic,
+      "final"                  => final.to_dynamic,
+      "finally"                => finally.to_dynamic,
+      "fixed"                  => fixed.to_dynamic,
+      "float"                  => float.to_dynamic,
+      "foreach"                => foreach.to_dynamic,
+      "FormatException"        => format_exception.to_dynamic,
+      "friend"                 => friend.to_dynamic,
+      "from"                   => from.to_dynamic,
+      "from_json"              => from_json.to_dynamic,
+      "func"                   => func.to_dynamic,
+      "function"               => function.to_dynamic,
+      "def"                    => obj2_def.to_dynamic,
+      "default"                => obj2_default.to_dynamic,
+      "do"                     => obj2_do.to_dynamic,
+      "else"                   => obj2_else.to_dynamic,
+      "enum"                   => obj2_enum.to_dynamic,
+      "False"                  => obj2_false.to_dynamic,
+      "for"                    => obj2_for.to_dynamic,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class Get < Dry::Struct
+  attribute :get, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      else_else: d.fetch("else"),
+      get: d.fetch("get"),
     )
   end
 
@@ -3360,7 +3677,7 @@ class Else < Dry::Struct
 
   def to_dynamic
     {
-      "else" => else_else,
+      "get" => get,
     }
   end
 
@@ -3369,13 +3686,13 @@ class Else < Dry::Struct
   end
 end
 
-class Enum < Dry::Struct
-  attribute :enum_enum, Types::Integer
+class Global < Dry::Struct
+  attribute :global, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      enum_enum: d.fetch("enum"),
+      global: d.fetch("global"),
     )
   end
 
@@ -3385,7 +3702,7 @@ class Enum < Dry::Struct
 
   def to_dynamic
     {
-      "enum" => enum_enum,
+      "global" => global,
     }
   end
 
@@ -3394,13 +3711,13 @@ class Enum < Dry::Struct
   end
 end
 
-class False < Dry::Struct
-  attribute :false_false, Types::Integer
+class Go < Dry::Struct
+  attribute :go, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      false_false: d.fetch("False"),
+      go: d.fetch("go"),
     )
   end
 
@@ -3410,7 +3727,7 @@ class False < Dry::Struct
 
   def to_dynamic
     {
-      "False" => false_false,
+      "go" => go,
     }
   end
 
@@ -3419,13 +3736,13 @@ class False < Dry::Struct
   end
 end
 
-class For < Dry::Struct
-  attribute :for_for, Types::Integer
+class Goto < Dry::Struct
+  attribute :goto, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      for_for: d.fetch("for"),
+      goto: d.fetch("goto"),
     )
   end
 
@@ -3435,224 +3752,7 @@ class For < Dry::Struct
 
   def to_dynamic
     {
-      "for" => for_for,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
-class Obj2 < Dry::Struct
-  attribute :date_formatter,      DateFormatter
-  attribute :date_only,           DateOnly
-  attribute :date_only_converter, DateOnlyConverter
-  attribute :date_parse_handling, DateParseHandling
-  attribute :date_time,           DateTimeClass
-  attribute :date_time_styles,    DateTimeStyles
-  attribute :debugger,            Debugger
-  attribute :decimal,             Decimal
-  attribute :declare,             Declare
-  attribute :decltype,            Decltype
-  attribute :decode_string,       DecodeString
-  attribute :decoder,             Decoder
-  attribute :decoding_error,      DecodingError
-  attribute :defer,               Defer
-  attribute :deinit,              Deinit
-  attribute :del,                 Del
-  attribute :delegate,            Delegate
-  attribute :delete,              Delete
-  attribute :dict,                Dict
-  attribute :dictionary,          Dictionary
-  attribute :did_set,             DidSet
-  attribute :double,              Double
-  attribute :dummy,               Types::Integer
-  attribute :dynamic,             Dynamic
-  attribute :dynamic_cast,        DynamicCast
-  attribute :elif,                Elif
-  attribute :encode_quick_type,   EncodeQuickType
-  attribute :encoder,             Encoder
-  attribute :enum_values,         EnumValues
-  attribute :equality_contract,   EqualityContract
-  attribute :equatable,           Equatable
-  attribute :event,               Event
-  attribute :except,              Except
-  attribute :exception,           ExceptionClass
-  attribute :explicit,            Explicit
-  attribute :export,              Export
-  attribute :exposing,            Exposing
-  attribute :extends,             Extends
-  attribute :extension,           Extension
-  attribute :extern,              Extern
-  attribute :fallthrough,         Fallthrough
-  attribute :false_1,             Obj2False
-  attribute :fileprivate,         Fileprivate
-  attribute :final,               Final
-  attribute :finally,             Finally
-  attribute :fixed,               Fixed
-  attribute :float,               FloatClass
-  attribute :foreach,             Foreach
-  attribute :format_exception,    FormatException
-  attribute :friend,              Friend
-  attribute :from,                From
-  attribute :from_json,           FromJSON
-  attribute :func,                Func
-  attribute :function,            Function
-  attribute :get,                 Get
-  attribute :global,              Global
-  attribute :go,                  Go
-  attribute :goto,                Goto
-  attribute :obj2_def,            Def
-  attribute :obj2_default,        Default
-  attribute :obj2_do,             Do
-  attribute :obj2_else,           Else
-  attribute :obj2_enum,           Enum
-  attribute :obj2_false,          False
-  attribute :obj2_for,            For
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      date_formatter:      DateFormatter.from_dynamic!(d.fetch("DateFormatter")),
-      date_only:           DateOnly.from_dynamic!(d.fetch("DateOnly")),
-      date_only_converter: DateOnlyConverter.from_dynamic!(d.fetch("DateOnlyConverter")),
-      date_parse_handling: DateParseHandling.from_dynamic!(d.fetch("date_parse_handling")),
-      date_time:           DateTimeClass.from_dynamic!(d.fetch("DateTime")),
-      date_time_styles:    DateTimeStyles.from_dynamic!(d.fetch("DateTimeStyles")),
-      debugger:            Debugger.from_dynamic!(d.fetch("debugger")),
-      decimal:             Decimal.from_dynamic!(d.fetch("decimal")),
-      declare:             Declare.from_dynamic!(d.fetch("declare")),
-      decltype:            Decltype.from_dynamic!(d.fetch("decltype")),
-      decode_string:       DecodeString.from_dynamic!(d.fetch("decode_string")),
-      decoder:             Decoder.from_dynamic!(d.fetch("Decoder")),
-      decoding_error:      DecodingError.from_dynamic!(d.fetch("DecodingError")),
-      defer:               Defer.from_dynamic!(d.fetch("defer")),
-      deinit:              Deinit.from_dynamic!(d.fetch("deinit")),
-      del:                 Del.from_dynamic!(d.fetch("del")),
-      delegate:            Delegate.from_dynamic!(d.fetch("delegate")),
-      delete:              Delete.from_dynamic!(d.fetch("delete")),
-      dict:                Dict.from_dynamic!(d.fetch("dict")),
-      dictionary:          Dictionary.from_dynamic!(d.fetch("dictionary")),
-      did_set:             DidSet.from_dynamic!(d.fetch("didSet")),
-      double:              Double.from_dynamic!(d.fetch("double")),
-      dummy:               d.fetch("dummy"),
-      dynamic:             Dynamic.from_dynamic!(d.fetch("dynamic")),
-      dynamic_cast:        DynamicCast.from_dynamic!(d.fetch("dynamic_cast")),
-      elif:                Elif.from_dynamic!(d.fetch("elif")),
-      encode_quick_type:   EncodeQuickType.from_dynamic!(d.fetch("encode_quick_type")),
-      encoder:             Encoder.from_dynamic!(d.fetch("Encoder")),
-      enum_values:         EnumValues.from_dynamic!(d.fetch("EnumValues")),
-      equality_contract:   EqualityContract.from_dynamic!(d.fetch("equalityContract")),
-      equatable:           Equatable.from_dynamic!(d.fetch("Equatable")),
-      event:               Event.from_dynamic!(d.fetch("event")),
-      except:              Except.from_dynamic!(d.fetch("except")),
-      exception:           ExceptionClass.from_dynamic!(d.fetch("exception")),
-      explicit:            Explicit.from_dynamic!(d.fetch("explicit")),
-      export:              Export.from_dynamic!(d.fetch("export")),
-      exposing:            Exposing.from_dynamic!(d.fetch("exposing")),
-      extends:             Extends.from_dynamic!(d.fetch("extends")),
-      extension:           Extension.from_dynamic!(d.fetch("extension")),
-      extern:              Extern.from_dynamic!(d.fetch("extern")),
-      fallthrough:         Fallthrough.from_dynamic!(d.fetch("fallthrough")),
-      false_1:             Obj2False.from_dynamic!(d.fetch("false")),
-      fileprivate:         Fileprivate.from_dynamic!(d.fetch("fileprivate")),
-      final:               Final.from_dynamic!(d.fetch("final")),
-      finally:             Finally.from_dynamic!(d.fetch("finally")),
-      fixed:               Fixed.from_dynamic!(d.fetch("fixed")),
-      float:               FloatClass.from_dynamic!(d.fetch("float")),
-      foreach:             Foreach.from_dynamic!(d.fetch("foreach")),
-      format_exception:    FormatException.from_dynamic!(d.fetch("FormatException")),
-      friend:              Friend.from_dynamic!(d.fetch("friend")),
-      from:                From.from_dynamic!(d.fetch("from")),
-      from_json:           FromJSON.from_dynamic!(d.fetch("from_json")),
-      func:                Func.from_dynamic!(d.fetch("func")),
-      function:            Function.from_dynamic!(d.fetch("function")),
-      get:                 Get.from_dynamic!(d.fetch("get")),
-      global:              Global.from_dynamic!(d.fetch("global")),
-      go:                  Go.from_dynamic!(d.fetch("go")),
-      goto:                Goto.from_dynamic!(d.fetch("goto")),
-      obj2_def:            Def.from_dynamic!(d.fetch("def")),
-      obj2_default:        Default.from_dynamic!(d.fetch("default")),
-      obj2_do:             Do.from_dynamic!(d.fetch("do")),
-      obj2_else:           Else.from_dynamic!(d.fetch("else")),
-      obj2_enum:           Enum.from_dynamic!(d.fetch("enum")),
-      obj2_false:          False.from_dynamic!(d.fetch("False")),
-      obj2_for:            For.from_dynamic!(d.fetch("for")),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "DateFormatter"       => date_formatter.to_dynamic,
-      "DateOnly"            => date_only.to_dynamic,
-      "DateOnlyConverter"   => date_only_converter.to_dynamic,
-      "date_parse_handling" => date_parse_handling.to_dynamic,
-      "DateTime"            => date_time.to_dynamic,
-      "DateTimeStyles"      => date_time_styles.to_dynamic,
-      "debugger"            => debugger.to_dynamic,
-      "decimal"             => decimal.to_dynamic,
-      "declare"             => declare.to_dynamic,
-      "decltype"            => decltype.to_dynamic,
-      "decode_string"       => decode_string.to_dynamic,
-      "Decoder"             => decoder.to_dynamic,
-      "DecodingError"       => decoding_error.to_dynamic,
-      "defer"               => defer.to_dynamic,
-      "deinit"              => deinit.to_dynamic,
-      "del"                 => del.to_dynamic,
-      "delegate"            => delegate.to_dynamic,
-      "delete"              => delete.to_dynamic,
-      "dict"                => dict.to_dynamic,
-      "dictionary"          => dictionary.to_dynamic,
-      "didSet"              => did_set.to_dynamic,
-      "double"              => double.to_dynamic,
-      "dummy"               => dummy,
-      "dynamic"             => dynamic.to_dynamic,
-      "dynamic_cast"        => dynamic_cast.to_dynamic,
-      "elif"                => elif.to_dynamic,
-      "encode_quick_type"   => encode_quick_type.to_dynamic,
-      "Encoder"             => encoder.to_dynamic,
-      "EnumValues"          => enum_values.to_dynamic,
-      "equalityContract"    => equality_contract.to_dynamic,
-      "Equatable"           => equatable.to_dynamic,
-      "event"               => event.to_dynamic,
-      "except"              => except.to_dynamic,
-      "exception"           => exception.to_dynamic,
-      "explicit"            => explicit.to_dynamic,
-      "export"              => export.to_dynamic,
-      "exposing"            => exposing.to_dynamic,
-      "extends"             => extends.to_dynamic,
-      "extension"           => extension.to_dynamic,
-      "extern"              => extern.to_dynamic,
-      "fallthrough"         => fallthrough.to_dynamic,
-      "false"               => false_1.to_dynamic,
-      "fileprivate"         => fileprivate.to_dynamic,
-      "final"               => final.to_dynamic,
-      "finally"             => finally.to_dynamic,
-      "fixed"               => fixed.to_dynamic,
-      "float"               => float.to_dynamic,
-      "foreach"             => foreach.to_dynamic,
-      "FormatException"     => format_exception.to_dynamic,
-      "friend"              => friend.to_dynamic,
-      "from"                => from.to_dynamic,
-      "from_json"           => from_json.to_dynamic,
-      "func"                => func.to_dynamic,
-      "function"            => function.to_dynamic,
-      "get"                 => get.to_dynamic,
-      "global"              => global.to_dynamic,
-      "go"                  => go.to_dynamic,
-      "goto"                => goto.to_dynamic,
-      "def"                 => obj2_def.to_dynamic,
-      "default"             => obj2_default.to_dynamic,
-      "do"                  => obj2_do.to_dynamic,
-      "else"                => obj2_else.to_dynamic,
-      "enum"                => obj2_enum.to_dynamic,
-      "False"               => obj2_false.to_dynamic,
-      "for"                 => obj2_for.to_dynamic,
+      "goto" => goto,
     }
   end
 
@@ -4086,6 +4186,31 @@ class Int < Dry::Struct
   end
 end
 
+class IntNode < Dry::Struct
+  attribute :int_node, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      int_node: d.fetch("IntNode"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "IntNode" => int_node,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Interface < Dry::Struct
   attribute :interface, Types::Integer
 
@@ -4861,6 +4986,31 @@ class Long < Dry::Struct
   end
 end
 
+class LongNode < Dry::Struct
+  attribute :long_node, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      long_node: d.fetch("LongNode"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "LongNode" => long_node,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Map < Dry::Struct
   attribute :map, Types::Integer
 
@@ -5011,106 +5161,6 @@ class Namespace < Dry::Struct
   end
 end
 
-class Native < Dry::Struct
-  attribute :native, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      native: d.fetch("native"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "native" => native,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
-class Newtonsoft < Dry::Struct
-  attribute :newtonsoft, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      newtonsoft: d.fetch("newtonsoft"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "newtonsoft" => newtonsoft,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
-class No < Dry::Struct
-  attribute :no, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      no: d.fetch("NO"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "NO" => no,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
-class Noexcept < Dry::Struct
-  attribute :noexcept, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      noexcept: d.fetch("noexcept"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "noexcept" => noexcept,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
 class If < Dry::Struct
   attribute :if_if, Types::Integer
 
@@ -5211,58 +5261,12 @@ class ModuleClass < Dry::Struct
   end
 end
 
-class New < Dry::Struct
-  attribute :new_new, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      new_new: d.fetch("new"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "new" => new_new,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
-class Nil < Dry::Struct
-  attribute :nil_nil, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      nil_nil: d.fetch("nil"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "nil" => nil_nil,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
 class Obj3 < Dry::Struct
   attribute :dummy,                          Types::Integer
+  attribute :get,                            Get
+  attribute :global,                         Global
+  attribute :go,                             Go
+  attribute :goto,                           Goto
   attribute :guard,                          Guard
   attribute :has_own_property,               HasOwnProperty
   attribute :hash_code,                      HashCode
@@ -5280,6 +5284,7 @@ class Obj3 < Dry::Struct
   attribute :inout,                          Inout
   attribute :instanceof,                     Instanceof
   attribute :int,                            Int
+  attribute :int_node,                       IntNode
   attribute :interface,                      Interface
   attribute :internal,                       Internal
   attribute :is,                             Is
@@ -5311,27 +5316,26 @@ class Obj3 < Dry::Struct
   attribute :locale,                         Locale
   attribute :lock,                           Lock
   attribute :long,                           Long
+  attribute :long_node,                      LongNode
   attribute :map,                            Map
   attribute :map_entry,                      MapEntry
   attribute :metadata_property_handling,     MetadataPropertyHandling
   attribute :mutable,                        Mutable
   attribute :mutating,                       Mutating
   attribute :namespace,                      Namespace
-  attribute :native,                         Native
-  attribute :newtonsoft,                     Newtonsoft
-  attribute :no,                             No
-  attribute :noexcept,                       Noexcept
   attribute :obj3_if,                        If
   attribute :obj3_in,                        In
   attribute :obj3_lambda,                    Lambda
   attribute :obj3_module,                    ModuleClass
-  attribute :obj3_new,                       New
-  attribute :obj3_nil,                       Nil
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
       dummy:                          d.fetch("dummy"),
+      get:                            Get.from_dynamic!(d.fetch("get")),
+      global:                         Global.from_dynamic!(d.fetch("global")),
+      go:                             Go.from_dynamic!(d.fetch("go")),
+      goto:                           Goto.from_dynamic!(d.fetch("goto")),
       guard:                          Guard.from_dynamic!(d.fetch("guard")),
       has_own_property:               HasOwnProperty.from_dynamic!(d.fetch("hasOwnProperty")),
       hash_code:                      HashCode.from_dynamic!(d.fetch("hashCode")),
@@ -5349,6 +5353,7 @@ class Obj3 < Dry::Struct
       inout:                          Inout.from_dynamic!(d.fetch("inout")),
       instanceof:                     Instanceof.from_dynamic!(d.fetch("instanceof")),
       int:                            Int.from_dynamic!(d.fetch("int")),
+      int_node:                       IntNode.from_dynamic!(d.fetch("IntNode")),
       interface:                      Interface.from_dynamic!(d.fetch("interface")),
       internal:                       Internal.from_dynamic!(d.fetch("internal")),
       is:                             Is.from_dynamic!(d.fetch("is")),
@@ -5380,22 +5385,17 @@ class Obj3 < Dry::Struct
       locale:                         Locale.from_dynamic!(d.fetch("Locale")),
       lock:                           Lock.from_dynamic!(d.fetch("lock")),
       long:                           Long.from_dynamic!(d.fetch("long")),
+      long_node:                      LongNode.from_dynamic!(d.fetch("LongNode")),
       map:                            Map.from_dynamic!(d.fetch("map")),
       map_entry:                      MapEntry.from_dynamic!(d.fetch("MapEntry")),
       metadata_property_handling:     MetadataPropertyHandling.from_dynamic!(d.fetch("metadata_property_handling")),
       mutable:                        Mutable.from_dynamic!(d.fetch("mutable")),
       mutating:                       Mutating.from_dynamic!(d.fetch("mutating")),
       namespace:                      Namespace.from_dynamic!(d.fetch("namespace")),
-      native:                         Native.from_dynamic!(d.fetch("native")),
-      newtonsoft:                     Newtonsoft.from_dynamic!(d.fetch("newtonsoft")),
-      no:                             No.from_dynamic!(d.fetch("NO")),
-      noexcept:                       Noexcept.from_dynamic!(d.fetch("noexcept")),
       obj3_if:                        If.from_dynamic!(d.fetch("if")),
       obj3_in:                        In.from_dynamic!(d.fetch("in")),
       obj3_lambda:                    Lambda.from_dynamic!(d.fetch("lambda")),
       obj3_module:                    ModuleClass.from_dynamic!(d.fetch("module")),
-      obj3_new:                       New.from_dynamic!(d.fetch("new")),
-      obj3_nil:                       Nil.from_dynamic!(d.fetch("nil")),
     )
   end
 
@@ -5406,6 +5406,10 @@ class Obj3 < Dry::Struct
   def to_dynamic
     {
       "dummy"                      => dummy,
+      "get"                        => get.to_dynamic,
+      "global"                     => global.to_dynamic,
+      "go"                         => go.to_dynamic,
+      "goto"                       => goto.to_dynamic,
       "guard"                      => guard.to_dynamic,
       "hasOwnProperty"             => has_own_property.to_dynamic,
       "hashCode"                   => hash_code.to_dynamic,
@@ -5423,6 +5427,7 @@ class Obj3 < Dry::Struct
       "inout"                      => inout.to_dynamic,
       "instanceof"                 => instanceof.to_dynamic,
       "int"                        => int.to_dynamic,
+      "IntNode"                    => int_node.to_dynamic,
       "interface"                  => interface.to_dynamic,
       "internal"                   => internal.to_dynamic,
       "is"                         => is.to_dynamic,
@@ -5454,22 +5459,17 @@ class Obj3 < Dry::Struct
       "Locale"                     => locale.to_dynamic,
       "lock"                       => lock.to_dynamic,
       "long"                       => long.to_dynamic,
+      "LongNode"                   => long_node.to_dynamic,
       "map"                        => map.to_dynamic,
       "MapEntry"                   => map_entry.to_dynamic,
       "metadata_property_handling" => metadata_property_handling.to_dynamic,
       "mutable"                    => mutable.to_dynamic,
       "mutating"                   => mutating.to_dynamic,
       "namespace"                  => namespace.to_dynamic,
-      "native"                     => native.to_dynamic,
-      "newtonsoft"                 => newtonsoft.to_dynamic,
-      "NO"                         => no.to_dynamic,
-      "noexcept"                   => noexcept.to_dynamic,
       "if"                         => obj3_if.to_dynamic,
       "in"                         => obj3_in.to_dynamic,
       "lambda"                     => obj3_lambda.to_dynamic,
       "module"                     => obj3_module.to_dynamic,
-      "new"                        => obj3_new.to_dynamic,
-      "nil"                        => obj3_nil.to_dynamic,
     }
   end
 
@@ -5478,13 +5478,13 @@ class Obj3 < Dry::Struct
   end
 end
 
-class NoSuchMethod < Dry::Struct
-  attribute :no_such_method, Types::Integer
+class Native < Dry::Struct
+  attribute :native, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      no_such_method: d.fetch("noSuchMethod"),
+      native: d.fetch("native"),
     )
   end
 
@@ -5494,7 +5494,7 @@ class NoSuchMethod < Dry::Struct
 
   def to_dynamic
     {
-      "noSuchMethod" => no_such_method,
+      "native" => native,
     }
   end
 
@@ -5503,13 +5503,13 @@ class NoSuchMethod < Dry::Struct
   end
 end
 
-class Nonatomic < Dry::Struct
-  attribute :nonatomic, Types::Integer
+class Newtonsoft < Dry::Struct
+  attribute :newtonsoft, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      nonatomic: d.fetch("nonatomic"),
+      newtonsoft: d.fetch("newtonsoft"),
     )
   end
 
@@ -5519,7 +5519,7 @@ class Nonatomic < Dry::Struct
 
   def to_dynamic
     {
-      "nonatomic" => nonatomic,
+      "newtonsoft" => newtonsoft,
     }
   end
 
@@ -5528,13 +5528,13 @@ class Nonatomic < Dry::Struct
   end
 end
 
-class None < Dry::Struct
-  attribute :none, Types::Integer
+class No < Dry::Struct
+  attribute :no, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      none: d.fetch("None"),
+      no: d.fetch("NO"),
     )
   end
 
@@ -5544,7 +5544,7 @@ class None < Dry::Struct
 
   def to_dynamic
     {
-      "None" => none,
+      "NO" => no,
     }
   end
 
@@ -5553,13 +5553,113 @@ class None < Dry::Struct
   end
 end
 
-class Nonlocal < Dry::Struct
-  attribute :nonlocal, Types::Integer
+class NoSuchMethod < Dry::Struct
+  attribute :no_such_method, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      nonlocal: d.fetch("nonlocal"),
+      no_such_method: d.fetch("noSuchMethod"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "noSuchMethod" => no_such_method,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class Noexcept < Dry::Struct
+  attribute :noexcept, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      noexcept: d.fetch("noexcept"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "noexcept" => noexcept,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class Nonatomic < Dry::Struct
+  attribute :nonatomic, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      nonatomic: d.fetch("nonatomic"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "nonatomic" => nonatomic,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class None < Dry::Struct
+  attribute :none, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      none: d.fetch("None"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "None" => none,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class Nonlocal < Dry::Struct
+  attribute :nonlocal, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      nonlocal: d.fetch("nonlocal"),
     )
   end
 
@@ -5728,6 +5828,31 @@ class Null < Dry::Struct
   end
 end
 
+class NullNode < Dry::Struct
+  attribute :null_node, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      null_node: d.fetch("NullNode"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "NullNode" => null_node,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Nullptr < Dry::Struct
   attribute :nullptr, Types::Integer
 
@@ -5778,6 +5903,56 @@ class Number < Dry::Struct
   end
 end
 
+class New < Dry::Struct
+  attribute :new_new, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      new_new: d.fetch("new"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "new" => new_new,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class Nil < Dry::Struct
+  attribute :nil_nil, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      nil_nil: d.fetch("nil"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "nil" => nil_nil,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class NoneClass < Dry::Struct
   attribute :none, Types::Integer
 
@@ -6053,38 +6228,13 @@ class Require < Dry::Struct
   end
 end
 
-class Return < Dry::Struct
-  attribute :return_return, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      return_return: d.fetch("return"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "return" => return_return,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
-class Select < Dry::Struct
-  attribute :select_select, Types::Integer
+class ObjectClass < Dry::Struct
+  attribute :object, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      select_select: d.fetch("select"),
+      object: d.fetch("object"),
     )
   end
 
@@ -6094,7 +6244,7 @@ class Select < Dry::Struct
 
   def to_dynamic
     {
-      "select" => select_select,
+      "object" => object,
     }
   end
 
@@ -6103,13 +6253,13 @@ class Select < Dry::Struct
   end
 end
 
-class ObjectClass < Dry::Struct
-  attribute :object, Types::Integer
+class ObjectMapper < Dry::Struct
+  attribute :object_mapper, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      object: d.fetch("object"),
+      object_mapper: d.fetch("ObjectMapper"),
     )
   end
 
@@ -6119,7 +6269,7 @@ class ObjectClass < Dry::Struct
 
   def to_dynamic
     {
-      "object" => object,
+      "ObjectMapper" => object_mapper,
     }
   end
 
@@ -6128,13 +6278,13 @@ class ObjectClass < Dry::Struct
   end
 end
 
-class ObjectMapper < Dry::Struct
-  attribute :object_mapper, Types::Integer
+class ObjectNode < Dry::Struct
+  attribute :object_node, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      object_mapper: d.fetch("ObjectMapper"),
+      object_node: d.fetch("ObjectNode"),
     )
   end
 
@@ -6144,7 +6294,7 @@ class ObjectMapper < Dry::Struct
 
   def to_dynamic
     {
-      "ObjectMapper" => object_mapper,
+      "ObjectNode" => object_node,
     }
   end
 
@@ -6928,159 +7078,13 @@ class Rethrows < Dry::Struct
   end
 end
 
-class Right < Dry::Struct
-  attribute :right, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      right: d.fetch("right"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "right" => right,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
-class RuntimeType < Dry::Struct
-  attribute :runtime_type, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      runtime_type: d.fetch("runtimeType"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "runtimeType" => runtime_type,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
-class S < Dry::Struct
-  attribute :s, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      s: d.fetch("s"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "s" => s,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
-class Sbyte < Dry::Struct
-  attribute :sbyte, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      sbyte: d.fetch("sbyte"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "sbyte" => sbyte,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
-class Sealed < Dry::Struct
-  attribute :sealed, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      sealed: d.fetch("sealed"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "sealed" => sealed,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
-class Sel < Dry::Struct
-  attribute :sel, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      sel: d.fetch("SEL"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "SEL" => sel,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
 class Obj4 < Dry::Struct
   attribute :dummy,            Types::Integer
+  attribute :native,           Native
+  attribute :newtonsoft,       Newtonsoft
+  attribute :no,               No
   attribute :no_such_method,   NoSuchMethod
+  attribute :noexcept,         Noexcept
   attribute :nonatomic,        Nonatomic
   attribute :none,             None
   attribute :nonlocal,         Nonlocal
@@ -7090,8 +7094,11 @@ class Obj4 < Dry::Struct
   attribute :ns_object,        NSObject
   attribute :ns_string,        NSString
   attribute :null,             Null
+  attribute :null_node,        NullNode
   attribute :nullptr,          Nullptr
   attribute :number,           Number
+  attribute :obj4_new,         New
+  attribute :obj4_nil,         Nil
   attribute :obj4_none,        NoneClass
   attribute :obj4_not,         Not
   attribute :obj4_null,        NullClass
@@ -7103,10 +7110,9 @@ class Obj4 < Dry::Struct
   attribute :obj4_protocol,    ProtocolClass
   attribute :obj4_raise,       Raise
   attribute :obj4_require,     Require
-  attribute :obj4_return,      Return
-  attribute :obj4_select,      Select
   attribute :object,           ObjectClass
   attribute :object_mapper,    ObjectMapper
+  attribute :object_node,      ObjectNode
   attribute :of,               Of
   attribute :oneway,           Oneway
   attribute :operator,         Operator
@@ -7138,18 +7144,16 @@ class Obj4 < Dry::Struct
   attribute :restrict,         Restrict
   attribute :retain,           Retain
   attribute :rethrows,         Rethrows
-  attribute :right,            Right
-  attribute :runtime_type,     RuntimeType
-  attribute :s,                S
-  attribute :sbyte,            Sbyte
-  attribute :sealed,           Sealed
-  attribute :sel,              Sel
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
       dummy:            d.fetch("dummy"),
+      native:           Native.from_dynamic!(d.fetch("native")),
+      newtonsoft:       Newtonsoft.from_dynamic!(d.fetch("newtonsoft")),
+      no:               No.from_dynamic!(d.fetch("NO")),
       no_such_method:   NoSuchMethod.from_dynamic!(d.fetch("noSuchMethod")),
+      noexcept:         Noexcept.from_dynamic!(d.fetch("noexcept")),
       nonatomic:        Nonatomic.from_dynamic!(d.fetch("nonatomic")),
       none:             None.from_dynamic!(d.fetch("None")),
       nonlocal:         Nonlocal.from_dynamic!(d.fetch("nonlocal")),
@@ -7159,8 +7163,11 @@ class Obj4 < Dry::Struct
       ns_object:        NSObject.from_dynamic!(d.fetch("NSObject")),
       ns_string:        NSString.from_dynamic!(d.fetch("NSString")),
       null:             Null.from_dynamic!(d.fetch("NULL")),
+      null_node:        NullNode.from_dynamic!(d.fetch("NullNode")),
       nullptr:          Nullptr.from_dynamic!(d.fetch("nullptr")),
       number:           Number.from_dynamic!(d.fetch("number")),
+      obj4_new:         New.from_dynamic!(d.fetch("new")),
+      obj4_nil:         Nil.from_dynamic!(d.fetch("nil")),
       obj4_none:        NoneClass.from_dynamic!(d.fetch("none")),
       obj4_not:         Not.from_dynamic!(d.fetch("not")),
       obj4_null:        NullClass.from_dynamic!(d.fetch("null")),
@@ -7172,10 +7179,9 @@ class Obj4 < Dry::Struct
       obj4_protocol:    ProtocolClass.from_dynamic!(d.fetch("protocol")),
       obj4_raise:       Raise.from_dynamic!(d.fetch("raise")),
       obj4_require:     Require.from_dynamic!(d.fetch("require")),
-      obj4_return:      Return.from_dynamic!(d.fetch("return")),
-      obj4_select:      Select.from_dynamic!(d.fetch("select")),
       object:           ObjectClass.from_dynamic!(d.fetch("object")),
       object_mapper:    ObjectMapper.from_dynamic!(d.fetch("ObjectMapper")),
+      object_node:      ObjectNode.from_dynamic!(d.fetch("ObjectNode")),
       of:               Of.from_dynamic!(d.fetch("of")),
       oneway:           Oneway.from_dynamic!(d.fetch("oneway")),
       operator:         Operator.from_dynamic!(d.fetch("operator")),
@@ -7207,12 +7213,6 @@ class Obj4 < Dry::Struct
       restrict:         Restrict.from_dynamic!(d.fetch("restrict")),
       retain:           Retain.from_dynamic!(d.fetch("retain")),
       rethrows:         Rethrows.from_dynamic!(d.fetch("rethrows")),
-      right:            Right.from_dynamic!(d.fetch("right")),
-      runtime_type:     RuntimeType.from_dynamic!(d.fetch("runtimeType")),
-      s:                S.from_dynamic!(d.fetch("s")),
-      sbyte:            Sbyte.from_dynamic!(d.fetch("sbyte")),
-      sealed:           Sealed.from_dynamic!(d.fetch("sealed")),
-      sel:              Sel.from_dynamic!(d.fetch("SEL")),
     )
   end
 
@@ -7223,7 +7223,11 @@ class Obj4 < Dry::Struct
   def to_dynamic
     {
       "dummy"            => dummy,
+      "native"           => native.to_dynamic,
+      "newtonsoft"       => newtonsoft.to_dynamic,
+      "NO"               => no.to_dynamic,
       "noSuchMethod"     => no_such_method.to_dynamic,
+      "noexcept"         => noexcept.to_dynamic,
       "nonatomic"        => nonatomic.to_dynamic,
       "None"             => none.to_dynamic,
       "nonlocal"         => nonlocal.to_dynamic,
@@ -7233,8 +7237,11 @@ class Obj4 < Dry::Struct
       "NSObject"         => ns_object.to_dynamic,
       "NSString"         => ns_string.to_dynamic,
       "NULL"             => null.to_dynamic,
+      "NullNode"         => null_node.to_dynamic,
       "nullptr"          => nullptr.to_dynamic,
       "number"           => number.to_dynamic,
+      "new"              => obj4_new.to_dynamic,
+      "nil"              => obj4_nil.to_dynamic,
       "none"             => obj4_none.to_dynamic,
       "not"              => obj4_not.to_dynamic,
       "null"             => obj4_null.to_dynamic,
@@ -7246,10 +7253,9 @@ class Obj4 < Dry::Struct
       "protocol"         => obj4_protocol.to_dynamic,
       "raise"            => obj4_raise.to_dynamic,
       "require"          => obj4_require.to_dynamic,
-      "return"           => obj4_return.to_dynamic,
-      "select"           => obj4_select.to_dynamic,
       "object"           => object.to_dynamic,
       "ObjectMapper"     => object_mapper.to_dynamic,
+      "ObjectNode"       => object_node.to_dynamic,
       "of"               => of.to_dynamic,
       "oneway"           => oneway.to_dynamic,
       "operator"         => operator.to_dynamic,
@@ -7281,12 +7287,6 @@ class Obj4 < Dry::Struct
       "restrict"         => restrict.to_dynamic,
       "retain"           => retain.to_dynamic,
       "rethrows"         => rethrows.to_dynamic,
-      "right"            => right.to_dynamic,
-      "runtimeType"      => runtime_type.to_dynamic,
-      "s"                => s.to_dynamic,
-      "sbyte"            => sbyte.to_dynamic,
-      "sealed"           => sealed.to_dynamic,
-      "SEL"              => sel.to_dynamic,
     }
   end
 
@@ -7295,13 +7295,213 @@ class Obj4 < Dry::Struct
   end
 end
 
-class SelfClass < Dry::Struct
-  attribute :self_self, Types::Integer
+class Return < Dry::Struct
+  attribute :return_return, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      return_return: d.fetch("return"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "return" => return_return,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class Select < Dry::Struct
+  attribute :select_select, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      select_select: d.fetch("select"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "select" => select_select,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class SelfClass < Dry::Struct
+  attribute :self_self, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      self_self: d.fetch("Self"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "Self" => self_self,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class Super < Dry::Struct
+  attribute :super_super, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      super_super: d.fetch("super"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "super" => super_super,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class System < Dry::Struct
+  attribute :system_system, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      system_system: d.fetch("system"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "system" => system_system,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class Then < Dry::Struct
+  attribute :then_then, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      then_then: d.fetch("then"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "then" => then_then,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class Throw < Dry::Struct
+  attribute :throw_throw, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      throw_throw: d.fetch("throw"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "throw" => throw_throw,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class ToJSON < Dry::Struct
+  attribute :to_json_to_json, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      to_json_to_json: d.fetch("to_json"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "to_json" => to_json_to_json,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class True < Dry::Struct
+  attribute :true_true, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      self_self: d.fetch("Self"),
+      true_true: d.fetch("True"),
     )
   end
 
@@ -7311,7 +7511,7 @@ class SelfClass < Dry::Struct
 
   def to_dynamic
     {
-      "Self" => self_self,
+      "True" => true_true,
     }
   end
 
@@ -7320,13 +7520,13 @@ class SelfClass < Dry::Struct
   end
 end
 
-class Super < Dry::Struct
-  attribute :super_super, Types::Integer
+class Try < Dry::Struct
+  attribute :try_try, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      super_super: d.fetch("super"),
+      try_try: d.fetch("try"),
     )
   end
 
@@ -7336,7 +7536,7 @@ class Super < Dry::Struct
 
   def to_dynamic
     {
-      "super" => super_super,
+      "try" => try_try,
     }
   end
 
@@ -7345,13 +7545,13 @@ class Super < Dry::Struct
   end
 end
 
-class System < Dry::Struct
-  attribute :system_system, Types::Integer
+class Type < Dry::Struct
+  attribute :type_type, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      system_system: d.fetch("system"),
+      type_type: d.fetch("Type"),
     )
   end
 
@@ -7361,7 +7561,7 @@ class System < Dry::Struct
 
   def to_dynamic
     {
-      "system" => system_system,
+      "Type" => type_type,
     }
   end
 
@@ -7370,13 +7570,13 @@ class System < Dry::Struct
   end
 end
 
-class Then < Dry::Struct
-  attribute :then_then, Types::Integer
+class Right < Dry::Struct
+  attribute :right, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      then_then: d.fetch("then"),
+      right: d.fetch("right"),
     )
   end
 
@@ -7386,7 +7586,7 @@ class Then < Dry::Struct
 
   def to_dynamic
     {
-      "then" => then_then,
+      "right" => right,
     }
   end
 
@@ -7395,13 +7595,13 @@ class Then < Dry::Struct
   end
 end
 
-class Throw < Dry::Struct
-  attribute :throw_throw, Types::Integer
+class RuntimeType < Dry::Struct
+  attribute :runtime_type, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      throw_throw: d.fetch("throw"),
+      runtime_type: d.fetch("runtimeType"),
     )
   end
 
@@ -7411,7 +7611,7 @@ class Throw < Dry::Struct
 
   def to_dynamic
     {
-      "throw" => throw_throw,
+      "runtimeType" => runtime_type,
     }
   end
 
@@ -7420,13 +7620,13 @@ class Throw < Dry::Struct
   end
 end
 
-class ToJSON < Dry::Struct
-  attribute :to_json_to_json, Types::Integer
+class S < Dry::Struct
+  attribute :s, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      to_json_to_json: d.fetch("to_json"),
+      s: d.fetch("s"),
     )
   end
 
@@ -7436,7 +7636,7 @@ class ToJSON < Dry::Struct
 
   def to_dynamic
     {
-      "to_json" => to_json_to_json,
+      "s" => s,
     }
   end
 
@@ -7445,13 +7645,13 @@ class ToJSON < Dry::Struct
   end
 end
 
-class True < Dry::Struct
-  attribute :true_true, Types::Integer
+class Sbyte < Dry::Struct
+  attribute :sbyte, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      true_true: d.fetch("True"),
+      sbyte: d.fetch("sbyte"),
     )
   end
 
@@ -7461,7 +7661,7 @@ class True < Dry::Struct
 
   def to_dynamic
     {
-      "True" => true_true,
+      "sbyte" => sbyte,
     }
   end
 
@@ -7470,13 +7670,13 @@ class True < Dry::Struct
   end
 end
 
-class Try < Dry::Struct
-  attribute :try_try, Types::Integer
+class Sealed < Dry::Struct
+  attribute :sealed, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      try_try: d.fetch("try"),
+      sealed: d.fetch("sealed"),
     )
   end
 
@@ -7486,7 +7686,7 @@ class Try < Dry::Struct
 
   def to_dynamic
     {
-      "try" => try_try,
+      "sealed" => sealed,
     }
   end
 
@@ -7495,13 +7695,13 @@ class Try < Dry::Struct
   end
 end
 
-class Type < Dry::Struct
-  attribute :type_type, Types::Integer
+class Sel < Dry::Struct
+  attribute :sel, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      type_type: d.fetch("Type"),
+      sel: d.fetch("SEL"),
     )
   end
 
@@ -7511,7 +7711,7 @@ class Type < Dry::Struct
 
   def to_dynamic
     {
-      "Type" => type_type,
+      "SEL" => sel,
     }
   end
 
@@ -7570,6 +7770,31 @@ class Sendable < Dry::Struct
   end
 end
 
+class SerializationFeature < Dry::Struct
+  attribute :serialization_feature, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      serialization_feature: d.fetch("SerializationFeature"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "SerializationFeature" => serialization_feature,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Serialize < Dry::Struct
   attribute :serialize, Types::Integer
 
@@ -8120,6 +8345,31 @@ class Template < Dry::Struct
   end
 end
 
+class TextNode < Dry::Struct
+  attribute :text_node, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      text_node: d.fetch("TextNode"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "TextNode" => text_node,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class This < Dry::Struct
   attribute :this, Types::Integer
 
@@ -8645,13 +8895,230 @@ class Union < Dry::Struct
   end
 end
 
-class Unowned < Dry::Struct
-  attribute :unowned, Types::Integer
+class Obj5 < Dry::Struct
+  attribute :dummy,                 Types::Integer
+  attribute :obj5_return,           Return
+  attribute :obj5_select,           Select
+  attribute :obj5_self,             SelfClass
+  attribute :obj5_super,            Super
+  attribute :obj5_system,           System
+  attribute :obj5_then,             Then
+  attribute :obj5_throw,            Throw
+  attribute :obj5_to_json,          ToJSON
+  attribute :obj5_true,             True
+  attribute :obj5_try,              Try
+  attribute :obj5_type,             Type
+  attribute :right,                 Right
+  attribute :runtime_type,          RuntimeType
+  attribute :s,                     S
+  attribute :sbyte,                 Sbyte
+  attribute :sealed,                Sealed
+  attribute :sel,                   Sel
+  attribute :self_1,                Obj5Self
+  attribute :sendable,              Sendable
+  attribute :serialization_feature, SerializationFeature
+  attribute :serialize,             Serialize
+  attribute :serializer_provider,   SerializerProvider
+  attribute :set,                   SetClass
+  attribute :short,                 Short
+  attribute :signed,                Signed
+  attribute :simple_module,         SimpleModule
+  attribute :sizeof,                Sizeof
+  attribute :stackalloc,            Stackalloc
+  attribute :standards,             Standards
+  attribute :static,                Static
+  attribute :static_assert,         StaticAssert
+  attribute :static_cast,           StaticCast
+  attribute :std_deserializer,      StdDeserializer
+  attribute :std_serializer,        StdSerializer
+  attribute :strictfp,              Strictfp
+  attribute :string,                StringClass
+  attribute :struct,                StructClass
+  attribute :subscript,             Subscript
+  attribute :switch,                Switch
+  attribute :symbol,                SymbolClass
+  attribute :synchronized,          Synchronized
+  attribute :template,              Template
+  attribute :text_node,             TextNode
+  attribute :this,                  This
+  attribute :thread_local,          ThreadLocal
+  attribute :throws,                Throws
+  attribute :time_only,             TimeOnly
+  attribute :time_only_converter,   TimeOnlyConverter
+  attribute :time_zone,             TimeZone
+  attribute :to_string,             ToString
+  attribute :top_level,             TopLevelClass
+  attribute :transient,             Transient
+  attribute :true_1,                Obj5True
+  attribute :type_1,                TypeClass
+  attribute :typealias,             Typealias
+  attribute :typedef,               Typedef
+  attribute :typeid,                Typeid
+  attribute :typename,              Typename
+  attribute :typeof,                Typeof
+  attribute :uint,                  Uint
+  attribute :ulong,                 Ulong
+  attribute :unchecked,             Unchecked
+  attribute :undefined,             UndefinedClass
+  attribute :union,                 Union
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      dummy:                 d.fetch("dummy"),
+      obj5_return:           Return.from_dynamic!(d.fetch("return")),
+      obj5_select:           Select.from_dynamic!(d.fetch("select")),
+      obj5_self:             SelfClass.from_dynamic!(d.fetch("Self")),
+      obj5_super:            Super.from_dynamic!(d.fetch("super")),
+      obj5_system:           System.from_dynamic!(d.fetch("system")),
+      obj5_then:             Then.from_dynamic!(d.fetch("then")),
+      obj5_throw:            Throw.from_dynamic!(d.fetch("throw")),
+      obj5_to_json:          ToJSON.from_dynamic!(d.fetch("to_json")),
+      obj5_true:             True.from_dynamic!(d.fetch("True")),
+      obj5_try:              Try.from_dynamic!(d.fetch("try")),
+      obj5_type:             Type.from_dynamic!(d.fetch("Type")),
+      right:                 Right.from_dynamic!(d.fetch("right")),
+      runtime_type:          RuntimeType.from_dynamic!(d.fetch("runtimeType")),
+      s:                     S.from_dynamic!(d.fetch("s")),
+      sbyte:                 Sbyte.from_dynamic!(d.fetch("sbyte")),
+      sealed:                Sealed.from_dynamic!(d.fetch("sealed")),
+      sel:                   Sel.from_dynamic!(d.fetch("SEL")),
+      self_1:                Obj5Self.from_dynamic!(d.fetch("self")),
+      sendable:              Sendable.from_dynamic!(d.fetch("Sendable")),
+      serialization_feature: SerializationFeature.from_dynamic!(d.fetch("SerializationFeature")),
+      serialize:             Serialize.from_dynamic!(d.fetch("serialize")),
+      serializer_provider:   SerializerProvider.from_dynamic!(d.fetch("SerializerProvider")),
+      set:                   SetClass.from_dynamic!(d.fetch("set")),
+      short:                 Short.from_dynamic!(d.fetch("short")),
+      signed:                Signed.from_dynamic!(d.fetch("signed")),
+      simple_module:         SimpleModule.from_dynamic!(d.fetch("SimpleModule")),
+      sizeof:                Sizeof.from_dynamic!(d.fetch("sizeof")),
+      stackalloc:            Stackalloc.from_dynamic!(d.fetch("stackalloc")),
+      standards:             Standards.from_dynamic!(d.fetch("Standards")),
+      static:                Static.from_dynamic!(d.fetch("static")),
+      static_assert:         StaticAssert.from_dynamic!(d.fetch("static_assert")),
+      static_cast:           StaticCast.from_dynamic!(d.fetch("static_cast")),
+      std_deserializer:      StdDeserializer.from_dynamic!(d.fetch("StdDeserializer")),
+      std_serializer:        StdSerializer.from_dynamic!(d.fetch("StdSerializer")),
+      strictfp:              Strictfp.from_dynamic!(d.fetch("strictfp")),
+      string:                StringClass.from_dynamic!(d.fetch("string")),
+      struct:                StructClass.from_dynamic!(d.fetch("struct")),
+      subscript:             Subscript.from_dynamic!(d.fetch("subscript")),
+      switch:                Switch.from_dynamic!(d.fetch("switch")),
+      symbol:                SymbolClass.from_dynamic!(d.fetch("symbol")),
+      synchronized:          Synchronized.from_dynamic!(d.fetch("synchronized")),
+      template:              Template.from_dynamic!(d.fetch("template")),
+      text_node:             TextNode.from_dynamic!(d.fetch("TextNode")),
+      this:                  This.from_dynamic!(d.fetch("this")),
+      thread_local:          ThreadLocal.from_dynamic!(d.fetch("thread_local")),
+      throws:                Throws.from_dynamic!(d.fetch("throws")),
+      time_only:             TimeOnly.from_dynamic!(d.fetch("TimeOnly")),
+      time_only_converter:   TimeOnlyConverter.from_dynamic!(d.fetch("TimeOnlyConverter")),
+      time_zone:             TimeZone.from_dynamic!(d.fetch("TimeZone")),
+      to_string:             ToString.from_dynamic!(d.fetch("toString")),
+      top_level:             TopLevelClass.from_dynamic!(d.fetch("top_level")),
+      transient:             Transient.from_dynamic!(d.fetch("transient")),
+      true_1:                Obj5True.from_dynamic!(d.fetch("true")),
+      type_1:                TypeClass.from_dynamic!(d.fetch("type")),
+      typealias:             Typealias.from_dynamic!(d.fetch("typealias")),
+      typedef:               Typedef.from_dynamic!(d.fetch("typedef")),
+      typeid:                Typeid.from_dynamic!(d.fetch("typeid")),
+      typename:              Typename.from_dynamic!(d.fetch("typename")),
+      typeof:                Typeof.from_dynamic!(d.fetch("typeof")),
+      uint:                  Uint.from_dynamic!(d.fetch("uint")),
+      ulong:                 Ulong.from_dynamic!(d.fetch("ulong")),
+      unchecked:             Unchecked.from_dynamic!(d.fetch("unchecked")),
+      undefined:             UndefinedClass.from_dynamic!(d.fetch("undefined")),
+      union:                 Union.from_dynamic!(d.fetch("union")),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "dummy"                => dummy,
+      "return"               => obj5_return.to_dynamic,
+      "select"               => obj5_select.to_dynamic,
+      "Self"                 => obj5_self.to_dynamic,
+      "super"                => obj5_super.to_dynamic,
+      "system"               => obj5_system.to_dynamic,
+      "then"                 => obj5_then.to_dynamic,
+      "throw"                => obj5_throw.to_dynamic,
+      "to_json"              => obj5_to_json.to_dynamic,
+      "True"                 => obj5_true.to_dynamic,
+      "try"                  => obj5_try.to_dynamic,
+      "Type"                 => obj5_type.to_dynamic,
+      "right"                => right.to_dynamic,
+      "runtimeType"          => runtime_type.to_dynamic,
+      "s"                    => s.to_dynamic,
+      "sbyte"                => sbyte.to_dynamic,
+      "sealed"               => sealed.to_dynamic,
+      "SEL"                  => sel.to_dynamic,
+      "self"                 => self_1.to_dynamic,
+      "Sendable"             => sendable.to_dynamic,
+      "SerializationFeature" => serialization_feature.to_dynamic,
+      "serialize"            => serialize.to_dynamic,
+      "SerializerProvider"   => serializer_provider.to_dynamic,
+      "set"                  => set.to_dynamic,
+      "short"                => short.to_dynamic,
+      "signed"               => signed.to_dynamic,
+      "SimpleModule"         => simple_module.to_dynamic,
+      "sizeof"               => sizeof.to_dynamic,
+      "stackalloc"           => stackalloc.to_dynamic,
+      "Standards"            => standards.to_dynamic,
+      "static"               => static.to_dynamic,
+      "static_assert"        => static_assert.to_dynamic,
+      "static_cast"          => static_cast.to_dynamic,
+      "StdDeserializer"      => std_deserializer.to_dynamic,
+      "StdSerializer"        => std_serializer.to_dynamic,
+      "strictfp"             => strictfp.to_dynamic,
+      "string"               => string.to_dynamic,
+      "struct"               => struct.to_dynamic,
+      "subscript"            => subscript.to_dynamic,
+      "switch"               => switch.to_dynamic,
+      "symbol"               => symbol.to_dynamic,
+      "synchronized"         => synchronized.to_dynamic,
+      "template"             => template.to_dynamic,
+      "TextNode"             => text_node.to_dynamic,
+      "this"                 => this.to_dynamic,
+      "thread_local"         => thread_local.to_dynamic,
+      "throws"               => throws.to_dynamic,
+      "TimeOnly"             => time_only.to_dynamic,
+      "TimeOnlyConverter"    => time_only_converter.to_dynamic,
+      "TimeZone"             => time_zone.to_dynamic,
+      "toString"             => to_string.to_dynamic,
+      "top_level"            => top_level.to_dynamic,
+      "transient"            => transient.to_dynamic,
+      "true"                 => true_1.to_dynamic,
+      "type"                 => type_1.to_dynamic,
+      "typealias"            => typealias.to_dynamic,
+      "typedef"              => typedef.to_dynamic,
+      "typeid"               => typeid.to_dynamic,
+      "typename"             => typename.to_dynamic,
+      "typeof"               => typeof.to_dynamic,
+      "uint"                 => uint.to_dynamic,
+      "ulong"                => ulong.to_dynamic,
+      "unchecked"            => unchecked.to_dynamic,
+      "undefined"            => undefined.to_dynamic,
+      "union"                => union.to_dynamic,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class While < Dry::Struct
+  attribute :while_while, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      unowned: d.fetch("unowned"),
+      while_while: d.fetch("while"),
     )
   end
 
@@ -8661,7 +9128,7 @@ class Unowned < Dry::Struct
 
   def to_dynamic
     {
-      "unowned" => unowned,
+      "while" => while_while,
     }
   end
 
@@ -8670,13 +9137,13 @@ class Unowned < Dry::Struct
   end
 end
 
-class Unsafe < Dry::Struct
-  attribute :unsafe, Types::Integer
+class With < Dry::Struct
+  attribute :with_with, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      unsafe: d.fetch("unsafe"),
+      with_with: d.fetch("with"),
     )
   end
 
@@ -8686,7 +9153,7 @@ class Unsafe < Dry::Struct
 
   def to_dynamic
     {
-      "unsafe" => unsafe,
+      "with" => with_with,
     }
   end
 
@@ -8695,13 +9162,13 @@ class Unsafe < Dry::Struct
   end
 end
 
-class Unsigned < Dry::Struct
-  attribute :unsigned, Types::Integer
+class Yield < Dry::Struct
+  attribute :yield_yield, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      unsigned: d.fetch("unsigned"),
+      yield_yield: d.fetch("yield"),
     )
   end
 
@@ -8711,7 +9178,7 @@ class Unsigned < Dry::Struct
 
   def to_dynamic
     {
-      "unsigned" => unsigned,
+      "yield" => yield_yield,
     }
   end
 
@@ -8720,13 +9187,13 @@ class Unsigned < Dry::Struct
   end
 end
 
-class Ushort < Dry::Struct
-  attribute :ushort, Types::Integer
+class Unowned < Dry::Struct
+  attribute :unowned, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      ushort: d.fetch("ushort"),
+      unowned: d.fetch("unowned"),
     )
   end
 
@@ -8736,7 +9203,7 @@ class Ushort < Dry::Struct
 
   def to_dynamic
     {
-      "ushort" => ushort,
+      "unowned" => unowned,
     }
   end
 
@@ -8745,13 +9212,13 @@ class Ushort < Dry::Struct
   end
 end
 
-class Using < Dry::Struct
-  attribute :using, Types::Integer
+class Unsafe < Dry::Struct
+  attribute :unsafe, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      using: d.fetch("using"),
+      unsafe: d.fetch("unsafe"),
     )
   end
 
@@ -8761,7 +9228,7 @@ class Using < Dry::Struct
 
   def to_dynamic
     {
-      "using" => using,
+      "unsafe" => unsafe,
     }
   end
 
@@ -8770,13 +9237,13 @@ class Using < Dry::Struct
   end
 end
 
-class Utf8JSONReader < Dry::Struct
-  attribute :utf8_json_reader, Types::Integer
+class Unsigned < Dry::Struct
+  attribute :unsigned, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      utf8_json_reader: d.fetch("Utf8JsonReader"),
+      unsigned: d.fetch("unsigned"),
     )
   end
 
@@ -8786,7 +9253,7 @@ class Utf8JSONReader < Dry::Struct
 
   def to_dynamic
     {
-      "Utf8JsonReader" => utf8_json_reader,
+      "unsigned" => unsigned,
     }
   end
 
@@ -8795,13 +9262,13 @@ class Utf8JSONReader < Dry::Struct
   end
 end
 
-class Utf8JSONWriter < Dry::Struct
-  attribute :utf8_json_writer, Types::Integer
+class Ushort < Dry::Struct
+  attribute :ushort, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      utf8_json_writer: d.fetch("Utf8JsonWriter"),
+      ushort: d.fetch("ushort"),
     )
   end
 
@@ -8811,7 +9278,7 @@ class Utf8JSONWriter < Dry::Struct
 
   def to_dynamic
     {
-      "Utf8JsonWriter" => utf8_json_writer,
+      "ushort" => ushort,
     }
   end
 
@@ -8820,13 +9287,13 @@ class Utf8JSONWriter < Dry::Struct
   end
 end
 
-class UUID < Dry::Struct
-  attribute :uuid, Types::Integer
+class Using < Dry::Struct
+  attribute :using, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      uuid: d.fetch("UUID"),
+      using: d.fetch("using"),
     )
   end
 
@@ -8836,7 +9303,7 @@ class UUID < Dry::Struct
 
   def to_dynamic
     {
-      "UUID" => uuid,
+      "using" => using,
     }
   end
 
@@ -8845,13 +9312,13 @@ class UUID < Dry::Struct
   end
 end
 
-class Var < Dry::Struct
-  attribute :var, Types::Integer
+class Utf8JSONReader < Dry::Struct
+  attribute :utf8_json_reader, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      var: d.fetch("var"),
+      utf8_json_reader: d.fetch("Utf8JsonReader"),
     )
   end
 
@@ -8861,7 +9328,7 @@ class Var < Dry::Struct
 
   def to_dynamic
     {
-      "var" => var,
+      "Utf8JsonReader" => utf8_json_reader,
     }
   end
 
@@ -8870,13 +9337,13 @@ class Var < Dry::Struct
   end
 end
 
-class Virtual < Dry::Struct
-  attribute :virtual, Types::Integer
+class Utf8JSONWriter < Dry::Struct
+  attribute :utf8_json_writer, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      virtual: d.fetch("virtual"),
+      utf8_json_writer: d.fetch("Utf8JsonWriter"),
     )
   end
 
@@ -8886,224 +9353,7 @@ class Virtual < Dry::Struct
 
   def to_dynamic
     {
-      "virtual" => virtual,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
-class Obj5 < Dry::Struct
-  attribute :dummy,               Types::Integer
-  attribute :obj5_self,           SelfClass
-  attribute :obj5_super,          Super
-  attribute :obj5_system,         System
-  attribute :obj5_then,           Then
-  attribute :obj5_throw,          Throw
-  attribute :obj5_to_json,        ToJSON
-  attribute :obj5_true,           True
-  attribute :obj5_try,            Try
-  attribute :obj5_type,           Type
-  attribute :self_1,              Obj5Self
-  attribute :sendable,            Sendable
-  attribute :serialize,           Serialize
-  attribute :serializer_provider, SerializerProvider
-  attribute :set,                 SetClass
-  attribute :short,               Short
-  attribute :signed,              Signed
-  attribute :simple_module,       SimpleModule
-  attribute :sizeof,              Sizeof
-  attribute :stackalloc,          Stackalloc
-  attribute :standards,           Standards
-  attribute :static,              Static
-  attribute :static_assert,       StaticAssert
-  attribute :static_cast,         StaticCast
-  attribute :std_deserializer,    StdDeserializer
-  attribute :std_serializer,      StdSerializer
-  attribute :strictfp,            Strictfp
-  attribute :string,              StringClass
-  attribute :struct,              StructClass
-  attribute :subscript,           Subscript
-  attribute :switch,              Switch
-  attribute :symbol,              SymbolClass
-  attribute :synchronized,        Synchronized
-  attribute :template,            Template
-  attribute :this,                This
-  attribute :thread_local,        ThreadLocal
-  attribute :throws,              Throws
-  attribute :time_only,           TimeOnly
-  attribute :time_only_converter, TimeOnlyConverter
-  attribute :time_zone,           TimeZone
-  attribute :to_string,           ToString
-  attribute :top_level,           TopLevelClass
-  attribute :transient,           Transient
-  attribute :true_1,              Obj5True
-  attribute :type_1,              TypeClass
-  attribute :typealias,           Typealias
-  attribute :typedef,             Typedef
-  attribute :typeid,              Typeid
-  attribute :typename,            Typename
-  attribute :typeof,              Typeof
-  attribute :uint,                Uint
-  attribute :ulong,               Ulong
-  attribute :unchecked,           Unchecked
-  attribute :undefined,           UndefinedClass
-  attribute :union,               Union
-  attribute :unowned,             Unowned
-  attribute :unsafe,              Unsafe
-  attribute :unsigned,            Unsigned
-  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"),
-      obj5_self:           SelfClass.from_dynamic!(d.fetch("Self")),
-      obj5_super:          Super.from_dynamic!(d.fetch("super")),
-      obj5_system:         System.from_dynamic!(d.fetch("system")),
-      obj5_then:           Then.from_dynamic!(d.fetch("then")),
-      obj5_throw:          Throw.from_dynamic!(d.fetch("throw")),
-      obj5_to_json:        ToJSON.from_dynamic!(d.fetch("to_json")),
-      obj5_true:           True.from_dynamic!(d.fetch("True")),
-      obj5_try:            Try.from_dynamic!(d.fetch("try")),
-      obj5_type:           Type.from_dynamic!(d.fetch("Type")),
-      self_1:              Obj5Self.from_dynamic!(d.fetch("self")),
-      sendable:            Sendable.from_dynamic!(d.fetch("Sendable")),
-      serialize:           Serialize.from_dynamic!(d.fetch("serialize")),
-      serializer_provider: SerializerProvider.from_dynamic!(d.fetch("SerializerProvider")),
-      set:                 SetClass.from_dynamic!(d.fetch("set")),
-      short:               Short.from_dynamic!(d.fetch("short")),
-      signed:              Signed.from_dynamic!(d.fetch("signed")),
-      simple_module:       SimpleModule.from_dynamic!(d.fetch("SimpleModule")),
-      sizeof:              Sizeof.from_dynamic!(d.fetch("sizeof")),
-      stackalloc:          Stackalloc.from_dynamic!(d.fetch("stackalloc")),
-      standards:           Standards.from_dynamic!(d.fetch("Standards")),
-      static:              Static.from_dynamic!(d.fetch("static")),
-      static_assert:       StaticAssert.from_dynamic!(d.fetch("static_assert")),
-      static_cast:         StaticCast.from_dynamic!(d.fetch("static_cast")),
-      std_deserializer:    StdDeserializer.from_dynamic!(d.fetch("StdDeserializer")),
-      std_serializer:      StdSerializer.from_dynamic!(d.fetch("StdSerializer")),
-      strictfp:            Strictfp.from_dynamic!(d.fetch("strictfp")),
-      string:              StringClass.from_dynamic!(d.fetch("string")),
-      struct:              StructClass.from_dynamic!(d.fetch("struct")),
-      subscript:           Subscript.from_dynamic!(d.fetch("subscript")),
-      switch:              Switch.from_dynamic!(d.fetch("switch")),
-      symbol:              SymbolClass.from_dynamic!(d.fetch("symbol")),
-      synchronized:        Synchronized.from_dynamic!(d.fetch("synchronized")),
-      template:            Template.from_dynamic!(d.fetch("template")),
-      this:                This.from_dynamic!(d.fetch("this")),
-      thread_local:        ThreadLocal.from_dynamic!(d.fetch("thread_local")),
-      throws:              Throws.from_dynamic!(d.fetch("throws")),
-      time_only:           TimeOnly.from_dynamic!(d.fetch("TimeOnly")),
-      time_only_converter: TimeOnlyConverter.from_dynamic!(d.fetch("TimeOnlyConverter")),
-      time_zone:           TimeZone.from_dynamic!(d.fetch("TimeZone")),
-      to_string:           ToString.from_dynamic!(d.fetch("toString")),
-      top_level:           TopLevelClass.from_dynamic!(d.fetch("top_level")),
-      transient:           Transient.from_dynamic!(d.fetch("transient")),
-      true_1:              Obj5True.from_dynamic!(d.fetch("true")),
-      type_1:              TypeClass.from_dynamic!(d.fetch("type")),
-      typealias:           Typealias.from_dynamic!(d.fetch("typealias")),
-      typedef:             Typedef.from_dynamic!(d.fetch("typedef")),
-      typeid:              Typeid.from_dynamic!(d.fetch("typeid")),
-      typename:            Typename.from_dynamic!(d.fetch("typename")),
-      typeof:              Typeof.from_dynamic!(d.fetch("typeof")),
-      uint:                Uint.from_dynamic!(d.fetch("uint")),
-      ulong:               Ulong.from_dynamic!(d.fetch("ulong")),
-      unchecked:           Unchecked.from_dynamic!(d.fetch("unchecked")),
-      undefined:           UndefinedClass.from_dynamic!(d.fetch("undefined")),
-      union:               Union.from_dynamic!(d.fetch("union")),
-      unowned:             Unowned.from_dynamic!(d.fetch("unowned")),
-      unsafe:              Unsafe.from_dynamic!(d.fetch("unsafe")),
-      unsigned:            Unsigned.from_dynamic!(d.fetch("unsigned")),
-      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
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "dummy"              => dummy,
-      "Self"               => obj5_self.to_dynamic,
-      "super"              => obj5_super.to_dynamic,
-      "system"             => obj5_system.to_dynamic,
-      "then"               => obj5_then.to_dynamic,
-      "throw"              => obj5_throw.to_dynamic,
-      "to_json"            => obj5_to_json.to_dynamic,
-      "True"               => obj5_true.to_dynamic,
-      "try"                => obj5_try.to_dynamic,
-      "Type"               => obj5_type.to_dynamic,
-      "self"               => self_1.to_dynamic,
-      "Sendable"           => sendable.to_dynamic,
-      "serialize"          => serialize.to_dynamic,
-      "SerializerProvider" => serializer_provider.to_dynamic,
-      "set"                => set.to_dynamic,
-      "short"              => short.to_dynamic,
-      "signed"             => signed.to_dynamic,
-      "SimpleModule"       => simple_module.to_dynamic,
-      "sizeof"             => sizeof.to_dynamic,
-      "stackalloc"         => stackalloc.to_dynamic,
-      "Standards"          => standards.to_dynamic,
-      "static"             => static.to_dynamic,
-      "static_assert"      => static_assert.to_dynamic,
-      "static_cast"        => static_cast.to_dynamic,
-      "StdDeserializer"    => std_deserializer.to_dynamic,
-      "StdSerializer"      => std_serializer.to_dynamic,
-      "strictfp"           => strictfp.to_dynamic,
-      "string"             => string.to_dynamic,
-      "struct"             => struct.to_dynamic,
-      "subscript"          => subscript.to_dynamic,
-      "switch"             => switch.to_dynamic,
-      "symbol"             => symbol.to_dynamic,
-      "synchronized"       => synchronized.to_dynamic,
-      "template"           => template.to_dynamic,
-      "this"               => this.to_dynamic,
-      "thread_local"       => thread_local.to_dynamic,
-      "throws"             => throws.to_dynamic,
-      "TimeOnly"           => time_only.to_dynamic,
-      "TimeOnlyConverter"  => time_only_converter.to_dynamic,
-      "TimeZone"           => time_zone.to_dynamic,
-      "toString"           => to_string.to_dynamic,
-      "top_level"          => top_level.to_dynamic,
-      "transient"          => transient.to_dynamic,
-      "true"               => true_1.to_dynamic,
-      "type"               => type_1.to_dynamic,
-      "typealias"          => typealias.to_dynamic,
-      "typedef"            => typedef.to_dynamic,
-      "typeid"             => typeid.to_dynamic,
-      "typename"           => typename.to_dynamic,
-      "typeof"             => typeof.to_dynamic,
-      "uint"               => uint.to_dynamic,
-      "ulong"              => ulong.to_dynamic,
-      "unchecked"          => unchecked.to_dynamic,
-      "undefined"          => undefined.to_dynamic,
-      "union"              => union.to_dynamic,
-      "unowned"            => unowned.to_dynamic,
-      "unsafe"             => unsafe.to_dynamic,
-      "unsigned"           => unsigned.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,
+      "Utf8JsonWriter" => utf8_json_writer,
     }
   end
 
@@ -9112,13 +9362,13 @@ class Obj5 < Dry::Struct
   end
 end
 
-class While < Dry::Struct
-  attribute :while_while, Types::Integer
+class UUID < Dry::Struct
+  attribute :uuid, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      while_while: d.fetch("while"),
+      uuid: d.fetch("UUID"),
     )
   end
 
@@ -9128,7 +9378,7 @@ class While < Dry::Struct
 
   def to_dynamic
     {
-      "while" => while_while,
+      "UUID" => uuid,
     }
   end
 
@@ -9137,13 +9387,13 @@ class While < Dry::Struct
   end
 end
 
-class With < Dry::Struct
-  attribute :with_with, Types::Integer
+class Var < Dry::Struct
+  attribute :var, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      with_with: d.fetch("with"),
+      var: d.fetch("var"),
     )
   end
 
@@ -9153,7 +9403,7 @@ class With < Dry::Struct
 
   def to_dynamic
     {
-      "with" => with_with,
+      "var" => var,
     }
   end
 
@@ -9162,13 +9412,13 @@ class With < Dry::Struct
   end
 end
 
-class Yield < Dry::Struct
-  attribute :yield_yield, Types::Integer
+class Virtual < Dry::Struct
+  attribute :virtual, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      yield_yield: d.fetch("yield"),
+      virtual: d.fetch("virtual"),
     )
   end
 
@@ -9178,7 +9428,7 @@ class Yield < Dry::Struct
 
   def to_dynamic
     {
-      "yield" => yield_yield,
+      "virtual" => virtual,
     }
   end
 
@@ -9413,58 +9663,88 @@ 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 :unowned,          Unowned
+  attribute :unsafe,           Unsafe
+  attribute :unsigned,         Unsigned
+  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
+  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")),
+      unowned:          Unowned.from_dynamic!(d.fetch("unowned")),
+      unsafe:           Unsafe.from_dynamic!(d.fetch("unsafe")),
+      unsigned:         Unsigned.from_dynamic!(d.fetch("unsigned")),
+      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")),
+      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,
+      "unowned"        => unowned.to_dynamic,
+      "unsafe"         => unsafe.to_dynamic,
+      "unsigned"       => unsigned.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,
+      "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..b88c70a 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
@@ -43,6 +43,9 @@ pub struct Obj1 {
 
     pub array: Array,
 
+    #[serde(rename = "ArrayNode")]
+    pub array_node: ArrayNode,
+
     pub asm: Asm,
 
     pub assert: Assert,
@@ -74,6 +77,9 @@ pub struct Obj1 {
 
     pub boolean: Boolean,
 
+    #[serde(rename = "BooleanNode")]
+    pub boolean_node: BooleanNode,
+
     pub bycopy: Bycopy,
 
     pub byref: Byref,
@@ -136,11 +142,6 @@ pub struct Obj1 {
 
     pub converter: Converter,
 
-    #[serde(rename = "CultureInfo")]
-    pub culture_info: CultureInfo,
-
-    pub date: Date,
-
     pub dummy: i64,
 
     #[serde(rename = "_")]
@@ -212,6 +213,12 @@ pub struct Array {
     pub array: i64,
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct ArrayNode {
+    pub array_node: i64,
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct Asm {
     pub asm: i64,
@@ -288,6 +295,12 @@ pub struct Boolean {
     pub boolean: i64,
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct BooleanNode {
+    pub boolean_node: i64,
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct Bycopy {
     pub bycopy: i64,
@@ -434,17 +447,6 @@ pub struct Converter {
     pub converter: i64,
 }
 
-#[derive(Debug, Clone, Serialize, Deserialize)]
-#[serde(rename_all = "PascalCase")]
-pub struct CultureInfo {
-    pub culture_info: i64,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct Date {
-    pub date: i64,
-}
-
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct Empty {
     #[serde(rename = "_")]
@@ -528,6 +530,11 @@ pub struct Obj1Bool {
 
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct Obj2 {
+    #[serde(rename = "CultureInfo")]
+    pub culture_info: CultureInfo,
+
+    pub date: Date,
+
     #[serde(rename = "DateFormatter")]
     pub date_formatter: DateFormatter,
 
@@ -573,6 +580,9 @@ pub struct Obj2 {
 
     pub delete: Delete,
 
+    #[serde(rename = "DeserializationFeature")]
+    pub deserialization_feature: DeserializationFeature,
+
     pub dict: Dict,
 
     pub dictionary: Dictionary,
@@ -582,6 +592,9 @@ pub struct Obj2 {
 
     pub double: Double,
 
+    #[serde(rename = "DoubleNode")]
+    pub double_node: DoubleNode,
+
     pub dummy: i64,
 
     pub dynamic: Dynamic,
@@ -645,14 +658,6 @@ pub struct Obj2 {
 
     pub function: Function,
 
-    pub get: Get,
-
-    pub global: Global,
-
-    pub go: Go,
-
-    pub goto: Goto,
-
     #[serde(rename = "default")]
     pub obj2_default: Default,
 
@@ -681,6 +686,17 @@ pub struct Obj2 {
     pub purple_false: FalseClass,
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct CultureInfo {
+    pub culture_info: i64,
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct Date {
+    pub date: i64,
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 #[serde(rename_all = "PascalCase")]
 pub struct DateFormatter {
@@ -783,6 +799,12 @@ pub struct Delete {
     pub delete: i64,
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct DeserializationFeature {
+    pub deserialization_feature: i64,
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct Dict {
     pub dict: i64,
@@ -804,6 +826,12 @@ pub struct Double {
     pub double: i64,
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct DoubleNode {
+    pub double_node: i64,
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct Dynamic {
     pub dynamic: i64,
@@ -957,26 +985,6 @@ pub struct Function {
     pub function: i64,
 }
 
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct Get {
-    pub get: i64,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct Global {
-    pub global: i64,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct Go {
-    pub go: i64,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct Goto {
-    pub goto: i64,
-}
-
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct Default {
     #[serde(rename = "default")]
@@ -1036,6 +1044,14 @@ pub struct FalseClass {
 pub struct Obj3 {
     pub dummy: i64,
 
+    pub get: Get,
+
+    pub global: Global,
+
+    pub go: Go,
+
+    pub goto: Goto,
+
     pub guard: Guard,
 
     #[serde(rename = "hasOwnProperty")]
@@ -1075,6 +1091,9 @@ pub struct Obj3 {
 
     pub int: Int,
 
+    #[serde(rename = "IntNode")]
+    pub int_node: IntNode,
+
     pub interface: Interface,
 
     pub internal: Internal,
@@ -1150,6 +1169,9 @@ pub struct Obj3 {
 
     pub long: Long,
 
+    #[serde(rename = "LongNode")]
+    pub long_node: LongNode,
+
     pub map: Map,
 
     #[serde(rename = "MapEntry")]
@@ -1165,19 +1187,6 @@ pub struct Obj3 {
 
     pub namespace: Namespace,
 
-    pub native: Native,
-
-    pub new: New,
-
-    pub newtonsoft: Newtonsoft,
-
-    pub nil: Nil,
-
-    #[serde(rename = "NO")]
-    pub no: No,
-
-    pub noexcept: Noexcept,
-
     #[serde(rename = "if")]
     pub obj3_if: If,
 
@@ -1188,6 +1197,26 @@ pub struct Obj3 {
     pub obj3_let: Let,
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct Get {
+    pub get: i64,
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct Global {
+    pub global: i64,
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct Go {
+    pub go: i64,
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct Goto {
+    pub goto: i64,
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct Guard {
     pub guard: i64,
@@ -1278,6 +1307,12 @@ pub struct Int {
     pub int: i64,
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct IntNode {
+    pub int_node: i64,
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct Interface {
     pub interface: i64,
@@ -1451,6 +1486,12 @@ pub struct Long {
     pub long: i64,
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct LongNode {
+    pub long_node: i64,
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct Map {
     pub map: i64,
@@ -1487,37 +1528,6 @@ pub struct Namespace {
     pub namespace: i64,
 }
 
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct Native {
-    pub native: i64,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct New {
-    pub new: i64,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct Newtonsoft {
-    pub newtonsoft: i64,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct Nil {
-    pub nil: i64,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
-pub struct No {
-    pub no: i64,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct Noexcept {
-    pub noexcept: i64,
-}
-
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct If {
     #[serde(rename = "if")]
@@ -1540,9 +1550,22 @@ pub struct Let {
 pub struct Obj4 {
     pub dummy: i64,
 
+    pub native: Native,
+
+    pub new: New,
+
+    pub newtonsoft: Newtonsoft,
+
+    pub nil: Nil,
+
+    #[serde(rename = "NO")]
+    pub no: No,
+
     #[serde(rename = "noSuchMethod")]
     pub no_such_method: NoSuchMethod,
 
+    pub noexcept: Noexcept,
+
     pub nonatomic: Nonatomic,
 
     #[serde(rename = "None")]
@@ -1568,6 +1591,9 @@ pub struct Obj4 {
     #[serde(rename = "NULL")]
     pub null: Null,
 
+    #[serde(rename = "NullNode")]
+    pub null_node: NullNode,
+
     pub nullptr: Nullptr,
 
     pub number: Number,
@@ -1587,14 +1613,14 @@ pub struct Obj4 {
     #[serde(rename = "ref")]
     pub obj4_ref: Ref,
 
-    #[serde(rename = "return")]
-    pub obj4_return: Return,
-
     pub object: Object,
 
     #[serde(rename = "ObjectMapper")]
     pub object_mapper: ObjectMapper,
 
+    #[serde(rename = "ObjectNode")]
+    pub object_node: ObjectNode,
+
     pub of: Of,
 
     pub oneway: Oneway,
@@ -1669,22 +1695,32 @@ pub struct Obj4 {
     pub retain: Retain,
 
     pub rethrows: Rethrows,
+}
 
-    pub right: Right,
-
-    #[serde(rename = "runtimeType")]
-    pub runtime_type: RuntimeType,
-
-    pub s: S,
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct Native {
+    pub native: i64,
+}
 
-    pub sbyte: Sbyte,
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct New {
+    pub new: i64,
+}
 
-    pub sealed: Sealed,
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct Newtonsoft {
+    pub newtonsoft: i64,
+}
 
-    #[serde(rename = "SEL")]
-    pub sel: Sel,
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct Nil {
+    pub nil: i64,
+}
 
-    pub select: Select,
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
+pub struct No {
+    pub no: i64,
 }
 
 #[derive(Debug, Clone, Serialize, Deserialize)]
@@ -1693,6 +1729,11 @@ pub struct NoSuchMethod {
     pub no_such_method: i64,
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct Noexcept {
+    pub noexcept: i64,
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct Nonatomic {
     pub nonatomic: i64,
@@ -1751,6 +1792,12 @@ pub struct Null {
     pub null: i64,
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct NullNode {
+    pub null_node: i64,
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct Nullptr {
     pub nullptr: i64,
@@ -1788,12 +1835,6 @@ pub struct Ref {
     pub ref_ref: i64,
 }
 
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct Return {
-    #[serde(rename = "return")]
-    pub return_return: i64,
-}
-
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct Object {
     pub object: i64,
@@ -1805,6 +1846,12 @@ pub struct ObjectMapper {
     pub object_mapper: i64,
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct ObjectNode {
+    pub object_node: i64,
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct Of {
     pub of: i64,
@@ -1988,47 +2035,13 @@ pub struct Rethrows {
     pub rethrows: i64,
 }
 
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct Right {
-    pub right: i64,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-#[serde(rename_all = "camelCase")]
-pub struct RuntimeType {
-    pub runtime_type: i64,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct S {
-    pub s: i64,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct Sbyte {
-    pub sbyte: i64,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct Sealed {
-    pub sealed: i64,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
-pub struct Sel {
-    pub sel: i64,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct Select {
-    pub select: i64,
-}
-
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct Obj5 {
     pub dummy: i64,
 
+    #[serde(rename = "return")]
+    pub obj5_return: Return,
+
     #[serde(rename = "Self")]
     pub obj5_self: SelfClass,
 
@@ -2056,12 +2069,6 @@ pub struct Obj5 {
     #[serde(rename = "union")]
     pub obj5_union: Union,
 
-    #[serde(rename = "unsafe")]
-    pub obj5_unsafe: Unsafe,
-
-    #[serde(rename = "virtual")]
-    pub obj5_virtual: Virtual,
-
     #[serde(rename = "self")]
     pub purple_self: Obj5Self,
 
@@ -2071,9 +2078,28 @@ pub struct Obj5 {
     #[serde(rename = "type")]
     pub purple_type: TypeClass,
 
+    pub right: Right,
+
+    #[serde(rename = "runtimeType")]
+    pub runtime_type: RuntimeType,
+
+    pub s: S,
+
+    pub sbyte: Sbyte,
+
+    pub sealed: Sealed,
+
+    #[serde(rename = "SEL")]
+    pub sel: Sel,
+
+    pub select: Select,
+
     #[serde(rename = "Sendable")]
     pub sendable: Sendable,
 
+    #[serde(rename = "SerializationFeature")]
+    pub serialization_feature: SerializationFeature,
+
     pub serialize: SerializeClass,
 
     #[serde(rename = "SerializerProvider")]
@@ -2119,6 +2145,9 @@ pub struct Obj5 {
 
     pub template: Template,
 
+    #[serde(rename = "TextNode")]
+    pub text_node: TextNode,
+
     pub then: Then,
 
     pub this: This,
@@ -2164,25 +2193,12 @@ pub struct Obj5 {
     pub unchecked: Unchecked,
 
     pub undefined: Undefined,
+}
 
-    pub unowned: Unowned,
-
-    pub unsigned: Unsigned,
-
-    pub ushort: Ushort,
-
-    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,
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct Return {
+    #[serde(rename = "return")]
+    pub return_return: i64,
 }
 
 #[derive(Debug, Clone, Serialize, Deserialize)]
@@ -2242,18 +2258,6 @@ pub struct Union {
     pub union_union: i64,
 }
 
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct Unsafe {
-    #[serde(rename = "unsafe")]
-    pub unsafe_unsafe: i64,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct Virtual {
-    #[serde(rename = "virtual")]
-    pub virtual_virtual: i64,
-}
-
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct Obj5Self {
     #[serde(rename = "self")]
@@ -2272,12 +2276,55 @@ pub struct TypeClass {
     pub type_type: i64,
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct Right {
+    pub right: i64,
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct RuntimeType {
+    pub runtime_type: i64,
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct S {
+    pub s: i64,
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct Sbyte {
+    pub sbyte: i64,
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct Sealed {
+    pub sealed: i64,
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
+pub struct Sel {
+    pub sel: i64,
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct Select {
+    pub select: i64,
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 #[serde(rename_all = "PascalCase")]
 pub struct Sendable {
     pub sendable: i64,
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct SerializationFeature {
+    pub serialization_feature: i64,
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct SerializeClass {
     pub serialize: i64,
@@ -2383,6 +2430,12 @@ pub struct Template {
     pub template: i64,
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct TextNode {
+    pub text_node: i64,
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct Then {
     pub then: i64,
@@ -2492,53 +2545,16 @@ pub struct Undefined {
     pub undefined: i64,
 }
 
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct Unowned {
-    pub unowned: i64,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-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,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct Var {
-    pub var: i64,
-}
-
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct Obj6 {
     pub dummy: i64,
 
+    #[serde(rename = "unsafe")]
+    pub obj6_unsafe: Unsafe,
+
+    #[serde(rename = "virtual")]
+    pub obj6_virtual: Virtual,
+
     #[serde(rename = "where")]
     pub obj6_where: Where,
 
@@ -2548,6 +2564,25 @@ pub struct Obj6 {
     #[serde(rename = "yield")]
     pub obj6_yield: Yield,
 
+    pub unowned: Unowned,
+
+    pub unsigned: Unsigned,
+
+    pub ushort: Ushort,
+
+    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 +2604,18 @@ pub struct Obj6 {
     pub yes: Yes,
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct Unsafe {
+    #[serde(rename = "unsafe")]
+    pub unsafe_unsafe: i64,
+}
+
+#[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 +2634,49 @@ pub struct Yield {
     pub yield_yield: i64,
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct Unowned {
+    pub unowned: i64,
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+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,
+}
+
+#[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..4e63c7e 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
@@ -24,6 +24,7 @@ case class Obj1 (
     val and_eq : AndEq,
     val `Any` : AnyClass,
     val array : ArrayClass,
+    val ArrayNode : ArrayNode,
     val as : As,
     val asm : ASM,
     val assert : Assert,
@@ -41,6 +42,7 @@ case class Obj1 (
     val bitor : Bitor,
     val BOOL : Bool,
     val boolean : BooleanClass,
+    val BooleanNode : BooleanNode,
     val break : Break,
     val bycopy : Bycopy,
     val byref : Byref,
@@ -70,8 +72,6 @@ case class Obj1 (
     val convenience : Convenience,
     val convert : Convert,
     val converter : Converter,
-    val CultureInfo : CultureInfo,
-    val date : Date,
     val dummy : Long,
     val empty : Empty,
     val _Imaginery : Imaginery,
@@ -119,6 +119,10 @@ case class ArrayClass (
     val array : Long
 ) derives Encoder.AsObject, Decoder
 
+case class ArrayNode (
+    val ArrayNode : Long
+) derives Encoder.AsObject, Decoder
+
 case class As (
     val as : Long
 ) derives Encoder.AsObject, Decoder
@@ -187,6 +191,10 @@ case class BooleanClass (
     val boolean : Long
 ) derives Encoder.AsObject, Decoder
 
+case class BooleanNode (
+    val BooleanNode : Long
+) derives Encoder.AsObject, Decoder
+
 case class Break (
     val break : Long
 ) derives Encoder.AsObject, Decoder
@@ -312,14 +320,6 @@ case class Converter (
     val converter : Long
 ) derives Encoder.AsObject, Decoder
 
-case class CultureInfo (
-    val CultureInfo : Long
-) derives Encoder.AsObject, Decoder
-
-case class Date (
-    val date : Long
-) derives Encoder.AsObject, Decoder
-
 case class Empty (
     val empty : Long
 )
@@ -370,6 +370,8 @@ case class ClassClass (
 ) derives Encoder.AsObject, Decoder
 
 case class Obj2 (
+    val CultureInfo : CultureInfo,
+    val date : Date,
     val DateFormatter : DateFormatter,
     val DateOnly : DateOnly,
     val DateOnlyConverter : DateOnlyConverter,
@@ -389,10 +391,12 @@ case class Obj2 (
     val del : Del,
     val delegate : Delegate,
     val delete : Delete,
+    val DeserializationFeature : DeserializationFeature,
     val dict : Dict,
     val dictionary : Dictionary,
     val didSet : DidSet,
     val double : DoubleClass,
+    val DoubleNode : DoubleNode,
     val dummy : Long,
     val dynamic : Dynamic,
     val dynamic_cast : DynamicCast,
@@ -420,10 +424,6 @@ case class Obj2 (
     val from_json : FromJSON,
     val func : Func,
     val function : Function,
-    val get : Get,
-    val global : Global,
-    val go : Go,
-    val goto : Goto,
     val `def` : Def,
     val `do` : Do,
     val `else` : Else,
@@ -437,6 +437,14 @@ case class Obj2 (
     val `false` : FalseClass
 ) derives Encoder.AsObject, Decoder
 
+case class CultureInfo (
+    val CultureInfo : Long
+) derives Encoder.AsObject, Decoder
+
+case class Date (
+    val date : Long
+) derives Encoder.AsObject, Decoder
+
 case class DateFormatter (
     val DateFormatter : Long
 ) derives Encoder.AsObject, Decoder
@@ -513,6 +521,10 @@ case class Delete (
     val delete : Long
 ) derives Encoder.AsObject, Decoder
 
+case class DeserializationFeature (
+    val DeserializationFeature : Long
+) derives Encoder.AsObject, Decoder
+
 case class Dict (
     val dict : Long
 ) derives Encoder.AsObject, Decoder
@@ -529,6 +541,10 @@ case class DoubleClass (
     val double : Long
 ) derives Encoder.AsObject, Decoder
 
+case class DoubleNode (
+    val DoubleNode : Long
+) derives Encoder.AsObject, Decoder
+
 case class Dynamic (
     val dynamic : Long
 ) derives Encoder.AsObject, Decoder
@@ -647,22 +663,6 @@ case class Function (
     val function : Long
 ) derives Encoder.AsObject, Decoder
 
-case class Get (
-    val get : Long
-) derives Encoder.AsObject, Decoder
-
-case class Global (
-    val global : Long
-) derives Encoder.AsObject, Decoder
-
-case class Go (
-    val go : Long
-) derives Encoder.AsObject, Decoder
-
-case class Goto (
-    val goto : Long
-) derives Encoder.AsObject, Decoder
-
 case class Def (
     val `def` : Long
 ) derives Encoder.AsObject, Decoder
@@ -709,6 +709,10 @@ case class FalseClass (
 
 case class Obj3 (
     val dummy : Long,
+    val get : Get,
+    val global : Global,
+    val go : Go,
+    val goto : Goto,
     val guard : Guard,
     val hasOwnProperty : HasOwnProperty,
     val hashCodeValue : HashCode,
@@ -725,6 +729,7 @@ case class Obj3 (
     val inout : Inout,
     val instanceof : Instanceof,
     val int : IntClass,
+    val IntNode : IntNode,
     val interface : Interface,
     val internal : Internal,
     val is : Is,
@@ -756,6 +761,7 @@ case class Obj3 (
     val Locale : Locale,
     val lock : Lock,
     val long : LongClass,
+    val LongNode : LongNode,
     val map : MapClass,
     val MapEntry : MapEntry,
     val metadata_property_handling : MetadataPropertyHandling,
@@ -763,16 +769,10 @@ case class Obj3 (
     val mutable : Mutable,
     val mutating : Mutating,
     val namespace : Namespace,
-    val native : Native,
-    val newtonsoft : Newtonsoft,
-    val nil : Nil,
-    val NO : No,
-    val noexcept : Noexcept,
     val `if` : If,
     val `implicit` : Implicit,
     val `import` : Import,
-    val `lazy` : Lazy,
-    val `new` : New
+    val `lazy` : Lazy
 )
 
 object Obj3:
@@ -784,6 +784,22 @@ object Obj3:
         )
     given io.circe.Codec.AsObject[Obj3] = io.circe.derivation.ConfiguredCodec.derived
 
+case class Get (
+    val get : Long
+) derives Encoder.AsObject, Decoder
+
+case class Global (
+    val global : Long
+) derives Encoder.AsObject, Decoder
+
+case class Go (
+    val go : Long
+) derives Encoder.AsObject, Decoder
+
+case class Goto (
+    val goto : Long
+) derives Encoder.AsObject, Decoder
+
 case class Guard (
     val guard : Long
 ) derives Encoder.AsObject, Decoder
@@ -857,6 +873,10 @@ case class IntClass (
     val int : Long
 ) derives Encoder.AsObject, Decoder
 
+case class IntNode (
+    val IntNode : Long
+) derives Encoder.AsObject, Decoder
+
 case class Interface (
     val interface : Long
 ) derives Encoder.AsObject, Decoder
@@ -981,6 +1001,10 @@ case class LongClass (
     val long : Long
 ) derives Encoder.AsObject, Decoder
 
+case class LongNode (
+    val LongNode : Long
+) derives Encoder.AsObject, Decoder
+
 case class MapClass (
     val map : Long
 ) derives Encoder.AsObject, Decoder
@@ -1009,26 +1033,6 @@ case class Namespace (
     val namespace : Long
 ) derives Encoder.AsObject, Decoder
 
-case class Native (
-    val native : Long
-) derives Encoder.AsObject, Decoder
-
-case class Newtonsoft (
-    val newtonsoft : Long
-) derives Encoder.AsObject, Decoder
-
-case class Nil (
-    val nil : Long
-) derives Encoder.AsObject, Decoder
-
-case class No (
-    val NO : Long
-) derives Encoder.AsObject, Decoder
-
-case class Noexcept (
-    val noexcept : Long
-) derives Encoder.AsObject, Decoder
-
 case class If (
     val `if` : Long
 ) derives Encoder.AsObject, Decoder
@@ -1045,13 +1049,14 @@ case class Lazy (
     val `lazy` : Long
 ) derives Encoder.AsObject, Decoder
 
-case class New (
-    val `new` : Long
-) derives Encoder.AsObject, Decoder
-
 case class Obj4 (
     val dummy : Long,
+    val native : Native,
+    val newtonsoft : Newtonsoft,
+    val nil : Nil,
+    val NO : No,
     val noSuchMethod : NoSuchMethod,
+    val noexcept : Noexcept,
     val nonatomic : Nonatomic,
     val None : NoneClass,
     val nonlocal : Nonlocal,
@@ -1061,9 +1066,11 @@ case class Obj4 (
     val NSError : NSError,
     val NSObject : NSObject,
     val NSString : NSString,
+    val NullNode : NullNode,
     val nullptr : Nullptr,
     val number : Number,
     val NULL : NULLClass,
+    val `new` : New,
     val none : Obj4None,
     val `null` : NullClass,
     val `object` : Object,
@@ -1072,9 +1079,8 @@ case class Obj4 (
     val `private` : Private,
     val `protected` : Protected,
     val protocol : ProtocolClass,
-    val `return` : Return,
-    val `sealed` : Sealed,
     val ObjectMapper : ObjectMapper,
+    val ObjectNode : ObjectNode,
     val of : Of,
     val oneway : Oneway,
     val open : Open,
@@ -1108,19 +1114,33 @@ case class Obj4 (
     val requires : Requires,
     val restrict : Restrict,
     val retain : Retain,
-    val rethrows : Rethrows,
-    val right : Right,
-    val runtimeType : RuntimeType,
-    val s : S,
-    val sbyte : Sbyte,
-    val SEL : Sel,
-    val select : Select
+    val rethrows : Rethrows
+) derives Encoder.AsObject, Decoder
+
+case class Native (
+    val native : Long
+) derives Encoder.AsObject, Decoder
+
+case class Newtonsoft (
+    val newtonsoft : Long
+) derives Encoder.AsObject, Decoder
+
+case class Nil (
+    val nil : Long
+) derives Encoder.AsObject, Decoder
+
+case class No (
+    val NO : Long
 ) derives Encoder.AsObject, Decoder
 
 case class NoSuchMethod (
     val noSuchMethod : Long
 ) derives Encoder.AsObject, Decoder
 
+case class Noexcept (
+    val noexcept : Long
+) derives Encoder.AsObject, Decoder
+
 case class Nonatomic (
     val nonatomic : Long
 ) derives Encoder.AsObject, Decoder
@@ -1157,6 +1177,10 @@ case class NSString (
     val NSString : Long
 ) derives Encoder.AsObject, Decoder
 
+case class NullNode (
+    val NullNode : Long
+) derives Encoder.AsObject, Decoder
+
 case class Nullptr (
     val nullptr : Long
 ) derives Encoder.AsObject, Decoder
@@ -1169,6 +1193,10 @@ case class NULLClass (
     val NULL : Long
 ) derives Encoder.AsObject, Decoder
 
+case class New (
+    val `new` : Long
+) derives Encoder.AsObject, Decoder
+
 case class Obj4None (
     val none : Long
 ) derives Encoder.AsObject, Decoder
@@ -1201,18 +1229,14 @@ case class ProtocolClass (
     val protocol : Long
 ) derives Encoder.AsObject, Decoder
 
-case class Return (
-    val `return` : Long
-) derives Encoder.AsObject, Decoder
-
-case class Sealed (
-    val `sealed` : Long
-) derives Encoder.AsObject, Decoder
-
 case class ObjectMapper (
     val ObjectMapper : Long
 ) derives Encoder.AsObject, Decoder
 
+case class ObjectNode (
+    val ObjectNode : Long
+) derives Encoder.AsObject, Decoder
+
 case class Of (
     val of : Long
 ) derives Encoder.AsObject, Decoder
@@ -1349,32 +1373,10 @@ case class Rethrows (
     val rethrows : Long
 ) derives Encoder.AsObject, Decoder
 
-case class Right (
-    val right : Long
-) derives Encoder.AsObject, Decoder
-
-case class RuntimeType (
-    val runtimeType : Long
-) derives Encoder.AsObject, Decoder
-
-case class S (
-    val s : Long
-) derives Encoder.AsObject, Decoder
-
-case class Sbyte (
-    val sbyte : Long
-) derives Encoder.AsObject, Decoder
-
-case class Sel (
-    val SEL : Long
-) derives Encoder.AsObject, Decoder
-
-case class Select (
-    val select : Long
-) derives Encoder.AsObject, Decoder
-
 case class Obj5 (
     val dummy : Long,
+    val `return` : Return,
+    val `sealed` : Sealed,
     val self : SelfClass,
     val `super` : Super,
     val `then` : Then,
@@ -1383,11 +1385,17 @@ case class Obj5 (
     val True : True,
     val `try` : Try,
     val Type : Type,
-    val `var` : Var,
     val `true` : TrueClass,
     val `type` : TypeClass,
+    val right : Right,
+    val runtimeType : RuntimeType,
+    val s : S,
+    val sbyte : Sbyte,
+    val SEL : Sel,
+    val select : Select,
     val Self : Self,
     val Sendable : Sendable,
+    val SerializationFeature : SerializationFeature,
     val serialize : Serialize,
     val SerializerProvider : SerializerProvider,
     val set : Set,
@@ -1411,6 +1419,7 @@ case class Obj5 (
     val synchronizedValue : Synchronized,
     val system : SystemClass,
     val template : Template,
+    val TextNode : TextNode,
     val thread_local : ThreadLocal,
     val throws : Throws,
     val TimeOnly : TimeOnly,
@@ -1429,16 +1438,7 @@ case class Obj5 (
     val ulong : Ulong,
     val unchecked : Unchecked,
     val undefined : Undefined,
-    val union : Union,
-    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 union : Union
 )
 
 object Obj5:
@@ -1451,6 +1451,14 @@ object Obj5:
         )
     given io.circe.Codec.AsObject[Obj5] = io.circe.derivation.ConfiguredCodec.derived
 
+case class Return (
+    val `return` : Long
+) derives Encoder.AsObject, Decoder
+
+case class Sealed (
+    val `sealed` : Long
+) derives Encoder.AsObject, Decoder
+
 case class SelfClass (
     val self : Long
 ) derives Encoder.AsObject, Decoder
@@ -1483,10 +1491,6 @@ case class Type (
     val Type : Long
 ) derives Encoder.AsObject, Decoder
 
-case class Var (
-    val `var` : Long
-) derives Encoder.AsObject, Decoder
-
 case class TrueClass (
     val `true` : Long
 ) derives Encoder.AsObject, Decoder
@@ -1495,6 +1499,30 @@ case class TypeClass (
     val `type` : Long
 ) derives Encoder.AsObject, Decoder
 
+case class Right (
+    val right : Long
+) derives Encoder.AsObject, Decoder
+
+case class RuntimeType (
+    val runtimeType : Long
+) derives Encoder.AsObject, Decoder
+
+case class S (
+    val s : Long
+) derives Encoder.AsObject, Decoder
+
+case class Sbyte (
+    val sbyte : Long
+) derives Encoder.AsObject, Decoder
+
+case class Sel (
+    val SEL : Long
+) derives Encoder.AsObject, Decoder
+
+case class Select (
+    val select : Long
+) derives Encoder.AsObject, Decoder
+
 case class Self (
     val Self : Long
 ) derives Encoder.AsObject, Decoder
@@ -1503,6 +1531,10 @@ case class Sendable (
     val Sendable : Long
 ) derives Encoder.AsObject, Decoder
 
+case class SerializationFeature (
+    val SerializationFeature : Long
+) derives Encoder.AsObject, Decoder
+
 case class Serialize (
     val serialize : Long
 ) derives Encoder.AsObject, Decoder
@@ -1604,6 +1636,10 @@ case class Template (
     val template : Long
 ) derives Encoder.AsObject, Decoder
 
+case class TextNode (
+    val TextNode : Long
+) derives Encoder.AsObject, Decoder
+
 case class ThreadLocal (
     val thread_local : Long
 ) derives Encoder.AsObject, Decoder
@@ -1689,6 +1725,48 @@ case class Union (
     val union : Long
 ) derives Encoder.AsObject, Decoder
 
+case class Obj6 (
+    val dummy : Long,
+    val `var` : Var,
+    val `while` : While,
+    val `with` : With,
+    val `yield` : Yield,
+    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 void : Void,
+    val volatile : Volatile,
+    val wchar_t : WcharT,
+    val weak : Weak,
+    val where : Where,
+    val willSet : WillSet,
+    val xor : Xor,
+    val xor_eq : XorEq,
+    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
+
+case class With (
+    val `with` : Long
+) derives Encoder.AsObject, Decoder
+
+case class Yield (
+    val `yield` : Long
+) derives Encoder.AsObject, Decoder
+
 case class Unowned (
     val unowned : Long
 ) derives Encoder.AsObject, Decoder
@@ -1725,34 +1803,6 @@ case class Virtual (
     val virtual : Long
 ) derives Encoder.AsObject, Decoder
 
-case class Obj6 (
-    val dummy : Long,
-    val `while` : While,
-    val `with` : With,
-    val `yield` : Yield,
-    val void : Void,
-    val volatile : Volatile,
-    val wchar_t : WcharT,
-    val weak : Weak,
-    val where : Where,
-    val willSet : WillSet,
-    val xor : Xor,
-    val xor_eq : XorEq,
-    val YES : Yes
-) derives Encoder.AsObject, Decoder
-
-case class While (
-    val `while` : Long
-) derives Encoder.AsObject, Decoder
-
-case class With (
-    val `with` : Long
-) derives Encoder.AsObject, Decoder
-
-case class Yield (
-    val `yield` : 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..c1d5f03 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
@@ -95,6 +95,7 @@ case class Obj1 (
     val and_eq : AndEq,
     val `Any` : AnyClass,
     val array : ArrayClass,
+    val ArrayNode : ArrayNode,
     val as : As,
     val asm : ASM,
     val assert : Assert,
@@ -112,6 +113,7 @@ case class Obj1 (
     val bitor : Bitor,
     val BOOL : Bool,
     val boolean : BooleanClass,
+    val BooleanNode : BooleanNode,
     val break : Break,
     val bycopy : Bycopy,
     val byref : Byref,
@@ -142,8 +144,6 @@ case class Obj1 (
     val convenience : Convenience,
     val convert : Convert,
     val converter : Converter,
-    val CultureInfo : CultureInfo,
-    val date : Date,
     val dummy : Long,
     @upickle.implicits.key("_")
     val empty : Empty,
@@ -182,6 +182,10 @@ case class ArrayClass (
     val array : Long
 ) derives OptionPickler.ReadWriter
 
+case class ArrayNode (
+    val ArrayNode : Long
+) derives OptionPickler.ReadWriter
+
 case class As (
     val as : Long
 ) derives OptionPickler.ReadWriter
@@ -250,6 +254,10 @@ case class BooleanClass (
     val boolean : Long
 ) derives OptionPickler.ReadWriter
 
+case class BooleanNode (
+    val BooleanNode : Long
+) derives OptionPickler.ReadWriter
+
 case class Break (
     val break : Long
 ) derives OptionPickler.ReadWriter
@@ -367,14 +375,6 @@ case class Converter (
     val converter : Long
 ) derives OptionPickler.ReadWriter
 
-case class CultureInfo (
-    val CultureInfo : Long
-) derives OptionPickler.ReadWriter
-
-case class Date (
-    val date : Long
-) derives OptionPickler.ReadWriter
-
 case class Empty (
     @upickle.implicits.key("_")
     val empty : Long
@@ -417,6 +417,8 @@ case class ClassClass (
 ) derives OptionPickler.ReadWriter
 
 case class Obj2 (
+    val CultureInfo : CultureInfo,
+    val date : Date,
     val DateFormatter : DateFormatter,
     val DateOnly : DateOnly,
     val DateOnlyConverter : DateOnlyConverter,
@@ -436,10 +438,12 @@ case class Obj2 (
     val del : Del,
     val delegate : Delegate,
     val delete : Delete,
+    val DeserializationFeature : DeserializationFeature,
     val dict : Dict,
     val dictionary : Dictionary,
     val didSet : DidSet,
     val double : DoubleClass,
+    val DoubleNode : DoubleNode,
     val dummy : Long,
     val dynamic : Dynamic,
     val dynamic_cast : DynamicCast,
@@ -467,10 +471,6 @@ case class Obj2 (
     val from_json : FromJSON,
     val func : Func,
     val function : Function,
-    val get : Get,
-    val global : Global,
-    val go : Go,
-    val goto : Goto,
     val `def` : Def,
     val `do` : Do,
     val `else` : Else,
@@ -484,6 +484,14 @@ case class Obj2 (
     val `false` : FalseClass
 ) derives OptionPickler.ReadWriter
 
+case class CultureInfo (
+    val CultureInfo : Long
+) derives OptionPickler.ReadWriter
+
+case class Date (
+    val date : Long
+) derives OptionPickler.ReadWriter
+
 case class DateFormatter (
     val DateFormatter : Long
 ) derives OptionPickler.ReadWriter
@@ -560,6 +568,10 @@ case class Delete (
     val delete : Long
 ) derives OptionPickler.ReadWriter
 
+case class DeserializationFeature (
+    val DeserializationFeature : Long
+) derives OptionPickler.ReadWriter
+
 case class Dict (
     val dict : Long
 ) derives OptionPickler.ReadWriter
@@ -576,6 +588,10 @@ case class DoubleClass (
     val double : Long
 ) derives OptionPickler.ReadWriter
 
+case class DoubleNode (
+    val DoubleNode : Long
+) derives OptionPickler.ReadWriter
+
 case class Dynamic (
     val dynamic : Long
 ) derives OptionPickler.ReadWriter
@@ -696,22 +712,6 @@ case class Function (
     val function : Long
 ) derives OptionPickler.ReadWriter
 
-case class Get (
-    val get : Long
-) derives OptionPickler.ReadWriter
-
-case class Global (
-    val global : Long
-) derives OptionPickler.ReadWriter
-
-case class Go (
-    val go : Long
-) derives OptionPickler.ReadWriter
-
-case class Goto (
-    val goto : Long
-) derives OptionPickler.ReadWriter
-
 case class Def (
     val `def` : Long
 ) derives OptionPickler.ReadWriter
@@ -758,6 +758,10 @@ case class FalseClass (
 
 case class Obj3 (
     val dummy : Long,
+    val get : Get,
+    val global : Global,
+    val go : Go,
+    val goto : Goto,
     val guard : Guard,
     val hasOwnProperty : HasOwnProperty,
     @upickle.implicits.key("hashCode")
@@ -775,6 +779,7 @@ case class Obj3 (
     val inout : Inout,
     val instanceof : Instanceof,
     val int : IntClass,
+    val IntNode : IntNode,
     val interface : Interface,
     val internal : Internal,
     val is : Is,
@@ -806,6 +811,7 @@ case class Obj3 (
     val Locale : Locale,
     val lock : Lock,
     val long : LongClass,
+    val LongNode : LongNode,
     val map : MapClass,
     val MapEntry : MapEntry,
     val metadata_property_handling : MetadataPropertyHandling,
@@ -813,16 +819,26 @@ case class Obj3 (
     val mutable : Mutable,
     val mutating : Mutating,
     val namespace : Namespace,
-    val native : Native,
-    val newtonsoft : Newtonsoft,
-    val nil : Nil,
-    val NO : No,
-    val noexcept : Noexcept,
     val `if` : If,
     val `implicit` : Implicit,
     val `import` : Import,
-    val `lazy` : Lazy,
-    val `new` : New
+    val `lazy` : Lazy
+) derives OptionPickler.ReadWriter
+
+case class Get (
+    val get : Long
+) derives OptionPickler.ReadWriter
+
+case class Global (
+    val global : Long
+) derives OptionPickler.ReadWriter
+
+case class Go (
+    val go : Long
+) derives OptionPickler.ReadWriter
+
+case class Goto (
+    val goto : Long
 ) derives OptionPickler.ReadWriter
 
 case class Guard (
@@ -890,6 +906,10 @@ case class IntClass (
     val int : Long
 ) derives OptionPickler.ReadWriter
 
+case class IntNode (
+    val IntNode : Long
+) derives OptionPickler.ReadWriter
+
 case class Interface (
     val interface : Long
 ) derives OptionPickler.ReadWriter
@@ -1014,6 +1034,10 @@ case class LongClass (
     val long : Long
 ) derives OptionPickler.ReadWriter
 
+case class LongNode (
+    val LongNode : Long
+) derives OptionPickler.ReadWriter
+
 case class MapClass (
     val map : Long
 ) derives OptionPickler.ReadWriter
@@ -1042,26 +1066,6 @@ case class Namespace (
     val namespace : Long
 ) derives OptionPickler.ReadWriter
 
-case class Native (
-    val native : Long
-) derives OptionPickler.ReadWriter
-
-case class Newtonsoft (
-    val newtonsoft : Long
-) derives OptionPickler.ReadWriter
-
-case class Nil (
-    val nil : Long
-) derives OptionPickler.ReadWriter
-
-case class No (
-    val NO : Long
-) derives OptionPickler.ReadWriter
-
-case class Noexcept (
-    val noexcept : Long
-) derives OptionPickler.ReadWriter
-
 case class If (
     val `if` : Long
 ) derives OptionPickler.ReadWriter
@@ -1078,13 +1082,14 @@ case class Lazy (
     val `lazy` : Long
 ) derives OptionPickler.ReadWriter
 
-case class New (
-    val `new` : Long
-) derives OptionPickler.ReadWriter
-
 case class Obj4 (
     val dummy : Long,
+    val native : Native,
+    val newtonsoft : Newtonsoft,
+    val nil : Nil,
+    val NO : No,
     val noSuchMethod : NoSuchMethod,
+    val noexcept : Noexcept,
     val nonatomic : Nonatomic,
     val None : NoneClass,
     val nonlocal : Nonlocal,
@@ -1094,9 +1099,11 @@ case class Obj4 (
     val NSError : NSError,
     val NSObject : NSObject,
     val NSString : NSString,
+    val NullNode : NullNode,
     val nullptr : Nullptr,
     val number : Number,
     val NULL : NULLClass,
+    val `new` : New,
     val none : Obj4None,
     val `null` : NullClass,
     val `object` : Object,
@@ -1105,9 +1112,8 @@ case class Obj4 (
     val `private` : Private,
     val `protected` : Protected,
     val protocol : ProtocolClass,
-    val `return` : Return,
-    val `sealed` : Sealed,
     val ObjectMapper : ObjectMapper,
+    val ObjectNode : ObjectNode,
     val of : Of,
     val oneway : Oneway,
     val open : Open,
@@ -1141,19 +1147,33 @@ case class Obj4 (
     val requires : Requires,
     val restrict : Restrict,
     val retain : Retain,
-    val rethrows : Rethrows,
-    val right : Right,
-    val runtimeType : RuntimeType,
-    val s : S,
-    val sbyte : Sbyte,
-    val SEL : Sel,
-    val select : Select
+    val rethrows : Rethrows
+) derives OptionPickler.ReadWriter
+
+case class Native (
+    val native : Long
+) derives OptionPickler.ReadWriter
+
+case class Newtonsoft (
+    val newtonsoft : Long
+) derives OptionPickler.ReadWriter
+
+case class Nil (
+    val nil : Long
+) derives OptionPickler.ReadWriter
+
+case class No (
+    val NO : Long
 ) derives OptionPickler.ReadWriter
 
 case class NoSuchMethod (
     val noSuchMethod : Long
 ) derives OptionPickler.ReadWriter
 
+case class Noexcept (
+    val noexcept : Long
+) derives OptionPickler.ReadWriter
+
 case class Nonatomic (
     val nonatomic : Long
 ) derives OptionPickler.ReadWriter
@@ -1190,6 +1210,10 @@ case class NSString (
     val NSString : Long
 ) derives OptionPickler.ReadWriter
 
+case class NullNode (
+    val NullNode : Long
+) derives OptionPickler.ReadWriter
+
 case class Nullptr (
     val nullptr : Long
 ) derives OptionPickler.ReadWriter
@@ -1202,6 +1226,10 @@ case class NULLClass (
     val NULL : Long
 ) derives OptionPickler.ReadWriter
 
+case class New (
+    val `new` : Long
+) derives OptionPickler.ReadWriter
+
 case class Obj4None (
     val none : Long
 ) derives OptionPickler.ReadWriter
@@ -1234,18 +1262,14 @@ case class ProtocolClass (
     val protocol : Long
 ) derives OptionPickler.ReadWriter
 
-case class Return (
-    val `return` : Long
-) derives OptionPickler.ReadWriter
-
-case class Sealed (
-    val `sealed` : Long
-) derives OptionPickler.ReadWriter
-
 case class ObjectMapper (
     val ObjectMapper : Long
 ) derives OptionPickler.ReadWriter
 
+case class ObjectNode (
+    val ObjectNode : Long
+) derives OptionPickler.ReadWriter
+
 case class Of (
     val of : Long
 ) derives OptionPickler.ReadWriter
@@ -1382,32 +1406,10 @@ case class Rethrows (
     val rethrows : Long
 ) derives OptionPickler.ReadWriter
 
-case class Right (
-    val right : Long
-) derives OptionPickler.ReadWriter
-
-case class RuntimeType (
-    val runtimeType : Long
-) derives OptionPickler.ReadWriter
-
-case class S (
-    val s : Long
-) derives OptionPickler.ReadWriter
-
-case class Sbyte (
-    val sbyte : Long
-) derives OptionPickler.ReadWriter
-
-case class Sel (
-    val SEL : Long
-) derives OptionPickler.ReadWriter
-
-case class Select (
-    val select : Long
-) derives OptionPickler.ReadWriter
-
 case class Obj5 (
     val dummy : Long,
+    val `return` : Return,
+    val `sealed` : Sealed,
     val self : SelfClass,
     val `super` : Super,
     val `then` : Then,
@@ -1416,11 +1418,17 @@ case class Obj5 (
     val True : True,
     val `try` : Try,
     val Type : Type,
-    val `var` : Var,
     val `true` : TrueClass,
     val `type` : TypeClass,
+    val right : Right,
+    val runtimeType : RuntimeType,
+    val s : S,
+    val sbyte : Sbyte,
+    val SEL : Sel,
+    val select : Select,
     val Self : Self,
     val Sendable : Sendable,
+    val SerializationFeature : SerializationFeature,
     val serialize : Serialize,
     val SerializerProvider : SerializerProvider,
     val set : Set,
@@ -1445,6 +1453,7 @@ case class Obj5 (
     val synchronizedValue : Synchronized,
     val system : SystemClass,
     val template : Template,
+    val TextNode : TextNode,
     val thread_local : ThreadLocal,
     val throws : Throws,
     val TimeOnly : TimeOnly,
@@ -1464,16 +1473,15 @@ case class Obj5 (
     val ulong : Ulong,
     val unchecked : Unchecked,
     val undefined : Undefined,
-    val union : Union,
-    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 union : Union
+) derives OptionPickler.ReadWriter
+
+case class Return (
+    val `return` : Long
+) derives OptionPickler.ReadWriter
+
+case class Sealed (
+    val `sealed` : Long
 ) derives OptionPickler.ReadWriter
 
 case class SelfClass (
@@ -1508,10 +1516,6 @@ case class Type (
     val Type : Long
 ) derives OptionPickler.ReadWriter
 
-case class Var (
-    val `var` : Long
-) derives OptionPickler.ReadWriter
-
 case class TrueClass (
     val `true` : Long
 ) derives OptionPickler.ReadWriter
@@ -1520,6 +1524,30 @@ case class TypeClass (
     val `type` : Long
 ) derives OptionPickler.ReadWriter
 
+case class Right (
+    val right : Long
+) derives OptionPickler.ReadWriter
+
+case class RuntimeType (
+    val runtimeType : Long
+) derives OptionPickler.ReadWriter
+
+case class S (
+    val s : Long
+) derives OptionPickler.ReadWriter
+
+case class Sbyte (
+    val sbyte : Long
+) derives OptionPickler.ReadWriter
+
+case class Sel (
+    val SEL : Long
+) derives OptionPickler.ReadWriter
+
+case class Select (
+    val select : Long
+) derives OptionPickler.ReadWriter
+
 case class Self (
     val Self : Long
 ) derives OptionPickler.ReadWriter
@@ -1528,6 +1556,10 @@ case class Sendable (
     val Sendable : Long
 ) derives OptionPickler.ReadWriter
 
+case class SerializationFeature (
+    val SerializationFeature : Long
+) derives OptionPickler.ReadWriter
+
 case class Serialize (
     val serialize : Long
 ) derives OptionPickler.ReadWriter
@@ -1621,6 +1653,10 @@ case class Template (
     val template : Long
 ) derives OptionPickler.ReadWriter
 
+case class TextNode (
+    val TextNode : Long
+) derives OptionPickler.ReadWriter
+
 case class ThreadLocal (
     val thread_local : Long
 ) derives OptionPickler.ReadWriter
@@ -1698,6 +1734,48 @@ case class Union (
     val union : Long
 ) derives OptionPickler.ReadWriter
 
+case class Obj6 (
+    val dummy : Long,
+    val `var` : Var,
+    val `while` : While,
+    val `with` : With,
+    val `yield` : Yield,
+    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 void : Void,
+    val volatile : Volatile,
+    val wchar_t : WcharT,
+    val weak : Weak,
+    val where : Where,
+    val willSet : WillSet,
+    val xor : Xor,
+    val xor_eq : XorEq,
+    val YES : Yes
+) derives OptionPickler.ReadWriter
+
+case class Var (
+    val `var` : Long
+) derives OptionPickler.ReadWriter
+
+case class While (
+    val `while` : Long
+) derives OptionPickler.ReadWriter
+
+case class With (
+    val `with` : Long
+) derives OptionPickler.ReadWriter
+
+case class Yield (
+    val `yield` : Long
+) derives OptionPickler.ReadWriter
+
 case class Unowned (
     val unowned : Long
 ) derives OptionPickler.ReadWriter
@@ -1734,34 +1812,6 @@ case class Virtual (
     val virtual : Long
 ) derives OptionPickler.ReadWriter
 
-case class Obj6 (
-    val dummy : Long,
-    val `while` : While,
-    val `with` : With,
-    val `yield` : Yield,
-    val void : Void,
-    val volatile : Volatile,
-    val wchar_t : WcharT,
-    val weak : Weak,
-    val where : Where,
-    val willSet : WillSet,
-    val xor : Xor,
-    val xor_eq : XorEq,
-    val YES : Yes
-) derives OptionPickler.ReadWriter
-
-case class While (
-    val `while` : Long
-) derives OptionPickler.ReadWriter
-
-case class With (
-    val `with` : Long
-) derives OptionPickler.ReadWriter
-
-case class Yield (
-    val `yield` : Long
-) derives OptionPickler.ReadWriter
-
 case class Void (
     val void : Long
 ) derives OptionPickler.ReadWriter
diff --git a/base/schema-cjson/test/inputs/schema/direct-union.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/direct-union.schema/default/TopLevel.c
index 6d0fcbb..0eef3e9 100644
--- a/base/schema-cjson/test/inputs/schema/direct-union.schema/default/TopLevel.c
+++ b/head/schema-cjson/test/inputs/schema/direct-union.schema/default/TopLevel.c
@@ -146,6 +146,349 @@ void cJSON_DeleteAnything(struct Anything * x) {
     }
 }
 
+struct ArrayNode * cJSON_ParseArrayNode(const char * s) {
+    struct ArrayNode * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetArrayNodeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct ArrayNode * cJSON_GetArrayNodeValue(const cJSON * j) {
+    struct ArrayNode * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct ArrayNode)))) {
+            memset(x, 0, sizeof(struct ArrayNode));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateArrayNode(const struct ArrayNode * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintArrayNode(const struct ArrayNode * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateArrayNode(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteArrayNode(struct ArrayNode * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct BooleanNode * cJSON_ParseBooleanNode(const char * s) {
+    struct BooleanNode * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetBooleanNodeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct BooleanNode * cJSON_GetBooleanNodeValue(const cJSON * j) {
+    struct BooleanNode * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct BooleanNode)))) {
+            memset(x, 0, sizeof(struct BooleanNode));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateBooleanNode(const struct BooleanNode * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintBooleanNode(const struct BooleanNode * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateBooleanNode(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteBooleanNode(struct BooleanNode * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct DoubleNode * cJSON_ParseDoubleNode(const char * s) {
+    struct DoubleNode * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetDoubleNodeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct DoubleNode * cJSON_GetDoubleNodeValue(const cJSON * j) {
+    struct DoubleNode * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct DoubleNode)))) {
+            memset(x, 0, sizeof(struct DoubleNode));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateDoubleNode(const struct DoubleNode * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintDoubleNode(const struct DoubleNode * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateDoubleNode(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteDoubleNode(struct DoubleNode * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct IntNode * cJSON_ParseIntNode(const char * s) {
+    struct IntNode * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetIntNodeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct IntNode * cJSON_GetIntNodeValue(const cJSON * j) {
+    struct IntNode * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct IntNode)))) {
+            memset(x, 0, sizeof(struct IntNode));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateIntNode(const struct IntNode * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintIntNode(const struct IntNode * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateIntNode(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteIntNode(struct IntNode * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct LongNode * cJSON_ParseLongNode(const char * s) {
+    struct LongNode * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetLongNodeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct LongNode * cJSON_GetLongNodeValue(const cJSON * j) {
+    struct LongNode * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct LongNode)))) {
+            memset(x, 0, sizeof(struct LongNode));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateLongNode(const struct LongNode * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintLongNode(const struct LongNode * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateLongNode(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteLongNode(struct LongNode * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct NullNode * cJSON_ParseNullNode(const char * s) {
+    struct NullNode * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetNullNodeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct NullNode * cJSON_GetNullNodeValue(const cJSON * j) {
+    struct NullNode * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct NullNode)))) {
+            memset(x, 0, sizeof(struct NullNode));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateNullNode(const struct NullNode * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintNullNode(const struct NullNode * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateNullNode(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteNullNode(struct NullNode * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct ObjectNode * cJSON_ParseObjectNode(const char * s) {
+    struct ObjectNode * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetObjectNodeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct ObjectNode * cJSON_GetObjectNodeValue(const cJSON * j) {
+    struct ObjectNode * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct ObjectNode)))) {
+            memset(x, 0, sizeof(struct ObjectNode));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateObjectNode(const struct ObjectNode * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintObjectNode(const struct ObjectNode * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateObjectNode(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteObjectNode(struct ObjectNode * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Thing * cJSON_ParseThing(const char * s) {
     struct Thing * x = NULL;
     if (NULL != s) {
@@ -216,6 +559,55 @@ void cJSON_DeleteThing(struct Thing * x) {
     }
 }
 
+struct TextNode * cJSON_ParseTextNode(const char * s) {
+    struct TextNode * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetTextNodeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct TextNode * cJSON_GetTextNodeValue(const cJSON * j) {
+    struct TextNode * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct TextNode)))) {
+            memset(x, 0, sizeof(struct TextNode));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateTextNode(const struct TextNode * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintTextNode(const struct TextNode * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateTextNode(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteTextNode(struct TextNode * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct TopLevel * cJSON_ParseTopLevel(const char * s) {
     struct TopLevel * x = NULL;
     if (NULL != s) {
@@ -233,6 +625,41 @@ struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j) {
     if (NULL != j) {
         if (NULL != (x = cJSON_malloc(sizeof(struct TopLevel)))) {
             memset(x, 0, sizeof(struct TopLevel));
+            if (cJSON_HasObjectItem(j, "arrayNode")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "arrayNode"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->array_node = cJSON_GetArrayNodeValue(cJSON_GetObjectItemCaseSensitive(j, "arrayNode"));
+                if (NULL == x->array_node) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
+            if (cJSON_HasObjectItem(j, "booleanNode")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "booleanNode"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->boolean_node = cJSON_GetBooleanNodeValue(cJSON_GetObjectItemCaseSensitive(j, "booleanNode"));
+                if (NULL == x->boolean_node) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
+            if (cJSON_HasObjectItem(j, "doubleNode")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "doubleNode"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->double_node = cJSON_GetDoubleNodeValue(cJSON_GetObjectItemCaseSensitive(j, "doubleNode"));
+                if (NULL == x->double_node) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
+            if (cJSON_HasObjectItem(j, "intNode")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "intNode"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->int_node = cJSON_GetIntNodeValue(cJSON_GetObjectItemCaseSensitive(j, "intNode"));
+                if (NULL == x->int_node) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
+            if (cJSON_HasObjectItem(j, "longNode")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "longNode"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->long_node = cJSON_GetLongNodeValue(cJSON_GetObjectItemCaseSensitive(j, "longNode"));
+                if (NULL == x->long_node) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
+            if (cJSON_HasObjectItem(j, "nullNode")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "nullNode"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->null_node = cJSON_GetNullNodeValue(cJSON_GetObjectItemCaseSensitive(j, "nullNode"));
+                if (NULL == x->null_node) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
+            if (cJSON_HasObjectItem(j, "objectNode")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "objectNode"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->object_node = cJSON_GetObjectNodeValue(cJSON_GetObjectItemCaseSensitive(j, "objectNode"));
+                if (NULL == x->object_node) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
             if (!cJSON_HasObjectItem(j, "stuff")) { cJSON_DeleteTopLevel(x); return NULL; }
             if (cJSON_HasObjectItem(j, "stuff")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "stuff"))) { cJSON_DeleteTopLevel(x); return NULL; }
@@ -257,6 +684,11 @@ struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j) {
             else {
                 x->stuff = hashtable_create(64, false);
             }
+            if (cJSON_HasObjectItem(j, "textNode")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "textNode"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->text_node = cJSON_GetTextNodeValue(cJSON_GetObjectItemCaseSensitive(j, "textNode"));
+                if (NULL == x->text_node) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
         }
     }
     return x;
@@ -266,6 +698,27 @@ cJSON * cJSON_CreateTopLevel(const struct TopLevel * x) {
     cJSON * j = NULL;
     if (NULL != x) {
         if (NULL != (j = cJSON_CreateObject())) {
+            if (NULL != x->array_node) {
+                cJSON_AddItemToObject(j, "arrayNode", cJSON_CreateArrayNode(x->array_node));
+            }
+            if (NULL != x->boolean_node) {
+                cJSON_AddItemToObject(j, "booleanNode", cJSON_CreateBooleanNode(x->boolean_node));
+            }
+            if (NULL != x->double_node) {
+                cJSON_AddItemToObject(j, "doubleNode", cJSON_CreateDoubleNode(x->double_node));
+            }
+            if (NULL != x->int_node) {
+                cJSON_AddItemToObject(j, "intNode", cJSON_CreateIntNode(x->int_node));
+            }
+            if (NULL != x->long_node) {
+                cJSON_AddItemToObject(j, "longNode", cJSON_CreateLongNode(x->long_node));
+            }
+            if (NULL != x->null_node) {
+                cJSON_AddItemToObject(j, "nullNode", cJSON_CreateNullNode(x->null_node));
+            }
+            if (NULL != x->object_node) {
+                cJSON_AddItemToObject(j, "objectNode", cJSON_CreateObjectNode(x->object_node));
+            }
             if (NULL != x->stuff) {
                 cJSON * j1 = cJSON_CreateObject();
                 if (NULL != j1) {
@@ -281,6 +734,9 @@ cJSON * cJSON_CreateTopLevel(const struct TopLevel * x) {
                     cJSON_AddItemToObject(j, "stuff", j1);
                 }
             }
+            if (NULL != x->text_node) {
+                cJSON_AddItemToObject(j, "textNode", cJSON_CreateTextNode(x->text_node));
+            }
         }
     }
     return j;
@@ -300,6 +756,27 @@ char * cJSON_PrintTopLevel(const struct TopLevel * x) {
 
 void cJSON_DeleteTopLevel(struct TopLevel * x) {
     if (NULL != x) {
+        if (NULL != x->array_node) {
+            cJSON_DeleteArrayNode(x->array_node);
+        }
+        if (NULL != x->boolean_node) {
+            cJSON_DeleteBooleanNode(x->boolean_node);
+        }
+        if (NULL != x->double_node) {
+            cJSON_DeleteDoubleNode(x->double_node);
+        }
+        if (NULL != x->int_node) {
+            cJSON_DeleteIntNode(x->int_node);
+        }
+        if (NULL != x->long_node) {
+            cJSON_DeleteLongNode(x->long_node);
+        }
+        if (NULL != x->null_node) {
+            cJSON_DeleteNullNode(x->null_node);
+        }
+        if (NULL != x->object_node) {
+            cJSON_DeleteObjectNode(x->object_node);
+        }
         if (NULL != x->stuff) {
             char **keys1 = NULL;
             size_t count1 = hashtable_get_keys(x->stuff, &keys1);
@@ -314,6 +791,9 @@ void cJSON_DeleteTopLevel(struct TopLevel * x) {
             }
             hashtable_release(x->stuff);
         }
+        if (NULL != x->text_node) {
+            cJSON_DeleteTextNode(x->text_node);
+        }
         cJSON_free(x);
     }
 }
diff --git a/base/schema-cjson/test/inputs/schema/direct-union.schema/default/TopLevel.h b/head/schema-cjson/test/inputs/schema/direct-union.schema/default/TopLevel.h
index 69f7c25..b3ce1ae 100644
--- a/base/schema-cjson/test/inputs/schema/direct-union.schema/default/TopLevel.h
+++ b/head/schema-cjson/test/inputs/schema/direct-union.schema/default/TopLevel.h
@@ -48,6 +48,27 @@ static inline size_t quicktype_strlen_codepoints(const char * s)
 }
 #endif
 
+struct ArrayNode {
+};
+
+struct BooleanNode {
+};
+
+struct DoubleNode {
+};
+
+struct IntNode {
+};
+
+struct LongNode {
+};
+
+struct NullNode {
+};
+
+struct ObjectNode {
+};
+
 struct Anything {
     int type;
     union {
@@ -65,8 +86,19 @@ struct Thing {
     struct Anything * required;
 };
 
+struct TextNode {
+};
+
 struct TopLevel {
+    struct ArrayNode * array_node;
+    struct BooleanNode * boolean_node;
+    struct DoubleNode * double_node;
+    struct IntNode * int_node;
+    struct LongNode * long_node;
+    struct NullNode * null_node;
+    struct ObjectNode * object_node;
     hashtable_t * stuff;
+    struct TextNode * text_node;
 };
 
 #define cJSON_IsAnything(j) (cJSON_IsNull(j) || cJSON_IsNumber(j) || quicktype_cJSON_IsInteger(j) || cJSON_IsBool(j) || cJSON_IsString(j) || cJSON_IsArray(j) || cJSON_IsObject(j))
@@ -76,12 +108,60 @@ void cJSON_DeleteAnything(struct Anything * x);
 struct Anything * cJSON_ParseAnything(const char * s);
 char * cJSON_PrintAnything(const struct Anything * x);
 
+struct ArrayNode * cJSON_ParseArrayNode(const char * s);
+struct ArrayNode * cJSON_GetArrayNodeValue(const cJSON * j);
+cJSON * cJSON_CreateArrayNode(const struct ArrayNode * x);
+char * cJSON_PrintArrayNode(const struct ArrayNode * x);
+void cJSON_DeleteArrayNode(struct ArrayNode * x);
+
+struct BooleanNode * cJSON_ParseBooleanNode(const char * s);
+struct BooleanNode * cJSON_GetBooleanNodeValue(const cJSON * j);
+cJSON * cJSON_CreateBooleanNode(const struct BooleanNode * x);
+char * cJSON_PrintBooleanNode(const struct BooleanNode * x);
+void cJSON_DeleteBooleanNode(struct BooleanNode * x);
+
+struct DoubleNode * cJSON_ParseDoubleNode(const char * s);
+struct DoubleNode * cJSON_GetDoubleNodeValue(const cJSON * j);
+cJSON * cJSON_CreateDoubleNode(const struct DoubleNode * x);
+char * cJSON_PrintDoubleNode(const struct DoubleNode * x);
+void cJSON_DeleteDoubleNode(struct DoubleNode * x);
+
+struct IntNode * cJSON_ParseIntNode(const char * s);
+struct IntNode * cJSON_GetIntNodeValue(const cJSON * j);
+cJSON * cJSON_CreateIntNode(const struct IntNode * x);
+char * cJSON_PrintIntNode(const struct IntNode * x);
+void cJSON_DeleteIntNode(struct IntNode * x);
+
+struct LongNode * cJSON_ParseLongNode(const char * s);
+struct LongNode * cJSON_GetLongNodeValue(const cJSON * j);
+cJSON * cJSON_CreateLongNode(const struct LongNode * x);
+char * cJSON_PrintLongNode(const struct LongNode * x);
+void cJSON_DeleteLongNode(struct LongNode * x);
+
+struct NullNode * cJSON_ParseNullNode(const char * s);
+struct NullNode * cJSON_GetNullNodeValue(const cJSON * j);
+cJSON * cJSON_CreateNullNode(const struct NullNode * x);
+char * cJSON_PrintNullNode(const struct NullNode * x);
+void cJSON_DeleteNullNode(struct NullNode * x);
+
+struct ObjectNode * cJSON_ParseObjectNode(const char * s);
+struct ObjectNode * cJSON_GetObjectNodeValue(const cJSON * j);
+cJSON * cJSON_CreateObjectNode(const struct ObjectNode * x);
+char * cJSON_PrintObjectNode(const struct ObjectNode * x);
+void cJSON_DeleteObjectNode(struct ObjectNode * x);
+
 struct Thing * cJSON_ParseThing(const char * s);
 struct Thing * cJSON_GetThingValue(const cJSON * j);
 cJSON * cJSON_CreateThing(const struct Thing * x);
 char * cJSON_PrintThing(const struct Thing * x);
 void cJSON_DeleteThing(struct Thing * x);
 
+struct TextNode * cJSON_ParseTextNode(const char * s);
+struct TextNode * cJSON_GetTextNodeValue(const cJSON * j);
+cJSON * cJSON_CreateTextNode(const struct TextNode * x);
+char * cJSON_PrintTextNode(const struct TextNode * x);
+void cJSON_DeleteTextNode(struct TextNode * x);
+
 struct TopLevel * cJSON_ParseTopLevel(const char * s);
 struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j);
 cJSON * cJSON_CreateTopLevel(const struct TopLevel * x);
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..5980192 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
@@ -19,6 +19,7 @@ enum Enum cJSON_GetEnumValue(const cJSON * j) {
         else if (!strcmp(cJSON_GetStringValue(j), "and_eq")) x = ENUM_AND_EQ;
         else if (!strcmp(cJSON_GetStringValue(j), "any")) x = ENUM_ANY;
         else if (!strcmp(cJSON_GetStringValue(j), "Any")) x = ENUM_ENUM_ANY;
+        else if (!strcmp(cJSON_GetStringValue(j), "ArrayNode")) x = ENUM_ARRAY_NODE;
         else if (!strcmp(cJSON_GetStringValue(j), "array")) x = ENUM_ARRAY;
         else if (!strcmp(cJSON_GetStringValue(j), "as")) x = ENUM_AS;
         else if (!strcmp(cJSON_GetStringValue(j), "asm")) x = ENUM_ASM;
@@ -38,6 +39,7 @@ enum Enum cJSON_GetEnumValue(const cJSON * j) {
         else if (!strcmp(cJSON_GetStringValue(j), "BOOL")) x = ENUM_ENUM_BOOL;
         else if (!strcmp(cJSON_GetStringValue(j), "bool")) x = ENUM_PURPLE_BOOL;
         else if (!strcmp(cJSON_GetStringValue(j), "boolean")) x = ENUM_BOOLEAN;
+        else if (!strcmp(cJSON_GetStringValue(j), "BooleanNode")) x = ENUM_BOOLEAN_NODE;
         else if (!strcmp(cJSON_GetStringValue(j), "break")) x = ENUM_BREAK;
         else if (!strcmp(cJSON_GetStringValue(j), "bycopy")) x = ENUM_BYCOPY;
         else if (!strcmp(cJSON_GetStringValue(j), "byref")) x = ENUM_BYREF;
@@ -81,6 +83,7 @@ enum Enum cJSON_GetEnumValue(const cJSON * j) {
         else if (!strcmp(cJSON_GetStringValue(j), "debugger")) x = ENUM_DEBUGGER;
         else if (!strcmp(cJSON_GetStringValue(j), "decimal")) x = ENUM_DECIMAL;
         else if (!strcmp(cJSON_GetStringValue(j), "declare")) x = ENUM_DECLARE;
+        else if (!strcmp(cJSON_GetStringValue(j), "DeserializationFeature")) x = ENUM_DESERIALIZATION_FEATURE;
         else if (!strcmp(cJSON_GetStringValue(j), "decltype")) x = ENUM_DECLTYPE;
         else if (!strcmp(cJSON_GetStringValue(j), "decode_string")) x = ENUM_DECODE_STRING;
         else if (!strcmp(cJSON_GetStringValue(j), "Decoder")) x = ENUM_DECODER;
@@ -97,6 +100,7 @@ enum Enum cJSON_GetEnumValue(const cJSON * j) {
         else if (!strcmp(cJSON_GetStringValue(j), "didSet")) x = ENUM_DID_SET;
         else if (!strcmp(cJSON_GetStringValue(j), "do")) x = ENUM_DO;
         else if (!strcmp(cJSON_GetStringValue(j), "double")) x = ENUM_DOUBLE;
+        else if (!strcmp(cJSON_GetStringValue(j), "DoubleNode")) x = ENUM_DOUBLE_NODE;
         else if (!strcmp(cJSON_GetStringValue(j), "dynamic")) x = ENUM_DYNAMIC;
         else if (!strcmp(cJSON_GetStringValue(j), "dynamic_cast")) x = ENUM_DYNAMIC_CAST;
         else if (!strcmp(cJSON_GetStringValue(j), "elif")) x = ENUM_ELIF;
@@ -155,6 +159,7 @@ enum Enum cJSON_GetEnumValue(const cJSON * j) {
         else if (!strcmp(cJSON_GetStringValue(j), "inout")) x = ENUM_INOUT;
         else if (!strcmp(cJSON_GetStringValue(j), "instanceof")) x = ENUM_INSTANCEOF;
         else if (!strcmp(cJSON_GetStringValue(j), "int")) x = ENUM_INT;
+        else if (!strcmp(cJSON_GetStringValue(j), "IntNode")) x = ENUM_INT_NODE;
         else if (!strcmp(cJSON_GetStringValue(j), "interface")) x = ENUM_INTERFACE;
         else if (!strcmp(cJSON_GetStringValue(j), "internal")) x = ENUM_INTERNAL;
         else if (!strcmp(cJSON_GetStringValue(j), "IsoDateTimeOffsetConverter")) x = ENUM_ISO_DATE_TIME_OFFSET_CONVERTER;
@@ -184,6 +189,7 @@ enum Enum cJSON_GetEnumValue(const cJSON * j) {
         else if (!strcmp(cJSON_GetStringValue(j), "left")) x = ENUM_LEFT;
         else if (!strcmp(cJSON_GetStringValue(j), "let")) x = ENUM_LET;
         else if (!strcmp(cJSON_GetStringValue(j), "list")) x = ENUM_LIST;
+        else if (!strcmp(cJSON_GetStringValue(j), "LongNode")) x = ENUM_LONG_NODE;
         else if (!strcmp(cJSON_GetStringValue(j), "Locale")) x = ENUM_LOCALE;
         else if (!strcmp(cJSON_GetStringValue(j), "lock")) x = ENUM_LOCK;
         else if (!strcmp(cJSON_GetStringValue(j), "long")) x = ENUM_LONG;
@@ -198,6 +204,7 @@ enum Enum cJSON_GetEnumValue(const cJSON * j) {
         else if (!strcmp(cJSON_GetStringValue(j), "new")) x = ENUM_NEW;
         else if (!strcmp(cJSON_GetStringValue(j), "newtonsoft")) x = ENUM_NEWTONSOFT;
         else if (!strcmp(cJSON_GetStringValue(j), "nil")) x = ENUM_NIL;
+        else if (!strcmp(cJSON_GetStringValue(j), "NullNode")) x = ENUM_NULL_NODE;
         else if (!strcmp(cJSON_GetStringValue(j), "NO")) x = ENUM_NO;
         else if (!strcmp(cJSON_GetStringValue(j), "noexcept")) x = ENUM_NOEXCEPT;
         else if (!strcmp(cJSON_GetStringValue(j), "nonatomic")) x = ENUM_NONATOMIC;
@@ -216,6 +223,7 @@ enum Enum cJSON_GetEnumValue(const cJSON * j) {
         else if (!strcmp(cJSON_GetStringValue(j), "nullptr")) x = ENUM_NULLPTR;
         else if (!strcmp(cJSON_GetStringValue(j), "number")) x = ENUM_NUMBER;
         else if (!strcmp(cJSON_GetStringValue(j), "object")) x = ENUM_OBJECT;
+        else if (!strcmp(cJSON_GetStringValue(j), "ObjectNode")) x = ENUM_OBJECT_NODE;
         else if (!strcmp(cJSON_GetStringValue(j), "ObjectMapper")) x = ENUM_OBJECT_MAPPER;
         else if (!strcmp(cJSON_GetStringValue(j), "of")) x = ENUM_OF;
         else if (!strcmp(cJSON_GetStringValue(j), "oneway")) x = ENUM_ONEWAY;
@@ -268,6 +276,7 @@ enum Enum cJSON_GetEnumValue(const cJSON * j) {
         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), "SerializationFeature")) x = ENUM_SERIALIZATION_FEATURE;
         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;
@@ -293,6 +302,7 @@ enum Enum cJSON_GetEnumValue(const cJSON * j) {
         else if (!strcmp(cJSON_GetStringValue(j), "template")) x = ENUM_TEMPLATE;
         else if (!strcmp(cJSON_GetStringValue(j), "then")) x = ENUM_THEN;
         else if (!strcmp(cJSON_GetStringValue(j), "this")) x = ENUM_THIS;
+        else if (!strcmp(cJSON_GetStringValue(j), "TextNode")) x = ENUM_TEXT_NODE;
         else if (!strcmp(cJSON_GetStringValue(j), "thread_local")) x = ENUM_THREAD_LOCAL;
         else if (!strcmp(cJSON_GetStringValue(j), "throw")) x = ENUM_THROW;
         else if (!strcmp(cJSON_GetStringValue(j), "throws")) x = ENUM_THROWS;
@@ -359,6 +369,7 @@ cJSON * cJSON_CreateEnum(const enum Enum x) {
         case ENUM_AND_EQ: j = cJSON_CreateString("and_eq"); break;
         case ENUM_ANY: j = cJSON_CreateString("any"); break;
         case ENUM_ENUM_ANY: j = cJSON_CreateString("Any"); break;
+        case ENUM_ARRAY_NODE: j = cJSON_CreateString("ArrayNode"); break;
         case ENUM_ARRAY: j = cJSON_CreateString("array"); break;
         case ENUM_AS: j = cJSON_CreateString("as"); break;
         case ENUM_ASM: j = cJSON_CreateString("asm"); break;
@@ -378,6 +389,7 @@ cJSON * cJSON_CreateEnum(const enum Enum x) {
         case ENUM_ENUM_BOOL: j = cJSON_CreateString("BOOL"); break;
         case ENUM_PURPLE_BOOL: j = cJSON_CreateString("bool"); break;
         case ENUM_BOOLEAN: j = cJSON_CreateString("boolean"); break;
+        case ENUM_BOOLEAN_NODE: j = cJSON_CreateString("BooleanNode"); break;
         case ENUM_BREAK: j = cJSON_CreateString("break"); break;
         case ENUM_BYCOPY: j = cJSON_CreateString("bycopy"); break;
         case ENUM_BYREF: j = cJSON_CreateString("byref"); break;
@@ -421,6 +433,7 @@ cJSON * cJSON_CreateEnum(const enum Enum x) {
         case ENUM_DEBUGGER: j = cJSON_CreateString("debugger"); break;
         case ENUM_DECIMAL: j = cJSON_CreateString("decimal"); break;
         case ENUM_DECLARE: j = cJSON_CreateString("declare"); break;
+        case ENUM_DESERIALIZATION_FEATURE: j = cJSON_CreateString("DeserializationFeature"); break;
         case ENUM_DECLTYPE: j = cJSON_CreateString("decltype"); break;
         case ENUM_DECODE_STRING: j = cJSON_CreateString("decode_string"); break;
         case ENUM_DECODER: j = cJSON_CreateString("Decoder"); break;
@@ -437,6 +450,7 @@ cJSON * cJSON_CreateEnum(const enum Enum x) {
         case ENUM_DID_SET: j = cJSON_CreateString("didSet"); break;
         case ENUM_DO: j = cJSON_CreateString("do"); break;
         case ENUM_DOUBLE: j = cJSON_CreateString("double"); break;
+        case ENUM_DOUBLE_NODE: j = cJSON_CreateString("DoubleNode"); break;
         case ENUM_DYNAMIC: j = cJSON_CreateString("dynamic"); break;
         case ENUM_DYNAMIC_CAST: j = cJSON_CreateString("dynamic_cast"); break;
         case ENUM_ELIF: j = cJSON_CreateString("elif"); break;
@@ -495,6 +509,7 @@ cJSON * cJSON_CreateEnum(const enum Enum x) {
         case ENUM_INOUT: j = cJSON_CreateString("inout"); break;
         case ENUM_INSTANCEOF: j = cJSON_CreateString("instanceof"); break;
         case ENUM_INT: j = cJSON_CreateString("int"); break;
+        case ENUM_INT_NODE: j = cJSON_CreateString("IntNode"); break;
         case ENUM_INTERFACE: j = cJSON_CreateString("interface"); break;
         case ENUM_INTERNAL: j = cJSON_CreateString("internal"); break;
         case ENUM_ISO_DATE_TIME_OFFSET_CONVERTER: j = cJSON_CreateString("IsoDateTimeOffsetConverter"); break;
@@ -524,6 +539,7 @@ cJSON * cJSON_CreateEnum(const enum Enum x) {
         case ENUM_LEFT: j = cJSON_CreateString("left"); break;
         case ENUM_LET: j = cJSON_CreateString("let"); break;
         case ENUM_LIST: j = cJSON_CreateString("list"); break;
+        case ENUM_LONG_NODE: j = cJSON_CreateString("LongNode"); break;
         case ENUM_LOCALE: j = cJSON_CreateString("Locale"); break;
         case ENUM_LOCK: j = cJSON_CreateString("lock"); break;
         case ENUM_LONG: j = cJSON_CreateString("long"); break;
@@ -538,6 +554,7 @@ cJSON * cJSON_CreateEnum(const enum Enum x) {
         case ENUM_NEW: j = cJSON_CreateString("new"); break;
         case ENUM_NEWTONSOFT: j = cJSON_CreateString("newtonsoft"); break;
         case ENUM_NIL: j = cJSON_CreateString("nil"); break;
+        case ENUM_NULL_NODE: j = cJSON_CreateString("NullNode"); break;
         case ENUM_NO: j = cJSON_CreateString("NO"); break;
         case ENUM_NOEXCEPT: j = cJSON_CreateString("noexcept"); break;
         case ENUM_NONATOMIC: j = cJSON_CreateString("nonatomic"); break;
@@ -556,6 +573,7 @@ cJSON * cJSON_CreateEnum(const enum Enum x) {
         case ENUM_NULLPTR: j = cJSON_CreateString("nullptr"); break;
         case ENUM_NUMBER: j = cJSON_CreateString("number"); break;
         case ENUM_OBJECT: j = cJSON_CreateString("object"); break;
+        case ENUM_OBJECT_NODE: j = cJSON_CreateString("ObjectNode"); break;
         case ENUM_OBJECT_MAPPER: j = cJSON_CreateString("ObjectMapper"); break;
         case ENUM_OF: j = cJSON_CreateString("of"); break;
         case ENUM_ONEWAY: j = cJSON_CreateString("oneway"); break;
@@ -608,6 +626,7 @@ cJSON * cJSON_CreateEnum(const enum Enum x) {
         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_SERIALIZATION_FEATURE: j = cJSON_CreateString("SerializationFeature"); 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;
@@ -633,6 +652,7 @@ cJSON * cJSON_CreateEnum(const enum Enum x) {
         case ENUM_TEMPLATE: j = cJSON_CreateString("template"); break;
         case ENUM_THEN: j = cJSON_CreateString("then"); break;
         case ENUM_THIS: j = cJSON_CreateString("this"); break;
+        case ENUM_TEXT_NODE: j = cJSON_CreateString("TextNode"); break;
         case ENUM_THREAD_LOCAL: j = cJSON_CreateString("thread_local"); break;
         case ENUM_THROW: j = cJSON_CreateString("throw"); break;
         case ENUM_THROWS: j = cJSON_CreateString("throws"); 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..d5c6771 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
@@ -60,6 +60,7 @@ enum Enum {
     ENUM_AND_EQ,
     ENUM_ANY,
     ENUM_ENUM_ANY,
+    ENUM_ARRAY_NODE,
     ENUM_ARRAY,
     ENUM_AS,
     ENUM_ASM,
@@ -79,6 +80,7 @@ enum Enum {
     ENUM_ENUM_BOOL,
     ENUM_PURPLE_BOOL,
     ENUM_BOOLEAN,
+    ENUM_BOOLEAN_NODE,
     ENUM_BREAK,
     ENUM_BYCOPY,
     ENUM_BYREF,
@@ -122,6 +124,7 @@ enum Enum {
     ENUM_DEBUGGER,
     ENUM_DECIMAL,
     ENUM_DECLARE,
+    ENUM_DESERIALIZATION_FEATURE,
     ENUM_DECLTYPE,
     ENUM_DECODE_STRING,
     ENUM_DECODER,
@@ -138,6 +141,7 @@ enum Enum {
     ENUM_DID_SET,
     ENUM_DO,
     ENUM_DOUBLE,
+    ENUM_DOUBLE_NODE,
     ENUM_DYNAMIC,
     ENUM_DYNAMIC_CAST,
     ENUM_ELIF,
@@ -196,6 +200,7 @@ enum Enum {
     ENUM_INOUT,
     ENUM_INSTANCEOF,
     ENUM_INT,
+    ENUM_INT_NODE,
     ENUM_INTERFACE,
     ENUM_INTERNAL,
     ENUM_ISO_DATE_TIME_OFFSET_CONVERTER,
@@ -225,6 +230,7 @@ enum Enum {
     ENUM_LEFT,
     ENUM_LET,
     ENUM_LIST,
+    ENUM_LONG_NODE,
     ENUM_LOCALE,
     ENUM_LOCK,
     ENUM_LONG,
@@ -239,6 +245,7 @@ enum Enum {
     ENUM_NEW,
     ENUM_NEWTONSOFT,
     ENUM_NIL,
+    ENUM_NULL_NODE,
     ENUM_NO,
     ENUM_NOEXCEPT,
     ENUM_NONATOMIC,
@@ -257,6 +264,7 @@ enum Enum {
     ENUM_NULLPTR,
     ENUM_NUMBER,
     ENUM_OBJECT,
+    ENUM_OBJECT_NODE,
     ENUM_OBJECT_MAPPER,
     ENUM_OF,
     ENUM_ONEWAY,
@@ -309,6 +317,7 @@ enum Enum {
     ENUM_ENUM_SELF,
     ENUM_SENDABLE,
     ENUM_SERIALIZE,
+    ENUM_SERIALIZATION_FEATURE,
     ENUM_SERIALIZER_PROVIDER,
     ENUM_SET,
     ENUM_SHORT,
@@ -334,6 +343,7 @@ enum Enum {
     ENUM_TEMPLATE,
     ENUM_THEN,
     ENUM_THIS,
+    ENUM_TEXT_NODE,
     ENUM_THREAD_LOCAL,
     ENUM_THROW,
     ENUM_THROWS,
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..daa17c9 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
@@ -137,6 +137,50 @@ void cJSON_DeleteUnionArray(struct UnionArray * x) {
     }
 }
 
+struct UnionArrayNode * cJSON_GetUnionArrayNodeValue(const cJSON * j) {
+    struct UnionArrayNode * x = cJSON_malloc(sizeof(struct UnionArrayNode));
+    if (NULL != x) {
+        memset(x, 0, sizeof(struct UnionArrayNode));
+        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.array_node = cJSON_GetArrayNodeValue(j);
+            if (NULL == x->value.array_node) x->type = 0;
+        }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
+    }
+    return x;
+}
+struct UnionArrayNode * cJSON_ParseUnionArrayNode(const char * s) { cJSON * j = cJSON_Parse(s); struct UnionArrayNode * x = j ? cJSON_GetUnionArrayNodeValue(j) : NULL; cJSON_Delete(j); return x; }
+char * cJSON_PrintUnionArrayNode(const struct UnionArrayNode * x) { cJSON * j = cJSON_CreateUnionArrayNode(x); char * s = j ? cJSON_Print(j) : NULL; cJSON_Delete(j); return s; }
+
+cJSON * cJSON_CreateUnionArrayNode(const struct UnionArrayNode * 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_CreateArrayNode(x->value.array_node);
+        }
+    }
+    return j;
+}
+
+void cJSON_DeleteUnionArrayNode(struct UnionArrayNode * x) {
+    if (NULL != x) {
+        if (cJSON_Number == x->type) {
+        }
+        else if (cJSON_Object == x->type) {
+            cJSON_DeleteArrayNode(x->value.array_node);
+        }
+        cJSON_free(x);
+    }
+}
+
 struct UnionAs * cJSON_GetUnionAsValue(const cJSON * j) {
     struct UnionAs * x = cJSON_malloc(sizeof(struct UnionAs));
     if (NULL != x) {
@@ -533,6 +577,50 @@ void cJSON_DeleteUnionBoolean(struct UnionBoolean * x) {
     }
 }
 
+struct UnionBooleanNode * cJSON_GetUnionBooleanNodeValue(const cJSON * j) {
+    struct UnionBooleanNode * x = cJSON_malloc(sizeof(struct UnionBooleanNode));
+    if (NULL != x) {
+        memset(x, 0, sizeof(struct UnionBooleanNode));
+        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.boolean_node = cJSON_GetBooleanNodeValue(j);
+            if (NULL == x->value.boolean_node) x->type = 0;
+        }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
+    }
+    return x;
+}
+struct UnionBooleanNode * cJSON_ParseUnionBooleanNode(const char * s) { cJSON * j = cJSON_Parse(s); struct UnionBooleanNode * x = j ? cJSON_GetUnionBooleanNodeValue(j) : NULL; cJSON_Delete(j); return x; }
+char * cJSON_PrintUnionBooleanNode(const struct UnionBooleanNode * x) { cJSON * j = cJSON_CreateUnionBooleanNode(x); char * s = j ? cJSON_Print(j) : NULL; cJSON_Delete(j); return s; }
+
+cJSON * cJSON_CreateUnionBooleanNode(const struct UnionBooleanNode * 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_CreateBooleanNode(x->value.boolean_node);
+        }
+    }
+    return j;
+}
+
+void cJSON_DeleteUnionBooleanNode(struct UnionBooleanNode * x) {
+    if (NULL != x) {
+        if (cJSON_Number == x->type) {
+        }
+        else if (cJSON_Object == x->type) {
+            cJSON_DeleteBooleanNode(x->value.boolean_node);
+        }
+        cJSON_free(x);
+    }
+}
+
 struct UnionBycopy * cJSON_GetUnionBycopyValue(const cJSON * j) {
     struct UnionBycopy * x = cJSON_malloc(sizeof(struct UnionBycopy));
     if (NULL != x) {
@@ -2073,6 +2161,50 @@ void cJSON_DeleteUnionDelegate(struct UnionDelegate * x) {
     }
 }
 
+struct UnionDeserializationFeature * cJSON_GetUnionDeserializationFeatureValue(const cJSON * j) {
+    struct UnionDeserializationFeature * x = cJSON_malloc(sizeof(struct UnionDeserializationFeature));
+    if (NULL != x) {
+        memset(x, 0, sizeof(struct UnionDeserializationFeature));
+        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.deserialization_feature = cJSON_GetDeserializationFeatureValue(j);
+            if (NULL == x->value.deserialization_feature) x->type = 0;
+        }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
+    }
+    return x;
+}
+struct UnionDeserializationFeature * cJSON_ParseUnionDeserializationFeature(const char * s) { cJSON * j = cJSON_Parse(s); struct UnionDeserializationFeature * x = j ? cJSON_GetUnionDeserializationFeatureValue(j) : NULL; cJSON_Delete(j); return x; }
+char * cJSON_PrintUnionDeserializationFeature(const struct UnionDeserializationFeature * x) { cJSON * j = cJSON_CreateUnionDeserializationFeature(x); char * s = j ? cJSON_Print(j) : NULL; cJSON_Delete(j); return s; }
+
+cJSON * cJSON_CreateUnionDeserializationFeature(const struct UnionDeserializationFeature * 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_CreateDeserializationFeature(x->value.deserialization_feature);
+        }
+    }
+    return j;
+}
+
+void cJSON_DeleteUnionDeserializationFeature(struct UnionDeserializationFeature * x) {
+    if (NULL != x) {
+        if (cJSON_Number == x->type) {
+        }
+        else if (cJSON_Object == x->type) {
+            cJSON_DeleteDeserializationFeature(x->value.deserialization_feature);
+        }
+        cJSON_free(x);
+    }
+}
+
 struct UnionDict * cJSON_GetUnionDictValue(const cJSON * j) {
     struct UnionDict * x = cJSON_malloc(sizeof(struct UnionDict));
     if (NULL != x) {
@@ -2205,6 +2337,50 @@ void cJSON_DeleteUnionDidSet(struct UnionDidSet * x) {
     }
 }
 
+struct UnionDoubleNode * cJSON_GetUnionDoubleNodeValue(const cJSON * j) {
+    struct UnionDoubleNode * x = cJSON_malloc(sizeof(struct UnionDoubleNode));
+    if (NULL != x) {
+        memset(x, 0, sizeof(struct UnionDoubleNode));
+        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.double_node = cJSON_GetDoubleNodeValue(j);
+            if (NULL == x->value.double_node) x->type = 0;
+        }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
+    }
+    return x;
+}
+struct UnionDoubleNode * cJSON_ParseUnionDoubleNode(const char * s) { cJSON * j = cJSON_Parse(s); struct UnionDoubleNode * x = j ? cJSON_GetUnionDoubleNodeValue(j) : NULL; cJSON_Delete(j); return x; }
+char * cJSON_PrintUnionDoubleNode(const struct UnionDoubleNode * x) { cJSON * j = cJSON_CreateUnionDoubleNode(x); char * s = j ? cJSON_Print(j) : NULL; cJSON_Delete(j); return s; }
+
+cJSON * cJSON_CreateUnionDoubleNode(const struct UnionDoubleNode * 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_CreateDoubleNode(x->value.double_node);
+        }
+    }
+    return j;
+}
+
+void cJSON_DeleteUnionDoubleNode(struct UnionDoubleNode * x) {
+    if (NULL != x) {
+        if (cJSON_Number == x->type) {
+        }
+        else if (cJSON_Object == x->type) {
+            cJSON_DeleteDoubleNode(x->value.double_node);
+        }
+        cJSON_free(x);
+    }
+}
+
 struct UnionDynamic * cJSON_GetUnionDynamicValue(const cJSON * j) {
     struct UnionDynamic * x = cJSON_malloc(sizeof(struct UnionDynamic));
     if (NULL != x) {
@@ -4141,6 +4317,50 @@ void cJSON_DeleteUnionInstanceof(struct UnionInstanceof * x) {
     }
 }
 
+struct UnionIntNode * cJSON_GetUnionIntNodeValue(const cJSON * j) {
+    struct UnionIntNode * x = cJSON_malloc(sizeof(struct UnionIntNode));
+    if (NULL != x) {
+        memset(x, 0, sizeof(struct UnionIntNode));
+        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.int_node = cJSON_GetIntNodeValue(j);
+            if (NULL == x->value.int_node) x->type = 0;
+        }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
+    }
+    return x;
+}
+struct UnionIntNode * cJSON_ParseUnionIntNode(const char * s) { cJSON * j = cJSON_Parse(s); struct UnionIntNode * x = j ? cJSON_GetUnionIntNodeValue(j) : NULL; cJSON_Delete(j); return x; }
+char * cJSON_PrintUnionIntNode(const struct UnionIntNode * x) { cJSON * j = cJSON_CreateUnionIntNode(x); char * s = j ? cJSON_Print(j) : NULL; cJSON_Delete(j); return s; }
+
+cJSON * cJSON_CreateUnionIntNode(const struct UnionIntNode * 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_CreateIntNode(x->value.int_node);
+        }
+    }
+    return j;
+}
+
+void cJSON_DeleteUnionIntNode(struct UnionIntNode * x) {
+    if (NULL != x) {
+        if (cJSON_Number == x->type) {
+        }
+        else if (cJSON_Object == x->type) {
+            cJSON_DeleteIntNode(x->value.int_node);
+        }
+        cJSON_free(x);
+    }
+}
+
 struct UnionInterface * cJSON_GetUnionInterfaceValue(const cJSON * j) {
     struct UnionInterface * x = cJSON_malloc(sizeof(struct UnionInterface));
     if (NULL != x) {
@@ -5505,6 +5725,50 @@ void cJSON_DeleteUnionLock(struct UnionLock * x) {
     }
 }
 
+struct UnionLongNode * cJSON_GetUnionLongNodeValue(const cJSON * j) {
+    struct UnionLongNode * x = cJSON_malloc(sizeof(struct UnionLongNode));
+    if (NULL != x) {
+        memset(x, 0, sizeof(struct UnionLongNode));
+        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.long_node = cJSON_GetLongNodeValue(j);
+            if (NULL == x->value.long_node) x->type = 0;
+        }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
+    }
+    return x;
+}
+struct UnionLongNode * cJSON_ParseUnionLongNode(const char * s) { cJSON * j = cJSON_Parse(s); struct UnionLongNode * x = j ? cJSON_GetUnionLongNodeValue(j) : NULL; cJSON_Delete(j); return x; }
+char * cJSON_PrintUnionLongNode(const struct UnionLongNode * x) { cJSON * j = cJSON_CreateUnionLongNode(x); char * s = j ? cJSON_Print(j) : NULL; cJSON_Delete(j); return s; }
+
+cJSON * cJSON_CreateUnionLongNode(const struct UnionLongNode * 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_CreateLongNode(x->value.long_node);
+        }
+    }
+    return j;
+}
+
+void cJSON_DeleteUnionLongNode(struct UnionLongNode * x) {
+    if (NULL != x) {
+        if (cJSON_Number == x->type) {
+        }
+        else if (cJSON_Object == x->type) {
+            cJSON_DeleteLongNode(x->value.long_node);
+        }
+        cJSON_free(x);
+    }
+}
+
 struct UnionMap * cJSON_GetUnionMapValue(const cJSON * j) {
     struct UnionMap * x = cJSON_malloc(sizeof(struct UnionMap));
     if (NULL != x) {
@@ -6253,6 +6517,50 @@ void cJSON_DeleteUnionNull(struct UnionNull * x) {
     }
 }
 
+struct UnionNullNode * cJSON_GetUnionNullNodeValue(const cJSON * j) {
+    struct UnionNullNode * x = cJSON_malloc(sizeof(struct UnionNullNode));
+    if (NULL != x) {
+        memset(x, 0, sizeof(struct UnionNullNode));
+        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.null_node = cJSON_GetNullNodeValue(j);
+            if (NULL == x->value.null_node) x->type = 0;
+        }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
+    }
+    return x;
+}
+struct UnionNullNode * cJSON_ParseUnionNullNode(const char * s) { cJSON * j = cJSON_Parse(s); struct UnionNullNode * x = j ? cJSON_GetUnionNullNodeValue(j) : NULL; cJSON_Delete(j); return x; }
+char * cJSON_PrintUnionNullNode(const struct UnionNullNode * x) { cJSON * j = cJSON_CreateUnionNullNode(x); char * s = j ? cJSON_Print(j) : NULL; cJSON_Delete(j); return s; }
+
+cJSON * cJSON_CreateUnionNullNode(const struct UnionNullNode * 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_CreateNullNode(x->value.null_node);
+        }
+    }
+    return j;
+}
+
+void cJSON_DeleteUnionNullNode(struct UnionNullNode * x) {
+    if (NULL != x) {
+        if (cJSON_Number == x->type) {
+        }
+        else if (cJSON_Object == x->type) {
+            cJSON_DeleteNullNode(x->value.null_node);
+        }
+        cJSON_free(x);
+    }
+}
+
 struct UnionNumber * cJSON_GetUnionNumberValue(const cJSON * j) {
     struct UnionNumber * x = cJSON_malloc(sizeof(struct UnionNumber));
     if (NULL != x) {
@@ -6385,6 +6693,50 @@ void cJSON_DeleteUnionObjectMapper(struct UnionObjectMapper * x) {
     }
 }
 
+struct UnionObjectNode * cJSON_GetUnionObjectNodeValue(const cJSON * j) {
+    struct UnionObjectNode * x = cJSON_malloc(sizeof(struct UnionObjectNode));
+    if (NULL != x) {
+        memset(x, 0, sizeof(struct UnionObjectNode));
+        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.object_node = cJSON_GetObjectNodeValue(j);
+            if (NULL == x->value.object_node) x->type = 0;
+        }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
+    }
+    return x;
+}
+struct UnionObjectNode * cJSON_ParseUnionObjectNode(const char * s) { cJSON * j = cJSON_Parse(s); struct UnionObjectNode * x = j ? cJSON_GetUnionObjectNodeValue(j) : NULL; cJSON_Delete(j); return x; }
+char * cJSON_PrintUnionObjectNode(const struct UnionObjectNode * x) { cJSON * j = cJSON_CreateUnionObjectNode(x); char * s = j ? cJSON_Print(j) : NULL; cJSON_Delete(j); return s; }
+
+cJSON * cJSON_CreateUnionObjectNode(const struct UnionObjectNode * 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_CreateObjectNode(x->value.object_node);
+        }
+    }
+    return j;
+}
+
+void cJSON_DeleteUnionObjectNode(struct UnionObjectNode * x) {
+    if (NULL != x) {
+        if (cJSON_Number == x->type) {
+        }
+        else if (cJSON_Object == x->type) {
+            cJSON_DeleteObjectNode(x->value.object_node);
+        }
+        cJSON_free(x);
+    }
+}
+
 struct UnionOf * cJSON_GetUnionOfValue(const cJSON * j) {
     struct UnionOf * x = cJSON_malloc(sizeof(struct UnionOf));
     if (NULL != x) {
@@ -8145,6 +8497,50 @@ void cJSON_DeleteUnionSendable(struct UnionSendable * x) {
     }
 }
 
+struct UnionSerializationFeature * cJSON_GetUnionSerializationFeatureValue(const cJSON * j) {
+    struct UnionSerializationFeature * x = cJSON_malloc(sizeof(struct UnionSerializationFeature));
+    if (NULL != x) {
+        memset(x, 0, sizeof(struct UnionSerializationFeature));
+        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.serialization_feature = cJSON_GetSerializationFeatureValue(j);
+            if (NULL == x->value.serialization_feature) x->type = 0;
+        }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
+    }
+    return x;
+}
+struct UnionSerializationFeature * cJSON_ParseUnionSerializationFeature(const char * s) { cJSON * j = cJSON_Parse(s); struct UnionSerializationFeature * x = j ? cJSON_GetUnionSerializationFeatureValue(j) : NULL; cJSON_Delete(j); return x; }
+char * cJSON_PrintUnionSerializationFeature(const struct UnionSerializationFeature * x) { cJSON * j = cJSON_CreateUnionSerializationFeature(x); char * s = j ? cJSON_Print(j) : NULL; cJSON_Delete(j); return s; }
+
+cJSON * cJSON_CreateUnionSerializationFeature(const struct UnionSerializationFeature * 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_CreateSerializationFeature(x->value.serialization_feature);
+        }
+    }
+    return j;
+}
+
+void cJSON_DeleteUnionSerializationFeature(struct UnionSerializationFeature * x) {
+    if (NULL != x) {
+        if (cJSON_Number == x->type) {
+        }
+        else if (cJSON_Object == x->type) {
+            cJSON_DeleteSerializationFeature(x->value.serialization_feature);
+        }
+        cJSON_free(x);
+    }
+}
+
 struct UnionSerialize * cJSON_GetUnionSerializeValue(const cJSON * j) {
     struct UnionSerialize * x = cJSON_malloc(sizeof(struct UnionSerialize));
     if (NULL != x) {
@@ -8761,6 +9157,50 @@ void cJSON_DeleteUnionSystem(struct UnionSystem * x) {
     }
 }
 
+struct UnionTextNode * cJSON_GetUnionTextNodeValue(const cJSON * j) {
+    struct UnionTextNode * x = cJSON_malloc(sizeof(struct UnionTextNode));
+    if (NULL != x) {
+        memset(x, 0, sizeof(struct UnionTextNode));
+        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.text_node = cJSON_GetTextNodeValue(j);
+            if (NULL == x->value.text_node) x->type = 0;
+        }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
+    }
+    return x;
+}
+struct UnionTextNode * cJSON_ParseUnionTextNode(const char * s) { cJSON * j = cJSON_Parse(s); struct UnionTextNode * x = j ? cJSON_GetUnionTextNodeValue(j) : NULL; cJSON_Delete(j); return x; }
+char * cJSON_PrintUnionTextNode(const struct UnionTextNode * x) { cJSON * j = cJSON_CreateUnionTextNode(x); char * s = j ? cJSON_Print(j) : NULL; cJSON_Delete(j); return s; }
+
+cJSON * cJSON_CreateUnionTextNode(const struct UnionTextNode * 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_CreateTextNode(x->value.text_node);
+        }
+    }
+    return j;
+}
+
+void cJSON_DeleteUnionTextNode(struct UnionTextNode * x) {
+    if (NULL != x) {
+        if (cJSON_Number == x->type) {
+        }
+        else if (cJSON_Object == x->type) {
+            cJSON_DeleteTextNode(x->value.text_node);
+        }
+        cJSON_free(x);
+    }
+}
+
 struct UnionThen * cJSON_GetUnionThenValue(const cJSON * j) {
     struct UnionThen * x = cJSON_malloc(sizeof(struct UnionThen));
     if (NULL != x) {
@@ -14760,6 +15200,55 @@ void cJSON_DeleteArrayClass(struct ArrayClass * x) {
     }
 }
 
+struct ArrayNode * cJSON_ParseArrayNode(const char * s) {
+    struct ArrayNode * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetArrayNodeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct ArrayNode * cJSON_GetArrayNodeValue(const cJSON * j) {
+    struct ArrayNode * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct ArrayNode)))) {
+            memset(x, 0, sizeof(struct ArrayNode));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateArrayNode(const struct ArrayNode * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintArrayNode(const struct ArrayNode * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateArrayNode(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteArrayNode(struct ArrayNode * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct As * cJSON_ParseAs(const char * s) {
     struct As * x = NULL;
     if (NULL != s) {
@@ -15201,6 +15690,55 @@ void cJSON_DeleteBoolean(struct Boolean * x) {
     }
 }
 
+struct BooleanNode * cJSON_ParseBooleanNode(const char * s) {
+    struct BooleanNode * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetBooleanNodeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct BooleanNode * cJSON_GetBooleanNodeValue(const cJSON * j) {
+    struct BooleanNode * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct BooleanNode)))) {
+            memset(x, 0, sizeof(struct BooleanNode));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateBooleanNode(const struct BooleanNode * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintBooleanNode(const struct BooleanNode * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateBooleanNode(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteBooleanNode(struct BooleanNode * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Bycopy * cJSON_ParseBycopy(const char * s) {
     struct Bycopy * x = NULL;
     if (NULL != s) {
@@ -16916,6 +17454,55 @@ void cJSON_DeleteDelegate(struct Delegate * x) {
     }
 }
 
+struct DeserializationFeature * cJSON_ParseDeserializationFeature(const char * s) {
+    struct DeserializationFeature * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetDeserializationFeatureValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct DeserializationFeature * cJSON_GetDeserializationFeatureValue(const cJSON * j) {
+    struct DeserializationFeature * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct DeserializationFeature)))) {
+            memset(x, 0, sizeof(struct DeserializationFeature));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateDeserializationFeature(const struct DeserializationFeature * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintDeserializationFeature(const struct DeserializationFeature * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateDeserializationFeature(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteDeserializationFeature(struct DeserializationFeature * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Dict * cJSON_ParseDict(const char * s) {
     struct Dict * x = NULL;
     if (NULL != s) {
@@ -17063,6 +17650,55 @@ void cJSON_DeleteDidSet(struct DidSet * x) {
     }
 }
 
+struct DoubleNode * cJSON_ParseDoubleNode(const char * s) {
+    struct DoubleNode * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetDoubleNodeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct DoubleNode * cJSON_GetDoubleNodeValue(const cJSON * j) {
+    struct DoubleNode * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct DoubleNode)))) {
+            memset(x, 0, sizeof(struct DoubleNode));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateDoubleNode(const struct DoubleNode * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintDoubleNode(const struct DoubleNode * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateDoubleNode(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteDoubleNode(struct DoubleNode * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Dynamic * cJSON_ParseDynamic(const char * s) {
     struct Dynamic * x = NULL;
     if (NULL != s) {
@@ -19219,6 +19855,55 @@ void cJSON_DeleteInstanceof(struct Instanceof * x) {
     }
 }
 
+struct IntNode * cJSON_ParseIntNode(const char * s) {
+    struct IntNode * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetIntNodeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct IntNode * cJSON_GetIntNodeValue(const cJSON * j) {
+    struct IntNode * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct IntNode)))) {
+            memset(x, 0, sizeof(struct IntNode));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateIntNode(const struct IntNode * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintIntNode(const struct IntNode * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateIntNode(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteIntNode(struct IntNode * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Interface * cJSON_ParseInterface(const char * s) {
     struct Interface * x = NULL;
     if (NULL != s) {
@@ -20738,6 +21423,55 @@ void cJSON_DeleteLock(struct Lock * x) {
     }
 }
 
+struct LongNode * cJSON_ParseLongNode(const char * s) {
+    struct LongNode * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetLongNodeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct LongNode * cJSON_GetLongNodeValue(const cJSON * j) {
+    struct LongNode * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct LongNode)))) {
+            memset(x, 0, sizeof(struct LongNode));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateLongNode(const struct LongNode * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintLongNode(const struct LongNode * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateLongNode(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteLongNode(struct LongNode * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Map * cJSON_ParseMap(const char * s) {
     struct Map * x = NULL;
     if (NULL != s) {
@@ -21571,6 +22305,55 @@ void cJSON_DeleteNullClass(struct NullClass * x) {
     }
 }
 
+struct NullNode * cJSON_ParseNullNode(const char * s) {
+    struct NullNode * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetNullNodeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct NullNode * cJSON_GetNullNodeValue(const cJSON * j) {
+    struct NullNode * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct NullNode)))) {
+            memset(x, 0, sizeof(struct NullNode));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateNullNode(const struct NullNode * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintNullNode(const struct NullNode * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateNullNode(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteNullNode(struct NullNode * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct NumberClass * cJSON_ParseNumberClass(const char * s) {
     struct NumberClass * x = NULL;
     if (NULL != s) {
@@ -21718,6 +22501,55 @@ void cJSON_DeleteObjectMapper(struct ObjectMapper * x) {
     }
 }
 
+struct ObjectNode * cJSON_ParseObjectNode(const char * s) {
+    struct ObjectNode * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetObjectNodeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct ObjectNode * cJSON_GetObjectNodeValue(const cJSON * j) {
+    struct ObjectNode * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct ObjectNode)))) {
+            memset(x, 0, sizeof(struct ObjectNode));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateObjectNode(const struct ObjectNode * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintObjectNode(const struct ObjectNode * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateObjectNode(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteObjectNode(struct ObjectNode * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Of * cJSON_ParseOf(const char * s) {
     struct Of * x = NULL;
     if (NULL != s) {
@@ -23678,6 +24510,55 @@ void cJSON_DeleteSendable(struct Sendable * x) {
     }
 }
 
+struct SerializationFeature * cJSON_ParseSerializationFeature(const char * s) {
+    struct SerializationFeature * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetSerializationFeatureValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct SerializationFeature * cJSON_GetSerializationFeatureValue(const cJSON * j) {
+    struct SerializationFeature * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct SerializationFeature)))) {
+            memset(x, 0, sizeof(struct SerializationFeature));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateSerializationFeature(const struct SerializationFeature * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintSerializationFeature(const struct SerializationFeature * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateSerializationFeature(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteSerializationFeature(struct SerializationFeature * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Serialize * cJSON_ParseSerialize(const char * s) {
     struct Serialize * x = NULL;
     if (NULL != s) {
@@ -24364,6 +25245,55 @@ void cJSON_DeleteSystem(struct System * x) {
     }
 }
 
+struct TextNode * cJSON_ParseTextNode(const char * s) {
+    struct TextNode * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetTextNodeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct TextNode * cJSON_GetTextNodeValue(const cJSON * j) {
+    struct TextNode * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct TextNode)))) {
+            memset(x, 0, sizeof(struct TextNode));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateTextNode(const struct TextNode * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintTextNode(const struct TextNode * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateTextNode(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteTextNode(struct TextNode * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Then * cJSON_ParseThen(const char * s) {
     struct Then * x = NULL;
     if (NULL != s) {
@@ -30958,6 +31888,11 @@ struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j) {
                 x->array = cJSON_GetUnionArrayValue(cJSON_GetObjectItemCaseSensitive(j, "array"));
                 if (NULL == x->array) { cJSON_DeleteTopLevel(x); return NULL; }
             }
+            if (cJSON_HasObjectItem(j, "ArrayNode")) {
+                if (!cJSON_IsUnionArrayNode(cJSON_GetObjectItemCaseSensitive(j, "ArrayNode"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->array_node = cJSON_GetUnionArrayNodeValue(cJSON_GetObjectItemCaseSensitive(j, "ArrayNode"));
+                if (NULL == x->array_node) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
             if (cJSON_HasObjectItem(j, "as")) {
                 if (!cJSON_IsUnionAs(cJSON_GetObjectItemCaseSensitive(j, "as"))) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->as = cJSON_GetUnionAsValue(cJSON_GetObjectItemCaseSensitive(j, "as"));
@@ -31048,6 +31983,11 @@ struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j) {
                 x->boolean = cJSON_GetUnionBooleanValue(cJSON_GetObjectItemCaseSensitive(j, "boolean"));
                 if (NULL == x->boolean) { cJSON_DeleteTopLevel(x); return NULL; }
             }
+            if (cJSON_HasObjectItem(j, "BooleanNode")) {
+                if (!cJSON_IsUnionBooleanNode(cJSON_GetObjectItemCaseSensitive(j, "BooleanNode"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->boolean_node = cJSON_GetUnionBooleanNodeValue(cJSON_GetObjectItemCaseSensitive(j, "BooleanNode"));
+                if (NULL == x->boolean_node) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
             if (cJSON_HasObjectItem(j, "break")) {
                 if (!cJSON_IsUnionBreak(cJSON_GetObjectItemCaseSensitive(j, "break"))) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->top_level_break = cJSON_GetUnionBreakValue(cJSON_GetObjectItemCaseSensitive(j, "break"));
@@ -31318,6 +32258,11 @@ struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j) {
                 x->top_level_delete = cJSON_GetUnionDeleteValue(cJSON_GetObjectItemCaseSensitive(j, "delete"));
                 if (NULL == x->top_level_delete) { cJSON_DeleteTopLevel(x); return NULL; }
             }
+            if (cJSON_HasObjectItem(j, "DeserializationFeature")) {
+                if (!cJSON_IsUnionDeserializationFeature(cJSON_GetObjectItemCaseSensitive(j, "DeserializationFeature"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->deserialization_feature = cJSON_GetUnionDeserializationFeatureValue(cJSON_GetObjectItemCaseSensitive(j, "DeserializationFeature"));
+                if (NULL == x->deserialization_feature) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
             if (cJSON_HasObjectItem(j, "dict")) {
                 if (!cJSON_IsUnionDict(cJSON_GetObjectItemCaseSensitive(j, "dict"))) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->dict = cJSON_GetUnionDictValue(cJSON_GetObjectItemCaseSensitive(j, "dict"));
@@ -31343,6 +32288,11 @@ struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j) {
                 x->top_level_double = cJSON_GetUnionDoubleValue(cJSON_GetObjectItemCaseSensitive(j, "double"));
                 if (NULL == x->top_level_double) { cJSON_DeleteTopLevel(x); return NULL; }
             }
+            if (cJSON_HasObjectItem(j, "DoubleNode")) {
+                if (!cJSON_IsUnionDoubleNode(cJSON_GetObjectItemCaseSensitive(j, "DoubleNode"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->double_node = cJSON_GetUnionDoubleNodeValue(cJSON_GetObjectItemCaseSensitive(j, "DoubleNode"));
+                if (NULL == x->double_node) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
             if (cJSON_HasObjectItem(j, "dummy")) {
                 if (!cJSON_IsNumber(cJSON_GetObjectItemCaseSensitive(j, "dummy"))) { cJSON_DeleteTopLevel(x); return NULL; }
                 if (NULL != (x->dummy = cJSON_malloc(sizeof(double)))) {
@@ -31649,6 +32599,11 @@ struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j) {
                 x->internal = cJSON_GetUnionInternalValue(cJSON_GetObjectItemCaseSensitive(j, "internal"));
                 if (NULL == x->internal) { cJSON_DeleteTopLevel(x); return NULL; }
             }
+            if (cJSON_HasObjectItem(j, "IntNode")) {
+                if (!cJSON_IsUnionIntNode(cJSON_GetObjectItemCaseSensitive(j, "IntNode"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->int_node = cJSON_GetUnionIntNodeValue(cJSON_GetObjectItemCaseSensitive(j, "IntNode"));
+                if (NULL == x->int_node) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
             if (cJSON_HasObjectItem(j, "is")) {
                 if (!cJSON_IsUnionIs(cJSON_GetObjectItemCaseSensitive(j, "is"))) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->is = cJSON_GetUnionIsValue(cJSON_GetObjectItemCaseSensitive(j, "is"));
@@ -31799,6 +32754,11 @@ struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j) {
                 x->top_level_long = cJSON_GetUnionLongValue(cJSON_GetObjectItemCaseSensitive(j, "long"));
                 if (NULL == x->top_level_long) { cJSON_DeleteTopLevel(x); return NULL; }
             }
+            if (cJSON_HasObjectItem(j, "LongNode")) {
+                if (!cJSON_IsUnionLongNode(cJSON_GetObjectItemCaseSensitive(j, "LongNode"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->long_node = cJSON_GetUnionLongNodeValue(cJSON_GetObjectItemCaseSensitive(j, "LongNode"));
+                if (NULL == x->long_node) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
             if (cJSON_HasObjectItem(j, "map")) {
                 if (!cJSON_IsUnionMap(cJSON_GetObjectItemCaseSensitive(j, "map"))) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->map = cJSON_GetUnionMapValue(cJSON_GetObjectItemCaseSensitive(j, "map"));
@@ -31929,6 +32889,11 @@ struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j) {
                 x->top_level_null = cJSON_GetUnionNullUnionValue(cJSON_GetObjectItemCaseSensitive(j, "null"));
                 if (NULL == x->top_level_null) { cJSON_DeleteTopLevel(x); return NULL; }
             }
+            if (cJSON_HasObjectItem(j, "NullNode")) {
+                if (!cJSON_IsUnionNullNode(cJSON_GetObjectItemCaseSensitive(j, "NullNode"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->null_node = cJSON_GetUnionNullNodeValue(cJSON_GetObjectItemCaseSensitive(j, "NullNode"));
+                if (NULL == x->null_node) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
             if (cJSON_HasObjectItem(j, "nullptr")) {
                 if (!cJSON_IsUnionNullptr(cJSON_GetObjectItemCaseSensitive(j, "nullptr"))) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->top_level_nullptr = cJSON_GetUnionNullptrValue(cJSON_GetObjectItemCaseSensitive(j, "nullptr"));
@@ -31949,6 +32914,11 @@ struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j) {
                 x->object_mapper = cJSON_GetUnionObjectMapperValue(cJSON_GetObjectItemCaseSensitive(j, "ObjectMapper"));
                 if (NULL == x->object_mapper) { cJSON_DeleteTopLevel(x); return NULL; }
             }
+            if (cJSON_HasObjectItem(j, "ObjectNode")) {
+                if (!cJSON_IsUnionObjectNode(cJSON_GetObjectItemCaseSensitive(j, "ObjectNode"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->object_node = cJSON_GetUnionObjectNodeValue(cJSON_GetObjectItemCaseSensitive(j, "ObjectNode"));
+                if (NULL == x->object_node) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
             if (cJSON_HasObjectItem(j, "of")) {
                 if (!cJSON_IsUnionOf(cJSON_GetObjectItemCaseSensitive(j, "of"))) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->of = cJSON_GetUnionOfValue(cJSON_GetObjectItemCaseSensitive(j, "of"));
@@ -32199,6 +33169,11 @@ 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, "SerializationFeature")) {
+                if (!cJSON_IsUnionSerializationFeature(cJSON_GetObjectItemCaseSensitive(j, "SerializationFeature"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->serialization_feature = cJSON_GetUnionSerializationFeatureValue(cJSON_GetObjectItemCaseSensitive(j, "SerializationFeature"));
+                if (NULL == x->serialization_feature) { 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"));
@@ -32319,6 +33294,11 @@ struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j) {
                 x->top_level_template = cJSON_GetUnionTemplateValue(cJSON_GetObjectItemCaseSensitive(j, "template"));
                 if (NULL == x->top_level_template) { cJSON_DeleteTopLevel(x); return NULL; }
             }
+            if (cJSON_HasObjectItem(j, "TextNode")) {
+                if (!cJSON_IsUnionTextNode(cJSON_GetObjectItemCaseSensitive(j, "TextNode"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->text_node = cJSON_GetUnionTextNodeValue(cJSON_GetObjectItemCaseSensitive(j, "TextNode"));
+                if (NULL == x->text_node) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
             if (cJSON_HasObjectItem(j, "then")) {
                 if (!cJSON_IsUnionThen(cJSON_GetObjectItemCaseSensitive(j, "then"))) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->then = cJSON_GetUnionThenValue(cJSON_GetObjectItemCaseSensitive(j, "then"));
@@ -32609,6 +33589,9 @@ cJSON * cJSON_CreateTopLevel(const struct TopLevel * x) {
             if (NULL != x->array) {
                 cJSON_AddItemToObject(j, "array", cJSON_CreateUnionArray(x->array));
             }
+            if (NULL != x->array_node) {
+                cJSON_AddItemToObject(j, "ArrayNode", cJSON_CreateUnionArrayNode(x->array_node));
+            }
             if (NULL != x->as) {
                 cJSON_AddItemToObject(j, "as", cJSON_CreateUnionAs(x->as));
             }
@@ -32663,6 +33646,9 @@ cJSON * cJSON_CreateTopLevel(const struct TopLevel * x) {
             if (NULL != x->boolean) {
                 cJSON_AddItemToObject(j, "boolean", cJSON_CreateUnionBoolean(x->boolean));
             }
+            if (NULL != x->boolean_node) {
+                cJSON_AddItemToObject(j, "BooleanNode", cJSON_CreateUnionBooleanNode(x->boolean_node));
+            }
             if (NULL != x->top_level_break) {
                 cJSON_AddItemToObject(j, "break", cJSON_CreateUnionBreak(x->top_level_break));
             }
@@ -32825,6 +33811,9 @@ cJSON * cJSON_CreateTopLevel(const struct TopLevel * x) {
             if (NULL != x->top_level_delete) {
                 cJSON_AddItemToObject(j, "delete", cJSON_CreateUnionDelete(x->top_level_delete));
             }
+            if (NULL != x->deserialization_feature) {
+                cJSON_AddItemToObject(j, "DeserializationFeature", cJSON_CreateUnionDeserializationFeature(x->deserialization_feature));
+            }
             if (NULL != x->dict) {
                 cJSON_AddItemToObject(j, "dict", cJSON_CreateUnionDict(x->dict));
             }
@@ -32840,6 +33829,9 @@ cJSON * cJSON_CreateTopLevel(const struct TopLevel * x) {
             if (NULL != x->top_level_double) {
                 cJSON_AddItemToObject(j, "double", cJSON_CreateUnionDouble(x->top_level_double));
             }
+            if (NULL != x->double_node) {
+                cJSON_AddItemToObject(j, "DoubleNode", cJSON_CreateUnionDoubleNode(x->double_node));
+            }
             if (NULL != x->dummy) {
                 cJSON_AddNumberToObject(j, "dummy", *x->dummy);
             }
@@ -33023,6 +34015,9 @@ cJSON * cJSON_CreateTopLevel(const struct TopLevel * x) {
             if (NULL != x->internal) {
                 cJSON_AddItemToObject(j, "internal", cJSON_CreateUnionInternal(x->internal));
             }
+            if (NULL != x->int_node) {
+                cJSON_AddItemToObject(j, "IntNode", cJSON_CreateUnionIntNode(x->int_node));
+            }
             if (NULL != x->is) {
                 cJSON_AddItemToObject(j, "is", cJSON_CreateUnionIs(x->is));
             }
@@ -33113,6 +34108,9 @@ cJSON * cJSON_CreateTopLevel(const struct TopLevel * x) {
             if (NULL != x->top_level_long) {
                 cJSON_AddItemToObject(j, "long", cJSON_CreateUnionLong(x->top_level_long));
             }
+            if (NULL != x->long_node) {
+                cJSON_AddItemToObject(j, "LongNode", cJSON_CreateUnionLongNode(x->long_node));
+            }
             if (NULL != x->map) {
                 cJSON_AddItemToObject(j, "map", cJSON_CreateUnionMap(x->map));
             }
@@ -33191,6 +34189,9 @@ cJSON * cJSON_CreateTopLevel(const struct TopLevel * x) {
             if (NULL != x->top_level_null) {
                 cJSON_AddItemToObject(j, "null", cJSON_CreateUnionNullUnion(x->top_level_null));
             }
+            if (NULL != x->null_node) {
+                cJSON_AddItemToObject(j, "NullNode", cJSON_CreateUnionNullNode(x->null_node));
+            }
             if (NULL != x->top_level_nullptr) {
                 cJSON_AddItemToObject(j, "nullptr", cJSON_CreateUnionNullptr(x->top_level_nullptr));
             }
@@ -33203,6 +34204,9 @@ cJSON * cJSON_CreateTopLevel(const struct TopLevel * x) {
             if (NULL != x->object_mapper) {
                 cJSON_AddItemToObject(j, "ObjectMapper", cJSON_CreateUnionObjectMapper(x->object_mapper));
             }
+            if (NULL != x->object_node) {
+                cJSON_AddItemToObject(j, "ObjectNode", cJSON_CreateUnionObjectNode(x->object_node));
+            }
             if (NULL != x->of) {
                 cJSON_AddItemToObject(j, "of", cJSON_CreateUnionOf(x->of));
             }
@@ -33353,6 +34357,9 @@ cJSON * cJSON_CreateTopLevel(const struct TopLevel * x) {
             if (NULL != x->sendable) {
                 cJSON_AddItemToObject(j, "Sendable", cJSON_CreateUnionSendable(x->sendable));
             }
+            if (NULL != x->serialization_feature) {
+                cJSON_AddItemToObject(j, "SerializationFeature", cJSON_CreateUnionSerializationFeature(x->serialization_feature));
+            }
             if (NULL != x->serialize) {
                 cJSON_AddItemToObject(j, "serialize", cJSON_CreateUnionSerialize(x->serialize));
             }
@@ -33425,6 +34432,9 @@ cJSON * cJSON_CreateTopLevel(const struct TopLevel * x) {
             if (NULL != x->top_level_template) {
                 cJSON_AddItemToObject(j, "template", cJSON_CreateUnionTemplate(x->top_level_template));
             }
+            if (NULL != x->text_node) {
+                cJSON_AddItemToObject(j, "TextNode", cJSON_CreateUnionTextNode(x->text_node));
+            }
             if (NULL != x->then) {
                 cJSON_AddItemToObject(j, "then", cJSON_CreateUnionThen(x->then));
             }
@@ -33627,6 +34637,9 @@ void cJSON_DeleteTopLevel(struct TopLevel * x) {
         if (NULL != x->array) {
             cJSON_DeleteUnionArray(x->array);
         }
+        if (NULL != x->array_node) {
+            cJSON_DeleteUnionArrayNode(x->array_node);
+        }
         if (NULL != x->as) {
             cJSON_DeleteUnionAs(x->as);
         }
@@ -33681,6 +34694,9 @@ void cJSON_DeleteTopLevel(struct TopLevel * x) {
         if (NULL != x->boolean) {
             cJSON_DeleteUnionBoolean(x->boolean);
         }
+        if (NULL != x->boolean_node) {
+            cJSON_DeleteUnionBooleanNode(x->boolean_node);
+        }
         if (NULL != x->top_level_break) {
             cJSON_DeleteUnionBreak(x->top_level_break);
         }
@@ -33843,6 +34859,9 @@ void cJSON_DeleteTopLevel(struct TopLevel * x) {
         if (NULL != x->top_level_delete) {
             cJSON_DeleteUnionDelete(x->top_level_delete);
         }
+        if (NULL != x->deserialization_feature) {
+            cJSON_DeleteUnionDeserializationFeature(x->deserialization_feature);
+        }
         if (NULL != x->dict) {
             cJSON_DeleteUnionDict(x->dict);
         }
@@ -33858,6 +34877,9 @@ void cJSON_DeleteTopLevel(struct TopLevel * x) {
         if (NULL != x->top_level_double) {
             cJSON_DeleteUnionDouble(x->top_level_double);
         }
+        if (NULL != x->double_node) {
+            cJSON_DeleteUnionDoubleNode(x->double_node);
+        }
         if (NULL != x->dummy) {
             cJSON_free(x->dummy);
         }
@@ -34041,6 +35063,9 @@ void cJSON_DeleteTopLevel(struct TopLevel * x) {
         if (NULL != x->internal) {
             cJSON_DeleteUnionInternal(x->internal);
         }
+        if (NULL != x->int_node) {
+            cJSON_DeleteUnionIntNode(x->int_node);
+        }
         if (NULL != x->is) {
             cJSON_DeleteUnionIs(x->is);
         }
@@ -34131,6 +35156,9 @@ void cJSON_DeleteTopLevel(struct TopLevel * x) {
         if (NULL != x->top_level_long) {
             cJSON_DeleteUnionLong(x->top_level_long);
         }
+        if (NULL != x->long_node) {
+            cJSON_DeleteUnionLongNode(x->long_node);
+        }
         if (NULL != x->map) {
             cJSON_DeleteUnionMap(x->map);
         }
@@ -34209,6 +35237,9 @@ void cJSON_DeleteTopLevel(struct TopLevel * x) {
         if (NULL != x->top_level_null) {
             cJSON_DeleteUnionNullUnion(x->top_level_null);
         }
+        if (NULL != x->null_node) {
+            cJSON_DeleteUnionNullNode(x->null_node);
+        }
         if (NULL != x->top_level_nullptr) {
             cJSON_DeleteUnionNullptr(x->top_level_nullptr);
         }
@@ -34221,6 +35252,9 @@ void cJSON_DeleteTopLevel(struct TopLevel * x) {
         if (NULL != x->object_mapper) {
             cJSON_DeleteUnionObjectMapper(x->object_mapper);
         }
+        if (NULL != x->object_node) {
+            cJSON_DeleteUnionObjectNode(x->object_node);
+        }
         if (NULL != x->of) {
             cJSON_DeleteUnionOf(x->of);
         }
@@ -34371,6 +35405,9 @@ void cJSON_DeleteTopLevel(struct TopLevel * x) {
         if (NULL != x->sendable) {
             cJSON_DeleteUnionSendable(x->sendable);
         }
+        if (NULL != x->serialization_feature) {
+            cJSON_DeleteUnionSerializationFeature(x->serialization_feature);
+        }
         if (NULL != x->serialize) {
             cJSON_DeleteUnionSerialize(x->serialize);
         }
@@ -34443,6 +35480,9 @@ void cJSON_DeleteTopLevel(struct TopLevel * x) {
         if (NULL != x->top_level_template) {
             cJSON_DeleteUnionTemplate(x->top_level_template);
         }
+        if (NULL != x->text_node) {
+            cJSON_DeleteUnionTextNode(x->text_node);
+        }
         if (NULL != x->then) {
             cJSON_DeleteUnionThen(x->then);
         }
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..dfcc2de 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
@@ -81,6 +81,17 @@ struct UnionArray {
     } value;
 };
 
+struct ArrayNode {
+};
+
+struct UnionArrayNode {
+    int type;
+    union {
+        double number;
+        struct ArrayNode * array_node;
+    } value;
+};
+
 struct As {
 };
 
@@ -180,6 +191,17 @@ struct UnionBoolean {
     } value;
 };
 
+struct BooleanNode {
+};
+
+struct UnionBooleanNode {
+    int type;
+    union {
+        double number;
+        struct BooleanNode * boolean_node;
+    } value;
+};
+
 struct Bycopy {
 };
 
@@ -565,6 +587,17 @@ struct UnionDelegate {
     } value;
 };
 
+struct DeserializationFeature {
+};
+
+struct UnionDeserializationFeature {
+    int type;
+    union {
+        double number;
+        struct DeserializationFeature * deserialization_feature;
+    } value;
+};
+
 struct Dict {
 };
 
@@ -598,6 +631,17 @@ struct UnionDidSet {
     } value;
 };
 
+struct DoubleNode {
+};
+
+struct UnionDoubleNode {
+    int type;
+    union {
+        double number;
+        struct DoubleNode * double_node;
+    } value;
+};
+
 struct Dynamic {
 };
 
@@ -1082,6 +1126,17 @@ struct UnionInstanceof {
     } value;
 };
 
+struct IntNode {
+};
+
+struct UnionIntNode {
+    int type;
+    union {
+        double number;
+        struct IntNode * int_node;
+    } value;
+};
+
 struct Interface {
 };
 
@@ -1423,6 +1478,17 @@ struct UnionLock {
     } value;
 };
 
+struct LongNode {
+};
+
+struct UnionLongNode {
+    int type;
+    union {
+        double number;
+        struct LongNode * long_node;
+    } value;
+};
+
 struct Map {
 };
 
@@ -1610,6 +1676,17 @@ struct UnionNull {
     } value;
 };
 
+struct NullNode {
+};
+
+struct UnionNullNode {
+    int type;
+    union {
+        double number;
+        struct NullNode * null_node;
+    } value;
+};
+
 struct NumberClass {
 };
 
@@ -1643,6 +1720,17 @@ struct UnionObjectMapper {
     } value;
 };
 
+struct ObjectNode {
+};
+
+struct UnionObjectNode {
+    int type;
+    union {
+        double number;
+        struct ObjectNode * object_node;
+    } value;
+};
+
 struct Of {
 };
 
@@ -2083,6 +2171,17 @@ struct UnionSendable {
     } value;
 };
 
+struct SerializationFeature {
+};
+
+struct UnionSerializationFeature {
+    int type;
+    union {
+        double number;
+        struct SerializationFeature * serialization_feature;
+    } value;
+};
+
 struct Serialize {
 };
 
@@ -2237,6 +2336,17 @@ struct UnionSystem {
     } value;
 };
 
+struct TextNode {
+};
+
+struct UnionTextNode {
+    int type;
+    union {
+        double number;
+        struct TextNode * text_node;
+    } value;
+};
+
 struct Then {
 };
 
@@ -3713,6 +3823,7 @@ struct TopLevel {
     struct UnionAnyUnion * top_level_any;
     struct UnionAny * any;
     struct UnionArray * array;
+    struct UnionArrayNode * array_node;
     struct UnionAs * as;
     struct UnionAsm * top_level_asm;
     struct UnionAssert * assert;
@@ -3731,6 +3842,7 @@ struct TopLevel {
     struct UnionBool * top_level_bool;
     struct TopLevelUnionBool * fluffy_bool;
     struct UnionBoolean * boolean;
+    struct UnionBooleanNode * boolean_node;
     struct UnionBreak * top_level_break;
     struct UnionBycopy * bycopy;
     struct UnionByref * byref;
@@ -3785,11 +3897,13 @@ struct TopLevel {
     struct UnionDel * del;
     struct UnionDelegate * delegate;
     struct UnionDelete * top_level_delete;
+    struct UnionDeserializationFeature * deserialization_feature;
     struct UnionDict * dict;
     struct UnionDictionary * dictionary;
     struct UnionDidSet * did_set;
     struct UnionDo * top_level_do;
     struct UnionDouble * top_level_double;
+    struct UnionDoubleNode * double_node;
     double * dummy;
     struct UnionDynamic * dynamic;
     struct UnionDynamicCast * top_level_dynamic_cast;
@@ -3851,6 +3965,7 @@ struct TopLevel {
     struct UnionInt * top_level_int;
     struct UnionInterface * interface;
     struct UnionInternal * internal;
+    struct UnionIntNode * int_node;
     struct UnionIs * is;
     struct UnionIsoDateTimeOffsetConverter * iso_date_time_offset_converter;
     struct UnionIterable * iterable;
@@ -3881,6 +3996,7 @@ struct TopLevel {
     struct UnionLocale * locale;
     struct UnionLock * lock;
     struct UnionLong * top_level_long;
+    struct UnionLongNode * long_node;
     struct UnionMap * map;
     struct UnionMapEntry * map_entry;
     struct UnionMetadataPropertyHandling * metadata_property_handling;
@@ -3907,10 +4023,12 @@ struct TopLevel {
     struct UnionNsString * ns_string;
     struct UnionNull * null;
     struct UnionNullUnion * top_level_null;
+    struct UnionNullNode * null_node;
     struct UnionNullptr * top_level_nullptr;
     struct UnionNumber * number;
     struct UnionObject * object;
     struct UnionObjectMapper * object_mapper;
+    struct UnionObjectNode * object_node;
     struct UnionOf * of;
     struct UnionOneway * oneway;
     struct UnionOpen * open;
@@ -3961,6 +4079,7 @@ struct TopLevel {
     struct UnionSelf * self;
     struct UnionSelfUnion * top_level_self;
     struct UnionSendable * sendable;
+    struct UnionSerializationFeature * serialization_feature;
     struct UnionSerialize * serialize;
     struct UnionSerializerProvider * serializer_provider;
     struct UnionSet * set;
@@ -3985,6 +4104,7 @@ struct TopLevel {
     struct UnionSynchronized * top_level_synchronized;
     struct UnionSystem * system;
     struct UnionTemplate * top_level_template;
+    struct UnionTextNode * text_node;
     struct UnionThen * then;
     struct UnionThis * top_level_this;
     struct UnionThreadLocal * top_level_thread_local;
@@ -4057,6 +4177,13 @@ void cJSON_DeleteUnionArray(struct UnionArray * x);
 struct UnionArray * cJSON_ParseUnionArray(const char * s);
 char * cJSON_PrintUnionArray(const struct UnionArray * x);
 
+#define cJSON_IsUnionArrayNode(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
+struct UnionArrayNode * cJSON_GetUnionArrayNodeValue(const cJSON * j);
+cJSON * cJSON_CreateUnionArrayNode(const struct UnionArrayNode * x);
+void cJSON_DeleteUnionArrayNode(struct UnionArrayNode * x);
+struct UnionArrayNode * cJSON_ParseUnionArrayNode(const char * s);
+char * cJSON_PrintUnionArrayNode(const struct UnionArrayNode * x);
+
 #define cJSON_IsUnionAs(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
 struct UnionAs * cJSON_GetUnionAsValue(const cJSON * j);
 cJSON * cJSON_CreateUnionAs(const struct UnionAs * x);
@@ -4120,6 +4247,13 @@ void cJSON_DeleteUnionBoolean(struct UnionBoolean * x);
 struct UnionBoolean * cJSON_ParseUnionBoolean(const char * s);
 char * cJSON_PrintUnionBoolean(const struct UnionBoolean * x);
 
+#define cJSON_IsUnionBooleanNode(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
+struct UnionBooleanNode * cJSON_GetUnionBooleanNodeValue(const cJSON * j);
+cJSON * cJSON_CreateUnionBooleanNode(const struct UnionBooleanNode * x);
+void cJSON_DeleteUnionBooleanNode(struct UnionBooleanNode * x);
+struct UnionBooleanNode * cJSON_ParseUnionBooleanNode(const char * s);
+char * cJSON_PrintUnionBooleanNode(const struct UnionBooleanNode * x);
+
 #define cJSON_IsUnionBycopy(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
 struct UnionBycopy * cJSON_GetUnionBycopyValue(const cJSON * j);
 cJSON * cJSON_CreateUnionBycopy(const struct UnionBycopy * x);
@@ -4365,6 +4499,13 @@ void cJSON_DeleteUnionDelegate(struct UnionDelegate * x);
 struct UnionDelegate * cJSON_ParseUnionDelegate(const char * s);
 char * cJSON_PrintUnionDelegate(const struct UnionDelegate * x);
 
+#define cJSON_IsUnionDeserializationFeature(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
+struct UnionDeserializationFeature * cJSON_GetUnionDeserializationFeatureValue(const cJSON * j);
+cJSON * cJSON_CreateUnionDeserializationFeature(const struct UnionDeserializationFeature * x);
+void cJSON_DeleteUnionDeserializationFeature(struct UnionDeserializationFeature * x);
+struct UnionDeserializationFeature * cJSON_ParseUnionDeserializationFeature(const char * s);
+char * cJSON_PrintUnionDeserializationFeature(const struct UnionDeserializationFeature * x);
+
 #define cJSON_IsUnionDict(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
 struct UnionDict * cJSON_GetUnionDictValue(const cJSON * j);
 cJSON * cJSON_CreateUnionDict(const struct UnionDict * x);
@@ -4386,6 +4527,13 @@ void cJSON_DeleteUnionDidSet(struct UnionDidSet * x);
 struct UnionDidSet * cJSON_ParseUnionDidSet(const char * s);
 char * cJSON_PrintUnionDidSet(const struct UnionDidSet * x);
 
+#define cJSON_IsUnionDoubleNode(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
+struct UnionDoubleNode * cJSON_GetUnionDoubleNodeValue(const cJSON * j);
+cJSON * cJSON_CreateUnionDoubleNode(const struct UnionDoubleNode * x);
+void cJSON_DeleteUnionDoubleNode(struct UnionDoubleNode * x);
+struct UnionDoubleNode * cJSON_ParseUnionDoubleNode(const char * s);
+char * cJSON_PrintUnionDoubleNode(const struct UnionDoubleNode * x);
+
 #define cJSON_IsUnionDynamic(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
 struct UnionDynamic * cJSON_GetUnionDynamicValue(const cJSON * j);
 cJSON * cJSON_CreateUnionDynamic(const struct UnionDynamic * x);
@@ -4694,6 +4842,13 @@ void cJSON_DeleteUnionInstanceof(struct UnionInstanceof * x);
 struct UnionInstanceof * cJSON_ParseUnionInstanceof(const char * s);
 char * cJSON_PrintUnionInstanceof(const struct UnionInstanceof * x);
 
+#define cJSON_IsUnionIntNode(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
+struct UnionIntNode * cJSON_GetUnionIntNodeValue(const cJSON * j);
+cJSON * cJSON_CreateUnionIntNode(const struct UnionIntNode * x);
+void cJSON_DeleteUnionIntNode(struct UnionIntNode * x);
+struct UnionIntNode * cJSON_ParseUnionIntNode(const char * s);
+char * cJSON_PrintUnionIntNode(const struct UnionIntNode * x);
+
 #define cJSON_IsUnionInterface(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
 struct UnionInterface * cJSON_GetUnionInterfaceValue(const cJSON * j);
 cJSON * cJSON_CreateUnionInterface(const struct UnionInterface * x);
@@ -4911,6 +5066,13 @@ void cJSON_DeleteUnionLock(struct UnionLock * x);
 struct UnionLock * cJSON_ParseUnionLock(const char * s);
 char * cJSON_PrintUnionLock(const struct UnionLock * x);
 
+#define cJSON_IsUnionLongNode(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
+struct UnionLongNode * cJSON_GetUnionLongNodeValue(const cJSON * j);
+cJSON * cJSON_CreateUnionLongNode(const struct UnionLongNode * x);
+void cJSON_DeleteUnionLongNode(struct UnionLongNode * x);
+struct UnionLongNode * cJSON_ParseUnionLongNode(const char * s);
+char * cJSON_PrintUnionLongNode(const struct UnionLongNode * x);
+
 #define cJSON_IsUnionMap(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
 struct UnionMap * cJSON_GetUnionMapValue(const cJSON * j);
 cJSON * cJSON_CreateUnionMap(const struct UnionMap * x);
@@ -5030,6 +5192,13 @@ void cJSON_DeleteUnionNull(struct UnionNull * x);
 struct UnionNull * cJSON_ParseUnionNull(const char * s);
 char * cJSON_PrintUnionNull(const struct UnionNull * x);
 
+#define cJSON_IsUnionNullNode(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
+struct UnionNullNode * cJSON_GetUnionNullNodeValue(const cJSON * j);
+cJSON * cJSON_CreateUnionNullNode(const struct UnionNullNode * x);
+void cJSON_DeleteUnionNullNode(struct UnionNullNode * x);
+struct UnionNullNode * cJSON_ParseUnionNullNode(const char * s);
+char * cJSON_PrintUnionNullNode(const struct UnionNullNode * x);
+
 #define cJSON_IsUnionNumber(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
 struct UnionNumber * cJSON_GetUnionNumberValue(const cJSON * j);
 cJSON * cJSON_CreateUnionNumber(const struct UnionNumber * x);
@@ -5051,6 +5220,13 @@ void cJSON_DeleteUnionObjectMapper(struct UnionObjectMapper * x);
 struct UnionObjectMapper * cJSON_ParseUnionObjectMapper(const char * s);
 char * cJSON_PrintUnionObjectMapper(const struct UnionObjectMapper * x);
 
+#define cJSON_IsUnionObjectNode(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
+struct UnionObjectNode * cJSON_GetUnionObjectNodeValue(const cJSON * j);
+cJSON * cJSON_CreateUnionObjectNode(const struct UnionObjectNode * x);
+void cJSON_DeleteUnionObjectNode(struct UnionObjectNode * x);
+struct UnionObjectNode * cJSON_ParseUnionObjectNode(const char * s);
+char * cJSON_PrintUnionObjectNode(const struct UnionObjectNode * x);
+
 #define cJSON_IsUnionOf(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
 struct UnionOf * cJSON_GetUnionOfValue(const cJSON * j);
 cJSON * cJSON_CreateUnionOf(const struct UnionOf * x);
@@ -5331,6 +5507,13 @@ void cJSON_DeleteUnionSendable(struct UnionSendable * x);
 struct UnionSendable * cJSON_ParseUnionSendable(const char * s);
 char * cJSON_PrintUnionSendable(const struct UnionSendable * x);
 
+#define cJSON_IsUnionSerializationFeature(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
+struct UnionSerializationFeature * cJSON_GetUnionSerializationFeatureValue(const cJSON * j);
+cJSON * cJSON_CreateUnionSerializationFeature(const struct UnionSerializationFeature * x);
+void cJSON_DeleteUnionSerializationFeature(struct UnionSerializationFeature * x);
+struct UnionSerializationFeature * cJSON_ParseUnionSerializationFeature(const char * s);
+char * cJSON_PrintUnionSerializationFeature(const struct UnionSerializationFeature * 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);
@@ -5429,6 +5612,13 @@ void cJSON_DeleteUnionSystem(struct UnionSystem * x);
 struct UnionSystem * cJSON_ParseUnionSystem(const char * s);
 char * cJSON_PrintUnionSystem(const struct UnionSystem * x);
 
+#define cJSON_IsUnionTextNode(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
+struct UnionTextNode * cJSON_GetUnionTextNodeValue(const cJSON * j);
+cJSON * cJSON_CreateUnionTextNode(const struct UnionTextNode * x);
+void cJSON_DeleteUnionTextNode(struct UnionTextNode * x);
+struct UnionTextNode * cJSON_ParseUnionTextNode(const char * s);
+char * cJSON_PrintUnionTextNode(const struct UnionTextNode * x);
+
 #define cJSON_IsUnionThen(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
 struct UnionThen * cJSON_GetUnionThenValue(const cJSON * j);
 cJSON * cJSON_CreateUnionThen(const struct UnionThen * x);
@@ -6378,6 +6568,12 @@ cJSON * cJSON_CreateArrayClass(const struct ArrayClass * x);
 char * cJSON_PrintArrayClass(const struct ArrayClass * x);
 void cJSON_DeleteArrayClass(struct ArrayClass * x);
 
+struct ArrayNode * cJSON_ParseArrayNode(const char * s);
+struct ArrayNode * cJSON_GetArrayNodeValue(const cJSON * j);
+cJSON * cJSON_CreateArrayNode(const struct ArrayNode * x);
+char * cJSON_PrintArrayNode(const struct ArrayNode * x);
+void cJSON_DeleteArrayNode(struct ArrayNode * x);
+
 struct As * cJSON_ParseAs(const char * s);
 struct As * cJSON_GetAsValue(const cJSON * j);
 cJSON * cJSON_CreateAs(const struct As * x);
@@ -6432,6 +6628,12 @@ cJSON * cJSON_CreateBoolean(const struct Boolean * x);
 char * cJSON_PrintBoolean(const struct Boolean * x);
 void cJSON_DeleteBoolean(struct Boolean * x);
 
+struct BooleanNode * cJSON_ParseBooleanNode(const char * s);
+struct BooleanNode * cJSON_GetBooleanNodeValue(const cJSON * j);
+cJSON * cJSON_CreateBooleanNode(const struct BooleanNode * x);
+char * cJSON_PrintBooleanNode(const struct BooleanNode * x);
+void cJSON_DeleteBooleanNode(struct BooleanNode * x);
+
 struct Bycopy * cJSON_ParseBycopy(const char * s);
 struct Bycopy * cJSON_GetBycopyValue(const cJSON * j);
 cJSON * cJSON_CreateBycopy(const struct Bycopy * x);
@@ -6642,6 +6844,12 @@ cJSON * cJSON_CreateDelegate(const struct Delegate * x);
 char * cJSON_PrintDelegate(const struct Delegate * x);
 void cJSON_DeleteDelegate(struct Delegate * x);
 
+struct DeserializationFeature * cJSON_ParseDeserializationFeature(const char * s);
+struct DeserializationFeature * cJSON_GetDeserializationFeatureValue(const cJSON * j);
+cJSON * cJSON_CreateDeserializationFeature(const struct DeserializationFeature * x);
+char * cJSON_PrintDeserializationFeature(const struct DeserializationFeature * x);
+void cJSON_DeleteDeserializationFeature(struct DeserializationFeature * x);
+
 struct Dict * cJSON_ParseDict(const char * s);
 struct Dict * cJSON_GetDictValue(const cJSON * j);
 cJSON * cJSON_CreateDict(const struct Dict * x);
@@ -6660,6 +6868,12 @@ cJSON * cJSON_CreateDidSet(const struct DidSet * x);
 char * cJSON_PrintDidSet(const struct DidSet * x);
 void cJSON_DeleteDidSet(struct DidSet * x);
 
+struct DoubleNode * cJSON_ParseDoubleNode(const char * s);
+struct DoubleNode * cJSON_GetDoubleNodeValue(const cJSON * j);
+cJSON * cJSON_CreateDoubleNode(const struct DoubleNode * x);
+char * cJSON_PrintDoubleNode(const struct DoubleNode * x);
+void cJSON_DeleteDoubleNode(struct DoubleNode * x);
+
 struct Dynamic * cJSON_ParseDynamic(const char * s);
 struct Dynamic * cJSON_GetDynamicValue(const cJSON * j);
 cJSON * cJSON_CreateDynamic(const struct Dynamic * x);
@@ -6924,6 +7138,12 @@ cJSON * cJSON_CreateInstanceof(const struct Instanceof * x);
 char * cJSON_PrintInstanceof(const struct Instanceof * x);
 void cJSON_DeleteInstanceof(struct Instanceof * x);
 
+struct IntNode * cJSON_ParseIntNode(const char * s);
+struct IntNode * cJSON_GetIntNodeValue(const cJSON * j);
+cJSON * cJSON_CreateIntNode(const struct IntNode * x);
+char * cJSON_PrintIntNode(const struct IntNode * x);
+void cJSON_DeleteIntNode(struct IntNode * x);
+
 struct Interface * cJSON_ParseInterface(const char * s);
 struct Interface * cJSON_GetInterfaceValue(const cJSON * j);
 cJSON * cJSON_CreateInterface(const struct Interface * x);
@@ -7110,6 +7330,12 @@ cJSON * cJSON_CreateLock(const struct Lock * x);
 char * cJSON_PrintLock(const struct Lock * x);
 void cJSON_DeleteLock(struct Lock * x);
 
+struct LongNode * cJSON_ParseLongNode(const char * s);
+struct LongNode * cJSON_GetLongNodeValue(const cJSON * j);
+cJSON * cJSON_CreateLongNode(const struct LongNode * x);
+char * cJSON_PrintLongNode(const struct LongNode * x);
+void cJSON_DeleteLongNode(struct LongNode * x);
+
 struct Map * cJSON_ParseMap(const char * s);
 struct Map * cJSON_GetMapValue(const cJSON * j);
 cJSON * cJSON_CreateMap(const struct Map * x);
@@ -7212,6 +7438,12 @@ cJSON * cJSON_CreateNullClass(const struct NullClass * x);
 char * cJSON_PrintNullClass(const struct NullClass * x);
 void cJSON_DeleteNullClass(struct NullClass * x);
 
+struct NullNode * cJSON_ParseNullNode(const char * s);
+struct NullNode * cJSON_GetNullNodeValue(const cJSON * j);
+cJSON * cJSON_CreateNullNode(const struct NullNode * x);
+char * cJSON_PrintNullNode(const struct NullNode * x);
+void cJSON_DeleteNullNode(struct NullNode * x);
+
 struct NumberClass * cJSON_ParseNumberClass(const char * s);
 struct NumberClass * cJSON_GetNumberClassValue(const cJSON * j);
 cJSON * cJSON_CreateNumberClass(const struct NumberClass * x);
@@ -7230,6 +7462,12 @@ cJSON * cJSON_CreateObjectMapper(const struct ObjectMapper * x);
 char * cJSON_PrintObjectMapper(const struct ObjectMapper * x);
 void cJSON_DeleteObjectMapper(struct ObjectMapper * x);
 
+struct ObjectNode * cJSON_ParseObjectNode(const char * s);
+struct ObjectNode * cJSON_GetObjectNodeValue(const cJSON * j);
+cJSON * cJSON_CreateObjectNode(const struct ObjectNode * x);
+char * cJSON_PrintObjectNode(const struct ObjectNode * x);
+void cJSON_DeleteObjectNode(struct ObjectNode * x);
+
 struct Of * cJSON_ParseOf(const char * s);
 struct Of * cJSON_GetOfValue(const cJSON * j);
 cJSON * cJSON_CreateOf(const struct Of * x);
@@ -7470,6 +7708,12 @@ cJSON * cJSON_CreateSendable(const struct Sendable * x);
 char * cJSON_PrintSendable(const struct Sendable * x);
 void cJSON_DeleteSendable(struct Sendable * x);
 
+struct SerializationFeature * cJSON_ParseSerializationFeature(const char * s);
+struct SerializationFeature * cJSON_GetSerializationFeatureValue(const cJSON * j);
+cJSON * cJSON_CreateSerializationFeature(const struct SerializationFeature * x);
+char * cJSON_PrintSerializationFeature(const struct SerializationFeature * x);
+void cJSON_DeleteSerializationFeature(struct SerializationFeature * x);
+
 struct Serialize * cJSON_ParseSerialize(const char * s);
 struct Serialize * cJSON_GetSerializeValue(const cJSON * j);
 cJSON * cJSON_CreateSerialize(const struct Serialize * x);
@@ -7554,6 +7798,12 @@ cJSON * cJSON_CreateSystem(const struct System * x);
 char * cJSON_PrintSystem(const struct System * x);
 void cJSON_DeleteSystem(struct System * x);
 
+struct TextNode * cJSON_ParseTextNode(const char * s);
+struct TextNode * cJSON_GetTextNodeValue(const cJSON * j);
+cJSON * cJSON_CreateTextNode(const struct TextNode * x);
+char * cJSON_PrintTextNode(const struct TextNode * x);
+void cJSON_DeleteTextNode(struct TextNode * x);
+
 struct Then * cJSON_ParseThen(const char * s);
 struct Then * cJSON_GetThenValue(const cJSON * j);
 cJSON * cJSON_CreateThen(const struct Then * x);
diff --git a/base/schema-cplusplus/test/inputs/schema/direct-union.schema/default/quicktype.hpp b/head/schema-cplusplus/test/inputs/schema/direct-union.schema/default/quicktype.hpp
index 607eaca..6e823fa 100644
--- a/base/schema-cplusplus/test/inputs/schema/direct-union.schema/default/quicktype.hpp
+++ b/head/schema-cplusplus/test/inputs/schema/direct-union.schema/default/quicktype.hpp
@@ -89,6 +89,76 @@ namespace quicktype {
     }
     #endif
 
+    class ArrayNode {
+        public:
+        ArrayNode() = default;
+        virtual ~ArrayNode() = default;
+
+        private:
+
+        public:
+    };
+
+    class BooleanNode {
+        public:
+        BooleanNode() = default;
+        virtual ~BooleanNode() = default;
+
+        private:
+
+        public:
+    };
+
+    class DoubleNode {
+        public:
+        DoubleNode() = default;
+        virtual ~DoubleNode() = default;
+
+        private:
+
+        public:
+    };
+
+    class IntNode {
+        public:
+        IntNode() = default;
+        virtual ~IntNode() = default;
+
+        private:
+
+        public:
+    };
+
+    class LongNode {
+        public:
+        LongNode() = default;
+        virtual ~LongNode() = default;
+
+        private:
+
+        public:
+    };
+
+    class NullNode {
+        public:
+        NullNode() = default;
+        virtual ~NullNode() = default;
+
+        private:
+
+        public:
+    };
+
+    class ObjectNode {
+        public:
+        ObjectNode() = default;
+        virtual ~ObjectNode() = default;
+
+        private:
+
+        public:
+    };
+
     using Anything = std::optional<std::variant<std::vector<nlohmann::json>, bool, double, int64_t, std::map<std::string, nlohmann::json>, std::string>>;
 
     class Thing {
@@ -108,25 +178,99 @@ namespace quicktype {
         void set_required(Anything value) { this->required = value; }
     };
 
+    class TextNode {
+        public:
+        TextNode() = default;
+        virtual ~TextNode() = default;
+
+        private:
+
+        public:
+    };
+
     class TopLevel {
         public:
         TopLevel() = default;
         virtual ~TopLevel() = default;
 
         private:
+        std::optional<ArrayNode> array_node;
+        std::optional<BooleanNode> boolean_node;
+        std::optional<DoubleNode> double_node;
+        std::optional<IntNode> int_node;
+        std::optional<LongNode> long_node;
+        std::optional<NullNode> null_node;
+        std::optional<ObjectNode> object_node;
         std::map<std::string, Thing> stuff;
+        std::optional<TextNode> text_node;
 
         public:
+        const std::optional<ArrayNode> & get_array_node() const { return array_node; }
+        std::optional<ArrayNode> & get_mutable_array_node() { return array_node; }
+        void set_array_node(const std::optional<ArrayNode> & value) { this->array_node = value; }
+
+        const std::optional<BooleanNode> & get_boolean_node() const { return boolean_node; }
+        std::optional<BooleanNode> & get_mutable_boolean_node() { return boolean_node; }
+        void set_boolean_node(const std::optional<BooleanNode> & value) { this->boolean_node = value; }
+
+        const std::optional<DoubleNode> & get_double_node() const { return double_node; }
+        std::optional<DoubleNode> & get_mutable_double_node() { return double_node; }
+        void set_double_node(const std::optional<DoubleNode> & value) { this->double_node = value; }
+
+        const std::optional<IntNode> & get_int_node() const { return int_node; }
+        std::optional<IntNode> & get_mutable_int_node() { return int_node; }
+        void set_int_node(const std::optional<IntNode> & value) { this->int_node = value; }
+
+        const std::optional<LongNode> & get_long_node() const { return long_node; }
+        std::optional<LongNode> & get_mutable_long_node() { return long_node; }
+        void set_long_node(const std::optional<LongNode> & value) { this->long_node = value; }
+
+        const std::optional<NullNode> & get_null_node() const { return null_node; }
+        std::optional<NullNode> & get_mutable_null_node() { return null_node; }
+        void set_null_node(const std::optional<NullNode> & value) { this->null_node = value; }
+
+        const std::optional<ObjectNode> & get_object_node() const { return object_node; }
+        std::optional<ObjectNode> & get_mutable_object_node() { return object_node; }
+        void set_object_node(const std::optional<ObjectNode> & value) { this->object_node = value; }
+
         const std::map<std::string, Thing> & get_stuff() const { return stuff; }
         std::map<std::string, Thing> & get_mutable_stuff() { return stuff; }
         void set_stuff(const std::map<std::string, Thing> & value) { this->stuff = value; }
+
+        const std::optional<TextNode> & get_text_node() const { return text_node; }
+        std::optional<TextNode> & get_mutable_text_node() { return text_node; }
+        void set_text_node(const std::optional<TextNode> & value) { this->text_node = value; }
     };
 }
 
 namespace quicktype {
+void from_json(const json & j, ArrayNode & x);
+void to_json(json & j, const ArrayNode & x);
+
+void from_json(const json & j, BooleanNode & x);
+void to_json(json & j, const BooleanNode & x);
+
+void from_json(const json & j, DoubleNode & x);
+void to_json(json & j, const DoubleNode & x);
+
+void from_json(const json & j, IntNode & x);
+void to_json(json & j, const IntNode & x);
+
+void from_json(const json & j, LongNode & x);
+void to_json(json & j, const LongNode & x);
+
+void from_json(const json & j, NullNode & x);
+void to_json(json & j, const NullNode & x);
+
+void from_json(const json & j, ObjectNode & x);
+void to_json(json & j, const ObjectNode & x);
+
 void from_json(const json & j, Thing & x);
 void to_json(json & j, const Thing & x);
 
+void from_json(const json & j, TextNode & x);
+void to_json(json & j, const TextNode & x);
+
 void from_json(const json & j, TopLevel & x);
 void to_json(json & j, const TopLevel & x);
 }
@@ -138,6 +282,83 @@ struct adl_serializer<std::variant<std::vector<json>, bool, double, int64_t, std
 };
 }
 namespace quicktype {
+    inline void from_json(const json & j, ArrayNode& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const ArrayNode & x) {
+        j = json::object();
+        (void)x;
+    }
+
+    inline void from_json(const json & j, BooleanNode& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const BooleanNode & x) {
+        j = json::object();
+        (void)x;
+    }
+
+    inline void from_json(const json & j, DoubleNode& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const DoubleNode & x) {
+        j = json::object();
+        (void)x;
+    }
+
+    inline void from_json(const json & j, IntNode& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const IntNode & x) {
+        j = json::object();
+        (void)x;
+    }
+
+    inline void from_json(const json & j, LongNode& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const LongNode & x) {
+        j = json::object();
+        (void)x;
+    }
+
+    inline void from_json(const json & j, NullNode& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const NullNode & x) {
+        j = json::object();
+        (void)x;
+    }
+
+    inline void from_json(const json & j, ObjectNode& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const ObjectNode & x) {
+        j = json::object();
+        (void)x;
+    }
+
     inline void from_json(const json & j, Thing& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         x.set_optional(get_stack_optional<std::variant<std::vector<nlohmann::json>, bool, double, int64_t, std::map<std::string, nlohmann::json>, std::string>>(j, "optional"));
@@ -151,14 +372,49 @@ namespace quicktype {
         j["required"] = x.get_required();
     }
 
+    inline void from_json(const json & j, TextNode& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const TextNode & x) {
+        j = json::object();
+        (void)x;
+    }
+
     inline void from_json(const json & j, TopLevel& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("arrayNode") != j.end() && j.at("arrayNode").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_array_node(get_stack_optional<ArrayNode>(j, "arrayNode"));
+        if (j.find("booleanNode") != j.end() && j.at("booleanNode").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_boolean_node(get_stack_optional<BooleanNode>(j, "booleanNode"));
+        if (j.find("doubleNode") != j.end() && j.at("doubleNode").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_double_node(get_stack_optional<DoubleNode>(j, "doubleNode"));
+        if (j.find("intNode") != j.end() && j.at("intNode").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_int_node(get_stack_optional<IntNode>(j, "intNode"));
+        if (j.find("longNode") != j.end() && j.at("longNode").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_long_node(get_stack_optional<LongNode>(j, "longNode"));
+        if (j.find("nullNode") != j.end() && j.at("nullNode").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_null_node(get_stack_optional<NullNode>(j, "nullNode"));
+        if (j.find("objectNode") != j.end() && j.at("objectNode").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_object_node(get_stack_optional<ObjectNode>(j, "objectNode"));
         x.set_stuff(j.at("stuff").get<std::map<std::string, Thing>>());
+        if (j.find("textNode") != j.end() && j.at("textNode").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_text_node(get_stack_optional<TextNode>(j, "textNode"));
     }
 
     inline void to_json(json & j, const TopLevel & x) {
         j = json::object();
+        j["arrayNode"] = x.get_array_node();
+        j["booleanNode"] = x.get_boolean_node();
+        j["doubleNode"] = x.get_double_node();
+        j["intNode"] = x.get_int_node();
+        j["longNode"] = x.get_long_node();
+        j["nullNode"] = x.get_null_node();
+        j["objectNode"] = x.get_object_node();
         j["stuff"] = x.get_stuff();
+        j["textNode"] = x.get_text_node();
     }
 }
 namespace nlohmann {
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..da4d122 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_NODE, ARRAY, AS, ASM, ASSERT, ASSOCIATEDTYPE, ASSOCIATIVITY, ASYNC, ATOMIC, ATOMIC_CANCEL, ATOMIC_COMMIT, ATOMIC_NOEXCEPT, AUTO, AWAIT, BASE, BITAND, BITOR, ENUM_BOOL, PURPLE_BOOL, BOOLEAN, BOOLEAN_NODE, 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, DESERIALIZATION_FEATURE, DECLTYPE, DECODE_STRING, DECODER, DECODING_ERROR, DEF, DEFAULT, DEFER, DEINIT, DEL, DELEGATE, DELETE, DICT, DICTIONARY, DID_SET, DO, DOUBLE, DOUBLE_NODE, 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, INT_NODE, 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, LONG_NODE, LOCALE, LOCK, LONG, MAP, MAP_ENTRY, METADATA_PROPERTY_HANDLING, MODULE, MUTABLE, MUTATING, NAMESPACE, NATIVE, NEW, NEWTONSOFT, NIL, NULL_NODE, 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_NODE, 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, SERIALIZATION_FEATURE, 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, TEXT_NODE, 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 };
 
     class TopLevel {
         public:
@@ -137,6 +137,7 @@ namespace quicktype {
             {"and_eq", Enum::AND_EQ},
             {"any", Enum::ANY},
             {"Any", Enum::ENUM_ANY},
+            {"ArrayNode", Enum::ARRAY_NODE},
             {"array", Enum::ARRAY},
             {"as", Enum::AS},
             {"asm", Enum::ASM},
@@ -156,6 +157,7 @@ namespace quicktype {
             {"BOOL", Enum::ENUM_BOOL},
             {"bool", Enum::PURPLE_BOOL},
             {"boolean", Enum::BOOLEAN},
+            {"BooleanNode", Enum::BOOLEAN_NODE},
             {"break", Enum::BREAK},
             {"bycopy", Enum::BYCOPY},
             {"byref", Enum::BYREF},
@@ -199,6 +201,7 @@ namespace quicktype {
             {"debugger", Enum::DEBUGGER},
             {"decimal", Enum::DECIMAL},
             {"declare", Enum::DECLARE},
+            {"DeserializationFeature", Enum::DESERIALIZATION_FEATURE},
             {"decltype", Enum::DECLTYPE},
             {"decode_string", Enum::DECODE_STRING},
             {"Decoder", Enum::DECODER},
@@ -215,6 +218,7 @@ namespace quicktype {
             {"didSet", Enum::DID_SET},
             {"do", Enum::DO},
             {"double", Enum::DOUBLE},
+            {"DoubleNode", Enum::DOUBLE_NODE},
             {"dynamic", Enum::DYNAMIC},
             {"dynamic_cast", Enum::DYNAMIC_CAST},
             {"elif", Enum::ELIF},
@@ -273,6 +277,7 @@ namespace quicktype {
             {"inout", Enum::INOUT},
             {"instanceof", Enum::INSTANCEOF},
             {"int", Enum::INT},
+            {"IntNode", Enum::INT_NODE},
             {"interface", Enum::INTERFACE},
             {"internal", Enum::INTERNAL},
             {"IsoDateTimeOffsetConverter", Enum::ISO_DATE_TIME_OFFSET_CONVERTER},
@@ -302,6 +307,7 @@ namespace quicktype {
             {"left", Enum::LEFT},
             {"let", Enum::LET},
             {"list", Enum::LIST},
+            {"LongNode", Enum::LONG_NODE},
             {"Locale", Enum::LOCALE},
             {"lock", Enum::LOCK},
             {"long", Enum::LONG},
@@ -316,6 +322,7 @@ namespace quicktype {
             {"new", Enum::NEW},
             {"newtonsoft", Enum::NEWTONSOFT},
             {"nil", Enum::NIL},
+            {"NullNode", Enum::NULL_NODE},
             {"NO", Enum::NO},
             {"noexcept", Enum::NOEXCEPT},
             {"nonatomic", Enum::NONATOMIC},
@@ -334,6 +341,7 @@ namespace quicktype {
             {"nullptr", Enum::NULLPTR},
             {"number", Enum::NUMBER},
             {"object", Enum::OBJECT},
+            {"ObjectNode", Enum::OBJECT_NODE},
             {"ObjectMapper", Enum::OBJECT_MAPPER},
             {"of", Enum::OF},
             {"oneway", Enum::ONEWAY},
@@ -386,6 +394,7 @@ namespace quicktype {
             {"self", Enum::ENUM_SELF},
             {"Sendable", Enum::SENDABLE},
             {"serialize", Enum::SERIALIZE},
+            {"SerializationFeature", Enum::SERIALIZATION_FEATURE},
             {"SerializerProvider", Enum::SERIALIZER_PROVIDER},
             {"set", Enum::SET},
             {"short", Enum::SHORT},
@@ -411,6 +420,7 @@ namespace quicktype {
             {"template", Enum::TEMPLATE},
             {"then", Enum::THEN},
             {"this", Enum::THIS},
+            {"TextNode", Enum::TEXT_NODE},
             {"thread_local", Enum::THREAD_LOCAL},
             {"throw", Enum::THROW},
             {"throws", Enum::THROWS},
@@ -480,6 +490,7 @@ namespace quicktype {
             case Enum::AND_EQ: j = "and_eq"; break;
             case Enum::ANY: j = "any"; break;
             case Enum::ENUM_ANY: j = "Any"; break;
+            case Enum::ARRAY_NODE: j = "ArrayNode"; break;
             case Enum::ARRAY: j = "array"; break;
             case Enum::AS: j = "as"; break;
             case Enum::ASM: j = "asm"; break;
@@ -499,6 +510,7 @@ namespace quicktype {
             case Enum::ENUM_BOOL: j = "BOOL"; break;
             case Enum::PURPLE_BOOL: j = "bool"; break;
             case Enum::BOOLEAN: j = "boolean"; break;
+            case Enum::BOOLEAN_NODE: j = "BooleanNode"; break;
             case Enum::BREAK: j = "break"; break;
             case Enum::BYCOPY: j = "bycopy"; break;
             case Enum::BYREF: j = "byref"; break;
@@ -542,6 +554,7 @@ namespace quicktype {
             case Enum::DEBUGGER: j = "debugger"; break;
             case Enum::DECIMAL: j = "decimal"; break;
             case Enum::DECLARE: j = "declare"; break;
+            case Enum::DESERIALIZATION_FEATURE: j = "DeserializationFeature"; break;
             case Enum::DECLTYPE: j = "decltype"; break;
             case Enum::DECODE_STRING: j = "decode_string"; break;
             case Enum::DECODER: j = "Decoder"; break;
@@ -558,6 +571,7 @@ namespace quicktype {
             case Enum::DID_SET: j = "didSet"; break;
             case Enum::DO: j = "do"; break;
             case Enum::DOUBLE: j = "double"; break;
+            case Enum::DOUBLE_NODE: j = "DoubleNode"; break;
             case Enum::DYNAMIC: j = "dynamic"; break;
             case Enum::DYNAMIC_CAST: j = "dynamic_cast"; break;
             case Enum::ELIF: j = "elif"; break;
@@ -616,6 +630,7 @@ namespace quicktype {
             case Enum::INOUT: j = "inout"; break;
             case Enum::INSTANCEOF: j = "instanceof"; break;
             case Enum::INT: j = "int"; break;
+            case Enum::INT_NODE: j = "IntNode"; break;
             case Enum::INTERFACE: j = "interface"; break;
             case Enum::INTERNAL: j = "internal"; break;
             case Enum::ISO_DATE_TIME_OFFSET_CONVERTER: j = "IsoDateTimeOffsetConverter"; break;
@@ -645,6 +660,7 @@ namespace quicktype {
             case Enum::LEFT: j = "left"; break;
             case Enum::LET: j = "let"; break;
             case Enum::LIST: j = "list"; break;
+            case Enum::LONG_NODE: j = "LongNode"; break;
             case Enum::LOCALE: j = "Locale"; break;
             case Enum::LOCK: j = "lock"; break;
             case Enum::LONG: j = "long"; break;
@@ -659,6 +675,7 @@ namespace quicktype {
             case Enum::NEW: j = "new"; break;
             case Enum::NEWTONSOFT: j = "newtonsoft"; break;
             case Enum::NIL: j = "nil"; break;
+            case Enum::NULL_NODE: j = "NullNode"; break;
             case Enum::NO: j = "NO"; break;
             case Enum::NOEXCEPT: j = "noexcept"; break;
             case Enum::NONATOMIC: j = "nonatomic"; break;
@@ -677,6 +694,7 @@ namespace quicktype {
             case Enum::NULLPTR: j = "nullptr"; break;
             case Enum::NUMBER: j = "number"; break;
             case Enum::OBJECT: j = "object"; break;
+            case Enum::OBJECT_NODE: j = "ObjectNode"; break;
             case Enum::OBJECT_MAPPER: j = "ObjectMapper"; break;
             case Enum::OF: j = "of"; break;
             case Enum::ONEWAY: j = "oneway"; break;
@@ -729,6 +747,7 @@ namespace quicktype {
             case Enum::ENUM_SELF: j = "self"; break;
             case Enum::SENDABLE: j = "Sendable"; break;
             case Enum::SERIALIZE: j = "serialize"; break;
+            case Enum::SERIALIZATION_FEATURE: j = "SerializationFeature"; break;
             case Enum::SERIALIZER_PROVIDER: j = "SerializerProvider"; break;
             case Enum::SET: j = "set"; break;
             case Enum::SHORT: j = "short"; break;
@@ -754,6 +773,7 @@ namespace quicktype {
             case Enum::TEMPLATE: j = "template"; break;
             case Enum::THEN: j = "then"; break;
             case Enum::THIS: j = "this"; break;
+            case Enum::TEXT_NODE: j = "TextNode"; break;
             case Enum::THREAD_LOCAL: j = "thread_local"; break;
             case Enum::THROW: j = "throw"; break;
             case Enum::THROWS: j = "throws"; 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..73f3770 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
@@ -125,6 +125,18 @@ namespace quicktype {
 
     using UnionArray = std::variant<Array, double>;
 
+    class ArrayNode {
+        public:
+        ArrayNode() = default;
+        virtual ~ArrayNode() = default;
+
+        private:
+
+        public:
+    };
+
+    using UnionArrayNode = std::variant<ArrayNode, double>;
+
     class As {
         public:
         As() = default;
@@ -233,6 +245,18 @@ namespace quicktype {
 
     using UnionBoolean = std::variant<Boolean, double>;
 
+    class BooleanNode {
+        public:
+        BooleanNode() = default;
+        virtual ~BooleanNode() = default;
+
+        private:
+
+        public:
+    };
+
+    using UnionBooleanNode = std::variant<BooleanNode, double>;
+
     class Bycopy {
         public:
         Bycopy() = default;
@@ -653,6 +677,18 @@ namespace quicktype {
 
     using UnionDelegate = std::variant<Delegate, double>;
 
+    class DeserializationFeature {
+        public:
+        DeserializationFeature() = default;
+        virtual ~DeserializationFeature() = default;
+
+        private:
+
+        public:
+    };
+
+    using UnionDeserializationFeature = std::variant<DeserializationFeature, double>;
+
     class Dict {
         public:
         Dict() = default;
@@ -689,6 +725,18 @@ namespace quicktype {
 
     using UnionDidSet = std::variant<DidSet, double>;
 
+    class DoubleNode {
+        public:
+        DoubleNode() = default;
+        virtual ~DoubleNode() = default;
+
+        private:
+
+        public:
+    };
+
+    using UnionDoubleNode = std::variant<DoubleNode, double>;
+
     class Dynamic {
         public:
         Dynamic() = default;
@@ -1217,6 +1265,18 @@ namespace quicktype {
 
     using UnionInstanceof = std::variant<Instanceof, double>;
 
+    class IntNode {
+        public:
+        IntNode() = default;
+        virtual ~IntNode() = default;
+
+        private:
+
+        public:
+    };
+
+    using UnionIntNode = std::variant<IntNode, double>;
+
     class Interface {
         public:
         Interface() = default;
@@ -1589,6 +1649,18 @@ namespace quicktype {
 
     using UnionLock = std::variant<Lock, double>;
 
+    class LongNode {
+        public:
+        LongNode() = default;
+        virtual ~LongNode() = default;
+
+        private:
+
+        public:
+    };
+
+    using UnionLongNode = std::variant<LongNode, double>;
+
     class Map {
         public:
         Map() = default;
@@ -1793,6 +1865,18 @@ namespace quicktype {
 
     using UnionNull = std::variant<Null, double>;
 
+    class NullNode {
+        public:
+        NullNode() = default;
+        virtual ~NullNode() = default;
+
+        private:
+
+        public:
+    };
+
+    using UnionNullNode = std::variant<NullNode, double>;
+
     class Number {
         public:
         Number() = default;
@@ -1829,6 +1913,18 @@ namespace quicktype {
 
     using UnionObjectMapper = std::variant<ObjectMapper, double>;
 
+    class ObjectNode {
+        public:
+        ObjectNode() = default;
+        virtual ~ObjectNode() = default;
+
+        private:
+
+        public:
+    };
+
+    using UnionObjectNode = std::variant<ObjectNode, double>;
+
     class Of {
         public:
         Of() = default;
@@ -2321,6 +2417,18 @@ namespace quicktype {
 
     using UnionSendable = std::variant<Sendable, double>;
 
+    class SerializationFeature {
+        public:
+        SerializationFeature() = default;
+        virtual ~SerializationFeature() = default;
+
+        private:
+
+        public:
+    };
+
+    using UnionSerializationFeature = std::variant<SerializationFeature, double>;
+
     class Serialize {
         public:
         Serialize() = default;
@@ -2489,6 +2597,18 @@ namespace quicktype {
 
     using UnionSystem = std::variant<System, double>;
 
+    class TextNode {
+        public:
+        TextNode() = default;
+        virtual ~TextNode() = default;
+
+        private:
+
+        public:
+    };
+
+    using UnionTextNode = std::variant<TextNode, double>;
+
     class Then {
         public:
         Then() = default;
@@ -4091,6 +4211,7 @@ namespace quicktype {
         std::optional<UnionAnyUnion> top_level_any;
         std::optional<UnionAny> any;
         std::optional<UnionArray> array;
+        std::optional<UnionArrayNode> array_node;
         std::optional<UnionAs> as;
         std::optional<UnionAsm> top_level_asm;
         std::optional<UnionAssert> assert;
@@ -4109,6 +4230,7 @@ namespace quicktype {
         std::optional<UnionBool> top_level_bool;
         std::optional<TopLevelUnionBool> fluffy_bool;
         std::optional<UnionBoolean> boolean;
+        std::optional<UnionBooleanNode> boolean_node;
         std::optional<UnionBreak> top_level_break;
         std::optional<UnionBycopy> bycopy;
         std::optional<UnionByref> byref;
@@ -4163,11 +4285,13 @@ namespace quicktype {
         std::optional<UnionDel> del;
         std::optional<UnionDelegate> delegate;
         std::optional<UnionDelete> top_level_delete;
+        std::optional<UnionDeserializationFeature> deserialization_feature;
         std::optional<UnionDict> dict;
         std::optional<UnionDictionary> dictionary;
         std::optional<UnionDidSet> did_set;
         std::optional<UnionDo> top_level_do;
         std::optional<UnionDouble> top_level_double;
+        std::optional<UnionDoubleNode> double_node;
         std::optional<double> dummy;
         std::optional<UnionDynamic> dynamic;
         std::optional<UnionDynamicCast> top_level_dynamic_cast;
@@ -4229,6 +4353,7 @@ namespace quicktype {
         std::optional<UnionInt> top_level_int;
         std::optional<UnionInterface> interface;
         std::optional<UnionInternal> internal;
+        std::optional<UnionIntNode> int_node;
         std::optional<UnionIs> is;
         std::optional<UnionIsoDateTimeOffsetConverter> iso_date_time_offset_converter;
         std::optional<UnionIterable> iterable;
@@ -4259,6 +4384,7 @@ namespace quicktype {
         std::optional<UnionLocale> locale;
         std::optional<UnionLock> lock;
         std::optional<UnionLong> top_level_long;
+        std::optional<UnionLongNode> long_node;
         std::optional<UnionMap> map;
         std::optional<UnionMapEntry> map_entry;
         std::optional<UnionMetadataPropertyHandling> metadata_property_handling;
@@ -4285,10 +4411,12 @@ namespace quicktype {
         std::optional<UnionNsString> ns_string;
         std::optional<UnionNull> null;
         std::optional<UnionNullUnion> top_level_null;
+        std::optional<UnionNullNode> null_node;
         std::optional<UnionNullptr> top_level_nullptr;
         std::optional<UnionNumber> number;
         std::optional<UnionObject> object;
         std::optional<UnionObjectMapper> object_mapper;
+        std::optional<UnionObjectNode> object_node;
         std::optional<UnionOf> of;
         std::optional<UnionOneway> oneway;
         std::optional<UnionOpen> open;
@@ -4339,6 +4467,7 @@ namespace quicktype {
         std::optional<UnionSelf> self;
         std::optional<UnionSelfUnion> top_level_self;
         std::optional<UnionSendable> sendable;
+        std::optional<UnionSerializationFeature> serialization_feature;
         std::optional<UnionSerialize> serialize;
         std::optional<UnionSerializerProvider> serializer_provider;
         std::optional<UnionSet> set;
@@ -4363,6 +4492,7 @@ namespace quicktype {
         std::optional<UnionSynchronized> top_level_synchronized;
         std::optional<UnionSystem> system;
         std::optional<UnionTemplate> top_level_template;
+        std::optional<UnionTextNode> text_node;
         std::optional<UnionThen> then;
         std::optional<UnionThis> top_level_this;
         std::optional<UnionThreadLocal> top_level_thread_local;
@@ -4462,6 +4592,10 @@ namespace quicktype {
         std::optional<UnionArray> & get_mutable_array() { return array; }
         void set_array(const std::optional<UnionArray> & value) { this->array = value; }
 
+        const std::optional<UnionArrayNode> & get_array_node() const { return array_node; }
+        std::optional<UnionArrayNode> & get_mutable_array_node() { return array_node; }
+        void set_array_node(const std::optional<UnionArrayNode> & value) { this->array_node = value; }
+
         const std::optional<UnionAs> & get_as() const { return as; }
         std::optional<UnionAs> & get_mutable_as() { return as; }
         void set_as(const std::optional<UnionAs> & value) { this->as = value; }
@@ -4534,6 +4668,10 @@ namespace quicktype {
         std::optional<UnionBoolean> & get_mutable_boolean() { return boolean; }
         void set_boolean(const std::optional<UnionBoolean> & value) { this->boolean = value; }
 
+        const std::optional<UnionBooleanNode> & get_boolean_node() const { return boolean_node; }
+        std::optional<UnionBooleanNode> & get_mutable_boolean_node() { return boolean_node; }
+        void set_boolean_node(const std::optional<UnionBooleanNode> & value) { this->boolean_node = value; }
+
         const std::optional<UnionBreak> & get_top_level_break() const { return top_level_break; }
         std::optional<UnionBreak> & get_mutable_top_level_break() { return top_level_break; }
         void set_top_level_break(const std::optional<UnionBreak> & value) { this->top_level_break = value; }
@@ -4750,6 +4888,10 @@ namespace quicktype {
         std::optional<UnionDelete> & get_mutable_top_level_delete() { return top_level_delete; }
         void set_top_level_delete(const std::optional<UnionDelete> & value) { this->top_level_delete = value; }
 
+        const std::optional<UnionDeserializationFeature> & get_deserialization_feature() const { return deserialization_feature; }
+        std::optional<UnionDeserializationFeature> & get_mutable_deserialization_feature() { return deserialization_feature; }
+        void set_deserialization_feature(const std::optional<UnionDeserializationFeature> & value) { this->deserialization_feature = value; }
+
         const std::optional<UnionDict> & get_dict() const { return dict; }
         std::optional<UnionDict> & get_mutable_dict() { return dict; }
         void set_dict(const std::optional<UnionDict> & value) { this->dict = value; }
@@ -4770,6 +4912,10 @@ namespace quicktype {
         std::optional<UnionDouble> & get_mutable_top_level_double() { return top_level_double; }
         void set_top_level_double(const std::optional<UnionDouble> & value) { this->top_level_double = value; }
 
+        const std::optional<UnionDoubleNode> & get_double_node() const { return double_node; }
+        std::optional<UnionDoubleNode> & get_mutable_double_node() { return double_node; }
+        void set_double_node(const std::optional<UnionDoubleNode> & value) { this->double_node = value; }
+
         const std::optional<double> & get_dummy() const { return dummy; }
         std::optional<double> & get_mutable_dummy() { return dummy; }
         void set_dummy(const std::optional<double> & value) { this->dummy = value; }
@@ -5014,6 +5160,10 @@ namespace quicktype {
         std::optional<UnionInternal> & get_mutable_internal() { return internal; }
         void set_internal(const std::optional<UnionInternal> & value) { this->internal = value; }
 
+        const std::optional<UnionIntNode> & get_int_node() const { return int_node; }
+        std::optional<UnionIntNode> & get_mutable_int_node() { return int_node; }
+        void set_int_node(const std::optional<UnionIntNode> & value) { this->int_node = value; }
+
         const std::optional<UnionIs> & get_is() const { return is; }
         std::optional<UnionIs> & get_mutable_is() { return is; }
         void set_is(const std::optional<UnionIs> & value) { this->is = value; }
@@ -5134,6 +5284,10 @@ namespace quicktype {
         std::optional<UnionLong> & get_mutable_top_level_long() { return top_level_long; }
         void set_top_level_long(const std::optional<UnionLong> & value) { this->top_level_long = value; }
 
+        const std::optional<UnionLongNode> & get_long_node() const { return long_node; }
+        std::optional<UnionLongNode> & get_mutable_long_node() { return long_node; }
+        void set_long_node(const std::optional<UnionLongNode> & value) { this->long_node = value; }
+
         const std::optional<UnionMap> & get_map() const { return map; }
         std::optional<UnionMap> & get_mutable_map() { return map; }
         void set_map(const std::optional<UnionMap> & value) { this->map = value; }
@@ -5238,6 +5392,10 @@ namespace quicktype {
         std::optional<UnionNullUnion> & get_mutable_top_level_null() { return top_level_null; }
         void set_top_level_null(const std::optional<UnionNullUnion> & value) { this->top_level_null = value; }
 
+        const std::optional<UnionNullNode> & get_null_node() const { return null_node; }
+        std::optional<UnionNullNode> & get_mutable_null_node() { return null_node; }
+        void set_null_node(const std::optional<UnionNullNode> & value) { this->null_node = value; }
+
         const std::optional<UnionNullptr> & get_top_level_nullptr() const { return top_level_nullptr; }
         std::optional<UnionNullptr> & get_mutable_top_level_nullptr() { return top_level_nullptr; }
         void set_top_level_nullptr(const std::optional<UnionNullptr> & value) { this->top_level_nullptr = value; }
@@ -5254,6 +5412,10 @@ namespace quicktype {
         std::optional<UnionObjectMapper> & get_mutable_object_mapper() { return object_mapper; }
         void set_object_mapper(const std::optional<UnionObjectMapper> & value) { this->object_mapper = value; }
 
+        const std::optional<UnionObjectNode> & get_object_node() const { return object_node; }
+        std::optional<UnionObjectNode> & get_mutable_object_node() { return object_node; }
+        void set_object_node(const std::optional<UnionObjectNode> & value) { this->object_node = value; }
+
         const std::optional<UnionOf> & get_of() const { return of; }
         std::optional<UnionOf> & get_mutable_of() { return of; }
         void set_of(const std::optional<UnionOf> & value) { this->of = value; }
@@ -5454,6 +5616,10 @@ namespace quicktype {
         std::optional<UnionSendable> & get_mutable_sendable() { return sendable; }
         void set_sendable(const std::optional<UnionSendable> & value) { this->sendable = value; }
 
+        const std::optional<UnionSerializationFeature> & get_serialization_feature() const { return serialization_feature; }
+        std::optional<UnionSerializationFeature> & get_mutable_serialization_feature() { return serialization_feature; }
+        void set_serialization_feature(const std::optional<UnionSerializationFeature> & value) { this->serialization_feature = 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; }
@@ -5550,6 +5716,10 @@ namespace quicktype {
         std::optional<UnionTemplate> & get_mutable_top_level_template() { return top_level_template; }
         void set_top_level_template(const std::optional<UnionTemplate> & value) { this->top_level_template = value; }
 
+        const std::optional<UnionTextNode> & get_text_node() const { return text_node; }
+        std::optional<UnionTextNode> & get_mutable_text_node() { return text_node; }
+        void set_text_node(const std::optional<UnionTextNode> & value) { this->text_node = value; }
+
         const std::optional<UnionThen> & get_then() const { return then; }
         std::optional<UnionThen> & get_mutable_then() { return then; }
         void set_then(const std::optional<UnionThen> & value) { this->then = value; }
@@ -5758,6 +5928,9 @@ void to_json(json & j, const Any & x);
 void from_json(const json & j, Array & x);
 void to_json(json & j, const Array & x);
 
+void from_json(const json & j, ArrayNode & x);
+void to_json(json & j, const ArrayNode & x);
+
 void from_json(const json & j, As & x);
 void to_json(json & j, const As & x);
 
@@ -5785,6 +5958,9 @@ void to_json(json & j, const Base & x);
 void from_json(const json & j, Boolean & x);
 void to_json(json & j, const Boolean & x);
 
+void from_json(const json & j, BooleanNode & x);
+void to_json(json & j, const BooleanNode & x);
+
 void from_json(const json & j, Bycopy & x);
 void to_json(json & j, const Bycopy & x);
 
@@ -5890,6 +6066,9 @@ void to_json(json & j, const Del & x);
 void from_json(const json & j, Delegate & x);
 void to_json(json & j, const Delegate & x);
 
+void from_json(const json & j, DeserializationFeature & x);
+void to_json(json & j, const DeserializationFeature & x);
+
 void from_json(const json & j, Dict & x);
 void to_json(json & j, const Dict & x);
 
@@ -5899,6 +6078,9 @@ void to_json(json & j, const Dictionary & x);
 void from_json(const json & j, DidSet & x);
 void to_json(json & j, const DidSet & x);
 
+void from_json(const json & j, DoubleNode & x);
+void to_json(json & j, const DoubleNode & x);
+
 void from_json(const json & j, Dynamic & x);
 void to_json(json & j, const Dynamic & x);
 
@@ -6031,6 +6213,9 @@ void to_json(json & j, const Inout & x);
 void from_json(const json & j, Instanceof & x);
 void to_json(json & j, const Instanceof & x);
 
+void from_json(const json & j, IntNode & x);
+void to_json(json & j, const IntNode & x);
+
 void from_json(const json & j, Interface & x);
 void to_json(json & j, const Interface & x);
 
@@ -6124,6 +6309,9 @@ void to_json(json & j, const Locale & x);
 void from_json(const json & j, Lock & x);
 void to_json(json & j, const Lock & x);
 
+void from_json(const json & j, LongNode & x);
+void to_json(json & j, const LongNode & x);
+
 void from_json(const json & j, Map & x);
 void to_json(json & j, const Map & x);
 
@@ -6175,6 +6363,9 @@ void to_json(json & j, const NsString & x);
 void from_json(const json & j, Null & x);
 void to_json(json & j, const Null & x);
 
+void from_json(const json & j, NullNode & x);
+void to_json(json & j, const NullNode & x);
+
 void from_json(const json & j, Number & x);
 void to_json(json & j, const Number & x);
 
@@ -6184,6 +6375,9 @@ void to_json(json & j, const Object & x);
 void from_json(const json & j, ObjectMapper & x);
 void to_json(json & j, const ObjectMapper & x);
 
+void from_json(const json & j, ObjectNode & x);
+void to_json(json & j, const ObjectNode & x);
+
 void from_json(const json & j, Of & x);
 void to_json(json & j, const Of & x);
 
@@ -6307,6 +6501,9 @@ 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, SerializationFeature & x);
+void to_json(json & j, const SerializationFeature & x);
+
 void from_json(const json & j, Serialize & x);
 void to_json(json & j, const Serialize & x);
 
@@ -6349,6 +6546,9 @@ void to_json(json & j, const Symbol & x);
 void from_json(const json & j, System & x);
 void to_json(json & j, const System & x);
 
+void from_json(const json & j, TextNode & x);
+void to_json(json & j, const TextNode & x);
+
 void from_json(const json & j, Then & x);
 void to_json(json & j, const Then & x);
 
@@ -6767,6 +6967,12 @@ struct adl_serializer<std::variant<quicktype::Array, double>> {
     static void to_json(json & j, const std::variant<quicktype::Array, double> & x);
 };
 
+template <>
+struct adl_serializer<std::variant<quicktype::ArrayNode, double>> {
+    static void from_json(const json & j, std::variant<quicktype::ArrayNode, double> & x);
+    static void to_json(json & j, const std::variant<quicktype::ArrayNode, double> & x);
+};
+
 template <>
 struct adl_serializer<std::variant<quicktype::As, double>> {
     static void from_json(const json & j, std::variant<quicktype::As, double> & x);
@@ -6821,6 +7027,12 @@ struct adl_serializer<std::variant<quicktype::Boolean, double>> {
     static void to_json(json & j, const std::variant<quicktype::Boolean, double> & x);
 };
 
+template <>
+struct adl_serializer<std::variant<quicktype::BooleanNode, double>> {
+    static void from_json(const json & j, std::variant<quicktype::BooleanNode, double> & x);
+    static void to_json(json & j, const std::variant<quicktype::BooleanNode, double> & x);
+};
+
 template <>
 struct adl_serializer<std::variant<quicktype::Bycopy, double>> {
     static void from_json(const json & j, std::variant<quicktype::Bycopy, double> & x);
@@ -7031,6 +7243,12 @@ struct adl_serializer<std::variant<quicktype::Delegate, double>> {
     static void to_json(json & j, const std::variant<quicktype::Delegate, double> & x);
 };
 
+template <>
+struct adl_serializer<std::variant<quicktype::DeserializationFeature, double>> {
+    static void from_json(const json & j, std::variant<quicktype::DeserializationFeature, double> & x);
+    static void to_json(json & j, const std::variant<quicktype::DeserializationFeature, double> & x);
+};
+
 template <>
 struct adl_serializer<std::variant<quicktype::Dict, double>> {
     static void from_json(const json & j, std::variant<quicktype::Dict, double> & x);
@@ -7049,6 +7267,12 @@ struct adl_serializer<std::variant<quicktype::DidSet, double>> {
     static void to_json(json & j, const std::variant<quicktype::DidSet, double> & x);
 };
 
+template <>
+struct adl_serializer<std::variant<quicktype::DoubleNode, double>> {
+    static void from_json(const json & j, std::variant<quicktype::DoubleNode, double> & x);
+    static void to_json(json & j, const std::variant<quicktype::DoubleNode, double> & x);
+};
+
 template <>
 struct adl_serializer<std::variant<quicktype::Dynamic, double>> {
     static void from_json(const json & j, std::variant<quicktype::Dynamic, double> & x);
@@ -7313,6 +7537,12 @@ struct adl_serializer<std::variant<quicktype::Instanceof, double>> {
     static void to_json(json & j, const std::variant<quicktype::Instanceof, double> & x);
 };
 
+template <>
+struct adl_serializer<std::variant<quicktype::IntNode, double>> {
+    static void from_json(const json & j, std::variant<quicktype::IntNode, double> & x);
+    static void to_json(json & j, const std::variant<quicktype::IntNode, double> & x);
+};
+
 template <>
 struct adl_serializer<std::variant<quicktype::Interface, double>> {
     static void from_json(const json & j, std::variant<quicktype::Interface, double> & x);
@@ -7499,6 +7729,12 @@ struct adl_serializer<std::variant<quicktype::Lock, double>> {
     static void to_json(json & j, const std::variant<quicktype::Lock, double> & x);
 };
 
+template <>
+struct adl_serializer<std::variant<quicktype::LongNode, double>> {
+    static void from_json(const json & j, std::variant<quicktype::LongNode, double> & x);
+    static void to_json(json & j, const std::variant<quicktype::LongNode, double> & x);
+};
+
 template <>
 struct adl_serializer<std::variant<quicktype::Map, double>> {
     static void from_json(const json & j, std::variant<quicktype::Map, double> & x);
@@ -7601,6 +7837,12 @@ struct adl_serializer<std::variant<quicktype::Null, double>> {
     static void to_json(json & j, const std::variant<quicktype::Null, double> & x);
 };
 
+template <>
+struct adl_serializer<std::variant<quicktype::NullNode, double>> {
+    static void from_json(const json & j, std::variant<quicktype::NullNode, double> & x);
+    static void to_json(json & j, const std::variant<quicktype::NullNode, double> & x);
+};
+
 template <>
 struct adl_serializer<std::variant<quicktype::Number, double>> {
     static void from_json(const json & j, std::variant<quicktype::Number, double> & x);
@@ -7619,6 +7861,12 @@ struct adl_serializer<std::variant<quicktype::ObjectMapper, double>> {
     static void to_json(json & j, const std::variant<quicktype::ObjectMapper, double> & x);
 };
 
+template <>
+struct adl_serializer<std::variant<quicktype::ObjectNode, double>> {
+    static void from_json(const json & j, std::variant<quicktype::ObjectNode, double> & x);
+    static void to_json(json & j, const std::variant<quicktype::ObjectNode, double> & x);
+};
+
 template <>
 struct adl_serializer<std::variant<quicktype::Of, double>> {
     static void from_json(const json & j, std::variant<quicktype::Of, double> & x);
@@ -7865,6 +8113,12 @@ 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::SerializationFeature, double>> {
+    static void from_json(const json & j, std::variant<quicktype::SerializationFeature, double> & x);
+    static void to_json(json & j, const std::variant<quicktype::SerializationFeature, double> & x);
+};
+
 template <>
 struct adl_serializer<std::variant<quicktype::Serialize, double>> {
     static void from_json(const json & j, std::variant<quicktype::Serialize, double> & x);
@@ -7949,6 +8203,12 @@ struct adl_serializer<std::variant<quicktype::System, double>> {
     static void to_json(json & j, const std::variant<quicktype::System, double> & x);
 };
 
+template <>
+struct adl_serializer<std::variant<quicktype::TextNode, double>> {
+    static void from_json(const json & j, std::variant<quicktype::TextNode, double> & x);
+    static void to_json(json & j, const std::variant<quicktype::TextNode, double> & x);
+};
+
 template <>
 struct adl_serializer<std::variant<quicktype::Then, double>> {
     static void from_json(const json & j, std::variant<quicktype::Then, double> & x);
@@ -8775,6 +9035,17 @@ namespace quicktype {
         (void)x;
     }
 
+    inline void from_json(const json & j, ArrayNode& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const ArrayNode & x) {
+        j = json::object();
+        (void)x;
+    }
+
     inline void from_json(const json & j, As& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         (void)j;
@@ -8874,6 +9145,17 @@ namespace quicktype {
         (void)x;
     }
 
+    inline void from_json(const json & j, BooleanNode& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const BooleanNode & x) {
+        j = json::object();
+        (void)x;
+    }
+
     inline void from_json(const json & j, Bycopy& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         (void)j;
@@ -9259,6 +9541,17 @@ namespace quicktype {
         (void)x;
     }
 
+    inline void from_json(const json & j, DeserializationFeature& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const DeserializationFeature & x) {
+        j = json::object();
+        (void)x;
+    }
+
     inline void from_json(const json & j, Dict& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         (void)j;
@@ -9292,6 +9585,17 @@ namespace quicktype {
         (void)x;
     }
 
+    inline void from_json(const json & j, DoubleNode& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const DoubleNode & x) {
+        j = json::object();
+        (void)x;
+    }
+
     inline void from_json(const json & j, Dynamic& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         (void)j;
@@ -9776,6 +10080,17 @@ namespace quicktype {
         (void)x;
     }
 
+    inline void from_json(const json & j, IntNode& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const IntNode & x) {
+        j = json::object();
+        (void)x;
+    }
+
     inline void from_json(const json & j, Interface& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         (void)j;
@@ -10117,6 +10432,17 @@ namespace quicktype {
         (void)x;
     }
 
+    inline void from_json(const json & j, LongNode& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const LongNode & x) {
+        j = json::object();
+        (void)x;
+    }
+
     inline void from_json(const json & j, Map& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         (void)j;
@@ -10304,6 +10630,17 @@ namespace quicktype {
         (void)x;
     }
 
+    inline void from_json(const json & j, NullNode& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const NullNode & x) {
+        j = json::object();
+        (void)x;
+    }
+
     inline void from_json(const json & j, Number& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         (void)j;
@@ -10337,6 +10674,17 @@ namespace quicktype {
         (void)x;
     }
 
+    inline void from_json(const json & j, ObjectNode& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const ObjectNode & x) {
+        j = json::object();
+        (void)x;
+    }
+
     inline void from_json(const json & j, Of& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         (void)j;
@@ -10788,6 +11136,17 @@ namespace quicktype {
         (void)x;
     }
 
+    inline void from_json(const json & j, SerializationFeature& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const SerializationFeature & 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;
@@ -10942,6 +11301,17 @@ namespace quicktype {
         (void)x;
     }
 
+    inline void from_json(const json & j, TextNode& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const TextNode & x) {
+        j = json::object();
+        (void)x;
+    }
+
     inline void from_json(const json & j, Then& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         (void)j;
@@ -12420,6 +12790,8 @@ namespace quicktype {
         x.set_any(get_stack_optional<std::variant<Any, double>>(j, "Any"));
         if (j.find("array") != j.end() && j.at("array").is_null()) throw std::runtime_error("Unexpected null");
         x.set_array(get_stack_optional<std::variant<Array, double>>(j, "array"));
+        if (j.find("ArrayNode") != j.end() && j.at("ArrayNode").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_array_node(get_stack_optional<std::variant<ArrayNode, double>>(j, "ArrayNode"));
         if (j.find("as") != j.end() && j.at("as").is_null()) throw std::runtime_error("Unexpected null");
         x.set_as(get_stack_optional<std::variant<As, double>>(j, "as"));
         if (j.find("asm") != j.end() && j.at("asm").is_null()) throw std::runtime_error("Unexpected null");
@@ -12456,6 +12828,8 @@ namespace quicktype {
         x.set_fluffy_bool(get_stack_optional<std::variant<UnionBoolBool, double>>(j, "bool"));
         if (j.find("boolean") != j.end() && j.at("boolean").is_null()) throw std::runtime_error("Unexpected null");
         x.set_boolean(get_stack_optional<std::variant<Boolean, double>>(j, "boolean"));
+        if (j.find("BooleanNode") != j.end() && j.at("BooleanNode").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_boolean_node(get_stack_optional<std::variant<BooleanNode, double>>(j, "BooleanNode"));
         if (j.find("break") != j.end() && j.at("break").is_null()) throw std::runtime_error("Unexpected null");
         x.set_top_level_break(get_stack_optional<std::variant<Break, double>>(j, "break"));
         if (j.find("bycopy") != j.end() && j.at("bycopy").is_null()) throw std::runtime_error("Unexpected null");
@@ -12564,6 +12938,8 @@ namespace quicktype {
         x.set_delegate(get_stack_optional<std::variant<Delegate, double>>(j, "delegate"));
         if (j.find("delete") != j.end() && j.at("delete").is_null()) throw std::runtime_error("Unexpected null");
         x.set_top_level_delete(get_stack_optional<std::variant<Delete, double>>(j, "delete"));
+        if (j.find("DeserializationFeature") != j.end() && j.at("DeserializationFeature").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_deserialization_feature(get_stack_optional<std::variant<DeserializationFeature, double>>(j, "DeserializationFeature"));
         if (j.find("dict") != j.end() && j.at("dict").is_null()) throw std::runtime_error("Unexpected null");
         x.set_dict(get_stack_optional<std::variant<Dict, double>>(j, "dict"));
         if (j.find("dictionary") != j.end() && j.at("dictionary").is_null()) throw std::runtime_error("Unexpected null");
@@ -12574,6 +12950,8 @@ namespace quicktype {
         x.set_top_level_do(get_stack_optional<std::variant<Do, double>>(j, "do"));
         if (j.find("double") != j.end() && j.at("double").is_null()) throw std::runtime_error("Unexpected null");
         x.set_top_level_double(get_stack_optional<std::variant<Double, double>>(j, "double"));
+        if (j.find("DoubleNode") != j.end() && j.at("DoubleNode").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_double_node(get_stack_optional<std::variant<DoubleNode, double>>(j, "DoubleNode"));
         if (j.find("dummy") != j.end() && j.at("dummy").is_null()) throw std::runtime_error("Unexpected null");
         x.set_dummy(get_stack_optional<double>(j, "dummy"));
         if (j.find("dynamic") != j.end() && j.at("dynamic").is_null()) throw std::runtime_error("Unexpected null");
@@ -12696,6 +13074,8 @@ namespace quicktype {
         x.set_interface(get_stack_optional<std::variant<Interface, double>>(j, "interface"));
         if (j.find("internal") != j.end() && j.at("internal").is_null()) throw std::runtime_error("Unexpected null");
         x.set_internal(get_stack_optional<std::variant<Internal, double>>(j, "internal"));
+        if (j.find("IntNode") != j.end() && j.at("IntNode").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_int_node(get_stack_optional<std::variant<IntNode, double>>(j, "IntNode"));
         if (j.find("is") != j.end() && j.at("is").is_null()) throw std::runtime_error("Unexpected null");
         x.set_is(get_stack_optional<std::variant<Is, double>>(j, "is"));
         if (j.find("IsoDateTimeOffsetConverter") != j.end() && j.at("IsoDateTimeOffsetConverter").is_null()) throw std::runtime_error("Unexpected null");
@@ -12756,6 +13136,8 @@ namespace quicktype {
         x.set_lock(get_stack_optional<std::variant<Lock, double>>(j, "lock"));
         if (j.find("long") != j.end() && j.at("long").is_null()) throw std::runtime_error("Unexpected null");
         x.set_top_level_long(get_stack_optional<std::variant<Long, double>>(j, "long"));
+        if (j.find("LongNode") != j.end() && j.at("LongNode").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_long_node(get_stack_optional<std::variant<LongNode, double>>(j, "LongNode"));
         if (j.find("map") != j.end() && j.at("map").is_null()) throw std::runtime_error("Unexpected null");
         x.set_map(get_stack_optional<std::variant<Map, double>>(j, "map"));
         if (j.find("MapEntry") != j.end() && j.at("MapEntry").is_null()) throw std::runtime_error("Unexpected null");
@@ -12808,6 +13190,8 @@ namespace quicktype {
         x.set_null(get_stack_optional<std::variant<Null, double>>(j, "NULL"));
         if (j.find("null") != j.end() && j.at("null").is_null()) throw std::runtime_error("Unexpected null");
         x.set_top_level_null(get_stack_optional<std::variant<NullClass, double>>(j, "null"));
+        if (j.find("NullNode") != j.end() && j.at("NullNode").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_null_node(get_stack_optional<std::variant<NullNode, double>>(j, "NullNode"));
         if (j.find("nullptr") != j.end() && j.at("nullptr").is_null()) throw std::runtime_error("Unexpected null");
         x.set_top_level_nullptr(get_stack_optional<std::variant<Nullptr, double>>(j, "nullptr"));
         if (j.find("number") != j.end() && j.at("number").is_null()) throw std::runtime_error("Unexpected null");
@@ -12816,6 +13200,8 @@ namespace quicktype {
         x.set_object(get_stack_optional<std::variant<Object, double>>(j, "object"));
         if (j.find("ObjectMapper") != j.end() && j.at("ObjectMapper").is_null()) throw std::runtime_error("Unexpected null");
         x.set_object_mapper(get_stack_optional<std::variant<ObjectMapper, double>>(j, "ObjectMapper"));
+        if (j.find("ObjectNode") != j.end() && j.at("ObjectNode").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_object_node(get_stack_optional<std::variant<ObjectNode, double>>(j, "ObjectNode"));
         if (j.find("of") != j.end() && j.at("of").is_null()) throw std::runtime_error("Unexpected null");
         x.set_of(get_stack_optional<std::variant<Of, double>>(j, "of"));
         if (j.find("oneway") != j.end() && j.at("oneway").is_null()) throw std::runtime_error("Unexpected null");
@@ -12916,6 +13302,8 @@ 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("SerializationFeature") != j.end() && j.at("SerializationFeature").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_serialization_feature(get_stack_optional<std::variant<SerializationFeature, double>>(j, "SerializationFeature"));
         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");
@@ -12964,6 +13352,8 @@ namespace quicktype {
         x.set_system(get_stack_optional<std::variant<System, double>>(j, "system"));
         if (j.find("template") != j.end() && j.at("template").is_null()) throw std::runtime_error("Unexpected null");
         x.set_top_level_template(get_stack_optional<std::variant<Template, double>>(j, "template"));
+        if (j.find("TextNode") != j.end() && j.at("TextNode").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_text_node(get_stack_optional<std::variant<TextNode, double>>(j, "TextNode"));
         if (j.find("then") != j.end() && j.at("then").is_null()) throw std::runtime_error("Unexpected null");
         x.set_then(get_stack_optional<std::variant<Then, double>>(j, "then"));
         if (j.find("this") != j.end() && j.at("this").is_null()) throw std::runtime_error("Unexpected null");
@@ -13078,6 +13468,7 @@ namespace quicktype {
         j["any"] = x.get_top_level_any();
         j["Any"] = x.get_any();
         j["array"] = x.get_array();
+        j["ArrayNode"] = x.get_array_node();
         j["as"] = x.get_as();
         j["asm"] = x.get_top_level_asm();
         j["assert"] = x.get_assert();
@@ -13096,6 +13487,7 @@ namespace quicktype {
         j["BOOL"] = x.get_top_level_bool();
         j["bool"] = x.get_fluffy_bool();
         j["boolean"] = x.get_boolean();
+        j["BooleanNode"] = x.get_boolean_node();
         j["break"] = x.get_top_level_break();
         j["bycopy"] = x.get_bycopy();
         j["byref"] = x.get_byref();
@@ -13150,11 +13542,13 @@ namespace quicktype {
         j["del"] = x.get_del();
         j["delegate"] = x.get_delegate();
         j["delete"] = x.get_top_level_delete();
+        j["DeserializationFeature"] = x.get_deserialization_feature();
         j["dict"] = x.get_dict();
         j["dictionary"] = x.get_dictionary();
         j["didSet"] = x.get_did_set();
         j["do"] = x.get_top_level_do();
         j["double"] = x.get_top_level_double();
+        j["DoubleNode"] = x.get_double_node();
         j["dummy"] = x.get_dummy();
         j["dynamic"] = x.get_dynamic();
         j["dynamic_cast"] = x.get_top_level_dynamic_cast();
@@ -13216,6 +13610,7 @@ namespace quicktype {
         j["int"] = x.get_top_level_int();
         j["interface"] = x.get_interface();
         j["internal"] = x.get_internal();
+        j["IntNode"] = x.get_int_node();
         j["is"] = x.get_is();
         j["IsoDateTimeOffsetConverter"] = x.get_iso_date_time_offset_converter();
         j["iterable"] = x.get_iterable();
@@ -13246,6 +13641,7 @@ namespace quicktype {
         j["Locale"] = x.get_locale();
         j["lock"] = x.get_lock();
         j["long"] = x.get_top_level_long();
+        j["LongNode"] = x.get_long_node();
         j["map"] = x.get_map();
         j["MapEntry"] = x.get_map_entry();
         j["metadata_property_handling"] = x.get_metadata_property_handling();
@@ -13272,10 +13668,12 @@ namespace quicktype {
         j["NSString"] = x.get_ns_string();
         j["NULL"] = x.get_null();
         j["null"] = x.get_top_level_null();
+        j["NullNode"] = x.get_null_node();
         j["nullptr"] = x.get_top_level_nullptr();
         j["number"] = x.get_number();
         j["object"] = x.get_object();
         j["ObjectMapper"] = x.get_object_mapper();
+        j["ObjectNode"] = x.get_object_node();
         j["of"] = x.get_of();
         j["oneway"] = x.get_oneway();
         j["open"] = x.get_open();
@@ -13326,6 +13724,7 @@ namespace quicktype {
         j["Self"] = x.get_self();
         j["self"] = x.get_top_level_self();
         j["Sendable"] = x.get_sendable();
+        j["SerializationFeature"] = x.get_serialization_feature();
         j["serialize"] = x.get_serialize();
         j["SerializerProvider"] = x.get_serializer_provider();
         j["set"] = x.get_set();
@@ -13350,6 +13749,7 @@ namespace quicktype {
         j["synchronized"] = x.get_top_level_synchronized();
         j["system"] = x.get_system();
         j["template"] = x.get_top_level_template();
+        j["TextNode"] = x.get_text_node();
         j["then"] = x.get_then();
         j["this"] = x.get_top_level_this();
         j["thread_local"] = x.get_top_level_thread_local();
@@ -13462,6 +13862,26 @@ namespace nlohmann {
         }
     }
 
+    inline void adl_serializer<std::variant<quicktype::ArrayNode, double>>::from_json(const json & j, std::variant<quicktype::ArrayNode, double> & x) {
+        if (j.is_number())
+            x = j.get<double>();
+        else if (j.is_object())
+            x = j.get<quicktype::ArrayNode>();
+        else throw std::runtime_error("Could not deserialise!");
+    }
+
+    inline void adl_serializer<std::variant<quicktype::ArrayNode, double>>::to_json(json & j, const std::variant<quicktype::ArrayNode, double> & x) {
+        switch (x.index()) {
+            case 0:
+                j = std::get<quicktype::ArrayNode>(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::As, double>>::from_json(const json & j, std::variant<quicktype::As, double> & x) {
         if (j.is_number())
             x = j.get<double>();
@@ -13642,6 +14062,26 @@ namespace nlohmann {
         }
     }
 
+    inline void adl_serializer<std::variant<quicktype::BooleanNode, double>>::from_json(const json & j, std::variant<quicktype::BooleanNode, double> & x) {
+        if (j.is_number())
+            x = j.get<double>();
+        else if (j.is_object())
+            x = j.get<quicktype::BooleanNode>();
+        else throw std::runtime_error("Could not deserialise!");
+    }
+
+    inline void adl_serializer<std::variant<quicktype::BooleanNode, double>>::to_json(json & j, const std::variant<quicktype::BooleanNode, double> & x) {
+        switch (x.index()) {
+            case 0:
+                j = std::get<quicktype::BooleanNode>(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::Bycopy, double>>::from_json(const json & j, std::variant<quicktype::Bycopy, double> & x) {
         if (j.is_number())
             x = j.get<double>();
@@ -14342,6 +14782,26 @@ namespace nlohmann {
         }
     }
 
+    inline void adl_serializer<std::variant<quicktype::DeserializationFeature, double>>::from_json(const json & j, std::variant<quicktype::DeserializationFeature, double> & x) {
+        if (j.is_number())
+            x = j.get<double>();
+        else if (j.is_object())
+            x = j.get<quicktype::DeserializationFeature>();
+        else throw std::runtime_error("Could not deserialise!");
+    }
+
+    inline void adl_serializer<std::variant<quicktype::DeserializationFeature, double>>::to_json(json & j, const std::variant<quicktype::DeserializationFeature, double> & x) {
+        switch (x.index()) {
+            case 0:
+                j = std::get<quicktype::DeserializationFeature>(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::Dict, double>>::from_json(const json & j, std::variant<quicktype::Dict, double> & x) {
         if (j.is_number())
             x = j.get<double>();
@@ -14402,6 +14862,26 @@ namespace nlohmann {
         }
     }
 
+    inline void adl_serializer<std::variant<quicktype::DoubleNode, double>>::from_json(const json & j, std::variant<quicktype::DoubleNode, double> & x) {
+        if (j.is_number())
+            x = j.get<double>();
+        else if (j.is_object())
+            x = j.get<quicktype::DoubleNode>();
+        else throw std::runtime_error("Could not deserialise!");
+    }
+
+    inline void adl_serializer<std::variant<quicktype::DoubleNode, double>>::to_json(json & j, const std::variant<quicktype::DoubleNode, double> & x) {
+        switch (x.index()) {
+            case 0:
+                j = std::get<quicktype::DoubleNode>(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::Dynamic, double>>::from_json(const json & j, std::variant<quicktype::Dynamic, double> & x) {
         if (j.is_number())
             x = j.get<double>();
@@ -15282,6 +15762,26 @@ namespace nlohmann {
         }
     }
 
+    inline void adl_serializer<std::variant<quicktype::IntNode, double>>::from_json(const json & j, std::variant<quicktype::IntNode, double> & x) {
+        if (j.is_number())
+            x = j.get<double>();
+        else if (j.is_object())
+            x = j.get<quicktype::IntNode>();
+        else throw std::runtime_error("Could not deserialise!");
+    }
+
+    inline void adl_serializer<std::variant<quicktype::IntNode, double>>::to_json(json & j, const std::variant<quicktype::IntNode, double> & x) {
+        switch (x.index()) {
+            case 0:
+                j = std::get<quicktype::IntNode>(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::Interface, double>>::from_json(const json & j, std::variant<quicktype::Interface, double> & x) {
         if (j.is_number())
             x = j.get<double>();
@@ -15902,6 +16402,26 @@ namespace nlohmann {
         }
     }
 
+    inline void adl_serializer<std::variant<quicktype::LongNode, double>>::from_json(const json & j, std::variant<quicktype::LongNode, double> & x) {
+        if (j.is_number())
+            x = j.get<double>();
+        else if (j.is_object())
+            x = j.get<quicktype::LongNode>();
+        else throw std::runtime_error("Could not deserialise!");
+    }
+
+    inline void adl_serializer<std::variant<quicktype::LongNode, double>>::to_json(json & j, const std::variant<quicktype::LongNode, double> & x) {
+        switch (x.index()) {
+            case 0:
+                j = std::get<quicktype::LongNode>(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::Map, double>>::from_json(const json & j, std::variant<quicktype::Map, double> & x) {
         if (j.is_number())
             x = j.get<double>();
@@ -16242,6 +16762,26 @@ namespace nlohmann {
         }
     }
 
+    inline void adl_serializer<std::variant<quicktype::NullNode, double>>::from_json(const json & j, std::variant<quicktype::NullNode, double> & x) {
+        if (j.is_number())
+            x = j.get<double>();
+        else if (j.is_object())
+            x = j.get<quicktype::NullNode>();
+        else throw std::runtime_error("Could not deserialise!");
+    }
+
+    inline void adl_serializer<std::variant<quicktype::NullNode, double>>::to_json(json & j, const std::variant<quicktype::NullNode, double> & x) {
+        switch (x.index()) {
+            case 0:
+                j = std::get<quicktype::NullNode>(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::Number, double>>::from_json(const json & j, std::variant<quicktype::Number, double> & x) {
         if (j.is_number())
             x = j.get<double>();
@@ -16302,6 +16842,26 @@ namespace nlohmann {
         }
     }
 
+    inline void adl_serializer<std::variant<quicktype::ObjectNode, double>>::from_json(const json & j, std::variant<quicktype::ObjectNode, double> & x) {
+        if (j.is_number())
+            x = j.get<double>();
+        else if (j.is_object())
+            x = j.get<quicktype::ObjectNode>();
+        else throw std::runtime_error("Could not deserialise!");
+    }
+
+    inline void adl_serializer<std::variant<quicktype::ObjectNode, double>>::to_json(json & j, const std::variant<quicktype::ObjectNode, double> & x) {
+        switch (x.index()) {
+            case 0:
+                j = std::get<quicktype::ObjectNode>(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::Of, double>>::from_json(const json & j, std::variant<quicktype::Of, double> & x) {
         if (j.is_number())
             x = j.get<double>();
@@ -17122,6 +17682,26 @@ namespace nlohmann {
         }
     }
 
+    inline void adl_serializer<std::variant<quicktype::SerializationFeature, double>>::from_json(const json & j, std::variant<quicktype::SerializationFeature, double> & x) {
+        if (j.is_number())
+            x = j.get<double>();
+        else if (j.is_object())
+            x = j.get<quicktype::SerializationFeature>();
+        else throw std::runtime_error("Could not deserialise!");
+    }
+
+    inline void adl_serializer<std::variant<quicktype::SerializationFeature, double>>::to_json(json & j, const std::variant<quicktype::SerializationFeature, double> & x) {
+        switch (x.index()) {
+            case 0:
+                j = std::get<quicktype::SerializationFeature>(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>();
@@ -17402,6 +17982,26 @@ namespace nlohmann {
         }
     }
 
+    inline void adl_serializer<std::variant<quicktype::TextNode, double>>::from_json(const json & j, std::variant<quicktype::TextNode, double> & x) {
+        if (j.is_number())
+            x = j.get<double>();
+        else if (j.is_object())
+            x = j.get<quicktype::TextNode>();
+        else throw std::runtime_error("Could not deserialise!");
+    }
+
+    inline void adl_serializer<std::variant<quicktype::TextNode, double>>::to_json(json & j, const std::variant<quicktype::TextNode, double> & x) {
+        switch (x.index()) {
+            case 0:
+                j = std::get<quicktype::TextNode>(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::Then, double>>::from_json(const json & j, std::variant<quicktype::Then, double> & x) {
         if (j.is_number())
             x = j.get<double>();
diff --git a/base/schema-crystal/test/inputs/schema/direct-union.schema/default/TopLevel.cr b/head/schema-crystal/test/inputs/schema/direct-union.schema/default/TopLevel.cr
index 0d5efd9..1601c8e 100644
--- a/base/schema-crystal/test/inputs/schema/direct-union.schema/default/TopLevel.cr
+++ b/head/schema-crystal/test/inputs/schema/direct-union.schema/default/TopLevel.cr
@@ -3,7 +3,66 @@ require "json"
 class TopLevel
   include JSON::Serializable
 
+  @[JSON::Field(key: "arrayNode")]
+  property array_node : ArrayNode?
+
+  @[JSON::Field(key: "booleanNode")]
+  property boolean_node : BooleanNode?
+
+  @[JSON::Field(key: "doubleNode")]
+  property double_node : DoubleNode?
+
+  @[JSON::Field(key: "intNode")]
+  property int_node : IntNode?
+
+  @[JSON::Field(key: "longNode")]
+  property long_node : LongNode?
+
+  @[JSON::Field(key: "nullNode")]
+  property null_node : NullNode?
+
+  @[JSON::Field(key: "objectNode")]
+  property object_node : ObjectNode?
+
   property stuff : Hash(String, Thing)
+
+  @[JSON::Field(key: "textNode")]
+  property text_node : TextNode?
+end
+
+class ArrayNode
+  include JSON::Serializable
+
+end
+
+class BooleanNode
+  include JSON::Serializable
+
+end
+
+class DoubleNode
+  include JSON::Serializable
+
+end
+
+class IntNode
+  include JSON::Serializable
+
+end
+
+class LongNode
+  include JSON::Serializable
+
+end
+
+class NullNode
+  include JSON::Serializable
+
+end
+
+class ObjectNode
+  include JSON::Serializable
+
 end
 
 class Thing
@@ -14,4 +73,9 @@ class Thing
   property required : Anything?
 end
 
+class TextNode
+  include JSON::Serializable
+
+end
+
 alias Anything = Array(JSON::Any?) | Hash(String, JSON::Any?) | Float64 | Int64 | Bool | String
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..0135f99 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
@@ -34,6 +34,9 @@ class TopLevel
 
   property array : UnionArray?
 
+  @[JSON::Field(key: "ArrayNode")]
+  property array_node : UnionArrayNode?
+
   @[JSON::Field(key: "as")]
   property top_level_as : UnionAs?
 
@@ -74,6 +77,9 @@ class TopLevel
 
   property boolean : UnionBoolean?
 
+  @[JSON::Field(key: "BooleanNode")]
+  property boolean_node : UnionBooleanNode?
+
   @[JSON::Field(key: "break")]
   property top_level_break : UnionBreak?
 
@@ -199,6 +205,9 @@ class TopLevel
 
   property delete : UnionDelete?
 
+  @[JSON::Field(key: "DeserializationFeature")]
+  property deserialization_feature : UnionDeserializationFeature?
+
   property dict : UnionDict?
 
   property dictionary : UnionDictionary?
@@ -211,6 +220,9 @@ class TopLevel
 
   property double : UnionDouble?
 
+  @[JSON::Field(key: "DoubleNode")]
+  property double_node : UnionDoubleNode?
+
   property dummy : Float64?
 
   property dynamic : UnionDynamic?
@@ -350,6 +362,9 @@ class TopLevel
 
   property internal : UnionInternal?
 
+  @[JSON::Field(key: "IntNode")]
+  property int_node : UnionIntNode?
+
   property is : UnionIs?
 
   @[JSON::Field(key: "IsoDateTimeOffsetConverter")]
@@ -423,6 +438,9 @@ class TopLevel
 
   property long : UnionLong?
 
+  @[JSON::Field(key: "LongNode")]
+  property long_node : UnionLongNode?
+
   property map : UnionMap?
 
   @[JSON::Field(key: "MapEntry")]
@@ -487,6 +505,9 @@ class TopLevel
   @[JSON::Field(key: "null")]
   property top_level_null : UnionNullUnion?
 
+  @[JSON::Field(key: "NullNode")]
+  property null_node : UnionNullNode?
+
   property nullptr : UnionNullptr?
 
   property number : UnionNumber?
@@ -496,6 +517,9 @@ class TopLevel
   @[JSON::Field(key: "ObjectMapper")]
   property object_mapper : UnionObjectMapper?
 
+  @[JSON::Field(key: "ObjectNode")]
+  property object_node : UnionObjectNode?
+
   @[JSON::Field(key: "of")]
   property top_level_of : UnionOf?
 
@@ -612,6 +636,9 @@ class TopLevel
   @[JSON::Field(key: "Sendable")]
   property sendable : UnionSendable?
 
+  @[JSON::Field(key: "SerializationFeature")]
+  property serialization_feature : UnionSerializationFeature?
+
   property serialize : UnionSerialize?
 
   @[JSON::Field(key: "SerializerProvider")]
@@ -668,6 +695,9 @@ class TopLevel
 
   property template : UnionTemplate?
 
+  @[JSON::Field(key: "TextNode")]
+  property text_node : UnionTextNode?
+
   @[JSON::Field(key: "then")]
   property top_level_then : UnionThen?
 
@@ -817,6 +847,11 @@ class ArrayClass
 
 end
 
+class ArrayNode
+  include JSON::Serializable
+
+end
+
 class Assert
   include JSON::Serializable
 
@@ -892,6 +927,11 @@ class Boolean
 
 end
 
+class BooleanNode
+  include JSON::Serializable
+
+end
+
 class Bycopy
   include JSON::Serializable
 
@@ -1142,6 +1182,11 @@ class Delete
 
 end
 
+class DeserializationFeature
+  include JSON::Serializable
+
+end
+
 class Dict
   include JSON::Serializable
 
@@ -1162,6 +1207,11 @@ class Double
 
 end
 
+class DoubleNode
+  include JSON::Serializable
+
+end
+
 class Dynamic
   include JSON::Serializable
 
@@ -1427,6 +1477,11 @@ class IntClass
 
 end
 
+class IntNode
+  include JSON::Serializable
+
+end
+
 class Interface
   include JSON::Serializable
 
@@ -1587,6 +1642,11 @@ class Long
 
 end
 
+class LongNode
+  include JSON::Serializable
+
+end
+
 class Map
   include JSON::Serializable
 
@@ -1697,6 +1757,11 @@ class Null
 
 end
 
+class NullNode
+  include JSON::Serializable
+
+end
+
 class Nullptr
   include JSON::Serializable
 
@@ -1717,6 +1782,11 @@ class ObjectMapper
 
 end
 
+class ObjectNode
+  include JSON::Serializable
+
+end
+
 class Oneway
   include JSON::Serializable
 
@@ -1947,6 +2017,11 @@ class Sendable
 
 end
 
+class SerializationFeature
+  include JSON::Serializable
+
+end
+
 class Serialize
   include JSON::Serializable
 
@@ -2052,6 +2127,11 @@ class Template
 
 end
 
+class TextNode
+  include JSON::Serializable
+
+end
+
 class This
   include JSON::Serializable
 
@@ -2459,6 +2539,8 @@ alias UnionAny = AnyClass | Float64
 
 alias UnionArray = ArrayClass | Float64
 
+alias UnionArrayNode = ArrayNode | Float64
+
 alias UnionAssert = Assert | Float64
 
 alias UnionAssociatedtype = Associatedtype | Float64
@@ -2489,6 +2571,8 @@ alias UnionBool = BoolClass | Float64
 
 alias UnionBoolean = Boolean | Float64
 
+alias UnionBooleanNode = BooleanNode | Float64
+
 alias UnionBycopy = Bycopy | Float64
 
 alias UnionByref = Byref | Float64
@@ -2589,6 +2673,8 @@ alias UnionDelegate = Delegate | Float64
 
 alias UnionDelete = Delete | Float64
 
+alias UnionDeserializationFeature = DeserializationFeature | Float64
+
 alias UnionDict = Dict | Float64
 
 alias UnionDictionary = Dictionary | Float64
@@ -2597,6 +2683,8 @@ alias UnionDidSet = DidSet | Float64
 
 alias UnionDouble = Float64 | Double
 
+alias UnionDoubleNode = Float64 | DoubleNode
+
 alias UnionDynamic = Float64 | Dynamic
 
 alias UnionDynamicCast = Float64 | DynamicCast
@@ -2703,6 +2791,8 @@ alias UnionInstanceof = Float64 | Instanceof
 
 alias UnionInt = Float64 | IntClass
 
+alias UnionIntNode = Float64 | IntNode
+
 alias UnionInterface = Float64 | Interface
 
 alias UnionInternal = Float64 | Internal
@@ -2767,6 +2857,8 @@ alias UnionLock = Float64 | Lock
 
 alias UnionLong = Float64 | Long
 
+alias UnionLongNode = Float64 | LongNode
+
 alias UnionMap = Float64 | Map
 
 alias UnionMapEntry = Float64 | MapEntry
@@ -2811,6 +2903,8 @@ alias UnionNsString = Float64 | NsString
 
 alias UnionNull = Float64 | Null
 
+alias UnionNullNode = Float64 | NullNode
+
 alias UnionNullptr = Float64 | Nullptr
 
 alias UnionNumber = Float64 | NumberClass
@@ -2819,6 +2913,8 @@ alias UnionObject = Float64 | ObjectClass
 
 alias UnionObjectMapper = Float64 | ObjectMapper
 
+alias UnionObjectNode = Float64 | ObjectNode
+
 alias UnionOneway = Float64 | Oneway
 
 alias UnionOpen = Float64 | Open
@@ -2911,6 +3007,8 @@ alias UnionSel = Float64 | Sel
 
 alias UnionSendable = Float64 | Sendable
 
+alias UnionSerializationFeature = Float64 | SerializationFeature
+
 alias UnionSerialize = Float64 | Serialize
 
 alias UnionSerializerProvider = Float64 | SerializerProvider
@@ -2953,6 +3051,8 @@ alias UnionSystem = Float64 | SystemClass
 
 alias UnionTemplate = Float64 | Template
 
+alias UnionTextNode = Float64 | TextNode
+
 alias UnionThis = Float64 | This
 
 alias UnionThreadLocal = Float64 | ThreadLocalClass
diff --git a/base/schema-csharp/test/inputs/schema/direct-union.schema/default/QuickType.cs b/head/schema-csharp/test/inputs/schema/direct-union.schema/default/QuickType.cs
index 1ee8825..c683167 100644
--- a/base/schema-csharp/test/inputs/schema/direct-union.schema/default/QuickType.cs
+++ b/head/schema-csharp/test/inputs/schema/direct-union.schema/default/QuickType.cs
@@ -25,8 +25,60 @@ namespace QuickType
 
     public partial class TopLevel
     {
+        [JsonProperty("arrayNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public ArrayNode? ArrayNode { get; set; }
+
+        [JsonProperty("booleanNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public BooleanNode? BooleanNode { get; set; }
+
+        [JsonProperty("doubleNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public DoubleNode? DoubleNode { get; set; }
+
+        [JsonProperty("intNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public IntNode? IntNode { get; set; }
+
+        [JsonProperty("longNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public LongNode? LongNode { get; set; }
+
+        [JsonProperty("nullNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public NullNode? NullNode { get; set; }
+
+        [JsonProperty("objectNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public ObjectNode? ObjectNode { get; set; }
+
         [JsonProperty("stuff", Required = Required.Always)]
         public Dictionary<string, Thing> Stuff { get; set; }
+
+        [JsonProperty("textNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public TextNode? TextNode { get; set; }
+    }
+
+    public partial class ArrayNode
+    {
+    }
+
+    public partial class BooleanNode
+    {
+    }
+
+    public partial class DoubleNode
+    {
+    }
+
+    public partial class IntNode
+    {
+    }
+
+    public partial class LongNode
+    {
+    }
+
+    public partial class NullNode
+    {
+    }
+
+    public partial class ObjectNode
+    {
     }
 
     public partial class Thing
@@ -38,6 +90,10 @@ namespace QuickType
         public Anything ThingRequired { get; set; }
     }
 
+    public partial class TextNode
+    {
+    }
+
     public partial struct Anything
     {
         public object[]? AnythingArray;
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..8e9468e 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, ArrayNode, Array, As, Asm, Assert, Associatedtype, Associativity, Async, Atomic, AtomicCancel, AtomicCommit, AtomicNoexcept, Auto, Await, Base, Bitand, Bitor, EnumBool, PurpleBool, Boolean, BooleanNode, 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, DeserializationFeature, Decltype, DecodeString, Decoder, DecodingError, Def, Default, Defer, Deinit, Del, Delegate, Delete, Dict, Dictionary, DidSet, Do, Double, DoubleNode, 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, IntNode, 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, LongNode, Locale, Lock, Long, Map, MapEntry, MetadataPropertyHandling, Module, Mutable, Mutating, Namespace, Native, New, Newtonsoft, Nil, NullNode, No, Noexcept, Nonatomic, None, EnumNone, Nonlocal, Nonmutating, NsObject, NoSuchMethod, Not, NotEq, NsError, NsString, Null, EnumNull, Nullptr, Number, Object, ObjectNode, 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, SerializationFeature, 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, TextNode, 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 partial class TopLevel
     {
@@ -87,6 +87,8 @@ namespace QuickType
                     return Enum.Any;
                 case "Any":
                     return Enum.EnumAny;
+                case "ArrayNode":
+                    return Enum.ArrayNode;
                 case "array":
                     return Enum.Array;
                 case "as":
@@ -125,6 +127,8 @@ namespace QuickType
                     return Enum.PurpleBool;
                 case "boolean":
                     return Enum.Boolean;
+                case "BooleanNode":
+                    return Enum.BooleanNode;
                 case "break":
                     return Enum.Break;
                 case "bycopy":
@@ -211,6 +215,8 @@ namespace QuickType
                     return Enum.Decimal;
                 case "declare":
                     return Enum.Declare;
+                case "DeserializationFeature":
+                    return Enum.DeserializationFeature;
                 case "decltype":
                     return Enum.Decltype;
                 case "decode_string":
@@ -243,6 +249,8 @@ namespace QuickType
                     return Enum.Do;
                 case "double":
                     return Enum.Double;
+                case "DoubleNode":
+                    return Enum.DoubleNode;
                 case "dynamic":
                     return Enum.Dynamic;
                 case "dynamic_cast":
@@ -359,6 +367,8 @@ namespace QuickType
                     return Enum.Instanceof;
                 case "int":
                     return Enum.Int;
+                case "IntNode":
+                    return Enum.IntNode;
                 case "interface":
                     return Enum.Interface;
                 case "internal":
@@ -417,6 +427,8 @@ namespace QuickType
                     return Enum.Let;
                 case "list":
                     return Enum.List;
+                case "LongNode":
+                    return Enum.LongNode;
                 case "Locale":
                     return Enum.Locale;
                 case "lock":
@@ -445,6 +457,8 @@ namespace QuickType
                     return Enum.Newtonsoft;
                 case "nil":
                     return Enum.Nil;
+                case "NullNode":
+                    return Enum.NullNode;
                 case "NO":
                     return Enum.No;
                 case "noexcept":
@@ -481,6 +495,8 @@ namespace QuickType
                     return Enum.Number;
                 case "object":
                     return Enum.Object;
+                case "ObjectNode":
+                    return Enum.ObjectNode;
                 case "ObjectMapper":
                     return Enum.ObjectMapper;
                 case "of":
@@ -585,6 +601,8 @@ namespace QuickType
                     return Enum.Sendable;
                 case "serialize":
                     return Enum.Serialize;
+                case "SerializationFeature":
+                    return Enum.SerializationFeature;
                 case "SerializerProvider":
                     return Enum.SerializerProvider;
                 case "set":
@@ -635,6 +653,8 @@ namespace QuickType
                     return Enum.Then;
                 case "this":
                     return Enum.This;
+                case "TextNode":
+                    return Enum.TextNode;
                 case "thread_local":
                     return Enum.ThreadLocal;
                 case "throw":
@@ -778,6 +798,9 @@ namespace QuickType
                 case Enum.EnumAny:
                     serializer.Serialize(writer, "Any");
                     return;
+                case Enum.ArrayNode:
+                    serializer.Serialize(writer, "ArrayNode");
+                    return;
                 case Enum.Array:
                     serializer.Serialize(writer, "array");
                     return;
@@ -835,6 +858,9 @@ namespace QuickType
                 case Enum.Boolean:
                     serializer.Serialize(writer, "boolean");
                     return;
+                case Enum.BooleanNode:
+                    serializer.Serialize(writer, "BooleanNode");
+                    return;
                 case Enum.Break:
                     serializer.Serialize(writer, "break");
                     return;
@@ -964,6 +990,9 @@ namespace QuickType
                 case Enum.Declare:
                     serializer.Serialize(writer, "declare");
                     return;
+                case Enum.DeserializationFeature:
+                    serializer.Serialize(writer, "DeserializationFeature");
+                    return;
                 case Enum.Decltype:
                     serializer.Serialize(writer, "decltype");
                     return;
@@ -1012,6 +1041,9 @@ namespace QuickType
                 case Enum.Double:
                     serializer.Serialize(writer, "double");
                     return;
+                case Enum.DoubleNode:
+                    serializer.Serialize(writer, "DoubleNode");
+                    return;
                 case Enum.Dynamic:
                     serializer.Serialize(writer, "dynamic");
                     return;
@@ -1186,6 +1218,9 @@ namespace QuickType
                 case Enum.Int:
                     serializer.Serialize(writer, "int");
                     return;
+                case Enum.IntNode:
+                    serializer.Serialize(writer, "IntNode");
+                    return;
                 case Enum.Interface:
                     serializer.Serialize(writer, "interface");
                     return;
@@ -1273,6 +1308,9 @@ namespace QuickType
                 case Enum.List:
                     serializer.Serialize(writer, "list");
                     return;
+                case Enum.LongNode:
+                    serializer.Serialize(writer, "LongNode");
+                    return;
                 case Enum.Locale:
                     serializer.Serialize(writer, "Locale");
                     return;
@@ -1315,6 +1353,9 @@ namespace QuickType
                 case Enum.Nil:
                     serializer.Serialize(writer, "nil");
                     return;
+                case Enum.NullNode:
+                    serializer.Serialize(writer, "NullNode");
+                    return;
                 case Enum.No:
                     serializer.Serialize(writer, "NO");
                     return;
@@ -1369,6 +1410,9 @@ namespace QuickType
                 case Enum.Object:
                     serializer.Serialize(writer, "object");
                     return;
+                case Enum.ObjectNode:
+                    serializer.Serialize(writer, "ObjectNode");
+                    return;
                 case Enum.ObjectMapper:
                     serializer.Serialize(writer, "ObjectMapper");
                     return;
@@ -1525,6 +1569,9 @@ namespace QuickType
                 case Enum.Serialize:
                     serializer.Serialize(writer, "serialize");
                     return;
+                case Enum.SerializationFeature:
+                    serializer.Serialize(writer, "SerializationFeature");
+                    return;
                 case Enum.SerializerProvider:
                     serializer.Serialize(writer, "SerializerProvider");
                     return;
@@ -1600,6 +1647,9 @@ namespace QuickType
                 case Enum.This:
                     serializer.Serialize(writer, "this");
                     return;
+                case Enum.TextNode:
+                    serializer.Serialize(writer, "TextNode");
+                    return;
                 case Enum.ThreadLocal:
                     serializer.Serialize(writer, "thread_local");
                     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..9f2d1ca 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
@@ -61,6 +61,9 @@ namespace QuickType
         [JsonProperty("array", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionArray? Array { get; set; }
 
+        [JsonProperty("ArrayNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionArrayNode? ArrayNode { get; set; }
+
         [JsonProperty("as", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionAs? As { get; set; }
 
@@ -115,6 +118,9 @@ namespace QuickType
         [JsonProperty("boolean", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionBoolean? Boolean { get; set; }
 
+        [JsonProperty("BooleanNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionBooleanNode? BooleanNode { get; set; }
+
         [JsonProperty("break", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionBreak? Break { get; set; }
 
@@ -277,6 +283,9 @@ namespace QuickType
         [JsonProperty("delete", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionDelete? Delete { get; set; }
 
+        [JsonProperty("DeserializationFeature", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionDeserializationFeature? DeserializationFeature { get; set; }
+
         [JsonProperty("dict", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionDict? Dict { get; set; }
 
@@ -292,6 +301,9 @@ namespace QuickType
         [JsonProperty("double", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionDouble? Double { get; set; }
 
+        [JsonProperty("DoubleNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionDoubleNode? DoubleNode { get; set; }
+
         [JsonProperty("dummy", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public double? Dummy { get; set; }
 
@@ -475,6 +487,9 @@ namespace QuickType
         [JsonProperty("internal", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionInternal? Internal { get; set; }
 
+        [JsonProperty("IntNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionIntNode? IntNode { get; set; }
+
         [JsonProperty("is", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionIs? Is { get; set; }
 
@@ -565,6 +580,9 @@ namespace QuickType
         [JsonProperty("long", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionLong? Long { get; set; }
 
+        [JsonProperty("LongNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionLongNode? LongNode { get; set; }
+
         [JsonProperty("map", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionMap? Map { get; set; }
 
@@ -643,6 +661,9 @@ namespace QuickType
         [JsonProperty("null", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionNullUnion? TopLevelNull { get; set; }
 
+        [JsonProperty("NullNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionNullNode? NullNode { get; set; }
+
         [JsonProperty("nullptr", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionNullptr? Nullptr { get; set; }
 
@@ -655,6 +676,9 @@ namespace QuickType
         [JsonProperty("ObjectMapper", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionObjectMapper? ObjectMapper { get; set; }
 
+        [JsonProperty("ObjectNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionObjectNode? ObjectNode { get; set; }
+
         [JsonProperty("of", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionOf? Of { get; set; }
 
@@ -805,6 +829,9 @@ namespace QuickType
         [JsonProperty("Sendable", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionSendable? Sendable { get; set; }
 
+        [JsonProperty("SerializationFeature", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionSerializationFeature? SerializationFeature { get; set; }
+
         [JsonProperty("serialize", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionSerialize? Serialize { get; set; }
 
@@ -877,6 +904,9 @@ namespace QuickType
         [JsonProperty("template", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionTemplate? Template { get; set; }
 
+        [JsonProperty("TextNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionTextNode? TextNode { get; set; }
+
         [JsonProperty("then", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionThen? Then { get; set; }
 
@@ -1053,6 +1083,10 @@ namespace QuickType
     {
     }
 
+    public partial class ArrayNode
+    {
+    }
+
     public partial class As
     {
     }
@@ -1121,6 +1155,10 @@ namespace QuickType
     {
     }
 
+    public partial class BooleanNode
+    {
+    }
+
     public partial class Break
     {
     }
@@ -1337,6 +1375,10 @@ namespace QuickType
     {
     }
 
+    public partial class DeserializationFeature
+    {
+    }
+
     public partial class Dict
     {
     }
@@ -1357,6 +1399,10 @@ namespace QuickType
     {
     }
 
+    public partial class DoubleNode
+    {
+    }
+
     public partial class Dynamic
     {
     }
@@ -1589,6 +1635,10 @@ namespace QuickType
     {
     }
 
+    public partial class IntNode
+    {
+    }
+
     public partial class Interface
     {
     }
@@ -1717,6 +1767,10 @@ namespace QuickType
     {
     }
 
+    public partial class LongNode
+    {
+    }
+
     public partial class Map
     {
     }
@@ -1813,6 +1867,10 @@ namespace QuickType
     {
     }
 
+    public partial class NullNode
+    {
+    }
+
     public partial class Nullptr
     {
     }
@@ -1829,6 +1887,10 @@ namespace QuickType
     {
     }
 
+    public partial class ObjectNode
+    {
+    }
+
     public partial class Of
     {
     }
@@ -2021,6 +2083,10 @@ namespace QuickType
     {
     }
 
+    public partial class SerializationFeature
+    {
+    }
+
     public partial class SerializeClass
     {
     }
@@ -2117,6 +2183,10 @@ namespace QuickType
     {
     }
 
+    public partial class TextNode
+    {
+    }
+
     public partial class Then
     {
     }
@@ -2416,6 +2486,15 @@ namespace QuickType
         public static implicit operator UnionArray(double Double) => new UnionArray { Double = Double };
     }
 
+    public partial struct UnionArrayNode
+    {
+        public ArrayNode? ArrayNode;
+        public double? Double;
+
+        public static implicit operator UnionArrayNode(ArrayNode ArrayNode) => new UnionArrayNode { ArrayNode = ArrayNode };
+        public static implicit operator UnionArrayNode(double Double) => new UnionArrayNode { Double = Double };
+    }
+
     public partial struct UnionAs
     {
         public As? As;
@@ -2569,6 +2648,15 @@ namespace QuickType
         public static implicit operator UnionBoolean(double Double) => new UnionBoolean { Double = Double };
     }
 
+    public partial struct UnionBooleanNode
+    {
+        public BooleanNode? BooleanNode;
+        public double? Double;
+
+        public static implicit operator UnionBooleanNode(BooleanNode BooleanNode) => new UnionBooleanNode { BooleanNode = BooleanNode };
+        public static implicit operator UnionBooleanNode(double Double) => new UnionBooleanNode { Double = Double };
+    }
+
     public partial struct UnionBreak
     {
         public Break? Break;
@@ -3055,6 +3143,15 @@ namespace QuickType
         public static implicit operator UnionDelete(double Double) => new UnionDelete { Double = Double };
     }
 
+    public partial struct UnionDeserializationFeature
+    {
+        public DeserializationFeature? DeserializationFeature;
+        public double? Double;
+
+        public static implicit operator UnionDeserializationFeature(DeserializationFeature DeserializationFeature) => new UnionDeserializationFeature { DeserializationFeature = DeserializationFeature };
+        public static implicit operator UnionDeserializationFeature(double Double) => new UnionDeserializationFeature { Double = Double };
+    }
+
     public partial struct UnionDict
     {
         public Dict? Dict;
@@ -3100,6 +3197,15 @@ namespace QuickType
         public static implicit operator UnionDouble(Double PurpleDouble) => new UnionDouble { PurpleDouble = PurpleDouble };
     }
 
+    public partial struct UnionDoubleNode
+    {
+        public double? Double;
+        public DoubleNode? DoubleNode;
+
+        public static implicit operator UnionDoubleNode(double Double) => new UnionDoubleNode { Double = Double };
+        public static implicit operator UnionDoubleNode(DoubleNode DoubleNode) => new UnionDoubleNode { DoubleNode = DoubleNode };
+    }
+
     public partial struct UnionDynamic
     {
         public double? Double;
@@ -3622,6 +3728,15 @@ namespace QuickType
         public static implicit operator UnionInt(Int Int) => new UnionInt { Int = Int };
     }
 
+    public partial struct UnionIntNode
+    {
+        public double? Double;
+        public IntNode? IntNode;
+
+        public static implicit operator UnionIntNode(double Double) => new UnionIntNode { Double = Double };
+        public static implicit operator UnionIntNode(IntNode IntNode) => new UnionIntNode { IntNode = IntNode };
+    }
+
     public partial struct UnionInterface
     {
         public double? Double;
@@ -3910,6 +4025,15 @@ namespace QuickType
         public static implicit operator UnionLong(Long Long) => new UnionLong { Long = Long };
     }
 
+    public partial struct UnionLongNode
+    {
+        public double? Double;
+        public LongNode? LongNode;
+
+        public static implicit operator UnionLongNode(double Double) => new UnionLongNode { Double = Double };
+        public static implicit operator UnionLongNode(LongNode LongNode) => new UnionLongNode { LongNode = LongNode };
+    }
+
     public partial struct UnionMap
     {
         public double? Double;
@@ -4126,6 +4250,15 @@ namespace QuickType
         public static implicit operator UnionNull(Null Null) => new UnionNull { Null = Null };
     }
 
+    public partial struct UnionNullNode
+    {
+        public double? Double;
+        public NullNode? NullNode;
+
+        public static implicit operator UnionNullNode(double Double) => new UnionNullNode { Double = Double };
+        public static implicit operator UnionNullNode(NullNode NullNode) => new UnionNullNode { NullNode = NullNode };
+    }
+
     public partial struct UnionNullptr
     {
         public double? Double;
@@ -4162,6 +4295,15 @@ namespace QuickType
         public static implicit operator UnionObjectMapper(ObjectMapper ObjectMapper) => new UnionObjectMapper { ObjectMapper = ObjectMapper };
     }
 
+    public partial struct UnionObjectNode
+    {
+        public double? Double;
+        public ObjectNode? ObjectNode;
+
+        public static implicit operator UnionObjectNode(double Double) => new UnionObjectNode { Double = Double };
+        public static implicit operator UnionObjectNode(ObjectNode ObjectNode) => new UnionObjectNode { ObjectNode = ObjectNode };
+    }
+
     public partial struct UnionOf
     {
         public double? Double;
@@ -4594,6 +4736,15 @@ namespace QuickType
         public static implicit operator UnionSendable(Sendable Sendable) => new UnionSendable { Sendable = Sendable };
     }
 
+    public partial struct UnionSerializationFeature
+    {
+        public double? Double;
+        public SerializationFeature? SerializationFeature;
+
+        public static implicit operator UnionSerializationFeature(double Double) => new UnionSerializationFeature { Double = Double };
+        public static implicit operator UnionSerializationFeature(SerializationFeature SerializationFeature) => new UnionSerializationFeature { SerializationFeature = SerializationFeature };
+    }
+
     public partial struct UnionSerialize
     {
         public double? Double;
@@ -4810,6 +4961,15 @@ namespace QuickType
         public static implicit operator UnionTemplate(Template Template) => new UnionTemplate { Template = Template };
     }
 
+    public partial struct UnionTextNode
+    {
+        public double? Double;
+        public TextNode? TextNode;
+
+        public static implicit operator UnionTextNode(double Double) => new UnionTextNode { Double = Double };
+        public static implicit operator UnionTextNode(TextNode TextNode) => new UnionTextNode { TextNode = TextNode };
+    }
+
     public partial struct UnionThen
     {
         public double? Double;
@@ -5360,7 +5520,9 @@ namespace QuickType
             Converters =
             {
                 UnionAnyConverter.Singleton,
+                UnionArrayNodeConverter.Singleton,
                 UnionBoolConverter.Singleton,
+                UnionBooleanNodeConverter.Singleton,
                 UnionCalendarConverter.Singleton,
                 UnionClassConverter.Singleton,
                 UnionCodableConverter.Singleton,
@@ -5374,6 +5536,8 @@ namespace QuickType
                 UnionDateTimeStylesConverter.Singleton,
                 UnionDecoderConverter.Singleton,
                 UnionDecodingErrorConverter.Singleton,
+                UnionDeserializationFeatureConverter.Singleton,
+                UnionDoubleNodeConverter.Singleton,
                 UnionEncoderConverter.Singleton,
                 UnionEnumValuesConverter.Singleton,
                 UnionEquatableConverter.Singleton,
@@ -5382,6 +5546,7 @@ namespace QuickType
                 UnionHashableConverter.Singleton,
                 UnionHasherConverter.Singleton,
                 UnionImpConverter.Singleton,
+                UnionIntNodeConverter.Singleton,
                 UnionIsoDateTimeOffsetConverterConverter.Singleton,
                 UnionJsonAnyConverter.Singleton,
                 UnionJsonCodingKeyConverter.Singleton,
@@ -5395,6 +5560,7 @@ namespace QuickType
                 UnionJsonReaderConverter.Singleton,
                 UnionJsonTokenTypeConverter.Singleton,
                 UnionLocaleConverter.Singleton,
+                UnionLongNodeConverter.Singleton,
                 UnionMapEntryConverter.Singleton,
                 UnionNoConverter.Singleton,
                 UnionNsErrorConverter.Singleton,
@@ -5402,17 +5568,21 @@ namespace QuickType
                 UnionNsStringConverter.Singleton,
                 UnionNullConverter.Singleton,
                 UnionNoneConverter.Singleton,
+                UnionNullNodeConverter.Singleton,
                 UnionObjectMapperConverter.Singleton,
+                UnionObjectNodeConverter.Singleton,
                 UnionProtocolConverter.Singleton,
                 UnionRegExpConverter.Singleton,
                 UnionSelConverter.Singleton,
                 UnionSelfConverter.Singleton,
                 UnionSendableConverter.Singleton,
+                UnionSerializationFeatureConverter.Singleton,
                 UnionSerializerProviderConverter.Singleton,
                 UnionSimpleModuleConverter.Singleton,
                 UnionStandardsConverter.Singleton,
                 UnionStdDeserializerConverter.Singleton,
                 UnionStdSerializerConverter.Singleton,
+                UnionTextNodeConverter.Singleton,
                 PurpleUnionTimeOnlyConverter.Singleton,
                 UnionTimeOnlyConverterConverter.Singleton,
                 UnionTimeZoneConverter.Singleton,
@@ -5734,6 +5904,44 @@ namespace QuickType
         public static readonly UnionAnyConverter Singleton = new UnionAnyConverter();
     }
 
+    internal class UnionArrayNodeConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionArrayNode) || t == typeof(UnionArrayNode?);
+
+        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 UnionArrayNode { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<ArrayNode>(reader);
+                    return new UnionArrayNode { ArrayNode = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionArrayNode");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionArrayNode)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.ArrayNode != null)
+            {
+                serializer.Serialize(writer, value.ArrayNode);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionArrayNode");
+        }
+
+        public static readonly UnionArrayNodeConverter Singleton = new UnionArrayNodeConverter();
+    }
+
     internal class UnionBoolConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionBool) || t == typeof(UnionBool?);
@@ -5772,6 +5980,44 @@ namespace QuickType
         public static readonly UnionBoolConverter Singleton = new UnionBoolConverter();
     }
 
+    internal class UnionBooleanNodeConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionBooleanNode) || t == typeof(UnionBooleanNode?);
+
+        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 UnionBooleanNode { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<BooleanNode>(reader);
+                    return new UnionBooleanNode { BooleanNode = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionBooleanNode");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionBooleanNode)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.BooleanNode != null)
+            {
+                serializer.Serialize(writer, value.BooleanNode);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionBooleanNode");
+        }
+
+        public static readonly UnionBooleanNodeConverter Singleton = new UnionBooleanNodeConverter();
+    }
+
     internal class UnionCalendarConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionCalendar) || t == typeof(UnionCalendar?);
@@ -6266,6 +6512,82 @@ namespace QuickType
         public static readonly UnionDecodingErrorConverter Singleton = new UnionDecodingErrorConverter();
     }
 
+    internal class UnionDeserializationFeatureConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionDeserializationFeature) || t == typeof(UnionDeserializationFeature?);
+
+        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 UnionDeserializationFeature { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<DeserializationFeature>(reader);
+                    return new UnionDeserializationFeature { DeserializationFeature = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionDeserializationFeature");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionDeserializationFeature)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.DeserializationFeature != null)
+            {
+                serializer.Serialize(writer, value.DeserializationFeature);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionDeserializationFeature");
+        }
+
+        public static readonly UnionDeserializationFeatureConverter Singleton = new UnionDeserializationFeatureConverter();
+    }
+
+    internal class UnionDoubleNodeConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionDoubleNode) || t == typeof(UnionDoubleNode?);
+
+        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 UnionDoubleNode { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<DoubleNode>(reader);
+                    return new UnionDoubleNode { DoubleNode = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionDoubleNode");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionDoubleNode)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.DoubleNode != null)
+            {
+                serializer.Serialize(writer, value.DoubleNode);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionDoubleNode");
+        }
+
+        public static readonly UnionDoubleNodeConverter Singleton = new UnionDoubleNodeConverter();
+    }
+
     internal class UnionEncoderConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionEncoder) || t == typeof(UnionEncoder?);
@@ -6570,6 +6892,44 @@ namespace QuickType
         public static readonly UnionImpConverter Singleton = new UnionImpConverter();
     }
 
+    internal class UnionIntNodeConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionIntNode) || t == typeof(UnionIntNode?);
+
+        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 UnionIntNode { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<IntNode>(reader);
+                    return new UnionIntNode { IntNode = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionIntNode");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionIntNode)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.IntNode != null)
+            {
+                serializer.Serialize(writer, value.IntNode);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionIntNode");
+        }
+
+        public static readonly UnionIntNodeConverter Singleton = new UnionIntNodeConverter();
+    }
+
     internal class UnionIsoDateTimeOffsetConverterConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionIsoDateTimeOffsetConverter) || t == typeof(UnionIsoDateTimeOffsetConverter?);
@@ -7064,6 +7424,44 @@ namespace QuickType
         public static readonly UnionLocaleConverter Singleton = new UnionLocaleConverter();
     }
 
+    internal class UnionLongNodeConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionLongNode) || t == typeof(UnionLongNode?);
+
+        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 UnionLongNode { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<LongNode>(reader);
+                    return new UnionLongNode { LongNode = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionLongNode");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionLongNode)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.LongNode != null)
+            {
+                serializer.Serialize(writer, value.LongNode);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionLongNode");
+        }
+
+        public static readonly UnionLongNodeConverter Singleton = new UnionLongNodeConverter();
+    }
+
     internal class UnionMapEntryConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionMapEntry) || t == typeof(UnionMapEntry?);
@@ -7330,6 +7728,44 @@ namespace QuickType
         public static readonly UnionNoneConverter Singleton = new UnionNoneConverter();
     }
 
+    internal class UnionNullNodeConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionNullNode) || t == typeof(UnionNullNode?);
+
+        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 UnionNullNode { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<NullNode>(reader);
+                    return new UnionNullNode { NullNode = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionNullNode");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionNullNode)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.NullNode != null)
+            {
+                serializer.Serialize(writer, value.NullNode);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionNullNode");
+        }
+
+        public static readonly UnionNullNodeConverter Singleton = new UnionNullNodeConverter();
+    }
+
     internal class UnionObjectMapperConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionObjectMapper) || t == typeof(UnionObjectMapper?);
@@ -7368,6 +7804,44 @@ namespace QuickType
         public static readonly UnionObjectMapperConverter Singleton = new UnionObjectMapperConverter();
     }
 
+    internal class UnionObjectNodeConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionObjectNode) || t == typeof(UnionObjectNode?);
+
+        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 UnionObjectNode { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<ObjectNode>(reader);
+                    return new UnionObjectNode { ObjectNode = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionObjectNode");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionObjectNode)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.ObjectNode != null)
+            {
+                serializer.Serialize(writer, value.ObjectNode);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionObjectNode");
+        }
+
+        public static readonly UnionObjectNodeConverter Singleton = new UnionObjectNodeConverter();
+    }
+
     internal class UnionProtocolConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionProtocol) || t == typeof(UnionProtocol?);
@@ -7558,6 +8032,44 @@ namespace QuickType
         public static readonly UnionSendableConverter Singleton = new UnionSendableConverter();
     }
 
+    internal class UnionSerializationFeatureConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionSerializationFeature) || t == typeof(UnionSerializationFeature?);
+
+        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 UnionSerializationFeature { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<SerializationFeature>(reader);
+                    return new UnionSerializationFeature { SerializationFeature = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionSerializationFeature");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionSerializationFeature)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.SerializationFeature != null)
+            {
+                serializer.Serialize(writer, value.SerializationFeature);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionSerializationFeature");
+        }
+
+        public static readonly UnionSerializationFeatureConverter Singleton = new UnionSerializationFeatureConverter();
+    }
+
     internal class UnionSerializerProviderConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionSerializerProvider) || t == typeof(UnionSerializerProvider?);
@@ -7748,6 +8260,44 @@ namespace QuickType
         public static readonly UnionStdSerializerConverter Singleton = new UnionStdSerializerConverter();
     }
 
+    internal class UnionTextNodeConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionTextNode) || t == typeof(UnionTextNode?);
+
+        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 UnionTextNode { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<TextNode>(reader);
+                    return new UnionTextNode { TextNode = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionTextNode");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionTextNode)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.TextNode != null)
+            {
+                serializer.Serialize(writer, value.TextNode);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionTextNode");
+        }
+
+        public static readonly UnionTextNodeConverter Singleton = new UnionTextNodeConverter();
+    }
+
     internal class PurpleUnionTimeOnlyConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionTimeOnly) || t == typeof(UnionTimeOnly?);
diff --git a/base/schema-csharp-SystemTextJson/test/inputs/schema/direct-union.schema/default/QuickType.cs b/head/schema-csharp-SystemTextJson/test/inputs/schema/direct-union.schema/default/QuickType.cs
index c2cef8c..afd727c 100644
--- a/base/schema-csharp-SystemTextJson/test/inputs/schema/direct-union.schema/default/QuickType.cs
+++ b/head/schema-csharp-SystemTextJson/test/inputs/schema/direct-union.schema/default/QuickType.cs
@@ -22,9 +22,69 @@ namespace QuickType
 
     public partial class TopLevel
     {
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("arrayNode")]
+        public ArrayNode? ArrayNode { get; set; }
+
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("booleanNode")]
+        public BooleanNode? BooleanNode { get; set; }
+
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("doubleNode")]
+        public DoubleNode? DoubleNode { get; set; }
+
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("intNode")]
+        public IntNode? IntNode { get; set; }
+
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("longNode")]
+        public LongNode? LongNode { get; set; }
+
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("nullNode")]
+        public NullNode? NullNode { get; set; }
+
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("objectNode")]
+        public ObjectNode? ObjectNode { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("stuff")]
         public Dictionary<string, Thing> Stuff { get; set; }
+
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("textNode")]
+        public TextNode? TextNode { get; set; }
+    }
+
+    public partial class ArrayNode
+    {
+    }
+
+    public partial class BooleanNode
+    {
+    }
+
+    public partial class DoubleNode
+    {
+    }
+
+    public partial class IntNode
+    {
+    }
+
+    public partial class LongNode
+    {
+    }
+
+    public partial class NullNode
+    {
+    }
+
+    public partial class ObjectNode
+    {
     }
 
     public partial class Thing
@@ -37,6 +97,10 @@ namespace QuickType
         public Anything ThingRequired { get; set; }
     }
 
+    public partial class TextNode
+    {
+    }
+
     public partial struct Anything
     {
         public object[]? AnythingArray;
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..7df1ec3 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, ArrayNode, Array, As, Asm, Assert, Associatedtype, Associativity, Async, Atomic, AtomicCancel, AtomicCommit, AtomicNoexcept, Auto, Await, Base, Bitand, Bitor, EnumBool, PurpleBool, Boolean, BooleanNode, 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, DeserializationFeature, Decltype, DecodeString, Decoder, DecodingError, Def, Default, Defer, Deinit, Del, Delegate, Delete, Dict, Dictionary, DidSet, Do, Double, DoubleNode, 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, IntNode, 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, LongNode, Locale, Lock, Long, Map, MapEntry, MetadataPropertyHandling, Module, Mutable, Mutating, Namespace, Native, New, Newtonsoft, Nil, NullNode, No, Noexcept, Nonatomic, None, EnumNone, Nonlocal, Nonmutating, NsObject, NoSuchMethod, Not, NotEq, NsError, NsString, Null, EnumNull, Nullptr, Number, Object, ObjectNode, 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, SerializationFeature, 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, TextNode, 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 partial class TopLevel
     {
@@ -84,6 +84,8 @@ namespace QuickType
                     return Enum.Any;
                 case "Any":
                     return Enum.EnumAny;
+                case "ArrayNode":
+                    return Enum.ArrayNode;
                 case "array":
                     return Enum.Array;
                 case "as":
@@ -122,6 +124,8 @@ namespace QuickType
                     return Enum.PurpleBool;
                 case "boolean":
                     return Enum.Boolean;
+                case "BooleanNode":
+                    return Enum.BooleanNode;
                 case "break":
                     return Enum.Break;
                 case "bycopy":
@@ -208,6 +212,8 @@ namespace QuickType
                     return Enum.Decimal;
                 case "declare":
                     return Enum.Declare;
+                case "DeserializationFeature":
+                    return Enum.DeserializationFeature;
                 case "decltype":
                     return Enum.Decltype;
                 case "decode_string":
@@ -240,6 +246,8 @@ namespace QuickType
                     return Enum.Do;
                 case "double":
                     return Enum.Double;
+                case "DoubleNode":
+                    return Enum.DoubleNode;
                 case "dynamic":
                     return Enum.Dynamic;
                 case "dynamic_cast":
@@ -356,6 +364,8 @@ namespace QuickType
                     return Enum.Instanceof;
                 case "int":
                     return Enum.Int;
+                case "IntNode":
+                    return Enum.IntNode;
                 case "interface":
                     return Enum.Interface;
                 case "internal":
@@ -414,6 +424,8 @@ namespace QuickType
                     return Enum.Let;
                 case "list":
                     return Enum.List;
+                case "LongNode":
+                    return Enum.LongNode;
                 case "Locale":
                     return Enum.Locale;
                 case "lock":
@@ -442,6 +454,8 @@ namespace QuickType
                     return Enum.Newtonsoft;
                 case "nil":
                     return Enum.Nil;
+                case "NullNode":
+                    return Enum.NullNode;
                 case "NO":
                     return Enum.No;
                 case "noexcept":
@@ -478,6 +492,8 @@ namespace QuickType
                     return Enum.Number;
                 case "object":
                     return Enum.Object;
+                case "ObjectNode":
+                    return Enum.ObjectNode;
                 case "ObjectMapper":
                     return Enum.ObjectMapper;
                 case "of":
@@ -582,6 +598,8 @@ namespace QuickType
                     return Enum.Sendable;
                 case "serialize":
                     return Enum.Serialize;
+                case "SerializationFeature":
+                    return Enum.SerializationFeature;
                 case "SerializerProvider":
                     return Enum.SerializerProvider;
                 case "set":
@@ -632,6 +650,8 @@ namespace QuickType
                     return Enum.Then;
                 case "this":
                     return Enum.This;
+                case "TextNode":
+                    return Enum.TextNode;
                 case "thread_local":
                     return Enum.ThreadLocal;
                 case "throw":
@@ -769,6 +789,9 @@ namespace QuickType
                 case Enum.EnumAny:
                     JsonSerializer.Serialize(writer, "Any", options);
                     return;
+                case Enum.ArrayNode:
+                    JsonSerializer.Serialize(writer, "ArrayNode", options);
+                    return;
                 case Enum.Array:
                     JsonSerializer.Serialize(writer, "array", options);
                     return;
@@ -826,6 +849,9 @@ namespace QuickType
                 case Enum.Boolean:
                     JsonSerializer.Serialize(writer, "boolean", options);
                     return;
+                case Enum.BooleanNode:
+                    JsonSerializer.Serialize(writer, "BooleanNode", options);
+                    return;
                 case Enum.Break:
                     JsonSerializer.Serialize(writer, "break", options);
                     return;
@@ -955,6 +981,9 @@ namespace QuickType
                 case Enum.Declare:
                     JsonSerializer.Serialize(writer, "declare", options);
                     return;
+                case Enum.DeserializationFeature:
+                    JsonSerializer.Serialize(writer, "DeserializationFeature", options);
+                    return;
                 case Enum.Decltype:
                     JsonSerializer.Serialize(writer, "decltype", options);
                     return;
@@ -1003,6 +1032,9 @@ namespace QuickType
                 case Enum.Double:
                     JsonSerializer.Serialize(writer, "double", options);
                     return;
+                case Enum.DoubleNode:
+                    JsonSerializer.Serialize(writer, "DoubleNode", options);
+                    return;
                 case Enum.Dynamic:
                     JsonSerializer.Serialize(writer, "dynamic", options);
                     return;
@@ -1177,6 +1209,9 @@ namespace QuickType
                 case Enum.Int:
                     JsonSerializer.Serialize(writer, "int", options);
                     return;
+                case Enum.IntNode:
+                    JsonSerializer.Serialize(writer, "IntNode", options);
+                    return;
                 case Enum.Interface:
                     JsonSerializer.Serialize(writer, "interface", options);
                     return;
@@ -1264,6 +1299,9 @@ namespace QuickType
                 case Enum.List:
                     JsonSerializer.Serialize(writer, "list", options);
                     return;
+                case Enum.LongNode:
+                    JsonSerializer.Serialize(writer, "LongNode", options);
+                    return;
                 case Enum.Locale:
                     JsonSerializer.Serialize(writer, "Locale", options);
                     return;
@@ -1306,6 +1344,9 @@ namespace QuickType
                 case Enum.Nil:
                     JsonSerializer.Serialize(writer, "nil", options);
                     return;
+                case Enum.NullNode:
+                    JsonSerializer.Serialize(writer, "NullNode", options);
+                    return;
                 case Enum.No:
                     JsonSerializer.Serialize(writer, "NO", options);
                     return;
@@ -1360,6 +1401,9 @@ namespace QuickType
                 case Enum.Object:
                     JsonSerializer.Serialize(writer, "object", options);
                     return;
+                case Enum.ObjectNode:
+                    JsonSerializer.Serialize(writer, "ObjectNode", options);
+                    return;
                 case Enum.ObjectMapper:
                     JsonSerializer.Serialize(writer, "ObjectMapper", options);
                     return;
@@ -1516,6 +1560,9 @@ namespace QuickType
                 case Enum.Serialize:
                     JsonSerializer.Serialize(writer, "serialize", options);
                     return;
+                case Enum.SerializationFeature:
+                    JsonSerializer.Serialize(writer, "SerializationFeature", options);
+                    return;
                 case Enum.SerializerProvider:
                     JsonSerializer.Serialize(writer, "SerializerProvider", options);
                     return;
@@ -1591,6 +1638,9 @@ namespace QuickType
                 case Enum.This:
                     JsonSerializer.Serialize(writer, "this", options);
                     return;
+                case Enum.TextNode:
+                    JsonSerializer.Serialize(writer, "TextNode", options);
+                    return;
                 case Enum.ThreadLocal:
                     JsonSerializer.Serialize(writer, "thread_local", 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..2241418 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
@@ -70,6 +70,10 @@ namespace QuickType
         [JsonPropertyName("array")]
         public UnionArray? Array { get; set; }
 
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("ArrayNode")]
+        public UnionArrayNode? ArrayNode { get; set; }
+
         [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
         [JsonPropertyName("as")]
         public UnionAs? As { get; set; }
@@ -142,6 +146,10 @@ namespace QuickType
         [JsonPropertyName("boolean")]
         public UnionBoolean? Boolean { get; set; }
 
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("BooleanNode")]
+        public UnionBooleanNode? BooleanNode { get; set; }
+
         [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
         [JsonPropertyName("break")]
         public UnionBreak? Break { get; set; }
@@ -358,6 +366,10 @@ namespace QuickType
         [JsonPropertyName("delete")]
         public UnionDelete? Delete { get; set; }
 
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("DeserializationFeature")]
+        public UnionDeserializationFeature? DeserializationFeature { get; set; }
+
         [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
         [JsonPropertyName("dict")]
         public UnionDict? Dict { get; set; }
@@ -378,6 +390,10 @@ namespace QuickType
         [JsonPropertyName("double")]
         public UnionDouble? Double { get; set; }
 
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("DoubleNode")]
+        public UnionDoubleNode? DoubleNode { get; set; }
+
         [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
         [JsonPropertyName("dummy")]
         public double? Dummy { get; set; }
@@ -622,6 +638,10 @@ namespace QuickType
         [JsonPropertyName("internal")]
         public UnionInternal? Internal { get; set; }
 
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("IntNode")]
+        public UnionIntNode? IntNode { get; set; }
+
         [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
         [JsonPropertyName("is")]
         public UnionIs? Is { get; set; }
@@ -742,6 +762,10 @@ namespace QuickType
         [JsonPropertyName("long")]
         public UnionLong? Long { get; set; }
 
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("LongNode")]
+        public UnionLongNode? LongNode { get; set; }
+
         [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
         [JsonPropertyName("map")]
         public UnionMap? Map { get; set; }
@@ -846,6 +870,10 @@ namespace QuickType
         [JsonPropertyName("null")]
         public UnionNullUnion? TopLevelNull { get; set; }
 
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("NullNode")]
+        public UnionNullNode? NullNode { get; set; }
+
         [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
         [JsonPropertyName("nullptr")]
         public UnionNullptr? Nullptr { get; set; }
@@ -862,6 +890,10 @@ namespace QuickType
         [JsonPropertyName("ObjectMapper")]
         public UnionObjectMapper? ObjectMapper { get; set; }
 
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("ObjectNode")]
+        public UnionObjectNode? ObjectNode { get; set; }
+
         [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
         [JsonPropertyName("of")]
         public UnionOf? Of { get; set; }
@@ -1062,6 +1094,10 @@ namespace QuickType
         [JsonPropertyName("Sendable")]
         public UnionSendable? Sendable { get; set; }
 
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("SerializationFeature")]
+        public UnionSerializationFeature? SerializationFeature { get; set; }
+
         [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
         [JsonPropertyName("serialize")]
         public UnionSerialize? Serialize { get; set; }
@@ -1158,6 +1194,10 @@ namespace QuickType
         [JsonPropertyName("template")]
         public UnionTemplate? Template { get; set; }
 
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("TextNode")]
+        public UnionTextNode? TextNode { get; set; }
+
         [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
         [JsonPropertyName("then")]
         public UnionThen? Then { get; set; }
@@ -1383,6 +1423,10 @@ namespace QuickType
     {
     }
 
+    public partial class ArrayNode
+    {
+    }
+
     public partial class As
     {
     }
@@ -1451,6 +1495,10 @@ namespace QuickType
     {
     }
 
+    public partial class BooleanNode
+    {
+    }
+
     public partial class Break
     {
     }
@@ -1667,6 +1715,10 @@ namespace QuickType
     {
     }
 
+    public partial class DeserializationFeature
+    {
+    }
+
     public partial class Dict
     {
     }
@@ -1687,6 +1739,10 @@ namespace QuickType
     {
     }
 
+    public partial class DoubleNode
+    {
+    }
+
     public partial class Dynamic
     {
     }
@@ -1919,6 +1975,10 @@ namespace QuickType
     {
     }
 
+    public partial class IntNode
+    {
+    }
+
     public partial class Interface
     {
     }
@@ -2047,6 +2107,10 @@ namespace QuickType
     {
     }
 
+    public partial class LongNode
+    {
+    }
+
     public partial class Map
     {
     }
@@ -2143,6 +2207,10 @@ namespace QuickType
     {
     }
 
+    public partial class NullNode
+    {
+    }
+
     public partial class Nullptr
     {
     }
@@ -2159,6 +2227,10 @@ namespace QuickType
     {
     }
 
+    public partial class ObjectNode
+    {
+    }
+
     public partial class Of
     {
     }
@@ -2351,6 +2423,10 @@ namespace QuickType
     {
     }
 
+    public partial class SerializationFeature
+    {
+    }
+
     public partial class SerializeClass
     {
     }
@@ -2447,6 +2523,10 @@ namespace QuickType
     {
     }
 
+    public partial class TextNode
+    {
+    }
+
     public partial class Then
     {
     }
@@ -2746,6 +2826,15 @@ namespace QuickType
         public static implicit operator UnionArray(double Double) => new UnionArray { Double = Double };
     }
 
+    public partial struct UnionArrayNode
+    {
+        public ArrayNode? ArrayNode;
+        public double? Double;
+
+        public static implicit operator UnionArrayNode(ArrayNode ArrayNode) => new UnionArrayNode { ArrayNode = ArrayNode };
+        public static implicit operator UnionArrayNode(double Double) => new UnionArrayNode { Double = Double };
+    }
+
     public partial struct UnionAs
     {
         public As? As;
@@ -2899,6 +2988,15 @@ namespace QuickType
         public static implicit operator UnionBoolean(double Double) => new UnionBoolean { Double = Double };
     }
 
+    public partial struct UnionBooleanNode
+    {
+        public BooleanNode? BooleanNode;
+        public double? Double;
+
+        public static implicit operator UnionBooleanNode(BooleanNode BooleanNode) => new UnionBooleanNode { BooleanNode = BooleanNode };
+        public static implicit operator UnionBooleanNode(double Double) => new UnionBooleanNode { Double = Double };
+    }
+
     public partial struct UnionBreak
     {
         public Break? Break;
@@ -3385,6 +3483,15 @@ namespace QuickType
         public static implicit operator UnionDelete(double Double) => new UnionDelete { Double = Double };
     }
 
+    public partial struct UnionDeserializationFeature
+    {
+        public DeserializationFeature? DeserializationFeature;
+        public double? Double;
+
+        public static implicit operator UnionDeserializationFeature(DeserializationFeature DeserializationFeature) => new UnionDeserializationFeature { DeserializationFeature = DeserializationFeature };
+        public static implicit operator UnionDeserializationFeature(double Double) => new UnionDeserializationFeature { Double = Double };
+    }
+
     public partial struct UnionDict
     {
         public Dict? Dict;
@@ -3430,6 +3537,15 @@ namespace QuickType
         public static implicit operator UnionDouble(Double PurpleDouble) => new UnionDouble { PurpleDouble = PurpleDouble };
     }
 
+    public partial struct UnionDoubleNode
+    {
+        public double? Double;
+        public DoubleNode? DoubleNode;
+
+        public static implicit operator UnionDoubleNode(double Double) => new UnionDoubleNode { Double = Double };
+        public static implicit operator UnionDoubleNode(DoubleNode DoubleNode) => new UnionDoubleNode { DoubleNode = DoubleNode };
+    }
+
     public partial struct UnionDynamic
     {
         public double? Double;
@@ -3952,6 +4068,15 @@ namespace QuickType
         public static implicit operator UnionInt(Int Int) => new UnionInt { Int = Int };
     }
 
+    public partial struct UnionIntNode
+    {
+        public double? Double;
+        public IntNode? IntNode;
+
+        public static implicit operator UnionIntNode(double Double) => new UnionIntNode { Double = Double };
+        public static implicit operator UnionIntNode(IntNode IntNode) => new UnionIntNode { IntNode = IntNode };
+    }
+
     public partial struct UnionInterface
     {
         public double? Double;
@@ -4240,6 +4365,15 @@ namespace QuickType
         public static implicit operator UnionLong(Long Long) => new UnionLong { Long = Long };
     }
 
+    public partial struct UnionLongNode
+    {
+        public double? Double;
+        public LongNode? LongNode;
+
+        public static implicit operator UnionLongNode(double Double) => new UnionLongNode { Double = Double };
+        public static implicit operator UnionLongNode(LongNode LongNode) => new UnionLongNode { LongNode = LongNode };
+    }
+
     public partial struct UnionMap
     {
         public double? Double;
@@ -4456,6 +4590,15 @@ namespace QuickType
         public static implicit operator UnionNull(Null Null) => new UnionNull { Null = Null };
     }
 
+    public partial struct UnionNullNode
+    {
+        public double? Double;
+        public NullNode? NullNode;
+
+        public static implicit operator UnionNullNode(double Double) => new UnionNullNode { Double = Double };
+        public static implicit operator UnionNullNode(NullNode NullNode) => new UnionNullNode { NullNode = NullNode };
+    }
+
     public partial struct UnionNullptr
     {
         public double? Double;
@@ -4492,6 +4635,15 @@ namespace QuickType
         public static implicit operator UnionObjectMapper(ObjectMapper ObjectMapper) => new UnionObjectMapper { ObjectMapper = ObjectMapper };
     }
 
+    public partial struct UnionObjectNode
+    {
+        public double? Double;
+        public ObjectNode? ObjectNode;
+
+        public static implicit operator UnionObjectNode(double Double) => new UnionObjectNode { Double = Double };
+        public static implicit operator UnionObjectNode(ObjectNode ObjectNode) => new UnionObjectNode { ObjectNode = ObjectNode };
+    }
+
     public partial struct UnionOf
     {
         public double? Double;
@@ -4924,6 +5076,15 @@ namespace QuickType
         public static implicit operator UnionSendable(Sendable Sendable) => new UnionSendable { Sendable = Sendable };
     }
 
+    public partial struct UnionSerializationFeature
+    {
+        public double? Double;
+        public SerializationFeature? SerializationFeature;
+
+        public static implicit operator UnionSerializationFeature(double Double) => new UnionSerializationFeature { Double = Double };
+        public static implicit operator UnionSerializationFeature(SerializationFeature SerializationFeature) => new UnionSerializationFeature { SerializationFeature = SerializationFeature };
+    }
+
     public partial struct UnionSerialize
     {
         public double? Double;
@@ -5140,6 +5301,15 @@ namespace QuickType
         public static implicit operator UnionTemplate(Template Template) => new UnionTemplate { Template = Template };
     }
 
+    public partial struct UnionTextNode
+    {
+        public double? Double;
+        public TextNode? TextNode;
+
+        public static implicit operator UnionTextNode(double Double) => new UnionTextNode { Double = Double };
+        public static implicit operator UnionTextNode(TextNode TextNode) => new UnionTextNode { TextNode = TextNode };
+    }
+
     public partial struct UnionThen
     {
         public double? Double;
@@ -5688,7 +5858,9 @@ namespace QuickType
             Converters =
             {
                 UnionAnyConverter.Singleton,
+                UnionArrayNodeConverter.Singleton,
                 UnionBoolConverter.Singleton,
+                UnionBooleanNodeConverter.Singleton,
                 UnionCalendarConverter.Singleton,
                 UnionClassConverter.Singleton,
                 UnionCodableConverter.Singleton,
@@ -5702,6 +5874,8 @@ namespace QuickType
                 UnionDateTimeStylesConverter.Singleton,
                 UnionDecoderConverter.Singleton,
                 UnionDecodingErrorConverter.Singleton,
+                UnionDeserializationFeatureConverter.Singleton,
+                UnionDoubleNodeConverter.Singleton,
                 UnionEncoderConverter.Singleton,
                 UnionEnumValuesConverter.Singleton,
                 UnionEquatableConverter.Singleton,
@@ -5710,6 +5884,7 @@ namespace QuickType
                 UnionHashableConverter.Singleton,
                 UnionHasherConverter.Singleton,
                 UnionImpConverter.Singleton,
+                UnionIntNodeConverter.Singleton,
                 UnionIsoDateTimeOffsetConverterConverter.Singleton,
                 UnionJsonAnyConverter.Singleton,
                 UnionJsonCodingKeyConverter.Singleton,
@@ -5723,6 +5898,7 @@ namespace QuickType
                 UnionJsonReaderConverter.Singleton,
                 UnionJsonTokenTypeConverter.Singleton,
                 UnionLocaleConverter.Singleton,
+                UnionLongNodeConverter.Singleton,
                 UnionMapEntryConverter.Singleton,
                 UnionNoConverter.Singleton,
                 UnionNsErrorConverter.Singleton,
@@ -5730,17 +5906,21 @@ namespace QuickType
                 UnionNsStringConverter.Singleton,
                 UnionNullConverter.Singleton,
                 UnionNoneConverter.Singleton,
+                UnionNullNodeConverter.Singleton,
                 UnionObjectMapperConverter.Singleton,
+                UnionObjectNodeConverter.Singleton,
                 UnionProtocolConverter.Singleton,
                 UnionRegExpConverter.Singleton,
                 UnionSelConverter.Singleton,
                 UnionSelfConverter.Singleton,
                 UnionSendableConverter.Singleton,
+                UnionSerializationFeatureConverter.Singleton,
                 UnionSerializerProviderConverter.Singleton,
                 UnionSimpleModuleConverter.Singleton,
                 UnionStandardsConverter.Singleton,
                 UnionStdDeserializerConverter.Singleton,
                 UnionStdSerializerConverter.Singleton,
+                UnionTextNodeConverter.Singleton,
                 PurpleUnionTimeOnlyConverter.Singleton,
                 UnionTimeOnlyConverterConverter.Singleton,
                 UnionTimeZoneConverter.Singleton,
@@ -6062,6 +6242,42 @@ namespace QuickType
         public static readonly UnionAnyConverter Singleton = new UnionAnyConverter();
     }
 
+    internal class UnionArrayNodeConverter : JsonConverter<UnionArrayNode>
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionArrayNode);
+
+        public override UnionArrayNode Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonTokenType.Number:
+                    var doubleValue1 = reader.GetDouble();
+                    return new UnionArrayNode { Double = doubleValue1 };
+                case JsonTokenType.StartObject:
+                    var objectValue = JsonSerializer.Deserialize<ArrayNode>(ref reader, options);
+                    return new UnionArrayNode { ArrayNode = objectValue };
+            }
+            throw new JsonException("Cannot unmarshal type UnionArrayNode");
+        }
+
+        public override void Write(Utf8JsonWriter writer, UnionArrayNode value, JsonSerializerOptions options)
+        {
+            if (value.Double != null)
+            {
+                JsonSerializer.Serialize(writer, value.Double.Value, options);
+                return;
+            }
+            if (value.ArrayNode != null)
+            {
+                JsonSerializer.Serialize(writer, value.ArrayNode, options);
+                return;
+            }
+            throw new NotSupportedException("Cannot marshal type UnionArrayNode");
+        }
+
+        public static readonly UnionArrayNodeConverter Singleton = new UnionArrayNodeConverter();
+    }
+
     internal class UnionBoolConverter : JsonConverter<UnionBool>
     {
         public override bool CanConvert(Type t) => t == typeof(UnionBool);
@@ -6098,6 +6314,42 @@ namespace QuickType
         public static readonly UnionBoolConverter Singleton = new UnionBoolConverter();
     }
 
+    internal class UnionBooleanNodeConverter : JsonConverter<UnionBooleanNode>
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionBooleanNode);
+
+        public override UnionBooleanNode Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonTokenType.Number:
+                    var doubleValue1 = reader.GetDouble();
+                    return new UnionBooleanNode { Double = doubleValue1 };
+                case JsonTokenType.StartObject:
+                    var objectValue = JsonSerializer.Deserialize<BooleanNode>(ref reader, options);
+                    return new UnionBooleanNode { BooleanNode = objectValue };
+            }
+            throw new JsonException("Cannot unmarshal type UnionBooleanNode");
+        }
+
+        public override void Write(Utf8JsonWriter writer, UnionBooleanNode value, JsonSerializerOptions options)
+        {
+            if (value.Double != null)
+            {
+                JsonSerializer.Serialize(writer, value.Double.Value, options);
+                return;
+            }
+            if (value.BooleanNode != null)
+            {
+                JsonSerializer.Serialize(writer, value.BooleanNode, options);
+                return;
+            }
+            throw new NotSupportedException("Cannot marshal type UnionBooleanNode");
+        }
+
+        public static readonly UnionBooleanNodeConverter Singleton = new UnionBooleanNodeConverter();
+    }
+
     internal class UnionCalendarConverter : JsonConverter<UnionCalendar>
     {
         public override bool CanConvert(Type t) => t == typeof(UnionCalendar);
@@ -6566,6 +6818,78 @@ namespace QuickType
         public static readonly UnionDecodingErrorConverter Singleton = new UnionDecodingErrorConverter();
     }
 
+    internal class UnionDeserializationFeatureConverter : JsonConverter<UnionDeserializationFeature>
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionDeserializationFeature);
+
+        public override UnionDeserializationFeature Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonTokenType.Number:
+                    var doubleValue1 = reader.GetDouble();
+                    return new UnionDeserializationFeature { Double = doubleValue1 };
+                case JsonTokenType.StartObject:
+                    var objectValue = JsonSerializer.Deserialize<DeserializationFeature>(ref reader, options);
+                    return new UnionDeserializationFeature { DeserializationFeature = objectValue };
+            }
+            throw new JsonException("Cannot unmarshal type UnionDeserializationFeature");
+        }
+
+        public override void Write(Utf8JsonWriter writer, UnionDeserializationFeature value, JsonSerializerOptions options)
+        {
+            if (value.Double != null)
+            {
+                JsonSerializer.Serialize(writer, value.Double.Value, options);
+                return;
+            }
+            if (value.DeserializationFeature != null)
+            {
+                JsonSerializer.Serialize(writer, value.DeserializationFeature, options);
+                return;
+            }
+            throw new NotSupportedException("Cannot marshal type UnionDeserializationFeature");
+        }
+
+        public static readonly UnionDeserializationFeatureConverter Singleton = new UnionDeserializationFeatureConverter();
+    }
+
+    internal class UnionDoubleNodeConverter : JsonConverter<UnionDoubleNode>
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionDoubleNode);
+
+        public override UnionDoubleNode Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonTokenType.Number:
+                    var doubleValue1 = reader.GetDouble();
+                    return new UnionDoubleNode { Double = doubleValue1 };
+                case JsonTokenType.StartObject:
+                    var objectValue = JsonSerializer.Deserialize<DoubleNode>(ref reader, options);
+                    return new UnionDoubleNode { DoubleNode = objectValue };
+            }
+            throw new JsonException("Cannot unmarshal type UnionDoubleNode");
+        }
+
+        public override void Write(Utf8JsonWriter writer, UnionDoubleNode value, JsonSerializerOptions options)
+        {
+            if (value.Double != null)
+            {
+                JsonSerializer.Serialize(writer, value.Double.Value, options);
+                return;
+            }
+            if (value.DoubleNode != null)
+            {
+                JsonSerializer.Serialize(writer, value.DoubleNode, options);
+                return;
+            }
+            throw new NotSupportedException("Cannot marshal type UnionDoubleNode");
+        }
+
+        public static readonly UnionDoubleNodeConverter Singleton = new UnionDoubleNodeConverter();
+    }
+
     internal class UnionEncoderConverter : JsonConverter<UnionEncoder>
     {
         public override bool CanConvert(Type t) => t == typeof(UnionEncoder);
@@ -6854,6 +7178,42 @@ namespace QuickType
         public static readonly UnionImpConverter Singleton = new UnionImpConverter();
     }
 
+    internal class UnionIntNodeConverter : JsonConverter<UnionIntNode>
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionIntNode);
+
+        public override UnionIntNode Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonTokenType.Number:
+                    var doubleValue1 = reader.GetDouble();
+                    return new UnionIntNode { Double = doubleValue1 };
+                case JsonTokenType.StartObject:
+                    var objectValue = JsonSerializer.Deserialize<IntNode>(ref reader, options);
+                    return new UnionIntNode { IntNode = objectValue };
+            }
+            throw new JsonException("Cannot unmarshal type UnionIntNode");
+        }
+
+        public override void Write(Utf8JsonWriter writer, UnionIntNode value, JsonSerializerOptions options)
+        {
+            if (value.Double != null)
+            {
+                JsonSerializer.Serialize(writer, value.Double.Value, options);
+                return;
+            }
+            if (value.IntNode != null)
+            {
+                JsonSerializer.Serialize(writer, value.IntNode, options);
+                return;
+            }
+            throw new NotSupportedException("Cannot marshal type UnionIntNode");
+        }
+
+        public static readonly UnionIntNodeConverter Singleton = new UnionIntNodeConverter();
+    }
+
     internal class UnionIsoDateTimeOffsetConverterConverter : JsonConverter<UnionIsoDateTimeOffsetConverter>
     {
         public override bool CanConvert(Type t) => t == typeof(UnionIsoDateTimeOffsetConverter);
@@ -7322,6 +7682,42 @@ namespace QuickType
         public static readonly UnionLocaleConverter Singleton = new UnionLocaleConverter();
     }
 
+    internal class UnionLongNodeConverter : JsonConverter<UnionLongNode>
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionLongNode);
+
+        public override UnionLongNode Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonTokenType.Number:
+                    var doubleValue1 = reader.GetDouble();
+                    return new UnionLongNode { Double = doubleValue1 };
+                case JsonTokenType.StartObject:
+                    var objectValue = JsonSerializer.Deserialize<LongNode>(ref reader, options);
+                    return new UnionLongNode { LongNode = objectValue };
+            }
+            throw new JsonException("Cannot unmarshal type UnionLongNode");
+        }
+
+        public override void Write(Utf8JsonWriter writer, UnionLongNode value, JsonSerializerOptions options)
+        {
+            if (value.Double != null)
+            {
+                JsonSerializer.Serialize(writer, value.Double.Value, options);
+                return;
+            }
+            if (value.LongNode != null)
+            {
+                JsonSerializer.Serialize(writer, value.LongNode, options);
+                return;
+            }
+            throw new NotSupportedException("Cannot marshal type UnionLongNode");
+        }
+
+        public static readonly UnionLongNodeConverter Singleton = new UnionLongNodeConverter();
+    }
+
     internal class UnionMapEntryConverter : JsonConverter<UnionMapEntry>
     {
         public override bool CanConvert(Type t) => t == typeof(UnionMapEntry);
@@ -7574,6 +7970,42 @@ namespace QuickType
         public static readonly UnionNoneConverter Singleton = new UnionNoneConverter();
     }
 
+    internal class UnionNullNodeConverter : JsonConverter<UnionNullNode>
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionNullNode);
+
+        public override UnionNullNode Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonTokenType.Number:
+                    var doubleValue1 = reader.GetDouble();
+                    return new UnionNullNode { Double = doubleValue1 };
+                case JsonTokenType.StartObject:
+                    var objectValue = JsonSerializer.Deserialize<NullNode>(ref reader, options);
+                    return new UnionNullNode { NullNode = objectValue };
+            }
+            throw new JsonException("Cannot unmarshal type UnionNullNode");
+        }
+
+        public override void Write(Utf8JsonWriter writer, UnionNullNode value, JsonSerializerOptions options)
+        {
+            if (value.Double != null)
+            {
+                JsonSerializer.Serialize(writer, value.Double.Value, options);
+                return;
+            }
+            if (value.NullNode != null)
+            {
+                JsonSerializer.Serialize(writer, value.NullNode, options);
+                return;
+            }
+            throw new NotSupportedException("Cannot marshal type UnionNullNode");
+        }
+
+        public static readonly UnionNullNodeConverter Singleton = new UnionNullNodeConverter();
+    }
+
     internal class UnionObjectMapperConverter : JsonConverter<UnionObjectMapper>
     {
         public override bool CanConvert(Type t) => t == typeof(UnionObjectMapper);
@@ -7610,6 +8042,42 @@ namespace QuickType
         public static readonly UnionObjectMapperConverter Singleton = new UnionObjectMapperConverter();
     }
 
+    internal class UnionObjectNodeConverter : JsonConverter<UnionObjectNode>
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionObjectNode);
+
+        public override UnionObjectNode Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonTokenType.Number:
+                    var doubleValue1 = reader.GetDouble();
+                    return new UnionObjectNode { Double = doubleValue1 };
+                case JsonTokenType.StartObject:
+                    var objectValue = JsonSerializer.Deserialize<ObjectNode>(ref reader, options);
+                    return new UnionObjectNode { ObjectNode = objectValue };
+            }
+            throw new JsonException("Cannot unmarshal type UnionObjectNode");
+        }
+
+        public override void Write(Utf8JsonWriter writer, UnionObjectNode value, JsonSerializerOptions options)
+        {
+            if (value.Double != null)
+            {
+                JsonSerializer.Serialize(writer, value.Double.Value, options);
+                return;
+            }
+            if (value.ObjectNode != null)
+            {
+                JsonSerializer.Serialize(writer, value.ObjectNode, options);
+                return;
+            }
+            throw new NotSupportedException("Cannot marshal type UnionObjectNode");
+        }
+
+        public static readonly UnionObjectNodeConverter Singleton = new UnionObjectNodeConverter();
+    }
+
     internal class UnionProtocolConverter : JsonConverter<UnionProtocol>
     {
         public override bool CanConvert(Type t) => t == typeof(UnionProtocol);
@@ -7790,6 +8258,42 @@ namespace QuickType
         public static readonly UnionSendableConverter Singleton = new UnionSendableConverter();
     }
 
+    internal class UnionSerializationFeatureConverter : JsonConverter<UnionSerializationFeature>
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionSerializationFeature);
+
+        public override UnionSerializationFeature Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonTokenType.Number:
+                    var doubleValue1 = reader.GetDouble();
+                    return new UnionSerializationFeature { Double = doubleValue1 };
+                case JsonTokenType.StartObject:
+                    var objectValue = JsonSerializer.Deserialize<SerializationFeature>(ref reader, options);
+                    return new UnionSerializationFeature { SerializationFeature = objectValue };
+            }
+            throw new JsonException("Cannot unmarshal type UnionSerializationFeature");
+        }
+
+        public override void Write(Utf8JsonWriter writer, UnionSerializationFeature value, JsonSerializerOptions options)
+        {
+            if (value.Double != null)
+            {
+                JsonSerializer.Serialize(writer, value.Double.Value, options);
+                return;
+            }
+            if (value.SerializationFeature != null)
+            {
+                JsonSerializer.Serialize(writer, value.SerializationFeature, options);
+                return;
+            }
+            throw new NotSupportedException("Cannot marshal type UnionSerializationFeature");
+        }
+
+        public static readonly UnionSerializationFeatureConverter Singleton = new UnionSerializationFeatureConverter();
+    }
+
     internal class UnionSerializerProviderConverter : JsonConverter<UnionSerializerProvider>
     {
         public override bool CanConvert(Type t) => t == typeof(UnionSerializerProvider);
@@ -7970,6 +8474,42 @@ namespace QuickType
         public static readonly UnionStdSerializerConverter Singleton = new UnionStdSerializerConverter();
     }
 
+    internal class UnionTextNodeConverter : JsonConverter<UnionTextNode>
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionTextNode);
+
+        public override UnionTextNode Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonTokenType.Number:
+                    var doubleValue1 = reader.GetDouble();
+                    return new UnionTextNode { Double = doubleValue1 };
+                case JsonTokenType.StartObject:
+                    var objectValue = JsonSerializer.Deserialize<TextNode>(ref reader, options);
+                    return new UnionTextNode { TextNode = objectValue };
+            }
+            throw new JsonException("Cannot unmarshal type UnionTextNode");
+        }
+
+        public override void Write(Utf8JsonWriter writer, UnionTextNode value, JsonSerializerOptions options)
+        {
+            if (value.Double != null)
+            {
+                JsonSerializer.Serialize(writer, value.Double.Value, options);
+                return;
+            }
+            if (value.TextNode != null)
+            {
+                JsonSerializer.Serialize(writer, value.TextNode, options);
+                return;
+            }
+            throw new NotSupportedException("Cannot marshal type UnionTextNode");
+        }
+
+        public static readonly UnionTextNodeConverter Singleton = new UnionTextNodeConverter();
+    }
+
     internal class PurpleUnionTimeOnlyConverter : JsonConverter<UnionTimeOnly>
     {
         public override bool CanConvert(Type t) => t == typeof(UnionTimeOnly);
diff --git a/base/schema-csharp-records/test/inputs/schema/direct-union.schema/default/QuickType.cs b/head/schema-csharp-records/test/inputs/schema/direct-union.schema/default/QuickType.cs
index d420262..55f1995 100644
--- a/base/schema-csharp-records/test/inputs/schema/direct-union.schema/default/QuickType.cs
+++ b/head/schema-csharp-records/test/inputs/schema/direct-union.schema/default/QuickType.cs
@@ -25,8 +25,60 @@ namespace QuickType
 
     public partial record TopLevel
     {
+        [JsonProperty("arrayNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public ArrayNode? ArrayNode { get; set; }
+
+        [JsonProperty("booleanNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public BooleanNode? BooleanNode { get; set; }
+
+        [JsonProperty("doubleNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public DoubleNode? DoubleNode { get; set; }
+
+        [JsonProperty("intNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public IntNode? IntNode { get; set; }
+
+        [JsonProperty("longNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public LongNode? LongNode { get; set; }
+
+        [JsonProperty("nullNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public NullNode? NullNode { get; set; }
+
+        [JsonProperty("objectNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public ObjectNode? ObjectNode { get; set; }
+
         [JsonProperty("stuff", Required = Required.Always)]
         public Dictionary<string, Thing> Stuff { get; set; }
+
+        [JsonProperty("textNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public TextNode? TextNode { get; set; }
+    }
+
+    public partial record ArrayNode
+    {
+    }
+
+    public partial record BooleanNode
+    {
+    }
+
+    public partial record DoubleNode
+    {
+    }
+
+    public partial record IntNode
+    {
+    }
+
+    public partial record LongNode
+    {
+    }
+
+    public partial record NullNode
+    {
+    }
+
+    public partial record ObjectNode
+    {
     }
 
     public partial record Thing
@@ -38,6 +90,10 @@ namespace QuickType
         public Anything ThingRequired { get; set; }
     }
 
+    public partial record TextNode
+    {
+    }
+
     public partial struct Anything
     {
         public object[]? AnythingArray;
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..4f53eea 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, ArrayNode, Array, As, Asm, Assert, Associatedtype, Associativity, Async, Atomic, AtomicCancel, AtomicCommit, AtomicNoexcept, Auto, Await, Base, Bitand, Bitor, EnumBool, PurpleBool, Boolean, BooleanNode, 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, DeserializationFeature, Decltype, DecodeString, Decoder, DecodingError, Def, Default, Defer, Deinit, Del, Delegate, Delete, Dict, Dictionary, DidSet, Do, Double, DoubleNode, 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, IntNode, 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, LongNode, Locale, Lock, Long, Map, MapEntry, MetadataPropertyHandling, Module, Mutable, Mutating, Namespace, Native, New, Newtonsoft, Nil, NullNode, No, Noexcept, Nonatomic, None, EnumNone, Nonlocal, Nonmutating, NsObject, NoSuchMethod, Not, NotEq, NsError, NsString, Null, EnumNull, Nullptr, Number, Object, ObjectNode, 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, SerializationFeature, 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, TextNode, 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 partial record TopLevel
     {
@@ -87,6 +87,8 @@ namespace QuickType
                     return Enum.Any;
                 case "Any":
                     return Enum.EnumAny;
+                case "ArrayNode":
+                    return Enum.ArrayNode;
                 case "array":
                     return Enum.Array;
                 case "as":
@@ -125,6 +127,8 @@ namespace QuickType
                     return Enum.PurpleBool;
                 case "boolean":
                     return Enum.Boolean;
+                case "BooleanNode":
+                    return Enum.BooleanNode;
                 case "break":
                     return Enum.Break;
                 case "bycopy":
@@ -211,6 +215,8 @@ namespace QuickType
                     return Enum.Decimal;
                 case "declare":
                     return Enum.Declare;
+                case "DeserializationFeature":
+                    return Enum.DeserializationFeature;
                 case "decltype":
                     return Enum.Decltype;
                 case "decode_string":
@@ -243,6 +249,8 @@ namespace QuickType
                     return Enum.Do;
                 case "double":
                     return Enum.Double;
+                case "DoubleNode":
+                    return Enum.DoubleNode;
                 case "dynamic":
                     return Enum.Dynamic;
                 case "dynamic_cast":
@@ -359,6 +367,8 @@ namespace QuickType
                     return Enum.Instanceof;
                 case "int":
                     return Enum.Int;
+                case "IntNode":
+                    return Enum.IntNode;
                 case "interface":
                     return Enum.Interface;
                 case "internal":
@@ -417,6 +427,8 @@ namespace QuickType
                     return Enum.Let;
                 case "list":
                     return Enum.List;
+                case "LongNode":
+                    return Enum.LongNode;
                 case "Locale":
                     return Enum.Locale;
                 case "lock":
@@ -445,6 +457,8 @@ namespace QuickType
                     return Enum.Newtonsoft;
                 case "nil":
                     return Enum.Nil;
+                case "NullNode":
+                    return Enum.NullNode;
                 case "NO":
                     return Enum.No;
                 case "noexcept":
@@ -481,6 +495,8 @@ namespace QuickType
                     return Enum.Number;
                 case "object":
                     return Enum.Object;
+                case "ObjectNode":
+                    return Enum.ObjectNode;
                 case "ObjectMapper":
                     return Enum.ObjectMapper;
                 case "of":
@@ -585,6 +601,8 @@ namespace QuickType
                     return Enum.Sendable;
                 case "serialize":
                     return Enum.Serialize;
+                case "SerializationFeature":
+                    return Enum.SerializationFeature;
                 case "SerializerProvider":
                     return Enum.SerializerProvider;
                 case "set":
@@ -635,6 +653,8 @@ namespace QuickType
                     return Enum.Then;
                 case "this":
                     return Enum.This;
+                case "TextNode":
+                    return Enum.TextNode;
                 case "thread_local":
                     return Enum.ThreadLocal;
                 case "throw":
@@ -778,6 +798,9 @@ namespace QuickType
                 case Enum.EnumAny:
                     serializer.Serialize(writer, "Any");
                     return;
+                case Enum.ArrayNode:
+                    serializer.Serialize(writer, "ArrayNode");
+                    return;
                 case Enum.Array:
                     serializer.Serialize(writer, "array");
                     return;
@@ -835,6 +858,9 @@ namespace QuickType
                 case Enum.Boolean:
                     serializer.Serialize(writer, "boolean");
                     return;
+                case Enum.BooleanNode:
+                    serializer.Serialize(writer, "BooleanNode");
+                    return;
                 case Enum.Break:
                     serializer.Serialize(writer, "break");
                     return;
@@ -964,6 +990,9 @@ namespace QuickType
                 case Enum.Declare:
                     serializer.Serialize(writer, "declare");
                     return;
+                case Enum.DeserializationFeature:
+                    serializer.Serialize(writer, "DeserializationFeature");
+                    return;
                 case Enum.Decltype:
                     serializer.Serialize(writer, "decltype");
                     return;
@@ -1012,6 +1041,9 @@ namespace QuickType
                 case Enum.Double:
                     serializer.Serialize(writer, "double");
                     return;
+                case Enum.DoubleNode:
+                    serializer.Serialize(writer, "DoubleNode");
+                    return;
                 case Enum.Dynamic:
                     serializer.Serialize(writer, "dynamic");
                     return;
@@ -1186,6 +1218,9 @@ namespace QuickType
                 case Enum.Int:
                     serializer.Serialize(writer, "int");
                     return;
+                case Enum.IntNode:
+                    serializer.Serialize(writer, "IntNode");
+                    return;
                 case Enum.Interface:
                     serializer.Serialize(writer, "interface");
                     return;
@@ -1273,6 +1308,9 @@ namespace QuickType
                 case Enum.List:
                     serializer.Serialize(writer, "list");
                     return;
+                case Enum.LongNode:
+                    serializer.Serialize(writer, "LongNode");
+                    return;
                 case Enum.Locale:
                     serializer.Serialize(writer, "Locale");
                     return;
@@ -1315,6 +1353,9 @@ namespace QuickType
                 case Enum.Nil:
                     serializer.Serialize(writer, "nil");
                     return;
+                case Enum.NullNode:
+                    serializer.Serialize(writer, "NullNode");
+                    return;
                 case Enum.No:
                     serializer.Serialize(writer, "NO");
                     return;
@@ -1369,6 +1410,9 @@ namespace QuickType
                 case Enum.Object:
                     serializer.Serialize(writer, "object");
                     return;
+                case Enum.ObjectNode:
+                    serializer.Serialize(writer, "ObjectNode");
+                    return;
                 case Enum.ObjectMapper:
                     serializer.Serialize(writer, "ObjectMapper");
                     return;
@@ -1525,6 +1569,9 @@ namespace QuickType
                 case Enum.Serialize:
                     serializer.Serialize(writer, "serialize");
                     return;
+                case Enum.SerializationFeature:
+                    serializer.Serialize(writer, "SerializationFeature");
+                    return;
                 case Enum.SerializerProvider:
                     serializer.Serialize(writer, "SerializerProvider");
                     return;
@@ -1600,6 +1647,9 @@ namespace QuickType
                 case Enum.This:
                     serializer.Serialize(writer, "this");
                     return;
+                case Enum.TextNode:
+                    serializer.Serialize(writer, "TextNode");
+                    return;
                 case Enum.ThreadLocal:
                     serializer.Serialize(writer, "thread_local");
                     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..00850ed 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
@@ -61,6 +61,9 @@ namespace QuickType
         [JsonProperty("array", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionArray? Array { get; set; }
 
+        [JsonProperty("ArrayNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionArrayNode? ArrayNode { get; set; }
+
         [JsonProperty("as", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionAs? As { get; set; }
 
@@ -115,6 +118,9 @@ namespace QuickType
         [JsonProperty("boolean", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionBoolean? Boolean { get; set; }
 
+        [JsonProperty("BooleanNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionBooleanNode? BooleanNode { get; set; }
+
         [JsonProperty("break", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionBreak? Break { get; set; }
 
@@ -277,6 +283,9 @@ namespace QuickType
         [JsonProperty("delete", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionDelete? Delete { get; set; }
 
+        [JsonProperty("DeserializationFeature", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionDeserializationFeature? DeserializationFeature { get; set; }
+
         [JsonProperty("dict", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionDict? Dict { get; set; }
 
@@ -292,6 +301,9 @@ namespace QuickType
         [JsonProperty("double", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionDouble? Double { get; set; }
 
+        [JsonProperty("DoubleNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionDoubleNode? DoubleNode { get; set; }
+
         [JsonProperty("dummy", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public double? Dummy { get; set; }
 
@@ -475,6 +487,9 @@ namespace QuickType
         [JsonProperty("internal", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionInternal? Internal { get; set; }
 
+        [JsonProperty("IntNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionIntNode? IntNode { get; set; }
+
         [JsonProperty("is", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionIs? Is { get; set; }
 
@@ -565,6 +580,9 @@ namespace QuickType
         [JsonProperty("long", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionLong? Long { get; set; }
 
+        [JsonProperty("LongNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionLongNode? LongNode { get; set; }
+
         [JsonProperty("map", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionMap? Map { get; set; }
 
@@ -643,6 +661,9 @@ namespace QuickType
         [JsonProperty("null", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionNullUnion? TopLevelNull { get; set; }
 
+        [JsonProperty("NullNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionNullNode? NullNode { get; set; }
+
         [JsonProperty("nullptr", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionNullptr? Nullptr { get; set; }
 
@@ -655,6 +676,9 @@ namespace QuickType
         [JsonProperty("ObjectMapper", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionObjectMapper? ObjectMapper { get; set; }
 
+        [JsonProperty("ObjectNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionObjectNode? ObjectNode { get; set; }
+
         [JsonProperty("of", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionOf? Of { get; set; }
 
@@ -805,6 +829,9 @@ namespace QuickType
         [JsonProperty("Sendable", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionSendable? Sendable { get; set; }
 
+        [JsonProperty("SerializationFeature", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionSerializationFeature? SerializationFeature { get; set; }
+
         [JsonProperty("serialize", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionSerialize? Serialize { get; set; }
 
@@ -877,6 +904,9 @@ namespace QuickType
         [JsonProperty("template", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionTemplate? Template { get; set; }
 
+        [JsonProperty("TextNode", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionTextNode? TextNode { get; set; }
+
         [JsonProperty("then", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionThen? Then { get; set; }
 
@@ -1053,6 +1083,10 @@ namespace QuickType
     {
     }
 
+    public partial record ArrayNode
+    {
+    }
+
     public partial record As
     {
     }
@@ -1121,6 +1155,10 @@ namespace QuickType
     {
     }
 
+    public partial record BooleanNode
+    {
+    }
+
     public partial record Break
     {
     }
@@ -1333,6 +1371,10 @@ namespace QuickType
     {
     }
 
+    public partial record DeserializationFeature
+    {
+    }
+
     public partial record Dict
     {
     }
@@ -1353,6 +1395,10 @@ namespace QuickType
     {
     }
 
+    public partial record DoubleNode
+    {
+    }
+
     public partial record Dynamic
     {
     }
@@ -1581,6 +1627,10 @@ namespace QuickType
     {
     }
 
+    public partial record IntNode
+    {
+    }
+
     public partial record Interface
     {
     }
@@ -1709,6 +1759,10 @@ namespace QuickType
     {
     }
 
+    public partial record LongNode
+    {
+    }
+
     public partial record Map
     {
     }
@@ -1805,6 +1859,10 @@ namespace QuickType
     {
     }
 
+    public partial record NullNode
+    {
+    }
+
     public partial record Nullptr
     {
     }
@@ -1821,6 +1879,10 @@ namespace QuickType
     {
     }
 
+    public partial record ObjectNode
+    {
+    }
+
     public partial record Of
     {
     }
@@ -2009,6 +2071,10 @@ namespace QuickType
     {
     }
 
+    public partial record SerializationFeature
+    {
+    }
+
     public partial record SerializeClass
     {
     }
@@ -2105,6 +2171,10 @@ namespace QuickType
     {
     }
 
+    public partial record TextNode
+    {
+    }
+
     public partial record Then
     {
     }
@@ -2416,6 +2486,15 @@ namespace QuickType
         public static implicit operator UnionArray(double Double) => new UnionArray { Double = Double };
     }
 
+    public partial struct UnionArrayNode
+    {
+        public ArrayNode? ArrayNode;
+        public double? Double;
+
+        public static implicit operator UnionArrayNode(ArrayNode ArrayNode) => new UnionArrayNode { ArrayNode = ArrayNode };
+        public static implicit operator UnionArrayNode(double Double) => new UnionArrayNode { Double = Double };
+    }
+
     public partial struct UnionAs
     {
         public As? As;
@@ -2569,6 +2648,15 @@ namespace QuickType
         public static implicit operator UnionBoolean(double Double) => new UnionBoolean { Double = Double };
     }
 
+    public partial struct UnionBooleanNode
+    {
+        public BooleanNode? BooleanNode;
+        public double? Double;
+
+        public static implicit operator UnionBooleanNode(BooleanNode BooleanNode) => new UnionBooleanNode { BooleanNode = BooleanNode };
+        public static implicit operator UnionBooleanNode(double Double) => new UnionBooleanNode { Double = Double };
+    }
+
     public partial struct UnionBreak
     {
         public Break? Break;
@@ -3046,6 +3134,15 @@ namespace QuickType
         public static implicit operator UnionDelete(double Double) => new UnionDelete { Double = Double };
     }
 
+    public partial struct UnionDeserializationFeature
+    {
+        public DeserializationFeature? DeserializationFeature;
+        public double? Double;
+
+        public static implicit operator UnionDeserializationFeature(DeserializationFeature DeserializationFeature) => new UnionDeserializationFeature { DeserializationFeature = DeserializationFeature };
+        public static implicit operator UnionDeserializationFeature(double Double) => new UnionDeserializationFeature { Double = Double };
+    }
+
     public partial struct UnionDict
     {
         public Dict? Dict;
@@ -3091,6 +3188,15 @@ namespace QuickType
         public static implicit operator UnionDouble(Double PurpleDouble) => new UnionDouble { PurpleDouble = PurpleDouble };
     }
 
+    public partial struct UnionDoubleNode
+    {
+        public double? Double;
+        public DoubleNode? DoubleNode;
+
+        public static implicit operator UnionDoubleNode(double Double) => new UnionDoubleNode { Double = Double };
+        public static implicit operator UnionDoubleNode(DoubleNode DoubleNode) => new UnionDoubleNode { DoubleNode = DoubleNode };
+    }
+
     public partial struct UnionDynamic
     {
         public double? Double;
@@ -3604,6 +3710,15 @@ namespace QuickType
         public static implicit operator UnionInt(Int Int) => new UnionInt { Int = Int };
     }
 
+    public partial struct UnionIntNode
+    {
+        public double? Double;
+        public IntNode? IntNode;
+
+        public static implicit operator UnionIntNode(double Double) => new UnionIntNode { Double = Double };
+        public static implicit operator UnionIntNode(IntNode IntNode) => new UnionIntNode { IntNode = IntNode };
+    }
+
     public partial struct UnionInterface
     {
         public double? Double;
@@ -3892,6 +4007,15 @@ namespace QuickType
         public static implicit operator UnionLong(Long Long) => new UnionLong { Long = Long };
     }
 
+    public partial struct UnionLongNode
+    {
+        public double? Double;
+        public LongNode? LongNode;
+
+        public static implicit operator UnionLongNode(double Double) => new UnionLongNode { Double = Double };
+        public static implicit operator UnionLongNode(LongNode LongNode) => new UnionLongNode { LongNode = LongNode };
+    }
+
     public partial struct UnionMap
     {
         public double? Double;
@@ -4108,6 +4232,15 @@ namespace QuickType
         public static implicit operator UnionNull(Null Null) => new UnionNull { Null = Null };
     }
 
+    public partial struct UnionNullNode
+    {
+        public double? Double;
+        public NullNode? NullNode;
+
+        public static implicit operator UnionNullNode(double Double) => new UnionNullNode { Double = Double };
+        public static implicit operator UnionNullNode(NullNode NullNode) => new UnionNullNode { NullNode = NullNode };
+    }
+
     public partial struct UnionNullptr
     {
         public double? Double;
@@ -4144,6 +4277,15 @@ namespace QuickType
         public static implicit operator UnionObjectMapper(ObjectMapper ObjectMapper) => new UnionObjectMapper { ObjectMapper = ObjectMapper };
     }
 
+    public partial struct UnionObjectNode
+    {
+        public double? Double;
+        public ObjectNode? ObjectNode;
+
+        public static implicit operator UnionObjectNode(double Double) => new UnionObjectNode { Double = Double };
+        public static implicit operator UnionObjectNode(ObjectNode ObjectNode) => new UnionObjectNode { ObjectNode = ObjectNode };
+    }
+
     public partial struct UnionOf
     {
         public double? Double;
@@ -4567,6 +4709,15 @@ namespace QuickType
         public static implicit operator UnionSendable(Sendable Sendable) => new UnionSendable { Sendable = Sendable };
     }
 
+    public partial struct UnionSerializationFeature
+    {
+        public double? Double;
+        public SerializationFeature? SerializationFeature;
+
+        public static implicit operator UnionSerializationFeature(double Double) => new UnionSerializationFeature { Double = Double };
+        public static implicit operator UnionSerializationFeature(SerializationFeature SerializationFeature) => new UnionSerializationFeature { SerializationFeature = SerializationFeature };
+    }
+
     public partial struct UnionSerialize
     {
         public double? Double;
@@ -4783,6 +4934,15 @@ namespace QuickType
         public static implicit operator UnionTemplate(Template Template) => new UnionTemplate { Template = Template };
     }
 
+    public partial struct UnionTextNode
+    {
+        public double? Double;
+        public TextNode? TextNode;
+
+        public static implicit operator UnionTextNode(double Double) => new UnionTextNode { Double = Double };
+        public static implicit operator UnionTextNode(TextNode TextNode) => new UnionTextNode { TextNode = TextNode };
+    }
+
     public partial struct UnionThen
     {
         public double? Double;
@@ -5360,7 +5520,9 @@ namespace QuickType
             Converters =
             {
                 UnionAnyConverter.Singleton,
+                UnionArrayNodeConverter.Singleton,
                 UnionBoolConverter.Singleton,
+                UnionBooleanNodeConverter.Singleton,
                 UnionCalendarConverter.Singleton,
                 UnionClassConverter.Singleton,
                 UnionCodableConverter.Singleton,
@@ -5374,6 +5536,8 @@ namespace QuickType
                 UnionDateTimeStylesConverter.Singleton,
                 UnionDecoderConverter.Singleton,
                 UnionDecodingErrorConverter.Singleton,
+                UnionDeserializationFeatureConverter.Singleton,
+                UnionDoubleNodeConverter.Singleton,
                 UnionEncoderConverter.Singleton,
                 UnionEnumValuesConverter.Singleton,
                 UnionEquatableConverter.Singleton,
@@ -5382,6 +5546,7 @@ namespace QuickType
                 UnionHashableConverter.Singleton,
                 UnionHasherConverter.Singleton,
                 UnionImpConverter.Singleton,
+                UnionIntNodeConverter.Singleton,
                 UnionIsoDateTimeOffsetConverterConverter.Singleton,
                 UnionJsonAnyConverter.Singleton,
                 UnionJsonCodingKeyConverter.Singleton,
@@ -5395,6 +5560,7 @@ namespace QuickType
                 UnionJsonReaderConverter.Singleton,
                 UnionJsonTokenTypeConverter.Singleton,
                 UnionLocaleConverter.Singleton,
+                UnionLongNodeConverter.Singleton,
                 UnionMapEntryConverter.Singleton,
                 UnionNoConverter.Singleton,
                 UnionNsErrorConverter.Singleton,
@@ -5402,17 +5568,21 @@ namespace QuickType
                 UnionNsStringConverter.Singleton,
                 UnionNullConverter.Singleton,
                 UnionNoneConverter.Singleton,
+                UnionNullNodeConverter.Singleton,
                 UnionObjectMapperConverter.Singleton,
+                UnionObjectNodeConverter.Singleton,
                 UnionProtocolConverter.Singleton,
                 UnionRegExpConverter.Singleton,
                 UnionSelConverter.Singleton,
                 UnionSelfConverter.Singleton,
                 UnionSendableConverter.Singleton,
+                UnionSerializationFeatureConverter.Singleton,
                 UnionSerializerProviderConverter.Singleton,
                 UnionSimpleModuleConverter.Singleton,
                 UnionStandardsConverter.Singleton,
                 UnionStdDeserializerConverter.Singleton,
                 UnionStdSerializerConverter.Singleton,
+                UnionTextNodeConverter.Singleton,
                 PurpleUnionTimeOnlyConverter.Singleton,
                 UnionTimeOnlyConverterConverter.Singleton,
                 UnionTimeZoneConverter.Singleton,
@@ -5734,6 +5904,44 @@ namespace QuickType
         public static readonly UnionAnyConverter Singleton = new UnionAnyConverter();
     }
 
+    internal class UnionArrayNodeConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionArrayNode) || t == typeof(UnionArrayNode?);
+
+        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 UnionArrayNode { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<ArrayNode>(reader);
+                    return new UnionArrayNode { ArrayNode = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionArrayNode");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionArrayNode)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.ArrayNode != null)
+            {
+                serializer.Serialize(writer, value.ArrayNode);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionArrayNode");
+        }
+
+        public static readonly UnionArrayNodeConverter Singleton = new UnionArrayNodeConverter();
+    }
+
     internal class UnionBoolConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionBool) || t == typeof(UnionBool?);
@@ -5772,6 +5980,44 @@ namespace QuickType
         public static readonly UnionBoolConverter Singleton = new UnionBoolConverter();
     }
 
+    internal class UnionBooleanNodeConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionBooleanNode) || t == typeof(UnionBooleanNode?);
+
+        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 UnionBooleanNode { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<BooleanNode>(reader);
+                    return new UnionBooleanNode { BooleanNode = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionBooleanNode");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionBooleanNode)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.BooleanNode != null)
+            {
+                serializer.Serialize(writer, value.BooleanNode);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionBooleanNode");
+        }
+
+        public static readonly UnionBooleanNodeConverter Singleton = new UnionBooleanNodeConverter();
+    }
+
     internal class UnionCalendarConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionCalendar) || t == typeof(UnionCalendar?);
@@ -6266,6 +6512,82 @@ namespace QuickType
         public static readonly UnionDecodingErrorConverter Singleton = new UnionDecodingErrorConverter();
     }
 
+    internal class UnionDeserializationFeatureConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionDeserializationFeature) || t == typeof(UnionDeserializationFeature?);
+
+        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 UnionDeserializationFeature { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<DeserializationFeature>(reader);
+                    return new UnionDeserializationFeature { DeserializationFeature = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionDeserializationFeature");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionDeserializationFeature)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.DeserializationFeature != null)
+            {
+                serializer.Serialize(writer, value.DeserializationFeature);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionDeserializationFeature");
+        }
+
+        public static readonly UnionDeserializationFeatureConverter Singleton = new UnionDeserializationFeatureConverter();
+    }
+
+    internal class UnionDoubleNodeConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionDoubleNode) || t == typeof(UnionDoubleNode?);
+
+        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 UnionDoubleNode { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<DoubleNode>(reader);
+                    return new UnionDoubleNode { DoubleNode = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionDoubleNode");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionDoubleNode)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.DoubleNode != null)
+            {
+                serializer.Serialize(writer, value.DoubleNode);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionDoubleNode");
+        }
+
+        public static readonly UnionDoubleNodeConverter Singleton = new UnionDoubleNodeConverter();
+    }
+
     internal class UnionEncoderConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionEncoder) || t == typeof(UnionEncoder?);
@@ -6570,6 +6892,44 @@ namespace QuickType
         public static readonly UnionImpConverter Singleton = new UnionImpConverter();
     }
 
+    internal class UnionIntNodeConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionIntNode) || t == typeof(UnionIntNode?);
+
+        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 UnionIntNode { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<IntNode>(reader);
+                    return new UnionIntNode { IntNode = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionIntNode");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionIntNode)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.IntNode != null)
+            {
+                serializer.Serialize(writer, value.IntNode);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionIntNode");
+        }
+
+        public static readonly UnionIntNodeConverter Singleton = new UnionIntNodeConverter();
+    }
+
     internal class UnionIsoDateTimeOffsetConverterConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionIsoDateTimeOffsetConverter) || t == typeof(UnionIsoDateTimeOffsetConverter?);
@@ -7064,6 +7424,44 @@ namespace QuickType
         public static readonly UnionLocaleConverter Singleton = new UnionLocaleConverter();
     }
 
+    internal class UnionLongNodeConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionLongNode) || t == typeof(UnionLongNode?);
+
+        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 UnionLongNode { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<LongNode>(reader);
+                    return new UnionLongNode { LongNode = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionLongNode");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionLongNode)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.LongNode != null)
+            {
+                serializer.Serialize(writer, value.LongNode);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionLongNode");
+        }
+
+        public static readonly UnionLongNodeConverter Singleton = new UnionLongNodeConverter();
+    }
+
     internal class UnionMapEntryConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionMapEntry) || t == typeof(UnionMapEntry?);
@@ -7330,6 +7728,44 @@ namespace QuickType
         public static readonly UnionNoneConverter Singleton = new UnionNoneConverter();
     }
 
+    internal class UnionNullNodeConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionNullNode) || t == typeof(UnionNullNode?);
+
+        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 UnionNullNode { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<NullNode>(reader);
+                    return new UnionNullNode { NullNode = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionNullNode");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionNullNode)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.NullNode != null)
+            {
+                serializer.Serialize(writer, value.NullNode);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionNullNode");
+        }
+
+        public static readonly UnionNullNodeConverter Singleton = new UnionNullNodeConverter();
+    }
+
     internal class UnionObjectMapperConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionObjectMapper) || t == typeof(UnionObjectMapper?);
@@ -7368,6 +7804,44 @@ namespace QuickType
         public static readonly UnionObjectMapperConverter Singleton = new UnionObjectMapperConverter();
     }
 
+    internal class UnionObjectNodeConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionObjectNode) || t == typeof(UnionObjectNode?);
+
+        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 UnionObjectNode { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<ObjectNode>(reader);
+                    return new UnionObjectNode { ObjectNode = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionObjectNode");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionObjectNode)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.ObjectNode != null)
+            {
+                serializer.Serialize(writer, value.ObjectNode);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionObjectNode");
+        }
+
+        public static readonly UnionObjectNodeConverter Singleton = new UnionObjectNodeConverter();
+    }
+
     internal class UnionProtocolConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionProtocol) || t == typeof(UnionProtocol?);
@@ -7558,6 +8032,44 @@ namespace QuickType
         public static readonly UnionSendableConverter Singleton = new UnionSendableConverter();
     }
 
+    internal class UnionSerializationFeatureConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionSerializationFeature) || t == typeof(UnionSerializationFeature?);
+
+        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 UnionSerializationFeature { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<SerializationFeature>(reader);
+                    return new UnionSerializationFeature { SerializationFeature = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionSerializationFeature");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionSerializationFeature)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.SerializationFeature != null)
+            {
+                serializer.Serialize(writer, value.SerializationFeature);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionSerializationFeature");
+        }
+
+        public static readonly UnionSerializationFeatureConverter Singleton = new UnionSerializationFeatureConverter();
+    }
+
     internal class UnionSerializerProviderConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionSerializerProvider) || t == typeof(UnionSerializerProvider?);
@@ -7748,6 +8260,44 @@ namespace QuickType
         public static readonly UnionStdSerializerConverter Singleton = new UnionStdSerializerConverter();
     }
 
+    internal class UnionTextNodeConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionTextNode) || t == typeof(UnionTextNode?);
+
+        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 UnionTextNode { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<TextNode>(reader);
+                    return new UnionTextNode { TextNode = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionTextNode");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionTextNode)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.TextNode != null)
+            {
+                serializer.Serialize(writer, value.TextNode);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionTextNode");
+        }
+
+        public static readonly UnionTextNodeConverter Singleton = new UnionTextNodeConverter();
+    }
+
     internal class PurpleUnionTimeOnlyConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionTimeOnly) || t == typeof(UnionTimeOnly?);
diff --git a/base/schema-dart/test/inputs/schema/direct-union.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/direct-union.schema/default/TopLevel.dart
index bf7461a..9bcb7ef 100644
--- a/base/schema-dart/test/inputs/schema/direct-union.schema/default/TopLevel.dart
+++ b/head/schema-dart/test/inputs/schema/direct-union.schema/default/TopLevel.dart
@@ -9,18 +9,120 @@ TopLevel topLevelFromJson(String str) => TopLevel.fromJson(json.decode(str));
 String topLevelToJson(TopLevel data) => json.encode(data.toJson());
 
 class TopLevel {
+    final ArrayNode? arrayNode;
+    final BooleanNode? booleanNode;
+    final DoubleNode? doubleNode;
+    final IntNode? intNode;
+    final LongNode? longNode;
+    final NullNode? nullNode;
+    final ObjectNode? objectNode;
     final Map<String, Thing> stuff;
+    final TextNode? textNode;
 
     TopLevel({
+        this.arrayNode,
+        this.booleanNode,
+        this.doubleNode,
+        this.intNode,
+        this.longNode,
+        this.nullNode,
+        this.objectNode,
         required this.stuff,
+        this.textNode,
     });
 
     factory TopLevel.fromJson(Map<String, dynamic> json) => TopLevel(
+        arrayNode: json["arrayNode"] == null ? null : ArrayNode.fromJson(json["arrayNode"]),
+        booleanNode: json["booleanNode"] == null ? null : BooleanNode.fromJson(json["booleanNode"]),
+        doubleNode: json["doubleNode"] == null ? null : DoubleNode.fromJson(json["doubleNode"]),
+        intNode: json["intNode"] == null ? null : IntNode.fromJson(json["intNode"]),
+        longNode: json["longNode"] == null ? null : LongNode.fromJson(json["longNode"]),
+        nullNode: json["nullNode"] == null ? null : NullNode.fromJson(json["nullNode"]),
+        objectNode: json["objectNode"] == null ? null : ObjectNode.fromJson(json["objectNode"]),
         stuff: Map.from(json["stuff"]).map((k, v) => MapEntry<String, Thing>(k, Thing.fromJson(v))),
+        textNode: json["textNode"] == null ? null : TextNode.fromJson(json["textNode"]),
     );
 
     Map<String, dynamic> toJson() => {
+        "arrayNode": arrayNode?.toJson(),
+        "booleanNode": booleanNode?.toJson(),
+        "doubleNode": doubleNode?.toJson(),
+        "intNode": intNode?.toJson(),
+        "longNode": longNode?.toJson(),
+        "nullNode": nullNode?.toJson(),
+        "objectNode": objectNode?.toJson(),
         "stuff": Map.from(stuff).map((k, v) => MapEntry<String, dynamic>(k, v.toJson())),
+        "textNode": textNode?.toJson(),
+    };
+}
+
+class ArrayNode {
+    ArrayNode();
+
+    factory ArrayNode.fromJson(Map<String, dynamic> json) => ArrayNode(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
+class BooleanNode {
+    BooleanNode();
+
+    factory BooleanNode.fromJson(Map<String, dynamic> json) => BooleanNode(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
+class DoubleNode {
+    DoubleNode();
+
+    factory DoubleNode.fromJson(Map<String, dynamic> json) => DoubleNode(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
+class IntNode {
+    IntNode();
+
+    factory IntNode.fromJson(Map<String, dynamic> json) => IntNode(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
+class LongNode {
+    LongNode();
+
+    factory LongNode.fromJson(Map<String, dynamic> json) => LongNode(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
+class NullNode {
+    NullNode();
+
+    factory NullNode.fromJson(Map<String, dynamic> json) => NullNode(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
+class ObjectNode {
+    ObjectNode();
+
+    factory ObjectNode.fromJson(Map<String, dynamic> json) => ObjectNode(
+    );
+
+    Map<String, dynamic> toJson() => {
     };
 }
 
@@ -43,3 +145,13 @@ class Thing {
         "required": required,
     };
 }
+
+class TextNode {
+    TextNode();
+
+    factory TextNode.fromJson(Map<String, dynamic> json) => TextNode(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
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..4d06753 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
@@ -36,6 +36,7 @@ enum Enum {
     AND_EQ,
     ANY,
     ENUM_ANY,
+    ARRAY_NODE,
     ARRAY,
     AS,
     ASM,
@@ -55,6 +56,7 @@ enum Enum {
     ENUM_BOOL,
     PURPLE_BOOL,
     BOOLEAN,
+    BOOLEAN_NODE,
     BREAK,
     BYCOPY,
     BYREF,
@@ -98,6 +100,7 @@ enum Enum {
     DEBUGGER,
     DECIMAL,
     DECLARE,
+    DESERIALIZATION_FEATURE,
     DECLTYPE,
     DECODE_STRING,
     DECODER,
@@ -114,6 +117,7 @@ enum Enum {
     DID_SET,
     DO,
     DOUBLE,
+    DOUBLE_NODE,
     DYNAMIC,
     DYNAMIC_CAST,
     ELIF,
@@ -172,6 +176,7 @@ enum Enum {
     INOUT,
     INSTANCEOF,
     INT,
+    INT_NODE,
     INTERFACE,
     INTERNAL,
     ISO_DATE_TIME_OFFSET_CONVERTER,
@@ -201,6 +206,7 @@ enum Enum {
     LEFT,
     LET,
     LIST,
+    LONG_NODE,
     LOCALE,
     LOCK,
     LONG,
@@ -215,6 +221,7 @@ enum Enum {
     NEW,
     NEWTONSOFT,
     NIL,
+    NULL_NODE,
     NO,
     NOEXCEPT,
     NONATOMIC,
@@ -233,6 +240,7 @@ enum Enum {
     NULLPTR,
     NUMBER,
     OBJECT,
+    OBJECT_NODE,
     OBJECT_MAPPER,
     OF,
     ONEWAY,
@@ -285,6 +293,7 @@ enum Enum {
     ENUM_SELF,
     SENDABLE,
     SERIALIZE,
+    SERIALIZATION_FEATURE,
     SERIALIZER_PROVIDER,
     SET,
     SHORT,
@@ -310,6 +319,7 @@ enum Enum {
     TEMPLATE,
     THEN,
     THIS,
+    TEXT_NODE,
     THREAD_LOCAL,
     THROW,
     THROWS,
@@ -372,6 +382,7 @@ final enumValues = EnumValues({
     "and_eq": Enum.AND_EQ,
     "any": Enum.ANY,
     "Any": Enum.ENUM_ANY,
+    "ArrayNode": Enum.ARRAY_NODE,
     "array": Enum.ARRAY,
     "as": Enum.AS,
     "asm": Enum.ASM,
@@ -391,6 +402,7 @@ final enumValues = EnumValues({
     "BOOL": Enum.ENUM_BOOL,
     "bool": Enum.PURPLE_BOOL,
     "boolean": Enum.BOOLEAN,
+    "BooleanNode": Enum.BOOLEAN_NODE,
     "break": Enum.BREAK,
     "bycopy": Enum.BYCOPY,
     "byref": Enum.BYREF,
@@ -434,6 +446,7 @@ final enumValues = EnumValues({
     "debugger": Enum.DEBUGGER,
     "decimal": Enum.DECIMAL,
     "declare": Enum.DECLARE,
+    "DeserializationFeature": Enum.DESERIALIZATION_FEATURE,
     "decltype": Enum.DECLTYPE,
     "decode_string": Enum.DECODE_STRING,
     "Decoder": Enum.DECODER,
@@ -450,6 +463,7 @@ final enumValues = EnumValues({
     "didSet": Enum.DID_SET,
     "do": Enum.DO,
     "double": Enum.DOUBLE,
+    "DoubleNode": Enum.DOUBLE_NODE,
     "dynamic": Enum.DYNAMIC,
     "dynamic_cast": Enum.DYNAMIC_CAST,
     "elif": Enum.ELIF,
@@ -508,6 +522,7 @@ final enumValues = EnumValues({
     "inout": Enum.INOUT,
     "instanceof": Enum.INSTANCEOF,
     "int": Enum.INT,
+    "IntNode": Enum.INT_NODE,
     "interface": Enum.INTERFACE,
     "internal": Enum.INTERNAL,
     "IsoDateTimeOffsetConverter": Enum.ISO_DATE_TIME_OFFSET_CONVERTER,
@@ -537,6 +552,7 @@ final enumValues = EnumValues({
     "left": Enum.LEFT,
     "let": Enum.LET,
     "list": Enum.LIST,
+    "LongNode": Enum.LONG_NODE,
     "Locale": Enum.LOCALE,
     "lock": Enum.LOCK,
     "long": Enum.LONG,
@@ -551,6 +567,7 @@ final enumValues = EnumValues({
     "new": Enum.NEW,
     "newtonsoft": Enum.NEWTONSOFT,
     "nil": Enum.NIL,
+    "NullNode": Enum.NULL_NODE,
     "NO": Enum.NO,
     "noexcept": Enum.NOEXCEPT,
     "nonatomic": Enum.NONATOMIC,
@@ -569,6 +586,7 @@ final enumValues = EnumValues({
     "nullptr": Enum.NULLPTR,
     "number": Enum.NUMBER,
     "object": Enum.OBJECT,
+    "ObjectNode": Enum.OBJECT_NODE,
     "ObjectMapper": Enum.OBJECT_MAPPER,
     "of": Enum.OF,
     "oneway": Enum.ONEWAY,
@@ -621,6 +639,7 @@ final enumValues = EnumValues({
     "self": Enum.ENUM_SELF,
     "Sendable": Enum.SENDABLE,
     "serialize": Enum.SERIALIZE,
+    "SerializationFeature": Enum.SERIALIZATION_FEATURE,
     "SerializerProvider": Enum.SERIALIZER_PROVIDER,
     "set": Enum.SET,
     "short": Enum.SHORT,
@@ -646,6 +665,7 @@ final enumValues = EnumValues({
     "template": Enum.TEMPLATE,
     "then": Enum.THEN,
     "this": Enum.THIS,
+    "TextNode": Enum.TEXT_NODE,
     "thread_local": Enum.THREAD_LOCAL,
     "throw": Enum.THROW,
     "throws": Enum.THROWS,
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..1f92a60 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
@@ -21,6 +21,7 @@ class TopLevel {
     final dynamic topLevelAny;
     final dynamic any;
     final dynamic array;
+    final dynamic arrayNode;
     final dynamic topLevelAs;
     final dynamic asm;
     final dynamic topLevelAssert;
@@ -39,6 +40,7 @@ class TopLevel {
     final dynamic topLevelBool;
     final dynamic fluffyBool;
     final dynamic boolean;
+    final dynamic booleanNode;
     final dynamic topLevelBreak;
     final dynamic bycopy;
     final dynamic byref;
@@ -93,11 +95,13 @@ class TopLevel {
     final dynamic del;
     final dynamic delegate;
     final dynamic delete;
+    final dynamic deserializationFeature;
     final dynamic dict;
     final dynamic dictionary;
     final dynamic didSet;
     final dynamic topLevelDo;
     final dynamic topLevelDouble;
+    final dynamic doubleNode;
     final double? dummy;
     final dynamic topLevelDynamic;
     final dynamic dynamicCast;
@@ -159,6 +163,7 @@ class TopLevel {
     final dynamic topLevelInt;
     final dynamic topLevelInterface;
     final dynamic internal;
+    final dynamic intNode;
     final dynamic topLevelIs;
     final dynamic isoDateTimeOffsetConverter;
     final dynamic iterable;
@@ -189,6 +194,7 @@ class TopLevel {
     final dynamic locale;
     final dynamic lock;
     final dynamic long;
+    final dynamic longNode;
     final dynamic map;
     final dynamic mapEntry;
     final dynamic metadataPropertyHandling;
@@ -215,10 +221,12 @@ class TopLevel {
     final dynamic nsString;
     final dynamic topLevelNull;
     final dynamic purpleNull;
+    final dynamic nullNode;
     final dynamic nullptr;
     final dynamic number;
     final dynamic object;
     final dynamic objectMapper;
+    final dynamic objectNode;
     final dynamic of;
     final dynamic oneway;
     final dynamic open;
@@ -269,6 +277,7 @@ class TopLevel {
     final dynamic self;
     final dynamic topLevelSelf;
     final dynamic sendable;
+    final dynamic serializationFeature;
     final dynamic serialize;
     final dynamic serializerProvider;
     final dynamic topLevelSet;
@@ -293,6 +302,7 @@ class TopLevel {
     final dynamic synchronized;
     final dynamic system;
     final dynamic template;
+    final dynamic textNode;
     final dynamic then;
     final dynamic topLevelThis;
     final dynamic threadLocal;
@@ -356,6 +366,7 @@ class TopLevel {
         this.topLevelAny,
         this.any,
         this.array,
+        this.arrayNode,
         this.topLevelAs,
         this.asm,
         this.topLevelAssert,
@@ -374,6 +385,7 @@ class TopLevel {
         this.topLevelBool,
         this.fluffyBool,
         this.boolean,
+        this.booleanNode,
         this.topLevelBreak,
         this.bycopy,
         this.byref,
@@ -428,11 +440,13 @@ class TopLevel {
         this.del,
         this.delegate,
         this.delete,
+        this.deserializationFeature,
         this.dict,
         this.dictionary,
         this.didSet,
         this.topLevelDo,
         this.topLevelDouble,
+        this.doubleNode,
         this.dummy,
         this.topLevelDynamic,
         this.dynamicCast,
@@ -494,6 +508,7 @@ class TopLevel {
         this.topLevelInt,
         this.topLevelInterface,
         this.internal,
+        this.intNode,
         this.topLevelIs,
         this.isoDateTimeOffsetConverter,
         this.iterable,
@@ -524,6 +539,7 @@ class TopLevel {
         this.locale,
         this.lock,
         this.long,
+        this.longNode,
         this.map,
         this.mapEntry,
         this.metadataPropertyHandling,
@@ -550,10 +566,12 @@ class TopLevel {
         this.nsString,
         this.topLevelNull,
         this.purpleNull,
+        this.nullNode,
         this.nullptr,
         this.number,
         this.object,
         this.objectMapper,
+        this.objectNode,
         this.of,
         this.oneway,
         this.open,
@@ -604,6 +622,7 @@ class TopLevel {
         this.self,
         this.topLevelSelf,
         this.sendable,
+        this.serializationFeature,
         this.serialize,
         this.serializerProvider,
         this.topLevelSet,
@@ -628,6 +647,7 @@ class TopLevel {
         this.synchronized,
         this.system,
         this.template,
+        this.textNode,
         this.then,
         this.topLevelThis,
         this.threadLocal,
@@ -692,6 +712,7 @@ class TopLevel {
         topLevelAny: json["any"],
         any: json["Any"],
         array: json["array"],
+        arrayNode: json["ArrayNode"],
         topLevelAs: json["as"],
         asm: json["asm"],
         topLevelAssert: json["assert"],
@@ -710,6 +731,7 @@ class TopLevel {
         topLevelBool: json["BOOL"],
         fluffyBool: json["bool"],
         boolean: json["boolean"],
+        booleanNode: json["BooleanNode"],
         topLevelBreak: json["break"],
         bycopy: json["bycopy"],
         byref: json["byref"],
@@ -764,11 +786,13 @@ class TopLevel {
         del: json["del"],
         delegate: json["delegate"],
         delete: json["delete"],
+        deserializationFeature: json["DeserializationFeature"],
         dict: json["dict"],
         dictionary: json["dictionary"],
         didSet: json["didSet"],
         topLevelDo: json["do"],
         topLevelDouble: json["double"],
+        doubleNode: json["DoubleNode"],
         dummy: json["dummy"]?.toDouble(),
         topLevelDynamic: json["dynamic"],
         dynamicCast: json["dynamic_cast"],
@@ -830,6 +854,7 @@ class TopLevel {
         topLevelInt: json["int"],
         topLevelInterface: json["interface"],
         internal: json["internal"],
+        intNode: json["IntNode"],
         topLevelIs: json["is"],
         isoDateTimeOffsetConverter: json["IsoDateTimeOffsetConverter"],
         iterable: json["iterable"],
@@ -860,6 +885,7 @@ class TopLevel {
         locale: json["Locale"],
         lock: json["lock"],
         long: json["long"],
+        longNode: json["LongNode"],
         map: json["map"],
         mapEntry: json["MapEntry"],
         metadataPropertyHandling: json["metadata_property_handling"],
@@ -886,10 +912,12 @@ class TopLevel {
         nsString: json["NSString"],
         topLevelNull: json["NULL"],
         purpleNull: json["null"],
+        nullNode: json["NullNode"],
         nullptr: json["nullptr"],
         number: json["number"],
         object: json["object"],
         objectMapper: json["ObjectMapper"],
+        objectNode: json["ObjectNode"],
         of: json["of"],
         oneway: json["oneway"],
         open: json["open"],
@@ -940,6 +968,7 @@ class TopLevel {
         self: json["Self"],
         topLevelSelf: json["self"],
         sendable: json["Sendable"],
+        serializationFeature: json["SerializationFeature"],
         serialize: json["serialize"],
         serializerProvider: json["SerializerProvider"],
         topLevelSet: json["set"],
@@ -964,6 +993,7 @@ class TopLevel {
         synchronized: json["synchronized"],
         system: json["system"],
         template: json["template"],
+        textNode: json["TextNode"],
         then: json["then"],
         topLevelThis: json["this"],
         threadLocal: json["thread_local"],
@@ -1028,6 +1058,7 @@ class TopLevel {
         "any": topLevelAny,
         "Any": any,
         "array": array,
+        "ArrayNode": arrayNode,
         "as": topLevelAs,
         "asm": asm,
         "assert": topLevelAssert,
@@ -1046,6 +1077,7 @@ class TopLevel {
         "BOOL": topLevelBool,
         "bool": fluffyBool,
         "boolean": boolean,
+        "BooleanNode": booleanNode,
         "break": topLevelBreak,
         "bycopy": bycopy,
         "byref": byref,
@@ -1100,11 +1132,13 @@ class TopLevel {
         "del": del,
         "delegate": delegate,
         "delete": delete,
+        "DeserializationFeature": deserializationFeature,
         "dict": dict,
         "dictionary": dictionary,
         "didSet": didSet,
         "do": topLevelDo,
         "double": topLevelDouble,
+        "DoubleNode": doubleNode,
         "dummy": dummy,
         "dynamic": topLevelDynamic,
         "dynamic_cast": dynamicCast,
@@ -1166,6 +1200,7 @@ class TopLevel {
         "int": topLevelInt,
         "interface": topLevelInterface,
         "internal": internal,
+        "IntNode": intNode,
         "is": topLevelIs,
         "IsoDateTimeOffsetConverter": isoDateTimeOffsetConverter,
         "iterable": iterable,
@@ -1196,6 +1231,7 @@ class TopLevel {
         "Locale": locale,
         "lock": lock,
         "long": long,
+        "LongNode": longNode,
         "map": map,
         "MapEntry": mapEntry,
         "metadata_property_handling": metadataPropertyHandling,
@@ -1222,10 +1258,12 @@ class TopLevel {
         "NSString": nsString,
         "NULL": topLevelNull,
         "null": purpleNull,
+        "NullNode": nullNode,
         "nullptr": nullptr,
         "number": number,
         "object": object,
         "ObjectMapper": objectMapper,
+        "ObjectNode": objectNode,
         "of": of,
         "oneway": oneway,
         "open": open,
@@ -1276,6 +1314,7 @@ class TopLevel {
         "Self": self,
         "self": topLevelSelf,
         "Sendable": sendable,
+        "SerializationFeature": serializationFeature,
         "serialize": serialize,
         "SerializerProvider": serializerProvider,
         "set": topLevelSet,
@@ -1300,6 +1339,7 @@ class TopLevel {
         "synchronized": synchronized,
         "system": system,
         "template": template,
+        "TextNode": textNode,
         "then": then,
         "this": topLevelThis,
         "thread_local": threadLocal,
@@ -1412,6 +1452,16 @@ class Array {
     };
 }
 
+class ArrayNode {
+    ArrayNode();
+
+    factory ArrayNode.fromJson(Map<String, dynamic> json) => ArrayNode(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
 class Asm {
     Asm();
 
@@ -1532,6 +1582,16 @@ class Boolean {
     };
 }
 
+class BooleanNode {
+    BooleanNode();
+
+    factory BooleanNode.fromJson(Map<String, dynamic> json) => BooleanNode(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
 class Bycopy {
     Bycopy();
 
@@ -2002,6 +2062,16 @@ class Delete {
     };
 }
 
+class DeserializationFeature {
+    DeserializationFeature();
+
+    factory DeserializationFeature.fromJson(Map<String, dynamic> json) => DeserializationFeature(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
 class Dict {
     Dict();
 
@@ -2032,6 +2102,16 @@ class DidSet {
     };
 }
 
+class DoubleNode {
+    DoubleNode();
+
+    factory DoubleNode.fromJson(Map<String, dynamic> json) => DoubleNode(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
 class DynamicCast {
     DynamicCast();
 
@@ -2462,6 +2542,16 @@ class Instanceof {
     };
 }
 
+class IntNode {
+    IntNode();
+
+    factory IntNode.fromJson(Map<String, dynamic> json) => IntNode(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
 class Internal {
     Internal();
 
@@ -2762,6 +2852,16 @@ class Long {
     };
 }
 
+class LongNode {
+    LongNode();
+
+    factory LongNode.fromJson(Map<String, dynamic> json) => LongNode(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
 class MapClass {
     MapClass();
 
@@ -2972,6 +3072,16 @@ class NsString {
     };
 }
 
+class NullNode {
+    NullNode();
+
+    factory NullNode.fromJson(Map<String, dynamic> json) => NullNode(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
 class Nullptr {
     Nullptr();
 
@@ -3012,6 +3122,16 @@ class ObjectMapper {
     };
 }
 
+class ObjectNode {
+    ObjectNode();
+
+    factory ObjectNode.fromJson(Map<String, dynamic> json) => ObjectNode(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
 class Of {
     Of();
 
@@ -3512,6 +3632,16 @@ class Sendable {
     };
 }
 
+class SerializationFeature {
+    SerializationFeature();
+
+    factory SerializationFeature.fromJson(Map<String, dynamic> json) => SerializationFeature(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
 class Serialize {
     Serialize();
 
@@ -3712,6 +3842,16 @@ class Template {
     };
 }
 
+class TextNode {
+    TextNode();
+
+    factory TextNode.fromJson(Map<String, dynamic> json) => TextNode(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
 class Then {
     Then();
 
diff --git a/base/schema-elixir/test/inputs/schema/direct-union.schema/default/QuickType.ex b/head/schema-elixir/test/inputs/schema/direct-union.schema/default/QuickType.ex
index 3e3f57e..ff542a8 100644
--- a/base/schema-elixir/test/inputs/schema/direct-union.schema/default/QuickType.ex
+++ b/head/schema-elixir/test/inputs/schema/direct-union.schema/default/QuickType.ex
@@ -5,6 +5,209 @@
 # Decode a JSON string: TopLevel.from_json(data)
 # Encode into a JSON string: TopLevel.to_json(struct)
 
+defmodule ArrayNode do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %ArrayNode{
+    }
+  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 BooleanNode do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %BooleanNode{
+    }
+  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 DoubleNode do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %DoubleNode{
+    }
+  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 IntNode do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %IntNode{
+    }
+  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 LongNode do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %LongNode{
+    }
+  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 NullNode do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %NullNode{
+    }
+  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 ObjectNode do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %ObjectNode{
+    }
+  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 Thing do
   @enforce_keys [:required]
   defstruct [:optional, :required]
@@ -77,18 +280,63 @@ defmodule Thing do
   end
 end
 
+defmodule TextNode do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %TextNode{
+    }
+  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 TopLevel do
   @enforce_keys [:stuff]
-  defstruct [:stuff]
+  defstruct [:array_node, :boolean_node, :double_node, :int_node, :long_node, :null_node, :object_node, :stuff, :text_node]
 
   @type t :: %__MODULE__{
-          stuff: %{String.t() => Thing.t()}
+          array_node: ArrayNode.t() | nil,
+          boolean_node: BooleanNode.t() | nil,
+          double_node: DoubleNode.t() | nil,
+          int_node: IntNode.t() | nil,
+          long_node: LongNode.t() | nil,
+          null_node: NullNode.t() | nil,
+          object_node: ObjectNode.t() | nil,
+          stuff: %{String.t() => Thing.t()},
+          text_node: TextNode.t() | nil
         }
 
   def from_map(m) do
     %TopLevel{
+      array_node: m["arrayNode"] && ArrayNode.from_map(m["arrayNode"]),
+      boolean_node: m["booleanNode"] && BooleanNode.from_map(m["booleanNode"]),
+      double_node: m["doubleNode"] && DoubleNode.from_map(m["doubleNode"]),
+      int_node: m["intNode"] && IntNode.from_map(m["intNode"]),
+      long_node: m["longNode"] && LongNode.from_map(m["longNode"]),
+      null_node: m["nullNode"] && NullNode.from_map(m["nullNode"]),
+      object_node: m["objectNode"] && ObjectNode.from_map(m["objectNode"]),
       stuff: m["stuff"]
       |> Map.new(fn {key, value} -> {key, Thing.from_map(value)} end),
+      text_node: m["textNode"] && TextNode.from_map(m["textNode"]),
     }
   end
 
@@ -100,8 +348,16 @@ defmodule TopLevel do
 
   def to_map(struct) do
     %{
+      "arrayNode" => struct.array_node && ArrayNode.to_map(struct.array_node),
+      "booleanNode" => struct.boolean_node && BooleanNode.to_map(struct.boolean_node),
+      "doubleNode" => struct.double_node && DoubleNode.to_map(struct.double_node),
+      "intNode" => struct.int_node && IntNode.to_map(struct.int_node),
+      "longNode" => struct.long_node && LongNode.to_map(struct.long_node),
+      "nullNode" => struct.null_node && NullNode.to_map(struct.null_node),
+      "objectNode" => struct.object_node && ObjectNode.to_map(struct.object_node),
       "stuff" => struct.stuff
       |> Map.new(fn {key, value} -> {key, Thing.to_map(value)} end),
+      "textNode" => struct.text_node && TextNode.to_map(struct.text_node),
     }
   end
 
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..5384edc 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
@@ -18,6 +18,7 @@ defmodule EnumEnum do
     :and_eq,
     :any,
     :Any,
+    :ArrayNode,
     :array,
     :as,
     :asm,
@@ -37,6 +38,7 @@ defmodule EnumEnum do
     :BOOL,
     :bool,
     :boolean,
+    :BooleanNode,
     :break,
     :bycopy,
     :byref,
@@ -80,6 +82,7 @@ defmodule EnumEnum do
     :debugger,
     :decimal,
     :declare,
+    :DeserializationFeature,
     :decltype,
     :decode_string,
     :Decoder,
@@ -96,6 +99,7 @@ defmodule EnumEnum do
     :didSet,
     :do,
     :double,
+    :DoubleNode,
     :dynamic,
     :dynamic_cast,
     :elif,
@@ -154,6 +158,7 @@ defmodule EnumEnum do
     :inout,
     :instanceof,
     :int,
+    :IntNode,
     :interface,
     :internal,
     :IsoDateTimeOffsetConverter,
@@ -183,6 +188,7 @@ defmodule EnumEnum do
     :left,
     :let,
     :list,
+    :LongNode,
     :Locale,
     :lock,
     :long,
@@ -197,6 +203,7 @@ defmodule EnumEnum do
     :new,
     :newtonsoft,
     :nil,
+    :NullNode,
     :NO,
     :noexcept,
     :nonatomic,
@@ -215,6 +222,7 @@ defmodule EnumEnum do
     :nullptr,
     :number,
     :object,
+    :ObjectNode,
     :ObjectMapper,
     :of,
     :oneway,
@@ -267,6 +275,7 @@ defmodule EnumEnum do
     :self,
     :Sendable,
     :serialize,
+    :SerializationFeature,
     :SerializerProvider,
     :set,
     :short,
@@ -292,6 +301,7 @@ defmodule EnumEnum do
     :template,
     :then,
     :this,
+    :TextNode,
     :thread_local,
     :throw,
     :throws,
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..b137dfa 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
@@ -179,6 +179,35 @@ defmodule Array do
   end
 end
 
+defmodule ArrayNode do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %ArrayNode{
+    }
+  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 As do
   defstruct []
 
@@ -701,6 +730,35 @@ defmodule Boolean do
   end
 end
 
+defmodule BooleanNode do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %BooleanNode{
+    }
+  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 Break do
   defstruct []
 
@@ -2209,6 +2267,35 @@ defmodule Delete do
   end
 end
 
+defmodule DeserializationFeature do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %DeserializationFeature{
+    }
+  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 DictClass do
   defstruct []
 
@@ -2325,6 +2412,35 @@ defmodule Double do
   end
 end
 
+defmodule DoubleNode do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %DoubleNode{
+    }
+  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 Dynamic do
   defstruct []
 
@@ -3949,6 +4065,35 @@ defmodule Int do
   end
 end
 
+defmodule IntNode do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %IntNode{
+    }
+  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 Interface do
   defstruct []
 
@@ -4877,6 +5022,35 @@ defmodule Long do
   end
 end
 
+defmodule LongNode do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %LongNode{
+    }
+  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 MapClass do
   defstruct []
 
@@ -5515,6 +5689,35 @@ defmodule Null do
   end
 end
 
+defmodule NullNode do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %NullNode{
+    }
+  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 Nullptr do
   defstruct []
 
@@ -5631,6 +5834,35 @@ defmodule ObjectMapper do
   end
 end
 
+defmodule ObjectNode do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %ObjectNode{
+    }
+  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 Of do
   defstruct []
 
@@ -6994,6 +7226,35 @@ defmodule Sendable do
   end
 end
 
+defmodule SerializationFeature do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %SerializationFeature{
+    }
+  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 []
 
@@ -7690,6 +7951,35 @@ defmodule Template do
   end
 end
 
+defmodule TextNode do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %TextNode{
+    }
+  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 Then do
   defstruct []
 
@@ -9634,7 +9924,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, :array_node, :as, :asm, :assert, :associatedtype, :associativity, :async, :atomic, :atomic_cancel, :atomic_commit, :atomic_noexcept, :auto, :await, :base, :bitand, :bitor, :bool, :bool_1, :boolean, :boolean_node, :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, :deserialization_feature, :dict, :dictionary, :did_set, :top_level_do, :double, :double_node, :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, :int_node, :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, :long_node, :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, :null_node, :nullptr, :number, :object, :object_mapper, :object_node, :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, :serialization_feature, :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, :text_node, :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]
 
   @type t :: %__MODULE__{
           empty: Empty.t() | float() | nil,
@@ -9649,6 +9939,7 @@ defmodule TopLevel do
           top_level_any: UnionAnyAny.t() | float() | nil,
           any: AnyClass.t() | float() | nil,
           array: Array.t() | float() | nil,
+          array_node: ArrayNode.t() | float() | nil,
           as: As.t() | float() | nil,
           asm: ASM.t() | float() | nil,
           assert: Assert.t() | float() | nil,
@@ -9667,6 +9958,7 @@ defmodule TopLevel do
           bool: Bool.t() | float() | nil,
           bool_1: UnionBoolBool.t() | float() | nil,
           boolean: Boolean.t() | float() | nil,
+          boolean_node: BooleanNode.t() | float() | nil,
           break: Break.t() | float() | nil,
           bycopy: Bycopy.t() | float() | nil,
           byref: Byref.t() | float() | nil,
@@ -9721,11 +10013,13 @@ defmodule TopLevel do
           del: Del.t() | float() | nil,
           delegate: Delegate.t() | float() | nil,
           delete: Delete.t() | float() | nil,
+          deserialization_feature: DeserializationFeature.t() | float() | nil,
           dict: DictClass.t() | float() | nil,
           dictionary: Dictionary.t() | float() | nil,
           did_set: DidSet.t() | float() | nil,
           top_level_do: DoClass.t() | float() | nil,
           double: Double.t() | float() | nil,
+          double_node: DoubleNode.t() | float() | nil,
           dummy: float() | nil,
           dynamic: Dynamic.t() | float() | nil,
           dynamic_cast: DynamicCast.t() | float() | nil,
@@ -9787,6 +10081,7 @@ defmodule TopLevel do
           int: Int.t() | float() | nil,
           interface: Interface.t() | float() | nil,
           internal: Internal.t() | float() | nil,
+          int_node: IntNode.t() | float() | nil,
           is: Is.t() | float() | nil,
           iso_date_time_offset_converter: ISODateTimeOffsetConverter.t() | float() | nil,
           iterable: Iterable.t() | float() | nil,
@@ -9817,6 +10112,7 @@ defmodule TopLevel do
           locale: Locale.t() | float() | nil,
           lock: Lock.t() | float() | nil,
           long: Long.t() | float() | nil,
+          long_node: LongNode.t() | float() | nil,
           map: MapClass.t() | float() | nil,
           map_entry: MapEntry.t() | float() | nil,
           metadata_property_handling: MetadataPropertyHandling.t() | float() | nil,
@@ -9843,10 +10139,12 @@ defmodule TopLevel do
           ns_string: NSString.t() | float() | nil,
           null: Null.t() | float() | nil,
           top_level_null: NullClass.t() | float() | nil,
+          null_node: NullNode.t() | float() | nil,
           nullptr: Nullptr.t() | float() | nil,
           number: Number.t() | float() | nil,
           object: Object.t() | float() | nil,
           object_mapper: ObjectMapper.t() | float() | nil,
+          object_node: ObjectNode.t() | float() | nil,
           of: Of.t() | float() | nil,
           oneway: Oneway.t() | float() | nil,
           open: Open.t() | float() | nil,
@@ -9897,6 +10195,7 @@ defmodule TopLevel do
           self: Self.t() | float() | nil,
           top_level_self: SelfClass.t() | float() | nil,
           sendable: Sendable.t() | float() | nil,
+          serialization_feature: SerializationFeature.t() | float() | nil,
           serialize: Serialize.t() | float() | nil,
           serializer_provider: SerializerProvider.t() | float() | nil,
           set: SetClass.t() | float() | nil,
@@ -9921,6 +10220,7 @@ defmodule TopLevel do
           synchronized: Synchronized.t() | float() | nil,
           system: SystemClass.t() | float() | nil,
           template: Template.t() | float() | nil,
+          text_node: TextNode.t() | float() | nil,
           then: Then.t() | float() | nil,
           this: This.t() | float() | nil,
           thread_local: ThreadLocal.t() | float() | nil,
@@ -10116,6 +10416,18 @@ defmodule TopLevel do
   def encode_array(value) when is_nil(value), do: value
   def encode_array(_), do: {:error, "Unexpected type when encoding TopLevel.array"}
 
+  def decode_array_node(%{} = value), do: ArrayNode.from_map(value)
+  def decode_array_node(value) when is_float(value), do: value
+  def decode_array_node(value) when is_integer(value), do: value
+  def decode_array_node(value) when is_nil(value), do: value
+  def decode_array_node(_), do: {:error, "Unexpected type when decoding TopLevel.array_node"}
+
+  def encode_array_node(%ArrayNode{} = value), do: ArrayNode.to_map(value)
+  def encode_array_node(value) when is_float(value), do: value
+  def encode_array_node(value) when is_integer(value), do: value
+  def encode_array_node(value) when is_nil(value), do: value
+  def encode_array_node(_), do: {:error, "Unexpected type when encoding TopLevel.array_node"}
+
   def decode_as(%{} = value), do: As.from_map(value)
   def decode_as(value) when is_float(value), do: value
   def decode_as(value) when is_integer(value), do: value
@@ -10332,6 +10644,18 @@ defmodule TopLevel do
   def encode_boolean(value) when is_nil(value), do: value
   def encode_boolean(_), do: {:error, "Unexpected type when encoding TopLevel.boolean"}
 
+  def decode_boolean_node(%{} = value), do: BooleanNode.from_map(value)
+  def decode_boolean_node(value) when is_float(value), do: value
+  def decode_boolean_node(value) when is_integer(value), do: value
+  def decode_boolean_node(value) when is_nil(value), do: value
+  def decode_boolean_node(_), do: {:error, "Unexpected type when decoding TopLevel.boolean_node"}
+
+  def encode_boolean_node(%BooleanNode{} = value), do: BooleanNode.to_map(value)
+  def encode_boolean_node(value) when is_float(value), do: value
+  def encode_boolean_node(value) when is_integer(value), do: value
+  def encode_boolean_node(value) when is_nil(value), do: value
+  def encode_boolean_node(_), do: {:error, "Unexpected type when encoding TopLevel.boolean_node"}
+
   def decode_break(%{} = value), do: Break.from_map(value)
   def decode_break(value) when is_float(value), do: value
   def decode_break(value) when is_integer(value), do: value
@@ -10980,6 +11304,18 @@ defmodule TopLevel do
   def encode_delete(value) when is_nil(value), do: value
   def encode_delete(_), do: {:error, "Unexpected type when encoding TopLevel.delete"}
 
+  def decode_deserialization_feature(%{} = value), do: DeserializationFeature.from_map(value)
+  def decode_deserialization_feature(value) when is_float(value), do: value
+  def decode_deserialization_feature(value) when is_integer(value), do: value
+  def decode_deserialization_feature(value) when is_nil(value), do: value
+  def decode_deserialization_feature(_), do: {:error, "Unexpected type when decoding TopLevel.deserialization_feature"}
+
+  def encode_deserialization_feature(%DeserializationFeature{} = value), do: DeserializationFeature.to_map(value)
+  def encode_deserialization_feature(value) when is_float(value), do: value
+  def encode_deserialization_feature(value) when is_integer(value), do: value
+  def encode_deserialization_feature(value) when is_nil(value), do: value
+  def encode_deserialization_feature(_), do: {:error, "Unexpected type when encoding TopLevel.deserialization_feature"}
+
   def decode_dict(%{} = value), do: DictClass.from_map(value)
   def decode_dict(value) when is_float(value), do: value
   def decode_dict(value) when is_integer(value), do: value
@@ -11040,6 +11376,18 @@ defmodule TopLevel do
   def encode_double(value) when is_nil(value), do: value
   def encode_double(_), do: {:error, "Unexpected type when encoding TopLevel.double"}
 
+  def decode_double_node(%{} = value), do: DoubleNode.from_map(value)
+  def decode_double_node(value) when is_float(value), do: value
+  def decode_double_node(value) when is_integer(value), do: value
+  def decode_double_node(value) when is_nil(value), do: value
+  def decode_double_node(_), do: {:error, "Unexpected type when decoding TopLevel.double_node"}
+
+  def encode_double_node(%DoubleNode{} = value), do: DoubleNode.to_map(value)
+  def encode_double_node(value) when is_float(value), do: value
+  def encode_double_node(value) when is_integer(value), do: value
+  def encode_double_node(value) when is_nil(value), do: value
+  def encode_double_node(_), do: {:error, "Unexpected type when encoding TopLevel.double_node"}
+
   def decode_dummy(value) when is_float(value), do: value
   def decode_dummy(value) when is_integer(value), do: value
   def decode_dummy(_), do: {:error, "Unexpected type when decoding TopLevel.dummy"}
@@ -11768,6 +12116,18 @@ defmodule TopLevel do
   def encode_internal(value) when is_nil(value), do: value
   def encode_internal(_), do: {:error, "Unexpected type when encoding TopLevel.internal"}
 
+  def decode_int_node(%{} = value), do: IntNode.from_map(value)
+  def decode_int_node(value) when is_float(value), do: value
+  def decode_int_node(value) when is_integer(value), do: value
+  def decode_int_node(value) when is_nil(value), do: value
+  def decode_int_node(_), do: {:error, "Unexpected type when decoding TopLevel.int_node"}
+
+  def encode_int_node(%IntNode{} = value), do: IntNode.to_map(value)
+  def encode_int_node(value) when is_float(value), do: value
+  def encode_int_node(value) when is_integer(value), do: value
+  def encode_int_node(value) when is_nil(value), do: value
+  def encode_int_node(_), do: {:error, "Unexpected type when encoding TopLevel.int_node"}
+
   def decode_is(%{} = value), do: Is.from_map(value)
   def decode_is(value) when is_float(value), do: value
   def decode_is(value) when is_integer(value), do: value
@@ -12128,6 +12488,18 @@ defmodule TopLevel do
   def encode_long(value) when is_nil(value), do: value
   def encode_long(_), do: {:error, "Unexpected type when encoding TopLevel.long"}
 
+  def decode_long_node(%{} = value), do: LongNode.from_map(value)
+  def decode_long_node(value) when is_float(value), do: value
+  def decode_long_node(value) when is_integer(value), do: value
+  def decode_long_node(value) when is_nil(value), do: value
+  def decode_long_node(_), do: {:error, "Unexpected type when decoding TopLevel.long_node"}
+
+  def encode_long_node(%LongNode{} = value), do: LongNode.to_map(value)
+  def encode_long_node(value) when is_float(value), do: value
+  def encode_long_node(value) when is_integer(value), do: value
+  def encode_long_node(value) when is_nil(value), do: value
+  def encode_long_node(_), do: {:error, "Unexpected type when encoding TopLevel.long_node"}
+
   def decode_map(%{} = value), do: MapClass.from_map(value)
   def decode_map(value) when is_float(value), do: value
   def decode_map(value) when is_integer(value), do: value
@@ -12440,6 +12812,18 @@ defmodule TopLevel do
   def encode_top_level_null(value) when is_nil(value), do: value
   def encode_top_level_null(_), do: {:error, "Unexpected type when encoding TopLevel.top_level_null"}
 
+  def decode_null_node(%{} = value), do: NullNode.from_map(value)
+  def decode_null_node(value) when is_float(value), do: value
+  def decode_null_node(value) when is_integer(value), do: value
+  def decode_null_node(value) when is_nil(value), do: value
+  def decode_null_node(_), do: {:error, "Unexpected type when decoding TopLevel.null_node"}
+
+  def encode_null_node(%NullNode{} = value), do: NullNode.to_map(value)
+  def encode_null_node(value) when is_float(value), do: value
+  def encode_null_node(value) when is_integer(value), do: value
+  def encode_null_node(value) when is_nil(value), do: value
+  def encode_null_node(_), do: {:error, "Unexpected type when encoding TopLevel.null_node"}
+
   def decode_nullptr(%{} = value), do: Nullptr.from_map(value)
   def decode_nullptr(value) when is_float(value), do: value
   def decode_nullptr(value) when is_integer(value), do: value
@@ -12488,6 +12872,18 @@ defmodule TopLevel do
   def encode_object_mapper(value) when is_nil(value), do: value
   def encode_object_mapper(_), do: {:error, "Unexpected type when encoding TopLevel.object_mapper"}
 
+  def decode_object_node(%{} = value), do: ObjectNode.from_map(value)
+  def decode_object_node(value) when is_float(value), do: value
+  def decode_object_node(value) when is_integer(value), do: value
+  def decode_object_node(value) when is_nil(value), do: value
+  def decode_object_node(_), do: {:error, "Unexpected type when decoding TopLevel.object_node"}
+
+  def encode_object_node(%ObjectNode{} = value), do: ObjectNode.to_map(value)
+  def encode_object_node(value) when is_float(value), do: value
+  def encode_object_node(value) when is_integer(value), do: value
+  def encode_object_node(value) when is_nil(value), do: value
+  def encode_object_node(_), do: {:error, "Unexpected type when encoding TopLevel.object_node"}
+
   def decode_of(%{} = value), do: Of.from_map(value)
   def decode_of(value) when is_float(value), do: value
   def decode_of(value) when is_integer(value), do: value
@@ -13088,6 +13484,18 @@ 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_serialization_feature(%{} = value), do: SerializationFeature.from_map(value)
+  def decode_serialization_feature(value) when is_float(value), do: value
+  def decode_serialization_feature(value) when is_integer(value), do: value
+  def decode_serialization_feature(value) when is_nil(value), do: value
+  def decode_serialization_feature(_), do: {:error, "Unexpected type when decoding TopLevel.serialization_feature"}
+
+  def encode_serialization_feature(%SerializationFeature{} = value), do: SerializationFeature.to_map(value)
+  def encode_serialization_feature(value) when is_float(value), do: value
+  def encode_serialization_feature(value) when is_integer(value), do: value
+  def encode_serialization_feature(value) when is_nil(value), do: value
+  def encode_serialization_feature(_), do: {:error, "Unexpected type when encoding TopLevel.serialization_feature"}
+
   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
@@ -13376,6 +13784,18 @@ defmodule TopLevel do
   def encode_template(value) when is_nil(value), do: value
   def encode_template(_), do: {:error, "Unexpected type when encoding TopLevel.template"}
 
+  def decode_text_node(%{} = value), do: TextNode.from_map(value)
+  def decode_text_node(value) when is_float(value), do: value
+  def decode_text_node(value) when is_integer(value), do: value
+  def decode_text_node(value) when is_nil(value), do: value
+  def decode_text_node(_), do: {:error, "Unexpected type when decoding TopLevel.text_node"}
+
+  def encode_text_node(%TextNode{} = value), do: TextNode.to_map(value)
+  def encode_text_node(value) when is_float(value), do: value
+  def encode_text_node(value) when is_integer(value), do: value
+  def encode_text_node(value) when is_nil(value), do: value
+  def encode_text_node(_), do: {:error, "Unexpected type when encoding TopLevel.text_node"}
+
   def decode_then(%{} = value), do: Then.from_map(value)
   def decode_then(value) when is_float(value), do: value
   def decode_then(value) when is_integer(value), do: value
@@ -13978,6 +14398,7 @@ defmodule TopLevel do
       top_level_any: decode_top_level_any(m["any"]),
       any: decode_any(m["Any"]),
       array: decode_array(m["array"]),
+      array_node: decode_array_node(m["ArrayNode"]),
       as: decode_as(m["as"]),
       asm: decode_asm(m["asm"]),
       assert: decode_assert(m["assert"]),
@@ -13996,6 +14417,7 @@ defmodule TopLevel do
       bool: decode_bool(m["BOOL"]),
       bool_1: decode_bool_1(m["bool"]),
       boolean: decode_boolean(m["boolean"]),
+      boolean_node: decode_boolean_node(m["BooleanNode"]),
       break: decode_break(m["break"]),
       bycopy: decode_bycopy(m["bycopy"]),
       byref: decode_byref(m["byref"]),
@@ -14050,11 +14472,13 @@ defmodule TopLevel do
       del: decode_del(m["del"]),
       delegate: decode_delegate(m["delegate"]),
       delete: decode_delete(m["delete"]),
+      deserialization_feature: decode_deserialization_feature(m["DeserializationFeature"]),
       dict: decode_dict(m["dict"]),
       dictionary: decode_dictionary(m["dictionary"]),
       did_set: decode_did_set(m["didSet"]),
       top_level_do: decode_top_level_do(m["do"]),
       double: decode_double(m["double"]),
+      double_node: decode_double_node(m["DoubleNode"]),
       dummy: (if Map.has_key?(m, "dummy"), do: decode_dummy(m["dummy"])),
       dynamic: decode_dynamic(m["dynamic"]),
       dynamic_cast: decode_dynamic_cast(m["dynamic_cast"]),
@@ -14116,6 +14540,7 @@ defmodule TopLevel do
       int: decode_int(m["int"]),
       interface: decode_interface(m["interface"]),
       internal: decode_internal(m["internal"]),
+      int_node: decode_int_node(m["IntNode"]),
       is: decode_is(m["is"]),
       iso_date_time_offset_converter: decode_iso_date_time_offset_converter(m["IsoDateTimeOffsetConverter"]),
       iterable: decode_iterable(m["iterable"]),
@@ -14146,6 +14571,7 @@ defmodule TopLevel do
       locale: decode_locale(m["Locale"]),
       lock: decode_lock(m["lock"]),
       long: decode_long(m["long"]),
+      long_node: decode_long_node(m["LongNode"]),
       map: decode_map(m["map"]),
       map_entry: decode_map_entry(m["MapEntry"]),
       metadata_property_handling: decode_metadata_property_handling(m["metadata_property_handling"]),
@@ -14172,10 +14598,12 @@ defmodule TopLevel do
       ns_string: decode_ns_string(m["NSString"]),
       null: decode_null(m["NULL"]),
       top_level_null: decode_top_level_null(m["null"]),
+      null_node: decode_null_node(m["NullNode"]),
       nullptr: decode_nullptr(m["nullptr"]),
       number: decode_number(m["number"]),
       object: decode_object(m["object"]),
       object_mapper: decode_object_mapper(m["ObjectMapper"]),
+      object_node: decode_object_node(m["ObjectNode"]),
       of: decode_of(m["of"]),
       oneway: decode_oneway(m["oneway"]),
       open: decode_open(m["open"]),
@@ -14226,6 +14654,7 @@ defmodule TopLevel do
       self: decode_self(m["Self"]),
       top_level_self: decode_top_level_self(m["self"]),
       sendable: decode_sendable(m["Sendable"]),
+      serialization_feature: decode_serialization_feature(m["SerializationFeature"]),
       serialize: decode_serialize(m["serialize"]),
       serializer_provider: decode_serializer_provider(m["SerializerProvider"]),
       set: decode_set(m["set"]),
@@ -14250,6 +14679,7 @@ defmodule TopLevel do
       synchronized: decode_synchronized(m["synchronized"]),
       system: decode_system(m["system"]),
       template: decode_template(m["template"]),
+      text_node: decode_text_node(m["TextNode"]),
       then: decode_then(m["then"]),
       this: decode_this(m["this"]),
       thread_local: decode_thread_local(m["thread_local"]),
@@ -14322,6 +14752,7 @@ defmodule TopLevel do
       "any" => encode_top_level_any(struct.top_level_any),
       "Any" => encode_any(struct.any),
       "array" => encode_array(struct.array),
+      "ArrayNode" => encode_array_node(struct.array_node),
       "as" => encode_as(struct.as),
       "asm" => encode_asm(struct.asm),
       "assert" => encode_assert(struct.assert),
@@ -14340,6 +14771,7 @@ defmodule TopLevel do
       "BOOL" => encode_bool(struct.bool),
       "bool" => encode_bool_1(struct.bool_1),
       "boolean" => encode_boolean(struct.boolean),
+      "BooleanNode" => encode_boolean_node(struct.boolean_node),
       "break" => encode_break(struct.break),
       "bycopy" => encode_bycopy(struct.bycopy),
       "byref" => encode_byref(struct.byref),
@@ -14394,11 +14826,13 @@ defmodule TopLevel do
       "del" => encode_del(struct.del),
       "delegate" => encode_delegate(struct.delegate),
       "delete" => encode_delete(struct.delete),
+      "DeserializationFeature" => encode_deserialization_feature(struct.deserialization_feature),
       "dict" => encode_dict(struct.dict),
       "dictionary" => encode_dictionary(struct.dictionary),
       "didSet" => encode_did_set(struct.did_set),
       "do" => encode_top_level_do(struct.top_level_do),
       "double" => encode_double(struct.double),
+      "DoubleNode" => encode_double_node(struct.double_node),
       "dummy" => struct.dummy,
       "dynamic" => encode_dynamic(struct.dynamic),
       "dynamic_cast" => encode_dynamic_cast(struct.dynamic_cast),
@@ -14460,6 +14894,7 @@ defmodule TopLevel do
       "int" => encode_int(struct.int),
       "interface" => encode_interface(struct.interface),
       "internal" => encode_internal(struct.internal),
+      "IntNode" => encode_int_node(struct.int_node),
       "is" => encode_is(struct.is),
       "IsoDateTimeOffsetConverter" => encode_iso_date_time_offset_converter(struct.iso_date_time_offset_converter),
       "iterable" => encode_iterable(struct.iterable),
@@ -14490,6 +14925,7 @@ defmodule TopLevel do
       "Locale" => encode_locale(struct.locale),
       "lock" => encode_lock(struct.lock),
       "long" => encode_long(struct.long),
+      "LongNode" => encode_long_node(struct.long_node),
       "map" => encode_map(struct.map),
       "MapEntry" => encode_map_entry(struct.map_entry),
       "metadata_property_handling" => encode_metadata_property_handling(struct.metadata_property_handling),
@@ -14516,10 +14952,12 @@ defmodule TopLevel do
       "NSString" => encode_ns_string(struct.ns_string),
       "NULL" => encode_null(struct.null),
       "null" => encode_top_level_null(struct.top_level_null),
+      "NullNode" => encode_null_node(struct.null_node),
       "nullptr" => encode_nullptr(struct.nullptr),
       "number" => encode_number(struct.number),
       "object" => encode_object(struct.object),
       "ObjectMapper" => encode_object_mapper(struct.object_mapper),
+      "ObjectNode" => encode_object_node(struct.object_node),
       "of" => encode_of(struct.of),
       "oneway" => encode_oneway(struct.oneway),
       "open" => encode_open(struct.open),
@@ -14570,6 +15008,7 @@ defmodule TopLevel do
       "Self" => encode_self(struct.self),
       "self" => encode_top_level_self(struct.top_level_self),
       "Sendable" => encode_sendable(struct.sendable),
+      "SerializationFeature" => encode_serialization_feature(struct.serialization_feature),
       "serialize" => encode_serialize(struct.serialize),
       "SerializerProvider" => encode_serializer_provider(struct.serializer_provider),
       "set" => encode_set(struct.set),
@@ -14594,6 +15033,7 @@ defmodule TopLevel do
       "synchronized" => encode_synchronized(struct.synchronized),
       "system" => encode_system(struct.system),
       "template" => encode_template(struct.template),
+      "TextNode" => encode_text_node(struct.text_node),
       "then" => encode_then(struct.then),
       "this" => encode_this(struct.this),
       "thread_local" => encode_thread_local(struct.thread_local),
diff --git a/base/schema-elm/test/inputs/schema/direct-union.schema/default/QuickType.elm b/head/schema-elm/test/inputs/schema/direct-union.schema/default/QuickType.elm
index b8f0f54..6871340 100644
--- a/base/schema-elm/test/inputs/schema/direct-union.schema/default/QuickType.elm
+++ b/head/schema-elm/test/inputs/schema/direct-union.schema/default/QuickType.elm
@@ -15,7 +15,15 @@ module QuickType exposing
     ( QuickType
     , quickTypeToString
     , quickType
+    , ArrayNode
+    , BooleanNode
+    , DoubleNode
+    , IntNode
+    , LongNode
+    , NullNode
+    , ObjectNode
     , Thing
+    , TextNode
     , Anything(..)
     )
 
@@ -25,7 +33,43 @@ import Json.Encode as Jenc
 import Dict exposing (Dict)
 
 type alias QuickType =
-    { stuff : Dict String Thing
+    { arrayNode : Maybe ArrayNode
+    , booleanNode : Maybe BooleanNode
+    , doubleNode : Maybe DoubleNode
+    , intNode : Maybe IntNode
+    , longNode : Maybe LongNode
+    , nullNode : Maybe NullNode
+    , objectNode : Maybe ObjectNode
+    , stuff : Dict String Thing
+    , textNode : Maybe TextNode
+    }
+
+type alias ArrayNode =
+    {
+    }
+
+type alias BooleanNode =
+    {
+    }
+
+type alias DoubleNode =
+    {
+    }
+
+type alias IntNode =
+    {
+    }
+
+type alias LongNode =
+    {
+    }
+
+type alias NullNode =
+    {
+    }
+
+type alias ObjectNode =
+    {
     }
 
 type alias Thing =
@@ -42,6 +86,10 @@ type Anything
     | NullInAnything
     | StringInAnything String
 
+type alias TextNode =
+    {
+    }
+
 -- decoders and encoders
 optionalField key decoder fallback =
     Jdec.dict Jdec.value
@@ -56,12 +104,98 @@ quickTypeToString r = Jenc.encode 0 (encodeQuickType r)
 quickType : Jdec.Decoder QuickType
 quickType =
     Jdec.succeed QuickType
+        |> Jpipe.custom (optionalField "arrayNode" (Jdec.map Just arrayNode) Nothing)
+        |> Jpipe.custom (optionalField "booleanNode" (Jdec.map Just booleanNode) Nothing)
+        |> Jpipe.custom (optionalField "doubleNode" (Jdec.map Just doubleNode) Nothing)
+        |> Jpipe.custom (optionalField "intNode" (Jdec.map Just intNode) Nothing)
+        |> Jpipe.custom (optionalField "longNode" (Jdec.map Just longNode) Nothing)
+        |> Jpipe.custom (optionalField "nullNode" (Jdec.map Just nullNode) Nothing)
+        |> Jpipe.custom (optionalField "objectNode" (Jdec.map Just objectNode) Nothing)
         |> Jpipe.required "stuff" (Jdec.dict thing)
+        |> Jpipe.custom (optionalField "textNode" (Jdec.map Just textNode) Nothing)
 
 encodeQuickType : QuickType -> Jenc.Value
 encodeQuickType x =
     Jenc.object
-        [ ("stuff", Jenc.dict identity encodeThing x.stuff)
+        [ ("arrayNode", makeNullableEncoder encodeArrayNode x.arrayNode)
+        , ("booleanNode", makeNullableEncoder encodeBooleanNode x.booleanNode)
+        , ("doubleNode", makeNullableEncoder encodeDoubleNode x.doubleNode)
+        , ("intNode", makeNullableEncoder encodeIntNode x.intNode)
+        , ("longNode", makeNullableEncoder encodeLongNode x.longNode)
+        , ("nullNode", makeNullableEncoder encodeNullNode x.nullNode)
+        , ("objectNode", makeNullableEncoder encodeObjectNode x.objectNode)
+        , ("stuff", Jenc.dict identity encodeThing x.stuff)
+        , ("textNode", makeNullableEncoder encodeTextNode x.textNode)
+        ]
+
+arrayNode : Jdec.Decoder ArrayNode
+arrayNode =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> ArrayNode)
+
+encodeArrayNode : ArrayNode -> Jenc.Value
+encodeArrayNode x =
+    Jenc.object
+        [
+        ]
+
+booleanNode : Jdec.Decoder BooleanNode
+booleanNode =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> BooleanNode)
+
+encodeBooleanNode : BooleanNode -> Jenc.Value
+encodeBooleanNode x =
+    Jenc.object
+        [
+        ]
+
+doubleNode : Jdec.Decoder DoubleNode
+doubleNode =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> DoubleNode)
+
+encodeDoubleNode : DoubleNode -> Jenc.Value
+encodeDoubleNode x =
+    Jenc.object
+        [
+        ]
+
+intNode : Jdec.Decoder IntNode
+intNode =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> IntNode)
+
+encodeIntNode : IntNode -> Jenc.Value
+encodeIntNode x =
+    Jenc.object
+        [
+        ]
+
+longNode : Jdec.Decoder LongNode
+longNode =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> LongNode)
+
+encodeLongNode : LongNode -> Jenc.Value
+encodeLongNode x =
+    Jenc.object
+        [
+        ]
+
+nullNode : Jdec.Decoder NullNode
+nullNode =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> NullNode)
+
+encodeNullNode : NullNode -> Jenc.Value
+encodeNullNode x =
+    Jenc.object
+        [
+        ]
+
+objectNode : Jdec.Decoder ObjectNode
+objectNode =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> ObjectNode)
+
+encodeObjectNode : ObjectNode -> Jenc.Value
+encodeObjectNode x =
+    Jenc.object
+        [
         ]
 
 thing : Jdec.Decoder Thing
@@ -99,6 +233,16 @@ encodeAnything x = case x of
     DoubleInAnything y -> Jenc.float y
     AnythingMapInAnything y -> Jenc.dict identity identity y
 
+textNode : Jdec.Decoder TextNode
+textNode =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> TextNode)
+
+encodeTextNode : TextNode -> Jenc.Value
+encodeTextNode x =
+    Jenc.object
+        [
+        ]
+
 --- encoder helpers
 
 makeNullableEncoder : (a -> Jenc.Value) -> Maybe a -> Jenc.Value
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..709a268 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
@@ -39,6 +39,7 @@ type EnumEnum
     | AndEq
     | Any
     | EnumAny
+    | ArrayNode
     | EnumArray
     | As
     | ASM
@@ -58,6 +59,7 @@ type EnumEnum
     | EnumBOOL
     | EnumBool
     | Boolean
+    | BooleanNode
     | Break
     | Bycopy
     | Byref
@@ -101,6 +103,7 @@ type EnumEnum
     | Debugger
     | Decimal
     | Declare
+    | DeserializationFeature
     | Decltype
     | DecodeString
     | Decoder
@@ -117,6 +120,7 @@ type EnumEnum
     | DidSet
     | Do
     | Double
+    | DoubleNode
     | Dynamic
     | DynamicCast
     | Elif
@@ -175,6 +179,7 @@ type EnumEnum
     | Inout
     | Instanceof
     | EnumInt
+    | IntNode
     | Interface
     | Internal
     | ISODateTimeOffsetConverter
@@ -204,6 +209,7 @@ type EnumEnum
     | Left
     | Let
     | EnumList
+    | LongNode
     | Locale
     | Lock
     | Long
@@ -218,6 +224,7 @@ type EnumEnum
     | New
     | Newtonsoft
     | Nil
+    | NullNode
     | No
     | Noexcept
     | Nonatomic
@@ -236,6 +243,7 @@ type EnumEnum
     | Nullptr
     | Number
     | Object
+    | ObjectNode
     | ObjectMapper
     | Of
     | Oneway
@@ -288,6 +296,7 @@ type EnumEnum
     | EnumSelf
     | Sendable
     | Serialize
+    | SerializationFeature
     | SerializerProvider
     | Set
     | Short
@@ -313,6 +322,7 @@ type EnumEnum
     | Template
     | Then
     | This
+    | TextNode
     | ThreadLocal
     | Throw
     | Throws
@@ -400,6 +410,7 @@ enumEnum =
                 "and_eq" -> Jdec.succeed AndEq
                 "any" -> Jdec.succeed Any
                 "Any" -> Jdec.succeed EnumAny
+                "ArrayNode" -> Jdec.succeed ArrayNode
                 "array" -> Jdec.succeed EnumArray
                 "as" -> Jdec.succeed As
                 "asm" -> Jdec.succeed ASM
@@ -419,6 +430,7 @@ enumEnum =
                 "BOOL" -> Jdec.succeed EnumBOOL
                 "bool" -> Jdec.succeed EnumBool
                 "boolean" -> Jdec.succeed Boolean
+                "BooleanNode" -> Jdec.succeed BooleanNode
                 "break" -> Jdec.succeed Break
                 "bycopy" -> Jdec.succeed Bycopy
                 "byref" -> Jdec.succeed Byref
@@ -462,6 +474,7 @@ enumEnum =
                 "debugger" -> Jdec.succeed Debugger
                 "decimal" -> Jdec.succeed Decimal
                 "declare" -> Jdec.succeed Declare
+                "DeserializationFeature" -> Jdec.succeed DeserializationFeature
                 "decltype" -> Jdec.succeed Decltype
                 "decode_string" -> Jdec.succeed DecodeString
                 "Decoder" -> Jdec.succeed Decoder
@@ -478,6 +491,7 @@ enumEnum =
                 "didSet" -> Jdec.succeed DidSet
                 "do" -> Jdec.succeed Do
                 "double" -> Jdec.succeed Double
+                "DoubleNode" -> Jdec.succeed DoubleNode
                 "dynamic" -> Jdec.succeed Dynamic
                 "dynamic_cast" -> Jdec.succeed DynamicCast
                 "elif" -> Jdec.succeed Elif
@@ -536,6 +550,7 @@ enumEnum =
                 "inout" -> Jdec.succeed Inout
                 "instanceof" -> Jdec.succeed Instanceof
                 "int" -> Jdec.succeed EnumInt
+                "IntNode" -> Jdec.succeed IntNode
                 "interface" -> Jdec.succeed Interface
                 "internal" -> Jdec.succeed Internal
                 "IsoDateTimeOffsetConverter" -> Jdec.succeed ISODateTimeOffsetConverter
@@ -565,6 +580,7 @@ enumEnum =
                 "left" -> Jdec.succeed Left
                 "let" -> Jdec.succeed Let
                 "list" -> Jdec.succeed EnumList
+                "LongNode" -> Jdec.succeed LongNode
                 "Locale" -> Jdec.succeed Locale
                 "lock" -> Jdec.succeed Lock
                 "long" -> Jdec.succeed Long
@@ -579,6 +595,7 @@ enumEnum =
                 "new" -> Jdec.succeed New
                 "newtonsoft" -> Jdec.succeed Newtonsoft
                 "nil" -> Jdec.succeed Nil
+                "NullNode" -> Jdec.succeed NullNode
                 "NO" -> Jdec.succeed No
                 "noexcept" -> Jdec.succeed Noexcept
                 "nonatomic" -> Jdec.succeed Nonatomic
@@ -597,6 +614,7 @@ enumEnum =
                 "nullptr" -> Jdec.succeed Nullptr
                 "number" -> Jdec.succeed Number
                 "object" -> Jdec.succeed Object
+                "ObjectNode" -> Jdec.succeed ObjectNode
                 "ObjectMapper" -> Jdec.succeed ObjectMapper
                 "of" -> Jdec.succeed Of
                 "oneway" -> Jdec.succeed Oneway
@@ -649,6 +667,7 @@ enumEnum =
                 "self" -> Jdec.succeed EnumSelf
                 "Sendable" -> Jdec.succeed Sendable
                 "serialize" -> Jdec.succeed Serialize
+                "SerializationFeature" -> Jdec.succeed SerializationFeature
                 "SerializerProvider" -> Jdec.succeed SerializerProvider
                 "set" -> Jdec.succeed Set
                 "short" -> Jdec.succeed Short
@@ -674,6 +693,7 @@ enumEnum =
                 "template" -> Jdec.succeed Template
                 "then" -> Jdec.succeed Then
                 "this" -> Jdec.succeed This
+                "TextNode" -> Jdec.succeed TextNode
                 "thread_local" -> Jdec.succeed ThreadLocal
                 "throw" -> Jdec.succeed Throw
                 "throws" -> Jdec.succeed Throws
@@ -738,6 +758,7 @@ encodeEnumEnum x = case x of
     AndEq -> Jenc.string "and_eq"
     Any -> Jenc.string "any"
     EnumAny -> Jenc.string "Any"
+    ArrayNode -> Jenc.string "ArrayNode"
     EnumArray -> Jenc.string "array"
     As -> Jenc.string "as"
     ASM -> Jenc.string "asm"
@@ -757,6 +778,7 @@ encodeEnumEnum x = case x of
     EnumBOOL -> Jenc.string "BOOL"
     EnumBool -> Jenc.string "bool"
     Boolean -> Jenc.string "boolean"
+    BooleanNode -> Jenc.string "BooleanNode"
     Break -> Jenc.string "break"
     Bycopy -> Jenc.string "bycopy"
     Byref -> Jenc.string "byref"
@@ -800,6 +822,7 @@ encodeEnumEnum x = case x of
     Debugger -> Jenc.string "debugger"
     Decimal -> Jenc.string "decimal"
     Declare -> Jenc.string "declare"
+    DeserializationFeature -> Jenc.string "DeserializationFeature"
     Decltype -> Jenc.string "decltype"
     DecodeString -> Jenc.string "decode_string"
     Decoder -> Jenc.string "Decoder"
@@ -816,6 +839,7 @@ encodeEnumEnum x = case x of
     DidSet -> Jenc.string "didSet"
     Do -> Jenc.string "do"
     Double -> Jenc.string "double"
+    DoubleNode -> Jenc.string "DoubleNode"
     Dynamic -> Jenc.string "dynamic"
     DynamicCast -> Jenc.string "dynamic_cast"
     Elif -> Jenc.string "elif"
@@ -874,6 +898,7 @@ encodeEnumEnum x = case x of
     Inout -> Jenc.string "inout"
     Instanceof -> Jenc.string "instanceof"
     EnumInt -> Jenc.string "int"
+    IntNode -> Jenc.string "IntNode"
     Interface -> Jenc.string "interface"
     Internal -> Jenc.string "internal"
     ISODateTimeOffsetConverter -> Jenc.string "IsoDateTimeOffsetConverter"
@@ -903,6 +928,7 @@ encodeEnumEnum x = case x of
     Left -> Jenc.string "left"
     Let -> Jenc.string "let"
     EnumList -> Jenc.string "list"
+    LongNode -> Jenc.string "LongNode"
     Locale -> Jenc.string "Locale"
     Lock -> Jenc.string "lock"
     Long -> Jenc.string "long"
@@ -917,6 +943,7 @@ encodeEnumEnum x = case x of
     New -> Jenc.string "new"
     Newtonsoft -> Jenc.string "newtonsoft"
     Nil -> Jenc.string "nil"
+    NullNode -> Jenc.string "NullNode"
     No -> Jenc.string "NO"
     Noexcept -> Jenc.string "noexcept"
     Nonatomic -> Jenc.string "nonatomic"
@@ -935,6 +962,7 @@ encodeEnumEnum x = case x of
     Nullptr -> Jenc.string "nullptr"
     Number -> Jenc.string "number"
     Object -> Jenc.string "object"
+    ObjectNode -> Jenc.string "ObjectNode"
     ObjectMapper -> Jenc.string "ObjectMapper"
     Of -> Jenc.string "of"
     Oneway -> Jenc.string "oneway"
@@ -987,6 +1015,7 @@ encodeEnumEnum x = case x of
     EnumSelf -> Jenc.string "self"
     Sendable -> Jenc.string "Sendable"
     Serialize -> Jenc.string "serialize"
+    SerializationFeature -> Jenc.string "SerializationFeature"
     SerializerProvider -> Jenc.string "SerializerProvider"
     Set -> Jenc.string "set"
     Short -> Jenc.string "short"
@@ -1012,6 +1041,7 @@ encodeEnumEnum x = case x of
     Template -> Jenc.string "template"
     Then -> Jenc.string "then"
     This -> Jenc.string "this"
+    TextNode -> Jenc.string "TextNode"
     ThreadLocal -> Jenc.string "thread_local"
     Throw -> Jenc.string "throw"
     Throws -> Jenc.string "throws"
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..57417b7 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
@@ -22,6 +22,7 @@ module QuickType exposing
     , AndEq
     , Any
     , ArrayClass
+    , ArrayNode
     , ASM
     , Assert
     , Associatedtype
@@ -37,6 +38,7 @@ module QuickType exposing
     , Bitand
     , Bitor
     , Boolean
+    , BooleanNode
     , Break
     , Bycopy
     , Byref
@@ -89,11 +91,13 @@ module QuickType exposing
     , Del
     , Delegate
     , Delete
+    , DeserializationFeature
     , DictClass
     , Dictionary
     , DidSet
     , Do
     , Double
+    , DoubleNode
     , Dynamic
     , DynamicCast
     , Elif
@@ -145,6 +149,7 @@ module QuickType exposing
     , Inline
     , Inout
     , Instanceof
+    , IntNode
     , Interface
     , Internal
     , Is
@@ -176,6 +181,7 @@ module QuickType exposing
     , Locale
     , Lock
     , Long
+    , LongNode
     , Map
     , MapEntry
     , MetadataPropertyHandling
@@ -199,10 +205,12 @@ module QuickType exposing
     , NSObject
     , NSString
     , Null
+    , NullNode
     , Nullptr
     , Number
     , Object
     , ObjectMapper
+    , ObjectNode
     , Oneway
     , Open
     , Operator
@@ -280,6 +288,7 @@ module QuickType exposing
     , Select
     , Self
     , Sendable
+    , SerializationFeature
     , Serialize
     , SerializerProvider
     , Set
@@ -303,6 +312,7 @@ module QuickType exposing
     , Synchronized
     , System
     , Template
+    , TextNode
     , This
     , ThreadLocal
     , Throw
@@ -354,6 +364,7 @@ module QuickType exposing
     , UnionAndEq(..)
     , UnionAny(..)
     , UnionArray(..)
+    , UnionArrayNode(..)
     , UnionASM(..)
     , UnionAssert(..)
     , UnionAssociatedtype(..)
@@ -369,6 +380,7 @@ module QuickType exposing
     , UnionBitand(..)
     , UnionBitor(..)
     , UnionBoolean(..)
+    , UnionBooleanNode(..)
     , UnionBreak(..)
     , UnionBycopy(..)
     , UnionByref(..)
@@ -421,11 +433,13 @@ module QuickType exposing
     , UnionDel(..)
     , UnionDelegate(..)
     , UnionDelete(..)
+    , UnionDeserializationFeature(..)
     , UnionDict(..)
     , UnionDictionary(..)
     , UnionDidSet(..)
     , UnionDo(..)
     , UnionDouble(..)
+    , UnionDoubleNode(..)
     , UnionDynamic(..)
     , UnionDynamicCast(..)
     , UnionElif(..)
@@ -477,6 +491,7 @@ module QuickType exposing
     , UnionInline(..)
     , UnionInout(..)
     , UnionInstanceof(..)
+    , UnionIntNode(..)
     , UnionInterface(..)
     , UnionInternal(..)
     , UnionIs(..)
@@ -508,6 +523,7 @@ module QuickType exposing
     , UnionLocale(..)
     , UnionLock(..)
     , UnionLong(..)
+    , UnionLongNode(..)
     , UnionMap(..)
     , UnionMapEntry(..)
     , UnionMetadataPropertyHandling(..)
@@ -531,10 +547,12 @@ module QuickType exposing
     , UnionNSObject(..)
     , UnionNSString(..)
     , UnionNULL(..)
+    , UnionNullNode(..)
     , UnionNullptr(..)
     , UnionNumber(..)
     , UnionObject(..)
     , UnionObjectMapper(..)
+    , UnionObjectNode(..)
     , UnionOneway(..)
     , UnionOpen(..)
     , UnionOperator(..)
@@ -612,6 +630,7 @@ module QuickType exposing
     , UnionSelect(..)
     , UnionSelf(..)
     , UnionSendable(..)
+    , UnionSerializationFeature(..)
     , UnionSerialize(..)
     , UnionSerializerProvider(..)
     , UnionSet(..)
@@ -635,6 +654,7 @@ module QuickType exposing
     , UnionSynchronized(..)
     , UnionSystem(..)
     , UnionTemplate(..)
+    , UnionTextNode(..)
     , UnionThis(..)
     , UnionThreadLocal(..)
     , UnionThrow(..)
@@ -699,6 +719,7 @@ type alias QuickType =
     , quickTypeAny : Maybe UnionAnyUnion
     , any : Maybe UnionAny
     , array : Maybe UnionArray
+    , arrayNode : Maybe UnionArrayNode
     , quickTypeAs : Maybe UnionAs
     , asm : Maybe UnionASM
     , assert : Maybe UnionAssert
@@ -717,6 +738,7 @@ type alias QuickType =
     , quickTypeBOOL : Maybe UnionBOOL
     , purpleBool : Maybe UnionBoolUnion
     , boolean : Maybe UnionBoolean
+    , booleanNode : Maybe UnionBooleanNode
     , break : Maybe UnionBreak
     , bycopy : Maybe UnionBycopy
     , byref : Maybe UnionByref
@@ -771,11 +793,13 @@ type alias QuickType =
     , del : Maybe UnionDel
     , delegate : Maybe UnionDelegate
     , delete : Maybe UnionDelete
+    , deserializationFeature : Maybe UnionDeserializationFeature
     , dict : Maybe UnionDict
     , dictionary : Maybe UnionDictionary
     , didSet : Maybe UnionDidSet
     , do : Maybe UnionDo
     , double : Maybe UnionDouble
+    , doubleNode : Maybe UnionDoubleNode
     , dummy : Maybe Float
     , dynamic : Maybe UnionDynamic
     , dynamicCast : Maybe UnionDynamicCast
@@ -837,6 +861,7 @@ type alias QuickType =
     , quickTypeInt : Maybe UnionInt
     , interface : Maybe UnionInterface
     , internal : Maybe UnionInternal
+    , intNode : Maybe UnionIntNode
     , is : Maybe UnionIs
     , isoDateTimeOffsetConverter : Maybe UnionISODateTimeOffsetConverter
     , iterable : Maybe UnionIterable
@@ -867,6 +892,7 @@ type alias QuickType =
     , locale : Maybe UnionLocale
     , lock : Maybe UnionLock
     , long : Maybe UnionLong
+    , longNode : Maybe UnionLongNode
     , map : Maybe UnionMap
     , mapEntry : Maybe UnionMapEntry
     , metadataPropertyHandling : Maybe UnionMetadataPropertyHandling
@@ -893,10 +919,12 @@ type alias QuickType =
     , nsString : Maybe UnionNSString
     , null : Maybe UnionNULL
     , quickTypeNull : Maybe UnionNull
+    , nullNode : Maybe UnionNullNode
     , nullptr : Maybe UnionNullptr
     , number : Maybe UnionNumber
     , object : Maybe UnionObject
     , objectMapper : Maybe UnionObjectMapper
+    , objectNode : Maybe UnionObjectNode
     , quickTypeOf : Maybe UnionOf
     , oneway : Maybe UnionOneway
     , open : Maybe UnionOpen
@@ -947,6 +975,7 @@ type alias QuickType =
     , self : Maybe UnionSelf
     , quickTypeSelf : Maybe UnionSelfUnion
     , sendable : Maybe UnionSendable
+    , serializationFeature : Maybe UnionSerializationFeature
     , serialize : Maybe UnionSerialize
     , serializerProvider : Maybe UnionSerializerProvider
     , set : Maybe UnionSet
@@ -971,6 +1000,7 @@ type alias QuickType =
     , synchronized : Maybe UnionSynchronized
     , system : Maybe UnionSystem
     , template : Maybe UnionTemplate
+    , textNode : Maybe UnionTextNode
     , quickTypeThen : Maybe UnionThen
     , this : Maybe UnionThis
     , threadLocal : Maybe UnionThreadLocal
@@ -1078,6 +1108,14 @@ type alias ArrayClass =
     {
     }
 
+type UnionArrayNode
+    = ArrayNodeInUnionArrayNode ArrayNode
+    | DoubleInUnionArrayNode Float
+
+type alias ArrayNode =
+    {
+    }
+
 type UnionASM
     = ASMInUnionASM ASM
     | DoubleInUnionASM Float
@@ -1198,6 +1236,14 @@ type alias Boolean =
     {
     }
 
+type UnionBooleanNode
+    = BooleanNodeInUnionBooleanNode BooleanNode
+    | DoubleInUnionBooleanNode Float
+
+type alias BooleanNode =
+    {
+    }
+
 type UnionBreak
     = BreakInUnionBreak Break
     | DoubleInUnionBreak Float
@@ -1614,6 +1660,14 @@ type alias Delete =
     {
     }
 
+type UnionDeserializationFeature
+    = DeserializationFeatureInUnionDeserializationFeature DeserializationFeature
+    | DoubleInUnionDeserializationFeature Float
+
+type alias DeserializationFeature =
+    {
+    }
+
 type UnionDict
     = DictClassInUnionDict DictClass
     | DoubleInUnionDict Float
@@ -1654,6 +1708,14 @@ type alias Double =
     {
     }
 
+type UnionDoubleNode
+    = DoubleInUnionDoubleNode Float
+    | DoubleNodeInUnionDoubleNode DoubleNode
+
+type alias DoubleNode =
+    {
+    }
+
 type UnionDynamic
     = DoubleInUnionDynamic Float
     | DynamicInUnionDynamic Dynamic
@@ -2062,6 +2124,14 @@ type alias Instanceof =
     {
     }
 
+type UnionIntNode
+    = DoubleInUnionIntNode Float
+    | IntNodeInUnionIntNode IntNode
+
+type alias IntNode =
+    {
+    }
+
 type UnionInterface
     = DoubleInUnionInterface Float
     | InterfaceInUnionInterface Interface
@@ -2310,6 +2380,14 @@ type alias Long =
     {
     }
 
+type UnionLongNode
+    = DoubleInUnionLongNode Float
+    | LongNodeInUnionLongNode LongNode
+
+type alias LongNode =
+    {
+    }
+
 type UnionMap
     = DoubleInUnionMap Float
     | MapInUnionMap Map
@@ -2494,6 +2572,14 @@ type alias Null =
     {
     }
 
+type UnionNullNode
+    = DoubleInUnionNullNode Float
+    | NullNodeInUnionNullNode NullNode
+
+type alias NullNode =
+    {
+    }
+
 type UnionNullptr
     = DoubleInUnionNullptr Float
     | NullptrInUnionNullptr Nullptr
@@ -2526,6 +2612,14 @@ type alias ObjectMapper =
     {
     }
 
+type UnionObjectNode
+    = DoubleInUnionObjectNode Float
+    | ObjectNodeInUnionObjectNode ObjectNode
+
+type alias ObjectNode =
+    {
+    }
+
 type UnionOneway
     = DoubleInUnionOneway Float
     | OnewayInUnionOneway Oneway
@@ -3142,6 +3236,14 @@ type alias Sendable =
     {
     }
 
+type UnionSerializationFeature
+    = DoubleInUnionSerializationFeature Float
+    | SerializationFeatureInUnionSerializationFeature SerializationFeature
+
+type alias SerializationFeature =
+    {
+    }
+
 type UnionSerialize
     = DoubleInUnionSerialize Float
     | SerializeInUnionSerialize Serialize
@@ -3326,6 +3428,14 @@ type alias Template =
     {
     }
 
+type UnionTextNode
+    = DoubleInUnionTextNode Float
+    | TextNodeInUnionTextNode TextNode
+
+type alias TextNode =
+    {
+    }
+
 type UnionThis
     = DoubleInUnionThis Float
     | ThisInUnionThis This
@@ -3704,6 +3814,7 @@ quickType =
         |> Jpipe.custom (optionalField "any" (Jdec.map Just unionAnyUnion) Nothing)
         |> Jpipe.custom (optionalField "Any" (Jdec.map Just unionAny) Nothing)
         |> Jpipe.custom (optionalField "array" (Jdec.map Just unionArray) Nothing)
+        |> Jpipe.custom (optionalField "ArrayNode" (Jdec.map Just unionArrayNode) Nothing)
         |> Jpipe.custom (optionalField "as" (Jdec.map Just unionAs) Nothing)
         |> Jpipe.custom (optionalField "asm" (Jdec.map Just unionASM) Nothing)
         |> Jpipe.custom (optionalField "assert" (Jdec.map Just unionAssert) Nothing)
@@ -3722,6 +3833,7 @@ quickType =
         |> Jpipe.custom (optionalField "BOOL" (Jdec.map Just unionBOOL) Nothing)
         |> Jpipe.custom (optionalField "bool" (Jdec.map Just unionBoolUnion) Nothing)
         |> Jpipe.custom (optionalField "boolean" (Jdec.map Just unionBoolean) Nothing)
+        |> Jpipe.custom (optionalField "BooleanNode" (Jdec.map Just unionBooleanNode) Nothing)
         |> Jpipe.custom (optionalField "break" (Jdec.map Just unionBreak) Nothing)
         |> Jpipe.custom (optionalField "bycopy" (Jdec.map Just unionBycopy) Nothing)
         |> Jpipe.custom (optionalField "byref" (Jdec.map Just unionByref) Nothing)
@@ -3776,11 +3888,13 @@ quickType =
         |> Jpipe.custom (optionalField "del" (Jdec.map Just unionDel) Nothing)
         |> Jpipe.custom (optionalField "delegate" (Jdec.map Just unionDelegate) Nothing)
         |> Jpipe.custom (optionalField "delete" (Jdec.map Just unionDelete) Nothing)
+        |> Jpipe.custom (optionalField "DeserializationFeature" (Jdec.map Just unionDeserializationFeature) Nothing)
         |> Jpipe.custom (optionalField "dict" (Jdec.map Just unionDict) Nothing)
         |> Jpipe.custom (optionalField "dictionary" (Jdec.map Just unionDictionary) Nothing)
         |> Jpipe.custom (optionalField "didSet" (Jdec.map Just unionDidSet) Nothing)
         |> Jpipe.custom (optionalField "do" (Jdec.map Just unionDo) Nothing)
         |> Jpipe.custom (optionalField "double" (Jdec.map Just unionDouble) Nothing)
+        |> Jpipe.custom (optionalField "DoubleNode" (Jdec.map Just unionDoubleNode) Nothing)
         |> Jpipe.custom (optionalField "dummy" (Jdec.map Just Jdec.float) Nothing)
         |> Jpipe.custom (optionalField "dynamic" (Jdec.map Just unionDynamic) Nothing)
         |> Jpipe.custom (optionalField "dynamic_cast" (Jdec.map Just unionDynamicCast) Nothing)
@@ -3842,6 +3956,7 @@ quickType =
         |> Jpipe.custom (optionalField "int" (Jdec.map Just unionInt) Nothing)
         |> Jpipe.custom (optionalField "interface" (Jdec.map Just unionInterface) Nothing)
         |> Jpipe.custom (optionalField "internal" (Jdec.map Just unionInternal) Nothing)
+        |> Jpipe.custom (optionalField "IntNode" (Jdec.map Just unionIntNode) Nothing)
         |> Jpipe.custom (optionalField "is" (Jdec.map Just unionIs) Nothing)
         |> Jpipe.custom (optionalField "IsoDateTimeOffsetConverter" (Jdec.map Just unionISODateTimeOffsetConverter) Nothing)
         |> Jpipe.custom (optionalField "iterable" (Jdec.map Just unionIterable) Nothing)
@@ -3872,6 +3987,7 @@ quickType =
         |> Jpipe.custom (optionalField "Locale" (Jdec.map Just unionLocale) Nothing)
         |> Jpipe.custom (optionalField "lock" (Jdec.map Just unionLock) Nothing)
         |> Jpipe.custom (optionalField "long" (Jdec.map Just unionLong) Nothing)
+        |> Jpipe.custom (optionalField "LongNode" (Jdec.map Just unionLongNode) Nothing)
         |> Jpipe.custom (optionalField "map" (Jdec.map Just unionMap) Nothing)
         |> Jpipe.custom (optionalField "MapEntry" (Jdec.map Just unionMapEntry) Nothing)
         |> Jpipe.custom (optionalField "metadata_property_handling" (Jdec.map Just unionMetadataPropertyHandling) Nothing)
@@ -3898,10 +4014,12 @@ quickType =
         |> Jpipe.custom (optionalField "NSString" (Jdec.map Just unionNSString) Nothing)
         |> Jpipe.custom (optionalField "NULL" (Jdec.map Just unionNULL) Nothing)
         |> Jpipe.custom (optionalField "null" (Jdec.map Just unionNull) Nothing)
+        |> Jpipe.custom (optionalField "NullNode" (Jdec.map Just unionNullNode) Nothing)
         |> Jpipe.custom (optionalField "nullptr" (Jdec.map Just unionNullptr) Nothing)
         |> Jpipe.custom (optionalField "number" (Jdec.map Just unionNumber) Nothing)
         |> Jpipe.custom (optionalField "object" (Jdec.map Just unionObject) Nothing)
         |> Jpipe.custom (optionalField "ObjectMapper" (Jdec.map Just unionObjectMapper) Nothing)
+        |> Jpipe.custom (optionalField "ObjectNode" (Jdec.map Just unionObjectNode) Nothing)
         |> Jpipe.custom (optionalField "of" (Jdec.map Just unionOf) Nothing)
         |> Jpipe.custom (optionalField "oneway" (Jdec.map Just unionOneway) Nothing)
         |> Jpipe.custom (optionalField "open" (Jdec.map Just unionOpen) Nothing)
@@ -3952,6 +4070,7 @@ 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 "SerializationFeature" (Jdec.map Just unionSerializationFeature) Nothing)
         |> Jpipe.custom (optionalField "serialize" (Jdec.map Just unionSerialize) Nothing)
         |> Jpipe.custom (optionalField "SerializerProvider" (Jdec.map Just unionSerializerProvider) Nothing)
         |> Jpipe.custom (optionalField "set" (Jdec.map Just unionSet) Nothing)
@@ -3976,6 +4095,7 @@ quickType =
         |> Jpipe.custom (optionalField "synchronized" (Jdec.map Just unionSynchronized) Nothing)
         |> Jpipe.custom (optionalField "system" (Jdec.map Just unionSystem) Nothing)
         |> Jpipe.custom (optionalField "template" (Jdec.map Just unionTemplate) Nothing)
+        |> Jpipe.custom (optionalField "TextNode" (Jdec.map Just unionTextNode) Nothing)
         |> Jpipe.custom (optionalField "then" (Jdec.map Just unionThen) Nothing)
         |> Jpipe.custom (optionalField "this" (Jdec.map Just unionThis) Nothing)
         |> Jpipe.custom (optionalField "thread_local" (Jdec.map Just unionThreadLocal) Nothing)
@@ -4041,6 +4161,7 @@ encodeQuickType x =
         , ("any", makeNullableEncoder encodeUnionAnyUnion x.quickTypeAny)
         , ("Any", makeNullableEncoder encodeUnionAny x.any)
         , ("array", makeNullableEncoder encodeUnionArray x.array)
+        , ("ArrayNode", makeNullableEncoder encodeUnionArrayNode x.arrayNode)
         , ("as", makeNullableEncoder encodeUnionAs x.quickTypeAs)
         , ("asm", makeNullableEncoder encodeUnionASM x.asm)
         , ("assert", makeNullableEncoder encodeUnionAssert x.assert)
@@ -4059,6 +4180,7 @@ encodeQuickType x =
         , ("BOOL", makeNullableEncoder encodeUnionBOOL x.quickTypeBOOL)
         , ("bool", makeNullableEncoder encodeUnionBoolUnion x.purpleBool)
         , ("boolean", makeNullableEncoder encodeUnionBoolean x.boolean)
+        , ("BooleanNode", makeNullableEncoder encodeUnionBooleanNode x.booleanNode)
         , ("break", makeNullableEncoder encodeUnionBreak x.break)
         , ("bycopy", makeNullableEncoder encodeUnionBycopy x.bycopy)
         , ("byref", makeNullableEncoder encodeUnionByref x.byref)
@@ -4113,11 +4235,13 @@ encodeQuickType x =
         , ("del", makeNullableEncoder encodeUnionDel x.del)
         , ("delegate", makeNullableEncoder encodeUnionDelegate x.delegate)
         , ("delete", makeNullableEncoder encodeUnionDelete x.delete)
+        , ("DeserializationFeature", makeNullableEncoder encodeUnionDeserializationFeature x.deserializationFeature)
         , ("dict", makeNullableEncoder encodeUnionDict x.dict)
         , ("dictionary", makeNullableEncoder encodeUnionDictionary x.dictionary)
         , ("didSet", makeNullableEncoder encodeUnionDidSet x.didSet)
         , ("do", makeNullableEncoder encodeUnionDo x.do)
         , ("double", makeNullableEncoder encodeUnionDouble x.double)
+        , ("DoubleNode", makeNullableEncoder encodeUnionDoubleNode x.doubleNode)
         , ("dummy", makeNullableEncoder Jenc.float x.dummy)
         , ("dynamic", makeNullableEncoder encodeUnionDynamic x.dynamic)
         , ("dynamic_cast", makeNullableEncoder encodeUnionDynamicCast x.dynamicCast)
@@ -4179,6 +4303,7 @@ encodeQuickType x =
         , ("int", makeNullableEncoder encodeUnionInt x.quickTypeInt)
         , ("interface", makeNullableEncoder encodeUnionInterface x.interface)
         , ("internal", makeNullableEncoder encodeUnionInternal x.internal)
+        , ("IntNode", makeNullableEncoder encodeUnionIntNode x.intNode)
         , ("is", makeNullableEncoder encodeUnionIs x.is)
         , ("IsoDateTimeOffsetConverter", makeNullableEncoder encodeUnionISODateTimeOffsetConverter x.isoDateTimeOffsetConverter)
         , ("iterable", makeNullableEncoder encodeUnionIterable x.iterable)
@@ -4209,6 +4334,7 @@ encodeQuickType x =
         , ("Locale", makeNullableEncoder encodeUnionLocale x.locale)
         , ("lock", makeNullableEncoder encodeUnionLock x.lock)
         , ("long", makeNullableEncoder encodeUnionLong x.long)
+        , ("LongNode", makeNullableEncoder encodeUnionLongNode x.longNode)
         , ("map", makeNullableEncoder encodeUnionMap x.map)
         , ("MapEntry", makeNullableEncoder encodeUnionMapEntry x.mapEntry)
         , ("metadata_property_handling", makeNullableEncoder encodeUnionMetadataPropertyHandling x.metadataPropertyHandling)
@@ -4235,10 +4361,12 @@ encodeQuickType x =
         , ("NSString", makeNullableEncoder encodeUnionNSString x.nsString)
         , ("NULL", makeNullableEncoder encodeUnionNULL x.null)
         , ("null", makeNullableEncoder encodeUnionNull x.quickTypeNull)
+        , ("NullNode", makeNullableEncoder encodeUnionNullNode x.nullNode)
         , ("nullptr", makeNullableEncoder encodeUnionNullptr x.nullptr)
         , ("number", makeNullableEncoder encodeUnionNumber x.number)
         , ("object", makeNullableEncoder encodeUnionObject x.object)
         , ("ObjectMapper", makeNullableEncoder encodeUnionObjectMapper x.objectMapper)
+        , ("ObjectNode", makeNullableEncoder encodeUnionObjectNode x.objectNode)
         , ("of", makeNullableEncoder encodeUnionOf x.quickTypeOf)
         , ("oneway", makeNullableEncoder encodeUnionOneway x.oneway)
         , ("open", makeNullableEncoder encodeUnionOpen x.open)
@@ -4289,6 +4417,7 @@ encodeQuickType x =
         , ("Self", makeNullableEncoder encodeUnionSelf x.self)
         , ("self", makeNullableEncoder encodeUnionSelfUnion x.quickTypeSelf)
         , ("Sendable", makeNullableEncoder encodeUnionSendable x.sendable)
+        , ("SerializationFeature", makeNullableEncoder encodeUnionSerializationFeature x.serializationFeature)
         , ("serialize", makeNullableEncoder encodeUnionSerialize x.serialize)
         , ("SerializerProvider", makeNullableEncoder encodeUnionSerializerProvider x.serializerProvider)
         , ("set", makeNullableEncoder encodeUnionSet x.set)
@@ -4313,6 +4442,7 @@ encodeQuickType x =
         , ("synchronized", makeNullableEncoder encodeUnionSynchronized x.synchronized)
         , ("system", makeNullableEncoder encodeUnionSystem x.system)
         , ("template", makeNullableEncoder encodeUnionTemplate x.template)
+        , ("TextNode", makeNullableEncoder encodeUnionTextNode x.textNode)
         , ("then", makeNullableEncoder encodeUnionThen x.quickTypeThen)
         , ("this", makeNullableEncoder encodeUnionThis x.this)
         , ("thread_local", makeNullableEncoder encodeUnionThreadLocal x.threadLocal)
@@ -4518,6 +4648,28 @@ encodeArrayClass x =
         [
         ]
 
+unionArrayNode : Jdec.Decoder UnionArrayNode
+unionArrayNode =
+    Jdec.oneOf
+        [ Jdec.map DoubleInUnionArrayNode Jdec.float
+        , Jdec.map ArrayNodeInUnionArrayNode arrayNode
+        ]
+
+encodeUnionArrayNode : UnionArrayNode -> Jenc.Value
+encodeUnionArrayNode x = case x of
+    DoubleInUnionArrayNode y -> Jenc.float y
+    ArrayNodeInUnionArrayNode y -> encodeArrayNode y
+
+arrayNode : Jdec.Decoder ArrayNode
+arrayNode =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> ArrayNode)
+
+encodeArrayNode : ArrayNode -> Jenc.Value
+encodeArrayNode x =
+    Jenc.object
+        [
+        ]
+
 unionASM : Jdec.Decoder UnionASM
 unionASM =
     Jdec.oneOf
@@ -4848,6 +5000,28 @@ encodeBoolean x =
         [
         ]
 
+unionBooleanNode : Jdec.Decoder UnionBooleanNode
+unionBooleanNode =
+    Jdec.oneOf
+        [ Jdec.map DoubleInUnionBooleanNode Jdec.float
+        , Jdec.map BooleanNodeInUnionBooleanNode booleanNode
+        ]
+
+encodeUnionBooleanNode : UnionBooleanNode -> Jenc.Value
+encodeUnionBooleanNode x = case x of
+    DoubleInUnionBooleanNode y -> Jenc.float y
+    BooleanNodeInUnionBooleanNode y -> encodeBooleanNode y
+
+booleanNode : Jdec.Decoder BooleanNode
+booleanNode =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> BooleanNode)
+
+encodeBooleanNode : BooleanNode -> Jenc.Value
+encodeBooleanNode x =
+    Jenc.object
+        [
+        ]
+
 unionBreak : Jdec.Decoder UnionBreak
 unionBreak =
     Jdec.oneOf
@@ -5992,6 +6166,28 @@ encodeDelete x =
         [
         ]
 
+unionDeserializationFeature : Jdec.Decoder UnionDeserializationFeature
+unionDeserializationFeature =
+    Jdec.oneOf
+        [ Jdec.map DoubleInUnionDeserializationFeature Jdec.float
+        , Jdec.map DeserializationFeatureInUnionDeserializationFeature deserializationFeature
+        ]
+
+encodeUnionDeserializationFeature : UnionDeserializationFeature -> Jenc.Value
+encodeUnionDeserializationFeature x = case x of
+    DoubleInUnionDeserializationFeature y -> Jenc.float y
+    DeserializationFeatureInUnionDeserializationFeature y -> encodeDeserializationFeature y
+
+deserializationFeature : Jdec.Decoder DeserializationFeature
+deserializationFeature =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> DeserializationFeature)
+
+encodeDeserializationFeature : DeserializationFeature -> Jenc.Value
+encodeDeserializationFeature x =
+    Jenc.object
+        [
+        ]
+
 unionDict : Jdec.Decoder UnionDict
 unionDict =
     Jdec.oneOf
@@ -6102,6 +6298,28 @@ encodeDouble x =
         [
         ]
 
+unionDoubleNode : Jdec.Decoder UnionDoubleNode
+unionDoubleNode =
+    Jdec.oneOf
+        [ Jdec.map DoubleInUnionDoubleNode Jdec.float
+        , Jdec.map DoubleNodeInUnionDoubleNode doubleNode
+        ]
+
+encodeUnionDoubleNode : UnionDoubleNode -> Jenc.Value
+encodeUnionDoubleNode x = case x of
+    DoubleInUnionDoubleNode y -> Jenc.float y
+    DoubleNodeInUnionDoubleNode y -> encodeDoubleNode y
+
+doubleNode : Jdec.Decoder DoubleNode
+doubleNode =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> DoubleNode)
+
+encodeDoubleNode : DoubleNode -> Jenc.Value
+encodeDoubleNode x =
+    Jenc.object
+        [
+        ]
+
 unionDynamic : Jdec.Decoder UnionDynamic
 unionDynamic =
     Jdec.oneOf
@@ -7224,6 +7442,28 @@ encodeInstanceof x =
         [
         ]
 
+unionIntNode : Jdec.Decoder UnionIntNode
+unionIntNode =
+    Jdec.oneOf
+        [ Jdec.map DoubleInUnionIntNode Jdec.float
+        , Jdec.map IntNodeInUnionIntNode intNode
+        ]
+
+encodeUnionIntNode : UnionIntNode -> Jenc.Value
+encodeUnionIntNode x = case x of
+    DoubleInUnionIntNode y -> Jenc.float y
+    IntNodeInUnionIntNode y -> encodeIntNode y
+
+intNode : Jdec.Decoder IntNode
+intNode =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> IntNode)
+
+encodeIntNode : IntNode -> Jenc.Value
+encodeIntNode x =
+    Jenc.object
+        [
+        ]
+
 unionInterface : Jdec.Decoder UnionInterface
 unionInterface =
     Jdec.oneOf
@@ -7906,6 +8146,28 @@ encodeLong x =
         [
         ]
 
+unionLongNode : Jdec.Decoder UnionLongNode
+unionLongNode =
+    Jdec.oneOf
+        [ Jdec.map DoubleInUnionLongNode Jdec.float
+        , Jdec.map LongNodeInUnionLongNode longNode
+        ]
+
+encodeUnionLongNode : UnionLongNode -> Jenc.Value
+encodeUnionLongNode x = case x of
+    DoubleInUnionLongNode y -> Jenc.float y
+    LongNodeInUnionLongNode y -> encodeLongNode y
+
+longNode : Jdec.Decoder LongNode
+longNode =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> LongNode)
+
+encodeLongNode : LongNode -> Jenc.Value
+encodeLongNode x =
+    Jenc.object
+        [
+        ]
+
 unionMap : Jdec.Decoder UnionMap
 unionMap =
     Jdec.oneOf
@@ -8412,6 +8674,28 @@ encodeNull x =
         [
         ]
 
+unionNullNode : Jdec.Decoder UnionNullNode
+unionNullNode =
+    Jdec.oneOf
+        [ Jdec.map DoubleInUnionNullNode Jdec.float
+        , Jdec.map NullNodeInUnionNullNode nullNode
+        ]
+
+encodeUnionNullNode : UnionNullNode -> Jenc.Value
+encodeUnionNullNode x = case x of
+    DoubleInUnionNullNode y -> Jenc.float y
+    NullNodeInUnionNullNode y -> encodeNullNode y
+
+nullNode : Jdec.Decoder NullNode
+nullNode =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> NullNode)
+
+encodeNullNode : NullNode -> Jenc.Value
+encodeNullNode x =
+    Jenc.object
+        [
+        ]
+
 unionNullptr : Jdec.Decoder UnionNullptr
 unionNullptr =
     Jdec.oneOf
@@ -8500,6 +8784,28 @@ encodeObjectMapper x =
         [
         ]
 
+unionObjectNode : Jdec.Decoder UnionObjectNode
+unionObjectNode =
+    Jdec.oneOf
+        [ Jdec.map DoubleInUnionObjectNode Jdec.float
+        , Jdec.map ObjectNodeInUnionObjectNode objectNode
+        ]
+
+encodeUnionObjectNode : UnionObjectNode -> Jenc.Value
+encodeUnionObjectNode x = case x of
+    DoubleInUnionObjectNode y -> Jenc.float y
+    ObjectNodeInUnionObjectNode y -> encodeObjectNode y
+
+objectNode : Jdec.Decoder ObjectNode
+objectNode =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> ObjectNode)
+
+encodeObjectNode : ObjectNode -> Jenc.Value
+encodeObjectNode x =
+    Jenc.object
+        [
+        ]
+
 unionOneway : Jdec.Decoder UnionOneway
 unionOneway =
     Jdec.oneOf
@@ -10194,6 +10500,28 @@ encodeSendable x =
         [
         ]
 
+unionSerializationFeature : Jdec.Decoder UnionSerializationFeature
+unionSerializationFeature =
+    Jdec.oneOf
+        [ Jdec.map DoubleInUnionSerializationFeature Jdec.float
+        , Jdec.map SerializationFeatureInUnionSerializationFeature serializationFeature
+        ]
+
+encodeUnionSerializationFeature : UnionSerializationFeature -> Jenc.Value
+encodeUnionSerializationFeature x = case x of
+    DoubleInUnionSerializationFeature y -> Jenc.float y
+    SerializationFeatureInUnionSerializationFeature y -> encodeSerializationFeature y
+
+serializationFeature : Jdec.Decoder SerializationFeature
+serializationFeature =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> SerializationFeature)
+
+encodeSerializationFeature : SerializationFeature -> Jenc.Value
+encodeSerializationFeature x =
+    Jenc.object
+        [
+        ]
+
 unionSerialize : Jdec.Decoder UnionSerialize
 unionSerialize =
     Jdec.oneOf
@@ -10700,6 +11028,28 @@ encodeTemplate x =
         [
         ]
 
+unionTextNode : Jdec.Decoder UnionTextNode
+unionTextNode =
+    Jdec.oneOf
+        [ Jdec.map DoubleInUnionTextNode Jdec.float
+        , Jdec.map TextNodeInUnionTextNode textNode
+        ]
+
+encodeUnionTextNode : UnionTextNode -> Jenc.Value
+encodeUnionTextNode x = case x of
+    DoubleInUnionTextNode y -> Jenc.float y
+    TextNodeInUnionTextNode y -> encodeTextNode y
+
+textNode : Jdec.Decoder TextNode
+textNode =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> TextNode)
+
+encodeTextNode : TextNode -> Jenc.Value
+encodeTextNode x =
+    Jenc.object
+        [
+        ]
+
 unionThis : Jdec.Decoder UnionThis
 unionThis =
     Jdec.oneOf
diff --git a/base/schema-flow/test/inputs/schema/direct-union.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/direct-union.schema/default/TopLevel.js
index 953338d..64eeabe 100644
--- a/base/schema-flow/test/inputs/schema/direct-union.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/direct-union.schema/default/TopLevel.js
@@ -10,7 +10,36 @@
 // match the expected interface, even if the JSON is valid.
 
 export type TopLevel = {
-    stuff: { [key: string]: Thing };
+    arrayNode?:   ArrayNode;
+    booleanNode?: BooleanNode;
+    doubleNode?:  DoubleNode;
+    intNode?:     IntNode;
+    longNode?:    LongNode;
+    nullNode?:    NullNode;
+    objectNode?:  ObjectNode;
+    stuff:        { [key: string]: Thing };
+    textNode?:    TextNode;
+};
+
+export type ArrayNode = {
+};
+
+export type BooleanNode = {
+};
+
+export type DoubleNode = {
+};
+
+export type IntNode = {
+};
+
+export type LongNode = {
+};
+
+export type NullNode = {
+};
+
+export type ObjectNode = {
 };
 
 export type Thing = {
@@ -20,6 +49,9 @@ export type Thing = {
 
 export type Anything = mixed[] | boolean | number | number | { [key: string]: mixed } | null | string;
 
+export type TextNode = {
+};
+
 // Converts JSON strings to/from your types
 // and asserts the results of JSON.parse at runtime
 function toTopLevel(json: string): TopLevel {
@@ -206,12 +238,36 @@ function r(name: string) {
 
 const typeMap: any = {
     "TopLevel": o([
+        { json: "arrayNode", js: "arrayNode", typ: u(undefined, r("ArrayNode")) },
+        { json: "booleanNode", js: "booleanNode", typ: u(undefined, r("BooleanNode")) },
+        { json: "doubleNode", js: "doubleNode", typ: u(undefined, r("DoubleNode")) },
+        { json: "intNode", js: "intNode", typ: u(undefined, r("IntNode")) },
+        { json: "longNode", js: "longNode", typ: u(undefined, r("LongNode")) },
+        { json: "nullNode", js: "nullNode", typ: u(undefined, r("NullNode")) },
+        { json: "objectNode", js: "objectNode", typ: u(undefined, r("ObjectNode")) },
         { json: "stuff", js: "stuff", typ: m(r("Thing")) },
+        { json: "textNode", js: "textNode", typ: u(undefined, r("TextNode")) },
+    ], false),
+    "ArrayNode": o([
+    ], false),
+    "BooleanNode": o([
+    ], false),
+    "DoubleNode": o([
+    ], false),
+    "IntNode": o([
+    ], false),
+    "LongNode": o([
+    ], false),
+    "NullNode": o([
+    ], false),
+    "ObjectNode": o([
     ], false),
     "Thing": o([
         { json: "optional", js: "optional", typ: u(undefined, u(a("any"), true, 3.14, i(0), m("any"), null, "")) },
         { json: "required", js: "required", typ: u(a("any"), true, 3.14, i(0), m("any"), null, "") },
     ], false),
+    "TextNode": o([
+    ], false),
 };
 
 module.exports = {
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..d22ea8f 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
@@ -26,6 +26,7 @@ export type Enum =
     | "and_eq"
     | "any"
     | "Any"
+    | "ArrayNode"
     | "array"
     | "as"
     | "asm"
@@ -45,6 +46,7 @@ export type Enum =
     | "BOOL"
     | "bool"
     | "boolean"
+    | "BooleanNode"
     | "break"
     | "bycopy"
     | "byref"
@@ -88,6 +90,7 @@ export type Enum =
     | "debugger"
     | "decimal"
     | "declare"
+    | "DeserializationFeature"
     | "decltype"
     | "decode_string"
     | "Decoder"
@@ -104,6 +107,7 @@ export type Enum =
     | "didSet"
     | "do"
     | "double"
+    | "DoubleNode"
     | "dynamic"
     | "dynamic_cast"
     | "elif"
@@ -162,6 +166,7 @@ export type Enum =
     | "inout"
     | "instanceof"
     | "int"
+    | "IntNode"
     | "interface"
     | "internal"
     | "IsoDateTimeOffsetConverter"
@@ -191,6 +196,7 @@ export type Enum =
     | "left"
     | "let"
     | "list"
+    | "LongNode"
     | "Locale"
     | "lock"
     | "long"
@@ -205,6 +211,7 @@ export type Enum =
     | "new"
     | "newtonsoft"
     | "nil"
+    | "NullNode"
     | "NO"
     | "noexcept"
     | "nonatomic"
@@ -223,6 +230,7 @@ export type Enum =
     | "nullptr"
     | "number"
     | "object"
+    | "ObjectNode"
     | "ObjectMapper"
     | "of"
     | "oneway"
@@ -275,6 +283,7 @@ export type Enum =
     | "self"
     | "Sendable"
     | "serialize"
+    | "SerializationFeature"
     | "SerializerProvider"
     | "set"
     | "short"
@@ -300,6 +309,7 @@ export type Enum =
     | "template"
     | "then"
     | "this"
+    | "TextNode"
     | "thread_local"
     | "throw"
     | "throws"
@@ -549,6 +559,7 @@ const typeMap: any = {
         "and_eq",
         "any",
         "Any",
+        "ArrayNode",
         "array",
         "as",
         "asm",
@@ -568,6 +579,7 @@ const typeMap: any = {
         "BOOL",
         "bool",
         "boolean",
+        "BooleanNode",
         "break",
         "bycopy",
         "byref",
@@ -611,6 +623,7 @@ const typeMap: any = {
         "debugger",
         "decimal",
         "declare",
+        "DeserializationFeature",
         "decltype",
         "decode_string",
         "Decoder",
@@ -627,6 +640,7 @@ const typeMap: any = {
         "didSet",
         "do",
         "double",
+        "DoubleNode",
         "dynamic",
         "dynamic_cast",
         "elif",
@@ -685,6 +699,7 @@ const typeMap: any = {
         "inout",
         "instanceof",
         "int",
+        "IntNode",
         "interface",
         "internal",
         "IsoDateTimeOffsetConverter",
@@ -714,6 +729,7 @@ const typeMap: any = {
         "left",
         "let",
         "list",
+        "LongNode",
         "Locale",
         "lock",
         "long",
@@ -728,6 +744,7 @@ const typeMap: any = {
         "new",
         "newtonsoft",
         "nil",
+        "NullNode",
         "NO",
         "noexcept",
         "nonatomic",
@@ -746,6 +763,7 @@ const typeMap: any = {
         "nullptr",
         "number",
         "object",
+        "ObjectNode",
         "ObjectMapper",
         "of",
         "oneway",
@@ -798,6 +816,7 @@ const typeMap: any = {
         "self",
         "Sendable",
         "serialize",
+        "SerializationFeature",
         "SerializerProvider",
         "set",
         "short",
@@ -823,6 +842,7 @@ const typeMap: any = {
         "template",
         "then",
         "this",
+        "TextNode",
         "thread_local",
         "throw",
         "throws",
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..19ca8da 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
@@ -22,6 +22,7 @@ export type TopLevel = {
     any?:                        UnionAnyUnion;
     Any?:                        UnionAny;
     array?:                      UnionArray;
+    ArrayNode?:                  UnionArrayNode;
     as?:                         UnionAs;
     asm?:                        UnionASM;
     assert?:                     UnionAssert;
@@ -40,6 +41,7 @@ export type TopLevel = {
     BOOL?:                       UnionBOOL;
     bool?:                       UnionBoolUnion;
     boolean?:                    UnionBoolean;
+    BooleanNode?:                UnionBooleanNode;
     break?:                      UnionBreak;
     bycopy?:                     UnionBycopy;
     byref?:                      UnionByref;
@@ -94,11 +96,13 @@ export type TopLevel = {
     del?:                        UnionDel;
     delegate?:                   UnionDelegate;
     delete?:                     UnionDelete;
+    DeserializationFeature?:     UnionDeserializationFeature;
     dict?:                       UnionDict;
     dictionary?:                 UnionDictionary;
     didSet?:                     UnionDidSet;
     do?:                         UnionDo;
     double?:                     UnionDouble;
+    DoubleNode?:                 UnionDoubleNode;
     dummy?:                      number;
     dynamic?:                    UnionDynamic;
     dynamic_cast?:               UnionDynamicCast;
@@ -160,6 +164,7 @@ export type TopLevel = {
     int?:                        UnionInt;
     interface?:                  UnionInterface;
     internal?:                   UnionInternal;
+    IntNode?:                    UnionIntNode;
     is?:                         UnionIs;
     IsoDateTimeOffsetConverter?: UnionISODateTimeOffsetConverter;
     iterable?:                   UnionIterable;
@@ -190,6 +195,7 @@ export type TopLevel = {
     Locale?:                     UnionLocale;
     lock?:                       UnionLock;
     long?:                       UnionLong;
+    LongNode?:                   UnionLongNode;
     map?:                        UnionMap;
     MapEntry?:                   UnionMapEntry;
     metadata_property_handling?: UnionMetadataPropertyHandling;
@@ -216,10 +222,12 @@ export type TopLevel = {
     NSString?:                   UnionNSString;
     NULL?:                       UnionNULL;
     null?:                       UnionNull;
+    NullNode?:                   UnionNullNode;
     nullptr?:                    UnionNullptr;
     number?:                     UnionNumber;
     object?:                     UnionObject;
     ObjectMapper?:               UnionObjectMapper;
+    ObjectNode?:                 UnionObjectNode;
     of?:                         UnionOf;
     oneway?:                     UnionOneway;
     open?:                       UnionOpen;
@@ -270,6 +278,7 @@ export type TopLevel = {
     Self?:                       UnionSelf;
     self?:                       UnionSelfUnion;
     Sendable?:                   UnionSendable;
+    SerializationFeature?:       UnionSerializationFeature;
     serialize?:                  UnionSerialize;
     SerializerProvider?:         UnionSerializerProvider;
     set?:                        UnionSet;
@@ -294,6 +303,7 @@ export type TopLevel = {
     synchronized?:               UnionSynchronized;
     system?:                     UnionSystem;
     template?:                   UnionTemplate;
+    TextNode?:                   UnionTextNode;
     then?:                       UnionThen;
     this?:                       UnionThis;
     thread_local?:               UnionThreadLocal;
@@ -351,11 +361,21 @@ export type UnionAny = Any | number;
 export type Any = {
 };
 
+export type UnionArrayNode = ArrayNode | number;
+
+export type ArrayNode = {
+};
+
 export type UnionBOOL = Bool | number;
 
 export type Bool = {
 };
 
+export type UnionBooleanNode = BooleanNode | number;
+
+export type BooleanNode = {
+};
+
 export type UnionCalendar = Calendar | number;
 
 export type Calendar = {
@@ -421,6 +441,16 @@ export type UnionDecodingError = DecodingError | number;
 export type DecodingError = {
 };
 
+export type UnionDeserializationFeature = DeserializationFeature | number;
+
+export type DeserializationFeature = {
+};
+
+export type UnionDoubleNode = DoubleNode | number;
+
+export type DoubleNode = {
+};
+
 export type UnionEncoder = Encoder | number;
 
 export type Encoder = {
@@ -461,6 +491,11 @@ export type UnionIMP = Imp | number;
 export type Imp = {
 };
 
+export type UnionIntNode = IntNode | number;
+
+export type IntNode = {
+};
+
 export type UnionISODateTimeOffsetConverter = ISODateTimeOffsetConverter | number;
 
 export type ISODateTimeOffsetConverter = {
@@ -526,6 +561,11 @@ export type UnionLocale = Locale | number;
 export type Locale = {
 };
 
+export type UnionLongNode = LongNode | number;
+
+export type LongNode = {
+};
+
 export type UnionMapEntry = MapEntry | number;
 
 export type MapEntry = {
@@ -561,11 +601,21 @@ export type UnionNone = None | number;
 export type None = {
 };
 
+export type UnionNullNode = NullNode | number;
+
+export type NullNode = {
+};
+
 export type UnionObjectMapper = ObjectMapper | number;
 
 export type ObjectMapper = {
 };
 
+export type UnionObjectNode = ObjectNode | number;
+
+export type ObjectNode = {
+};
+
 export type UnionProtocol = Protocol | number;
 
 export type Protocol = {
@@ -591,6 +641,11 @@ export type UnionSendable = Sendable | number;
 export type Sendable = {
 };
 
+export type UnionSerializationFeature = SerializationFeature | number;
+
+export type SerializationFeature = {
+};
+
 export type UnionSerializerProvider = SerializerProvider | number;
 
 export type SerializerProvider = {
@@ -616,6 +671,11 @@ export type UnionStdSerializer = StdSerializer | number;
 export type StdSerializer = {
 };
 
+export type UnionTextNode = TextNode | number;
+
+export type TextNode = {
+};
+
 export type UnionTimeOnly = TimeOnly | number;
 
 export type TimeOnly = {
@@ -2204,6 +2264,7 @@ const typeMap: any = {
         { json: "any", js: "any", typ: u(undefined, u(r("AnyClass"), 3.14)) },
         { json: "Any", js: "Any", typ: u(undefined, u(r("Any"), 3.14)) },
         { json: "array", js: "array", typ: u(undefined, u(r("ArrayClass"), 3.14)) },
+        { json: "ArrayNode", js: "ArrayNode", typ: u(undefined, u(r("ArrayNode"), 3.14)) },
         { json: "as", js: "as", typ: u(undefined, u(r("As"), 3.14)) },
         { json: "asm", js: "asm", typ: u(undefined, u(r("ASM"), 3.14)) },
         { json: "assert", js: "assert", typ: u(undefined, u(r("Assert"), 3.14)) },
@@ -2222,6 +2283,7 @@ const typeMap: any = {
         { json: "BOOL", js: "BOOL", typ: u(undefined, u(r("Bool"), 3.14)) },
         { json: "bool", js: "bool", typ: u(undefined, u(r("UnionBoolBool"), 3.14)) },
         { json: "boolean", js: "boolean", typ: u(undefined, u(r("Boolean"), 3.14)) },
+        { json: "BooleanNode", js: "BooleanNode", typ: u(undefined, u(r("BooleanNode"), 3.14)) },
         { json: "break", js: "break", typ: u(undefined, u(r("Break"), 3.14)) },
         { json: "bycopy", js: "bycopy", typ: u(undefined, u(r("Bycopy"), 3.14)) },
         { json: "byref", js: "byref", typ: u(undefined, u(r("Byref"), 3.14)) },
@@ -2276,11 +2338,13 @@ const typeMap: any = {
         { json: "del", js: "del", typ: u(undefined, u(r("Del"), 3.14)) },
         { json: "delegate", js: "delegate", typ: u(undefined, u(r("Delegate"), 3.14)) },
         { json: "delete", js: "delete", typ: u(undefined, u(r("Delete"), 3.14)) },
+        { json: "DeserializationFeature", js: "DeserializationFeature", typ: u(undefined, u(r("DeserializationFeature"), 3.14)) },
         { json: "dict", js: "dict", typ: u(undefined, u(r("Dict"), 3.14)) },
         { json: "dictionary", js: "dictionary", typ: u(undefined, u(r("Dictionary"), 3.14)) },
         { json: "didSet", js: "didSet", typ: u(undefined, u(r("DidSet"), 3.14)) },
         { json: "do", js: "do", typ: u(undefined, u(r("Do"), 3.14)) },
         { json: "double", js: "double", typ: u(undefined, u(r("Double"), 3.14)) },
+        { json: "DoubleNode", js: "DoubleNode", typ: u(undefined, u(r("DoubleNode"), 3.14)) },
         { json: "dummy", js: "dummy", typ: u(undefined, 3.14) },
         { json: "dynamic", js: "dynamic", typ: u(undefined, u(r("Dynamic"), 3.14)) },
         { json: "dynamic_cast", js: "dynamic_cast", typ: u(undefined, u(r("DynamicCast"), 3.14)) },
@@ -2342,6 +2406,7 @@ const typeMap: any = {
         { json: "int", js: "int", typ: u(undefined, u(r("Int"), 3.14)) },
         { json: "interface", js: "interface", typ: u(undefined, u(r("Interface"), 3.14)) },
         { json: "internal", js: "internal", typ: u(undefined, u(r("Internal"), 3.14)) },
+        { json: "IntNode", js: "IntNode", typ: u(undefined, u(r("IntNode"), 3.14)) },
         { json: "is", js: "is", typ: u(undefined, u(r("Is"), 3.14)) },
         { json: "IsoDateTimeOffsetConverter", js: "IsoDateTimeOffsetConverter", typ: u(undefined, u(r("ISODateTimeOffsetConverter"), 3.14)) },
         { json: "iterable", js: "iterable", typ: u(undefined, u(r("Iterable"), 3.14)) },
@@ -2372,6 +2437,7 @@ const typeMap: any = {
         { json: "Locale", js: "Locale", typ: u(undefined, u(r("Locale"), 3.14)) },
         { json: "lock", js: "lock", typ: u(undefined, u(r("Lock"), 3.14)) },
         { json: "long", js: "long", typ: u(undefined, u(r("Long"), 3.14)) },
+        { json: "LongNode", js: "LongNode", typ: u(undefined, u(r("LongNode"), 3.14)) },
         { json: "map", js: "map", typ: u(undefined, u(r("Map"), 3.14)) },
         { json: "MapEntry", js: "MapEntry", typ: u(undefined, u(r("MapEntry"), 3.14)) },
         { json: "metadata_property_handling", js: "metadata_property_handling", typ: u(undefined, u(r("MetadataPropertyHandling"), 3.14)) },
@@ -2398,10 +2464,12 @@ const typeMap: any = {
         { json: "NSString", js: "NSString", typ: u(undefined, u(r("NSString"), 3.14)) },
         { json: "NULL", js: "NULL", typ: u(undefined, u(r("Null"), 3.14)) },
         { json: "null", js: "null", typ: u(undefined, u(r("NullClass"), 3.14)) },
+        { json: "NullNode", js: "NullNode", typ: u(undefined, u(r("NullNode"), 3.14)) },
         { json: "nullptr", js: "nullptr", typ: u(undefined, u(r("Nullptr"), 3.14)) },
         { json: "number", js: "number", typ: u(undefined, u(r("Number"), 3.14)) },
         { json: "object", js: "object", typ: u(undefined, u(r("ObjectClass"), 3.14)) },
         { json: "ObjectMapper", js: "ObjectMapper", typ: u(undefined, u(r("ObjectMapper"), 3.14)) },
+        { json: "ObjectNode", js: "ObjectNode", typ: u(undefined, u(r("ObjectNode"), 3.14)) },
         { json: "of", js: "of", typ: u(undefined, u(r("Of"), 3.14)) },
         { json: "oneway", js: "oneway", typ: u(undefined, u(r("Oneway"), 3.14)) },
         { json: "open", js: "open", typ: u(undefined, u(r("Open"), 3.14)) },
@@ -2452,6 +2520,7 @@ 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: "SerializationFeature", js: "SerializationFeature", typ: u(undefined, u(r("SerializationFeature"), 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: "set", js: "set", typ: u(undefined, u(r("Set"), 3.14)) },
@@ -2476,6 +2545,7 @@ const typeMap: any = {
         { json: "synchronized", js: "synchronized", typ: u(undefined, u(r("Synchronized"), 3.14)) },
         { json: "system", js: "system", typ: u(undefined, u(r("System"), 3.14)) },
         { json: "template", js: "template", typ: u(undefined, u(r("Template"), 3.14)) },
+        { json: "TextNode", js: "TextNode", typ: u(undefined, u(r("TextNode"), 3.14)) },
         { json: "then", js: "then", typ: u(undefined, u(r("Then"), 3.14)) },
         { json: "this", js: "this", typ: u(undefined, u(r("This"), 3.14)) },
         { json: "thread_local", js: "thread_local", typ: u(undefined, u(r("ThreadLocal"), 3.14)) },
@@ -2528,8 +2598,12 @@ const typeMap: any = {
     ], "any"),
     "Any": o([
     ], false),
+    "ArrayNode": o([
+    ], false),
     "Bool": o([
     ], false),
+    "BooleanNode": o([
+    ], false),
     "Calendar": o([
     ], false),
     "ClassClass": o([
@@ -2556,6 +2630,10 @@ const typeMap: any = {
     ], false),
     "DecodingError": o([
     ], false),
+    "DeserializationFeature": o([
+    ], false),
+    "DoubleNode": o([
+    ], false),
     "Encoder": o([
     ], false),
     "EnumValues": o([
@@ -2572,6 +2650,8 @@ const typeMap: any = {
     ], false),
     "Imp": o([
     ], false),
+    "IntNode": o([
+    ], false),
     "ISODateTimeOffsetConverter": o([
     ], false),
     "JSONAny": o([
@@ -2598,6 +2678,8 @@ const typeMap: any = {
     ], false),
     "Locale": o([
     ], false),
+    "LongNode": o([
+    ], false),
     "MapEntry": o([
     ], false),
     "No": o([
@@ -2612,8 +2694,12 @@ const typeMap: any = {
     ], false),
     "None": o([
     ], false),
+    "NullNode": o([
+    ], false),
     "ObjectMapper": o([
     ], false),
+    "ObjectNode": o([
+    ], false),
     "Protocol": o([
     ], false),
     "RegExpClass": o([
@@ -2624,6 +2710,8 @@ const typeMap: any = {
     ], false),
     "Sendable": o([
     ], false),
+    "SerializationFeature": o([
+    ], false),
     "SerializerProvider": o([
     ], false),
     "SimpleModule": o([
@@ -2634,6 +2722,8 @@ const typeMap: any = {
     ], false),
     "StdSerializer": o([
     ], false),
+    "TextNode": o([
+    ], false),
     "TimeOnly": o([
     ], false),
     "TimeOnlyConverter": o([
diff --git a/base/schema-golang/test/inputs/schema/direct-union.schema/default/quicktype.go b/head/schema-golang/test/inputs/schema/direct-union.schema/default/quicktype.go
index 5110587..f557316 100644
--- a/base/schema-golang/test/inputs/schema/direct-union.schema/default/quicktype.go
+++ b/head/schema-golang/test/inputs/schema/direct-union.schema/default/quicktype.go
@@ -22,7 +22,36 @@ func (r *TopLevel) Marshal() ([]byte, error) {
 }
 
 type TopLevel struct {
-	Stuff map[string]Thing `json:"stuff"`
+	ArrayNode   *ArrayNode       `json:"arrayNode,omitempty"`
+	BooleanNode *BooleanNode     `json:"booleanNode,omitempty"`
+	DoubleNode  *DoubleNode      `json:"doubleNode,omitempty"`
+	IntNode     *IntNode         `json:"intNode,omitempty"`
+	LongNode    *LongNode        `json:"longNode,omitempty"`
+	NullNode    *NullNode        `json:"nullNode,omitempty"`
+	ObjectNode  *ObjectNode      `json:"objectNode,omitempty"`
+	Stuff       map[string]Thing `json:"stuff"`
+	TextNode    *TextNode        `json:"textNode,omitempty"`
+}
+
+type ArrayNode struct {
+}
+
+type BooleanNode struct {
+}
+
+type DoubleNode struct {
+}
+
+type IntNode struct {
+}
+
+type LongNode struct {
+}
+
+type NullNode struct {
+}
+
+type ObjectNode struct {
 }
 
 type Thing struct {
@@ -30,6 +59,9 @@ type Thing struct {
 	Required *Anything `json:"required"`
 }
 
+type TextNode struct {
+}
+
 type Anything struct {
 	AnythingArray []interface{}
 	AnythingMap   map[string]interface{}
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..a03c32d 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
@@ -36,6 +36,7 @@ const (
 	AndEq                      EnumEnum = "and_eq"
 	Any                        EnumEnum = "any"
 	EnumAny                    EnumEnum = "Any"
+	ArrayNode                  EnumEnum = "ArrayNode"
 	Array                      EnumEnum = "array"
 	As                         EnumEnum = "as"
 	ASM                        EnumEnum = "asm"
@@ -55,6 +56,7 @@ const (
 	EnumBOOL                   EnumEnum = "BOOL"
 	EnumBool                   EnumEnum = "bool"
 	Boolean                    EnumEnum = "boolean"
+	BooleanNode                EnumEnum = "BooleanNode"
 	Break                      EnumEnum = "break"
 	Bycopy                     EnumEnum = "bycopy"
 	Byref                      EnumEnum = "byref"
@@ -98,6 +100,7 @@ const (
 	Debugger                   EnumEnum = "debugger"
 	Decimal                    EnumEnum = "decimal"
 	Declare                    EnumEnum = "declare"
+	DeserializationFeature     EnumEnum = "DeserializationFeature"
 	Decltype                   EnumEnum = "decltype"
 	DecodeString               EnumEnum = "decode_string"
 	Decoder                    EnumEnum = "Decoder"
@@ -114,6 +117,7 @@ const (
 	DidSet                     EnumEnum = "didSet"
 	Do                         EnumEnum = "do"
 	Double                     EnumEnum = "double"
+	DoubleNode                 EnumEnum = "DoubleNode"
 	Dynamic                    EnumEnum = "dynamic"
 	DynamicCast                EnumEnum = "dynamic_cast"
 	Elif                       EnumEnum = "elif"
@@ -172,6 +176,7 @@ const (
 	Inout                      EnumEnum = "inout"
 	Instanceof                 EnumEnum = "instanceof"
 	Int                        EnumEnum = "int"
+	IntNode                    EnumEnum = "IntNode"
 	Interface                  EnumEnum = "interface"
 	Internal                   EnumEnum = "internal"
 	ISODateTimeOffsetConverter EnumEnum = "IsoDateTimeOffsetConverter"
@@ -201,6 +206,7 @@ const (
 	Left                       EnumEnum = "left"
 	Let                        EnumEnum = "let"
 	List                       EnumEnum = "list"
+	LongNode                   EnumEnum = "LongNode"
 	Locale                     EnumEnum = "Locale"
 	Lock                       EnumEnum = "lock"
 	Long                       EnumEnum = "long"
@@ -215,6 +221,7 @@ const (
 	New                        EnumEnum = "new"
 	Newtonsoft                 EnumEnum = "newtonsoft"
 	Nil                        EnumEnum = "nil"
+	NullNode                   EnumEnum = "NullNode"
 	No                         EnumEnum = "NO"
 	Noexcept                   EnumEnum = "noexcept"
 	Nonatomic                  EnumEnum = "nonatomic"
@@ -233,6 +240,7 @@ const (
 	Nullptr                    EnumEnum = "nullptr"
 	Number                     EnumEnum = "number"
 	Object                     EnumEnum = "object"
+	ObjectNode                 EnumEnum = "ObjectNode"
 	ObjectMapper               EnumEnum = "ObjectMapper"
 	Of                         EnumEnum = "of"
 	Oneway                     EnumEnum = "oneway"
@@ -285,6 +293,7 @@ const (
 	EnumSelf                   EnumEnum = "self"
 	Sendable                   EnumEnum = "Sendable"
 	Serialize                  EnumEnum = "serialize"
+	SerializationFeature       EnumEnum = "SerializationFeature"
 	SerializerProvider         EnumEnum = "SerializerProvider"
 	Set                        EnumEnum = "set"
 	Short                      EnumEnum = "short"
@@ -310,6 +319,7 @@ const (
 	Template                   EnumEnum = "template"
 	Then                       EnumEnum = "then"
 	This                       EnumEnum = "this"
+	TextNode                   EnumEnum = "TextNode"
 	ThreadLocal                EnumEnum = "thread_local"
 	Throw                      EnumEnum = "throw"
 	Throws                     EnumEnum = "throws"
@@ -367,7 +377,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, ArrayNode, Array, As, ASM, Assert, Associatedtype, Associativity, Async, Atomic, AtomicCancel, AtomicCommit, AtomicNoexcept, Auto, Await, Base, Bitand, Bitor, EnumBOOL, EnumBool, Boolean, BooleanNode, 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, DeserializationFeature, Decltype, DecodeString, Decoder, DecodingError, Def, Default, Defer, Deinit, Del, Delegate, Delete, Dict, Dictionary, DidSet, Do, Double, DoubleNode, 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, IntNode, 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, LongNode, Locale, Lock, Long, Map, MapEntry, MetadataPropertyHandling, Module, Mutable, Mutating, Namespace, Native, New, Newtonsoft, Nil, NullNode, No, Noexcept, Nonatomic, None, EnumNone, Nonlocal, Nonmutating, NSObject, NoSuchMethod, Not, NotEq, NSError, NSString, Null, EnumNull, Nullptr, Number, Object, ObjectNode, 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, SerializationFeature, 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, TextNode, 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
 	}
 	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..f47afee 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
@@ -34,6 +34,7 @@ type TopLevel struct {
 	TopLevelAny                *UnionAnyUnion                   `json:"any"`
 	Any                        *UnionAny                        `json:"Any"`
 	Array                      *UnionArray                      `json:"array"`
+	ArrayNode                  *UnionArrayNode                  `json:"ArrayNode"`
 	As                         *UnionAs                         `json:"as"`
 	ASM                        *UnionASM                        `json:"asm"`
 	Assert                     *UnionAssert                     `json:"assert"`
@@ -52,6 +53,7 @@ type TopLevel struct {
 	Bool                       *UnionBOOL                       `json:"BOOL"`
 	PurpleBool                 *UnionBoolUnion                  `json:"bool"`
 	Boolean                    *UnionBoolean                    `json:"boolean"`
+	BooleanNode                *UnionBooleanNode                `json:"BooleanNode"`
 	Break                      *UnionBreak                      `json:"break"`
 	Bycopy                     *UnionBycopy                     `json:"bycopy"`
 	Byref                      *UnionByref                      `json:"byref"`
@@ -106,11 +108,13 @@ type TopLevel struct {
 	Del                        *UnionDel                        `json:"del"`
 	Delegate                   *UnionDelegate                   `json:"delegate"`
 	Delete                     *UnionDelete                     `json:"delete"`
+	DeserializationFeature     *UnionDeserializationFeature     `json:"DeserializationFeature"`
 	Dict                       *UnionDict                       `json:"dict"`
 	Dictionary                 *UnionDictionary                 `json:"dictionary"`
 	DidSet                     *UnionDidSet                     `json:"didSet"`
 	Do                         *UnionDo                         `json:"do"`
 	Double                     *UnionDouble                     `json:"double"`
+	DoubleNode                 *UnionDoubleNode                 `json:"DoubleNode"`
 	Dummy                      *float64                         `json:"dummy,omitempty"`
 	Dynamic                    *UnionDynamic                    `json:"dynamic"`
 	DynamicCast                *UnionDynamicCast                `json:"dynamic_cast"`
@@ -172,6 +176,7 @@ type TopLevel struct {
 	Int                        *UnionInt                        `json:"int"`
 	Interface                  *UnionInterface                  `json:"interface"`
 	Internal                   *UnionInternal                   `json:"internal"`
+	IntNode                    *UnionIntNode                    `json:"IntNode"`
 	Is                         *UnionIs                         `json:"is"`
 	ISODateTimeOffsetConverter *UnionISODateTimeOffsetConverter `json:"IsoDateTimeOffsetConverter"`
 	Iterable                   *UnionIterable                   `json:"iterable"`
@@ -202,6 +207,7 @@ type TopLevel struct {
 	Locale                     *UnionLocale                     `json:"Locale"`
 	Lock                       *UnionLock                       `json:"lock"`
 	Long                       *UnionLong                       `json:"long"`
+	LongNode                   *UnionLongNode                   `json:"LongNode"`
 	Map                        *UnionMap                        `json:"map"`
 	MapEntry                   *UnionMapEntry                   `json:"MapEntry"`
 	MetadataPropertyHandling   *UnionMetadataPropertyHandling   `json:"metadata_property_handling"`
@@ -228,10 +234,12 @@ type TopLevel struct {
 	NSString                   *UnionNSString                   `json:"NSString"`
 	Null                       *UnionNULL                       `json:"NULL"`
 	TopLevelNull               *UnionNull                       `json:"null"`
+	NullNode                   *UnionNullNode                   `json:"NullNode"`
 	Nullptr                    *UnionNullptr                    `json:"nullptr"`
 	Number                     *UnionNumber                     `json:"number"`
 	Object                     *UnionObject                     `json:"object"`
 	ObjectMapper               *UnionObjectMapper               `json:"ObjectMapper"`
+	ObjectNode                 *UnionObjectNode                 `json:"ObjectNode"`
 	Of                         *UnionOf                         `json:"of"`
 	Oneway                     *UnionOneway                     `json:"oneway"`
 	Open                       *UnionOpen                       `json:"open"`
@@ -282,6 +290,7 @@ type TopLevel struct {
 	Self                       *UnionSelf                       `json:"Self"`
 	TopLevelSelf               *UnionSelfUnion                  `json:"self"`
 	Sendable                   *UnionSendable                   `json:"Sendable"`
+	SerializationFeature       *UnionSerializationFeature       `json:"SerializationFeature"`
 	Serialize                  *UnionSerialize                  `json:"serialize"`
 	SerializerProvider         *UnionSerializerProvider         `json:"SerializerProvider"`
 	Set                        *UnionSet                        `json:"set"`
@@ -306,6 +315,7 @@ type TopLevel struct {
 	Synchronized               *UnionSynchronized               `json:"synchronized"`
 	System                     *UnionSystem                     `json:"system"`
 	Template                   *UnionTemplate                   `json:"template"`
+	TextNode                   *UnionTextNode                   `json:"TextNode"`
 	Then                       *UnionThen                       `json:"then"`
 	This                       *UnionThis                       `json:"this"`
 	ThreadLocal                *UnionThreadLocal                `json:"thread_local"`
@@ -381,6 +391,9 @@ type Any struct {
 type Array struct {
 }
 
+type ArrayNode struct {
+}
+
 type As struct {
 }
 
@@ -429,6 +442,9 @@ type Bool struct {
 type Boolean struct {
 }
 
+type BooleanNode struct {
+}
+
 type Break struct {
 }
 
@@ -591,6 +607,9 @@ type Delegate struct {
 type Delete struct {
 }
 
+type DeserializationFeature struct {
+}
+
 type Dict struct {
 }
 
@@ -606,6 +625,9 @@ type Do struct {
 type Double struct {
 }
 
+type DoubleNode struct {
+}
+
 type Dynamic struct {
 }
 
@@ -786,6 +808,9 @@ type Instanceof struct {
 type Int struct {
 }
 
+type IntNode struct {
+}
+
 type Interface struct {
 }
 
@@ -879,6 +904,9 @@ type Lock struct {
 type Long struct {
 }
 
+type LongNode struct {
+}
+
 type Map struct {
 }
 
@@ -951,6 +979,9 @@ type NotEq struct {
 type Null struct {
 }
 
+type NullNode struct {
+}
+
 type Nullptr struct {
 }
 
@@ -963,6 +994,9 @@ type Object struct {
 type ObjectMapper struct {
 }
 
+type ObjectNode struct {
+}
+
 type Of struct {
 }
 
@@ -1110,6 +1144,9 @@ type Self struct {
 type Sendable struct {
 }
 
+type SerializationFeature struct {
+}
+
 type Serialize struct {
 }
 
@@ -1182,6 +1219,9 @@ type System struct {
 type Template struct {
 }
 
+type TextNode struct {
+}
+
 type Then struct {
 }
 
@@ -1529,6 +1569,28 @@ func (x *UnionArray) MarshalJSON() ([]byte, error) {
 	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.Array != nil, x.Array, false, nil, false, nil, false)
 }
 
+type UnionArrayNode struct {
+	ArrayNode *ArrayNode
+	Double    *float64
+}
+
+func (x *UnionArrayNode) UnmarshalJSON(data []byte) error {
+	x.ArrayNode = nil
+	var c ArrayNode
+	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.ArrayNode = &c
+	}
+	return nil
+}
+
+func (x *UnionArrayNode) MarshalJSON() ([]byte, error) {
+	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.ArrayNode != nil, x.ArrayNode, false, nil, false, nil, false)
+}
+
 type UnionAs struct {
 	As     *As
 	Double *float64
@@ -1881,6 +1943,28 @@ func (x *UnionBoolean) MarshalJSON() ([]byte, error) {
 	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.Boolean != nil, x.Boolean, false, nil, false, nil, false)
 }
 
+type UnionBooleanNode struct {
+	BooleanNode *BooleanNode
+	Double      *float64
+}
+
+func (x *UnionBooleanNode) UnmarshalJSON(data []byte) error {
+	x.BooleanNode = nil
+	var c BooleanNode
+	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.BooleanNode = &c
+	}
+	return nil
+}
+
+func (x *UnionBooleanNode) MarshalJSON() ([]byte, error) {
+	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.BooleanNode != nil, x.BooleanNode, false, nil, false, nil, false)
+}
+
 type UnionBreak struct {
 	Break  *Break
 	Double *float64
@@ -3069,6 +3153,28 @@ func (x *UnionDelete) MarshalJSON() ([]byte, error) {
 	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.Delete != nil, x.Delete, false, nil, false, nil, false)
 }
 
+type UnionDeserializationFeature struct {
+	DeserializationFeature *DeserializationFeature
+	Double                 *float64
+}
+
+func (x *UnionDeserializationFeature) UnmarshalJSON(data []byte) error {
+	x.DeserializationFeature = nil
+	var c DeserializationFeature
+	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.DeserializationFeature = &c
+	}
+	return nil
+}
+
+func (x *UnionDeserializationFeature) MarshalJSON() ([]byte, error) {
+	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.DeserializationFeature != nil, x.DeserializationFeature, false, nil, false, nil, false)
+}
+
 type UnionDict struct {
 	Dict   *Dict
 	Double *float64
@@ -3179,6 +3285,28 @@ func (x *UnionDouble) MarshalJSON() ([]byte, error) {
 	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.PurpleDouble != nil, x.PurpleDouble, false, nil, false, nil, false)
 }
 
+type UnionDoubleNode struct {
+	Double     *float64
+	DoubleNode *DoubleNode
+}
+
+func (x *UnionDoubleNode) UnmarshalJSON(data []byte) error {
+	x.DoubleNode = nil
+	var c DoubleNode
+	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.DoubleNode = &c
+	}
+	return nil
+}
+
+func (x *UnionDoubleNode) MarshalJSON() ([]byte, error) {
+	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.DoubleNode != nil, x.DoubleNode, false, nil, false, nil, false)
+}
+
 type UnionDynamic struct {
 	Double  *float64
 	Dynamic *Dynamic
@@ -4499,6 +4627,28 @@ func (x *UnionInt) MarshalJSON() ([]byte, error) {
 	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.Int != nil, x.Int, false, nil, false, nil, false)
 }
 
+type UnionIntNode struct {
+	Double  *float64
+	IntNode *IntNode
+}
+
+func (x *UnionIntNode) UnmarshalJSON(data []byte) error {
+	x.IntNode = nil
+	var c IntNode
+	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.IntNode = &c
+	}
+	return nil
+}
+
+func (x *UnionIntNode) MarshalJSON() ([]byte, error) {
+	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.IntNode != nil, x.IntNode, false, nil, false, nil, false)
+}
+
 type UnionInterface struct {
 	Double    *float64
 	Interface *Interface
@@ -5181,6 +5331,28 @@ func (x *UnionLong) MarshalJSON() ([]byte, error) {
 	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.Long != nil, x.Long, false, nil, false, nil, false)
 }
 
+type UnionLongNode struct {
+	Double   *float64
+	LongNode *LongNode
+}
+
+func (x *UnionLongNode) UnmarshalJSON(data []byte) error {
+	x.LongNode = nil
+	var c LongNode
+	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.LongNode = &c
+	}
+	return nil
+}
+
+func (x *UnionLongNode) MarshalJSON() ([]byte, error) {
+	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.LongNode != nil, x.LongNode, false, nil, false, nil, false)
+}
+
 type UnionMap struct {
 	Double *float64
 	Map    *Map
@@ -5709,6 +5881,28 @@ func (x *UnionNULL) MarshalJSON() ([]byte, error) {
 	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.Null != nil, x.Null, false, nil, false, nil, false)
 }
 
+type UnionNullNode struct {
+	Double   *float64
+	NullNode *NullNode
+}
+
+func (x *UnionNullNode) UnmarshalJSON(data []byte) error {
+	x.NullNode = nil
+	var c NullNode
+	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.NullNode = &c
+	}
+	return nil
+}
+
+func (x *UnionNullNode) MarshalJSON() ([]byte, error) {
+	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.NullNode != nil, x.NullNode, false, nil, false, nil, false)
+}
+
 type UnionNullptr struct {
 	Double  *float64
 	Nullptr *Nullptr
@@ -5797,6 +5991,28 @@ func (x *UnionObjectMapper) MarshalJSON() ([]byte, error) {
 	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.ObjectMapper != nil, x.ObjectMapper, false, nil, false, nil, false)
 }
 
+type UnionObjectNode struct {
+	Double     *float64
+	ObjectNode *ObjectNode
+}
+
+func (x *UnionObjectNode) UnmarshalJSON(data []byte) error {
+	x.ObjectNode = nil
+	var c ObjectNode
+	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.ObjectNode = &c
+	}
+	return nil
+}
+
+func (x *UnionObjectNode) MarshalJSON() ([]byte, error) {
+	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.ObjectNode != nil, x.ObjectNode, false, nil, false, nil, false)
+}
+
 type UnionOf struct {
 	Double *float64
 	Of     *Of
@@ -6875,6 +7091,28 @@ 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 UnionSerializationFeature struct {
+	Double               *float64
+	SerializationFeature *SerializationFeature
+}
+
+func (x *UnionSerializationFeature) UnmarshalJSON(data []byte) error {
+	x.SerializationFeature = nil
+	var c SerializationFeature
+	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.SerializationFeature = &c
+	}
+	return nil
+}
+
+func (x *UnionSerializationFeature) MarshalJSON() ([]byte, error) {
+	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.SerializationFeature != nil, x.SerializationFeature, false, nil, false, nil, false)
+}
+
 type UnionSerialize struct {
 	Double    *float64
 	Serialize *Serialize
@@ -7403,6 +7641,28 @@ func (x *UnionTemplate) MarshalJSON() ([]byte, error) {
 	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.Template != nil, x.Template, false, nil, false, nil, false)
 }
 
+type UnionTextNode struct {
+	Double   *float64
+	TextNode *TextNode
+}
+
+func (x *UnionTextNode) UnmarshalJSON(data []byte) error {
+	x.TextNode = nil
+	var c TextNode
+	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.TextNode = &c
+	}
+	return nil
+}
+
+func (x *UnionTextNode) MarshalJSON() ([]byte, error) {
+	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.TextNode != nil, x.TextNode, false, nil, false, nil, false)
+}
+
 type UnionThen struct {
 	Double *float64
 	Then   *Then
diff --git a/base/schema-haskell/test/inputs/schema/direct-union.schema/default/QuickType.hs b/head/schema-haskell/test/inputs/schema/direct-union.schema/default/QuickType.hs
index b01ebb2..972e868 100644
--- a/base/schema-haskell/test/inputs/schema/direct-union.schema/default/QuickType.hs
+++ b/head/schema-haskell/test/inputs/schema/direct-union.schema/default/QuickType.hs
@@ -3,7 +3,15 @@
 
 module QuickType
     ( QuickType (..)
+    , ArrayNode (..)
+    , BooleanNode (..)
+    , DoubleNode (..)
+    , IntNode (..)
+    , LongNode (..)
+    , NullNode (..)
+    , ObjectNode (..)
     , Thing (..)
+    , TextNode (..)
     , Anything (..)
     , decodeTopLevel
     ) where
@@ -15,7 +23,43 @@ import Data.HashMap.Strict (HashMap)
 import Data.Text (Text)
 
 data QuickType = QuickType
-    { stuffQuickType :: HashMap Text Thing
+    { arrayNodeQuickType :: Maybe ArrayNode
+    , booleanNodeQuickType :: Maybe BooleanNode
+    , doubleNodeQuickType :: Maybe DoubleNode
+    , intNodeQuickType :: Maybe IntNode
+    , longNodeQuickType :: Maybe LongNode
+    , nullNodeQuickType :: Maybe NullNode
+    , objectNodeQuickType :: Maybe ObjectNode
+    , stuffQuickType :: HashMap Text Thing
+    , textNodeQuickType :: Maybe TextNode
+    } deriving (Show)
+
+data ArrayNode = ArrayNode
+    {
+    } deriving (Show)
+
+data BooleanNode = BooleanNode
+    {
+    } deriving (Show)
+
+data DoubleNode = DoubleNode
+    {
+    } deriving (Show)
+
+data IntNode = IntNode
+    {
+    } deriving (Show)
+
+data LongNode = LongNode
+    {
+    } deriving (Show)
+
+data NullNode = NullNode
+    {
+    } deriving (Show)
+
+data ObjectNode = ObjectNode
+    {
     } deriving (Show)
 
 data Thing = Thing
@@ -33,18 +77,80 @@ data Anything
     | StringInAnything Text
     deriving (Show)
 
+data TextNode = TextNode
+    {
+    } deriving (Show)
+
 decodeTopLevel :: ByteString -> Maybe QuickType
 decodeTopLevel = decode
 
 instance ToJSON QuickType where
-    toJSON (QuickType stuffQuickType) =
+    toJSON (QuickType arrayNodeQuickType booleanNodeQuickType doubleNodeQuickType intNodeQuickType longNodeQuickType nullNodeQuickType objectNodeQuickType stuffQuickType textNodeQuickType) =
         object $ foldMap (maybe [] pure)
-        [ Just $ "stuff" .= stuffQuickType
+        [ ("arrayNode" .=) <$> arrayNodeQuickType
+        , ("booleanNode" .=) <$> booleanNodeQuickType
+        , ("doubleNode" .=) <$> doubleNodeQuickType
+        , ("intNode" .=) <$> intNodeQuickType
+        , ("longNode" .=) <$> longNodeQuickType
+        , ("nullNode" .=) <$> nullNodeQuickType
+        , ("objectNode" .=) <$> objectNodeQuickType
+        , Just $ "stuff" .= stuffQuickType
+        , ("textNode" .=) <$> textNodeQuickType
         ]
 
 instance FromJSON QuickType where
     parseJSON (Object v) = QuickType
-        <$> v .: "stuff"
+        <$> v .:! "arrayNode"
+        <*> v .:! "booleanNode"
+        <*> v .:! "doubleNode"
+        <*> v .:! "intNode"
+        <*> v .:! "longNode"
+        <*> v .:! "nullNode"
+        <*> v .:! "objectNode"
+        <*> v .: "stuff"
+        <*> v .:! "textNode"
+
+instance ToJSON ArrayNode where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON ArrayNode where
+    parseJSON (Object _) = return ArrayNode
+
+instance ToJSON BooleanNode where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON BooleanNode where
+    parseJSON (Object _) = return BooleanNode
+
+instance ToJSON DoubleNode where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON DoubleNode where
+    parseJSON (Object _) = return DoubleNode
+
+instance ToJSON IntNode where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON IntNode where
+    parseJSON (Object _) = return IntNode
+
+instance ToJSON LongNode where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON LongNode where
+    parseJSON (Object _) = return LongNode
+
+instance ToJSON NullNode where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON NullNode where
+    parseJSON (Object _) = return NullNode
+
+instance ToJSON ObjectNode where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON ObjectNode where
+    parseJSON (Object _) = return ObjectNode
 
 instance ToJSON Thing where
     toJSON (Thing optionalThing requiredThing) =
@@ -75,3 +181,9 @@ instance FromJSON Anything where
     parseJSON xs@(Number _) = (fmap IntegerInAnything . parseJSON) xs
     parseJSON Null = return NullInAnything
     parseJSON xs@(String _) = (fmap StringInAnything . parseJSON) xs
+
+instance ToJSON TextNode where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON TextNode where
+    parseJSON (Object _) = return TextNode
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..cdf2512 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
@@ -29,6 +29,7 @@ data EnumEnum
     | AndEqEnumEnum
     | AnyEnumEnum
     | PurpleAnyEnumEnum
+    | ArrayNodeEnumEnum
     | ArrayEnumEnum
     | AsEnumEnum
     | ASMEnumEnum
@@ -48,6 +49,7 @@ data EnumEnum
     | BOOLEnumEnum
     | PurpleBoolEnumEnum
     | BooleanEnumEnum
+    | BooleanNodeEnumEnum
     | BreakEnumEnum
     | BycopyEnumEnum
     | ByrefEnumEnum
@@ -91,6 +93,7 @@ data EnumEnum
     | DebuggerEnumEnum
     | DecimalEnumEnum
     | DeclareEnumEnum
+    | DeserializationFeatureEnumEnum
     | DecltypeEnumEnum
     | DecodeStringEnumEnum
     | DecoderEnumEnum
@@ -107,6 +110,7 @@ data EnumEnum
     | DidSetEnumEnum
     | DoEnumEnum
     | DoubleEnumEnum
+    | DoubleNodeEnumEnum
     | DynamicEnumEnum
     | DynamicCastEnumEnum
     | ElifEnumEnum
@@ -165,6 +169,7 @@ data EnumEnum
     | InoutEnumEnum
     | InstanceofEnumEnum
     | IntEnumEnum
+    | IntNodeEnumEnum
     | InterfaceEnumEnum
     | InternalEnumEnum
     | ISODateTimeOffsetConverterEnumEnum
@@ -194,6 +199,7 @@ data EnumEnum
     | LeftEnumEnum
     | LetEnumEnum
     | ListEnumEnum
+    | LongNodeEnumEnum
     | LocaleEnumEnum
     | LockEnumEnum
     | LongEnumEnum
@@ -208,6 +214,7 @@ data EnumEnum
     | NewEnumEnum
     | NewtonsoftEnumEnum
     | NilEnumEnum
+    | NullNodeEnumEnum
     | NOEnumEnum
     | NoexceptEnumEnum
     | NonatomicEnumEnum
@@ -226,6 +233,7 @@ data EnumEnum
     | NullptrEnumEnum
     | NumberEnumEnum
     | ObjectEnumEnum
+    | ObjectNodeEnumEnum
     | ObjectMapperEnumEnum
     | OfEnumEnum
     | OnewayEnumEnum
@@ -278,6 +286,7 @@ data EnumEnum
     | PurpleSelfEnumEnum
     | SendableEnumEnum
     | SerializeEnumEnum
+    | SerializationFeatureEnumEnum
     | SerializerProviderEnumEnum
     | SetEnumEnum
     | ShortEnumEnum
@@ -303,6 +312,7 @@ data EnumEnum
     | TemplateEnumEnum
     | ThenEnumEnum
     | ThisEnumEnum
+    | TextNodeEnumEnum
     | ThreadLocalEnumEnum
     | ThrowEnumEnum
     | ThrowsEnumEnum
@@ -378,6 +388,7 @@ instance ToJSON EnumEnum where
     toJSON AndEqEnumEnum = "and_eq"
     toJSON AnyEnumEnum = "any"
     toJSON PurpleAnyEnumEnum = "Any"
+    toJSON ArrayNodeEnumEnum = "ArrayNode"
     toJSON ArrayEnumEnum = "array"
     toJSON AsEnumEnum = "as"
     toJSON ASMEnumEnum = "asm"
@@ -397,6 +408,7 @@ instance ToJSON EnumEnum where
     toJSON BOOLEnumEnum = "BOOL"
     toJSON PurpleBoolEnumEnum = "bool"
     toJSON BooleanEnumEnum = "boolean"
+    toJSON BooleanNodeEnumEnum = "BooleanNode"
     toJSON BreakEnumEnum = "break"
     toJSON BycopyEnumEnum = "bycopy"
     toJSON ByrefEnumEnum = "byref"
@@ -440,6 +452,7 @@ instance ToJSON EnumEnum where
     toJSON DebuggerEnumEnum = "debugger"
     toJSON DecimalEnumEnum = "decimal"
     toJSON DeclareEnumEnum = "declare"
+    toJSON DeserializationFeatureEnumEnum = "DeserializationFeature"
     toJSON DecltypeEnumEnum = "decltype"
     toJSON DecodeStringEnumEnum = "decode_string"
     toJSON DecoderEnumEnum = "Decoder"
@@ -456,6 +469,7 @@ instance ToJSON EnumEnum where
     toJSON DidSetEnumEnum = "didSet"
     toJSON DoEnumEnum = "do"
     toJSON DoubleEnumEnum = "double"
+    toJSON DoubleNodeEnumEnum = "DoubleNode"
     toJSON DynamicEnumEnum = "dynamic"
     toJSON DynamicCastEnumEnum = "dynamic_cast"
     toJSON ElifEnumEnum = "elif"
@@ -514,6 +528,7 @@ instance ToJSON EnumEnum where
     toJSON InoutEnumEnum = "inout"
     toJSON InstanceofEnumEnum = "instanceof"
     toJSON IntEnumEnum = "int"
+    toJSON IntNodeEnumEnum = "IntNode"
     toJSON InterfaceEnumEnum = "interface"
     toJSON InternalEnumEnum = "internal"
     toJSON ISODateTimeOffsetConverterEnumEnum = "IsoDateTimeOffsetConverter"
@@ -543,6 +558,7 @@ instance ToJSON EnumEnum where
     toJSON LeftEnumEnum = "left"
     toJSON LetEnumEnum = "let"
     toJSON ListEnumEnum = "list"
+    toJSON LongNodeEnumEnum = "LongNode"
     toJSON LocaleEnumEnum = "Locale"
     toJSON LockEnumEnum = "lock"
     toJSON LongEnumEnum = "long"
@@ -557,6 +573,7 @@ instance ToJSON EnumEnum where
     toJSON NewEnumEnum = "new"
     toJSON NewtonsoftEnumEnum = "newtonsoft"
     toJSON NilEnumEnum = "nil"
+    toJSON NullNodeEnumEnum = "NullNode"
     toJSON NOEnumEnum = "NO"
     toJSON NoexceptEnumEnum = "noexcept"
     toJSON NonatomicEnumEnum = "nonatomic"
@@ -575,6 +592,7 @@ instance ToJSON EnumEnum where
     toJSON NullptrEnumEnum = "nullptr"
     toJSON NumberEnumEnum = "number"
     toJSON ObjectEnumEnum = "object"
+    toJSON ObjectNodeEnumEnum = "ObjectNode"
     toJSON ObjectMapperEnumEnum = "ObjectMapper"
     toJSON OfEnumEnum = "of"
     toJSON OnewayEnumEnum = "oneway"
@@ -627,6 +645,7 @@ instance ToJSON EnumEnum where
     toJSON PurpleSelfEnumEnum = "self"
     toJSON SendableEnumEnum = "Sendable"
     toJSON SerializeEnumEnum = "serialize"
+    toJSON SerializationFeatureEnumEnum = "SerializationFeature"
     toJSON SerializerProviderEnumEnum = "SerializerProvider"
     toJSON SetEnumEnum = "set"
     toJSON ShortEnumEnum = "short"
@@ -652,6 +671,7 @@ instance ToJSON EnumEnum where
     toJSON TemplateEnumEnum = "template"
     toJSON ThenEnumEnum = "then"
     toJSON ThisEnumEnum = "this"
+    toJSON TextNodeEnumEnum = "TextNode"
     toJSON ThreadLocalEnumEnum = "thread_local"
     toJSON ThrowEnumEnum = "throw"
     toJSON ThrowsEnumEnum = "throws"
@@ -715,6 +735,7 @@ instance FromJSON EnumEnum where
             parseText "and_eq" = return AndEqEnumEnum
             parseText "any" = return AnyEnumEnum
             parseText "Any" = return PurpleAnyEnumEnum
+            parseText "ArrayNode" = return ArrayNodeEnumEnum
             parseText "array" = return ArrayEnumEnum
             parseText "as" = return AsEnumEnum
             parseText "asm" = return ASMEnumEnum
@@ -734,6 +755,7 @@ instance FromJSON EnumEnum where
             parseText "BOOL" = return BOOLEnumEnum
             parseText "bool" = return PurpleBoolEnumEnum
             parseText "boolean" = return BooleanEnumEnum
+            parseText "BooleanNode" = return BooleanNodeEnumEnum
             parseText "break" = return BreakEnumEnum
             parseText "bycopy" = return BycopyEnumEnum
             parseText "byref" = return ByrefEnumEnum
@@ -777,6 +799,7 @@ instance FromJSON EnumEnum where
             parseText "debugger" = return DebuggerEnumEnum
             parseText "decimal" = return DecimalEnumEnum
             parseText "declare" = return DeclareEnumEnum
+            parseText "DeserializationFeature" = return DeserializationFeatureEnumEnum
             parseText "decltype" = return DecltypeEnumEnum
             parseText "decode_string" = return DecodeStringEnumEnum
             parseText "Decoder" = return DecoderEnumEnum
@@ -793,6 +816,7 @@ instance FromJSON EnumEnum where
             parseText "didSet" = return DidSetEnumEnum
             parseText "do" = return DoEnumEnum
             parseText "double" = return DoubleEnumEnum
+            parseText "DoubleNode" = return DoubleNodeEnumEnum
             parseText "dynamic" = return DynamicEnumEnum
             parseText "dynamic_cast" = return DynamicCastEnumEnum
             parseText "elif" = return ElifEnumEnum
@@ -851,6 +875,7 @@ instance FromJSON EnumEnum where
             parseText "inout" = return InoutEnumEnum
             parseText "instanceof" = return InstanceofEnumEnum
             parseText "int" = return IntEnumEnum
+            parseText "IntNode" = return IntNodeEnumEnum
             parseText "interface" = return InterfaceEnumEnum
             parseText "internal" = return InternalEnumEnum
             parseText "IsoDateTimeOffsetConverter" = return ISODateTimeOffsetConverterEnumEnum
@@ -880,6 +905,7 @@ instance FromJSON EnumEnum where
             parseText "left" = return LeftEnumEnum
             parseText "let" = return LetEnumEnum
             parseText "list" = return ListEnumEnum
+            parseText "LongNode" = return LongNodeEnumEnum
             parseText "Locale" = return LocaleEnumEnum
             parseText "lock" = return LockEnumEnum
             parseText "long" = return LongEnumEnum
@@ -894,6 +920,7 @@ instance FromJSON EnumEnum where
             parseText "new" = return NewEnumEnum
             parseText "newtonsoft" = return NewtonsoftEnumEnum
             parseText "nil" = return NilEnumEnum
+            parseText "NullNode" = return NullNodeEnumEnum
             parseText "NO" = return NOEnumEnum
             parseText "noexcept" = return NoexceptEnumEnum
             parseText "nonatomic" = return NonatomicEnumEnum
@@ -912,6 +939,7 @@ instance FromJSON EnumEnum where
             parseText "nullptr" = return NullptrEnumEnum
             parseText "number" = return NumberEnumEnum
             parseText "object" = return ObjectEnumEnum
+            parseText "ObjectNode" = return ObjectNodeEnumEnum
             parseText "ObjectMapper" = return ObjectMapperEnumEnum
             parseText "of" = return OfEnumEnum
             parseText "oneway" = return OnewayEnumEnum
@@ -964,6 +992,7 @@ instance FromJSON EnumEnum where
             parseText "self" = return PurpleSelfEnumEnum
             parseText "Sendable" = return SendableEnumEnum
             parseText "serialize" = return SerializeEnumEnum
+            parseText "SerializationFeature" = return SerializationFeatureEnumEnum
             parseText "SerializerProvider" = return SerializerProviderEnumEnum
             parseText "set" = return SetEnumEnum
             parseText "short" = return ShortEnumEnum
@@ -989,6 +1018,7 @@ instance FromJSON EnumEnum where
             parseText "template" = return TemplateEnumEnum
             parseText "then" = return ThenEnumEnum
             parseText "this" = return ThisEnumEnum
+            parseText "TextNode" = return TextNodeEnumEnum
             parseText "thread_local" = return ThreadLocalEnumEnum
             parseText "throw" = return ThrowEnumEnum
             parseText "throws" = return ThrowsEnumEnum
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..c58cb21 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
@@ -10,6 +10,7 @@ module QuickType
     , AndEq (..)
     , Any (..)
     , ArrayClass (..)
+    , ArrayNode (..)
     , ASM (..)
     , Assert (..)
     , Associatedtype (..)
@@ -26,6 +27,7 @@ module QuickType
     , Bitor (..)
     , BOOLClass (..)
     , Boolean (..)
+    , BooleanNode (..)
     , Break (..)
     , Bycopy (..)
     , Byref (..)
@@ -77,10 +79,12 @@ module QuickType
     , Del (..)
     , Delegate (..)
     , Delete (..)
+    , DeserializationFeature (..)
     , Dict (..)
     , Dictionary (..)
     , DidSet (..)
     , DoubleClass (..)
+    , DoubleNode (..)
     , Dynamic (..)
     , DynamicCast (..)
     , Elif (..)
@@ -134,6 +138,7 @@ module QuickType
     , Inout (..)
     , Instanceof (..)
     , IntClass (..)
+    , IntNode (..)
     , Interface (..)
     , Internal (..)
     , Is (..)
@@ -165,6 +170,7 @@ module QuickType
     , Locale (..)
     , Lock (..)
     , Long (..)
+    , LongNode (..)
     , MapClass (..)
     , MapEntry (..)
     , MetadataPropertyHandling (..)
@@ -188,10 +194,12 @@ module QuickType
     , NSObject (..)
     , NSString (..)
     , NULLClass (..)
+    , NullNode (..)
     , Nullptr (..)
     , NumberClass (..)
     , ObjectClass (..)
     , ObjectMapper (..)
+    , ObjectNode (..)
     , Oneway (..)
     , Open (..)
     , Operator (..)
@@ -267,6 +275,7 @@ module QuickType
     , Select (..)
     , Self (..)
     , Sendable (..)
+    , SerializationFeature (..)
     , Serialize (..)
     , SerializerProvider (..)
     , Set (..)
@@ -291,6 +300,7 @@ module QuickType
     , Synchronized (..)
     , System (..)
     , Template (..)
+    , TextNode (..)
     , This (..)
     , ThreadLocal (..)
     , Throw (..)
@@ -342,6 +352,7 @@ module QuickType
     , UnionAndEq (..)
     , UnionAny (..)
     , UnionArray (..)
+    , UnionArrayNode (..)
     , UnionASM (..)
     , UnionAssert (..)
     , UnionAssociatedtype (..)
@@ -358,6 +369,7 @@ module QuickType
     , UnionBitor (..)
     , UnionBOOL (..)
     , UnionBoolean (..)
+    , UnionBooleanNode (..)
     , UnionBreak (..)
     , UnionBycopy (..)
     , UnionByref (..)
@@ -409,10 +421,12 @@ module QuickType
     , UnionDel (..)
     , UnionDelegate (..)
     , UnionDelete (..)
+    , UnionDeserializationFeature (..)
     , UnionDict (..)
     , UnionDictionary (..)
     , UnionDidSet (..)
     , UnionDouble (..)
+    , UnionDoubleNode (..)
     , UnionDynamic (..)
     , UnionDynamicCast (..)
     , UnionElif (..)
@@ -466,6 +480,7 @@ module QuickType
     , UnionInout (..)
     , UnionInstanceof (..)
     , UnionInt (..)
+    , UnionIntNode (..)
     , UnionInterface (..)
     , UnionInternal (..)
     , UnionIs (..)
@@ -497,6 +512,7 @@ module QuickType
     , UnionLocale (..)
     , UnionLock (..)
     , UnionLong (..)
+    , UnionLongNode (..)
     , UnionMap (..)
     , UnionMapEntry (..)
     , UnionMetadataPropertyHandling (..)
@@ -520,10 +536,12 @@ module QuickType
     , UnionNSObject (..)
     , UnionNSString (..)
     , UnionNULL (..)
+    , UnionNullNode (..)
     , UnionNullptr (..)
     , UnionNumber (..)
     , UnionObject (..)
     , UnionObjectMapper (..)
+    , UnionObjectNode (..)
     , UnionOneway (..)
     , UnionOpen (..)
     , UnionOperator (..)
@@ -599,6 +617,7 @@ module QuickType
     , UnionSelect (..)
     , UnionSelf (..)
     , UnionSendable (..)
+    , UnionSerializationFeature (..)
     , UnionSerialize (..)
     , UnionSerializerProvider (..)
     , UnionSet (..)
@@ -623,6 +642,7 @@ module QuickType
     , UnionSynchronized (..)
     , UnionSystem (..)
     , UnionTemplate (..)
+    , UnionTextNode (..)
     , UnionThis (..)
     , UnionThreadLocal (..)
     , UnionThrow (..)
@@ -689,6 +709,7 @@ data QuickType = QuickType
     , quickTypeAnyQuickType :: Maybe UnionAnyUnion
     , anyQuickType :: Maybe UnionAny
     , arrayQuickType :: Maybe UnionArray
+    , arrayNodeQuickType :: Maybe UnionArrayNode
     , quickTypeAsQuickType :: Maybe UnionAs
     , asmQuickType :: Maybe UnionASM
     , assertQuickType :: Maybe UnionAssert
@@ -707,6 +728,7 @@ data QuickType = QuickType
     , boolQuickType :: Maybe UnionBOOL
     , purpleBoolQuickType :: Maybe UnionBoolUnion
     , booleanQuickType :: Maybe UnionBoolean
+    , booleanNodeQuickType :: Maybe UnionBooleanNode
     , breakQuickType :: Maybe UnionBreak
     , bycopyQuickType :: Maybe UnionBycopy
     , byrefQuickType :: Maybe UnionByref
@@ -761,11 +783,13 @@ data QuickType = QuickType
     , delQuickType :: Maybe UnionDel
     , delegateQuickType :: Maybe UnionDelegate
     , deleteQuickType :: Maybe UnionDelete
+    , deserializationFeatureQuickType :: Maybe UnionDeserializationFeature
     , dictQuickType :: Maybe UnionDict
     , dictionaryQuickType :: Maybe UnionDictionary
     , didSetQuickType :: Maybe UnionDidSet
     , quickTypeDoQuickType :: Maybe UnionDo
     , doubleQuickType :: Maybe UnionDouble
+    , doubleNodeQuickType :: Maybe UnionDoubleNode
     , dummyQuickType :: Maybe Double
     , dynamicQuickType :: Maybe UnionDynamic
     , dynamicCastQuickType :: Maybe UnionDynamicCast
@@ -827,6 +851,7 @@ data QuickType = QuickType
     , intQuickType :: Maybe UnionInt
     , interfaceQuickType :: Maybe UnionInterface
     , internalQuickType :: Maybe UnionInternal
+    , intNodeQuickType :: Maybe UnionIntNode
     , isQuickType :: Maybe UnionIs
     , isoDateTimeOffsetConverterQuickType :: Maybe UnionISODateTimeOffsetConverter
     , iterableQuickType :: Maybe UnionIterable
@@ -857,6 +882,7 @@ data QuickType = QuickType
     , localeQuickType :: Maybe UnionLocale
     , lockQuickType :: Maybe UnionLock
     , longQuickType :: Maybe UnionLong
+    , longNodeQuickType :: Maybe UnionLongNode
     , mapQuickType :: Maybe UnionMap
     , mapEntryQuickType :: Maybe UnionMapEntry
     , metadataPropertyHandlingQuickType :: Maybe UnionMetadataPropertyHandling
@@ -883,10 +909,12 @@ data QuickType = QuickType
     , nsStringQuickType :: Maybe UnionNSString
     , nullQuickType :: Maybe UnionNULL
     , quickTypeNullQuickType :: Maybe UnionNull
+    , nullNodeQuickType :: Maybe UnionNullNode
     , nullptrQuickType :: Maybe UnionNullptr
     , numberQuickType :: Maybe UnionNumber
     , objectQuickType :: Maybe UnionObject
     , objectMapperQuickType :: Maybe UnionObjectMapper
+    , objectNodeQuickType :: Maybe UnionObjectNode
     , quickTypeOfQuickType :: Maybe UnionOf
     , onewayQuickType :: Maybe UnionOneway
     , openQuickType :: Maybe UnionOpen
@@ -937,6 +965,7 @@ data QuickType = QuickType
     , selfQuickType :: Maybe UnionSelf
     , quickTypeSelfQuickType :: Maybe UnionSelfUnion
     , sendableQuickType :: Maybe UnionSendable
+    , serializationFeatureQuickType :: Maybe UnionSerializationFeature
     , serializeQuickType :: Maybe UnionSerialize
     , serializerProviderQuickType :: Maybe UnionSerializerProvider
     , setQuickType :: Maybe UnionSet
@@ -961,6 +990,7 @@ data QuickType = QuickType
     , synchronizedQuickType :: Maybe UnionSynchronized
     , systemQuickType :: Maybe UnionSystem
     , templateQuickType :: Maybe UnionTemplate
+    , textNodeQuickType :: Maybe UnionTextNode
     , quickTypeThenQuickType :: Maybe UnionThen
     , thisQuickType :: Maybe UnionThis
     , threadLocalQuickType :: Maybe UnionThreadLocal
@@ -1075,6 +1105,15 @@ data ArrayClass = ArrayClass
     {
     } deriving (Show)
 
+data UnionArrayNode
+    = ArrayNodeInUnionArrayNode ArrayNode
+    | DoubleInUnionArrayNode Double
+    deriving (Show)
+
+data ArrayNode = ArrayNode
+    {
+    } deriving (Show)
+
 data UnionASM
     = ASMInUnionASM ASM
     | DoubleInUnionASM Double
@@ -1219,6 +1258,15 @@ data Boolean = Boolean
     {
     } deriving (Show)
 
+data UnionBooleanNode
+    = BooleanNodeInUnionBooleanNode BooleanNode
+    | DoubleInUnionBooleanNode Double
+    deriving (Show)
+
+data BooleanNode = BooleanNode
+    {
+    } deriving (Show)
+
 data UnionBreak
     = BreakInUnionBreak Break
     | DoubleInUnionBreak Double
@@ -1678,6 +1726,15 @@ data Delete = Delete
     {
     } deriving (Show)
 
+data UnionDeserializationFeature
+    = DeserializationFeatureInUnionDeserializationFeature DeserializationFeature
+    | DoubleInUnionDeserializationFeature Double
+    deriving (Show)
+
+data DeserializationFeature = DeserializationFeature
+    {
+    } deriving (Show)
+
 data UnionDict
     = DictInUnionDict Dict
     | DoubleInUnionDict Double
@@ -1714,6 +1771,15 @@ data DoubleClass = DoubleClass
     {
     } deriving (Show)
 
+data UnionDoubleNode
+    = DoubleInUnionDoubleNode Double
+    | DoubleNodeInUnionDoubleNode DoubleNode
+    deriving (Show)
+
+data DoubleNode = DoubleNode
+    {
+    } deriving (Show)
+
 data UnionDynamic
     = DoubleInUnionDynamic Double
     | DynamicInUnionDynamic Dynamic
@@ -2191,6 +2257,15 @@ data IntClass = IntClass
     {
     } deriving (Show)
 
+data UnionIntNode
+    = DoubleInUnionIntNode Double
+    | IntNodeInUnionIntNode IntNode
+    deriving (Show)
+
+data IntNode = IntNode
+    {
+    } deriving (Show)
+
 data UnionInterface
     = DoubleInUnionInterface Double
     | InterfaceInUnionInterface Interface
@@ -2470,6 +2545,15 @@ data Long = Long
     {
     } deriving (Show)
 
+data UnionLongNode
+    = DoubleInUnionLongNode Double
+    | LongNodeInUnionLongNode LongNode
+    deriving (Show)
+
+data LongNode = LongNode
+    {
+    } deriving (Show)
+
 data UnionMap
     = DoubleInUnionMap Double
     | MapClassInUnionMap MapClass
@@ -2677,6 +2761,15 @@ data NULLClass = NULLClass
     {
     } deriving (Show)
 
+data UnionNullNode
+    = DoubleInUnionNullNode Double
+    | NullNodeInUnionNullNode NullNode
+    deriving (Show)
+
+data NullNode = NullNode
+    {
+    } deriving (Show)
+
 data UnionNullptr
     = DoubleInUnionNullptr Double
     | NullptrInUnionNullptr Nullptr
@@ -2713,6 +2806,15 @@ data ObjectMapper = ObjectMapper
     {
     } deriving (Show)
 
+data UnionObjectNode
+    = DoubleInUnionObjectNode Double
+    | ObjectNodeInUnionObjectNode ObjectNode
+    deriving (Show)
+
+data ObjectNode = ObjectNode
+    {
+    } deriving (Show)
+
 data UnionOneway
     = DoubleInUnionOneway Double
     | OnewayInUnionOneway Oneway
@@ -3388,6 +3490,15 @@ data Sendable = Sendable
     {
     } deriving (Show)
 
+data UnionSerializationFeature
+    = DoubleInUnionSerializationFeature Double
+    | SerializationFeatureInUnionSerializationFeature SerializationFeature
+    deriving (Show)
+
+data SerializationFeature = SerializationFeature
+    {
+    } deriving (Show)
+
 data UnionSerialize
     = DoubleInUnionSerialize Double
     | SerializeInUnionSerialize Serialize
@@ -3604,6 +3715,15 @@ data Template = Template
     {
     } deriving (Show)
 
+data UnionTextNode
+    = DoubleInUnionTextNode Double
+    | TextNodeInUnionTextNode TextNode
+    deriving (Show)
+
+data TextNode = TextNode
+    {
+    } deriving (Show)
+
 data UnionThis
     = DoubleInUnionThis Double
     | ThisInUnionThis This
@@ -4004,7 +4124,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 arrayNodeQuickType quickTypeAsQuickType asmQuickType assertQuickType associatedtypeQuickType associativityQuickType asyncQuickType atomicQuickType atomicCancelQuickType atomicCommitQuickType atomicNoexceptQuickType autoQuickType awaitQuickType baseQuickType bitandQuickType bitorQuickType boolQuickType purpleBoolQuickType booleanQuickType booleanNodeQuickType 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 deserializationFeatureQuickType dictQuickType dictionaryQuickType didSetQuickType quickTypeDoQuickType doubleQuickType doubleNodeQuickType 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 intNodeQuickType 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 longNodeQuickType 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 nullNodeQuickType nullptrQuickType numberQuickType objectQuickType objectMapperQuickType objectNodeQuickType 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 serializationFeatureQuickType serializeQuickType serializerProviderQuickType setQuickType shortQuickType signedQuickType simpleModuleQuickType sizeofQuickType stackallocQuickType standardsQuickType staticQuickType staticAssertQuickType staticCastQuickType stdDeserializerQuickType stdSerializerQuickType strictfpQuickType stringQuickType structQuickType subscriptQuickType superQuickType switchQuickType symbolQuickType synchronizedQuickType systemQuickType templateQuickType textNodeQuickType 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) =
         object $ foldMap (maybe [] pure)
         [ ("_" .=) <$> emptyQuickType
         , ("_Bool" .=) <$> quickTypeBoolQuickType
@@ -4018,6 +4138,7 @@ instance ToJSON QuickType where
         , ("any" .=) <$> quickTypeAnyQuickType
         , ("Any" .=) <$> anyQuickType
         , ("array" .=) <$> arrayQuickType
+        , ("ArrayNode" .=) <$> arrayNodeQuickType
         , ("as" .=) <$> quickTypeAsQuickType
         , ("asm" .=) <$> asmQuickType
         , ("assert" .=) <$> assertQuickType
@@ -4036,6 +4157,7 @@ instance ToJSON QuickType where
         , ("BOOL" .=) <$> boolQuickType
         , ("bool" .=) <$> purpleBoolQuickType
         , ("boolean" .=) <$> booleanQuickType
+        , ("BooleanNode" .=) <$> booleanNodeQuickType
         , ("break" .=) <$> breakQuickType
         , ("bycopy" .=) <$> bycopyQuickType
         , ("byref" .=) <$> byrefQuickType
@@ -4090,11 +4212,13 @@ instance ToJSON QuickType where
         , ("del" .=) <$> delQuickType
         , ("delegate" .=) <$> delegateQuickType
         , ("delete" .=) <$> deleteQuickType
+        , ("DeserializationFeature" .=) <$> deserializationFeatureQuickType
         , ("dict" .=) <$> dictQuickType
         , ("dictionary" .=) <$> dictionaryQuickType
         , ("didSet" .=) <$> didSetQuickType
         , ("do" .=) <$> quickTypeDoQuickType
         , ("double" .=) <$> doubleQuickType
+        , ("DoubleNode" .=) <$> doubleNodeQuickType
         , ("dummy" .=) <$> dummyQuickType
         , ("dynamic" .=) <$> dynamicQuickType
         , ("dynamic_cast" .=) <$> dynamicCastQuickType
@@ -4156,6 +4280,7 @@ instance ToJSON QuickType where
         , ("int" .=) <$> intQuickType
         , ("interface" .=) <$> interfaceQuickType
         , ("internal" .=) <$> internalQuickType
+        , ("IntNode" .=) <$> intNodeQuickType
         , ("is" .=) <$> isQuickType
         , ("IsoDateTimeOffsetConverter" .=) <$> isoDateTimeOffsetConverterQuickType
         , ("iterable" .=) <$> iterableQuickType
@@ -4186,6 +4311,7 @@ instance ToJSON QuickType where
         , ("Locale" .=) <$> localeQuickType
         , ("lock" .=) <$> lockQuickType
         , ("long" .=) <$> longQuickType
+        , ("LongNode" .=) <$> longNodeQuickType
         , ("map" .=) <$> mapQuickType
         , ("MapEntry" .=) <$> mapEntryQuickType
         , ("metadata_property_handling" .=) <$> metadataPropertyHandlingQuickType
@@ -4212,10 +4338,12 @@ instance ToJSON QuickType where
         , ("NSString" .=) <$> nsStringQuickType
         , ("NULL" .=) <$> nullQuickType
         , ("null" .=) <$> quickTypeNullQuickType
+        , ("NullNode" .=) <$> nullNodeQuickType
         , ("nullptr" .=) <$> nullptrQuickType
         , ("number" .=) <$> numberQuickType
         , ("object" .=) <$> objectQuickType
         , ("ObjectMapper" .=) <$> objectMapperQuickType
+        , ("ObjectNode" .=) <$> objectNodeQuickType
         , ("of" .=) <$> quickTypeOfQuickType
         , ("oneway" .=) <$> onewayQuickType
         , ("open" .=) <$> openQuickType
@@ -4266,6 +4394,7 @@ instance ToJSON QuickType where
         , ("Self" .=) <$> selfQuickType
         , ("self" .=) <$> quickTypeSelfQuickType
         , ("Sendable" .=) <$> sendableQuickType
+        , ("SerializationFeature" .=) <$> serializationFeatureQuickType
         , ("serialize" .=) <$> serializeQuickType
         , ("SerializerProvider" .=) <$> serializerProviderQuickType
         , ("set" .=) <$> setQuickType
@@ -4290,6 +4419,7 @@ instance ToJSON QuickType where
         , ("synchronized" .=) <$> synchronizedQuickType
         , ("system" .=) <$> systemQuickType
         , ("template" .=) <$> templateQuickType
+        , ("TextNode" .=) <$> textNodeQuickType
         , ("then" .=) <$> quickTypeThenQuickType
         , ("this" .=) <$> thisQuickType
         , ("thread_local" .=) <$> threadLocalQuickType
@@ -4355,6 +4485,7 @@ instance FromJSON QuickType where
         <*> v .:! "any"
         <*> v .:! "Any"
         <*> v .:! "array"
+        <*> v .:! "ArrayNode"
         <*> v .:! "as"
         <*> v .:! "asm"
         <*> v .:! "assert"
@@ -4373,6 +4504,7 @@ instance FromJSON QuickType where
         <*> v .:! "BOOL"
         <*> v .:! "bool"
         <*> v .:! "boolean"
+        <*> v .:! "BooleanNode"
         <*> v .:! "break"
         <*> v .:! "bycopy"
         <*> v .:! "byref"
@@ -4427,11 +4559,13 @@ instance FromJSON QuickType where
         <*> v .:! "del"
         <*> v .:! "delegate"
         <*> v .:! "delete"
+        <*> v .:! "DeserializationFeature"
         <*> v .:! "dict"
         <*> v .:! "dictionary"
         <*> v .:! "didSet"
         <*> v .:! "do"
         <*> v .:! "double"
+        <*> v .:! "DoubleNode"
         <*> v .:! "dummy"
         <*> v .:! "dynamic"
         <*> v .:! "dynamic_cast"
@@ -4493,6 +4627,7 @@ instance FromJSON QuickType where
         <*> v .:! "int"
         <*> v .:! "interface"
         <*> v .:! "internal"
+        <*> v .:! "IntNode"
         <*> v .:! "is"
         <*> v .:! "IsoDateTimeOffsetConverter"
         <*> v .:! "iterable"
@@ -4523,6 +4658,7 @@ instance FromJSON QuickType where
         <*> v .:! "Locale"
         <*> v .:! "lock"
         <*> v .:! "long"
+        <*> v .:! "LongNode"
         <*> v .:! "map"
         <*> v .:! "MapEntry"
         <*> v .:! "metadata_property_handling"
@@ -4549,10 +4685,12 @@ instance FromJSON QuickType where
         <*> v .:! "NSString"
         <*> v .:! "NULL"
         <*> v .:! "null"
+        <*> v .:! "NullNode"
         <*> v .:! "nullptr"
         <*> v .:! "number"
         <*> v .:! "object"
         <*> v .:! "ObjectMapper"
+        <*> v .:! "ObjectNode"
         <*> v .:! "of"
         <*> v .:! "oneway"
         <*> v .:! "open"
@@ -4603,6 +4741,7 @@ instance FromJSON QuickType where
         <*> v .:! "Self"
         <*> v .:! "self"
         <*> v .:! "Sendable"
+        <*> v .:! "SerializationFeature"
         <*> v .:! "serialize"
         <*> v .:! "SerializerProvider"
         <*> v .:! "set"
@@ -4627,6 +4766,7 @@ instance FromJSON QuickType where
         <*> v .:! "synchronized"
         <*> v .:! "system"
         <*> v .:! "template"
+        <*> v .:! "TextNode"
         <*> v .:! "then"
         <*> v .:! "this"
         <*> v .:! "thread_local"
@@ -4775,6 +4915,20 @@ instance ToJSON ArrayClass where
 instance FromJSON ArrayClass where
     parseJSON (Object _) = return ArrayClass
 
+instance ToJSON UnionArrayNode where
+    toJSON (ArrayNodeInUnionArrayNode x) = toJSON x
+    toJSON (DoubleInUnionArrayNode x) = toJSON x
+
+instance FromJSON UnionArrayNode where
+    parseJSON xs@(Object _) = (fmap ArrayNodeInUnionArrayNode . parseJSON) xs
+    parseJSON xs@(Number _) = (fmap DoubleInUnionArrayNode . parseJSON) xs
+
+instance ToJSON ArrayNode where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON ArrayNode where
+    parseJSON (Object _) = return ArrayNode
+
 instance ToJSON UnionASM where
     toJSON (ASMInUnionASM x) = toJSON x
     toJSON (DoubleInUnionASM x) = toJSON x
@@ -4999,6 +5153,20 @@ instance ToJSON Boolean where
 instance FromJSON Boolean where
     parseJSON (Object _) = return Boolean
 
+instance ToJSON UnionBooleanNode where
+    toJSON (BooleanNodeInUnionBooleanNode x) = toJSON x
+    toJSON (DoubleInUnionBooleanNode x) = toJSON x
+
+instance FromJSON UnionBooleanNode where
+    parseJSON xs@(Object _) = (fmap BooleanNodeInUnionBooleanNode . parseJSON) xs
+    parseJSON xs@(Number _) = (fmap DoubleInUnionBooleanNode . parseJSON) xs
+
+instance ToJSON BooleanNode where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON BooleanNode where
+    parseJSON (Object _) = return BooleanNode
+
 instance ToJSON UnionBreak where
     toJSON (BreakInUnionBreak x) = toJSON x
     toJSON (DoubleInUnionBreak x) = toJSON x
@@ -5713,6 +5881,20 @@ instance ToJSON Delete where
 instance FromJSON Delete where
     parseJSON (Object _) = return Delete
 
+instance ToJSON UnionDeserializationFeature where
+    toJSON (DeserializationFeatureInUnionDeserializationFeature x) = toJSON x
+    toJSON (DoubleInUnionDeserializationFeature x) = toJSON x
+
+instance FromJSON UnionDeserializationFeature where
+    parseJSON xs@(Object _) = (fmap DeserializationFeatureInUnionDeserializationFeature . parseJSON) xs
+    parseJSON xs@(Number _) = (fmap DoubleInUnionDeserializationFeature . parseJSON) xs
+
+instance ToJSON DeserializationFeature where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON DeserializationFeature where
+    parseJSON (Object _) = return DeserializationFeature
+
 instance ToJSON UnionDict where
     toJSON (DictInUnionDict x) = toJSON x
     toJSON (DoubleInUnionDict x) = toJSON x
@@ -5769,6 +5951,20 @@ instance ToJSON DoubleClass where
 instance FromJSON DoubleClass where
     parseJSON (Object _) = return DoubleClass
 
+instance ToJSON UnionDoubleNode where
+    toJSON (DoubleInUnionDoubleNode x) = toJSON x
+    toJSON (DoubleNodeInUnionDoubleNode x) = toJSON x
+
+instance FromJSON UnionDoubleNode where
+    parseJSON xs@(Number _) = (fmap DoubleInUnionDoubleNode . parseJSON) xs
+    parseJSON xs@(Object _) = (fmap DoubleNodeInUnionDoubleNode . parseJSON) xs
+
+instance ToJSON DoubleNode where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON DoubleNode where
+    parseJSON (Object _) = return DoubleNode
+
 instance ToJSON UnionDynamic where
     toJSON (DoubleInUnionDynamic x) = toJSON x
     toJSON (DynamicInUnionDynamic x) = toJSON x
@@ -6511,6 +6707,20 @@ instance ToJSON IntClass where
 instance FromJSON IntClass where
     parseJSON (Object _) = return IntClass
 
+instance ToJSON UnionIntNode where
+    toJSON (DoubleInUnionIntNode x) = toJSON x
+    toJSON (IntNodeInUnionIntNode x) = toJSON x
+
+instance FromJSON UnionIntNode where
+    parseJSON xs@(Number _) = (fmap DoubleInUnionIntNode . parseJSON) xs
+    parseJSON xs@(Object _) = (fmap IntNodeInUnionIntNode . parseJSON) xs
+
+instance ToJSON IntNode where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON IntNode where
+    parseJSON (Object _) = return IntNode
+
 instance ToJSON UnionInterface where
     toJSON (DoubleInUnionInterface x) = toJSON x
     toJSON (InterfaceInUnionInterface x) = toJSON x
@@ -6945,6 +7155,20 @@ instance ToJSON Long where
 instance FromJSON Long where
     parseJSON (Object _) = return Long
 
+instance ToJSON UnionLongNode where
+    toJSON (DoubleInUnionLongNode x) = toJSON x
+    toJSON (LongNodeInUnionLongNode x) = toJSON x
+
+instance FromJSON UnionLongNode where
+    parseJSON xs@(Number _) = (fmap DoubleInUnionLongNode . parseJSON) xs
+    parseJSON xs@(Object _) = (fmap LongNodeInUnionLongNode . parseJSON) xs
+
+instance ToJSON LongNode where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON LongNode where
+    parseJSON (Object _) = return LongNode
+
 instance ToJSON UnionMap where
     toJSON (DoubleInUnionMap x) = toJSON x
     toJSON (MapClassInUnionMap x) = toJSON x
@@ -7267,6 +7491,20 @@ instance ToJSON NULLClass where
 instance FromJSON NULLClass where
     parseJSON (Object _) = return NULLClass
 
+instance ToJSON UnionNullNode where
+    toJSON (DoubleInUnionNullNode x) = toJSON x
+    toJSON (NullNodeInUnionNullNode x) = toJSON x
+
+instance FromJSON UnionNullNode where
+    parseJSON xs@(Number _) = (fmap DoubleInUnionNullNode . parseJSON) xs
+    parseJSON xs@(Object _) = (fmap NullNodeInUnionNullNode . parseJSON) xs
+
+instance ToJSON NullNode where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON NullNode where
+    parseJSON (Object _) = return NullNode
+
 instance ToJSON UnionNullptr where
     toJSON (DoubleInUnionNullptr x) = toJSON x
     toJSON (NullptrInUnionNullptr x) = toJSON x
@@ -7323,6 +7561,20 @@ instance ToJSON ObjectMapper where
 instance FromJSON ObjectMapper where
     parseJSON (Object _) = return ObjectMapper
 
+instance ToJSON UnionObjectNode where
+    toJSON (DoubleInUnionObjectNode x) = toJSON x
+    toJSON (ObjectNodeInUnionObjectNode x) = toJSON x
+
+instance FromJSON UnionObjectNode where
+    parseJSON xs@(Number _) = (fmap DoubleInUnionObjectNode . parseJSON) xs
+    parseJSON xs@(Object _) = (fmap ObjectNodeInUnionObjectNode . parseJSON) xs
+
+instance ToJSON ObjectNode where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON ObjectNode where
+    parseJSON (Object _) = return ObjectNode
+
 instance ToJSON UnionOneway where
     toJSON (DoubleInUnionOneway x) = toJSON x
     toJSON (OnewayInUnionOneway x) = toJSON x
@@ -8373,6 +8625,20 @@ instance ToJSON Sendable where
 instance FromJSON Sendable where
     parseJSON (Object _) = return Sendable
 
+instance ToJSON UnionSerializationFeature where
+    toJSON (DoubleInUnionSerializationFeature x) = toJSON x
+    toJSON (SerializationFeatureInUnionSerializationFeature x) = toJSON x
+
+instance FromJSON UnionSerializationFeature where
+    parseJSON xs@(Number _) = (fmap DoubleInUnionSerializationFeature . parseJSON) xs
+    parseJSON xs@(Object _) = (fmap SerializationFeatureInUnionSerializationFeature . parseJSON) xs
+
+instance ToJSON SerializationFeature where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON SerializationFeature where
+    parseJSON (Object _) = return SerializationFeature
+
 instance ToJSON UnionSerialize where
     toJSON (DoubleInUnionSerialize x) = toJSON x
     toJSON (SerializeInUnionSerialize x) = toJSON x
@@ -8709,6 +8975,20 @@ instance ToJSON Template where
 instance FromJSON Template where
     parseJSON (Object _) = return Template
 
+instance ToJSON UnionTextNode where
+    toJSON (DoubleInUnionTextNode x) = toJSON x
+    toJSON (TextNodeInUnionTextNode x) = toJSON x
+
+instance FromJSON UnionTextNode where
+    parseJSON xs@(Number _) = (fmap DoubleInUnionTextNode . parseJSON) xs
+    parseJSON xs@(Object _) = (fmap TextNodeInUnionTextNode . parseJSON) xs
+
+instance ToJSON TextNode where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON TextNode where
+    parseJSON (Object _) = return TextNode
+
 instance ToJSON UnionThis where
     toJSON (DoubleInUnionThis x) = toJSON x
     toJSON (ThisInUnionThis x) = toJSON x
diff --git a/head/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/ArrayNode.java b/head/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/ArrayNode.java
new file mode 100644
index 0000000..5413d25
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/ArrayNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class ArrayNode {
+}
diff --git a/head/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/BooleanNode.java b/head/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/BooleanNode.java
new file mode 100644
index 0000000..660a224
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/BooleanNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class BooleanNode {
+}
diff --git a/head/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/DoubleNode.java b/head/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/DoubleNode.java
new file mode 100644
index 0000000..47b2f58
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/DoubleNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class DoubleNode {
+}
diff --git a/head/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/IntNode.java b/head/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/IntNode.java
new file mode 100644
index 0000000..2fe17ef
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/IntNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class IntNode {
+}
diff --git a/head/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/LongNode.java b/head/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/LongNode.java
new file mode 100644
index 0000000..6239092
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/LongNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class LongNode {
+}
diff --git a/head/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/NullNode.java b/head/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/NullNode.java
new file mode 100644
index 0000000..8081362
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/NullNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class NullNode {
+}
diff --git a/head/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/ObjectNode.java b/head/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/ObjectNode.java
new file mode 100644
index 0000000..780f647
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/ObjectNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class ObjectNode {
+}
diff --git a/head/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/TextNode.java b/head/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/TextNode.java
new file mode 100644
index 0000000..e2eb0c3
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/TextNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class TextNode {
+}
diff --git a/base/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/TopLevel.java b/head/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/TopLevel.java
index f939e5a..16047a2 100644
--- a/base/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/TopLevel.java
+++ b/head/schema-java/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/TopLevel.java
@@ -4,10 +4,58 @@ import com.fasterxml.jackson.annotation.*;
 import java.util.Map;
 
 public class TopLevel {
+    private ArrayNode arrayNode;
+    private BooleanNode booleanNode;
+    private DoubleNode doubleNode;
+    private IntNode intNode;
+    private LongNode longNode;
+    private NullNode nullNode;
+    private ObjectNode objectNode;
     private Map<String, Thing> stuff;
+    private TextNode textNode;
+
+    @JsonProperty("arrayNode")
+    public ArrayNode getArrayNode() { return arrayNode; }
+    @JsonProperty("arrayNode")
+    public void setArrayNode(ArrayNode value) { this.arrayNode = value; }
+
+    @JsonProperty("booleanNode")
+    public BooleanNode getBooleanNode() { return booleanNode; }
+    @JsonProperty("booleanNode")
+    public void setBooleanNode(BooleanNode value) { this.booleanNode = value; }
+
+    @JsonProperty("doubleNode")
+    public DoubleNode getDoubleNode() { return doubleNode; }
+    @JsonProperty("doubleNode")
+    public void setDoubleNode(DoubleNode value) { this.doubleNode = value; }
+
+    @JsonProperty("intNode")
+    public IntNode getIntNode() { return intNode; }
+    @JsonProperty("intNode")
+    public void setIntNode(IntNode value) { this.intNode = value; }
+
+    @JsonProperty("longNode")
+    public LongNode getLongNode() { return longNode; }
+    @JsonProperty("longNode")
+    public void setLongNode(LongNode value) { this.longNode = value; }
+
+    @JsonProperty("nullNode")
+    public NullNode getNullNode() { return nullNode; }
+    @JsonProperty("nullNode")
+    public void setNullNode(NullNode value) { this.nullNode = value; }
+
+    @JsonProperty("objectNode")
+    public ObjectNode getObjectNode() { return objectNode; }
+    @JsonProperty("objectNode")
+    public void setObjectNode(ObjectNode value) { this.objectNode = value; }
 
     @JsonProperty("stuff")
     public Map<String, Thing> getStuff() { return stuff; }
     @JsonProperty("stuff")
     public void setStuff(Map<String, Thing> value) { this.stuff = value; }
+
+    @JsonProperty("textNode")
+    public TextNode getTextNode() { return textNode; }
+    @JsonProperty("textNode")
+    public void setTextNode(TextNode value) { this.textNode = value; }
 }
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..0851939 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_NODE, ARRAY, AS, ASM, ASSERT, ASSOCIATEDTYPE, ASSOCIATIVITY, ASYNC, ATOMIC, ATOMIC_CANCEL, ATOMIC_COMMIT, ATOMIC_NOEXCEPT, AUTO, AWAIT, BASE, BITAND, BITOR, ENUM_BOOL, PURPLE_BOOL, BOOLEAN, BOOLEAN_NODE, 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, DESERIALIZATION_FEATURE, DECLTYPE, DECODE_STRING, DECODER, DECODING_ERROR, DEF, DEFAULT, DEFER, DEINIT, DEL, DELEGATE, DELETE, DICT, DICTIONARY, DID_SET, DO, DOUBLE, DOUBLE_NODE, 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, INT_NODE, 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, LONG_NODE, LOCALE, LOCK, LONG, MAP, MAP_ENTRY, METADATA_PROPERTY_HANDLING, MODULE, MUTABLE, MUTATING, NAMESPACE, NATIVE, NEW, NEWTONSOFT, NIL, NULL_NODE, 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_NODE, 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, SERIALIZATION_FEATURE, 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, TEXT_NODE, 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;
 
     @JsonValue
     public String toValue() {
@@ -20,6 +20,7 @@ public enum Enum {
             case AND_EQ: return "and_eq";
             case ANY: return "any";
             case ENUM_ANY: return "Any";
+            case ARRAY_NODE: return "ArrayNode";
             case ARRAY: return "array";
             case AS: return "as";
             case ASM: return "asm";
@@ -39,6 +40,7 @@ public enum Enum {
             case ENUM_BOOL: return "BOOL";
             case PURPLE_BOOL: return "bool";
             case BOOLEAN: return "boolean";
+            case BOOLEAN_NODE: return "BooleanNode";
             case BREAK: return "break";
             case BYCOPY: return "bycopy";
             case BYREF: return "byref";
@@ -82,6 +84,7 @@ public enum Enum {
             case DEBUGGER: return "debugger";
             case DECIMAL: return "decimal";
             case DECLARE: return "declare";
+            case DESERIALIZATION_FEATURE: return "DeserializationFeature";
             case DECLTYPE: return "decltype";
             case DECODE_STRING: return "decode_string";
             case DECODER: return "Decoder";
@@ -98,6 +101,7 @@ public enum Enum {
             case DID_SET: return "didSet";
             case DO: return "do";
             case DOUBLE: return "double";
+            case DOUBLE_NODE: return "DoubleNode";
             case DYNAMIC: return "dynamic";
             case DYNAMIC_CAST: return "dynamic_cast";
             case ELIF: return "elif";
@@ -156,6 +160,7 @@ public enum Enum {
             case INOUT: return "inout";
             case INSTANCEOF: return "instanceof";
             case INT: return "int";
+            case INT_NODE: return "IntNode";
             case INTERFACE: return "interface";
             case INTERNAL: return "internal";
             case ISO_DATE_TIME_OFFSET_CONVERTER: return "IsoDateTimeOffsetConverter";
@@ -185,6 +190,7 @@ public enum Enum {
             case LEFT: return "left";
             case LET: return "let";
             case LIST: return "list";
+            case LONG_NODE: return "LongNode";
             case LOCALE: return "Locale";
             case LOCK: return "lock";
             case LONG: return "long";
@@ -199,6 +205,7 @@ public enum Enum {
             case NEW: return "new";
             case NEWTONSOFT: return "newtonsoft";
             case NIL: return "nil";
+            case NULL_NODE: return "NullNode";
             case NO: return "NO";
             case NOEXCEPT: return "noexcept";
             case NONATOMIC: return "nonatomic";
@@ -217,6 +224,7 @@ public enum Enum {
             case NULLPTR: return "nullptr";
             case NUMBER: return "number";
             case OBJECT: return "object";
+            case OBJECT_NODE: return "ObjectNode";
             case OBJECT_MAPPER: return "ObjectMapper";
             case OF: return "of";
             case ONEWAY: return "oneway";
@@ -269,6 +277,7 @@ public enum Enum {
             case ENUM_SELF: return "self";
             case SENDABLE: return "Sendable";
             case SERIALIZE: return "serialize";
+            case SERIALIZATION_FEATURE: return "SerializationFeature";
             case SERIALIZER_PROVIDER: return "SerializerProvider";
             case SET: return "set";
             case SHORT: return "short";
@@ -294,6 +303,7 @@ public enum Enum {
             case TEMPLATE: return "template";
             case THEN: return "then";
             case THIS: return "this";
+            case TEXT_NODE: return "TextNode";
             case THREAD_LOCAL: return "thread_local";
             case THROW: return "throw";
             case THROWS: return "throws";
@@ -359,6 +369,7 @@ public enum Enum {
         if (value.equals("and_eq")) return AND_EQ;
         if (value.equals("any")) return ANY;
         if (value.equals("Any")) return ENUM_ANY;
+        if (value.equals("ArrayNode")) return ARRAY_NODE;
         if (value.equals("array")) return ARRAY;
         if (value.equals("as")) return AS;
         if (value.equals("asm")) return ASM;
@@ -378,6 +389,7 @@ public enum Enum {
         if (value.equals("BOOL")) return ENUM_BOOL;
         if (value.equals("bool")) return PURPLE_BOOL;
         if (value.equals("boolean")) return BOOLEAN;
+        if (value.equals("BooleanNode")) return BOOLEAN_NODE;
         if (value.equals("break")) return BREAK;
         if (value.equals("bycopy")) return BYCOPY;
         if (value.equals("byref")) return BYREF;
@@ -421,6 +433,7 @@ public enum Enum {
         if (value.equals("debugger")) return DEBUGGER;
         if (value.equals("decimal")) return DECIMAL;
         if (value.equals("declare")) return DECLARE;
+        if (value.equals("DeserializationFeature")) return DESERIALIZATION_FEATURE;
         if (value.equals("decltype")) return DECLTYPE;
         if (value.equals("decode_string")) return DECODE_STRING;
         if (value.equals("Decoder")) return DECODER;
@@ -437,6 +450,7 @@ public enum Enum {
         if (value.equals("didSet")) return DID_SET;
         if (value.equals("do")) return DO;
         if (value.equals("double")) return DOUBLE;
+        if (value.equals("DoubleNode")) return DOUBLE_NODE;
         if (value.equals("dynamic")) return DYNAMIC;
         if (value.equals("dynamic_cast")) return DYNAMIC_CAST;
         if (value.equals("elif")) return ELIF;
@@ -495,6 +509,7 @@ public enum Enum {
         if (value.equals("inout")) return INOUT;
         if (value.equals("instanceof")) return INSTANCEOF;
         if (value.equals("int")) return INT;
+        if (value.equals("IntNode")) return INT_NODE;
         if (value.equals("interface")) return INTERFACE;
         if (value.equals("internal")) return INTERNAL;
         if (value.equals("IsoDateTimeOffsetConverter")) return ISO_DATE_TIME_OFFSET_CONVERTER;
@@ -524,6 +539,7 @@ public enum Enum {
         if (value.equals("left")) return LEFT;
         if (value.equals("let")) return LET;
         if (value.equals("list")) return LIST;
+        if (value.equals("LongNode")) return LONG_NODE;
         if (value.equals("Locale")) return LOCALE;
         if (value.equals("lock")) return LOCK;
         if (value.equals("long")) return LONG;
@@ -538,6 +554,7 @@ public enum Enum {
         if (value.equals("new")) return NEW;
         if (value.equals("newtonsoft")) return NEWTONSOFT;
         if (value.equals("nil")) return NIL;
+        if (value.equals("NullNode")) return NULL_NODE;
         if (value.equals("NO")) return NO;
         if (value.equals("noexcept")) return NOEXCEPT;
         if (value.equals("nonatomic")) return NONATOMIC;
@@ -556,6 +573,7 @@ public enum Enum {
         if (value.equals("nullptr")) return NULLPTR;
         if (value.equals("number")) return NUMBER;
         if (value.equals("object")) return OBJECT;
+        if (value.equals("ObjectNode")) return OBJECT_NODE;
         if (value.equals("ObjectMapper")) return OBJECT_MAPPER;
         if (value.equals("of")) return OF;
         if (value.equals("oneway")) return ONEWAY;
@@ -608,6 +626,7 @@ public enum Enum {
         if (value.equals("self")) return ENUM_SELF;
         if (value.equals("Sendable")) return SENDABLE;
         if (value.equals("serialize")) return SERIALIZE;
+        if (value.equals("SerializationFeature")) return SERIALIZATION_FEATURE;
         if (value.equals("SerializerProvider")) return SERIALIZER_PROVIDER;
         if (value.equals("set")) return SET;
         if (value.equals("short")) return SHORT;
@@ -633,6 +652,7 @@ public enum Enum {
         if (value.equals("template")) return TEMPLATE;
         if (value.equals("then")) return THEN;
         if (value.equals("this")) return THIS;
+        if (value.equals("TextNode")) return TEXT_NODE;
         if (value.equals("thread_local")) return THREAD_LOCAL;
         if (value.equals("throw")) return THROW;
         if (value.equals("throws")) return THROWS;
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/ArrayNode.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/ArrayNode.java
new file mode 100644
index 0000000..5413d25
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/ArrayNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class ArrayNode {
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/BooleanNode.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/BooleanNode.java
new file mode 100644
index 0000000..660a224
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/BooleanNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class BooleanNode {
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/DeserializationFeature.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/DeserializationFeature.java
new file mode 100644
index 0000000..505f84a
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/DeserializationFeature.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class DeserializationFeature {
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/DoubleNode.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/DoubleNode.java
new file mode 100644
index 0000000..47b2f58
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/DoubleNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class DoubleNode {
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/IntNode.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/IntNode.java
new file mode 100644
index 0000000..2fe17ef
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/IntNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class IntNode {
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/LongNode.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/LongNode.java
new file mode 100644
index 0000000..6239092
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/LongNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class LongNode {
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/NullNode.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/NullNode.java
new file mode 100644
index 0000000..8081362
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/NullNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class NullNode {
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/ObjectNode.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/ObjectNode.java
new file mode 100644
index 0000000..780f647
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/ObjectNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class ObjectNode {
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerializationFeature.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerializationFeature.java
new file mode 100644
index 0000000..fe9475f
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerializationFeature.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class SerializationFeature {
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/TextNode.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/TextNode.java
new file mode 100644
index 0000000..e2eb0c3
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/TextNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class TextNode {
+}
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..d6ff73d 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
@@ -15,6 +15,7 @@ public class TopLevel {
     private UnionAnyUnion topLevelAny;
     private UnionAny any;
     private UnionArray array;
+    private UnionArrayNode arrayNode;
     private UnionAs as;
     private UnionASM asm;
     private UnionAssert topLevelAssert;
@@ -33,6 +34,7 @@ public class TopLevel {
     private UnionBOOL bool;
     private TopLevelUnionBool purpleBool;
     private UnionBoolean topLevelBoolean;
+    private UnionBooleanNode booleanNode;
     private UnionBreak topLevelBreak;
     private UnionBycopy bycopy;
     private UnionByref byref;
@@ -87,11 +89,13 @@ public class TopLevel {
     private UnionDel del;
     private UnionDelegate delegate;
     private UnionDelete delete;
+    private UnionDeserializationFeature deserializationFeature;
     private UnionDict dict;
     private UnionDictionary dictionary;
     private UnionDidSet didSet;
     private UnionDo topLevelDo;
     private UnionDouble topLevelDouble;
+    private UnionDoubleNode doubleNode;
     private Double dummy;
     private UnionDynamic dynamic;
     private UnionDynamicCast dynamicCast;
@@ -153,6 +157,7 @@ public class TopLevel {
     private UnionInt topLevelInt;
     private UnionInterface topLevelInterface;
     private UnionInternal internal;
+    private UnionIntNode intNode;
     private UnionIs is;
     private UnionISODateTimeOffsetConverter isoDateTimeOffsetConverter;
     private UnionIterable iterable;
@@ -183,6 +188,7 @@ public class TopLevel {
     private UnionLocale locale;
     private UnionLock lock;
     private UnionLong topLevelLong;
+    private UnionLongNode longNode;
     private UnionMap map;
     private UnionMapEntry mapEntry;
     private UnionMetadataPropertyHandling metadataPropertyHandling;
@@ -209,10 +215,12 @@ public class TopLevel {
     private UnionNSString nsString;
     private UnionNULL topLevelNULL;
     private UnionNullUnion topLevelNull;
+    private UnionNullNode nullNode;
     private UnionNullptr nullptr;
     private UnionNumber number;
     private UnionObject object;
     private UnionObjectMapper objectMapper;
+    private UnionObjectNode objectNode;
     private UnionOf of;
     private UnionOneway oneway;
     private UnionOpen open;
@@ -263,6 +271,7 @@ public class TopLevel {
     private UnionSelf self;
     private UnionSelfUnion topLevelSelf;
     private UnionSendable sendable;
+    private UnionSerializationFeature serializationFeature;
     private UnionSerialize serialize;
     private UnionSerializerProvider serializerProvider;
     private UnionSet set;
@@ -287,6 +296,7 @@ public class TopLevel {
     private UnionSynchronized topLevelSynchronized;
     private UnionSystem system;
     private UnionTemplate template;
+    private UnionTextNode textNode;
     private UnionThen then;
     private UnionThis topLevelThis;
     private UnionThreadLocal threadLocal;
@@ -397,6 +407,11 @@ public class TopLevel {
     @JsonProperty("array")
     public void setArray(UnionArray value) { this.array = value; }
 
+    @JsonProperty("ArrayNode")
+    public UnionArrayNode getArrayNode() { return arrayNode; }
+    @JsonProperty("ArrayNode")
+    public void setArrayNode(UnionArrayNode value) { this.arrayNode = value; }
+
     @JsonProperty("as")
     public UnionAs getAs() { return as; }
     @JsonProperty("as")
@@ -487,6 +502,11 @@ public class TopLevel {
     @JsonProperty("boolean")
     public void setTopLevelBoolean(UnionBoolean value) { this.topLevelBoolean = value; }
 
+    @JsonProperty("BooleanNode")
+    public UnionBooleanNode getBooleanNode() { return booleanNode; }
+    @JsonProperty("BooleanNode")
+    public void setBooleanNode(UnionBooleanNode value) { this.booleanNode = value; }
+
     @JsonProperty("break")
     public UnionBreak getTopLevelBreak() { return topLevelBreak; }
     @JsonProperty("break")
@@ -757,6 +777,11 @@ public class TopLevel {
     @JsonProperty("delete")
     public void setDelete(UnionDelete value) { this.delete = value; }
 
+    @JsonProperty("DeserializationFeature")
+    public UnionDeserializationFeature getDeserializationFeature() { return deserializationFeature; }
+    @JsonProperty("DeserializationFeature")
+    public void setDeserializationFeature(UnionDeserializationFeature value) { this.deserializationFeature = value; }
+
     @JsonProperty("dict")
     public UnionDict getDict() { return dict; }
     @JsonProperty("dict")
@@ -782,6 +807,11 @@ public class TopLevel {
     @JsonProperty("double")
     public void setTopLevelDouble(UnionDouble value) { this.topLevelDouble = value; }
 
+    @JsonProperty("DoubleNode")
+    public UnionDoubleNode getDoubleNode() { return doubleNode; }
+    @JsonProperty("DoubleNode")
+    public void setDoubleNode(UnionDoubleNode value) { this.doubleNode = value; }
+
     @JsonProperty("dummy")
     public Double getDummy() { return dummy; }
     @JsonProperty("dummy")
@@ -1087,6 +1117,11 @@ public class TopLevel {
     @JsonProperty("internal")
     public void setInternal(UnionInternal value) { this.internal = value; }
 
+    @JsonProperty("IntNode")
+    public UnionIntNode getIntNode() { return intNode; }
+    @JsonProperty("IntNode")
+    public void setIntNode(UnionIntNode value) { this.intNode = value; }
+
     @JsonProperty("is")
     public UnionIs getIs() { return is; }
     @JsonProperty("is")
@@ -1237,6 +1272,11 @@ public class TopLevel {
     @JsonProperty("long")
     public void setTopLevelLong(UnionLong value) { this.topLevelLong = value; }
 
+    @JsonProperty("LongNode")
+    public UnionLongNode getLongNode() { return longNode; }
+    @JsonProperty("LongNode")
+    public void setLongNode(UnionLongNode value) { this.longNode = value; }
+
     @JsonProperty("map")
     public UnionMap getMap() { return map; }
     @JsonProperty("map")
@@ -1367,6 +1407,11 @@ public class TopLevel {
     @JsonProperty("null")
     public void setTopLevelNull(UnionNullUnion value) { this.topLevelNull = value; }
 
+    @JsonProperty("NullNode")
+    public UnionNullNode getNullNode() { return nullNode; }
+    @JsonProperty("NullNode")
+    public void setNullNode(UnionNullNode value) { this.nullNode = value; }
+
     @JsonProperty("nullptr")
     public UnionNullptr getNullptr() { return nullptr; }
     @JsonProperty("nullptr")
@@ -1387,6 +1432,11 @@ public class TopLevel {
     @JsonProperty("ObjectMapper")
     public void setObjectMapper(UnionObjectMapper value) { this.objectMapper = value; }
 
+    @JsonProperty("ObjectNode")
+    public UnionObjectNode getObjectNode() { return objectNode; }
+    @JsonProperty("ObjectNode")
+    public void setObjectNode(UnionObjectNode value) { this.objectNode = value; }
+
     @JsonProperty("of")
     public UnionOf getOf() { return of; }
     @JsonProperty("of")
@@ -1637,6 +1687,11 @@ public class TopLevel {
     @JsonProperty("Sendable")
     public void setSendable(UnionSendable value) { this.sendable = value; }
 
+    @JsonProperty("SerializationFeature")
+    public UnionSerializationFeature getSerializationFeature() { return serializationFeature; }
+    @JsonProperty("SerializationFeature")
+    public void setSerializationFeature(UnionSerializationFeature value) { this.serializationFeature = value; }
+
     @JsonProperty("serialize")
     public UnionSerialize getSerialize() { return serialize; }
     @JsonProperty("serialize")
@@ -1757,6 +1812,11 @@ public class TopLevel {
     @JsonProperty("template")
     public void setTemplate(UnionTemplate value) { this.template = value; }
 
+    @JsonProperty("TextNode")
+    public UnionTextNode getTextNode() { return textNode; }
+    @JsonProperty("TextNode")
+    public void setTextNode(UnionTextNode value) { this.textNode = value; }
+
     @JsonProperty("then")
     public UnionThen getThen() { return then; }
     @JsonProperty("then")
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionArrayNode.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionArrayNode.java
new file mode 100644
index 0000000..1b148f8
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionArrayNode.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 = UnionArrayNode.Deserializer.class)
+@JsonSerialize(using = UnionArrayNode.Serializer.class)
+public class UnionArrayNode {
+    public Double doubleValue;
+    public ArrayNode arrayNodeValue;
+
+    static class Deserializer extends JsonDeserializer<UnionArrayNode> {
+        @Override
+        public UnionArrayNode deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionArrayNode value = new UnionArrayNode();
+            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.arrayNodeValue = jsonParser.readValueAs(ArrayNode.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionArrayNode");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionArrayNode> {
+        @Override
+        public void serialize(UnionArrayNode obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.arrayNodeValue != null) {
+                jsonGenerator.writeObject(obj.arrayNodeValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionBooleanNode.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionBooleanNode.java
new file mode 100644
index 0000000..ec3cf14
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionBooleanNode.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 = UnionBooleanNode.Deserializer.class)
+@JsonSerialize(using = UnionBooleanNode.Serializer.class)
+public class UnionBooleanNode {
+    public Double doubleValue;
+    public BooleanNode booleanNodeValue;
+
+    static class Deserializer extends JsonDeserializer<UnionBooleanNode> {
+        @Override
+        public UnionBooleanNode deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionBooleanNode value = new UnionBooleanNode();
+            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.booleanNodeValue = jsonParser.readValueAs(BooleanNode.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionBooleanNode");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionBooleanNode> {
+        @Override
+        public void serialize(UnionBooleanNode obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.booleanNodeValue != null) {
+                jsonGenerator.writeObject(obj.booleanNodeValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionDeserializationFeature.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionDeserializationFeature.java
new file mode 100644
index 0000000..c927d67
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionDeserializationFeature.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 = UnionDeserializationFeature.Deserializer.class)
+@JsonSerialize(using = UnionDeserializationFeature.Serializer.class)
+public class UnionDeserializationFeature {
+    public Double doubleValue;
+    public DeserializationFeature deserializationFeatureValue;
+
+    static class Deserializer extends JsonDeserializer<UnionDeserializationFeature> {
+        @Override
+        public UnionDeserializationFeature deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionDeserializationFeature value = new UnionDeserializationFeature();
+            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.deserializationFeatureValue = jsonParser.readValueAs(DeserializationFeature.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionDeserializationFeature");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionDeserializationFeature> {
+        @Override
+        public void serialize(UnionDeserializationFeature obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.deserializationFeatureValue != null) {
+                jsonGenerator.writeObject(obj.deserializationFeatureValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionDoubleNode.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionDoubleNode.java
new file mode 100644
index 0000000..c4dbfab
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionDoubleNode.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 = UnionDoubleNode.Deserializer.class)
+@JsonSerialize(using = UnionDoubleNode.Serializer.class)
+public class UnionDoubleNode {
+    public Double doubleValue;
+    public DoubleNode doubleNodeValue;
+
+    static class Deserializer extends JsonDeserializer<UnionDoubleNode> {
+        @Override
+        public UnionDoubleNode deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionDoubleNode value = new UnionDoubleNode();
+            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.doubleNodeValue = jsonParser.readValueAs(DoubleNode.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionDoubleNode");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionDoubleNode> {
+        @Override
+        public void serialize(UnionDoubleNode obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.doubleNodeValue != null) {
+                jsonGenerator.writeObject(obj.doubleNodeValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionIntNode.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionIntNode.java
new file mode 100644
index 0000000..4288f29
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionIntNode.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 = UnionIntNode.Deserializer.class)
+@JsonSerialize(using = UnionIntNode.Serializer.class)
+public class UnionIntNode {
+    public Double doubleValue;
+    public IntNode intNodeValue;
+
+    static class Deserializer extends JsonDeserializer<UnionIntNode> {
+        @Override
+        public UnionIntNode deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionIntNode value = new UnionIntNode();
+            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.intNodeValue = jsonParser.readValueAs(IntNode.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionIntNode");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionIntNode> {
+        @Override
+        public void serialize(UnionIntNode obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.intNodeValue != null) {
+                jsonGenerator.writeObject(obj.intNodeValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionLongNode.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionLongNode.java
new file mode 100644
index 0000000..f659386
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionLongNode.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 = UnionLongNode.Deserializer.class)
+@JsonSerialize(using = UnionLongNode.Serializer.class)
+public class UnionLongNode {
+    public Double doubleValue;
+    public LongNode longNodeValue;
+
+    static class Deserializer extends JsonDeserializer<UnionLongNode> {
+        @Override
+        public UnionLongNode deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionLongNode value = new UnionLongNode();
+            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.longNodeValue = jsonParser.readValueAs(LongNode.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionLongNode");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionLongNode> {
+        @Override
+        public void serialize(UnionLongNode obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.longNodeValue != null) {
+                jsonGenerator.writeObject(obj.longNodeValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionNullNode.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionNullNode.java
new file mode 100644
index 0000000..4f95c58
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionNullNode.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 = UnionNullNode.Deserializer.class)
+@JsonSerialize(using = UnionNullNode.Serializer.class)
+public class UnionNullNode {
+    public Double doubleValue;
+    public NullNode nullNodeValue;
+
+    static class Deserializer extends JsonDeserializer<UnionNullNode> {
+        @Override
+        public UnionNullNode deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionNullNode value = new UnionNullNode();
+            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.nullNodeValue = jsonParser.readValueAs(NullNode.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionNullNode");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionNullNode> {
+        @Override
+        public void serialize(UnionNullNode obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.nullNodeValue != null) {
+                jsonGenerator.writeObject(obj.nullNodeValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionObjectNode.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionObjectNode.java
new file mode 100644
index 0000000..01684bc
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionObjectNode.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 = UnionObjectNode.Deserializer.class)
+@JsonSerialize(using = UnionObjectNode.Serializer.class)
+public class UnionObjectNode {
+    public Double doubleValue;
+    public ObjectNode objectNodeValue;
+
+    static class Deserializer extends JsonDeserializer<UnionObjectNode> {
+        @Override
+        public UnionObjectNode deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionObjectNode value = new UnionObjectNode();
+            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.objectNodeValue = jsonParser.readValueAs(ObjectNode.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionObjectNode");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionObjectNode> {
+        @Override
+        public void serialize(UnionObjectNode obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.objectNodeValue != null) {
+                jsonGenerator.writeObject(obj.objectNodeValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerializationFeature.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerializationFeature.java
new file mode 100644
index 0000000..6ead7dc
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerializationFeature.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 = UnionSerializationFeature.Deserializer.class)
+@JsonSerialize(using = UnionSerializationFeature.Serializer.class)
+public class UnionSerializationFeature {
+    public Double doubleValue;
+    public SerializationFeature serializationFeatureValue;
+
+    static class Deserializer extends JsonDeserializer<UnionSerializationFeature> {
+        @Override
+        public UnionSerializationFeature deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionSerializationFeature value = new UnionSerializationFeature();
+            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.serializationFeatureValue = jsonParser.readValueAs(SerializationFeature.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionSerializationFeature");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionSerializationFeature> {
+        @Override
+        public void serialize(UnionSerializationFeature obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.serializationFeatureValue != null) {
+                jsonGenerator.writeObject(obj.serializationFeatureValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionTextNode.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionTextNode.java
new file mode 100644
index 0000000..3d76818
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionTextNode.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 = UnionTextNode.Deserializer.class)
+@JsonSerialize(using = UnionTextNode.Serializer.class)
+public class UnionTextNode {
+    public Double doubleValue;
+    public TextNode textNodeValue;
+
+    static class Deserializer extends JsonDeserializer<UnionTextNode> {
+        @Override
+        public UnionTextNode deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionTextNode value = new UnionTextNode();
+            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.textNodeValue = jsonParser.readValueAs(TextNode.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionTextNode");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionTextNode> {
+        @Override
+        public void serialize(UnionTextNode obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.textNodeValue != null) {
+                jsonGenerator.writeObject(obj.textNodeValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/ArrayNode.java b/head/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/ArrayNode.java
new file mode 100644
index 0000000..5413d25
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/ArrayNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class ArrayNode {
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/BooleanNode.java b/head/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/BooleanNode.java
new file mode 100644
index 0000000..660a224
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/BooleanNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class BooleanNode {
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/DoubleNode.java b/head/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/DoubleNode.java
new file mode 100644
index 0000000..47b2f58
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/DoubleNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class DoubleNode {
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/IntNode.java b/head/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/IntNode.java
new file mode 100644
index 0000000..2fe17ef
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/IntNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class IntNode {
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/LongNode.java b/head/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/LongNode.java
new file mode 100644
index 0000000..6239092
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/LongNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class LongNode {
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/NullNode.java b/head/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/NullNode.java
new file mode 100644
index 0000000..8081362
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/NullNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class NullNode {
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/ObjectNode.java b/head/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/ObjectNode.java
new file mode 100644
index 0000000..780f647
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/ObjectNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class ObjectNode {
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/TextNode.java b/head/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/TextNode.java
new file mode 100644
index 0000000..e2eb0c3
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/TextNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class TextNode {
+}
diff --git a/base/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/TopLevel.java b/head/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/TopLevel.java
index f939e5a..16047a2 100644
--- a/base/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/TopLevel.java
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/TopLevel.java
@@ -4,10 +4,58 @@ import com.fasterxml.jackson.annotation.*;
 import java.util.Map;
 
 public class TopLevel {
+    private ArrayNode arrayNode;
+    private BooleanNode booleanNode;
+    private DoubleNode doubleNode;
+    private IntNode intNode;
+    private LongNode longNode;
+    private NullNode nullNode;
+    private ObjectNode objectNode;
     private Map<String, Thing> stuff;
+    private TextNode textNode;
+
+    @JsonProperty("arrayNode")
+    public ArrayNode getArrayNode() { return arrayNode; }
+    @JsonProperty("arrayNode")
+    public void setArrayNode(ArrayNode value) { this.arrayNode = value; }
+
+    @JsonProperty("booleanNode")
+    public BooleanNode getBooleanNode() { return booleanNode; }
+    @JsonProperty("booleanNode")
+    public void setBooleanNode(BooleanNode value) { this.booleanNode = value; }
+
+    @JsonProperty("doubleNode")
+    public DoubleNode getDoubleNode() { return doubleNode; }
+    @JsonProperty("doubleNode")
+    public void setDoubleNode(DoubleNode value) { this.doubleNode = value; }
+
+    @JsonProperty("intNode")
+    public IntNode getIntNode() { return intNode; }
+    @JsonProperty("intNode")
+    public void setIntNode(IntNode value) { this.intNode = value; }
+
+    @JsonProperty("longNode")
+    public LongNode getLongNode() { return longNode; }
+    @JsonProperty("longNode")
+    public void setLongNode(LongNode value) { this.longNode = value; }
+
+    @JsonProperty("nullNode")
+    public NullNode getNullNode() { return nullNode; }
+    @JsonProperty("nullNode")
+    public void setNullNode(NullNode value) { this.nullNode = value; }
+
+    @JsonProperty("objectNode")
+    public ObjectNode getObjectNode() { return objectNode; }
+    @JsonProperty("objectNode")
+    public void setObjectNode(ObjectNode value) { this.objectNode = value; }
 
     @JsonProperty("stuff")
     public Map<String, Thing> getStuff() { return stuff; }
     @JsonProperty("stuff")
     public void setStuff(Map<String, Thing> value) { this.stuff = value; }
+
+    @JsonProperty("textNode")
+    public TextNode getTextNode() { return textNode; }
+    @JsonProperty("textNode")
+    public void setTextNode(TextNode value) { this.textNode = value; }
 }
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..0851939 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_NODE, ARRAY, AS, ASM, ASSERT, ASSOCIATEDTYPE, ASSOCIATIVITY, ASYNC, ATOMIC, ATOMIC_CANCEL, ATOMIC_COMMIT, ATOMIC_NOEXCEPT, AUTO, AWAIT, BASE, BITAND, BITOR, ENUM_BOOL, PURPLE_BOOL, BOOLEAN, BOOLEAN_NODE, 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, DESERIALIZATION_FEATURE, DECLTYPE, DECODE_STRING, DECODER, DECODING_ERROR, DEF, DEFAULT, DEFER, DEINIT, DEL, DELEGATE, DELETE, DICT, DICTIONARY, DID_SET, DO, DOUBLE, DOUBLE_NODE, 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, INT_NODE, 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, LONG_NODE, LOCALE, LOCK, LONG, MAP, MAP_ENTRY, METADATA_PROPERTY_HANDLING, MODULE, MUTABLE, MUTATING, NAMESPACE, NATIVE, NEW, NEWTONSOFT, NIL, NULL_NODE, 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_NODE, 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, SERIALIZATION_FEATURE, 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, TEXT_NODE, 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;
 
     @JsonValue
     public String toValue() {
@@ -20,6 +20,7 @@ public enum Enum {
             case AND_EQ: return "and_eq";
             case ANY: return "any";
             case ENUM_ANY: return "Any";
+            case ARRAY_NODE: return "ArrayNode";
             case ARRAY: return "array";
             case AS: return "as";
             case ASM: return "asm";
@@ -39,6 +40,7 @@ public enum Enum {
             case ENUM_BOOL: return "BOOL";
             case PURPLE_BOOL: return "bool";
             case BOOLEAN: return "boolean";
+            case BOOLEAN_NODE: return "BooleanNode";
             case BREAK: return "break";
             case BYCOPY: return "bycopy";
             case BYREF: return "byref";
@@ -82,6 +84,7 @@ public enum Enum {
             case DEBUGGER: return "debugger";
             case DECIMAL: return "decimal";
             case DECLARE: return "declare";
+            case DESERIALIZATION_FEATURE: return "DeserializationFeature";
             case DECLTYPE: return "decltype";
             case DECODE_STRING: return "decode_string";
             case DECODER: return "Decoder";
@@ -98,6 +101,7 @@ public enum Enum {
             case DID_SET: return "didSet";
             case DO: return "do";
             case DOUBLE: return "double";
+            case DOUBLE_NODE: return "DoubleNode";
             case DYNAMIC: return "dynamic";
             case DYNAMIC_CAST: return "dynamic_cast";
             case ELIF: return "elif";
@@ -156,6 +160,7 @@ public enum Enum {
             case INOUT: return "inout";
             case INSTANCEOF: return "instanceof";
             case INT: return "int";
+            case INT_NODE: return "IntNode";
             case INTERFACE: return "interface";
             case INTERNAL: return "internal";
             case ISO_DATE_TIME_OFFSET_CONVERTER: return "IsoDateTimeOffsetConverter";
@@ -185,6 +190,7 @@ public enum Enum {
             case LEFT: return "left";
             case LET: return "let";
             case LIST: return "list";
+            case LONG_NODE: return "LongNode";
             case LOCALE: return "Locale";
             case LOCK: return "lock";
             case LONG: return "long";
@@ -199,6 +205,7 @@ public enum Enum {
             case NEW: return "new";
             case NEWTONSOFT: return "newtonsoft";
             case NIL: return "nil";
+            case NULL_NODE: return "NullNode";
             case NO: return "NO";
             case NOEXCEPT: return "noexcept";
             case NONATOMIC: return "nonatomic";
@@ -217,6 +224,7 @@ public enum Enum {
             case NULLPTR: return "nullptr";
             case NUMBER: return "number";
             case OBJECT: return "object";
+            case OBJECT_NODE: return "ObjectNode";
             case OBJECT_MAPPER: return "ObjectMapper";
             case OF: return "of";
             case ONEWAY: return "oneway";
@@ -269,6 +277,7 @@ public enum Enum {
             case ENUM_SELF: return "self";
             case SENDABLE: return "Sendable";
             case SERIALIZE: return "serialize";
+            case SERIALIZATION_FEATURE: return "SerializationFeature";
             case SERIALIZER_PROVIDER: return "SerializerProvider";
             case SET: return "set";
             case SHORT: return "short";
@@ -294,6 +303,7 @@ public enum Enum {
             case TEMPLATE: return "template";
             case THEN: return "then";
             case THIS: return "this";
+            case TEXT_NODE: return "TextNode";
             case THREAD_LOCAL: return "thread_local";
             case THROW: return "throw";
             case THROWS: return "throws";
@@ -359,6 +369,7 @@ public enum Enum {
         if (value.equals("and_eq")) return AND_EQ;
         if (value.equals("any")) return ANY;
         if (value.equals("Any")) return ENUM_ANY;
+        if (value.equals("ArrayNode")) return ARRAY_NODE;
         if (value.equals("array")) return ARRAY;
         if (value.equals("as")) return AS;
         if (value.equals("asm")) return ASM;
@@ -378,6 +389,7 @@ public enum Enum {
         if (value.equals("BOOL")) return ENUM_BOOL;
         if (value.equals("bool")) return PURPLE_BOOL;
         if (value.equals("boolean")) return BOOLEAN;
+        if (value.equals("BooleanNode")) return BOOLEAN_NODE;
         if (value.equals("break")) return BREAK;
         if (value.equals("bycopy")) return BYCOPY;
         if (value.equals("byref")) return BYREF;
@@ -421,6 +433,7 @@ public enum Enum {
         if (value.equals("debugger")) return DEBUGGER;
         if (value.equals("decimal")) return DECIMAL;
         if (value.equals("declare")) return DECLARE;
+        if (value.equals("DeserializationFeature")) return DESERIALIZATION_FEATURE;
         if (value.equals("decltype")) return DECLTYPE;
         if (value.equals("decode_string")) return DECODE_STRING;
         if (value.equals("Decoder")) return DECODER;
@@ -437,6 +450,7 @@ public enum Enum {
         if (value.equals("didSet")) return DID_SET;
         if (value.equals("do")) return DO;
         if (value.equals("double")) return DOUBLE;
+        if (value.equals("DoubleNode")) return DOUBLE_NODE;
         if (value.equals("dynamic")) return DYNAMIC;
         if (value.equals("dynamic_cast")) return DYNAMIC_CAST;
         if (value.equals("elif")) return ELIF;
@@ -495,6 +509,7 @@ public enum Enum {
         if (value.equals("inout")) return INOUT;
         if (value.equals("instanceof")) return INSTANCEOF;
         if (value.equals("int")) return INT;
+        if (value.equals("IntNode")) return INT_NODE;
         if (value.equals("interface")) return INTERFACE;
         if (value.equals("internal")) return INTERNAL;
         if (value.equals("IsoDateTimeOffsetConverter")) return ISO_DATE_TIME_OFFSET_CONVERTER;
@@ -524,6 +539,7 @@ public enum Enum {
         if (value.equals("left")) return LEFT;
         if (value.equals("let")) return LET;
         if (value.equals("list")) return LIST;
+        if (value.equals("LongNode")) return LONG_NODE;
         if (value.equals("Locale")) return LOCALE;
         if (value.equals("lock")) return LOCK;
         if (value.equals("long")) return LONG;
@@ -538,6 +554,7 @@ public enum Enum {
         if (value.equals("new")) return NEW;
         if (value.equals("newtonsoft")) return NEWTONSOFT;
         if (value.equals("nil")) return NIL;
+        if (value.equals("NullNode")) return NULL_NODE;
         if (value.equals("NO")) return NO;
         if (value.equals("noexcept")) return NOEXCEPT;
         if (value.equals("nonatomic")) return NONATOMIC;
@@ -556,6 +573,7 @@ public enum Enum {
         if (value.equals("nullptr")) return NULLPTR;
         if (value.equals("number")) return NUMBER;
         if (value.equals("object")) return OBJECT;
+        if (value.equals("ObjectNode")) return OBJECT_NODE;
         if (value.equals("ObjectMapper")) return OBJECT_MAPPER;
         if (value.equals("of")) return OF;
         if (value.equals("oneway")) return ONEWAY;
@@ -608,6 +626,7 @@ public enum Enum {
         if (value.equals("self")) return ENUM_SELF;
         if (value.equals("Sendable")) return SENDABLE;
         if (value.equals("serialize")) return SERIALIZE;
+        if (value.equals("SerializationFeature")) return SERIALIZATION_FEATURE;
         if (value.equals("SerializerProvider")) return SERIALIZER_PROVIDER;
         if (value.equals("set")) return SET;
         if (value.equals("short")) return SHORT;
@@ -633,6 +652,7 @@ public enum Enum {
         if (value.equals("template")) return TEMPLATE;
         if (value.equals("then")) return THEN;
         if (value.equals("this")) return THIS;
+        if (value.equals("TextNode")) return TEXT_NODE;
         if (value.equals("thread_local")) return THREAD_LOCAL;
         if (value.equals("throw")) return THROW;
         if (value.equals("throws")) return THROWS;
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/ArrayNode.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/ArrayNode.java
new file mode 100644
index 0000000..5413d25
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/ArrayNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class ArrayNode {
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/BooleanNode.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/BooleanNode.java
new file mode 100644
index 0000000..660a224
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/BooleanNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class BooleanNode {
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/DeserializationFeature.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/DeserializationFeature.java
new file mode 100644
index 0000000..505f84a
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/DeserializationFeature.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class DeserializationFeature {
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/DoubleNode.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/DoubleNode.java
new file mode 100644
index 0000000..47b2f58
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/DoubleNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class DoubleNode {
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/IntNode.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/IntNode.java
new file mode 100644
index 0000000..2fe17ef
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/IntNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class IntNode {
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/LongNode.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/LongNode.java
new file mode 100644
index 0000000..6239092
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/LongNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class LongNode {
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/NullNode.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/NullNode.java
new file mode 100644
index 0000000..8081362
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/NullNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class NullNode {
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/ObjectNode.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/ObjectNode.java
new file mode 100644
index 0000000..780f647
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/ObjectNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class ObjectNode {
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerializationFeature.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerializationFeature.java
new file mode 100644
index 0000000..fe9475f
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerializationFeature.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class SerializationFeature {
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/TextNode.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/TextNode.java
new file mode 100644
index 0000000..e2eb0c3
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/TextNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class TextNode {
+}
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..d6ff73d 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
@@ -15,6 +15,7 @@ public class TopLevel {
     private UnionAnyUnion topLevelAny;
     private UnionAny any;
     private UnionArray array;
+    private UnionArrayNode arrayNode;
     private UnionAs as;
     private UnionASM asm;
     private UnionAssert topLevelAssert;
@@ -33,6 +34,7 @@ public class TopLevel {
     private UnionBOOL bool;
     private TopLevelUnionBool purpleBool;
     private UnionBoolean topLevelBoolean;
+    private UnionBooleanNode booleanNode;
     private UnionBreak topLevelBreak;
     private UnionBycopy bycopy;
     private UnionByref byref;
@@ -87,11 +89,13 @@ public class TopLevel {
     private UnionDel del;
     private UnionDelegate delegate;
     private UnionDelete delete;
+    private UnionDeserializationFeature deserializationFeature;
     private UnionDict dict;
     private UnionDictionary dictionary;
     private UnionDidSet didSet;
     private UnionDo topLevelDo;
     private UnionDouble topLevelDouble;
+    private UnionDoubleNode doubleNode;
     private Double dummy;
     private UnionDynamic dynamic;
     private UnionDynamicCast dynamicCast;
@@ -153,6 +157,7 @@ public class TopLevel {
     private UnionInt topLevelInt;
     private UnionInterface topLevelInterface;
     private UnionInternal internal;
+    private UnionIntNode intNode;
     private UnionIs is;
     private UnionISODateTimeOffsetConverter isoDateTimeOffsetConverter;
     private UnionIterable iterable;
@@ -183,6 +188,7 @@ public class TopLevel {
     private UnionLocale locale;
     private UnionLock lock;
     private UnionLong topLevelLong;
+    private UnionLongNode longNode;
     private UnionMap map;
     private UnionMapEntry mapEntry;
     private UnionMetadataPropertyHandling metadataPropertyHandling;
@@ -209,10 +215,12 @@ public class TopLevel {
     private UnionNSString nsString;
     private UnionNULL topLevelNULL;
     private UnionNullUnion topLevelNull;
+    private UnionNullNode nullNode;
     private UnionNullptr nullptr;
     private UnionNumber number;
     private UnionObject object;
     private UnionObjectMapper objectMapper;
+    private UnionObjectNode objectNode;
     private UnionOf of;
     private UnionOneway oneway;
     private UnionOpen open;
@@ -263,6 +271,7 @@ public class TopLevel {
     private UnionSelf self;
     private UnionSelfUnion topLevelSelf;
     private UnionSendable sendable;
+    private UnionSerializationFeature serializationFeature;
     private UnionSerialize serialize;
     private UnionSerializerProvider serializerProvider;
     private UnionSet set;
@@ -287,6 +296,7 @@ public class TopLevel {
     private UnionSynchronized topLevelSynchronized;
     private UnionSystem system;
     private UnionTemplate template;
+    private UnionTextNode textNode;
     private UnionThen then;
     private UnionThis topLevelThis;
     private UnionThreadLocal threadLocal;
@@ -397,6 +407,11 @@ public class TopLevel {
     @JsonProperty("array")
     public void setArray(UnionArray value) { this.array = value; }
 
+    @JsonProperty("ArrayNode")
+    public UnionArrayNode getArrayNode() { return arrayNode; }
+    @JsonProperty("ArrayNode")
+    public void setArrayNode(UnionArrayNode value) { this.arrayNode = value; }
+
     @JsonProperty("as")
     public UnionAs getAs() { return as; }
     @JsonProperty("as")
@@ -487,6 +502,11 @@ public class TopLevel {
     @JsonProperty("boolean")
     public void setTopLevelBoolean(UnionBoolean value) { this.topLevelBoolean = value; }
 
+    @JsonProperty("BooleanNode")
+    public UnionBooleanNode getBooleanNode() { return booleanNode; }
+    @JsonProperty("BooleanNode")
+    public void setBooleanNode(UnionBooleanNode value) { this.booleanNode = value; }
+
     @JsonProperty("break")
     public UnionBreak getTopLevelBreak() { return topLevelBreak; }
     @JsonProperty("break")
@@ -757,6 +777,11 @@ public class TopLevel {
     @JsonProperty("delete")
     public void setDelete(UnionDelete value) { this.delete = value; }
 
+    @JsonProperty("DeserializationFeature")
+    public UnionDeserializationFeature getDeserializationFeature() { return deserializationFeature; }
+    @JsonProperty("DeserializationFeature")
+    public void setDeserializationFeature(UnionDeserializationFeature value) { this.deserializationFeature = value; }
+
     @JsonProperty("dict")
     public UnionDict getDict() { return dict; }
     @JsonProperty("dict")
@@ -782,6 +807,11 @@ public class TopLevel {
     @JsonProperty("double")
     public void setTopLevelDouble(UnionDouble value) { this.topLevelDouble = value; }
 
+    @JsonProperty("DoubleNode")
+    public UnionDoubleNode getDoubleNode() { return doubleNode; }
+    @JsonProperty("DoubleNode")
+    public void setDoubleNode(UnionDoubleNode value) { this.doubleNode = value; }
+
     @JsonProperty("dummy")
     public Double getDummy() { return dummy; }
     @JsonProperty("dummy")
@@ -1087,6 +1117,11 @@ public class TopLevel {
     @JsonProperty("internal")
     public void setInternal(UnionInternal value) { this.internal = value; }
 
+    @JsonProperty("IntNode")
+    public UnionIntNode getIntNode() { return intNode; }
+    @JsonProperty("IntNode")
+    public void setIntNode(UnionIntNode value) { this.intNode = value; }
+
     @JsonProperty("is")
     public UnionIs getIs() { return is; }
     @JsonProperty("is")
@@ -1237,6 +1272,11 @@ public class TopLevel {
     @JsonProperty("long")
     public void setTopLevelLong(UnionLong value) { this.topLevelLong = value; }
 
+    @JsonProperty("LongNode")
+    public UnionLongNode getLongNode() { return longNode; }
+    @JsonProperty("LongNode")
+    public void setLongNode(UnionLongNode value) { this.longNode = value; }
+
     @JsonProperty("map")
     public UnionMap getMap() { return map; }
     @JsonProperty("map")
@@ -1367,6 +1407,11 @@ public class TopLevel {
     @JsonProperty("null")
     public void setTopLevelNull(UnionNullUnion value) { this.topLevelNull = value; }
 
+    @JsonProperty("NullNode")
+    public UnionNullNode getNullNode() { return nullNode; }
+    @JsonProperty("NullNode")
+    public void setNullNode(UnionNullNode value) { this.nullNode = value; }
+
     @JsonProperty("nullptr")
     public UnionNullptr getNullptr() { return nullptr; }
     @JsonProperty("nullptr")
@@ -1387,6 +1432,11 @@ public class TopLevel {
     @JsonProperty("ObjectMapper")
     public void setObjectMapper(UnionObjectMapper value) { this.objectMapper = value; }
 
+    @JsonProperty("ObjectNode")
+    public UnionObjectNode getObjectNode() { return objectNode; }
+    @JsonProperty("ObjectNode")
+    public void setObjectNode(UnionObjectNode value) { this.objectNode = value; }
+
     @JsonProperty("of")
     public UnionOf getOf() { return of; }
     @JsonProperty("of")
@@ -1637,6 +1687,11 @@ public class TopLevel {
     @JsonProperty("Sendable")
     public void setSendable(UnionSendable value) { this.sendable = value; }
 
+    @JsonProperty("SerializationFeature")
+    public UnionSerializationFeature getSerializationFeature() { return serializationFeature; }
+    @JsonProperty("SerializationFeature")
+    public void setSerializationFeature(UnionSerializationFeature value) { this.serializationFeature = value; }
+
     @JsonProperty("serialize")
     public UnionSerialize getSerialize() { return serialize; }
     @JsonProperty("serialize")
@@ -1757,6 +1812,11 @@ public class TopLevel {
     @JsonProperty("template")
     public void setTemplate(UnionTemplate value) { this.template = value; }
 
+    @JsonProperty("TextNode")
+    public UnionTextNode getTextNode() { return textNode; }
+    @JsonProperty("TextNode")
+    public void setTextNode(UnionTextNode value) { this.textNode = value; }
+
     @JsonProperty("then")
     public UnionThen getThen() { return then; }
     @JsonProperty("then")
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionArrayNode.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionArrayNode.java
new file mode 100644
index 0000000..1b148f8
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionArrayNode.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 = UnionArrayNode.Deserializer.class)
+@JsonSerialize(using = UnionArrayNode.Serializer.class)
+public class UnionArrayNode {
+    public Double doubleValue;
+    public ArrayNode arrayNodeValue;
+
+    static class Deserializer extends JsonDeserializer<UnionArrayNode> {
+        @Override
+        public UnionArrayNode deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionArrayNode value = new UnionArrayNode();
+            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.arrayNodeValue = jsonParser.readValueAs(ArrayNode.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionArrayNode");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionArrayNode> {
+        @Override
+        public void serialize(UnionArrayNode obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.arrayNodeValue != null) {
+                jsonGenerator.writeObject(obj.arrayNodeValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionBooleanNode.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionBooleanNode.java
new file mode 100644
index 0000000..ec3cf14
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionBooleanNode.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 = UnionBooleanNode.Deserializer.class)
+@JsonSerialize(using = UnionBooleanNode.Serializer.class)
+public class UnionBooleanNode {
+    public Double doubleValue;
+    public BooleanNode booleanNodeValue;
+
+    static class Deserializer extends JsonDeserializer<UnionBooleanNode> {
+        @Override
+        public UnionBooleanNode deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionBooleanNode value = new UnionBooleanNode();
+            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.booleanNodeValue = jsonParser.readValueAs(BooleanNode.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionBooleanNode");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionBooleanNode> {
+        @Override
+        public void serialize(UnionBooleanNode obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.booleanNodeValue != null) {
+                jsonGenerator.writeObject(obj.booleanNodeValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionDeserializationFeature.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionDeserializationFeature.java
new file mode 100644
index 0000000..c927d67
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionDeserializationFeature.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 = UnionDeserializationFeature.Deserializer.class)
+@JsonSerialize(using = UnionDeserializationFeature.Serializer.class)
+public class UnionDeserializationFeature {
+    public Double doubleValue;
+    public DeserializationFeature deserializationFeatureValue;
+
+    static class Deserializer extends JsonDeserializer<UnionDeserializationFeature> {
+        @Override
+        public UnionDeserializationFeature deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionDeserializationFeature value = new UnionDeserializationFeature();
+            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.deserializationFeatureValue = jsonParser.readValueAs(DeserializationFeature.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionDeserializationFeature");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionDeserializationFeature> {
+        @Override
+        public void serialize(UnionDeserializationFeature obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.deserializationFeatureValue != null) {
+                jsonGenerator.writeObject(obj.deserializationFeatureValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionDoubleNode.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionDoubleNode.java
new file mode 100644
index 0000000..c4dbfab
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionDoubleNode.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 = UnionDoubleNode.Deserializer.class)
+@JsonSerialize(using = UnionDoubleNode.Serializer.class)
+public class UnionDoubleNode {
+    public Double doubleValue;
+    public DoubleNode doubleNodeValue;
+
+    static class Deserializer extends JsonDeserializer<UnionDoubleNode> {
+        @Override
+        public UnionDoubleNode deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionDoubleNode value = new UnionDoubleNode();
+            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.doubleNodeValue = jsonParser.readValueAs(DoubleNode.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionDoubleNode");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionDoubleNode> {
+        @Override
+        public void serialize(UnionDoubleNode obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.doubleNodeValue != null) {
+                jsonGenerator.writeObject(obj.doubleNodeValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionIntNode.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionIntNode.java
new file mode 100644
index 0000000..4288f29
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionIntNode.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 = UnionIntNode.Deserializer.class)
+@JsonSerialize(using = UnionIntNode.Serializer.class)
+public class UnionIntNode {
+    public Double doubleValue;
+    public IntNode intNodeValue;
+
+    static class Deserializer extends JsonDeserializer<UnionIntNode> {
+        @Override
+        public UnionIntNode deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionIntNode value = new UnionIntNode();
+            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.intNodeValue = jsonParser.readValueAs(IntNode.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionIntNode");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionIntNode> {
+        @Override
+        public void serialize(UnionIntNode obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.intNodeValue != null) {
+                jsonGenerator.writeObject(obj.intNodeValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionLongNode.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionLongNode.java
new file mode 100644
index 0000000..f659386
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionLongNode.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 = UnionLongNode.Deserializer.class)
+@JsonSerialize(using = UnionLongNode.Serializer.class)
+public class UnionLongNode {
+    public Double doubleValue;
+    public LongNode longNodeValue;
+
+    static class Deserializer extends JsonDeserializer<UnionLongNode> {
+        @Override
+        public UnionLongNode deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionLongNode value = new UnionLongNode();
+            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.longNodeValue = jsonParser.readValueAs(LongNode.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionLongNode");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionLongNode> {
+        @Override
+        public void serialize(UnionLongNode obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.longNodeValue != null) {
+                jsonGenerator.writeObject(obj.longNodeValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionNullNode.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionNullNode.java
new file mode 100644
index 0000000..4f95c58
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionNullNode.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 = UnionNullNode.Deserializer.class)
+@JsonSerialize(using = UnionNullNode.Serializer.class)
+public class UnionNullNode {
+    public Double doubleValue;
+    public NullNode nullNodeValue;
+
+    static class Deserializer extends JsonDeserializer<UnionNullNode> {
+        @Override
+        public UnionNullNode deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionNullNode value = new UnionNullNode();
+            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.nullNodeValue = jsonParser.readValueAs(NullNode.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionNullNode");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionNullNode> {
+        @Override
+        public void serialize(UnionNullNode obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.nullNodeValue != null) {
+                jsonGenerator.writeObject(obj.nullNodeValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionObjectNode.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionObjectNode.java
new file mode 100644
index 0000000..01684bc
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionObjectNode.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 = UnionObjectNode.Deserializer.class)
+@JsonSerialize(using = UnionObjectNode.Serializer.class)
+public class UnionObjectNode {
+    public Double doubleValue;
+    public ObjectNode objectNodeValue;
+
+    static class Deserializer extends JsonDeserializer<UnionObjectNode> {
+        @Override
+        public UnionObjectNode deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionObjectNode value = new UnionObjectNode();
+            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.objectNodeValue = jsonParser.readValueAs(ObjectNode.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionObjectNode");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionObjectNode> {
+        @Override
+        public void serialize(UnionObjectNode obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.objectNodeValue != null) {
+                jsonGenerator.writeObject(obj.objectNodeValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerializationFeature.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerializationFeature.java
new file mode 100644
index 0000000..6ead7dc
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerializationFeature.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 = UnionSerializationFeature.Deserializer.class)
+@JsonSerialize(using = UnionSerializationFeature.Serializer.class)
+public class UnionSerializationFeature {
+    public Double doubleValue;
+    public SerializationFeature serializationFeatureValue;
+
+    static class Deserializer extends JsonDeserializer<UnionSerializationFeature> {
+        @Override
+        public UnionSerializationFeature deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionSerializationFeature value = new UnionSerializationFeature();
+            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.serializationFeatureValue = jsonParser.readValueAs(SerializationFeature.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionSerializationFeature");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionSerializationFeature> {
+        @Override
+        public void serialize(UnionSerializationFeature obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.serializationFeatureValue != null) {
+                jsonGenerator.writeObject(obj.serializationFeatureValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionTextNode.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionTextNode.java
new file mode 100644
index 0000000..3d76818
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionTextNode.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 = UnionTextNode.Deserializer.class)
+@JsonSerialize(using = UnionTextNode.Serializer.class)
+public class UnionTextNode {
+    public Double doubleValue;
+    public TextNode textNodeValue;
+
+    static class Deserializer extends JsonDeserializer<UnionTextNode> {
+        @Override
+        public UnionTextNode deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionTextNode value = new UnionTextNode();
+            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.textNodeValue = jsonParser.readValueAs(TextNode.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionTextNode");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionTextNode> {
+        @Override
+        public void serialize(UnionTextNode obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.textNodeValue != null) {
+                jsonGenerator.writeObject(obj.textNodeValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/ArrayNode.java b/head/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/ArrayNode.java
new file mode 100644
index 0000000..5413d25
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/ArrayNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class ArrayNode {
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/BooleanNode.java b/head/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/BooleanNode.java
new file mode 100644
index 0000000..660a224
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/BooleanNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class BooleanNode {
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/DoubleNode.java b/head/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/DoubleNode.java
new file mode 100644
index 0000000..47b2f58
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/DoubleNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class DoubleNode {
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/IntNode.java b/head/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/IntNode.java
new file mode 100644
index 0000000..2fe17ef
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/IntNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class IntNode {
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/LongNode.java b/head/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/LongNode.java
new file mode 100644
index 0000000..6239092
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/LongNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class LongNode {
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/NullNode.java b/head/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/NullNode.java
new file mode 100644
index 0000000..8081362
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/NullNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class NullNode {
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/ObjectNode.java b/head/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/ObjectNode.java
new file mode 100644
index 0000000..780f647
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/ObjectNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class ObjectNode {
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/TextNode.java b/head/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/TextNode.java
new file mode 100644
index 0000000..e2eb0c3
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/TextNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class TextNode {
+}
diff --git a/base/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/TopLevel.java b/head/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/TopLevel.java
index f939e5a..16047a2 100644
--- a/base/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/TopLevel.java
+++ b/head/schema-java-lombok/test/inputs/schema/direct-union.schema/default/src/main/java/io/quicktype/TopLevel.java
@@ -4,10 +4,58 @@ import com.fasterxml.jackson.annotation.*;
 import java.util.Map;
 
 public class TopLevel {
+    private ArrayNode arrayNode;
+    private BooleanNode booleanNode;
+    private DoubleNode doubleNode;
+    private IntNode intNode;
+    private LongNode longNode;
+    private NullNode nullNode;
+    private ObjectNode objectNode;
     private Map<String, Thing> stuff;
+    private TextNode textNode;
+
+    @JsonProperty("arrayNode")
+    public ArrayNode getArrayNode() { return arrayNode; }
+    @JsonProperty("arrayNode")
+    public void setArrayNode(ArrayNode value) { this.arrayNode = value; }
+
+    @JsonProperty("booleanNode")
+    public BooleanNode getBooleanNode() { return booleanNode; }
+    @JsonProperty("booleanNode")
+    public void setBooleanNode(BooleanNode value) { this.booleanNode = value; }
+
+    @JsonProperty("doubleNode")
+    public DoubleNode getDoubleNode() { return doubleNode; }
+    @JsonProperty("doubleNode")
+    public void setDoubleNode(DoubleNode value) { this.doubleNode = value; }
+
+    @JsonProperty("intNode")
+    public IntNode getIntNode() { return intNode; }
+    @JsonProperty("intNode")
+    public void setIntNode(IntNode value) { this.intNode = value; }
+
+    @JsonProperty("longNode")
+    public LongNode getLongNode() { return longNode; }
+    @JsonProperty("longNode")
+    public void setLongNode(LongNode value) { this.longNode = value; }
+
+    @JsonProperty("nullNode")
+    public NullNode getNullNode() { return nullNode; }
+    @JsonProperty("nullNode")
+    public void setNullNode(NullNode value) { this.nullNode = value; }
+
+    @JsonProperty("objectNode")
+    public ObjectNode getObjectNode() { return objectNode; }
+    @JsonProperty("objectNode")
+    public void setObjectNode(ObjectNode value) { this.objectNode = value; }
 
     @JsonProperty("stuff")
     public Map<String, Thing> getStuff() { return stuff; }
     @JsonProperty("stuff")
     public void setStuff(Map<String, Thing> value) { this.stuff = value; }
+
+    @JsonProperty("textNode")
+    public TextNode getTextNode() { return textNode; }
+    @JsonProperty("textNode")
+    public void setTextNode(TextNode value) { this.textNode = value; }
 }
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..0851939 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_NODE, ARRAY, AS, ASM, ASSERT, ASSOCIATEDTYPE, ASSOCIATIVITY, ASYNC, ATOMIC, ATOMIC_CANCEL, ATOMIC_COMMIT, ATOMIC_NOEXCEPT, AUTO, AWAIT, BASE, BITAND, BITOR, ENUM_BOOL, PURPLE_BOOL, BOOLEAN, BOOLEAN_NODE, 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, DESERIALIZATION_FEATURE, DECLTYPE, DECODE_STRING, DECODER, DECODING_ERROR, DEF, DEFAULT, DEFER, DEINIT, DEL, DELEGATE, DELETE, DICT, DICTIONARY, DID_SET, DO, DOUBLE, DOUBLE_NODE, 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, INT_NODE, 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, LONG_NODE, LOCALE, LOCK, LONG, MAP, MAP_ENTRY, METADATA_PROPERTY_HANDLING, MODULE, MUTABLE, MUTATING, NAMESPACE, NATIVE, NEW, NEWTONSOFT, NIL, NULL_NODE, 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_NODE, 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, SERIALIZATION_FEATURE, 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, TEXT_NODE, 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;
 
     @JsonValue
     public String toValue() {
@@ -20,6 +20,7 @@ public enum Enum {
             case AND_EQ: return "and_eq";
             case ANY: return "any";
             case ENUM_ANY: return "Any";
+            case ARRAY_NODE: return "ArrayNode";
             case ARRAY: return "array";
             case AS: return "as";
             case ASM: return "asm";
@@ -39,6 +40,7 @@ public enum Enum {
             case ENUM_BOOL: return "BOOL";
             case PURPLE_BOOL: return "bool";
             case BOOLEAN: return "boolean";
+            case BOOLEAN_NODE: return "BooleanNode";
             case BREAK: return "break";
             case BYCOPY: return "bycopy";
             case BYREF: return "byref";
@@ -82,6 +84,7 @@ public enum Enum {
             case DEBUGGER: return "debugger";
             case DECIMAL: return "decimal";
             case DECLARE: return "declare";
+            case DESERIALIZATION_FEATURE: return "DeserializationFeature";
             case DECLTYPE: return "decltype";
             case DECODE_STRING: return "decode_string";
             case DECODER: return "Decoder";
@@ -98,6 +101,7 @@ public enum Enum {
             case DID_SET: return "didSet";
             case DO: return "do";
             case DOUBLE: return "double";
+            case DOUBLE_NODE: return "DoubleNode";
             case DYNAMIC: return "dynamic";
             case DYNAMIC_CAST: return "dynamic_cast";
             case ELIF: return "elif";
@@ -156,6 +160,7 @@ public enum Enum {
             case INOUT: return "inout";
             case INSTANCEOF: return "instanceof";
             case INT: return "int";
+            case INT_NODE: return "IntNode";
             case INTERFACE: return "interface";
             case INTERNAL: return "internal";
             case ISO_DATE_TIME_OFFSET_CONVERTER: return "IsoDateTimeOffsetConverter";
@@ -185,6 +190,7 @@ public enum Enum {
             case LEFT: return "left";
             case LET: return "let";
             case LIST: return "list";
+            case LONG_NODE: return "LongNode";
             case LOCALE: return "Locale";
             case LOCK: return "lock";
             case LONG: return "long";
@@ -199,6 +205,7 @@ public enum Enum {
             case NEW: return "new";
             case NEWTONSOFT: return "newtonsoft";
             case NIL: return "nil";
+            case NULL_NODE: return "NullNode";
             case NO: return "NO";
             case NOEXCEPT: return "noexcept";
             case NONATOMIC: return "nonatomic";
@@ -217,6 +224,7 @@ public enum Enum {
             case NULLPTR: return "nullptr";
             case NUMBER: return "number";
             case OBJECT: return "object";
+            case OBJECT_NODE: return "ObjectNode";
             case OBJECT_MAPPER: return "ObjectMapper";
             case OF: return "of";
             case ONEWAY: return "oneway";
@@ -269,6 +277,7 @@ public enum Enum {
             case ENUM_SELF: return "self";
             case SENDABLE: return "Sendable";
             case SERIALIZE: return "serialize";
+            case SERIALIZATION_FEATURE: return "SerializationFeature";
             case SERIALIZER_PROVIDER: return "SerializerProvider";
             case SET: return "set";
             case SHORT: return "short";
@@ -294,6 +303,7 @@ public enum Enum {
             case TEMPLATE: return "template";
             case THEN: return "then";
             case THIS: return "this";
+            case TEXT_NODE: return "TextNode";
             case THREAD_LOCAL: return "thread_local";
             case THROW: return "throw";
             case THROWS: return "throws";
@@ -359,6 +369,7 @@ public enum Enum {
         if (value.equals("and_eq")) return AND_EQ;
         if (value.equals("any")) return ANY;
         if (value.equals("Any")) return ENUM_ANY;
+        if (value.equals("ArrayNode")) return ARRAY_NODE;
         if (value.equals("array")) return ARRAY;
         if (value.equals("as")) return AS;
         if (value.equals("asm")) return ASM;
@@ -378,6 +389,7 @@ public enum Enum {
         if (value.equals("BOOL")) return ENUM_BOOL;
         if (value.equals("bool")) return PURPLE_BOOL;
         if (value.equals("boolean")) return BOOLEAN;
+        if (value.equals("BooleanNode")) return BOOLEAN_NODE;
         if (value.equals("break")) return BREAK;
         if (value.equals("bycopy")) return BYCOPY;
         if (value.equals("byref")) return BYREF;
@@ -421,6 +433,7 @@ public enum Enum {
         if (value.equals("debugger")) return DEBUGGER;
         if (value.equals("decimal")) return DECIMAL;
         if (value.equals("declare")) return DECLARE;
+        if (value.equals("DeserializationFeature")) return DESERIALIZATION_FEATURE;
         if (value.equals("decltype")) return DECLTYPE;
         if (value.equals("decode_string")) return DECODE_STRING;
         if (value.equals("Decoder")) return DECODER;
@@ -437,6 +450,7 @@ public enum Enum {
         if (value.equals("didSet")) return DID_SET;
         if (value.equals("do")) return DO;
         if (value.equals("double")) return DOUBLE;
+        if (value.equals("DoubleNode")) return DOUBLE_NODE;
         if (value.equals("dynamic")) return DYNAMIC;
         if (value.equals("dynamic_cast")) return DYNAMIC_CAST;
         if (value.equals("elif")) return ELIF;
@@ -495,6 +509,7 @@ public enum Enum {
         if (value.equals("inout")) return INOUT;
         if (value.equals("instanceof")) return INSTANCEOF;
         if (value.equals("int")) return INT;
+        if (value.equals("IntNode")) return INT_NODE;
         if (value.equals("interface")) return INTERFACE;
         if (value.equals("internal")) return INTERNAL;
         if (value.equals("IsoDateTimeOffsetConverter")) return ISO_DATE_TIME_OFFSET_CONVERTER;
@@ -524,6 +539,7 @@ public enum Enum {
         if (value.equals("left")) return LEFT;
         if (value.equals("let")) return LET;
         if (value.equals("list")) return LIST;
+        if (value.equals("LongNode")) return LONG_NODE;
         if (value.equals("Locale")) return LOCALE;
         if (value.equals("lock")) return LOCK;
         if (value.equals("long")) return LONG;
@@ -538,6 +554,7 @@ public enum Enum {
         if (value.equals("new")) return NEW;
         if (value.equals("newtonsoft")) return NEWTONSOFT;
         if (value.equals("nil")) return NIL;
+        if (value.equals("NullNode")) return NULL_NODE;
         if (value.equals("NO")) return NO;
         if (value.equals("noexcept")) return NOEXCEPT;
         if (value.equals("nonatomic")) return NONATOMIC;
@@ -556,6 +573,7 @@ public enum Enum {
         if (value.equals("nullptr")) return NULLPTR;
         if (value.equals("number")) return NUMBER;
         if (value.equals("object")) return OBJECT;
+        if (value.equals("ObjectNode")) return OBJECT_NODE;
         if (value.equals("ObjectMapper")) return OBJECT_MAPPER;
         if (value.equals("of")) return OF;
         if (value.equals("oneway")) return ONEWAY;
@@ -608,6 +626,7 @@ public enum Enum {
         if (value.equals("self")) return ENUM_SELF;
         if (value.equals("Sendable")) return SENDABLE;
         if (value.equals("serialize")) return SERIALIZE;
+        if (value.equals("SerializationFeature")) return SERIALIZATION_FEATURE;
         if (value.equals("SerializerProvider")) return SERIALIZER_PROVIDER;
         if (value.equals("set")) return SET;
         if (value.equals("short")) return SHORT;
@@ -633,6 +652,7 @@ public enum Enum {
         if (value.equals("template")) return TEMPLATE;
         if (value.equals("then")) return THEN;
         if (value.equals("this")) return THIS;
+        if (value.equals("TextNode")) return TEXT_NODE;
         if (value.equals("thread_local")) return THREAD_LOCAL;
         if (value.equals("throw")) return THROW;
         if (value.equals("throws")) return THROWS;
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/ArrayNode.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/ArrayNode.java
new file mode 100644
index 0000000..5413d25
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/ArrayNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class ArrayNode {
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/BooleanNode.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/BooleanNode.java
new file mode 100644
index 0000000..660a224
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/BooleanNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class BooleanNode {
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/DeserializationFeature.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/DeserializationFeature.java
new file mode 100644
index 0000000..505f84a
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/DeserializationFeature.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class DeserializationFeature {
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/DoubleNode.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/DoubleNode.java
new file mode 100644
index 0000000..47b2f58
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/DoubleNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class DoubleNode {
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/IntNode.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/IntNode.java
new file mode 100644
index 0000000..2fe17ef
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/IntNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class IntNode {
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/LongNode.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/LongNode.java
new file mode 100644
index 0000000..6239092
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/LongNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class LongNode {
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/NullNode.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/NullNode.java
new file mode 100644
index 0000000..8081362
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/NullNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class NullNode {
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/ObjectNode.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/ObjectNode.java
new file mode 100644
index 0000000..780f647
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/ObjectNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class ObjectNode {
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerializationFeature.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerializationFeature.java
new file mode 100644
index 0000000..fe9475f
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/SerializationFeature.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class SerializationFeature {
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/TextNode.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/TextNode.java
new file mode 100644
index 0000000..e2eb0c3
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/TextNode.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class TextNode {
+}
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..d6ff73d 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
@@ -15,6 +15,7 @@ public class TopLevel {
     private UnionAnyUnion topLevelAny;
     private UnionAny any;
     private UnionArray array;
+    private UnionArrayNode arrayNode;
     private UnionAs as;
     private UnionASM asm;
     private UnionAssert topLevelAssert;
@@ -33,6 +34,7 @@ public class TopLevel {
     private UnionBOOL bool;
     private TopLevelUnionBool purpleBool;
     private UnionBoolean topLevelBoolean;
+    private UnionBooleanNode booleanNode;
     private UnionBreak topLevelBreak;
     private UnionBycopy bycopy;
     private UnionByref byref;
@@ -87,11 +89,13 @@ public class TopLevel {
     private UnionDel del;
     private UnionDelegate delegate;
     private UnionDelete delete;
+    private UnionDeserializationFeature deserializationFeature;
     private UnionDict dict;
     private UnionDictionary dictionary;
     private UnionDidSet didSet;
     private UnionDo topLevelDo;
     private UnionDouble topLevelDouble;
+    private UnionDoubleNode doubleNode;
     private Double dummy;
     private UnionDynamic dynamic;
     private UnionDynamicCast dynamicCast;
@@ -153,6 +157,7 @@ public class TopLevel {
     private UnionInt topLevelInt;
     private UnionInterface topLevelInterface;
     private UnionInternal internal;
+    private UnionIntNode intNode;
     private UnionIs is;
     private UnionISODateTimeOffsetConverter isoDateTimeOffsetConverter;
     private UnionIterable iterable;
@@ -183,6 +188,7 @@ public class TopLevel {
     private UnionLocale locale;
     private UnionLock lock;
     private UnionLong topLevelLong;
+    private UnionLongNode longNode;
     private UnionMap map;
     private UnionMapEntry mapEntry;
     private UnionMetadataPropertyHandling metadataPropertyHandling;
@@ -209,10 +215,12 @@ public class TopLevel {
     private UnionNSString nsString;
     private UnionNULL topLevelNULL;
     private UnionNullUnion topLevelNull;
+    private UnionNullNode nullNode;
     private UnionNullptr nullptr;
     private UnionNumber number;
     private UnionObject object;
     private UnionObjectMapper objectMapper;
+    private UnionObjectNode objectNode;
     private UnionOf of;
     private UnionOneway oneway;
     private UnionOpen open;
@@ -263,6 +271,7 @@ public class TopLevel {
     private UnionSelf self;
     private UnionSelfUnion topLevelSelf;
     private UnionSendable sendable;
+    private UnionSerializationFeature serializationFeature;
     private UnionSerialize serialize;
     private UnionSerializerProvider serializerProvider;
     private UnionSet set;
@@ -287,6 +296,7 @@ public class TopLevel {
     private UnionSynchronized topLevelSynchronized;
     private UnionSystem system;
     private UnionTemplate template;
+    private UnionTextNode textNode;
     private UnionThen then;
     private UnionThis topLevelThis;
     private UnionThreadLocal threadLocal;
@@ -397,6 +407,11 @@ public class TopLevel {
     @JsonProperty("array")
     public void setArray(UnionArray value) { this.array = value; }
 
+    @JsonProperty("ArrayNode")
+    public UnionArrayNode getArrayNode() { return arrayNode; }
+    @JsonProperty("ArrayNode")
+    public void setArrayNode(UnionArrayNode value) { this.arrayNode = value; }
+
     @JsonProperty("as")
     public UnionAs getAs() { return as; }
     @JsonProperty("as")
@@ -487,6 +502,11 @@ public class TopLevel {
     @JsonProperty("boolean")
     public void setTopLevelBoolean(UnionBoolean value) { this.topLevelBoolean = value; }
 
+    @JsonProperty("BooleanNode")
+    public UnionBooleanNode getBooleanNode() { return booleanNode; }
+    @JsonProperty("BooleanNode")
+    public void setBooleanNode(UnionBooleanNode value) { this.booleanNode = value; }
+
     @JsonProperty("break")
     public UnionBreak getTopLevelBreak() { return topLevelBreak; }
     @JsonProperty("break")
@@ -757,6 +777,11 @@ public class TopLevel {
     @JsonProperty("delete")
     public void setDelete(UnionDelete value) { this.delete = value; }
 
+    @JsonProperty("DeserializationFeature")
+    public UnionDeserializationFeature getDeserializationFeature() { return deserializationFeature; }
+    @JsonProperty("DeserializationFeature")
+    public void setDeserializationFeature(UnionDeserializationFeature value) { this.deserializationFeature = value; }
+
     @JsonProperty("dict")
     public UnionDict getDict() { return dict; }
     @JsonProperty("dict")
@@ -782,6 +807,11 @@ public class TopLevel {
     @JsonProperty("double")
     public void setTopLevelDouble(UnionDouble value) { this.topLevelDouble = value; }
 
+    @JsonProperty("DoubleNode")
+    public UnionDoubleNode getDoubleNode() { return doubleNode; }
+    @JsonProperty("DoubleNode")
+    public void setDoubleNode(UnionDoubleNode value) { this.doubleNode = value; }
+
     @JsonProperty("dummy")
     public Double getDummy() { return dummy; }
     @JsonProperty("dummy")
@@ -1087,6 +1117,11 @@ public class TopLevel {
     @JsonProperty("internal")
     public void setInternal(UnionInternal value) { this.internal = value; }
 
+    @JsonProperty("IntNode")
+    public UnionIntNode getIntNode() { return intNode; }
+    @JsonProperty("IntNode")
+    public void setIntNode(UnionIntNode value) { this.intNode = value; }
+
     @JsonProperty("is")
     public UnionIs getIs() { return is; }
     @JsonProperty("is")
@@ -1237,6 +1272,11 @@ public class TopLevel {
     @JsonProperty("long")
     public void setTopLevelLong(UnionLong value) { this.topLevelLong = value; }
 
+    @JsonProperty("LongNode")
+    public UnionLongNode getLongNode() { return longNode; }
+    @JsonProperty("LongNode")
+    public void setLongNode(UnionLongNode value) { this.longNode = value; }
+
     @JsonProperty("map")
     public UnionMap getMap() { return map; }
     @JsonProperty("map")
@@ -1367,6 +1407,11 @@ public class TopLevel {
     @JsonProperty("null")
     public void setTopLevelNull(UnionNullUnion value) { this.topLevelNull = value; }
 
+    @JsonProperty("NullNode")
+    public UnionNullNode getNullNode() { return nullNode; }
+    @JsonProperty("NullNode")
+    public void setNullNode(UnionNullNode value) { this.nullNode = value; }
+
     @JsonProperty("nullptr")
     public UnionNullptr getNullptr() { return nullptr; }
     @JsonProperty("nullptr")
@@ -1387,6 +1432,11 @@ public class TopLevel {
     @JsonProperty("ObjectMapper")
     public void setObjectMapper(UnionObjectMapper value) { this.objectMapper = value; }
 
+    @JsonProperty("ObjectNode")
+    public UnionObjectNode getObjectNode() { return objectNode; }
+    @JsonProperty("ObjectNode")
+    public void setObjectNode(UnionObjectNode value) { this.objectNode = value; }
+
     @JsonProperty("of")
     public UnionOf getOf() { return of; }
     @JsonProperty("of")
@@ -1637,6 +1687,11 @@ public class TopLevel {
     @JsonProperty("Sendable")
     public void setSendable(UnionSendable value) { this.sendable = value; }
 
+    @JsonProperty("SerializationFeature")
+    public UnionSerializationFeature getSerializationFeature() { return serializationFeature; }
+    @JsonProperty("SerializationFeature")
+    public void setSerializationFeature(UnionSerializationFeature value) { this.serializationFeature = value; }
+
     @JsonProperty("serialize")
     public UnionSerialize getSerialize() { return serialize; }
     @JsonProperty("serialize")
@@ -1757,6 +1812,11 @@ public class TopLevel {
     @JsonProperty("template")
     public void setTemplate(UnionTemplate value) { this.template = value; }
 
+    @JsonProperty("TextNode")
+    public UnionTextNode getTextNode() { return textNode; }
+    @JsonProperty("TextNode")
+    public void setTextNode(UnionTextNode value) { this.textNode = value; }
+
     @JsonProperty("then")
     public UnionThen getThen() { return then; }
     @JsonProperty("then")
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionArrayNode.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionArrayNode.java
new file mode 100644
index 0000000..1b148f8
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionArrayNode.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 = UnionArrayNode.Deserializer.class)
+@JsonSerialize(using = UnionArrayNode.Serializer.class)
+public class UnionArrayNode {
+    public Double doubleValue;
+    public ArrayNode arrayNodeValue;
+
+    static class Deserializer extends JsonDeserializer<UnionArrayNode> {
+        @Override
+        public UnionArrayNode deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionArrayNode value = new UnionArrayNode();
+            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.arrayNodeValue = jsonParser.readValueAs(ArrayNode.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionArrayNode");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionArrayNode> {
+        @Override
+        public void serialize(UnionArrayNode obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.arrayNodeValue != null) {
+                jsonGenerator.writeObject(obj.arrayNodeValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionBooleanNode.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionBooleanNode.java
new file mode 100644
index 0000000..ec3cf14
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionBooleanNode.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 = UnionBooleanNode.Deserializer.class)
+@JsonSerialize(using = UnionBooleanNode.Serializer.class)
+public class UnionBooleanNode {
+    public Double doubleValue;
+    public BooleanNode booleanNodeValue;
+
+    static class Deserializer extends JsonDeserializer<UnionBooleanNode> {
+        @Override
+        public UnionBooleanNode deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionBooleanNode value = new UnionBooleanNode();
+            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.booleanNodeValue = jsonParser.readValueAs(BooleanNode.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionBooleanNode");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionBooleanNode> {
+        @Override
+        public void serialize(UnionBooleanNode obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.booleanNodeValue != null) {
+                jsonGenerator.writeObject(obj.booleanNodeValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionDeserializationFeature.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionDeserializationFeature.java
new file mode 100644
index 0000000..c927d67
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionDeserializationFeature.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 = UnionDeserializationFeature.Deserializer.class)
+@JsonSerialize(using = UnionDeserializationFeature.Serializer.class)
+public class UnionDeserializationFeature {
+    public Double doubleValue;
+    public DeserializationFeature deserializationFeatureValue;
+
+    static class Deserializer extends JsonDeserializer<UnionDeserializationFeature> {
+        @Override
+        public UnionDeserializationFeature deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionDeserializationFeature value = new UnionDeserializationFeature();
+            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.deserializationFeatureValue = jsonParser.readValueAs(DeserializationFeature.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionDeserializationFeature");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionDeserializationFeature> {
+        @Override
+        public void serialize(UnionDeserializationFeature obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.deserializationFeatureValue != null) {
+                jsonGenerator.writeObject(obj.deserializationFeatureValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionDoubleNode.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionDoubleNode.java
new file mode 100644
index 0000000..c4dbfab
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionDoubleNode.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 = UnionDoubleNode.Deserializer.class)
+@JsonSerialize(using = UnionDoubleNode.Serializer.class)
+public class UnionDoubleNode {
+    public Double doubleValue;
+    public DoubleNode doubleNodeValue;
+
+    static class Deserializer extends JsonDeserializer<UnionDoubleNode> {
+        @Override
+        public UnionDoubleNode deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionDoubleNode value = new UnionDoubleNode();
+            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.doubleNodeValue = jsonParser.readValueAs(DoubleNode.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionDoubleNode");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionDoubleNode> {
+        @Override
+        public void serialize(UnionDoubleNode obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.doubleNodeValue != null) {
+                jsonGenerator.writeObject(obj.doubleNodeValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionIntNode.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionIntNode.java
new file mode 100644
index 0000000..4288f29
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionIntNode.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 = UnionIntNode.Deserializer.class)
+@JsonSerialize(using = UnionIntNode.Serializer.class)
+public class UnionIntNode {
+    public Double doubleValue;
+    public IntNode intNodeValue;
+
+    static class Deserializer extends JsonDeserializer<UnionIntNode> {
+        @Override
+        public UnionIntNode deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionIntNode value = new UnionIntNode();
+            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.intNodeValue = jsonParser.readValueAs(IntNode.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionIntNode");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionIntNode> {
+        @Override
+        public void serialize(UnionIntNode obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.intNodeValue != null) {
+                jsonGenerator.writeObject(obj.intNodeValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionLongNode.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionLongNode.java
new file mode 100644
index 0000000..f659386
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionLongNode.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 = UnionLongNode.Deserializer.class)
+@JsonSerialize(using = UnionLongNode.Serializer.class)
+public class UnionLongNode {
+    public Double doubleValue;
+    public LongNode longNodeValue;
+
+    static class Deserializer extends JsonDeserializer<UnionLongNode> {
+        @Override
+        public UnionLongNode deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionLongNode value = new UnionLongNode();
+            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.longNodeValue = jsonParser.readValueAs(LongNode.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionLongNode");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionLongNode> {
+        @Override
+        public void serialize(UnionLongNode obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.longNodeValue != null) {
+                jsonGenerator.writeObject(obj.longNodeValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionNullNode.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionNullNode.java
new file mode 100644
index 0000000..4f95c58
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionNullNode.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 = UnionNullNode.Deserializer.class)
+@JsonSerialize(using = UnionNullNode.Serializer.class)
+public class UnionNullNode {
+    public Double doubleValue;
+    public NullNode nullNodeValue;
+
+    static class Deserializer extends JsonDeserializer<UnionNullNode> {
+        @Override
+        public UnionNullNode deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionNullNode value = new UnionNullNode();
+            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.nullNodeValue = jsonParser.readValueAs(NullNode.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionNullNode");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionNullNode> {
+        @Override
+        public void serialize(UnionNullNode obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.nullNodeValue != null) {
+                jsonGenerator.writeObject(obj.nullNodeValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionObjectNode.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionObjectNode.java
new file mode 100644
index 0000000..01684bc
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionObjectNode.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 = UnionObjectNode.Deserializer.class)
+@JsonSerialize(using = UnionObjectNode.Serializer.class)
+public class UnionObjectNode {
+    public Double doubleValue;
+    public ObjectNode objectNodeValue;
+
+    static class Deserializer extends JsonDeserializer<UnionObjectNode> {
+        @Override
+        public UnionObjectNode deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionObjectNode value = new UnionObjectNode();
+            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.objectNodeValue = jsonParser.readValueAs(ObjectNode.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionObjectNode");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionObjectNode> {
+        @Override
+        public void serialize(UnionObjectNode obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.objectNodeValue != null) {
+                jsonGenerator.writeObject(obj.objectNodeValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerializationFeature.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerializationFeature.java
new file mode 100644
index 0000000..6ead7dc
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionSerializationFeature.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 = UnionSerializationFeature.Deserializer.class)
+@JsonSerialize(using = UnionSerializationFeature.Serializer.class)
+public class UnionSerializationFeature {
+    public Double doubleValue;
+    public SerializationFeature serializationFeatureValue;
+
+    static class Deserializer extends JsonDeserializer<UnionSerializationFeature> {
+        @Override
+        public UnionSerializationFeature deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionSerializationFeature value = new UnionSerializationFeature();
+            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.serializationFeatureValue = jsonParser.readValueAs(SerializationFeature.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionSerializationFeature");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionSerializationFeature> {
+        @Override
+        public void serialize(UnionSerializationFeature obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.serializationFeatureValue != null) {
+                jsonGenerator.writeObject(obj.serializationFeatureValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionTextNode.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionTextNode.java
new file mode 100644
index 0000000..3d76818
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionTextNode.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 = UnionTextNode.Deserializer.class)
+@JsonSerialize(using = UnionTextNode.Serializer.class)
+public class UnionTextNode {
+    public Double doubleValue;
+    public TextNode textNodeValue;
+
+    static class Deserializer extends JsonDeserializer<UnionTextNode> {
+        @Override
+        public UnionTextNode deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionTextNode value = new UnionTextNode();
+            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.textNodeValue = jsonParser.readValueAs(TextNode.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionTextNode");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionTextNode> {
+        @Override
+        public void serialize(UnionTextNode obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.textNodeValue != null) {
+                jsonGenerator.writeObject(obj.textNodeValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/base/schema-javascript/test/inputs/schema/direct-union.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/direct-union.schema/default/TopLevel.js
index bd3ee9a..6c7a5b1 100644
--- a/base/schema-javascript/test/inputs/schema/direct-union.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/direct-union.schema/default/TopLevel.js
@@ -193,12 +193,36 @@ function r(name) {
 
 const typeMap = {
     "TopLevel": o([
+        { json: "arrayNode", js: "arrayNode", typ: u(undefined, r("ArrayNode")) },
+        { json: "booleanNode", js: "booleanNode", typ: u(undefined, r("BooleanNode")) },
+        { json: "doubleNode", js: "doubleNode", typ: u(undefined, r("DoubleNode")) },
+        { json: "intNode", js: "intNode", typ: u(undefined, r("IntNode")) },
+        { json: "longNode", js: "longNode", typ: u(undefined, r("LongNode")) },
+        { json: "nullNode", js: "nullNode", typ: u(undefined, r("NullNode")) },
+        { json: "objectNode", js: "objectNode", typ: u(undefined, r("ObjectNode")) },
         { json: "stuff", js: "stuff", typ: m(r("Thing")) },
+        { json: "textNode", js: "textNode", typ: u(undefined, r("TextNode")) },
+    ], false),
+    "ArrayNode": o([
+    ], false),
+    "BooleanNode": o([
+    ], false),
+    "DoubleNode": o([
+    ], false),
+    "IntNode": o([
+    ], false),
+    "LongNode": o([
+    ], false),
+    "NullNode": o([
+    ], false),
+    "ObjectNode": o([
     ], false),
     "Thing": o([
         { json: "optional", js: "optional", typ: u(undefined, u(a("any"), true, 3.14, i(0), m("any"), null, "")) },
         { json: "required", js: "required", typ: u(a("any"), true, 3.14, i(0), m("any"), null, "") },
     ], false),
+    "TextNode": o([
+    ], false),
 };
 
 module.exports = {
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..adee59c 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
@@ -207,6 +207,7 @@ const typeMap = {
         "and_eq",
         "any",
         "Any",
+        "ArrayNode",
         "array",
         "as",
         "asm",
@@ -226,6 +227,7 @@ const typeMap = {
         "BOOL",
         "bool",
         "boolean",
+        "BooleanNode",
         "break",
         "bycopy",
         "byref",
@@ -269,6 +271,7 @@ const typeMap = {
         "debugger",
         "decimal",
         "declare",
+        "DeserializationFeature",
         "decltype",
         "decode_string",
         "Decoder",
@@ -285,6 +288,7 @@ const typeMap = {
         "didSet",
         "do",
         "double",
+        "DoubleNode",
         "dynamic",
         "dynamic_cast",
         "elif",
@@ -343,6 +347,7 @@ const typeMap = {
         "inout",
         "instanceof",
         "int",
+        "IntNode",
         "interface",
         "internal",
         "IsoDateTimeOffsetConverter",
@@ -372,6 +377,7 @@ const typeMap = {
         "left",
         "let",
         "list",
+        "LongNode",
         "Locale",
         "lock",
         "long",
@@ -386,6 +392,7 @@ const typeMap = {
         "new",
         "newtonsoft",
         "nil",
+        "NullNode",
         "NO",
         "noexcept",
         "nonatomic",
@@ -404,6 +411,7 @@ const typeMap = {
         "nullptr",
         "number",
         "object",
+        "ObjectNode",
         "ObjectMapper",
         "of",
         "oneway",
@@ -456,6 +464,7 @@ const typeMap = {
         "self",
         "Sendable",
         "serialize",
+        "SerializationFeature",
         "SerializerProvider",
         "set",
         "short",
@@ -481,6 +490,7 @@ const typeMap = {
         "template",
         "then",
         "this",
+        "TextNode",
         "thread_local",
         "throw",
         "throws",
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..a84ff8d 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
@@ -205,6 +205,7 @@ const typeMap = {
         { json: "any", js: "any", typ: u(undefined, u(r("AnyClass"), 3.14)) },
         { json: "Any", js: "Any", typ: u(undefined, u(r("Any"), 3.14)) },
         { json: "array", js: "array", typ: u(undefined, u(r("Array"), 3.14)) },
+        { json: "ArrayNode", js: "ArrayNode", typ: u(undefined, u(r("ArrayNode"), 3.14)) },
         { json: "as", js: "as", typ: u(undefined, u(r("As"), 3.14)) },
         { json: "asm", js: "asm", typ: u(undefined, u(r("ASM"), 3.14)) },
         { json: "assert", js: "assert", typ: u(undefined, u(r("Assert"), 3.14)) },
@@ -223,6 +224,7 @@ const typeMap = {
         { json: "BOOL", js: "BOOL", typ: u(undefined, u(r("Bool"), 3.14)) },
         { json: "bool", js: "bool", typ: u(undefined, u(r("UnionBoolBool"), 3.14)) },
         { json: "boolean", js: "boolean", typ: u(undefined, u(r("Boolean"), 3.14)) },
+        { json: "BooleanNode", js: "BooleanNode", typ: u(undefined, u(r("BooleanNode"), 3.14)) },
         { json: "break", js: "break", typ: u(undefined, u(r("Break"), 3.14)) },
         { json: "bycopy", js: "bycopy", typ: u(undefined, u(r("Bycopy"), 3.14)) },
         { json: "byref", js: "byref", typ: u(undefined, u(r("Byref"), 3.14)) },
@@ -277,11 +279,13 @@ const typeMap = {
         { json: "del", js: "del", typ: u(undefined, u(r("Del"), 3.14)) },
         { json: "delegate", js: "delegate", typ: u(undefined, u(r("Delegate"), 3.14)) },
         { json: "delete", js: "delete", typ: u(undefined, u(r("Delete"), 3.14)) },
+        { json: "DeserializationFeature", js: "DeserializationFeature", typ: u(undefined, u(r("DeserializationFeature"), 3.14)) },
         { json: "dict", js: "dict", typ: u(undefined, u(r("Dict"), 3.14)) },
         { json: "dictionary", js: "dictionary", typ: u(undefined, u(r("Dictionary"), 3.14)) },
         { json: "didSet", js: "didSet", typ: u(undefined, u(r("DidSet"), 3.14)) },
         { json: "do", js: "do", typ: u(undefined, u(r("Do"), 3.14)) },
         { json: "double", js: "double", typ: u(undefined, u(r("Double"), 3.14)) },
+        { json: "DoubleNode", js: "DoubleNode", typ: u(undefined, u(r("DoubleNode"), 3.14)) },
         { json: "dummy", js: "dummy", typ: u(undefined, 3.14) },
         { json: "dynamic", js: "dynamic", typ: u(undefined, u(r("Dynamic"), 3.14)) },
         { json: "dynamic_cast", js: "dynamic_cast", typ: u(undefined, u(r("DynamicCast"), 3.14)) },
@@ -343,6 +347,7 @@ const typeMap = {
         { json: "int", js: "int", typ: u(undefined, u(r("Int"), 3.14)) },
         { json: "interface", js: "interface", typ: u(undefined, u(r("Interface"), 3.14)) },
         { json: "internal", js: "internal", typ: u(undefined, u(r("Internal"), 3.14)) },
+        { json: "IntNode", js: "IntNode", typ: u(undefined, u(r("IntNode"), 3.14)) },
         { json: "is", js: "is", typ: u(undefined, u(r("Is"), 3.14)) },
         { json: "IsoDateTimeOffsetConverter", js: "IsoDateTimeOffsetConverter", typ: u(undefined, u(r("ISODateTimeOffsetConverter"), 3.14)) },
         { json: "iterable", js: "iterable", typ: u(undefined, u(r("Iterable"), 3.14)) },
@@ -373,6 +378,7 @@ const typeMap = {
         { json: "Locale", js: "Locale", typ: u(undefined, u(r("Locale"), 3.14)) },
         { json: "lock", js: "lock", typ: u(undefined, u(r("Lock"), 3.14)) },
         { json: "long", js: "long", typ: u(undefined, u(r("Long"), 3.14)) },
+        { json: "LongNode", js: "LongNode", typ: u(undefined, u(r("LongNode"), 3.14)) },
         { json: "map", js: "map", typ: u(undefined, u(r("Map"), 3.14)) },
         { json: "MapEntry", js: "MapEntry", typ: u(undefined, u(r("MapEntry"), 3.14)) },
         { json: "metadata_property_handling", js: "metadata_property_handling", typ: u(undefined, u(r("MetadataPropertyHandling"), 3.14)) },
@@ -399,10 +405,12 @@ const typeMap = {
         { json: "NSString", js: "NSString", typ: u(undefined, u(r("NSString"), 3.14)) },
         { json: "NULL", js: "NULL", typ: u(undefined, u(r("Null"), 3.14)) },
         { json: "null", js: "null", typ: u(undefined, u(r("NullClass"), 3.14)) },
+        { json: "NullNode", js: "NullNode", typ: u(undefined, u(r("NullNode"), 3.14)) },
         { json: "nullptr", js: "nullptr", typ: u(undefined, u(r("Nullptr"), 3.14)) },
         { json: "number", js: "number", typ: u(undefined, u(r("Number"), 3.14)) },
         { json: "object", js: "object", typ: u(undefined, u(r("Object"), 3.14)) },
         { json: "ObjectMapper", js: "ObjectMapper", typ: u(undefined, u(r("ObjectMapper"), 3.14)) },
+        { json: "ObjectNode", js: "ObjectNode", typ: u(undefined, u(r("ObjectNode"), 3.14)) },
         { json: "of", js: "of", typ: u(undefined, u(r("Of"), 3.14)) },
         { json: "oneway", js: "oneway", typ: u(undefined, u(r("Oneway"), 3.14)) },
         { json: "open", js: "open", typ: u(undefined, u(r("Open"), 3.14)) },
@@ -453,6 +461,7 @@ 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: "SerializationFeature", js: "SerializationFeature", typ: u(undefined, u(r("SerializationFeature"), 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: "set", js: "set", typ: u(undefined, u(r("Set"), 3.14)) },
@@ -477,6 +486,7 @@ const typeMap = {
         { json: "synchronized", js: "synchronized", typ: u(undefined, u(r("Synchronized"), 3.14)) },
         { json: "system", js: "system", typ: u(undefined, u(r("System"), 3.14)) },
         { json: "template", js: "template", typ: u(undefined, u(r("Template"), 3.14)) },
+        { json: "TextNode", js: "TextNode", typ: u(undefined, u(r("TextNode"), 3.14)) },
         { json: "then", js: "then", typ: u(undefined, u(r("Then"), 3.14)) },
         { json: "this", js: "this", typ: u(undefined, u(r("This"), 3.14)) },
         { json: "thread_local", js: "thread_local", typ: u(undefined, u(r("ThreadLocal"), 3.14)) },
@@ -529,8 +539,12 @@ const typeMap = {
     ], "any"),
     "Any": o([
     ], false),
+    "ArrayNode": o([
+    ], false),
     "Bool": o([
     ], false),
+    "BooleanNode": o([
+    ], false),
     "Calendar": o([
     ], false),
     "Class": o([
@@ -557,6 +571,10 @@ const typeMap = {
     ], false),
     "DecodingError": o([
     ], false),
+    "DeserializationFeature": o([
+    ], false),
+    "DoubleNode": o([
+    ], false),
     "Encoder": o([
     ], false),
     "EnumValues": o([
@@ -573,6 +591,8 @@ const typeMap = {
     ], false),
     "Imp": o([
     ], false),
+    "IntNode": o([
+    ], false),
     "ISODateTimeOffsetConverter": o([
     ], false),
     "JSONAny": o([
@@ -599,6 +619,8 @@ const typeMap = {
     ], false),
     "Locale": o([
     ], false),
+    "LongNode": o([
+    ], false),
     "MapEntry": o([
     ], false),
     "No": o([
@@ -613,8 +635,12 @@ const typeMap = {
     ], false),
     "None": o([
     ], false),
+    "NullNode": o([
+    ], false),
     "ObjectMapper": o([
     ], false),
+    "ObjectNode": o([
+    ], false),
     "Protocol": o([
     ], false),
     "RegExp": o([
@@ -625,6 +651,8 @@ const typeMap = {
     ], false),
     "Sendable": o([
     ], false),
+    "SerializationFeature": o([
+    ], false),
     "SerializerProvider": o([
     ], false),
     "SimpleModule": o([
@@ -635,6 +663,8 @@ const typeMap = {
     ], false),
     "StdSerializer": o([
     ], false),
+    "TextNode": o([
+    ], false),
     "TimeOnly": o([
     ], false),
     "TimeOnlyConverter": o([
diff --git a/base/schema-javascript-prop-types/test/inputs/schema/direct-union.schema/default/toplevel.js b/head/schema-javascript-prop-types/test/inputs/schema/direct-union.schema/default/toplevel.js
index 49a95e0..d5e17be 100644
--- a/base/schema-javascript-prop-types/test/inputs/schema/direct-union.schema/default/toplevel.js
+++ b/head/schema-javascript-prop-types/test/inputs/schema/direct-union.schema/default/toplevel.js
@@ -14,13 +14,45 @@ import PropTypes from "prop-types";
 const Integer = (props, name) => props[name] == null || Number.isInteger(props[name]) ? null : new Error("Expected integer");
 
 let _TopLevel;
+let _ArrayNode;
+let _BooleanNode;
+let _DoubleNode;
+let _IntNode;
+let _LongNode;
+let _NullNode;
+let _ObjectNode;
 let _Thing;
+let _TextNode;
+_ArrayNode = PropTypes.shape({
+});
+_BooleanNode = PropTypes.shape({
+});
+_DoubleNode = PropTypes.shape({
+});
+_IntNode = PropTypes.shape({
+});
+_LongNode = PropTypes.shape({
+});
+_NullNode = PropTypes.shape({
+});
+_ObjectNode = PropTypes.shape({
+});
 _Thing = PropTypes.shape({
     "optional": PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.any), PropTypes.bool, PropTypes.number, Integer, PropTypes.objectOf(PropTypes.any), PropTypes.oneOf([null]), PropTypes.string]),
     "required": (props, name, ...args) => props[name] === undefined ? new Error("Expected required property") : PropTypes.oneOfType([PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.any), PropTypes.bool, PropTypes.number, Integer, PropTypes.objectOf(PropTypes.any), PropTypes.oneOf([null]), PropTypes.string])])(props, name, ...args),
 });
+_TextNode = PropTypes.shape({
+});
 _TopLevel = PropTypes.shape({
+    "arrayNode": PropTypes.oneOfType([_ArrayNode, PropTypes.oneOf([null])]),
+    "booleanNode": PropTypes.oneOfType([_BooleanNode, PropTypes.oneOf([null])]),
+    "doubleNode": PropTypes.oneOfType([_DoubleNode, PropTypes.oneOf([null])]),
+    "intNode": PropTypes.oneOfType([_IntNode, PropTypes.oneOf([null])]),
+    "longNode": PropTypes.oneOfType([_LongNode, PropTypes.oneOf([null])]),
+    "nullNode": PropTypes.oneOfType([_NullNode, PropTypes.oneOf([null])]),
+    "objectNode": PropTypes.oneOfType([_ObjectNode, PropTypes.oneOf([null])]),
     "stuff": PropTypes.oneOfType([PropTypes.objectOf(_Thing)]).isRequired,
+    "textNode": PropTypes.oneOfType([_TextNode, PropTypes.oneOf([null])]),
 });
 
 export const TopLevel = _TopLevel;
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..b700d88 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', 'ArrayNode', 'array', 'as', 'asm', 'assert', 'associatedtype', 'associativity', 'async', 'atomic', 'atomic_cancel', 'atomic_commit', 'atomic_noexcept', 'auto', 'await', 'base', 'bitand', 'bitor', 'BOOL', 'bool', 'boolean', 'BooleanNode', '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', 'DeserializationFeature', 'decltype', 'decode_string', 'Decoder', 'DecodingError', 'def', 'default', 'defer', 'deinit', 'del', 'delegate', 'delete', 'dict', 'dictionary', 'didSet', 'do', 'double', 'DoubleNode', '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', 'IntNode', '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', 'LongNode', 'Locale', 'lock', 'long', 'map', 'MapEntry', 'metadata_property_handling', 'module', 'mutable', 'mutating', 'namespace', 'native', 'new', 'newtonsoft', 'nil', 'NullNode', 'NO', 'noexcept', 'nonatomic', 'none', 'None', 'nonlocal', 'nonmutating', 'NSObject', 'noSuchMethod', 'not', 'not_eq', 'NSError', 'NSString', 'NULL', 'null', 'nullptr', 'number', 'object', 'ObjectNode', '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', 'SerializationFeature', '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', 'TextNode', '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']);
 _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..4fc14ac 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
@@ -14,7 +14,9 @@ import PropTypes from "prop-types";
 
 let _TopLevel;
 let _Any;
+let _ArrayNode;
 let _Bool;
+let _BooleanNode;
 let _Calendar;
 let _Class;
 let _Codable;
@@ -28,6 +30,8 @@ let _DateTime;
 let _DateTimeStyles;
 let _Decoder;
 let _DecodingError;
+let _DeserializationFeature;
+let _DoubleNode;
 let _Encoder;
 let _EnumValues;
 let _Equatable;
@@ -36,6 +40,7 @@ let _FormatException;
 let _Hashable;
 let _Hasher;
 let _Imp;
+let _IntNode;
 let _ISODateTimeOffsetConverter;
 let _JSONAny;
 let _JSONCodingKey;
@@ -49,6 +54,7 @@ let _JSONParser;
 let _JSONReader;
 let _JSONTokenType;
 let _Locale;
+let _LongNode;
 let _MapEntry;
 let _No;
 let _NSError;
@@ -56,17 +62,21 @@ let _NSObject;
 let _NSString;
 let _Null;
 let _None;
+let _NullNode;
 let _ObjectMapper;
+let _ObjectNode;
 let _Protocol;
 let _RegExp;
 let _Sel;
 let _Self;
 let _Sendable;
+let _SerializationFeature;
 let _SerializerProvider;
 let _SimpleModule;
 let _Standards;
 let _StdDeserializer;
 let _StdSerializer;
+let _TextNode;
 let _TimeOnly;
 let _TimeOnlyConverter;
 let _TimeZone;
@@ -347,8 +357,12 @@ let _XorEq;
 let _Yield;
 _Any = PropTypes.shape({
 });
+_ArrayNode = PropTypes.shape({
+});
 _Bool = PropTypes.shape({
 });
+_BooleanNode = PropTypes.shape({
+});
 _Calendar = PropTypes.shape({
 });
 _Class = PropTypes.shape({
@@ -375,6 +389,10 @@ _Decoder = PropTypes.shape({
 });
 _DecodingError = PropTypes.shape({
 });
+_DeserializationFeature = PropTypes.shape({
+});
+_DoubleNode = PropTypes.shape({
+});
 _Encoder = PropTypes.shape({
 });
 _EnumValues = PropTypes.shape({
@@ -391,6 +409,8 @@ _Hasher = PropTypes.shape({
 });
 _Imp = PropTypes.shape({
 });
+_IntNode = PropTypes.shape({
+});
 _ISODateTimeOffsetConverter = PropTypes.shape({
 });
 _JSONAny = PropTypes.shape({
@@ -417,6 +437,8 @@ _JSONTokenType = PropTypes.shape({
 });
 _Locale = PropTypes.shape({
 });
+_LongNode = PropTypes.shape({
+});
 _MapEntry = PropTypes.shape({
 });
 _No = PropTypes.shape({
@@ -431,8 +453,12 @@ _Null = PropTypes.shape({
 });
 _None = PropTypes.shape({
 });
+_NullNode = PropTypes.shape({
+});
 _ObjectMapper = PropTypes.shape({
 });
+_ObjectNode = PropTypes.shape({
+});
 _Protocol = PropTypes.shape({
 });
 _RegExp = PropTypes.shape({
@@ -443,6 +469,8 @@ _Self = PropTypes.shape({
 });
 _Sendable = PropTypes.shape({
 });
+_SerializationFeature = PropTypes.shape({
+});
 _SerializerProvider = PropTypes.shape({
 });
 _SimpleModule = PropTypes.shape({
@@ -453,6 +481,8 @@ _StdDeserializer = PropTypes.shape({
 });
 _StdSerializer = PropTypes.shape({
 });
+_TextNode = PropTypes.shape({
+});
 _TimeOnly = PropTypes.shape({
 });
 _TimeOnlyConverter = PropTypes.shape({
@@ -1022,6 +1052,7 @@ _TopLevel = PropTypes.shape({
     "any": PropTypes.oneOfType([_AnyClass, PropTypes.number, PropTypes.oneOf([null])]),
     "Any": PropTypes.oneOfType([_Any, PropTypes.number, PropTypes.oneOf([null])]),
     "array": PropTypes.oneOfType([_Array, PropTypes.number, PropTypes.oneOf([null])]),
+    "ArrayNode": PropTypes.oneOfType([_ArrayNode, PropTypes.number, PropTypes.oneOf([null])]),
     "as": PropTypes.oneOfType([_As, PropTypes.number, PropTypes.oneOf([null])]),
     "asm": PropTypes.oneOfType([_ASM, PropTypes.number, PropTypes.oneOf([null])]),
     "assert": PropTypes.oneOfType([_Assert, PropTypes.number, PropTypes.oneOf([null])]),
@@ -1040,6 +1071,7 @@ _TopLevel = PropTypes.shape({
     "BOOL": PropTypes.oneOfType([_Bool, PropTypes.number, PropTypes.oneOf([null])]),
     "bool": PropTypes.oneOfType([_UnionBoolBool, PropTypes.number, PropTypes.oneOf([null])]),
     "boolean": PropTypes.oneOfType([_Boolean, PropTypes.number, PropTypes.oneOf([null])]),
+    "BooleanNode": PropTypes.oneOfType([_BooleanNode, PropTypes.number, PropTypes.oneOf([null])]),
     "break": PropTypes.oneOfType([_Break, PropTypes.number, PropTypes.oneOf([null])]),
     "bycopy": PropTypes.oneOfType([_Bycopy, PropTypes.number, PropTypes.oneOf([null])]),
     "byref": PropTypes.oneOfType([_Byref, PropTypes.number, PropTypes.oneOf([null])]),
@@ -1094,11 +1126,13 @@ _TopLevel = PropTypes.shape({
     "del": PropTypes.oneOfType([_Del, PropTypes.number, PropTypes.oneOf([null])]),
     "delegate": PropTypes.oneOfType([_Delegate, PropTypes.number, PropTypes.oneOf([null])]),
     "delete": PropTypes.oneOfType([_Delete, PropTypes.number, PropTypes.oneOf([null])]),
+    "DeserializationFeature": PropTypes.oneOfType([_DeserializationFeature, PropTypes.number, PropTypes.oneOf([null])]),
     "dict": PropTypes.oneOfType([_Dict, PropTypes.number, PropTypes.oneOf([null])]),
     "dictionary": PropTypes.oneOfType([_Dictionary, PropTypes.number, PropTypes.oneOf([null])]),
     "didSet": PropTypes.oneOfType([_DidSet, PropTypes.number, PropTypes.oneOf([null])]),
     "do": PropTypes.oneOfType([_Do, PropTypes.number, PropTypes.oneOf([null])]),
     "double": PropTypes.oneOfType([_Double, PropTypes.number, PropTypes.oneOf([null])]),
+    "DoubleNode": PropTypes.oneOfType([_DoubleNode, PropTypes.number, PropTypes.oneOf([null])]),
     "dummy": PropTypes.oneOfType([PropTypes.number, PropTypes.oneOf([null])]),
     "dynamic": PropTypes.oneOfType([_Dynamic, PropTypes.number, PropTypes.oneOf([null])]),
     "dynamic_cast": PropTypes.oneOfType([_DynamicCast, PropTypes.number, PropTypes.oneOf([null])]),
@@ -1160,6 +1194,7 @@ _TopLevel = PropTypes.shape({
     "int": PropTypes.oneOfType([_Int, PropTypes.number, PropTypes.oneOf([null])]),
     "interface": PropTypes.oneOfType([_Interface, PropTypes.number, PropTypes.oneOf([null])]),
     "internal": PropTypes.oneOfType([_Internal, PropTypes.number, PropTypes.oneOf([null])]),
+    "IntNode": PropTypes.oneOfType([_IntNode, PropTypes.number, PropTypes.oneOf([null])]),
     "is": PropTypes.oneOfType([_Is, PropTypes.number, PropTypes.oneOf([null])]),
     "IsoDateTimeOffsetConverter": PropTypes.oneOfType([_ISODateTimeOffsetConverter, PropTypes.number, PropTypes.oneOf([null])]),
     "iterable": PropTypes.oneOfType([_Iterable, PropTypes.number, PropTypes.oneOf([null])]),
@@ -1190,6 +1225,7 @@ _TopLevel = PropTypes.shape({
     "Locale": PropTypes.oneOfType([_Locale, PropTypes.number, PropTypes.oneOf([null])]),
     "lock": PropTypes.oneOfType([_Lock, PropTypes.number, PropTypes.oneOf([null])]),
     "long": PropTypes.oneOfType([_Long, PropTypes.number, PropTypes.oneOf([null])]),
+    "LongNode": PropTypes.oneOfType([_LongNode, PropTypes.number, PropTypes.oneOf([null])]),
     "map": PropTypes.oneOfType([_Map, PropTypes.number, PropTypes.oneOf([null])]),
     "MapEntry": PropTypes.oneOfType([_MapEntry, PropTypes.number, PropTypes.oneOf([null])]),
     "metadata_property_handling": PropTypes.oneOfType([_MetadataPropertyHandling, PropTypes.number, PropTypes.oneOf([null])]),
@@ -1216,10 +1252,12 @@ _TopLevel = PropTypes.shape({
     "NSString": PropTypes.oneOfType([_NSString, PropTypes.number, PropTypes.oneOf([null])]),
     "NULL": PropTypes.oneOfType([_Null, PropTypes.number, PropTypes.oneOf([null])]),
     "null": PropTypes.oneOfType([_NullClass, PropTypes.number, PropTypes.oneOf([null])]),
+    "NullNode": PropTypes.oneOfType([_NullNode, PropTypes.number, PropTypes.oneOf([null])]),
     "nullptr": PropTypes.oneOfType([_Nullptr, PropTypes.number, PropTypes.oneOf([null])]),
     "number": PropTypes.oneOfType([_Number, PropTypes.number, PropTypes.oneOf([null])]),
     "object": PropTypes.oneOfType([_Object, PropTypes.number, PropTypes.oneOf([null])]),
     "ObjectMapper": PropTypes.oneOfType([_ObjectMapper, PropTypes.number, PropTypes.oneOf([null])]),
+    "ObjectNode": PropTypes.oneOfType([_ObjectNode, PropTypes.number, PropTypes.oneOf([null])]),
     "of": PropTypes.oneOfType([_Of, PropTypes.number, PropTypes.oneOf([null])]),
     "oneway": PropTypes.oneOfType([_Oneway, PropTypes.number, PropTypes.oneOf([null])]),
     "open": PropTypes.oneOfType([_Open, PropTypes.number, PropTypes.oneOf([null])]),
@@ -1270,6 +1308,7 @@ _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])]),
+    "SerializationFeature": PropTypes.oneOfType([_SerializationFeature, PropTypes.number, PropTypes.oneOf([null])]),
     "serialize": PropTypes.oneOfType([_Serialize, PropTypes.number, PropTypes.oneOf([null])]),
     "SerializerProvider": PropTypes.oneOfType([_SerializerProvider, PropTypes.number, PropTypes.oneOf([null])]),
     "set": PropTypes.oneOfType([_Set, PropTypes.number, PropTypes.oneOf([null])]),
@@ -1294,6 +1333,7 @@ _TopLevel = PropTypes.shape({
     "synchronized": PropTypes.oneOfType([_Synchronized, PropTypes.number, PropTypes.oneOf([null])]),
     "system": PropTypes.oneOfType([_System, PropTypes.number, PropTypes.oneOf([null])]),
     "template": PropTypes.oneOfType([_Template, PropTypes.number, PropTypes.oneOf([null])]),
+    "TextNode": PropTypes.oneOfType([_TextNode, PropTypes.number, PropTypes.oneOf([null])]),
     "then": PropTypes.oneOfType([_Then, PropTypes.number, PropTypes.oneOf([null])]),
     "this": PropTypes.oneOfType([_This, PropTypes.number, PropTypes.oneOf([null])]),
     "thread_local": PropTypes.oneOfType([_ThreadLocal, 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..eaaa45e 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
@@ -39,6 +39,7 @@ enum class EnumEnum(val value: String) {
     AndEq("and_eq"),
     EnumAny("any"),
     PurpleAny("Any"),
+    ArrayNode("ArrayNode"),
     EnumArray("array"),
     As("as"),
     ASM("asm"),
@@ -58,6 +59,7 @@ enum class EnumEnum(val value: String) {
     EnumBOOL("BOOL"),
     EnumBool("bool"),
     EnumBoolean("boolean"),
+    BooleanNode("BooleanNode"),
     Break("break"),
     Bycopy("bycopy"),
     Byref("byref"),
@@ -101,6 +103,7 @@ enum class EnumEnum(val value: String) {
     Debugger("debugger"),
     Decimal("decimal"),
     Declare("declare"),
+    DeserializationFeature("DeserializationFeature"),
     Decltype("decltype"),
     DecodeString("decode_string"),
     Decoder("Decoder"),
@@ -117,6 +120,7 @@ enum class EnumEnum(val value: String) {
     DidSet("didSet"),
     Do("do"),
     EnumDouble("double"),
+    DoubleNode("DoubleNode"),
     Dynamic("dynamic"),
     DynamicCast("dynamic_cast"),
     Elif("elif"),
@@ -175,6 +179,7 @@ enum class EnumEnum(val value: String) {
     Inout("inout"),
     Instanceof("instanceof"),
     EnumInt("int"),
+    IntNode("IntNode"),
     Interface("interface"),
     Internal("internal"),
     ISODateTimeOffsetConverter("IsoDateTimeOffsetConverter"),
@@ -204,6 +209,7 @@ enum class EnumEnum(val value: String) {
     Left("left"),
     Let("let"),
     EnumList("list"),
+    LongNode("LongNode"),
     Locale("Locale"),
     Lock("lock"),
     EnumLong("long"),
@@ -218,6 +224,7 @@ enum class EnumEnum(val value: String) {
     New("new"),
     Newtonsoft("newtonsoft"),
     Nil("nil"),
+    NullNode("NullNode"),
     No("NO"),
     Noexcept("noexcept"),
     Nonatomic("nonatomic"),
@@ -236,6 +243,7 @@ enum class EnumEnum(val value: String) {
     Nullptr("nullptr"),
     Number("number"),
     Object("object"),
+    ObjectNode("ObjectNode"),
     ObjectMapper("ObjectMapper"),
     Of("of"),
     Oneway("oneway"),
@@ -288,6 +296,7 @@ enum class EnumEnum(val value: String) {
     EnumSelf("self"),
     Sendable("Sendable"),
     Serialize("serialize"),
+    SerializationFeature("SerializationFeature"),
     SerializerProvider("SerializerProvider"),
     Set("set"),
     EnumShort("short"),
@@ -313,6 +322,7 @@ enum class EnumEnum(val value: String) {
     Template("template"),
     Then("then"),
     This("this"),
+    TextNode("TextNode"),
     ThreadLocal("thread_local"),
     Throw("throw"),
     Throws("throws"),
@@ -375,6 +385,7 @@ enum class EnumEnum(val value: String) {
             "and_eq"                     -> AndEq
             "any"                        -> EnumAny
             "Any"                        -> PurpleAny
+            "ArrayNode"                  -> ArrayNode
             "array"                      -> EnumArray
             "as"                         -> As
             "asm"                        -> ASM
@@ -394,6 +405,7 @@ enum class EnumEnum(val value: String) {
             "BOOL"                       -> EnumBOOL
             "bool"                       -> EnumBool
             "boolean"                    -> EnumBoolean
+            "BooleanNode"                -> BooleanNode
             "break"                      -> Break
             "bycopy"                     -> Bycopy
             "byref"                      -> Byref
@@ -437,6 +449,7 @@ enum class EnumEnum(val value: String) {
             "debugger"                   -> Debugger
             "decimal"                    -> Decimal
             "declare"                    -> Declare
+            "DeserializationFeature"     -> DeserializationFeature
             "decltype"                   -> Decltype
             "decode_string"              -> DecodeString
             "Decoder"                    -> Decoder
@@ -453,6 +466,7 @@ enum class EnumEnum(val value: String) {
             "didSet"                     -> DidSet
             "do"                         -> Do
             "double"                     -> EnumDouble
+            "DoubleNode"                 -> DoubleNode
             "dynamic"                    -> Dynamic
             "dynamic_cast"               -> DynamicCast
             "elif"                       -> Elif
@@ -511,6 +525,7 @@ enum class EnumEnum(val value: String) {
             "inout"                      -> Inout
             "instanceof"                 -> Instanceof
             "int"                        -> EnumInt
+            "IntNode"                    -> IntNode
             "interface"                  -> Interface
             "internal"                   -> Internal
             "IsoDateTimeOffsetConverter" -> ISODateTimeOffsetConverter
@@ -540,6 +555,7 @@ enum class EnumEnum(val value: String) {
             "left"                       -> Left
             "let"                        -> Let
             "list"                       -> EnumList
+            "LongNode"                   -> LongNode
             "Locale"                     -> Locale
             "lock"                       -> Lock
             "long"                       -> EnumLong
@@ -554,6 +570,7 @@ enum class EnumEnum(val value: String) {
             "new"                        -> New
             "newtonsoft"                 -> Newtonsoft
             "nil"                        -> Nil
+            "NullNode"                   -> NullNode
             "NO"                         -> No
             "noexcept"                   -> Noexcept
             "nonatomic"                  -> Nonatomic
@@ -572,6 +589,7 @@ enum class EnumEnum(val value: String) {
             "nullptr"                    -> Nullptr
             "number"                     -> Number
             "object"                     -> Object
+            "ObjectNode"                 -> ObjectNode
             "ObjectMapper"               -> ObjectMapper
             "of"                         -> Of
             "oneway"                     -> Oneway
@@ -624,6 +642,7 @@ enum class EnumEnum(val value: String) {
             "self"                       -> EnumSelf
             "Sendable"                   -> Sendable
             "serialize"                  -> Serialize
+            "SerializationFeature"       -> SerializationFeature
             "SerializerProvider"         -> SerializerProvider
             "set"                        -> Set
             "short"                      -> EnumShort
@@ -649,6 +668,7 @@ enum class EnumEnum(val value: String) {
             "template"                   -> Template
             "then"                       -> Then
             "this"                       -> This
+            "TextNode"                   -> TextNode
             "thread_local"               -> ThreadLocal
             "throw"                      -> Throw
             "throws"                     -> Throws
diff --git a/base/schema-kotlin-jackson/test/inputs/schema/direct-union.schema/default/TopLevel.kt b/head/schema-kotlin-jackson/test/inputs/schema/direct-union.schema/default/TopLevel.kt
index 62162a2..0e0f938 100644
--- a/base/schema-kotlin-jackson/test/inputs/schema/direct-union.schema/default/TopLevel.kt
+++ b/head/schema-kotlin-jackson/test/inputs/schema/direct-union.schema/default/TopLevel.kt
@@ -33,8 +33,18 @@ val mapper = jacksonObjectMapper().apply {
 }
 
 data class TopLevel (
+    val arrayNode: ArrayNodeClass? = null,
+    val booleanNode: BooleanNodeClass? = null,
+    val doubleNode: DoubleNodeClass? = null,
+    val intNode: IntNodeClass? = null,
+    val longNode: LongNodeClass? = null,
+    val nullNode: NullNodeClass? = null,
+    val objectNode: ObjectNodeClass? = null,
+
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val stuff: Map<String, Thing>
+    val stuff: Map<String, Thing>,
+
+    val textNode: TextNodeClass? = null
 ) {
     fun toJson() = mapper.writeValueAsString(this)
 
@@ -43,6 +53,20 @@ data class TopLevel (
     }
 }
 
+typealias ArrayNodeClass = ObjectNode
+
+typealias BooleanNodeClass = ObjectNode
+
+typealias DoubleNodeClass = ObjectNode
+
+typealias IntNodeClass = ObjectNode
+
+typealias LongNodeClass = ObjectNode
+
+typealias NullNodeClass = ObjectNode
+
+typealias ObjectNodeClass = ObjectNode
+
 data class Thing (
     val optional: Anything? = null,
 
@@ -82,3 +106,5 @@ sealed class Anything {
         }
     }
 }
+
+typealias TextNodeClass = ObjectNode
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..9584bc4 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
@@ -52,6 +52,7 @@ enum class EnumEnum(val value: String) {
     AndEq("and_eq"),
     EnumAny("any"),
     PurpleAny("Any"),
+    EnumArrayNode("ArrayNode"),
     EnumArray("array"),
     As("as"),
     ASM("asm"),
@@ -71,6 +72,7 @@ enum class EnumEnum(val value: String) {
     EnumBOOL("BOOL"),
     EnumBool("bool"),
     EnumBoolean("boolean"),
+    EnumBooleanNode("BooleanNode"),
     Break("break"),
     Bycopy("bycopy"),
     Byref("byref"),
@@ -114,6 +116,7 @@ enum class EnumEnum(val value: String) {
     Debugger("debugger"),
     Decimal("decimal"),
     Declare("declare"),
+    EnumDeserializationFeature("DeserializationFeature"),
     Decltype("decltype"),
     DecodeString("decode_string"),
     Decoder("Decoder"),
@@ -130,6 +133,7 @@ enum class EnumEnum(val value: String) {
     DidSet("didSet"),
     Do("do"),
     EnumDouble("double"),
+    EnumDoubleNode("DoubleNode"),
     Dynamic("dynamic"),
     DynamicCast("dynamic_cast"),
     Elif("elif"),
@@ -188,6 +192,7 @@ enum class EnumEnum(val value: String) {
     Inout("inout"),
     Instanceof("instanceof"),
     EnumInt("int"),
+    EnumIntNode("IntNode"),
     Interface("interface"),
     Internal("internal"),
     ISODateTimeOffsetConverter("IsoDateTimeOffsetConverter"),
@@ -217,6 +222,7 @@ enum class EnumEnum(val value: String) {
     Left("left"),
     Let("let"),
     EnumList("list"),
+    EnumLongNode("LongNode"),
     Locale("Locale"),
     Lock("lock"),
     EnumLong("long"),
@@ -231,6 +237,7 @@ enum class EnumEnum(val value: String) {
     New("new"),
     Newtonsoft("newtonsoft"),
     Nil("nil"),
+    EnumNullNode("NullNode"),
     No("NO"),
     Noexcept("noexcept"),
     Nonatomic("nonatomic"),
@@ -249,6 +256,7 @@ enum class EnumEnum(val value: String) {
     Nullptr("nullptr"),
     Number("number"),
     Object("object"),
+    EnumObjectNode("ObjectNode"),
     EnumObjectMapper("ObjectMapper"),
     Of("of"),
     Oneway("oneway"),
@@ -301,6 +309,7 @@ enum class EnumEnum(val value: String) {
     EnumSelf("self"),
     Sendable("Sendable"),
     Serialize("serialize"),
+    EnumSerializationFeature("SerializationFeature"),
     EnumSerializerProvider("SerializerProvider"),
     Set("set"),
     EnumShort("short"),
@@ -326,6 +335,7 @@ enum class EnumEnum(val value: String) {
     Template("template"),
     Then("then"),
     This("this"),
+    EnumTextNode("TextNode"),
     ThreadLocal("thread_local"),
     Throw("throw"),
     Throws("throws"),
@@ -388,6 +398,7 @@ enum class EnumEnum(val value: String) {
             "and_eq"                     -> AndEq
             "any"                        -> EnumAny
             "Any"                        -> PurpleAny
+            "ArrayNode"                  -> EnumArrayNode
             "array"                      -> EnumArray
             "as"                         -> As
             "asm"                        -> ASM
@@ -407,6 +418,7 @@ enum class EnumEnum(val value: String) {
             "BOOL"                       -> EnumBOOL
             "bool"                       -> EnumBool
             "boolean"                    -> EnumBoolean
+            "BooleanNode"                -> EnumBooleanNode
             "break"                      -> Break
             "bycopy"                     -> Bycopy
             "byref"                      -> Byref
@@ -450,6 +462,7 @@ enum class EnumEnum(val value: String) {
             "debugger"                   -> Debugger
             "decimal"                    -> Decimal
             "declare"                    -> Declare
+            "DeserializationFeature"     -> EnumDeserializationFeature
             "decltype"                   -> Decltype
             "decode_string"              -> DecodeString
             "Decoder"                    -> Decoder
@@ -466,6 +479,7 @@ enum class EnumEnum(val value: String) {
             "didSet"                     -> DidSet
             "do"                         -> Do
             "double"                     -> EnumDouble
+            "DoubleNode"                 -> EnumDoubleNode
             "dynamic"                    -> Dynamic
             "dynamic_cast"               -> DynamicCast
             "elif"                       -> Elif
@@ -524,6 +538,7 @@ enum class EnumEnum(val value: String) {
             "inout"                      -> Inout
             "instanceof"                 -> Instanceof
             "int"                        -> EnumInt
+            "IntNode"                    -> EnumIntNode
             "interface"                  -> Interface
             "internal"                   -> Internal
             "IsoDateTimeOffsetConverter" -> ISODateTimeOffsetConverter
@@ -553,6 +568,7 @@ enum class EnumEnum(val value: String) {
             "left"                       -> Left
             "let"                        -> Let
             "list"                       -> EnumList
+            "LongNode"                   -> EnumLongNode
             "Locale"                     -> Locale
             "lock"                       -> Lock
             "long"                       -> EnumLong
@@ -567,6 +583,7 @@ enum class EnumEnum(val value: String) {
             "new"                        -> New
             "newtonsoft"                 -> Newtonsoft
             "nil"                        -> Nil
+            "NullNode"                   -> EnumNullNode
             "NO"                         -> No
             "noexcept"                   -> Noexcept
             "nonatomic"                  -> Nonatomic
@@ -585,6 +602,7 @@ enum class EnumEnum(val value: String) {
             "nullptr"                    -> Nullptr
             "number"                     -> Number
             "object"                     -> Object
+            "ObjectNode"                 -> EnumObjectNode
             "ObjectMapper"               -> EnumObjectMapper
             "of"                         -> Of
             "oneway"                     -> Oneway
@@ -637,6 +655,7 @@ enum class EnumEnum(val value: String) {
             "self"                       -> EnumSelf
             "Sendable"                   -> Sendable
             "serialize"                  -> Serialize
+            "SerializationFeature"       -> EnumSerializationFeature
             "SerializerProvider"         -> EnumSerializerProvider
             "set"                        -> Set
             "short"                      -> EnumShort
@@ -662,6 +681,7 @@ enum class EnumEnum(val value: String) {
             "template"                   -> Template
             "then"                       -> Then
             "this"                       -> This
+            "TextNode"                   -> EnumTextNode
             "thread_local"               -> ThreadLocal
             "throw"                      -> Throw
             "throws"                     -> Throws
diff --git a/base/schema-kotlinx/test/inputs/schema/direct-union.schema/default/TopLevel.kt b/head/schema-kotlinx/test/inputs/schema/direct-union.schema/default/TopLevel.kt
index d5abeff..113445c 100644
--- a/base/schema-kotlinx/test/inputs/schema/direct-union.schema/default/TopLevel.kt
+++ b/head/schema-kotlinx/test/inputs/schema/direct-union.schema/default/TopLevel.kt
@@ -12,9 +12,38 @@ import kotlinx.serialization.encoding.*
 
 @Serializable
 data class TopLevel (
-    val stuff: Map<String, Thing>
+    val arrayNode: ArrayNode? = null,
+    val booleanNode: BooleanNode? = null,
+    val doubleNode: DoubleNode? = null,
+    val intNode: IntNode? = null,
+    val longNode: LongNode? = null,
+    val nullNode: NullNode? = null,
+    val objectNode: ObjectNode? = null,
+    val stuff: Map<String, Thing>,
+    val textNode: TextNode? = null
 )
 
+@Serializable
+class ArrayNode()
+
+@Serializable
+class BooleanNode()
+
+@Serializable
+class DoubleNode()
+
+@Serializable
+class IntNode()
+
+@Serializable
+class LongNode()
+
+@Serializable
+class NullNode()
+
+@Serializable
+class ObjectNode()
+
 @Serializable
 data class Thing (
     val optional: JsonElement? = null,
@@ -22,3 +51,6 @@ data class Thing (
 )
 
 typealias Anything = JsonElement
+
+@Serializable
+class TextNode()
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..835d7de 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
@@ -28,6 +28,7 @@ enum class EnumEnum(val value: String) {
     @SerialName("and_eq") AndEq("and_eq"),
     @SerialName("any") EnumAny("any"),
     @SerialName("Any") PurpleAny("Any"),
+    @SerialName("ArrayNode") ArrayNode("ArrayNode"),
     @SerialName("array") EnumArray("array"),
     @SerialName("as") As("as"),
     @SerialName("asm") ASM("asm"),
@@ -47,6 +48,7 @@ enum class EnumEnum(val value: String) {
     @SerialName("BOOL") EnumBOOL("BOOL"),
     @SerialName("bool") EnumBool("bool"),
     @SerialName("boolean") EnumBoolean("boolean"),
+    @SerialName("BooleanNode") BooleanNode("BooleanNode"),
     @SerialName("break") Break("break"),
     @SerialName("bycopy") Bycopy("bycopy"),
     @SerialName("byref") Byref("byref"),
@@ -90,6 +92,7 @@ enum class EnumEnum(val value: String) {
     @SerialName("debugger") Debugger("debugger"),
     @SerialName("decimal") Decimal("decimal"),
     @SerialName("declare") Declare("declare"),
+    @SerialName("DeserializationFeature") DeserializationFeature("DeserializationFeature"),
     @SerialName("decltype") Decltype("decltype"),
     @SerialName("decode_string") DecodeString("decode_string"),
     @SerialName("Decoder") EnumDecoder("Decoder"),
@@ -106,6 +109,7 @@ enum class EnumEnum(val value: String) {
     @SerialName("didSet") DidSet("didSet"),
     @SerialName("do") Do("do"),
     @SerialName("double") EnumDouble("double"),
+    @SerialName("DoubleNode") DoubleNode("DoubleNode"),
     @SerialName("dynamic") Dynamic("dynamic"),
     @SerialName("dynamic_cast") DynamicCast("dynamic_cast"),
     @SerialName("elif") Elif("elif"),
@@ -164,6 +168,7 @@ enum class EnumEnum(val value: String) {
     @SerialName("inout") Inout("inout"),
     @SerialName("instanceof") Instanceof("instanceof"),
     @SerialName("int") EnumInt("int"),
+    @SerialName("IntNode") IntNode("IntNode"),
     @SerialName("interface") Interface("interface"),
     @SerialName("internal") Internal("internal"),
     @SerialName("IsoDateTimeOffsetConverter") ISODateTimeOffsetConverter("IsoDateTimeOffsetConverter"),
@@ -193,6 +198,7 @@ enum class EnumEnum(val value: String) {
     @SerialName("left") Left("left"),
     @SerialName("let") Let("let"),
     @SerialName("list") EnumList("list"),
+    @SerialName("LongNode") LongNode("LongNode"),
     @SerialName("Locale") Locale("Locale"),
     @SerialName("lock") Lock("lock"),
     @SerialName("long") EnumLong("long"),
@@ -207,6 +213,7 @@ enum class EnumEnum(val value: String) {
     @SerialName("new") New("new"),
     @SerialName("newtonsoft") Newtonsoft("newtonsoft"),
     @SerialName("nil") Nil("nil"),
+    @SerialName("NullNode") NullNode("NullNode"),
     @SerialName("NO") No("NO"),
     @SerialName("noexcept") Noexcept("noexcept"),
     @SerialName("nonatomic") Nonatomic("nonatomic"),
@@ -225,6 +232,7 @@ enum class EnumEnum(val value: String) {
     @SerialName("nullptr") Nullptr("nullptr"),
     @SerialName("number") Number("number"),
     @SerialName("object") Object("object"),
+    @SerialName("ObjectNode") ObjectNode("ObjectNode"),
     @SerialName("ObjectMapper") ObjectMapper("ObjectMapper"),
     @SerialName("of") Of("of"),
     @SerialName("oneway") Oneway("oneway"),
@@ -277,6 +285,7 @@ enum class EnumEnum(val value: String) {
     @SerialName("self") EnumSelf("self"),
     @SerialName("Sendable") Sendable("Sendable"),
     @SerialName("serialize") Serialize("serialize"),
+    @SerialName("SerializationFeature") SerializationFeature("SerializationFeature"),
     @SerialName("SerializerProvider") SerializerProvider("SerializerProvider"),
     @SerialName("set") Set("set"),
     @SerialName("short") EnumShort("short"),
@@ -302,6 +311,7 @@ enum class EnumEnum(val value: String) {
     @SerialName("template") Template("template"),
     @SerialName("then") Then("then"),
     @SerialName("this") This("this"),
+    @SerialName("TextNode") TextNode("TextNode"),
     @SerialName("thread_local") ThreadLocal("thread_local"),
     @SerialName("throw") Throw("throw"),
     @SerialName("throws") Throws("throws"),
diff --git a/base/schema-objective-c/test/inputs/schema/direct-union.schema/default/QTTopLevel.h b/head/schema-objective-c/test/inputs/schema/direct-union.schema/default/QTTopLevel.h
index 2c784f7..4899987 100644
--- a/base/schema-objective-c/test/inputs/schema/direct-union.schema/default/QTTopLevel.h
+++ b/head/schema-objective-c/test/inputs/schema/direct-union.schema/default/QTTopLevel.h
@@ -6,7 +6,15 @@
 #import <Foundation/Foundation.h>
 
 @class QTTopLevel;
+@class QTArrayNode;
+@class QTBooleanNode;
+@class QTDoubleNode;
+@class QTIntNode;
+@class QTLongNode;
+@class QTNullNode;
+@class QTObjectNode;
 @class QTThing;
+@class QTTextNode;
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -20,7 +28,15 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 #pragma mark - Object interfaces
 
 @interface QTTopLevel : NSObject
-@property (nonatomic, copy) NSDictionary<NSString *, QTThing *> *stuff;
+@property (nonatomic, nullable, strong) QTArrayNode *arrayNode;
+@property (nonatomic, nullable, strong) QTBooleanNode *booleanNode;
+@property (nonatomic, nullable, strong) QTDoubleNode *doubleNode;
+@property (nonatomic, nullable, strong) QTIntNode *intNode;
+@property (nonatomic, nullable, strong) QTLongNode *longNode;
+@property (nonatomic, nullable, strong) QTNullNode *nullNode;
+@property (nonatomic, nullable, strong) QTObjectNode *objectNode;
+@property (nonatomic, copy)             NSDictionary<NSString *, QTThing *> *stuff;
+@property (nonatomic, nullable, strong) QTTextNode *textNode;
 
 + (_Nullable instancetype)fromJSON:(NSString *)json encoding:(NSStringEncoding)encoding error:(NSError *_Nullable *)error;
 + (_Nullable instancetype)fromData:(NSData *)data error:(NSError *_Nullable *)error;
@@ -28,9 +44,33 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 - (NSData *_Nullable)toData:(NSError *_Nullable *)error;
 @end
 
+@interface QTArrayNode : NSObject
+@end
+
+@interface QTBooleanNode : NSObject
+@end
+
+@interface QTDoubleNode : NSObject
+@end
+
+@interface QTIntNode : NSObject
+@end
+
+@interface QTLongNode : NSObject
+@end
+
+@interface QTNullNode : NSObject
+@end
+
+@interface QTObjectNode : NSObject
+@end
+
 @interface QTThing : NSObject
 @property (nonatomic, nullable, copy) id optional;
 @property (nonatomic, nullable, copy) id required;
 @end
 
+@interface QTTextNode : NSObject
+@end
+
 NS_ASSUME_NONNULL_END
diff --git a/base/schema-objective-c/test/inputs/schema/direct-union.schema/default/QTTopLevel.m b/head/schema-objective-c/test/inputs/schema/direct-union.schema/default/QTTopLevel.m
index db3ad54..9fb40d0 100644
--- a/base/schema-objective-c/test/inputs/schema/direct-union.schema/default/QTTopLevel.m
+++ b/head/schema-objective-c/test/inputs/schema/direct-union.schema/default/QTTopLevel.m
@@ -13,11 +13,51 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTArrayNode (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
+@interface QTBooleanNode (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
+@interface QTDoubleNode (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
+@interface QTIntNode (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
+@interface QTLongNode (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
+@interface QTNullNode (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
+@interface QTObjectNode (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTThing (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTTextNode (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 static id map(id collection, id (^f)(id value)) {
     id result = nil;
     if ([collection isKindOfClass:NSArray.class]) {
@@ -71,7 +111,15 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
+        @"arrayNode": @"arrayNode",
+        @"booleanNode": @"booleanNode",
+        @"doubleNode": @"doubleNode",
+        @"intNode": @"intNode",
+        @"longNode": @"longNode",
+        @"nullNode": @"nullNode",
+        @"objectNode": @"objectNode",
         @"stuff": @"stuff",
+        @"textNode": @"textNode",
     };
 }
 
@@ -95,7 +143,23 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
     if (self = [super init]) {
         if (![dict[@"stuff"] isKindOfClass:NSDictionary.class]) return nil;
         [self setValuesForKeysWithDictionary:dict];
+        _arrayNode = [QTArrayNode fromJSONDictionary:(id)_arrayNode];
+        if (!_arrayNode && dict[@"arrayNode"] && ![dict[@"arrayNode"] isKindOfClass:NSNull.class]) return nil;
+        _booleanNode = [QTBooleanNode fromJSONDictionary:(id)_booleanNode];
+        if (!_booleanNode && dict[@"booleanNode"] && ![dict[@"booleanNode"] isKindOfClass:NSNull.class]) return nil;
+        _doubleNode = [QTDoubleNode fromJSONDictionary:(id)_doubleNode];
+        if (!_doubleNode && dict[@"doubleNode"] && ![dict[@"doubleNode"] isKindOfClass:NSNull.class]) return nil;
+        _intNode = [QTIntNode fromJSONDictionary:(id)_intNode];
+        if (!_intNode && dict[@"intNode"] && ![dict[@"intNode"] isKindOfClass:NSNull.class]) return nil;
+        _longNode = [QTLongNode fromJSONDictionary:(id)_longNode];
+        if (!_longNode && dict[@"longNode"] && ![dict[@"longNode"] isKindOfClass:NSNull.class]) return nil;
+        _nullNode = [QTNullNode fromJSONDictionary:(id)_nullNode];
+        if (!_nullNode && dict[@"nullNode"] && ![dict[@"nullNode"] isKindOfClass:NSNull.class]) return nil;
+        _objectNode = [QTObjectNode fromJSONDictionary:(id)_objectNode];
+        if (!_objectNode && dict[@"objectNode"] && ![dict[@"objectNode"] isKindOfClass:NSNull.class]) return nil;
         _stuff = map(_stuff, λ(id x, [QTThing fromJSONDictionary:x]));
+        _textNode = [QTTextNode fromJSONDictionary:(id)_textNode];
+        if (!_textNode && dict[@"textNode"] && ![dict[@"textNode"] isKindOfClass:NSNull.class]) return nil;
     }
     return self;
 }
@@ -117,7 +181,15 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
     id dict = [[self dictionaryWithValuesForKeys:QTTopLevel.properties.allValues] mutableCopy];
 
     [dict addEntriesFromDictionary:@{
+        @"arrayNode": NSNullify([_arrayNode isKindOfClass:NSNull.class] ? nil : [_arrayNode JSONDictionary]),
+        @"booleanNode": NSNullify([_booleanNode isKindOfClass:NSNull.class] ? nil : [_booleanNode JSONDictionary]),
+        @"doubleNode": NSNullify([_doubleNode isKindOfClass:NSNull.class] ? nil : [_doubleNode JSONDictionary]),
+        @"intNode": NSNullify([_intNode isKindOfClass:NSNull.class] ? nil : [_intNode JSONDictionary]),
+        @"longNode": NSNullify([_longNode isKindOfClass:NSNull.class] ? nil : [_longNode JSONDictionary]),
+        @"nullNode": NSNullify([_nullNode isKindOfClass:NSNull.class] ? nil : [_nullNode JSONDictionary]),
+        @"objectNode": NSNullify([_objectNode isKindOfClass:NSNull.class] ? nil : [_objectNode JSONDictionary]),
         @"stuff": map(_stuff, λ(id x, [x JSONDictionary])),
+        @"textNode": NSNullify([_textNode isKindOfClass:NSNull.class] ? nil : [_textNode JSONDictionary]),
     }];
 
     return dict;
@@ -134,6 +206,279 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTArrayNode
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTArrayNode 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 = QTArrayNode.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTArrayNode.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTArrayNode.properties.allValues];
+}
+@end
+
+@implementation QTBooleanNode
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTBooleanNode 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 = QTBooleanNode.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTBooleanNode.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTBooleanNode.properties.allValues];
+}
+@end
+
+@implementation QTDoubleNode
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTDoubleNode 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 = QTDoubleNode.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTDoubleNode.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTDoubleNode.properties.allValues];
+}
+@end
+
+@implementation QTIntNode
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTIntNode 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 = QTIntNode.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTIntNode.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTIntNode.properties.allValues];
+}
+@end
+
+@implementation QTLongNode
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTLongNode 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 = QTLongNode.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTLongNode.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTLongNode.properties.allValues];
+}
+@end
+
+@implementation QTNullNode
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTNullNode 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 = QTNullNode.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTNullNode.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTNullNode.properties.allValues];
+}
+@end
+
+@implementation QTObjectNode
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTObjectNode 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 = QTObjectNode.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTObjectNode.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTObjectNode.properties.allValues];
+}
+@end
+
 @implementation QTThing
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -176,4 +521,43 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTTextNode
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTTextNode 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 = QTTextNode.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTTextNode.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTTextNode.properties.allValues];
+}
+@end
+
 NS_ASSUME_NONNULL_END
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..6475802 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
@@ -26,6 +26,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)andEq;
 + (QTEnum *)any;
 + (QTEnum *)enumAny;
++ (QTEnum *)arrayNode;
 + (QTEnum *)array;
 + (QTEnum *)as;
 + (QTEnum *)enumASM;
@@ -45,6 +46,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)enumBOOL;
 + (QTEnum *)bool1;
 + (QTEnum *)boolean;
++ (QTEnum *)booleanNode;
 + (QTEnum *)enumBreak;
 + (QTEnum *)bycopy;
 + (QTEnum *)byref;
@@ -88,6 +90,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)debugger;
 + (QTEnum *)decimal;
 + (QTEnum *)declare;
++ (QTEnum *)deserializationFeature;
 + (QTEnum *)decltype;
 + (QTEnum *)decodeString;
 + (QTEnum *)decoder;
@@ -104,6 +107,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)didSet;
 + (QTEnum *)enumDo;
 + (QTEnum *)enumDouble;
++ (QTEnum *)doubleNode;
 + (QTEnum *)dynamic;
 + (QTEnum *)dynamicCast;
 + (QTEnum *)elif;
@@ -162,6 +166,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)inout;
 + (QTEnum *)instanceof;
 + (QTEnum *)enumInt;
++ (QTEnum *)intNode;
 + (QTEnum *)interface;
 + (QTEnum *)internal;
 + (QTEnum *)isoDateTimeOffsetConverter;
@@ -191,6 +196,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)left;
 + (QTEnum *)let;
 + (QTEnum *)list;
++ (QTEnum *)longNode;
 + (QTEnum *)locale;
 + (QTEnum *)lock;
 + (QTEnum *)enumLong;
@@ -205,6 +211,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)theNew;
 + (QTEnum *)newtonsoft;
 + (QTEnum *)enumNil;
++ (QTEnum *)nullNode;
 + (QTEnum *)no;
 + (QTEnum *)noexcept;
 + (QTEnum *)enumNonatomic;
@@ -223,6 +230,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)nullptr;
 + (QTEnum *)number;
 + (QTEnum *)object;
++ (QTEnum *)objectNode;
 + (QTEnum *)objectMapper;
 + (QTEnum *)of;
 + (QTEnum *)oneway;
@@ -275,6 +283,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)enumSelf;
 + (QTEnum *)sendable;
 + (QTEnum *)serialize;
++ (QTEnum *)serializationFeature;
 + (QTEnum *)serializerProvider;
 + (QTEnum *)set;
 + (QTEnum *)enumShort;
@@ -300,6 +309,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)template;
 + (QTEnum *)then;
 + (QTEnum *)this;
++ (QTEnum *)textNode;
 + (QTEnum *)threadLocal;
 + (QTEnum *)throw;
 + (QTEnum *)throws;
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..ce7e06e 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
@@ -29,6 +29,7 @@ NS_ASSUME_NONNULL_BEGIN
         @"and_eq": [[QTEnum alloc] initWithValue:@"and_eq"],
         @"any": [[QTEnum alloc] initWithValue:@"any"],
         @"Any": [[QTEnum alloc] initWithValue:@"Any"],
+        @"ArrayNode": [[QTEnum alloc] initWithValue:@"ArrayNode"],
         @"array": [[QTEnum alloc] initWithValue:@"array"],
         @"as": [[QTEnum alloc] initWithValue:@"as"],
         @"asm": [[QTEnum alloc] initWithValue:@"asm"],
@@ -48,6 +49,7 @@ NS_ASSUME_NONNULL_BEGIN
         @"BOOL": [[QTEnum alloc] initWithValue:@"BOOL"],
         @"bool": [[QTEnum alloc] initWithValue:@"bool"],
         @"boolean": [[QTEnum alloc] initWithValue:@"boolean"],
+        @"BooleanNode": [[QTEnum alloc] initWithValue:@"BooleanNode"],
         @"break": [[QTEnum alloc] initWithValue:@"break"],
         @"bycopy": [[QTEnum alloc] initWithValue:@"bycopy"],
         @"byref": [[QTEnum alloc] initWithValue:@"byref"],
@@ -91,6 +93,7 @@ NS_ASSUME_NONNULL_BEGIN
         @"debugger": [[QTEnum alloc] initWithValue:@"debugger"],
         @"decimal": [[QTEnum alloc] initWithValue:@"decimal"],
         @"declare": [[QTEnum alloc] initWithValue:@"declare"],
+        @"DeserializationFeature": [[QTEnum alloc] initWithValue:@"DeserializationFeature"],
         @"decltype": [[QTEnum alloc] initWithValue:@"decltype"],
         @"decode_string": [[QTEnum alloc] initWithValue:@"decode_string"],
         @"Decoder": [[QTEnum alloc] initWithValue:@"Decoder"],
@@ -107,6 +110,7 @@ NS_ASSUME_NONNULL_BEGIN
         @"didSet": [[QTEnum alloc] initWithValue:@"didSet"],
         @"do": [[QTEnum alloc] initWithValue:@"do"],
         @"double": [[QTEnum alloc] initWithValue:@"double"],
+        @"DoubleNode": [[QTEnum alloc] initWithValue:@"DoubleNode"],
         @"dynamic": [[QTEnum alloc] initWithValue:@"dynamic"],
         @"dynamic_cast": [[QTEnum alloc] initWithValue:@"dynamic_cast"],
         @"elif": [[QTEnum alloc] initWithValue:@"elif"],
@@ -165,6 +169,7 @@ NS_ASSUME_NONNULL_BEGIN
         @"inout": [[QTEnum alloc] initWithValue:@"inout"],
         @"instanceof": [[QTEnum alloc] initWithValue:@"instanceof"],
         @"int": [[QTEnum alloc] initWithValue:@"int"],
+        @"IntNode": [[QTEnum alloc] initWithValue:@"IntNode"],
         @"interface": [[QTEnum alloc] initWithValue:@"interface"],
         @"internal": [[QTEnum alloc] initWithValue:@"internal"],
         @"IsoDateTimeOffsetConverter": [[QTEnum alloc] initWithValue:@"IsoDateTimeOffsetConverter"],
@@ -194,6 +199,7 @@ NS_ASSUME_NONNULL_BEGIN
         @"left": [[QTEnum alloc] initWithValue:@"left"],
         @"let": [[QTEnum alloc] initWithValue:@"let"],
         @"list": [[QTEnum alloc] initWithValue:@"list"],
+        @"LongNode": [[QTEnum alloc] initWithValue:@"LongNode"],
         @"Locale": [[QTEnum alloc] initWithValue:@"Locale"],
         @"lock": [[QTEnum alloc] initWithValue:@"lock"],
         @"long": [[QTEnum alloc] initWithValue:@"long"],
@@ -208,6 +214,7 @@ NS_ASSUME_NONNULL_BEGIN
         @"new": [[QTEnum alloc] initWithValue:@"new"],
         @"newtonsoft": [[QTEnum alloc] initWithValue:@"newtonsoft"],
         @"nil": [[QTEnum alloc] initWithValue:@"nil"],
+        @"NullNode": [[QTEnum alloc] initWithValue:@"NullNode"],
         @"NO": [[QTEnum alloc] initWithValue:@"NO"],
         @"noexcept": [[QTEnum alloc] initWithValue:@"noexcept"],
         @"nonatomic": [[QTEnum alloc] initWithValue:@"nonatomic"],
@@ -226,6 +233,7 @@ NS_ASSUME_NONNULL_BEGIN
         @"nullptr": [[QTEnum alloc] initWithValue:@"nullptr"],
         @"number": [[QTEnum alloc] initWithValue:@"number"],
         @"object": [[QTEnum alloc] initWithValue:@"object"],
+        @"ObjectNode": [[QTEnum alloc] initWithValue:@"ObjectNode"],
         @"ObjectMapper": [[QTEnum alloc] initWithValue:@"ObjectMapper"],
         @"of": [[QTEnum alloc] initWithValue:@"of"],
         @"oneway": [[QTEnum alloc] initWithValue:@"oneway"],
@@ -278,6 +286,7 @@ NS_ASSUME_NONNULL_BEGIN
         @"self": [[QTEnum alloc] initWithValue:@"self"],
         @"Sendable": [[QTEnum alloc] initWithValue:@"Sendable"],
         @"serialize": [[QTEnum alloc] initWithValue:@"serialize"],
+        @"SerializationFeature": [[QTEnum alloc] initWithValue:@"SerializationFeature"],
         @"SerializerProvider": [[QTEnum alloc] initWithValue:@"SerializerProvider"],
         @"set": [[QTEnum alloc] initWithValue:@"set"],
         @"short": [[QTEnum alloc] initWithValue:@"short"],
@@ -303,6 +312,7 @@ NS_ASSUME_NONNULL_BEGIN
         @"template": [[QTEnum alloc] initWithValue:@"template"],
         @"then": [[QTEnum alloc] initWithValue:@"then"],
         @"this": [[QTEnum alloc] initWithValue:@"this"],
+        @"TextNode": [[QTEnum alloc] initWithValue:@"TextNode"],
         @"thread_local": [[QTEnum alloc] initWithValue:@"thread_local"],
         @"throw": [[QTEnum alloc] initWithValue:@"throw"],
         @"throws": [[QTEnum alloc] initWithValue:@"throws"],
@@ -365,6 +375,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)andEq { return QTEnum.values[@"and_eq"]; }
 + (QTEnum *)any { return QTEnum.values[@"any"]; }
 + (QTEnum *)enumAny { return QTEnum.values[@"Any"]; }
++ (QTEnum *)arrayNode { return QTEnum.values[@"ArrayNode"]; }
 + (QTEnum *)array { return QTEnum.values[@"array"]; }
 + (QTEnum *)as { return QTEnum.values[@"as"]; }
 + (QTEnum *)enumASM { return QTEnum.values[@"asm"]; }
@@ -384,6 +395,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)enumBOOL { return QTEnum.values[@"BOOL"]; }
 + (QTEnum *)bool1 { return QTEnum.values[@"bool"]; }
 + (QTEnum *)boolean { return QTEnum.values[@"boolean"]; }
++ (QTEnum *)booleanNode { return QTEnum.values[@"BooleanNode"]; }
 + (QTEnum *)enumBreak { return QTEnum.values[@"break"]; }
 + (QTEnum *)bycopy { return QTEnum.values[@"bycopy"]; }
 + (QTEnum *)byref { return QTEnum.values[@"byref"]; }
@@ -427,6 +439,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)debugger { return QTEnum.values[@"debugger"]; }
 + (QTEnum *)decimal { return QTEnum.values[@"decimal"]; }
 + (QTEnum *)declare { return QTEnum.values[@"declare"]; }
++ (QTEnum *)deserializationFeature { return QTEnum.values[@"DeserializationFeature"]; }
 + (QTEnum *)decltype { return QTEnum.values[@"decltype"]; }
 + (QTEnum *)decodeString { return QTEnum.values[@"decode_string"]; }
 + (QTEnum *)decoder { return QTEnum.values[@"Decoder"]; }
@@ -443,6 +456,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)didSet { return QTEnum.values[@"didSet"]; }
 + (QTEnum *)enumDo { return QTEnum.values[@"do"]; }
 + (QTEnum *)enumDouble { return QTEnum.values[@"double"]; }
++ (QTEnum *)doubleNode { return QTEnum.values[@"DoubleNode"]; }
 + (QTEnum *)dynamic { return QTEnum.values[@"dynamic"]; }
 + (QTEnum *)dynamicCast { return QTEnum.values[@"dynamic_cast"]; }
 + (QTEnum *)elif { return QTEnum.values[@"elif"]; }
@@ -501,6 +515,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)inout { return QTEnum.values[@"inout"]; }
 + (QTEnum *)instanceof { return QTEnum.values[@"instanceof"]; }
 + (QTEnum *)enumInt { return QTEnum.values[@"int"]; }
++ (QTEnum *)intNode { return QTEnum.values[@"IntNode"]; }
 + (QTEnum *)interface { return QTEnum.values[@"interface"]; }
 + (QTEnum *)internal { return QTEnum.values[@"internal"]; }
 + (QTEnum *)isoDateTimeOffsetConverter { return QTEnum.values[@"IsoDateTimeOffsetConverter"]; }
@@ -530,6 +545,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)left { return QTEnum.values[@"left"]; }
 + (QTEnum *)let { return QTEnum.values[@"let"]; }
 + (QTEnum *)list { return QTEnum.values[@"list"]; }
++ (QTEnum *)longNode { return QTEnum.values[@"LongNode"]; }
 + (QTEnum *)locale { return QTEnum.values[@"Locale"]; }
 + (QTEnum *)lock { return QTEnum.values[@"lock"]; }
 + (QTEnum *)enumLong { return QTEnum.values[@"long"]; }
@@ -544,6 +560,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)theNew { return QTEnum.values[@"new"]; }
 + (QTEnum *)newtonsoft { return QTEnum.values[@"newtonsoft"]; }
 + (QTEnum *)enumNil { return QTEnum.values[@"nil"]; }
++ (QTEnum *)nullNode { return QTEnum.values[@"NullNode"]; }
 + (QTEnum *)no { return QTEnum.values[@"NO"]; }
 + (QTEnum *)noexcept { return QTEnum.values[@"noexcept"]; }
 + (QTEnum *)enumNonatomic { return QTEnum.values[@"nonatomic"]; }
@@ -562,6 +579,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)nullptr { return QTEnum.values[@"nullptr"]; }
 + (QTEnum *)number { return QTEnum.values[@"number"]; }
 + (QTEnum *)object { return QTEnum.values[@"object"]; }
++ (QTEnum *)objectNode { return QTEnum.values[@"ObjectNode"]; }
 + (QTEnum *)objectMapper { return QTEnum.values[@"ObjectMapper"]; }
 + (QTEnum *)of { return QTEnum.values[@"of"]; }
 + (QTEnum *)oneway { return QTEnum.values[@"oneway"]; }
@@ -614,6 +632,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)enumSelf { return QTEnum.values[@"self"]; }
 + (QTEnum *)sendable { return QTEnum.values[@"Sendable"]; }
 + (QTEnum *)serialize { return QTEnum.values[@"serialize"]; }
++ (QTEnum *)serializationFeature { return QTEnum.values[@"SerializationFeature"]; }
 + (QTEnum *)serializerProvider { return QTEnum.values[@"SerializerProvider"]; }
 + (QTEnum *)set { return QTEnum.values[@"set"]; }
 + (QTEnum *)enumShort { return QTEnum.values[@"short"]; }
@@ -639,6 +658,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)template { return QTEnum.values[@"template"]; }
 + (QTEnum *)then { return QTEnum.values[@"then"]; }
 + (QTEnum *)this { return QTEnum.values[@"this"]; }
++ (QTEnum *)textNode { return QTEnum.values[@"TextNode"]; }
 + (QTEnum *)threadLocal { return QTEnum.values[@"thread_local"]; }
 + (QTEnum *)throw { return QTEnum.values[@"throw"]; }
 + (QTEnum *)throws { return QTEnum.values[@"throws"]; }
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..6257cd6 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
@@ -13,6 +13,7 @@
 @class QTAndEq;
 @class QTAny;
 @class QTArray;
+@class QTArrayNode;
 @class QTAs;
 @class QTAssert;
 @class QTAssociatedtype;
@@ -26,6 +27,7 @@
 @class QTBitand;
 @class QTBitor;
 @class QTBoolean;
+@class QTBooleanNode;
 @class QTBycopy;
 @class QTByref;
 @class QTByte;
@@ -74,9 +76,11 @@
 @class QTDel;
 @class QTDelegate;
 @class QTDelete;
+@class QTDeserializationFeature;
 @class QTDict;
 @class QTDictionary;
 @class QTDidSet;
+@class QTDoubleNode;
 @class QTDynamic;
 @class QTDynamicCast;
 @class QTElif;
@@ -124,6 +128,7 @@
 @class QTInfix;
 @class QTInout;
 @class QTInstanceof;
+@class QTIntNode;
 @class QTInterface;
 @class QTInternal;
 @class QTIs;
@@ -155,6 +160,7 @@
 @class QTList;
 @class QTLocale;
 @class QTLock;
+@class QTLongNode;
 @class QTMap;
 @class QTMapEntry;
 @class QTMetadataPropertyHandling;
@@ -176,10 +182,12 @@
 @class QTNSObject;
 @class QTNSString;
 @class QTNull;
+@class QTNullNode;
 @class QTNullptr;
 @class QTNumber;
 @class QTObject;
 @class QTObjectMapper;
+@class QTObjectNode;
 @class QTOf;
 @class QTOneway;
 @class QTOpen;
@@ -275,6 +283,7 @@
 @class QTSelect;
 @class QTSelf;
 @class QTSendable;
+@class QTSerializationFeature;
 @class QTSerialize;
 @class QTSerializerProvider;
 @class QTSet;
@@ -293,6 +302,7 @@
 @class QTSynchronized;
 @class QTSystem;
 @class QTTemplate;
+@class QTTextNode;
 @class QTUnionBoolBool;
 @class QTFalseClass;
 @class QTHashCode;
@@ -363,6 +373,7 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, nullable, copy)   id qtTopLevelAny;
 @property (nonatomic, nullable, copy)   id any;
 @property (nonatomic, nullable, copy)   id array;
+@property (nonatomic, nullable, copy)   id arrayNode;
 @property (nonatomic, nullable, copy)   id as;
 @property (nonatomic, nullable, copy)   id qtTopLevelASM;
 @property (nonatomic, nullable, copy)   id assert;
@@ -381,6 +392,7 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, nullable, copy)   id qtTopLevelBOOL;
 @property (nonatomic, nullable, copy)   id theBool;
 @property (nonatomic, nullable, copy)   id boolean;
+@property (nonatomic, nullable, copy)   id booleanNode;
 @property (nonatomic, nullable, copy)   id qtTopLevelBreak;
 @property (nonatomic, nullable, copy)   id bycopy;
 @property (nonatomic, nullable, copy)   id byref;
@@ -435,11 +447,13 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, nullable, copy)   id del;
 @property (nonatomic, nullable, copy)   id delegate;
 @property (nonatomic, nullable, copy)   id delete;
+@property (nonatomic, nullable, copy)   id deserializationFeature;
 @property (nonatomic, nullable, copy)   id dict;
 @property (nonatomic, nullable, copy)   id dictionary;
 @property (nonatomic, nullable, copy)   id didSet;
 @property (nonatomic, nullable, copy)   id qtTopLevelDo;
 @property (nonatomic, nullable, copy)   id qtTopLevelDouble;
+@property (nonatomic, nullable, copy)   id doubleNode;
 @property (nonatomic, nullable, strong) NSNumber *dummy;
 @property (nonatomic, nullable, copy)   id dynamic;
 @property (nonatomic, nullable, copy)   id dynamicCast;
@@ -501,6 +515,7 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, nullable, copy)   id qtTopLevelInt;
 @property (nonatomic, nullable, copy)   id interface;
 @property (nonatomic, nullable, copy)   id internal;
+@property (nonatomic, nullable, copy)   id intNode;
 @property (nonatomic, nullable, copy)   id is;
 @property (nonatomic, nullable, copy)   id isoDateTimeOffsetConverter;
 @property (nonatomic, nullable, copy)   id iterable;
@@ -531,6 +546,7 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, nullable, copy)   id locale;
 @property (nonatomic, nullable, copy)   id lock;
 @property (nonatomic, nullable, copy)   id qtTopLevelLong;
+@property (nonatomic, nullable, copy)   id longNode;
 @property (nonatomic, nullable, copy)   id map;
 @property (nonatomic, nullable, copy)   id mapEntry;
 @property (nonatomic, nullable, copy)   id metadataPropertyHandling;
@@ -557,10 +573,12 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, nullable, copy)   id nsString;
 @property (nonatomic, nullable, copy)   id null;
 @property (nonatomic, nullable, copy)   id qtTopLevelNull;
+@property (nonatomic, nullable, copy)   id nullNode;
 @property (nonatomic, nullable, copy)   id nullptr;
 @property (nonatomic, nullable, copy)   id number;
 @property (nonatomic, nullable, copy)   id object;
 @property (nonatomic, nullable, copy)   id objectMapper;
+@property (nonatomic, nullable, copy)   id objectNode;
 @property (nonatomic, nullable, copy)   id of;
 @property (nonatomic, nullable, copy)   id oneway;
 @property (nonatomic, nullable, copy)   id open;
@@ -611,6 +629,7 @@ 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 serializationFeature;
 @property (nonatomic, nullable, copy)   id serialize;
 @property (nonatomic, nullable, copy)   id serializerProvider;
 @property (nonatomic, nullable, copy)   id set;
@@ -635,6 +654,7 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, nullable, copy)   id synchronized;
 @property (nonatomic, nullable, copy)   id system;
 @property (nonatomic, nullable, copy)   id template;
+@property (nonatomic, nullable, copy)   id textNode;
 @property (nonatomic, nullable, copy)   id then;
 @property (nonatomic, nullable, copy)   id this;
 @property (nonatomic, nullable, copy)   id threadLocal;
@@ -712,6 +732,9 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @interface QTArray : NSObject
 @end
 
+@interface QTArrayNode : NSObject
+@end
+
 @interface QTAs : NSObject
 @end
 
@@ -751,6 +774,9 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @interface QTBoolean : NSObject
 @end
 
+@interface QTBooleanNode : NSObject
+@end
+
 @interface QTBycopy : NSObject
 @end
 
@@ -895,6 +921,9 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @interface QTDelete : NSObject
 @end
 
+@interface QTDeserializationFeature : NSObject
+@end
+
 @interface QTDict : NSObject
 @end
 
@@ -904,6 +933,9 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @interface QTDidSet : NSObject
 @end
 
+@interface QTDoubleNode : NSObject
+@end
+
 @interface QTDynamic : NSObject
 @end
 
@@ -1045,6 +1077,9 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @interface QTInstanceof : NSObject
 @end
 
+@interface QTIntNode : NSObject
+@end
+
 @interface QTInterface : NSObject
 @end
 
@@ -1138,6 +1173,9 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @interface QTLock : NSObject
 @end
 
+@interface QTLongNode : NSObject
+@end
+
 @interface QTMap : NSObject
 @end
 
@@ -1201,6 +1239,9 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @interface QTNull : NSObject
 @end
 
+@interface QTNullNode : NSObject
+@end
+
 @interface QTNullptr : NSObject
 @end
 
@@ -1213,6 +1254,9 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @interface QTObjectMapper : NSObject
 @end
 
+@interface QTObjectNode : NSObject
+@end
+
 @interface QTOf : NSObject
 @end
 
@@ -1498,6 +1542,9 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @interface QTSendable : NSObject
 @end
 
+@interface QTSerializationFeature : NSObject
+@end
+
 @interface QTSerialize : NSObject
 @end
 
@@ -1552,6 +1599,9 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @interface QTTemplate : NSObject
 @end
 
+@interface QTTextNode : NSObject
+@end
+
 @interface QTUnionBoolBool : 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..bbf60cd 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
@@ -48,6 +48,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTArrayNode (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTAs (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -113,6 +118,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTBooleanNode (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTBycopy (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -353,6 +363,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTDeserializationFeature (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTDict (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -368,6 +383,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTDoubleNode (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTDynamic (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -603,6 +623,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTIntNode (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTInterface (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -758,6 +783,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTLongNode (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTMap (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -863,6 +893,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTNullNode (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTNullptr (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -883,6 +918,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTObjectNode (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTOf (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -1358,6 +1398,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTSerializationFeature (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTSerialize (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -1448,6 +1493,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTTextNode (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTUnionBoolBool (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -1726,6 +1776,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"any": @"qtTopLevelAny",
         @"Any": @"any",
         @"array": @"array",
+        @"ArrayNode": @"arrayNode",
         @"as": @"as",
         @"asm": @"qtTopLevelASM",
         @"assert": @"assert",
@@ -1744,6 +1795,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"BOOL": @"qtTopLevelBOOL",
         @"bool": @"theBool",
         @"boolean": @"boolean",
+        @"BooleanNode": @"booleanNode",
         @"break": @"qtTopLevelBreak",
         @"bycopy": @"bycopy",
         @"byref": @"byref",
@@ -1798,11 +1850,13 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"del": @"del",
         @"delegate": @"delegate",
         @"delete": @"delete",
+        @"DeserializationFeature": @"deserializationFeature",
         @"dict": @"dict",
         @"dictionary": @"dictionary",
         @"didSet": @"didSet",
         @"do": @"qtTopLevelDo",
         @"double": @"qtTopLevelDouble",
+        @"DoubleNode": @"doubleNode",
         @"dummy": @"dummy",
         @"dynamic": @"dynamic",
         @"dynamic_cast": @"dynamicCast",
@@ -1864,6 +1918,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"int": @"qtTopLevelInt",
         @"interface": @"interface",
         @"internal": @"internal",
+        @"IntNode": @"intNode",
         @"is": @"is",
         @"IsoDateTimeOffsetConverter": @"isoDateTimeOffsetConverter",
         @"iterable": @"iterable",
@@ -1894,6 +1949,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"Locale": @"locale",
         @"lock": @"lock",
         @"long": @"qtTopLevelLong",
+        @"LongNode": @"longNode",
         @"map": @"map",
         @"MapEntry": @"mapEntry",
         @"metadata_property_handling": @"metadataPropertyHandling",
@@ -1920,10 +1976,12 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"NSString": @"nsString",
         @"NULL": @"null",
         @"null": @"qtTopLevelNull",
+        @"NullNode": @"nullNode",
         @"nullptr": @"nullptr",
         @"number": @"number",
         @"object": @"object",
         @"ObjectMapper": @"objectMapper",
+        @"ObjectNode": @"objectNode",
         @"of": @"of",
         @"oneway": @"oneway",
         @"open": @"open",
@@ -1974,6 +2032,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"Self": @"self",
         @"self": @"qtTopLevelSelf",
         @"Sendable": @"sendable",
+        @"SerializationFeature": @"serializationFeature",
         @"serialize": @"serialize",
         @"SerializerProvider": @"serializerProvider",
         @"set": @"set",
@@ -1998,6 +2057,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"synchronized": @"synchronized",
         @"system": @"system",
         @"template": @"template",
+        @"TextNode": @"textNode",
         @"then": @"then",
         @"this": @"this",
         @"thread_local": @"threadLocal",
@@ -2384,6 +2444,45 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTArrayNode
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTArrayNode 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 = QTArrayNode.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTArrayNode.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTArrayNode.properties.allValues];
+}
+@end
+
 @implementation QTAs
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -2891,6 +2990,45 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTBooleanNode
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTBooleanNode 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 = QTBooleanNode.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTBooleanNode.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTBooleanNode.properties.allValues];
+}
+@end
+
 @implementation QTBycopy
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -4763,6 +4901,45 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTDeserializationFeature
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTDeserializationFeature 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 = QTDeserializationFeature.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTDeserializationFeature.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTDeserializationFeature.properties.allValues];
+}
+@end
+
 @implementation QTDict
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -4880,6 +5057,45 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTDoubleNode
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTDoubleNode 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 = QTDoubleNode.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTDoubleNode.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTDoubleNode.properties.allValues];
+}
+@end
+
 @implementation QTDynamic
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -6713,6 +6929,45 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTIntNode
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTIntNode 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 = QTIntNode.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTIntNode.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTIntNode.properties.allValues];
+}
+@end
+
 @implementation QTInterface
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -7922,6 +8177,45 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTLongNode
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTLongNode 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 = QTLongNode.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTLongNode.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTLongNode.properties.allValues];
+}
+@end
+
 @implementation QTMap
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -8741,6 +9035,45 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTNullNode
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTNullNode 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 = QTNullNode.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTNullNode.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTNullNode.properties.allValues];
+}
+@end
+
 @implementation QTNullptr
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -8897,6 +9230,45 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTObjectNode
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTObjectNode 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 = QTObjectNode.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTObjectNode.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTObjectNode.properties.allValues];
+}
+@end
+
 @implementation QTOf
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -12602,6 +12974,45 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTSerializationFeature
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSerializationFeature 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 = QTSerializationFeature.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTSerializationFeature.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTSerializationFeature.properties.allValues];
+}
+@end
+
 @implementation QTSerialize
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -13304,6 +13715,45 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTTextNode
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTTextNode 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 = QTTextNode.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTTextNode.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTTextNode.properties.allValues];
+}
+@end
+
 @implementation QTUnionBoolBool
 + (NSDictionary<NSString *, NSString *> *)properties
 {
diff --git a/base/schema-php/test/inputs/schema/direct-union.schema/default/TopLevel.php b/head/schema-php/test/inputs/schema/direct-union.schema/default/TopLevel.php
index 442ccb2..b2375bd 100644
--- a/base/schema-php/test/inputs/schema/direct-union.schema/default/TopLevel.php
+++ b/head/schema-php/test/inputs/schema/direct-union.schema/default/TopLevel.php
@@ -4,13 +4,443 @@ declare(strict_types=1);
 // This is an autogenerated file:TopLevel
 
 class TopLevel {
+    private ?ArrayNode $arrayNode; // json:arrayNode Optional
+    private ?BooleanNode $booleanNode; // json:booleanNode Optional
+    private ?DoubleNode $doubleNode; // json:doubleNode Optional
+    private ?IntNode $intNode; // json:intNode Optional
+    private ?LongNode $longNode; // json:longNode Optional
+    private ?NullNode $nullNode; // json:nullNode Optional
+    private ?ObjectNode $objectNode; // json:objectNode Optional
     private stdClass $stuff; // json:stuff Required
+    private ?TextNode $textNode; // json:textNode Optional
 
     /**
+     * @param ArrayNode|null $arrayNode
+     * @param BooleanNode|null $booleanNode
+     * @param DoubleNode|null $doubleNode
+     * @param IntNode|null $intNode
+     * @param LongNode|null $longNode
+     * @param NullNode|null $nullNode
+     * @param ObjectNode|null $objectNode
      * @param stdClass $stuff
+     * @param TextNode|null $textNode
      */
-    public function __construct(stdClass $stuff) {
+    public function __construct(?ArrayNode $arrayNode, ?BooleanNode $booleanNode, ?DoubleNode $doubleNode, ?IntNode $intNode, ?LongNode $longNode, ?NullNode $nullNode, ?ObjectNode $objectNode, stdClass $stuff, ?TextNode $textNode) {
+        $this->arrayNode = $arrayNode;
+        $this->booleanNode = $booleanNode;
+        $this->doubleNode = $doubleNode;
+        $this->intNode = $intNode;
+        $this->longNode = $longNode;
+        $this->nullNode = $nullNode;
+        $this->objectNode = $objectNode;
         $this->stuff = $stuff;
+        $this->textNode = $textNode;
+    }
+
+    /**
+     * @param ?stdClass $value
+     * @throws Exception
+     * @return ?ArrayNode
+     */
+    public static function fromArrayNode(?stdClass $value): ?ArrayNode {
+        if (!is_null($value)) {
+            return ArrayNode::from($value); /*class*/
+        } else {
+            return  null;
+        }
+    }
+
+    /**
+     * @throws Exception
+     * @return ?stdClass
+     */
+    public function toArrayNode(): ?stdClass {
+        if (TopLevel::validateArrayNode($this->arrayNode))  {
+            if (!is_null($this->arrayNode)) {
+                return $this->arrayNode->to(); /*class*/
+            } else {
+                return  null;
+            }
+        }
+        throw new Exception('never get to this TopLevel::arrayNode');
+    }
+
+    /**
+     * @param ArrayNode|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateArrayNode(?ArrayNode $value): bool {
+        if (!is_null($value)) {
+            $value->validate();
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ?ArrayNode
+     */
+    public function getArrayNode(): ?ArrayNode {
+        if (TopLevel::validateArrayNode($this->arrayNode))  {
+            return $this->arrayNode;
+        }
+        throw new Exception('never get to getArrayNode TopLevel::arrayNode');
+    }
+
+    /**
+     * @return ?ArrayNode
+     */
+    public static function sampleArrayNode(): ?ArrayNode {
+        return ArrayNode::sample(); /*31:arrayNode*/
+    }
+
+    /**
+     * @param ?stdClass $value
+     * @throws Exception
+     * @return ?BooleanNode
+     */
+    public static function fromBooleanNode(?stdClass $value): ?BooleanNode {
+        if (!is_null($value)) {
+            return BooleanNode::from($value); /*class*/
+        } else {
+            return  null;
+        }
+    }
+
+    /**
+     * @throws Exception
+     * @return ?stdClass
+     */
+    public function toBooleanNode(): ?stdClass {
+        if (TopLevel::validateBooleanNode($this->booleanNode))  {
+            if (!is_null($this->booleanNode)) {
+                return $this->booleanNode->to(); /*class*/
+            } else {
+                return  null;
+            }
+        }
+        throw new Exception('never get to this TopLevel::booleanNode');
+    }
+
+    /**
+     * @param BooleanNode|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateBooleanNode(?BooleanNode $value): bool {
+        if (!is_null($value)) {
+            $value->validate();
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ?BooleanNode
+     */
+    public function getBooleanNode(): ?BooleanNode {
+        if (TopLevel::validateBooleanNode($this->booleanNode))  {
+            return $this->booleanNode;
+        }
+        throw new Exception('never get to getBooleanNode TopLevel::booleanNode');
+    }
+
+    /**
+     * @return ?BooleanNode
+     */
+    public static function sampleBooleanNode(): ?BooleanNode {
+        return BooleanNode::sample(); /*32:booleanNode*/
+    }
+
+    /**
+     * @param ?stdClass $value
+     * @throws Exception
+     * @return ?DoubleNode
+     */
+    public static function fromDoubleNode(?stdClass $value): ?DoubleNode {
+        if (!is_null($value)) {
+            return DoubleNode::from($value); /*class*/
+        } else {
+            return  null;
+        }
+    }
+
+    /**
+     * @throws Exception
+     * @return ?stdClass
+     */
+    public function toDoubleNode(): ?stdClass {
+        if (TopLevel::validateDoubleNode($this->doubleNode))  {
+            if (!is_null($this->doubleNode)) {
+                return $this->doubleNode->to(); /*class*/
+            } else {
+                return  null;
+            }
+        }
+        throw new Exception('never get to this TopLevel::doubleNode');
+    }
+
+    /**
+     * @param DoubleNode|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDoubleNode(?DoubleNode $value): bool {
+        if (!is_null($value)) {
+            $value->validate();
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ?DoubleNode
+     */
+    public function getDoubleNode(): ?DoubleNode {
+        if (TopLevel::validateDoubleNode($this->doubleNode))  {
+            return $this->doubleNode;
+        }
+        throw new Exception('never get to getDoubleNode TopLevel::doubleNode');
+    }
+
+    /**
+     * @return ?DoubleNode
+     */
+    public static function sampleDoubleNode(): ?DoubleNode {
+        return DoubleNode::sample(); /*33:doubleNode*/
+    }
+
+    /**
+     * @param ?stdClass $value
+     * @throws Exception
+     * @return ?IntNode
+     */
+    public static function fromIntNode(?stdClass $value): ?IntNode {
+        if (!is_null($value)) {
+            return IntNode::from($value); /*class*/
+        } else {
+            return  null;
+        }
+    }
+
+    /**
+     * @throws Exception
+     * @return ?stdClass
+     */
+    public function toIntNode(): ?stdClass {
+        if (TopLevel::validateIntNode($this->intNode))  {
+            if (!is_null($this->intNode)) {
+                return $this->intNode->to(); /*class*/
+            } else {
+                return  null;
+            }
+        }
+        throw new Exception('never get to this TopLevel::intNode');
+    }
+
+    /**
+     * @param IntNode|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateIntNode(?IntNode $value): bool {
+        if (!is_null($value)) {
+            $value->validate();
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ?IntNode
+     */
+    public function getIntNode(): ?IntNode {
+        if (TopLevel::validateIntNode($this->intNode))  {
+            return $this->intNode;
+        }
+        throw new Exception('never get to getIntNode TopLevel::intNode');
+    }
+
+    /**
+     * @return ?IntNode
+     */
+    public static function sampleIntNode(): ?IntNode {
+        return IntNode::sample(); /*34:intNode*/
+    }
+
+    /**
+     * @param ?stdClass $value
+     * @throws Exception
+     * @return ?LongNode
+     */
+    public static function fromLongNode(?stdClass $value): ?LongNode {
+        if (!is_null($value)) {
+            return LongNode::from($value); /*class*/
+        } else {
+            return  null;
+        }
+    }
+
+    /**
+     * @throws Exception
+     * @return ?stdClass
+     */
+    public function toLongNode(): ?stdClass {
+        if (TopLevel::validateLongNode($this->longNode))  {
+            if (!is_null($this->longNode)) {
+                return $this->longNode->to(); /*class*/
+            } else {
+                return  null;
+            }
+        }
+        throw new Exception('never get to this TopLevel::longNode');
+    }
+
+    /**
+     * @param LongNode|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateLongNode(?LongNode $value): bool {
+        if (!is_null($value)) {
+            $value->validate();
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ?LongNode
+     */
+    public function getLongNode(): ?LongNode {
+        if (TopLevel::validateLongNode($this->longNode))  {
+            return $this->longNode;
+        }
+        throw new Exception('never get to getLongNode TopLevel::longNode');
+    }
+
+    /**
+     * @return ?LongNode
+     */
+    public static function sampleLongNode(): ?LongNode {
+        return LongNode::sample(); /*35:longNode*/
+    }
+
+    /**
+     * @param ?stdClass $value
+     * @throws Exception
+     * @return ?NullNode
+     */
+    public static function fromNullNode(?stdClass $value): ?NullNode {
+        if (!is_null($value)) {
+            return NullNode::from($value); /*class*/
+        } else {
+            return  null;
+        }
+    }
+
+    /**
+     * @throws Exception
+     * @return ?stdClass
+     */
+    public function toNullNode(): ?stdClass {
+        if (TopLevel::validateNullNode($this->nullNode))  {
+            if (!is_null($this->nullNode)) {
+                return $this->nullNode->to(); /*class*/
+            } else {
+                return  null;
+            }
+        }
+        throw new Exception('never get to this TopLevel::nullNode');
+    }
+
+    /**
+     * @param NullNode|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNullNode(?NullNode $value): bool {
+        if (!is_null($value)) {
+            $value->validate();
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ?NullNode
+     */
+    public function getNullNode(): ?NullNode {
+        if (TopLevel::validateNullNode($this->nullNode))  {
+            return $this->nullNode;
+        }
+        throw new Exception('never get to getNullNode TopLevel::nullNode');
+    }
+
+    /**
+     * @return ?NullNode
+     */
+    public static function sampleNullNode(): ?NullNode {
+        return NullNode::sample(); /*36:nullNode*/
+    }
+
+    /**
+     * @param ?stdClass $value
+     * @throws Exception
+     * @return ?ObjectNode
+     */
+    public static function fromObjectNode(?stdClass $value): ?ObjectNode {
+        if (!is_null($value)) {
+            return ObjectNode::from($value); /*class*/
+        } else {
+            return  null;
+        }
+    }
+
+    /**
+     * @throws Exception
+     * @return ?stdClass
+     */
+    public function toObjectNode(): ?stdClass {
+        if (TopLevel::validateObjectNode($this->objectNode))  {
+            if (!is_null($this->objectNode)) {
+                return $this->objectNode->to(); /*class*/
+            } else {
+                return  null;
+            }
+        }
+        throw new Exception('never get to this TopLevel::objectNode');
+    }
+
+    /**
+     * @param ObjectNode|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateObjectNode(?ObjectNode $value): bool {
+        if (!is_null($value)) {
+            $value->validate();
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ?ObjectNode
+     */
+    public function getObjectNode(): ?ObjectNode {
+        if (TopLevel::validateObjectNode($this->objectNode))  {
+            return $this->objectNode;
+        }
+        throw new Exception('never get to getObjectNode TopLevel::objectNode');
+    }
+
+    /**
+     * @return ?ObjectNode
+     */
+    public static function sampleObjectNode(): ?ObjectNode {
+        return ObjectNode::sample(); /*37:objectNode*/
     }
 
     /**
@@ -18,61 +448,472 @@ class TopLevel {
      * @throws Exception
      * @return stdClass
      */
-    public static function fromStuff(stdClass $value): stdClass {
+    public static function fromStuff(stdClass $value): stdClass {
+        $out = new stdClass();
+        foreach ($value as $k => $v) {
+            $out->$k = Thing::from($v); /*class*/
+        }
+        return $out;
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toStuff(): stdClass {
+        if (TopLevel::validateStuff($this->stuff))  {
+            $out = new stdClass();
+            foreach ($this->stuff as $k => $v) {
+                $out->$k = $v->to(); /*class*/
+            }
+            return $out;
+        }
+        throw new Exception('never get to this TopLevel::stuff');
+    }
+
+    /**
+     * @param stdClass
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateStuff(stdClass $value): bool {
+        foreach ($value as $k => $v) {
+            $v->validate();
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function getStuff(): stdClass {
+        if (TopLevel::validateStuff($this->stuff))  {
+            return $this->stuff;
+        }
+        throw new Exception('never get to getStuff TopLevel::stuff');
+    }
+
+    /**
+     * @return stdClass
+     */
+    public static function sampleStuff(): stdClass {
+        return  (function () {
+            $out = new stdClass();
+            $out->{'TopLevel'} = Thing::sample(); /*38:stuff*/
+            return $out;
+        })(); /* 38:stuff*/
+    }
+
+    /**
+     * @param ?stdClass $value
+     * @throws Exception
+     * @return ?TextNode
+     */
+    public static function fromTextNode(?stdClass $value): ?TextNode {
+        if (!is_null($value)) {
+            return TextNode::from($value); /*class*/
+        } else {
+            return  null;
+        }
+    }
+
+    /**
+     * @throws Exception
+     * @return ?stdClass
+     */
+    public function toTextNode(): ?stdClass {
+        if (TopLevel::validateTextNode($this->textNode))  {
+            if (!is_null($this->textNode)) {
+                return $this->textNode->to(); /*class*/
+            } else {
+                return  null;
+            }
+        }
+        throw new Exception('never get to this TopLevel::textNode');
+    }
+
+    /**
+     * @param TextNode|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTextNode(?TextNode $value): bool {
+        if (!is_null($value)) {
+            $value->validate();
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ?TextNode
+     */
+    public function getTextNode(): ?TextNode {
+        if (TopLevel::validateTextNode($this->textNode))  {
+            return $this->textNode;
+        }
+        throw new Exception('never get to getTextNode TopLevel::textNode');
+    }
+
+    /**
+     * @return ?TextNode
+     */
+    public static function sampleTextNode(): ?TextNode {
+        return TextNode::sample(); /*39:textNode*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return TopLevel::validateArrayNode($this->arrayNode)
+        || TopLevel::validateBooleanNode($this->booleanNode)
+        || TopLevel::validateDoubleNode($this->doubleNode)
+        || TopLevel::validateIntNode($this->intNode)
+        || TopLevel::validateLongNode($this->longNode)
+        || TopLevel::validateNullNode($this->nullNode)
+        || TopLevel::validateObjectNode($this->objectNode)
+        || TopLevel::validateStuff($this->stuff)
+        || TopLevel::validateTextNode($this->textNode);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'arrayNode'} = $this->toArrayNode();
+        $out->{'booleanNode'} = $this->toBooleanNode();
+        $out->{'doubleNode'} = $this->toDoubleNode();
+        $out->{'intNode'} = $this->toIntNode();
+        $out->{'longNode'} = $this->toLongNode();
+        $out->{'nullNode'} = $this->toNullNode();
+        $out->{'objectNode'} = $this->toObjectNode();
+        $out->{'stuff'} = $this->toStuff();
+        $out->{'textNode'} = $this->toTextNode();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return TopLevel
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): TopLevel {
+        if (!property_exists($obj, 'stuff')) {
+            throw new Exception("Missing required property");
+        }
+        return new TopLevel(
+         TopLevel::fromArrayNode($obj->{'arrayNode'})
+        ,TopLevel::fromBooleanNode($obj->{'booleanNode'})
+        ,TopLevel::fromDoubleNode($obj->{'doubleNode'})
+        ,TopLevel::fromIntNode($obj->{'intNode'})
+        ,TopLevel::fromLongNode($obj->{'longNode'})
+        ,TopLevel::fromNullNode($obj->{'nullNode'})
+        ,TopLevel::fromObjectNode($obj->{'objectNode'})
+        ,TopLevel::fromStuff($obj->{'stuff'})
+        ,TopLevel::fromTextNode($obj->{'textNode'})
+        );
+    }
+
+    /**
+     * @return TopLevel
+     */
+    public static function sample(): TopLevel {
+        return new TopLevel(
+         TopLevel::sampleArrayNode()
+        ,TopLevel::sampleBooleanNode()
+        ,TopLevel::sampleDoubleNode()
+        ,TopLevel::sampleIntNode()
+        ,TopLevel::sampleLongNode()
+        ,TopLevel::sampleNullNode()
+        ,TopLevel::sampleObjectNode()
+        ,TopLevel::sampleStuff()
+        ,TopLevel::sampleTextNode()
+        );
+    }
+}
+
+// This is an autogenerated file:ArrayNode
+
+class ArrayNode {
+
+    /**
+     */
+    public function __construct() {
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return true;
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
         $out = new stdClass();
-        foreach ($value as $k => $v) {
-            $out->$k = Thing::from($v); /*class*/
-        }
         return $out;
     }
 
+    /**
+     * @param stdClass $obj
+     * @return ArrayNode
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ArrayNode {
+        return new ArrayNode(
+        );
+    }
+
+    /**
+     * @return ArrayNode
+     */
+    public static function sample(): ArrayNode {
+        return new ArrayNode(
+        );
+    }
+}
+
+// This is an autogenerated file:BooleanNode
+
+class BooleanNode {
+
+    /**
+     */
+    public function __construct() {
+    }
+
     /**
      * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return true;
+    }
+
+    /**
      * @return stdClass
+     * @throws Exception
      */
-    public function toStuff(): stdClass {
-        if (TopLevel::validateStuff($this->stuff))  {
-            $out = new stdClass();
-            foreach ($this->stuff as $k => $v) {
-                $out->$k = $v->to(); /*class*/
-            }
-            return $out;
-        }
-        throw new Exception('never get to this TopLevel::stuff');
+    public function to(): stdClass  {
+        $out = new stdClass();
+        return $out;
     }
 
     /**
-     * @param stdClass
+     * @param stdClass $obj
+     * @return BooleanNode
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): BooleanNode {
+        return new BooleanNode(
+        );
+    }
+
+    /**
+     * @return BooleanNode
+     */
+    public static function sample(): BooleanNode {
+        return new BooleanNode(
+        );
+    }
+}
+
+// This is an autogenerated file:DoubleNode
+
+class DoubleNode {
+
+    /**
+     */
+    public function __construct() {
+    }
+
+    /**
+     * @throws Exception
      * @return bool
+     */
+    public function validate(): bool {
+        return true;
+    }
+
+    /**
+     * @return stdClass
      * @throws Exception
      */
-    public static function validateStuff(stdClass $value): bool {
-        foreach ($value as $k => $v) {
-            $v->validate();
-        }
+    public function to(): stdClass  {
+        $out = new stdClass();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return DoubleNode
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): DoubleNode {
+        return new DoubleNode(
+        );
+    }
+
+    /**
+     * @return DoubleNode
+     */
+    public static function sample(): DoubleNode {
+        return new DoubleNode(
+        );
+    }
+}
+
+// This is an autogenerated file:IntNode
+
+class IntNode {
+
+    /**
+     */
+    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 IntNode
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): IntNode {
+        return new IntNode(
+        );
+    }
+
+    /**
+     * @return IntNode
+     */
+    public static function sample(): IntNode {
+        return new IntNode(
+        );
+    }
+}
+
+// This is an autogenerated file:LongNode
+
+class LongNode {
+
+    /**
+     */
+    public function __construct() {
+    }
+
     /**
      * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return true;
+    }
+
+    /**
      * @return stdClass
+     * @throws Exception
      */
-    public function getStuff(): stdClass {
-        if (TopLevel::validateStuff($this->stuff))  {
-            return $this->stuff;
-        }
-        throw new Exception('never get to getStuff TopLevel::stuff');
+    public function to(): stdClass  {
+        $out = new stdClass();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return LongNode
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): LongNode {
+        return new LongNode(
+        );
+    }
+
+    /**
+     * @return LongNode
+     */
+    public static function sample(): LongNode {
+        return new LongNode(
+        );
+    }
+}
+
+// This is an autogenerated file:NullNode
+
+class NullNode {
+
+    /**
+     */
+    public function __construct() {
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return true;
     }
 
     /**
      * @return stdClass
+     * @throws Exception
      */
-    public static function sampleStuff(): stdClass {
-        return  (function () {
-            $out = new stdClass();
-            $out->{'TopLevel'} = Thing::sample(); /*31:stuff*/
-            return $out;
-        })(); /* 31:stuff*/
+    public function to(): stdClass  {
+        $out = new stdClass();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return NullNode
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): NullNode {
+        return new NullNode(
+        );
+    }
+
+    /**
+     * @return NullNode
+     */
+    public static function sample(): NullNode {
+        return new NullNode(
+        );
+    }
+}
+
+// This is an autogenerated file:ObjectNode
+
+class ObjectNode {
+
+    /**
+     */
+    public function __construct() {
     }
 
     /**
@@ -80,7 +921,7 @@ class TopLevel {
      * @return bool
      */
     public function validate(): bool {
-        return TopLevel::validateStuff($this->stuff);
+        return true;
     }
 
     /**
@@ -89,30 +930,24 @@ class TopLevel {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'stuff'} = $this->toStuff();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return TopLevel
+     * @return ObjectNode
      * @throws Exception
      */
-    public static function from(stdClass $obj): TopLevel {
-        if (!property_exists($obj, 'stuff')) {
-            throw new Exception("Missing required property");
-        }
-        return new TopLevel(
-         TopLevel::fromStuff($obj->{'stuff'})
+    public static function from(stdClass $obj): ObjectNode {
+        return new ObjectNode(
         );
     }
 
     /**
-     * @return TopLevel
+     * @return ObjectNode
      */
-    public static function sample(): TopLevel {
-        return new TopLevel(
-         TopLevel::sampleStuff()
+    public static function sample(): ObjectNode {
+        return new ObjectNode(
         );
     }
 }
@@ -431,3 +1266,48 @@ class Thing {
         );
     }
 }
+
+// This is an autogenerated file:TextNode
+
+class TextNode {
+
+    /**
+     */
+    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 TextNode
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): TextNode {
+        return new TextNode(
+        );
+    }
+
+    /**
+     * @return TextNode
+     */
+    public static function sample(): TextNode {
+        return new TextNode(
+        );
+    }
+}
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..cdcc062 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
@@ -124,6 +124,7 @@ class EnumEnum {
     public static EnumEnum $AND_EQ;
     public static EnumEnum $ANY;
     public static EnumEnum $ENUM_ANY;
+    public static EnumEnum $ARRAY_NODE;
     public static EnumEnum $ARRAY;
     public static EnumEnum $AS;
     public static EnumEnum $ASM;
@@ -143,6 +144,7 @@ class EnumEnum {
     public static EnumEnum $ENUM_BOOL;
     public static EnumEnum $PURPLE_BOOL;
     public static EnumEnum $BOOLEAN;
+    public static EnumEnum $BOOLEAN_NODE;
     public static EnumEnum $BREAK;
     public static EnumEnum $BYCOPY;
     public static EnumEnum $BYREF;
@@ -186,6 +188,7 @@ class EnumEnum {
     public static EnumEnum $DEBUGGER;
     public static EnumEnum $DECIMAL;
     public static EnumEnum $DECLARE;
+    public static EnumEnum $DESERIALIZATION_FEATURE;
     public static EnumEnum $DECLTYPE;
     public static EnumEnum $DECODE_STRING;
     public static EnumEnum $DECODER;
@@ -202,6 +205,7 @@ class EnumEnum {
     public static EnumEnum $DID_SET;
     public static EnumEnum $DO;
     public static EnumEnum $DOUBLE;
+    public static EnumEnum $DOUBLE_NODE;
     public static EnumEnum $DYNAMIC;
     public static EnumEnum $DYNAMIC_CAST;
     public static EnumEnum $ELIF;
@@ -260,6 +264,7 @@ class EnumEnum {
     public static EnumEnum $INOUT;
     public static EnumEnum $INSTANCEOF;
     public static EnumEnum $INT;
+    public static EnumEnum $INT_NODE;
     public static EnumEnum $INTERFACE;
     public static EnumEnum $INTERNAL;
     public static EnumEnum $ISO_DATE_TIME_OFFSET_CONVERTER;
@@ -289,6 +294,7 @@ class EnumEnum {
     public static EnumEnum $LEFT;
     public static EnumEnum $LET;
     public static EnumEnum $LIST;
+    public static EnumEnum $LONG_NODE;
     public static EnumEnum $LOCALE;
     public static EnumEnum $LOCK;
     public static EnumEnum $LONG;
@@ -303,6 +309,7 @@ class EnumEnum {
     public static EnumEnum $NEW;
     public static EnumEnum $NEWTONSOFT;
     public static EnumEnum $NIL;
+    public static EnumEnum $NULL_NODE;
     public static EnumEnum $NO;
     public static EnumEnum $NOEXCEPT;
     public static EnumEnum $NONATOMIC;
@@ -321,6 +328,7 @@ class EnumEnum {
     public static EnumEnum $NULLPTR;
     public static EnumEnum $NUMBER;
     public static EnumEnum $OBJECT;
+    public static EnumEnum $OBJECT_NODE;
     public static EnumEnum $OBJECT_MAPPER;
     public static EnumEnum $OF;
     public static EnumEnum $ONEWAY;
@@ -373,6 +381,7 @@ class EnumEnum {
     public static EnumEnum $ENUM_SELF;
     public static EnumEnum $SENDABLE;
     public static EnumEnum $SERIALIZE;
+    public static EnumEnum $SERIALIZATION_FEATURE;
     public static EnumEnum $SERIALIZER_PROVIDER;
     public static EnumEnum $SET;
     public static EnumEnum $SHORT;
@@ -398,6 +407,7 @@ class EnumEnum {
     public static EnumEnum $TEMPLATE;
     public static EnumEnum $THEN;
     public static EnumEnum $THIS;
+    public static EnumEnum $TEXT_NODE;
     public static EnumEnum $THREAD_LOCAL;
     public static EnumEnum $THROW;
     public static EnumEnum $THROWS;
@@ -458,6 +468,7 @@ class EnumEnum {
         EnumEnum::$AND_EQ = new EnumEnum('and_eq');
         EnumEnum::$ANY = new EnumEnum('any');
         EnumEnum::$ENUM_ANY = new EnumEnum('Any');
+        EnumEnum::$ARRAY_NODE = new EnumEnum('ArrayNode');
         EnumEnum::$ARRAY = new EnumEnum('array');
         EnumEnum::$AS = new EnumEnum('as');
         EnumEnum::$ASM = new EnumEnum('asm');
@@ -477,6 +488,7 @@ class EnumEnum {
         EnumEnum::$ENUM_BOOL = new EnumEnum('BOOL');
         EnumEnum::$PURPLE_BOOL = new EnumEnum('bool');
         EnumEnum::$BOOLEAN = new EnumEnum('boolean');
+        EnumEnum::$BOOLEAN_NODE = new EnumEnum('BooleanNode');
         EnumEnum::$BREAK = new EnumEnum('break');
         EnumEnum::$BYCOPY = new EnumEnum('bycopy');
         EnumEnum::$BYREF = new EnumEnum('byref');
@@ -520,6 +532,7 @@ class EnumEnum {
         EnumEnum::$DEBUGGER = new EnumEnum('debugger');
         EnumEnum::$DECIMAL = new EnumEnum('decimal');
         EnumEnum::$DECLARE = new EnumEnum('declare');
+        EnumEnum::$DESERIALIZATION_FEATURE = new EnumEnum('DeserializationFeature');
         EnumEnum::$DECLTYPE = new EnumEnum('decltype');
         EnumEnum::$DECODE_STRING = new EnumEnum('decode_string');
         EnumEnum::$DECODER = new EnumEnum('Decoder');
@@ -536,6 +549,7 @@ class EnumEnum {
         EnumEnum::$DID_SET = new EnumEnum('didSet');
         EnumEnum::$DO = new EnumEnum('do');
         EnumEnum::$DOUBLE = new EnumEnum('double');
+        EnumEnum::$DOUBLE_NODE = new EnumEnum('DoubleNode');
         EnumEnum::$DYNAMIC = new EnumEnum('dynamic');
         EnumEnum::$DYNAMIC_CAST = new EnumEnum('dynamic_cast');
         EnumEnum::$ELIF = new EnumEnum('elif');
@@ -594,6 +608,7 @@ class EnumEnum {
         EnumEnum::$INOUT = new EnumEnum('inout');
         EnumEnum::$INSTANCEOF = new EnumEnum('instanceof');
         EnumEnum::$INT = new EnumEnum('int');
+        EnumEnum::$INT_NODE = new EnumEnum('IntNode');
         EnumEnum::$INTERFACE = new EnumEnum('interface');
         EnumEnum::$INTERNAL = new EnumEnum('internal');
         EnumEnum::$ISO_DATE_TIME_OFFSET_CONVERTER = new EnumEnum('IsoDateTimeOffsetConverter');
@@ -623,6 +638,7 @@ class EnumEnum {
         EnumEnum::$LEFT = new EnumEnum('left');
         EnumEnum::$LET = new EnumEnum('let');
         EnumEnum::$LIST = new EnumEnum('list');
+        EnumEnum::$LONG_NODE = new EnumEnum('LongNode');
         EnumEnum::$LOCALE = new EnumEnum('Locale');
         EnumEnum::$LOCK = new EnumEnum('lock');
         EnumEnum::$LONG = new EnumEnum('long');
@@ -637,6 +653,7 @@ class EnumEnum {
         EnumEnum::$NEW = new EnumEnum('new');
         EnumEnum::$NEWTONSOFT = new EnumEnum('newtonsoft');
         EnumEnum::$NIL = new EnumEnum('nil');
+        EnumEnum::$NULL_NODE = new EnumEnum('NullNode');
         EnumEnum::$NO = new EnumEnum('NO');
         EnumEnum::$NOEXCEPT = new EnumEnum('noexcept');
         EnumEnum::$NONATOMIC = new EnumEnum('nonatomic');
@@ -655,6 +672,7 @@ class EnumEnum {
         EnumEnum::$NULLPTR = new EnumEnum('nullptr');
         EnumEnum::$NUMBER = new EnumEnum('number');
         EnumEnum::$OBJECT = new EnumEnum('object');
+        EnumEnum::$OBJECT_NODE = new EnumEnum('ObjectNode');
         EnumEnum::$OBJECT_MAPPER = new EnumEnum('ObjectMapper');
         EnumEnum::$OF = new EnumEnum('of');
         EnumEnum::$ONEWAY = new EnumEnum('oneway');
@@ -707,6 +725,7 @@ class EnumEnum {
         EnumEnum::$ENUM_SELF = new EnumEnum('self');
         EnumEnum::$SENDABLE = new EnumEnum('Sendable');
         EnumEnum::$SERIALIZE = new EnumEnum('serialize');
+        EnumEnum::$SERIALIZATION_FEATURE = new EnumEnum('SerializationFeature');
         EnumEnum::$SERIALIZER_PROVIDER = new EnumEnum('SerializerProvider');
         EnumEnum::$SET = new EnumEnum('set');
         EnumEnum::$SHORT = new EnumEnum('short');
@@ -732,6 +751,7 @@ class EnumEnum {
         EnumEnum::$TEMPLATE = new EnumEnum('template');
         EnumEnum::$THEN = new EnumEnum('then');
         EnumEnum::$THIS = new EnumEnum('this');
+        EnumEnum::$TEXT_NODE = new EnumEnum('TextNode');
         EnumEnum::$THREAD_LOCAL = new EnumEnum('thread_local');
         EnumEnum::$THROW = new EnumEnum('throw');
         EnumEnum::$THROWS = new EnumEnum('throws');
@@ -804,6 +824,7 @@ class EnumEnum {
             case EnumEnum::$AND_EQ->enum: return 'and_eq';
             case EnumEnum::$ANY->enum: return 'any';
             case EnumEnum::$ENUM_ANY->enum: return 'Any';
+            case EnumEnum::$ARRAY_NODE->enum: return 'ArrayNode';
             case EnumEnum::$ARRAY->enum: return 'array';
             case EnumEnum::$AS->enum: return 'as';
             case EnumEnum::$ASM->enum: return 'asm';
@@ -823,6 +844,7 @@ class EnumEnum {
             case EnumEnum::$ENUM_BOOL->enum: return 'BOOL';
             case EnumEnum::$PURPLE_BOOL->enum: return 'bool';
             case EnumEnum::$BOOLEAN->enum: return 'boolean';
+            case EnumEnum::$BOOLEAN_NODE->enum: return 'BooleanNode';
             case EnumEnum::$BREAK->enum: return 'break';
             case EnumEnum::$BYCOPY->enum: return 'bycopy';
             case EnumEnum::$BYREF->enum: return 'byref';
@@ -866,6 +888,7 @@ class EnumEnum {
             case EnumEnum::$DEBUGGER->enum: return 'debugger';
             case EnumEnum::$DECIMAL->enum: return 'decimal';
             case EnumEnum::$DECLARE->enum: return 'declare';
+            case EnumEnum::$DESERIALIZATION_FEATURE->enum: return 'DeserializationFeature';
             case EnumEnum::$DECLTYPE->enum: return 'decltype';
             case EnumEnum::$DECODE_STRING->enum: return 'decode_string';
             case EnumEnum::$DECODER->enum: return 'Decoder';
@@ -882,6 +905,7 @@ class EnumEnum {
             case EnumEnum::$DID_SET->enum: return 'didSet';
             case EnumEnum::$DO->enum: return 'do';
             case EnumEnum::$DOUBLE->enum: return 'double';
+            case EnumEnum::$DOUBLE_NODE->enum: return 'DoubleNode';
             case EnumEnum::$DYNAMIC->enum: return 'dynamic';
             case EnumEnum::$DYNAMIC_CAST->enum: return 'dynamic_cast';
             case EnumEnum::$ELIF->enum: return 'elif';
@@ -940,6 +964,7 @@ class EnumEnum {
             case EnumEnum::$INOUT->enum: return 'inout';
             case EnumEnum::$INSTANCEOF->enum: return 'instanceof';
             case EnumEnum::$INT->enum: return 'int';
+            case EnumEnum::$INT_NODE->enum: return 'IntNode';
             case EnumEnum::$INTERFACE->enum: return 'interface';
             case EnumEnum::$INTERNAL->enum: return 'internal';
             case EnumEnum::$ISO_DATE_TIME_OFFSET_CONVERTER->enum: return 'IsoDateTimeOffsetConverter';
@@ -969,6 +994,7 @@ class EnumEnum {
             case EnumEnum::$LEFT->enum: return 'left';
             case EnumEnum::$LET->enum: return 'let';
             case EnumEnum::$LIST->enum: return 'list';
+            case EnumEnum::$LONG_NODE->enum: return 'LongNode';
             case EnumEnum::$LOCALE->enum: return 'Locale';
             case EnumEnum::$LOCK->enum: return 'lock';
             case EnumEnum::$LONG->enum: return 'long';
@@ -983,6 +1009,7 @@ class EnumEnum {
             case EnumEnum::$NEW->enum: return 'new';
             case EnumEnum::$NEWTONSOFT->enum: return 'newtonsoft';
             case EnumEnum::$NIL->enum: return 'nil';
+            case EnumEnum::$NULL_NODE->enum: return 'NullNode';
             case EnumEnum::$NO->enum: return 'NO';
             case EnumEnum::$NOEXCEPT->enum: return 'noexcept';
             case EnumEnum::$NONATOMIC->enum: return 'nonatomic';
@@ -1001,6 +1028,7 @@ class EnumEnum {
             case EnumEnum::$NULLPTR->enum: return 'nullptr';
             case EnumEnum::$NUMBER->enum: return 'number';
             case EnumEnum::$OBJECT->enum: return 'object';
+            case EnumEnum::$OBJECT_NODE->enum: return 'ObjectNode';
             case EnumEnum::$OBJECT_MAPPER->enum: return 'ObjectMapper';
             case EnumEnum::$OF->enum: return 'of';
             case EnumEnum::$ONEWAY->enum: return 'oneway';
@@ -1053,6 +1081,7 @@ class EnumEnum {
             case EnumEnum::$ENUM_SELF->enum: return 'self';
             case EnumEnum::$SENDABLE->enum: return 'Sendable';
             case EnumEnum::$SERIALIZE->enum: return 'serialize';
+            case EnumEnum::$SERIALIZATION_FEATURE->enum: return 'SerializationFeature';
             case EnumEnum::$SERIALIZER_PROVIDER->enum: return 'SerializerProvider';
             case EnumEnum::$SET->enum: return 'set';
             case EnumEnum::$SHORT->enum: return 'short';
@@ -1078,6 +1107,7 @@ class EnumEnum {
             case EnumEnum::$TEMPLATE->enum: return 'template';
             case EnumEnum::$THEN->enum: return 'then';
             case EnumEnum::$THIS->enum: return 'this';
+            case EnumEnum::$TEXT_NODE->enum: return 'TextNode';
             case EnumEnum::$THREAD_LOCAL->enum: return 'thread_local';
             case EnumEnum::$THROW->enum: return 'throw';
             case EnumEnum::$THROWS->enum: return 'throws';
@@ -1148,6 +1178,7 @@ class EnumEnum {
             case 'and_eq': return EnumEnum::$AND_EQ;
             case 'any': return EnumEnum::$ANY;
             case 'Any': return EnumEnum::$ENUM_ANY;
+            case 'ArrayNode': return EnumEnum::$ARRAY_NODE;
             case 'array': return EnumEnum::$ARRAY;
             case 'as': return EnumEnum::$AS;
             case 'asm': return EnumEnum::$ASM;
@@ -1167,6 +1198,7 @@ class EnumEnum {
             case 'BOOL': return EnumEnum::$ENUM_BOOL;
             case 'bool': return EnumEnum::$PURPLE_BOOL;
             case 'boolean': return EnumEnum::$BOOLEAN;
+            case 'BooleanNode': return EnumEnum::$BOOLEAN_NODE;
             case 'break': return EnumEnum::$BREAK;
             case 'bycopy': return EnumEnum::$BYCOPY;
             case 'byref': return EnumEnum::$BYREF;
@@ -1210,6 +1242,7 @@ class EnumEnum {
             case 'debugger': return EnumEnum::$DEBUGGER;
             case 'decimal': return EnumEnum::$DECIMAL;
             case 'declare': return EnumEnum::$DECLARE;
+            case 'DeserializationFeature': return EnumEnum::$DESERIALIZATION_FEATURE;
             case 'decltype': return EnumEnum::$DECLTYPE;
             case 'decode_string': return EnumEnum::$DECODE_STRING;
             case 'Decoder': return EnumEnum::$DECODER;
@@ -1226,6 +1259,7 @@ class EnumEnum {
             case 'didSet': return EnumEnum::$DID_SET;
             case 'do': return EnumEnum::$DO;
             case 'double': return EnumEnum::$DOUBLE;
+            case 'DoubleNode': return EnumEnum::$DOUBLE_NODE;
             case 'dynamic': return EnumEnum::$DYNAMIC;
             case 'dynamic_cast': return EnumEnum::$DYNAMIC_CAST;
             case 'elif': return EnumEnum::$ELIF;
@@ -1284,6 +1318,7 @@ class EnumEnum {
             case 'inout': return EnumEnum::$INOUT;
             case 'instanceof': return EnumEnum::$INSTANCEOF;
             case 'int': return EnumEnum::$INT;
+            case 'IntNode': return EnumEnum::$INT_NODE;
             case 'interface': return EnumEnum::$INTERFACE;
             case 'internal': return EnumEnum::$INTERNAL;
             case 'IsoDateTimeOffsetConverter': return EnumEnum::$ISO_DATE_TIME_OFFSET_CONVERTER;
@@ -1313,6 +1348,7 @@ class EnumEnum {
             case 'left': return EnumEnum::$LEFT;
             case 'let': return EnumEnum::$LET;
             case 'list': return EnumEnum::$LIST;
+            case 'LongNode': return EnumEnum::$LONG_NODE;
             case 'Locale': return EnumEnum::$LOCALE;
             case 'lock': return EnumEnum::$LOCK;
             case 'long': return EnumEnum::$LONG;
@@ -1327,6 +1363,7 @@ class EnumEnum {
             case 'new': return EnumEnum::$NEW;
             case 'newtonsoft': return EnumEnum::$NEWTONSOFT;
             case 'nil': return EnumEnum::$NIL;
+            case 'NullNode': return EnumEnum::$NULL_NODE;
             case 'NO': return EnumEnum::$NO;
             case 'noexcept': return EnumEnum::$NOEXCEPT;
             case 'nonatomic': return EnumEnum::$NONATOMIC;
@@ -1345,6 +1382,7 @@ class EnumEnum {
             case 'nullptr': return EnumEnum::$NULLPTR;
             case 'number': return EnumEnum::$NUMBER;
             case 'object': return EnumEnum::$OBJECT;
+            case 'ObjectNode': return EnumEnum::$OBJECT_NODE;
             case 'ObjectMapper': return EnumEnum::$OBJECT_MAPPER;
             case 'of': return EnumEnum::$OF;
             case 'oneway': return EnumEnum::$ONEWAY;
@@ -1397,6 +1435,7 @@ class EnumEnum {
             case 'self': return EnumEnum::$ENUM_SELF;
             case 'Sendable': return EnumEnum::$SENDABLE;
             case 'serialize': return EnumEnum::$SERIALIZE;
+            case 'SerializationFeature': return EnumEnum::$SERIALIZATION_FEATURE;
             case 'SerializerProvider': return EnumEnum::$SERIALIZER_PROVIDER;
             case 'set': return EnumEnum::$SET;
             case 'short': return EnumEnum::$SHORT;
@@ -1422,6 +1461,7 @@ class EnumEnum {
             case 'template': return EnumEnum::$TEMPLATE;
             case 'then': return EnumEnum::$THEN;
             case 'this': return EnumEnum::$THIS;
+            case 'TextNode': return EnumEnum::$TEXT_NODE;
             case 'thread_local': return EnumEnum::$THREAD_LOCAL;
             case 'throw': return EnumEnum::$THROW;
             case 'throws': return EnumEnum::$THROWS;
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..977d934 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
@@ -16,6 +16,7 @@ class TopLevel {
     private AnyClass|float|null $topLevelAny; // json:any Optional
     private Any|float|null $any; // json:Any Optional
     private ArrayClass|float|null $array; // json:array Optional
+    private ArrayNode|float|null $arrayNode; // json:ArrayNode Optional
     private AsClass|float|null $as; // json:as Optional
     private ASM|float|null $asm; // json:asm Optional
     private Assert|float|null $assert; // json:assert Optional
@@ -34,6 +35,7 @@ class TopLevel {
     private BOOLClass|float|null $bool; // json:BOOL Optional
     private UnionBoolBoolClass|float|null $purpleBool; // json:bool Optional
     private Boolean|float|null $boolean; // json:boolean Optional
+    private BooleanNode|float|null $booleanNode; // json:BooleanNode Optional
     private BreakClass|float|null $break; // json:break Optional
     private Bycopy|float|null $bycopy; // json:bycopy Optional
     private Byref|float|null $byref; // json:byref Optional
@@ -88,11 +90,13 @@ class TopLevel {
     private Del|float|null $del; // json:del Optional
     private Delegate|float|null $delegate; // json:delegate Optional
     private Delete|float|null $delete; // json:delete Optional
+    private DeserializationFeature|float|null $deserializationFeature; // json:DeserializationFeature Optional
     private Dict|float|null $dict; // json:dict Optional
     private Dictionary|float|null $dictionary; // json:dictionary Optional
     private DidSet|float|null $didSet; // json:didSet Optional
     private DoClass|float|null $do; // json:do Optional
     private Double|float|null $double; // json:double Optional
+    private DoubleNode|float|null $doubleNode; // json:DoubleNode Optional
     private ?float $dummy; // json:dummy Optional
     private Dynamic|float|null $dynamic; // json:dynamic Optional
     private DynamicCast|float|null $dynamicCast; // json:dynamic_cast Optional
@@ -154,6 +158,7 @@ class TopLevel {
     private IntClass|float|null $int; // json:int Optional
     private InterfaceClass|float|null $interface; // json:interface Optional
     private Internal|float|null $internal; // json:internal Optional
+    private IntNode|float|null $intNode; // json:IntNode Optional
     private Is|float|null $is; // json:is Optional
     private ISODateTimeOffsetConverter|float|null $isoDateTimeOffsetConverter; // json:IsoDateTimeOffsetConverter Optional
     private IterableClass|float|null $iterable; // json:iterable Optional
@@ -184,6 +189,7 @@ class TopLevel {
     private LocaleClass|float|null $locale; // json:Locale Optional
     private Lock|float|null $lock; // json:lock Optional
     private Long|float|null $long; // json:long Optional
+    private LongNode|float|null $longNode; // json:LongNode Optional
     private Map|float|null $map; // json:map Optional
     private MapEntry|float|null $mapEntry; // json:MapEntry Optional
     private MetadataPropertyHandling|float|null $metadataPropertyHandling; // json:metadata_property_handling Optional
@@ -210,10 +216,12 @@ class TopLevel {
     private NSString|float|null $nsString; // json:NSString Optional
     private NULLClass|float|null $null; // json:NULL Optional
     private UnionNullNull|float|null $topLevelNull; // json:null Optional
+    private NullNode|float|null $nullNode; // json:NullNode Optional
     private Nullptr|float|null $nullptr; // json:nullptr Optional
     private Number|float|null $number; // json:number Optional
     private ObjectClass|float|null $object; // json:object Optional
     private ObjectMapper|float|null $objectMapper; // json:ObjectMapper Optional
+    private ObjectNode|float|null $objectNode; // json:ObjectNode Optional
     private Of|float|null $of; // json:of Optional
     private Oneway|float|null $oneway; // json:oneway Optional
     private Open|float|null $open; // json:open Optional
@@ -264,6 +272,7 @@ 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 SerializationFeature|float|null $serializationFeature; // json:SerializationFeature Optional
     private Serialize|float|null $serialize; // json:serialize Optional
     private SerializerProvider|float|null $serializerProvider; // json:SerializerProvider Optional
     private Set|float|null $set; // json:set Optional
@@ -288,6 +297,7 @@ class TopLevel {
     private Synchronized|float|null $synchronized; // json:synchronized Optional
     private System|float|null $system; // json:system Optional
     private Template|float|null $template; // json:template Optional
+    private TextNode|float|null $textNode; // json:TextNode Optional
     private Then|float|null $then; // json:then Optional
     private This|float|null $topLevelThis; // json:this Optional
     private ThreadLocal|float|null $threadLocal; // json:thread_local Optional
@@ -351,6 +361,7 @@ class TopLevel {
      * @param AnyClass|float|null $topLevelAny
      * @param Any|float|null $any
      * @param ArrayClass|float|null $array
+     * @param ArrayNode|float|null $arrayNode
      * @param AsClass|float|null $as
      * @param ASM|float|null $asm
      * @param Assert|float|null $assert
@@ -369,6 +380,7 @@ class TopLevel {
      * @param BOOLClass|float|null $bool
      * @param UnionBoolBoolClass|float|null $purpleBool
      * @param Boolean|float|null $boolean
+     * @param BooleanNode|float|null $booleanNode
      * @param BreakClass|float|null $break
      * @param Bycopy|float|null $bycopy
      * @param Byref|float|null $byref
@@ -423,11 +435,13 @@ class TopLevel {
      * @param Del|float|null $del
      * @param Delegate|float|null $delegate
      * @param Delete|float|null $delete
+     * @param DeserializationFeature|float|null $deserializationFeature
      * @param Dict|float|null $dict
      * @param Dictionary|float|null $dictionary
      * @param DidSet|float|null $didSet
      * @param DoClass|float|null $do
      * @param Double|float|null $double
+     * @param DoubleNode|float|null $doubleNode
      * @param float|null $dummy
      * @param Dynamic|float|null $dynamic
      * @param DynamicCast|float|null $dynamicCast
@@ -489,6 +503,7 @@ class TopLevel {
      * @param IntClass|float|null $int
      * @param InterfaceClass|float|null $interface
      * @param Internal|float|null $internal
+     * @param IntNode|float|null $intNode
      * @param Is|float|null $is
      * @param ISODateTimeOffsetConverter|float|null $isoDateTimeOffsetConverter
      * @param IterableClass|float|null $iterable
@@ -519,6 +534,7 @@ class TopLevel {
      * @param LocaleClass|float|null $locale
      * @param Lock|float|null $lock
      * @param Long|float|null $long
+     * @param LongNode|float|null $longNode
      * @param Map|float|null $map
      * @param MapEntry|float|null $mapEntry
      * @param MetadataPropertyHandling|float|null $metadataPropertyHandling
@@ -545,10 +561,12 @@ class TopLevel {
      * @param NSString|float|null $nsString
      * @param NULLClass|float|null $null
      * @param UnionNullNull|float|null $topLevelNull
+     * @param NullNode|float|null $nullNode
      * @param Nullptr|float|null $nullptr
      * @param Number|float|null $number
      * @param ObjectClass|float|null $object
      * @param ObjectMapper|float|null $objectMapper
+     * @param ObjectNode|float|null $objectNode
      * @param Of|float|null $of
      * @param Oneway|float|null $oneway
      * @param Open|float|null $open
@@ -599,6 +617,7 @@ class TopLevel {
      * @param SelfClass|float|null $self
      * @param UnionSelfSelf|float|null $topLevelSelf
      * @param Sendable|float|null $sendable
+     * @param SerializationFeature|float|null $serializationFeature
      * @param Serialize|float|null $serialize
      * @param SerializerProvider|float|null $serializerProvider
      * @param Set|float|null $set
@@ -623,6 +642,7 @@ class TopLevel {
      * @param Synchronized|float|null $synchronized
      * @param System|float|null $system
      * @param Template|float|null $template
+     * @param TextNode|float|null $textNode
      * @param Then|float|null $then
      * @param This|float|null $topLevelThis
      * @param ThreadLocal|float|null $threadLocal
@@ -673,7 +693,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, ArrayNode|float|null $arrayNode, 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, BooleanNode|float|null $booleanNode, 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, DeserializationFeature|float|null $deserializationFeature, Dict|float|null $dict, Dictionary|float|null $dictionary, DidSet|float|null $didSet, DoClass|float|null $do, Double|float|null $double, DoubleNode|float|null $doubleNode, ?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, IntNode|float|null $intNode, 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, LongNode|float|null $longNode, 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, NullNode|float|null $nullNode, Nullptr|float|null $nullptr, Number|float|null $number, ObjectClass|float|null $object, ObjectMapper|float|null $objectMapper, ObjectNode|float|null $objectNode, 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, SerializationFeature|float|null $serializationFeature, 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, TextNode|float|null $textNode, 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) {
         $this->empty = $empty;
         $this->topLevelBool = $topLevelBool;
         $this->complex = $complex;
@@ -686,6 +706,7 @@ class TopLevel {
         $this->topLevelAny = $topLevelAny;
         $this->any = $any;
         $this->array = $array;
+        $this->arrayNode = $arrayNode;
         $this->as = $as;
         $this->asm = $asm;
         $this->assert = $assert;
@@ -704,6 +725,7 @@ class TopLevel {
         $this->bool = $bool;
         $this->purpleBool = $purpleBool;
         $this->boolean = $boolean;
+        $this->booleanNode = $booleanNode;
         $this->break = $break;
         $this->bycopy = $bycopy;
         $this->byref = $byref;
@@ -758,11 +780,13 @@ class TopLevel {
         $this->del = $del;
         $this->delegate = $delegate;
         $this->delete = $delete;
+        $this->deserializationFeature = $deserializationFeature;
         $this->dict = $dict;
         $this->dictionary = $dictionary;
         $this->didSet = $didSet;
         $this->do = $do;
         $this->double = $double;
+        $this->doubleNode = $doubleNode;
         $this->dummy = $dummy;
         $this->dynamic = $dynamic;
         $this->dynamicCast = $dynamicCast;
@@ -824,6 +848,7 @@ class TopLevel {
         $this->int = $int;
         $this->interface = $interface;
         $this->internal = $internal;
+        $this->intNode = $intNode;
         $this->is = $is;
         $this->isoDateTimeOffsetConverter = $isoDateTimeOffsetConverter;
         $this->iterable = $iterable;
@@ -854,6 +879,7 @@ class TopLevel {
         $this->locale = $locale;
         $this->lock = $lock;
         $this->long = $long;
+        $this->longNode = $longNode;
         $this->map = $map;
         $this->mapEntry = $mapEntry;
         $this->metadataPropertyHandling = $metadataPropertyHandling;
@@ -880,10 +906,12 @@ class TopLevel {
         $this->nsString = $nsString;
         $this->null = $null;
         $this->topLevelNull = $topLevelNull;
+        $this->nullNode = $nullNode;
         $this->nullptr = $nullptr;
         $this->number = $number;
         $this->object = $object;
         $this->objectMapper = $objectMapper;
+        $this->objectNode = $objectNode;
         $this->of = $of;
         $this->oneway = $oneway;
         $this->open = $open;
@@ -934,6 +962,7 @@ class TopLevel {
         $this->self = $self;
         $this->topLevelSelf = $topLevelSelf;
         $this->sendable = $sendable;
+        $this->serializationFeature = $serializationFeature;
         $this->serialize = $serialize;
         $this->serializerProvider = $serializerProvider;
         $this->set = $set;
@@ -958,6 +987,7 @@ class TopLevel {
         $this->synchronized = $synchronized;
         $this->system = $system;
         $this->template = $template;
+        $this->textNode = $textNode;
         $this->then = $then;
         $this->topLevelThis = $topLevelThis;
         $this->threadLocal = $threadLocal;
@@ -1921,6 +1951,82 @@ class TopLevel {
         return ArrayClass::sample(); /*42:array*/
     }
 
+    /**
+     * @param stdClass|float|null $value
+     * @throws Exception
+     * @return ArrayNode|float|null
+     */
+    public static function fromArrayNode(stdClass|float|null $value): ArrayNode|float|null {
+        if (is_null($value)) {
+            return $value; /*null*/
+        } elseif (is_object($value)) {
+            return ArrayNode::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 toArrayNode(): stdClass|float|null {
+        if (TopLevel::validateArrayNode($this->arrayNode))  {
+            if (is_null($this->arrayNode)) {
+                return $this->arrayNode; /*null*/
+            } elseif ($this->arrayNode instanceof ArrayNode) {
+                return $this->arrayNode->to(); /*class*/
+            } elseif (is_float($this->arrayNode) || is_int($this->arrayNode)) {
+                return $this->arrayNode; /*float*/
+            } else {
+                throw new Exception('Union value has no matching member in TopLevel');
+            }
+        }
+        throw new Exception('never get to this TopLevel::arrayNode');
+    }
+
+    /**
+     * @param ArrayNode|float|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateArrayNode(ArrayNode|float|null $value): bool {
+        if (is_null($value)) {
+            if (!is_null($value)) {
+                throw new Exception("Attribute Error:TopLevel::arrayNode");
+            }
+        } elseif ($value instanceof ArrayNode) {
+            $value->validate();
+        } elseif (is_float($value) || is_int($value)) {
+            if (!is_float($value) && !is_int($value)) {
+                throw new Exception("Attribute Error:TopLevel::arrayNode");
+            }
+        } else {
+            throw new Exception("Attribute Error:TopLevel::arrayNode");
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ArrayNode|float|null
+     */
+    public function getArrayNode(): ArrayNode|float|null {
+        if (TopLevel::validateArrayNode($this->arrayNode))  {
+            return $this->arrayNode;
+        }
+        throw new Exception('never get to getArrayNode TopLevel::arrayNode');
+    }
+
+    /**
+     * @return ArrayNode|float|null
+     */
+    public static function sampleArrayNode(): ArrayNode|float|null {
+        return ArrayNode::sample(); /*43:arrayNode*/
+    }
+
     /**
      * @param stdClass|float|null $value
      * @throws Exception
@@ -1994,7 +2100,7 @@ class TopLevel {
      * @return AsClass|float|null
      */
     public static function sampleAs(): AsClass|float|null {
-        return AsClass::sample(); /*43:as*/
+        return AsClass::sample(); /*44:as*/
     }
 
     /**
@@ -2070,7 +2176,7 @@ class TopLevel {
      * @return ASM|float|null
      */
     public static function sampleASM(): ASM|float|null {
-        return ASM::sample(); /*44:asm*/
+        return ASM::sample(); /*45:asm*/
     }
 
     /**
@@ -2146,7 +2252,7 @@ class TopLevel {
      * @return Assert|float|null
      */
     public static function sampleAssert(): Assert|float|null {
-        return Assert::sample(); /*45:assert*/
+        return Assert::sample(); /*46:assert*/
     }
 
     /**
@@ -2222,7 +2328,7 @@ class TopLevel {
      * @return Associatedtype|float|null
      */
     public static function sampleAssociatedtype(): Associatedtype|float|null {
-        return Associatedtype::sample(); /*46:associatedtype*/
+        return Associatedtype::sample(); /*47:associatedtype*/
     }
 
     /**
@@ -2298,7 +2404,7 @@ class TopLevel {
      * @return Associativity|float|null
      */
     public static function sampleAssociativity(): Associativity|float|null {
-        return Associativity::sample(); /*47:associativity*/
+        return Associativity::sample(); /*48:associativity*/
     }
 
     /**
@@ -2374,7 +2480,7 @@ class TopLevel {
      * @return Async|float|null
      */
     public static function sampleAsync(): Async|float|null {
-        return Async::sample(); /*48:async*/
+        return Async::sample(); /*49:async*/
     }
 
     /**
@@ -2450,7 +2556,7 @@ class TopLevel {
      * @return Atomic|float|null
      */
     public static function sampleAtomic(): Atomic|float|null {
-        return Atomic::sample(); /*49:atomic*/
+        return Atomic::sample(); /*50:atomic*/
     }
 
     /**
@@ -2526,7 +2632,7 @@ class TopLevel {
      * @return AtomicCancel|float|null
      */
     public static function sampleAtomicCancel(): AtomicCancel|float|null {
-        return AtomicCancel::sample(); /*50:atomicCancel*/
+        return AtomicCancel::sample(); /*51:atomicCancel*/
     }
 
     /**
@@ -2602,7 +2708,7 @@ class TopLevel {
      * @return AtomicCommit|float|null
      */
     public static function sampleAtomicCommit(): AtomicCommit|float|null {
-        return AtomicCommit::sample(); /*51:atomicCommit*/
+        return AtomicCommit::sample(); /*52:atomicCommit*/
     }
 
     /**
@@ -2678,7 +2784,7 @@ class TopLevel {
      * @return AtomicNoexcept|float|null
      */
     public static function sampleAtomicNoexcept(): AtomicNoexcept|float|null {
-        return AtomicNoexcept::sample(); /*52:atomicNoexcept*/
+        return AtomicNoexcept::sample(); /*53:atomicNoexcept*/
     }
 
     /**
@@ -2754,7 +2860,7 @@ class TopLevel {
      * @return Auto|float|null
      */
     public static function sampleAuto(): Auto|float|null {
-        return Auto::sample(); /*53:auto*/
+        return Auto::sample(); /*54:auto*/
     }
 
     /**
@@ -2830,7 +2936,7 @@ class TopLevel {
      * @return Await|float|null
      */
     public static function sampleAwait(): Await|float|null {
-        return Await::sample(); /*54:await*/
+        return Await::sample(); /*55:await*/
     }
 
     /**
@@ -2906,7 +3012,7 @@ class TopLevel {
      * @return Base|float|null
      */
     public static function sampleBase(): Base|float|null {
-        return Base::sample(); /*55:base*/
+        return Base::sample(); /*56:base*/
     }
 
     /**
@@ -2982,7 +3088,7 @@ class TopLevel {
      * @return Bitand|float|null
      */
     public static function sampleBitand(): Bitand|float|null {
-        return Bitand::sample(); /*56:bitand*/
+        return Bitand::sample(); /*57:bitand*/
     }
 
     /**
@@ -3058,7 +3164,7 @@ class TopLevel {
      * @return Bitor|float|null
      */
     public static function sampleBitor(): Bitor|float|null {
-        return Bitor::sample(); /*57:bitor*/
+        return Bitor::sample(); /*58:bitor*/
     }
 
     /**
@@ -3134,7 +3240,7 @@ class TopLevel {
      * @return BOOLClass|float|null
      */
     public static function sampleBool(): BOOLClass|float|null {
-        return BOOLClass::sample(); /*58:bool*/
+        return BOOLClass::sample(); /*59:bool*/
     }
 
     /**
@@ -3210,7 +3316,7 @@ class TopLevel {
      * @return UnionBoolBoolClass|float|null
      */
     public static function samplePurpleBool(): UnionBoolBoolClass|float|null {
-        return UnionBoolBoolClass::sample(); /*59:purpleBool*/
+        return UnionBoolBoolClass::sample(); /*60:purpleBool*/
     }
 
     /**
@@ -3286,7 +3392,83 @@ class TopLevel {
      * @return Boolean|float|null
      */
     public static function sampleBoolean(): Boolean|float|null {
-        return Boolean::sample(); /*60:boolean*/
+        return Boolean::sample(); /*61:boolean*/
+    }
+
+    /**
+     * @param stdClass|float|null $value
+     * @throws Exception
+     * @return BooleanNode|float|null
+     */
+    public static function fromBooleanNode(stdClass|float|null $value): BooleanNode|float|null {
+        if (is_null($value)) {
+            return $value; /*null*/
+        } elseif (is_object($value)) {
+            return BooleanNode::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 toBooleanNode(): stdClass|float|null {
+        if (TopLevel::validateBooleanNode($this->booleanNode))  {
+            if (is_null($this->booleanNode)) {
+                return $this->booleanNode; /*null*/
+            } elseif ($this->booleanNode instanceof BooleanNode) {
+                return $this->booleanNode->to(); /*class*/
+            } elseif (is_float($this->booleanNode) || is_int($this->booleanNode)) {
+                return $this->booleanNode; /*float*/
+            } else {
+                throw new Exception('Union value has no matching member in TopLevel');
+            }
+        }
+        throw new Exception('never get to this TopLevel::booleanNode');
+    }
+
+    /**
+     * @param BooleanNode|float|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateBooleanNode(BooleanNode|float|null $value): bool {
+        if (is_null($value)) {
+            if (!is_null($value)) {
+                throw new Exception("Attribute Error:TopLevel::booleanNode");
+            }
+        } elseif ($value instanceof BooleanNode) {
+            $value->validate();
+        } elseif (is_float($value) || is_int($value)) {
+            if (!is_float($value) && !is_int($value)) {
+                throw new Exception("Attribute Error:TopLevel::booleanNode");
+            }
+        } else {
+            throw new Exception("Attribute Error:TopLevel::booleanNode");
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return BooleanNode|float|null
+     */
+    public function getBooleanNode(): BooleanNode|float|null {
+        if (TopLevel::validateBooleanNode($this->booleanNode))  {
+            return $this->booleanNode;
+        }
+        throw new Exception('never get to getBooleanNode TopLevel::booleanNode');
+    }
+
+    /**
+     * @return BooleanNode|float|null
+     */
+    public static function sampleBooleanNode(): BooleanNode|float|null {
+        return BooleanNode::sample(); /*62:booleanNode*/
     }
 
     /**
@@ -3362,7 +3544,7 @@ class TopLevel {
      * @return BreakClass|float|null
      */
     public static function sampleBreak(): BreakClass|float|null {
-        return BreakClass::sample(); /*61:break*/
+        return BreakClass::sample(); /*63:break*/
     }
 
     /**
@@ -3438,7 +3620,7 @@ class TopLevel {
      * @return Bycopy|float|null
      */
     public static function sampleBycopy(): Bycopy|float|null {
-        return Bycopy::sample(); /*62:bycopy*/
+        return Bycopy::sample(); /*64:bycopy*/
     }
 
     /**
@@ -3514,7 +3696,7 @@ class TopLevel {
      * @return Byref|float|null
      */
     public static function sampleByref(): Byref|float|null {
-        return Byref::sample(); /*63:byref*/
+        return Byref::sample(); /*65:byref*/
     }
 
     /**
@@ -3590,7 +3772,7 @@ class TopLevel {
      * @return Byte|float|null
      */
     public static function sampleByte(): Byte|float|null {
-        return Byte::sample(); /*64:byte*/
+        return Byte::sample(); /*66:byte*/
     }
 
     /**
@@ -3666,7 +3848,7 @@ class TopLevel {
      * @return Calendar|float|null
      */
     public static function sampleCalendar(): Calendar|float|null {
-        return Calendar::sample(); /*65:calendar*/
+        return Calendar::sample(); /*67:calendar*/
     }
 
     /**
@@ -3742,7 +3924,7 @@ class TopLevel {
      * @return CaseClass|float|null
      */
     public static function sampleCase(): CaseClass|float|null {
-        return CaseClass::sample(); /*66:case*/
+        return CaseClass::sample(); /*68:case*/
     }
 
     /**
@@ -3818,7 +4000,7 @@ class TopLevel {
      * @return CatchClass|float|null
      */
     public static function sampleCatch(): CatchClass|float|null {
-        return CatchClass::sample(); /*67:catch*/
+        return CatchClass::sample(); /*69:catch*/
     }
 
     /**
@@ -3894,7 +4076,7 @@ class TopLevel {
      * @return Chan|float|null
      */
     public static function sampleChan(): Chan|float|null {
-        return Chan::sample(); /*68:chan*/
+        return Chan::sample(); /*70:chan*/
     }
 
     /**
@@ -3970,7 +4152,7 @@ class TopLevel {
      * @return Char|float|null
      */
     public static function sampleChar(): Char|float|null {
-        return Char::sample(); /*69:char*/
+        return Char::sample(); /*71:char*/
     }
 
     /**
@@ -4046,7 +4228,7 @@ class TopLevel {
      * @return Char16T|float|null
      */
     public static function sampleChar16T(): Char16T|float|null {
-        return Char16T::sample(); /*70:char16T*/
+        return Char16T::sample(); /*72:char16T*/
     }
 
     /**
@@ -4122,7 +4304,7 @@ class TopLevel {
      * @return Char32T|float|null
      */
     public static function sampleChar32T(): Char32T|float|null {
-        return Char32T::sample(); /*71:char32T*/
+        return Char32T::sample(); /*73:char32T*/
     }
 
     /**
@@ -4198,7 +4380,7 @@ class TopLevel {
      * @return Checked|float|null
      */
     public static function sampleChecked(): Checked|float|null {
-        return Checked::sample(); /*72:checked*/
+        return Checked::sample(); /*74:checked*/
     }
 
     /**
@@ -4274,7 +4456,7 @@ class TopLevel {
      * @return UnionClassClass|float|null
      */
     public static function sampleTopLevelClass(): UnionClassClass|float|null {
-        return UnionClassClass::sample(); /*73:topLevelClass*/
+        return UnionClassClass::sample(); /*75:topLevelClass*/
     }
 
     /**
@@ -4350,7 +4532,7 @@ class TopLevel {
      * @return ClassClass|float|null
      */
     public static function sampleClass(): ClassClass|float|null {
-        return ClassClass::sample(); /*74:class*/
+        return ClassClass::sample(); /*76:class*/
     }
 
     /**
@@ -4426,7 +4608,7 @@ class TopLevel {
      * @return CloneClass|float|null
      */
     public static function sampleClone(): CloneClass|float|null {
-        return CloneClass::sample(); /*75:clone*/
+        return CloneClass::sample(); /*77:clone*/
     }
 
     /**
@@ -4502,7 +4684,7 @@ class TopLevel {
      * @return CoAwait|float|null
      */
     public static function sampleCoAwait(): CoAwait|float|null {
-        return CoAwait::sample(); /*76:coAwait*/
+        return CoAwait::sample(); /*78:coAwait*/
     }
 
     /**
@@ -4578,7 +4760,7 @@ class TopLevel {
      * @return CoReturn|float|null
      */
     public static function sampleCoReturn(): CoReturn|float|null {
-        return CoReturn::sample(); /*77:coReturn*/
+        return CoReturn::sample(); /*79:coReturn*/
     }
 
     /**
@@ -4654,7 +4836,7 @@ class TopLevel {
      * @return CoYield|float|null
      */
     public static function sampleCoYield(): CoYield|float|null {
-        return CoYield::sample(); /*78:coYield*/
+        return CoYield::sample(); /*80:coYield*/
     }
 
     /**
@@ -4730,7 +4912,7 @@ class TopLevel {
      * @return Codable|float|null
      */
     public static function sampleCodable(): Codable|float|null {
-        return Codable::sample(); /*79:codable*/
+        return Codable::sample(); /*81:codable*/
     }
 
     /**
@@ -4806,7 +4988,7 @@ class TopLevel {
      * @return CodingKey|float|null
      */
     public static function sampleCodingKey(): CodingKey|float|null {
-        return CodingKey::sample(); /*80:codingKey*/
+        return CodingKey::sample(); /*82:codingKey*/
     }
 
     /**
@@ -4882,7 +5064,7 @@ class TopLevel {
      * @return CodingKeys|float|null
      */
     public static function sampleCodingKeys(): CodingKeys|float|null {
-        return CodingKeys::sample(); /*81:codingKeys*/
+        return CodingKeys::sample(); /*83:codingKeys*/
     }
 
     /**
@@ -4958,7 +5140,7 @@ class TopLevel {
      * @return Compl|float|null
      */
     public static function sampleCompl(): Compl|float|null {
-        return Compl::sample(); /*82:compl*/
+        return Compl::sample(); /*84:compl*/
     }
 
     /**
@@ -5034,7 +5216,7 @@ class TopLevel {
      * @return Concept|float|null
      */
     public static function sampleConcept(): Concept|float|null {
-        return Concept::sample(); /*83:concept*/
+        return Concept::sample(); /*85:concept*/
     }
 
     /**
@@ -5110,7 +5292,7 @@ class TopLevel {
      * @return Console|float|null
      */
     public static function sampleConsole(): Console|float|null {
-        return Console::sample(); /*84:console*/
+        return Console::sample(); /*86:console*/
     }
 
     /**
@@ -5186,7 +5368,7 @@ class TopLevel {
      * @return ConstClass|float|null
      */
     public static function sampleConst(): ConstClass|float|null {
-        return ConstClass::sample(); /*85:const*/
+        return ConstClass::sample(); /*87:const*/
     }
 
     /**
@@ -5262,7 +5444,7 @@ class TopLevel {
      * @return ConstCast|float|null
      */
     public static function sampleConstCast(): ConstCast|float|null {
-        return ConstCast::sample(); /*86:constCast*/
+        return ConstCast::sample(); /*88:constCast*/
     }
 
     /**
@@ -5338,7 +5520,7 @@ class TopLevel {
      * @return Constexpr|float|null
      */
     public static function sampleConstexpr(): Constexpr|float|null {
-        return Constexpr::sample(); /*87:constexpr*/
+        return Constexpr::sample(); /*89:constexpr*/
     }
 
     /**
@@ -5414,7 +5596,7 @@ class TopLevel {
      * @return Constructor|float|null
      */
     public static function sampleConstructor(): Constructor|float|null {
-        return Constructor::sample(); /*88:constructor*/
+        return Constructor::sample(); /*90:constructor*/
     }
 
     /**
@@ -5490,7 +5672,7 @@ class TopLevel {
      * @return ContinueClass|float|null
      */
     public static function sampleContinue(): ContinueClass|float|null {
-        return ContinueClass::sample(); /*89:continue*/
+        return ContinueClass::sample(); /*91:continue*/
     }
 
     /**
@@ -5566,7 +5748,7 @@ class TopLevel {
      * @return Convenience|float|null
      */
     public static function sampleConvenience(): Convenience|float|null {
-        return Convenience::sample(); /*90:convenience*/
+        return Convenience::sample(); /*92:convenience*/
     }
 
     /**
@@ -5642,7 +5824,7 @@ class TopLevel {
      * @return Convert|float|null
      */
     public static function sampleConvert(): Convert|float|null {
-        return Convert::sample(); /*91:convert*/
+        return Convert::sample(); /*93:convert*/
     }
 
     /**
@@ -5718,7 +5900,7 @@ class TopLevel {
      * @return ConverterClass|float|null
      */
     public static function sampleConverter(): ConverterClass|float|null {
-        return ConverterClass::sample(); /*92:converter*/
+        return ConverterClass::sample(); /*94:converter*/
     }
 
     /**
@@ -5794,7 +5976,7 @@ class TopLevel {
      * @return CultureInfo|float|null
      */
     public static function sampleCultureInfo(): CultureInfo|float|null {
-        return CultureInfo::sample(); /*93:cultureInfo*/
+        return CultureInfo::sample(); /*95:cultureInfo*/
     }
 
     /**
@@ -5870,7 +6052,7 @@ class TopLevel {
      * @return Date|float|null
      */
     public static function sampleDate(): Date|float|null {
-        return Date::sample(); /*94:date*/
+        return Date::sample(); /*96:date*/
     }
 
     /**
@@ -5946,7 +6128,7 @@ class TopLevel {
      * @return DateParseHandling|float|null
      */
     public static function sampleDateParseHandling(): DateParseHandling|float|null {
-        return DateParseHandling::sample(); /*95:dateParseHandling*/
+        return DateParseHandling::sample(); /*97:dateParseHandling*/
     }
 
     /**
@@ -6022,7 +6204,7 @@ class TopLevel {
      * @return DateFormatter|float|null
      */
     public static function sampleDateFormatter(): DateFormatter|float|null {
-        return DateFormatter::sample(); /*96:dateFormatter*/
+        return DateFormatter::sample(); /*98:dateFormatter*/
     }
 
     /**
@@ -6098,7 +6280,7 @@ class TopLevel {
      * @return DateOnly|float|null
      */
     public static function sampleDateOnly(): DateOnly|float|null {
-        return DateOnly::sample(); /*97:dateOnly*/
+        return DateOnly::sample(); /*99:dateOnly*/
     }
 
     /**
@@ -6174,7 +6356,7 @@ class TopLevel {
      * @return DateOnlyConverter|float|null
      */
     public static function sampleDateOnlyConverter(): DateOnlyConverter|float|null {
-        return DateOnlyConverter::sample(); /*98:dateOnlyConverter*/
+        return DateOnlyConverter::sample(); /*100:dateOnlyConverter*/
     }
 
     /**
@@ -6250,7 +6432,7 @@ class TopLevel {
      * @return DateTimeClass|float|null
      */
     public static function sampleDateTime(): DateTimeClass|float|null {
-        return DateTimeClass::sample(); /*99:dateTime*/
+        return DateTimeClass::sample(); /*101:dateTime*/
     }
 
     /**
@@ -6326,7 +6508,7 @@ class TopLevel {
      * @return DateTimeStyles|float|null
      */
     public static function sampleDateTimeStyles(): DateTimeStyles|float|null {
-        return DateTimeStyles::sample(); /*100:dateTimeStyles*/
+        return DateTimeStyles::sample(); /*102:dateTimeStyles*/
     }
 
     /**
@@ -6402,7 +6584,7 @@ class TopLevel {
      * @return Debugger|float|null
      */
     public static function sampleDebugger(): Debugger|float|null {
-        return Debugger::sample(); /*101:debugger*/
+        return Debugger::sample(); /*103:debugger*/
     }
 
     /**
@@ -6478,7 +6660,7 @@ class TopLevel {
      * @return Decimal|float|null
      */
     public static function sampleDecimal(): Decimal|float|null {
-        return Decimal::sample(); /*102:decimal*/
+        return Decimal::sample(); /*104:decimal*/
     }
 
     /**
@@ -6554,7 +6736,7 @@ class TopLevel {
      * @return DeclareClass|float|null
      */
     public static function sampleDeclare(): DeclareClass|float|null {
-        return DeclareClass::sample(); /*103:declare*/
+        return DeclareClass::sample(); /*105:declare*/
     }
 
     /**
@@ -6630,7 +6812,7 @@ class TopLevel {
      * @return Decltype|float|null
      */
     public static function sampleDecltype(): Decltype|float|null {
-        return Decltype::sample(); /*104:decltype*/
+        return Decltype::sample(); /*106:decltype*/
     }
 
     /**
@@ -6706,7 +6888,7 @@ class TopLevel {
      * @return DecodeString|float|null
      */
     public static function sampleDecodeString(): DecodeString|float|null {
-        return DecodeString::sample(); /*105:decodeString*/
+        return DecodeString::sample(); /*107:decodeString*/
     }
 
     /**
@@ -6782,7 +6964,7 @@ class TopLevel {
      * @return Decoder|float|null
      */
     public static function sampleDecoder(): Decoder|float|null {
-        return Decoder::sample(); /*106:decoder*/
+        return Decoder::sample(); /*108:decoder*/
     }
 
     /**
@@ -6858,7 +7040,7 @@ class TopLevel {
      * @return DecodingError|float|null
      */
     public static function sampleDecodingError(): DecodingError|float|null {
-        return DecodingError::sample(); /*107:decodingError*/
+        return DecodingError::sample(); /*109:decodingError*/
     }
 
     /**
@@ -6934,7 +7116,7 @@ class TopLevel {
      * @return Def|float|null
      */
     public static function sampleDef(): Def|float|null {
-        return Def::sample(); /*108:def*/
+        return Def::sample(); /*110:def*/
     }
 
     /**
@@ -7010,7 +7192,7 @@ class TopLevel {
      * @return DefaultClass|float|null
      */
     public static function sampleDefault(): DefaultClass|float|null {
-        return DefaultClass::sample(); /*109:default*/
+        return DefaultClass::sample(); /*111:default*/
     }
 
     /**
@@ -7086,7 +7268,7 @@ class TopLevel {
      * @return Defer|float|null
      */
     public static function sampleDefer(): Defer|float|null {
-        return Defer::sample(); /*110:defer*/
+        return Defer::sample(); /*112:defer*/
     }
 
     /**
@@ -7162,7 +7344,7 @@ class TopLevel {
      * @return Deinit|float|null
      */
     public static function sampleDeinit(): Deinit|float|null {
-        return Deinit::sample(); /*111:deinit*/
+        return Deinit::sample(); /*113:deinit*/
     }
 
     /**
@@ -7238,7 +7420,7 @@ class TopLevel {
      * @return Del|float|null
      */
     public static function sampleDel(): Del|float|null {
-        return Del::sample(); /*112:del*/
+        return Del::sample(); /*114:del*/
     }
 
     /**
@@ -7314,7 +7496,7 @@ class TopLevel {
      * @return Delegate|float|null
      */
     public static function sampleDelegate(): Delegate|float|null {
-        return Delegate::sample(); /*113:delegate*/
+        return Delegate::sample(); /*115:delegate*/
     }
 
     /**
@@ -7390,7 +7572,83 @@ class TopLevel {
      * @return Delete|float|null
      */
     public static function sampleDelete(): Delete|float|null {
-        return Delete::sample(); /*114:delete*/
+        return Delete::sample(); /*116:delete*/
+    }
+
+    /**
+     * @param stdClass|float|null $value
+     * @throws Exception
+     * @return DeserializationFeature|float|null
+     */
+    public static function fromDeserializationFeature(stdClass|float|null $value): DeserializationFeature|float|null {
+        if (is_null($value)) {
+            return $value; /*null*/
+        } elseif (is_object($value)) {
+            return DeserializationFeature::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 toDeserializationFeature(): stdClass|float|null {
+        if (TopLevel::validateDeserializationFeature($this->deserializationFeature))  {
+            if (is_null($this->deserializationFeature)) {
+                return $this->deserializationFeature; /*null*/
+            } elseif ($this->deserializationFeature instanceof DeserializationFeature) {
+                return $this->deserializationFeature->to(); /*class*/
+            } elseif (is_float($this->deserializationFeature) || is_int($this->deserializationFeature)) {
+                return $this->deserializationFeature; /*float*/
+            } else {
+                throw new Exception('Union value has no matching member in TopLevel');
+            }
+        }
+        throw new Exception('never get to this TopLevel::deserializationFeature');
+    }
+
+    /**
+     * @param DeserializationFeature|float|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDeserializationFeature(DeserializationFeature|float|null $value): bool {
+        if (is_null($value)) {
+            if (!is_null($value)) {
+                throw new Exception("Attribute Error:TopLevel::deserializationFeature");
+            }
+        } elseif ($value instanceof DeserializationFeature) {
+            $value->validate();
+        } elseif (is_float($value) || is_int($value)) {
+            if (!is_float($value) && !is_int($value)) {
+                throw new Exception("Attribute Error:TopLevel::deserializationFeature");
+            }
+        } else {
+            throw new Exception("Attribute Error:TopLevel::deserializationFeature");
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return DeserializationFeature|float|null
+     */
+    public function getDeserializationFeature(): DeserializationFeature|float|null {
+        if (TopLevel::validateDeserializationFeature($this->deserializationFeature))  {
+            return $this->deserializationFeature;
+        }
+        throw new Exception('never get to getDeserializationFeature TopLevel::deserializationFeature');
+    }
+
+    /**
+     * @return DeserializationFeature|float|null
+     */
+    public static function sampleDeserializationFeature(): DeserializationFeature|float|null {
+        return DeserializationFeature::sample(); /*117:deserializationFeature*/
     }
 
     /**
@@ -7466,7 +7724,7 @@ class TopLevel {
      * @return Dict|float|null
      */
     public static function sampleDict(): Dict|float|null {
-        return Dict::sample(); /*115:dict*/
+        return Dict::sample(); /*118:dict*/
     }
 
     /**
@@ -7542,7 +7800,7 @@ class TopLevel {
      * @return Dictionary|float|null
      */
     public static function sampleDictionary(): Dictionary|float|null {
-        return Dictionary::sample(); /*116:dictionary*/
+        return Dictionary::sample(); /*119:dictionary*/
     }
 
     /**
@@ -7618,7 +7876,7 @@ class TopLevel {
      * @return DidSet|float|null
      */
     public static function sampleDidSet(): DidSet|float|null {
-        return DidSet::sample(); /*117:didSet*/
+        return DidSet::sample(); /*120:didSet*/
     }
 
     /**
@@ -7694,7 +7952,7 @@ class TopLevel {
      * @return DoClass|float|null
      */
     public static function sampleDo(): DoClass|float|null {
-        return DoClass::sample(); /*118:do*/
+        return DoClass::sample(); /*121:do*/
     }
 
     /**
@@ -7770,7 +8028,83 @@ class TopLevel {
      * @return Double|float|null
      */
     public static function sampleDouble(): Double|float|null {
-        return Double::sample(); /*119:double*/
+        return Double::sample(); /*122:double*/
+    }
+
+    /**
+     * @param stdClass|float|null $value
+     * @throws Exception
+     * @return DoubleNode|float|null
+     */
+    public static function fromDoubleNode(stdClass|float|null $value): DoubleNode|float|null {
+        if (is_null($value)) {
+            return $value; /*null*/
+        } elseif (is_object($value)) {
+            return DoubleNode::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 toDoubleNode(): stdClass|float|null {
+        if (TopLevel::validateDoubleNode($this->doubleNode))  {
+            if (is_null($this->doubleNode)) {
+                return $this->doubleNode; /*null*/
+            } elseif ($this->doubleNode instanceof DoubleNode) {
+                return $this->doubleNode->to(); /*class*/
+            } elseif (is_float($this->doubleNode) || is_int($this->doubleNode)) {
+                return $this->doubleNode; /*float*/
+            } else {
+                throw new Exception('Union value has no matching member in TopLevel');
+            }
+        }
+        throw new Exception('never get to this TopLevel::doubleNode');
+    }
+
+    /**
+     * @param DoubleNode|float|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateDoubleNode(DoubleNode|float|null $value): bool {
+        if (is_null($value)) {
+            if (!is_null($value)) {
+                throw new Exception("Attribute Error:TopLevel::doubleNode");
+            }
+        } elseif ($value instanceof DoubleNode) {
+            $value->validate();
+        } elseif (is_float($value) || is_int($value)) {
+            if (!is_float($value) && !is_int($value)) {
+                throw new Exception("Attribute Error:TopLevel::doubleNode");
+            }
+        } else {
+            throw new Exception("Attribute Error:TopLevel::doubleNode");
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return DoubleNode|float|null
+     */
+    public function getDoubleNode(): DoubleNode|float|null {
+        if (TopLevel::validateDoubleNode($this->doubleNode))  {
+            return $this->doubleNode;
+        }
+        throw new Exception('never get to getDoubleNode TopLevel::doubleNode');
+    }
+
+    /**
+     * @return DoubleNode|float|null
+     */
+    public static function sampleDoubleNode(): DoubleNode|float|null {
+        return DoubleNode::sample(); /*123:doubleNode*/
     }
 
     /**
@@ -7827,7 +8161,7 @@ class TopLevel {
      * @return ?float
      */
     public static function sampleDummy(): ?float {
-        return 120.12; /*120:dummy*/
+        return 124.124; /*124:dummy*/
     }
 
     /**
@@ -7903,7 +8237,7 @@ class TopLevel {
      * @return Dynamic|float|null
      */
     public static function sampleDynamic(): Dynamic|float|null {
-        return Dynamic::sample(); /*121:dynamic*/
+        return Dynamic::sample(); /*125:dynamic*/
     }
 
     /**
@@ -7979,7 +8313,7 @@ class TopLevel {
      * @return DynamicCast|float|null
      */
     public static function sampleDynamicCast(): DynamicCast|float|null {
-        return DynamicCast::sample(); /*122:dynamicCast*/
+        return DynamicCast::sample(); /*126:dynamicCast*/
     }
 
     /**
@@ -8055,7 +8389,7 @@ class TopLevel {
      * @return Elif|float|null
      */
     public static function sampleElif(): Elif|float|null {
-        return Elif::sample(); /*123:elif*/
+        return Elif::sample(); /*127:elif*/
     }
 
     /**
@@ -8131,7 +8465,7 @@ class TopLevel {
      * @return ElseClass|float|null
      */
     public static function sampleElse(): ElseClass|float|null {
-        return ElseClass::sample(); /*124:else*/
+        return ElseClass::sample(); /*128:else*/
     }
 
     /**
@@ -8207,7 +8541,7 @@ class TopLevel {
      * @return EncodeQuickType|float|null
      */
     public static function sampleEncodeQuickType(): EncodeQuickType|float|null {
-        return EncodeQuickType::sample(); /*125:encodeQuickType*/
+        return EncodeQuickType::sample(); /*129:encodeQuickType*/
     }
 
     /**
@@ -8283,7 +8617,7 @@ class TopLevel {
      * @return Encoder|float|null
      */
     public static function sampleEncoder(): Encoder|float|null {
-        return Encoder::sample(); /*126:encoder*/
+        return Encoder::sample(); /*130:encoder*/
     }
 
     /**
@@ -8359,7 +8693,7 @@ class TopLevel {
      * @return EnumClass|float|null
      */
     public static function sampleEnum(): EnumClass|float|null {
-        return EnumClass::sample(); /*127:enum*/
+        return EnumClass::sample(); /*131:enum*/
     }
 
     /**
@@ -8435,7 +8769,7 @@ class TopLevel {
      * @return EnumValues|float|null
      */
     public static function sampleEnumValues(): EnumValues|float|null {
-        return EnumValues::sample(); /*128:enumValues*/
+        return EnumValues::sample(); /*132:enumValues*/
     }
 
     /**
@@ -8511,7 +8845,7 @@ class TopLevel {
      * @return EqualityContract|float|null
      */
     public static function sampleEqualityContract(): EqualityContract|float|null {
-        return EqualityContract::sample(); /*129:equalityContract*/
+        return EqualityContract::sample(); /*133:equalityContract*/
     }
 
     /**
@@ -8587,7 +8921,7 @@ class TopLevel {
      * @return Equatable|float|null
      */
     public static function sampleEquatable(): Equatable|float|null {
-        return Equatable::sample(); /*130:equatable*/
+        return Equatable::sample(); /*134:equatable*/
     }
 
     /**
@@ -8663,7 +8997,7 @@ class TopLevel {
      * @return Event|float|null
      */
     public static function sampleEvent(): Event|float|null {
-        return Event::sample(); /*131:event*/
+        return Event::sample(); /*135:event*/
     }
 
     /**
@@ -8739,7 +9073,7 @@ class TopLevel {
      * @return Except|float|null
      */
     public static function sampleExcept(): Except|float|null {
-        return Except::sample(); /*132:except*/
+        return Except::sample(); /*136:except*/
     }
 
     /**
@@ -8815,7 +9149,7 @@ class TopLevel {
      * @return ExceptionClass|float|null
      */
     public static function sampleException(): ExceptionClass|float|null {
-        return ExceptionClass::sample(); /*133:exception*/
+        return ExceptionClass::sample(); /*137:exception*/
     }
 
     /**
@@ -8891,7 +9225,7 @@ class TopLevel {
      * @return Explicit|float|null
      */
     public static function sampleExplicit(): Explicit|float|null {
-        return Explicit::sample(); /*134:explicit*/
+        return Explicit::sample(); /*138:explicit*/
     }
 
     /**
@@ -8967,7 +9301,7 @@ class TopLevel {
      * @return Export|float|null
      */
     public static function sampleExport(): Export|float|null {
-        return Export::sample(); /*135:export*/
+        return Export::sample(); /*139:export*/
     }
 
     /**
@@ -9043,7 +9377,7 @@ class TopLevel {
      * @return Exposing|float|null
      */
     public static function sampleExposing(): Exposing|float|null {
-        return Exposing::sample(); /*136:exposing*/
+        return Exposing::sample(); /*140:exposing*/
     }
 
     /**
@@ -9119,7 +9453,7 @@ class TopLevel {
      * @return ExtendsClass|float|null
      */
     public static function sampleExtends(): ExtendsClass|float|null {
-        return ExtendsClass::sample(); /*137:extends*/
+        return ExtendsClass::sample(); /*141:extends*/
     }
 
     /**
@@ -9195,7 +9529,7 @@ class TopLevel {
      * @return Extension|float|null
      */
     public static function sampleExtension(): Extension|float|null {
-        return Extension::sample(); /*138:extension*/
+        return Extension::sample(); /*142:extension*/
     }
 
     /**
@@ -9271,7 +9605,7 @@ class TopLevel {
      * @return Extern|float|null
      */
     public static function sampleExtern(): Extern|float|null {
-        return Extern::sample(); /*139:extern*/
+        return Extern::sample(); /*143:extern*/
     }
 
     /**
@@ -9347,7 +9681,7 @@ class TopLevel {
      * @return Fallthrough|float|null
      */
     public static function sampleFallthrough(): Fallthrough|float|null {
-        return Fallthrough::sample(); /*140:fallthrough*/
+        return Fallthrough::sample(); /*144:fallthrough*/
     }
 
     /**
@@ -9423,7 +9757,7 @@ class TopLevel {
      * @return UnionFalseFalse|float|null
      */
     public static function sampleTopLevelFalse(): UnionFalseFalse|float|null {
-        return UnionFalseFalse::sample(); /*141:topLevelFalse*/
+        return UnionFalseFalse::sample(); /*145:topLevelFalse*/
     }
 
     /**
@@ -9499,7 +9833,7 @@ class TopLevel {
      * @return FalseClass|float|null
      */
     public static function sampleFalse(): FalseClass|float|null {
-        return FalseClass::sample(); /*142:false*/
+        return FalseClass::sample(); /*146:false*/
     }
 
     /**
@@ -9575,7 +9909,7 @@ class TopLevel {
      * @return Fileprivate|float|null
      */
     public static function sampleFileprivate(): Fileprivate|float|null {
-        return Fileprivate::sample(); /*143:fileprivate*/
+        return Fileprivate::sample(); /*147:fileprivate*/
     }
 
     /**
@@ -9651,7 +9985,7 @@ class TopLevel {
      * @return FinalClass|float|null
      */
     public static function sampleFinal(): FinalClass|float|null {
-        return FinalClass::sample(); /*144:final*/
+        return FinalClass::sample(); /*148:final*/
     }
 
     /**
@@ -9727,7 +10061,7 @@ class TopLevel {
      * @return FinallyClass|float|null
      */
     public static function sampleFinally(): FinallyClass|float|null {
-        return FinallyClass::sample(); /*145:finally*/
+        return FinallyClass::sample(); /*149:finally*/
     }
 
     /**
@@ -9803,7 +10137,7 @@ class TopLevel {
      * @return Fixed|float|null
      */
     public static function sampleFixed(): Fixed|float|null {
-        return Fixed::sample(); /*146:fixed*/
+        return Fixed::sample(); /*150:fixed*/
     }
 
     /**
@@ -9879,7 +10213,7 @@ class TopLevel {
      * @return FloatClass|float|null
      */
     public static function sampleFloat(): FloatClass|float|null {
-        return FloatClass::sample(); /*147:float*/
+        return FloatClass::sample(); /*151:float*/
     }
 
     /**
@@ -9955,7 +10289,7 @@ class TopLevel {
      * @return ForClass|float|null
      */
     public static function sampleFor(): ForClass|float|null {
-        return ForClass::sample(); /*148:for*/
+        return ForClass::sample(); /*152:for*/
     }
 
     /**
@@ -10031,7 +10365,7 @@ class TopLevel {
      * @return ForeachClass|float|null
      */
     public static function sampleForeach(): ForeachClass|float|null {
-        return ForeachClass::sample(); /*149:foreach*/
+        return ForeachClass::sample(); /*153:foreach*/
     }
 
     /**
@@ -10107,7 +10441,7 @@ class TopLevel {
      * @return FormatException|float|null
      */
     public static function sampleFormatException(): FormatException|float|null {
-        return FormatException::sample(); /*150:formatException*/
+        return FormatException::sample(); /*154:formatException*/
     }
 
     /**
@@ -10183,7 +10517,7 @@ class TopLevel {
      * @return Friend|float|null
      */
     public static function sampleFriend(): Friend|float|null {
-        return Friend::sample(); /*151:friend*/
+        return Friend::sample(); /*155:friend*/
     }
 
     /**
@@ -10259,7 +10593,7 @@ class TopLevel {
      * @return From|float|null
      */
     public static function sampleFrom(): From|float|null {
-        return From::sample(); /*152:from*/
+        return From::sample(); /*156:from*/
     }
 
     /**
@@ -10335,7 +10669,7 @@ class TopLevel {
      * @return FromJSON|float|null
      */
     public static function sampleFromJSON(): FromJSON|float|null {
-        return FromJSON::sample(); /*153:fromJSON*/
+        return FromJSON::sample(); /*157:fromJSON*/
     }
 
     /**
@@ -10411,7 +10745,7 @@ class TopLevel {
      * @return Func|float|null
      */
     public static function sampleFunc(): Func|float|null {
-        return Func::sample(); /*154:func*/
+        return Func::sample(); /*158:func*/
     }
 
     /**
@@ -10487,7 +10821,7 @@ class TopLevel {
      * @return FunctionClass|float|null
      */
     public static function sampleFunction(): FunctionClass|float|null {
-        return FunctionClass::sample(); /*155:function*/
+        return FunctionClass::sample(); /*159:function*/
     }
 
     /**
@@ -10563,7 +10897,7 @@ class TopLevel {
      * @return Get|float|null
      */
     public static function sampleGet(): Get|float|null {
-        return Get::sample(); /*156:get*/
+        return Get::sample(); /*160:get*/
     }
 
     /**
@@ -10639,7 +10973,7 @@ class TopLevel {
      * @return GlobalClass|float|null
      */
     public static function sampleGlobal(): GlobalClass|float|null {
-        return GlobalClass::sample(); /*157:global*/
+        return GlobalClass::sample(); /*161:global*/
     }
 
     /**
@@ -10715,7 +11049,7 @@ class TopLevel {
      * @return Go|float|null
      */
     public static function sampleGo(): Go|float|null {
-        return Go::sample(); /*158:go*/
+        return Go::sample(); /*162:go*/
     }
 
     /**
@@ -10791,7 +11125,7 @@ class TopLevel {
      * @return GotoClass|float|null
      */
     public static function sampleGoto(): GotoClass|float|null {
-        return GotoClass::sample(); /*159:goto*/
+        return GotoClass::sample(); /*163:goto*/
     }
 
     /**
@@ -10867,7 +11201,7 @@ class TopLevel {
      * @return Guard|float|null
      */
     public static function sampleGuard(): Guard|float|null {
-        return Guard::sample(); /*160:guard*/
+        return Guard::sample(); /*164:guard*/
     }
 
     /**
@@ -10943,7 +11277,7 @@ class TopLevel {
      * @return Hashable|float|null
      */
     public static function sampleHashable(): Hashable|float|null {
-        return Hashable::sample(); /*161:hashable*/
+        return Hashable::sample(); /*165:hashable*/
     }
 
     /**
@@ -11019,7 +11353,7 @@ class TopLevel {
      * @return HashCode|float|null
      */
     public static function sampleHashCode(): HashCode|float|null {
-        return HashCode::sample(); /*162:hashCode*/
+        return HashCode::sample(); /*166:hashCode*/
     }
 
     /**
@@ -11095,7 +11429,7 @@ class TopLevel {
      * @return Hasher|float|null
      */
     public static function sampleHasher(): Hasher|float|null {
-        return Hasher::sample(); /*163:hasher*/
+        return Hasher::sample(); /*167:hasher*/
     }
 
     /**
@@ -11171,7 +11505,7 @@ class TopLevel {
      * @return HasOwnProperty|float|null
      */
     public static function sampleHasOwnProperty(): HasOwnProperty|float|null {
-        return HasOwnProperty::sample(); /*164:hasOwnProperty*/
+        return HasOwnProperty::sample(); /*168:hasOwnProperty*/
     }
 
     /**
@@ -11247,7 +11581,7 @@ class TopLevel {
      * @return ID|float|null
      */
     public static function sampleID(): ID|float|null {
-        return ID::sample(); /*165:id*/
+        return ID::sample(); /*169:id*/
     }
 
     /**
@@ -11323,7 +11657,7 @@ class TopLevel {
      * @return IfClass|float|null
      */
     public static function sampleIf(): IfClass|float|null {
-        return IfClass::sample(); /*166:if*/
+        return IfClass::sample(); /*170:if*/
     }
 
     /**
@@ -11399,7 +11733,7 @@ class TopLevel {
      * @return Imp|float|null
      */
     public static function sampleImp(): Imp|float|null {
-        return Imp::sample(); /*167:imp*/
+        return Imp::sample(); /*171:imp*/
     }
 
     /**
@@ -11475,7 +11809,7 @@ class TopLevel {
      * @return ImplementsClass|float|null
      */
     public static function sampleImplements(): ImplementsClass|float|null {
-        return ImplementsClass::sample(); /*168:implements*/
+        return ImplementsClass::sample(); /*172:implements*/
     }
 
     /**
@@ -11551,7 +11885,7 @@ class TopLevel {
      * @return Implicit|float|null
      */
     public static function sampleImplicit(): Implicit|float|null {
-        return Implicit::sample(); /*169:implicit*/
+        return Implicit::sample(); /*173:implicit*/
     }
 
     /**
@@ -11627,7 +11961,7 @@ class TopLevel {
      * @return Import|float|null
      */
     public static function sampleImport(): Import|float|null {
-        return Import::sample(); /*170:import*/
+        return Import::sample(); /*174:import*/
     }
 
     /**
@@ -11703,7 +12037,7 @@ class TopLevel {
      * @return In|float|null
      */
     public static function sampleIn(): In|float|null {
-        return In::sample(); /*171:in*/
+        return In::sample(); /*175:in*/
     }
 
     /**
@@ -11779,7 +12113,7 @@ class TopLevel {
      * @return Indirect|float|null
      */
     public static function sampleIndirect(): Indirect|float|null {
-        return Indirect::sample(); /*172:indirect*/
+        return Indirect::sample(); /*176:indirect*/
     }
 
     /**
@@ -11855,7 +12189,7 @@ class TopLevel {
      * @return Infix|float|null
      */
     public static function sampleInfix(): Infix|float|null {
-        return Infix::sample(); /*173:infix*/
+        return Infix::sample(); /*177:infix*/
     }
 
     /**
@@ -11931,7 +12265,7 @@ class TopLevel {
      * @return Init|float|null
      */
     public static function sampleInit(): Init|float|null {
-        return Init::sample(); /*174:init*/
+        return Init::sample(); /*178:init*/
     }
 
     /**
@@ -12007,7 +12341,7 @@ class TopLevel {
      * @return Inline|float|null
      */
     public static function sampleInline(): Inline|float|null {
-        return Inline::sample(); /*175:inline*/
+        return Inline::sample(); /*179:inline*/
     }
 
     /**
@@ -12083,7 +12417,7 @@ class TopLevel {
      * @return Inout|float|null
      */
     public static function sampleInout(): Inout|float|null {
-        return Inout::sample(); /*176:inout*/
+        return Inout::sample(); /*180:inout*/
     }
 
     /**
@@ -12159,7 +12493,7 @@ class TopLevel {
      * @return InstanceofClass|float|null
      */
     public static function sampleInstanceof(): InstanceofClass|float|null {
-        return InstanceofClass::sample(); /*177:instanceof*/
+        return InstanceofClass::sample(); /*181:instanceof*/
     }
 
     /**
@@ -12235,7 +12569,7 @@ class TopLevel {
      * @return IntClass|float|null
      */
     public static function sampleInt(): IntClass|float|null {
-        return IntClass::sample(); /*178:int*/
+        return IntClass::sample(); /*182:int*/
     }
 
     /**
@@ -12311,7 +12645,7 @@ class TopLevel {
      * @return InterfaceClass|float|null
      */
     public static function sampleInterface(): InterfaceClass|float|null {
-        return InterfaceClass::sample(); /*179:interface*/
+        return InterfaceClass::sample(); /*183:interface*/
     }
 
     /**
@@ -12387,7 +12721,83 @@ class TopLevel {
      * @return Internal|float|null
      */
     public static function sampleInternal(): Internal|float|null {
-        return Internal::sample(); /*180:internal*/
+        return Internal::sample(); /*184:internal*/
+    }
+
+    /**
+     * @param stdClass|float|null $value
+     * @throws Exception
+     * @return IntNode|float|null
+     */
+    public static function fromIntNode(stdClass|float|null $value): IntNode|float|null {
+        if (is_null($value)) {
+            return $value; /*null*/
+        } elseif (is_object($value)) {
+            return IntNode::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 toIntNode(): stdClass|float|null {
+        if (TopLevel::validateIntNode($this->intNode))  {
+            if (is_null($this->intNode)) {
+                return $this->intNode; /*null*/
+            } elseif ($this->intNode instanceof IntNode) {
+                return $this->intNode->to(); /*class*/
+            } elseif (is_float($this->intNode) || is_int($this->intNode)) {
+                return $this->intNode; /*float*/
+            } else {
+                throw new Exception('Union value has no matching member in TopLevel');
+            }
+        }
+        throw new Exception('never get to this TopLevel::intNode');
+    }
+
+    /**
+     * @param IntNode|float|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateIntNode(IntNode|float|null $value): bool {
+        if (is_null($value)) {
+            if (!is_null($value)) {
+                throw new Exception("Attribute Error:TopLevel::intNode");
+            }
+        } elseif ($value instanceof IntNode) {
+            $value->validate();
+        } elseif (is_float($value) || is_int($value)) {
+            if (!is_float($value) && !is_int($value)) {
+                throw new Exception("Attribute Error:TopLevel::intNode");
+            }
+        } else {
+            throw new Exception("Attribute Error:TopLevel::intNode");
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return IntNode|float|null
+     */
+    public function getIntNode(): IntNode|float|null {
+        if (TopLevel::validateIntNode($this->intNode))  {
+            return $this->intNode;
+        }
+        throw new Exception('never get to getIntNode TopLevel::intNode');
+    }
+
+    /**
+     * @return IntNode|float|null
+     */
+    public static function sampleIntNode(): IntNode|float|null {
+        return IntNode::sample(); /*185:intNode*/
     }
 
     /**
@@ -12463,7 +12873,7 @@ class TopLevel {
      * @return Is|float|null
      */
     public static function sampleIs(): Is|float|null {
-        return Is::sample(); /*181:is*/
+        return Is::sample(); /*186:is*/
     }
 
     /**
@@ -12539,7 +12949,7 @@ class TopLevel {
      * @return ISODateTimeOffsetConverter|float|null
      */
     public static function sampleISODateTimeOffsetConverter(): ISODateTimeOffsetConverter|float|null {
-        return ISODateTimeOffsetConverter::sample(); /*182:isoDateTimeOffsetConverter*/
+        return ISODateTimeOffsetConverter::sample(); /*187:isoDateTimeOffsetConverter*/
     }
 
     /**
@@ -12615,7 +13025,7 @@ class TopLevel {
      * @return IterableClass|float|null
      */
     public static function sampleIterable(): IterableClass|float|null {
-        return IterableClass::sample(); /*183:iterable*/
+        return IterableClass::sample(); /*188:iterable*/
     }
 
     /**
@@ -12691,7 +13101,7 @@ class TopLevel {
      * @return Jdec|float|null
      */
     public static function sampleJdec(): Jdec|float|null {
-        return Jdec::sample(); /*184:jdec*/
+        return Jdec::sample(); /*189:jdec*/
     }
 
     /**
@@ -12767,7 +13177,7 @@ class TopLevel {
      * @return Jenc|float|null
      */
     public static function sampleJenc(): Jenc|float|null {
-        return Jenc::sample(); /*185:jenc*/
+        return Jenc::sample(); /*190:jenc*/
     }
 
     /**
@@ -12843,7 +13253,7 @@ class TopLevel {
      * @return Jpipe|float|null
      */
     public static function sampleJpipe(): Jpipe|float|null {
-        return Jpipe::sample(); /*186:jpipe*/
+        return Jpipe::sample(); /*191:jpipe*/
     }
 
     /**
@@ -12919,7 +13329,7 @@ class TopLevel {
      * @return JSON|float|null
      */
     public static function sampleJSON(): JSON|float|null {
-        return JSON::sample(); /*187:json*/
+        return JSON::sample(); /*192:json*/
     }
 
     /**
@@ -12995,7 +13405,7 @@ class TopLevel {
      * @return JSONConverter|float|null
      */
     public static function sampleJSONConverter(): JSONConverter|float|null {
-        return JSONConverter::sample(); /*188:jsonConverter*/
+        return JSONConverter::sample(); /*193:jsonConverter*/
     }
 
     /**
@@ -13071,7 +13481,7 @@ class TopLevel {
      * @return JSONSerializer|float|null
      */
     public static function sampleJSONSerializer(): JSONSerializer|float|null {
-        return JSONSerializer::sample(); /*189:jsonSerializer*/
+        return JSONSerializer::sample(); /*194:jsonSerializer*/
     }
 
     /**
@@ -13147,7 +13557,7 @@ class TopLevel {
      * @return JSONToken|float|null
      */
     public static function sampleJSONToken(): JSONToken|float|null {
-        return JSONToken::sample(); /*190:jsonToken*/
+        return JSONToken::sample(); /*195:jsonToken*/
     }
 
     /**
@@ -13223,7 +13633,7 @@ class TopLevel {
      * @return JSONWriter|float|null
      */
     public static function sampleJSONWriter(): JSONWriter|float|null {
-        return JSONWriter::sample(); /*191:jsonWriter*/
+        return JSONWriter::sample(); /*196:jsonWriter*/
     }
 
     /**
@@ -13299,7 +13709,7 @@ class TopLevel {
      * @return JSONAny|float|null
      */
     public static function sampleJSONAny(): JSONAny|float|null {
-        return JSONAny::sample(); /*192:jsonAny*/
+        return JSONAny::sample(); /*197:jsonAny*/
     }
 
     /**
@@ -13375,7 +13785,7 @@ class TopLevel {
      * @return JSONCodingKey|float|null
      */
     public static function sampleJSONCodingKey(): JSONCodingKey|float|null {
-        return JSONCodingKey::sample(); /*193:jsonCodingKey*/
+        return JSONCodingKey::sample(); /*198:jsonCodingKey*/
     }
 
     /**
@@ -13451,7 +13861,7 @@ class TopLevel {
      * @return JSONDecoder|float|null
      */
     public static function sampleJSONDecoder(): JSONDecoder|float|null {
-        return JSONDecoder::sample(); /*194:jsonDecoder*/
+        return JSONDecoder::sample(); /*199:jsonDecoder*/
     }
 
     /**
@@ -13527,7 +13937,7 @@ class TopLevel {
      * @return JSONEncoder|float|null
      */
     public static function sampleJSONEncoder(): JSONEncoder|float|null {
-        return JSONEncoder::sample(); /*195:jsonEncoder*/
+        return JSONEncoder::sample(); /*200:jsonEncoder*/
     }
 
     /**
@@ -13603,7 +14013,7 @@ class TopLevel {
      * @return JSONExceptionClass|float|null
      */
     public static function sampleJSONException(): JSONExceptionClass|float|null {
-        return JSONExceptionClass::sample(); /*196:jsonException*/
+        return JSONExceptionClass::sample(); /*201:jsonException*/
     }
 
     /**
@@ -13679,7 +14089,7 @@ class TopLevel {
      * @return JSONGenerator|float|null
      */
     public static function sampleJSONGenerator(): JSONGenerator|float|null {
-        return JSONGenerator::sample(); /*197:jsonGenerator*/
+        return JSONGenerator::sample(); /*202:jsonGenerator*/
     }
 
     /**
@@ -13755,7 +14165,7 @@ class TopLevel {
      * @return JSONNode|float|null
      */
     public static function sampleJSONNode(): JSONNode|float|null {
-        return JSONNode::sample(); /*198:jsonNode*/
+        return JSONNode::sample(); /*203:jsonNode*/
     }
 
     /**
@@ -13831,7 +14241,7 @@ class TopLevel {
      * @return JSONNull|float|null
      */
     public static function sampleJSONNull(): JSONNull|float|null {
-        return JSONNull::sample(); /*199:jsonNull*/
+        return JSONNull::sample(); /*204:jsonNull*/
     }
 
     /**
@@ -13907,7 +14317,7 @@ class TopLevel {
      * @return JSONParser|float|null
      */
     public static function sampleJSONParser(): JSONParser|float|null {
-        return JSONParser::sample(); /*200:jsonParser*/
+        return JSONParser::sample(); /*205:jsonParser*/
     }
 
     /**
@@ -13983,7 +14393,7 @@ class TopLevel {
      * @return JSONReader|float|null
      */
     public static function sampleJSONReader(): JSONReader|float|null {
-        return JSONReader::sample(); /*201:jsonReader*/
+        return JSONReader::sample(); /*206:jsonReader*/
     }
 
     /**
@@ -14059,7 +14469,7 @@ class TopLevel {
      * @return JSONTokenType|float|null
      */
     public static function sampleJSONTokenType(): JSONTokenType|float|null {
-        return JSONTokenType::sample(); /*202:jsonTokenType*/
+        return JSONTokenType::sample(); /*207:jsonTokenType*/
     }
 
     /**
@@ -14135,7 +14545,7 @@ class TopLevel {
      * @return Lambda|float|null
      */
     public static function sampleLambda(): Lambda|float|null {
-        return Lambda::sample(); /*203:lambda*/
+        return Lambda::sample(); /*208:lambda*/
     }
 
     /**
@@ -14211,7 +14621,7 @@ class TopLevel {
      * @return Lazy|float|null
      */
     public static function sampleLazy(): Lazy|float|null {
-        return Lazy::sample(); /*204:lazy*/
+        return Lazy::sample(); /*209:lazy*/
     }
 
     /**
@@ -14287,7 +14697,7 @@ class TopLevel {
      * @return Left|float|null
      */
     public static function sampleLeft(): Left|float|null {
-        return Left::sample(); /*205:left*/
+        return Left::sample(); /*210:left*/
     }
 
     /**
@@ -14363,7 +14773,7 @@ class TopLevel {
      * @return Let|float|null
      */
     public static function sampleLet(): Let|float|null {
-        return Let::sample(); /*206:let*/
+        return Let::sample(); /*211:let*/
     }
 
     /**
@@ -14439,7 +14849,7 @@ class TopLevel {
      * @return ListClass|float|null
      */
     public static function sampleList(): ListClass|float|null {
-        return ListClass::sample(); /*207:list*/
+        return ListClass::sample(); /*212:list*/
     }
 
     /**
@@ -14515,7 +14925,7 @@ class TopLevel {
      * @return LocaleClass|float|null
      */
     public static function sampleLocale(): LocaleClass|float|null {
-        return LocaleClass::sample(); /*208:locale*/
+        return LocaleClass::sample(); /*213:locale*/
     }
 
     /**
@@ -14591,7 +15001,7 @@ class TopLevel {
      * @return Lock|float|null
      */
     public static function sampleLock(): Lock|float|null {
-        return Lock::sample(); /*209:lock*/
+        return Lock::sample(); /*214:lock*/
     }
 
     /**
@@ -14667,7 +15077,83 @@ class TopLevel {
      * @return Long|float|null
      */
     public static function sampleLong(): Long|float|null {
-        return Long::sample(); /*210:long*/
+        return Long::sample(); /*215:long*/
+    }
+
+    /**
+     * @param stdClass|float|null $value
+     * @throws Exception
+     * @return LongNode|float|null
+     */
+    public static function fromLongNode(stdClass|float|null $value): LongNode|float|null {
+        if (is_null($value)) {
+            return $value; /*null*/
+        } elseif (is_object($value)) {
+            return LongNode::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 toLongNode(): stdClass|float|null {
+        if (TopLevel::validateLongNode($this->longNode))  {
+            if (is_null($this->longNode)) {
+                return $this->longNode; /*null*/
+            } elseif ($this->longNode instanceof LongNode) {
+                return $this->longNode->to(); /*class*/
+            } elseif (is_float($this->longNode) || is_int($this->longNode)) {
+                return $this->longNode; /*float*/
+            } else {
+                throw new Exception('Union value has no matching member in TopLevel');
+            }
+        }
+        throw new Exception('never get to this TopLevel::longNode');
+    }
+
+    /**
+     * @param LongNode|float|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateLongNode(LongNode|float|null $value): bool {
+        if (is_null($value)) {
+            if (!is_null($value)) {
+                throw new Exception("Attribute Error:TopLevel::longNode");
+            }
+        } elseif ($value instanceof LongNode) {
+            $value->validate();
+        } elseif (is_float($value) || is_int($value)) {
+            if (!is_float($value) && !is_int($value)) {
+                throw new Exception("Attribute Error:TopLevel::longNode");
+            }
+        } else {
+            throw new Exception("Attribute Error:TopLevel::longNode");
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return LongNode|float|null
+     */
+    public function getLongNode(): LongNode|float|null {
+        if (TopLevel::validateLongNode($this->longNode))  {
+            return $this->longNode;
+        }
+        throw new Exception('never get to getLongNode TopLevel::longNode');
+    }
+
+    /**
+     * @return LongNode|float|null
+     */
+    public static function sampleLongNode(): LongNode|float|null {
+        return LongNode::sample(); /*216:longNode*/
     }
 
     /**
@@ -14743,7 +15229,7 @@ class TopLevel {
      * @return Map|float|null
      */
     public static function sampleMap(): Map|float|null {
-        return Map::sample(); /*211:map*/
+        return Map::sample(); /*217:map*/
     }
 
     /**
@@ -14819,7 +15305,7 @@ class TopLevel {
      * @return MapEntry|float|null
      */
     public static function sampleMapEntry(): MapEntry|float|null {
-        return MapEntry::sample(); /*212:mapEntry*/
+        return MapEntry::sample(); /*218:mapEntry*/
     }
 
     /**
@@ -14895,7 +15381,7 @@ class TopLevel {
      * @return MetadataPropertyHandling|float|null
      */
     public static function sampleMetadataPropertyHandling(): MetadataPropertyHandling|float|null {
-        return MetadataPropertyHandling::sample(); /*213:metadataPropertyHandling*/
+        return MetadataPropertyHandling::sample(); /*219:metadataPropertyHandling*/
     }
 
     /**
@@ -14971,7 +15457,7 @@ class TopLevel {
      * @return Module|float|null
      */
     public static function sampleModule(): Module|float|null {
-        return Module::sample(); /*214:module*/
+        return Module::sample(); /*220:module*/
     }
 
     /**
@@ -15047,7 +15533,7 @@ class TopLevel {
      * @return Mutable|float|null
      */
     public static function sampleMutable(): Mutable|float|null {
-        return Mutable::sample(); /*215:mutable*/
+        return Mutable::sample(); /*221:mutable*/
     }
 
     /**
@@ -15123,7 +15609,7 @@ class TopLevel {
      * @return Mutating|float|null
      */
     public static function sampleMutating(): Mutating|float|null {
-        return Mutating::sample(); /*216:mutating*/
+        return Mutating::sample(); /*222:mutating*/
     }
 
     /**
@@ -15199,7 +15685,7 @@ class TopLevel {
      * @return NamespaceClass|float|null
      */
     public static function sampleNamespace(): NamespaceClass|float|null {
-        return NamespaceClass::sample(); /*217:namespace*/
+        return NamespaceClass::sample(); /*223:namespace*/
     }
 
     /**
@@ -15275,7 +15761,7 @@ class TopLevel {
      * @return Native|float|null
      */
     public static function sampleNative(): Native|float|null {
-        return Native::sample(); /*218:native*/
+        return Native::sample(); /*224:native*/
     }
 
     /**
@@ -15351,7 +15837,7 @@ class TopLevel {
      * @return NewClass|float|null
      */
     public static function sampleNew(): NewClass|float|null {
-        return NewClass::sample(); /*219:new*/
+        return NewClass::sample(); /*225:new*/
     }
 
     /**
@@ -15427,7 +15913,7 @@ class TopLevel {
      * @return Newtonsoft|float|null
      */
     public static function sampleNewtonsoft(): Newtonsoft|float|null {
-        return Newtonsoft::sample(); /*220:newtonsoft*/
+        return Newtonsoft::sample(); /*226:newtonsoft*/
     }
 
     /**
@@ -15503,7 +15989,7 @@ class TopLevel {
      * @return Nil|float|null
      */
     public static function sampleNil(): Nil|float|null {
-        return Nil::sample(); /*221:nil*/
+        return Nil::sample(); /*227:nil*/
     }
 
     /**
@@ -15579,7 +16065,7 @@ class TopLevel {
      * @return No|float|null
      */
     public static function sampleNo(): No|float|null {
-        return No::sample(); /*222:no*/
+        return No::sample(); /*228:no*/
     }
 
     /**
@@ -15655,7 +16141,7 @@ class TopLevel {
      * @return Noexcept|float|null
      */
     public static function sampleNoexcept(): Noexcept|float|null {
-        return Noexcept::sample(); /*223:noexcept*/
+        return Noexcept::sample(); /*229:noexcept*/
     }
 
     /**
@@ -15731,7 +16217,7 @@ class TopLevel {
      * @return Nonatomic|float|null
      */
     public static function sampleNonatomic(): Nonatomic|float|null {
-        return Nonatomic::sample(); /*224:nonatomic*/
+        return Nonatomic::sample(); /*230:nonatomic*/
     }
 
     /**
@@ -15807,7 +16293,7 @@ class TopLevel {
      * @return NoneClass|float|null
      */
     public static function sampleTopLevelNone(): NoneClass|float|null {
-        return NoneClass::sample(); /*225:topLevelNone*/
+        return NoneClass::sample(); /*231:topLevelNone*/
     }
 
     /**
@@ -15883,7 +16369,7 @@ class TopLevel {
      * @return None|float|null
      */
     public static function sampleNone(): None|float|null {
-        return None::sample(); /*226:none*/
+        return None::sample(); /*232:none*/
     }
 
     /**
@@ -15959,7 +16445,7 @@ class TopLevel {
      * @return Nonlocal|float|null
      */
     public static function sampleNonlocal(): Nonlocal|float|null {
-        return Nonlocal::sample(); /*227:nonlocal*/
+        return Nonlocal::sample(); /*233:nonlocal*/
     }
 
     /**
@@ -16035,7 +16521,7 @@ class TopLevel {
      * @return Nonmutating|float|null
      */
     public static function sampleNonmutating(): Nonmutating|float|null {
-        return Nonmutating::sample(); /*228:nonmutating*/
+        return Nonmutating::sample(); /*234:nonmutating*/
     }
 
     /**
@@ -16111,7 +16597,7 @@ class TopLevel {
      * @return NoSuchMethod|float|null
      */
     public static function sampleNoSuchMethod(): NoSuchMethod|float|null {
-        return NoSuchMethod::sample(); /*229:noSuchMethod*/
+        return NoSuchMethod::sample(); /*235:noSuchMethod*/
     }
 
     /**
@@ -16187,7 +16673,7 @@ class TopLevel {
      * @return Not|float|null
      */
     public static function sampleNot(): Not|float|null {
-        return Not::sample(); /*230:not*/
+        return Not::sample(); /*236:not*/
     }
 
     /**
@@ -16263,7 +16749,7 @@ class TopLevel {
      * @return NotEq|float|null
      */
     public static function sampleNotEq(): NotEq|float|null {
-        return NotEq::sample(); /*231:notEq*/
+        return NotEq::sample(); /*237:notEq*/
     }
 
     /**
@@ -16339,7 +16825,7 @@ class TopLevel {
      * @return NSError|float|null
      */
     public static function sampleNSError(): NSError|float|null {
-        return NSError::sample(); /*232:nsError*/
+        return NSError::sample(); /*238:nsError*/
     }
 
     /**
@@ -16415,7 +16901,7 @@ class TopLevel {
      * @return NSObject|float|null
      */
     public static function sampleNSObject(): NSObject|float|null {
-        return NSObject::sample(); /*233:nsObject*/
+        return NSObject::sample(); /*239:nsObject*/
     }
 
     /**
@@ -16491,7 +16977,7 @@ class TopLevel {
      * @return NSString|float|null
      */
     public static function sampleNSString(): NSString|float|null {
-        return NSString::sample(); /*234:nsString*/
+        return NSString::sample(); /*240:nsString*/
     }
 
     /**
@@ -16567,7 +17053,7 @@ class TopLevel {
      * @return NULLClass|float|null
      */
     public static function sampleNull(): NULLClass|float|null {
-        return NULLClass::sample(); /*235:null*/
+        return NULLClass::sample(); /*241:null*/
     }
 
     /**
@@ -16643,7 +17129,83 @@ class TopLevel {
      * @return UnionNullNull|float|null
      */
     public static function sampleTopLevelNull(): UnionNullNull|float|null {
-        return UnionNullNull::sample(); /*236:topLevelNull*/
+        return UnionNullNull::sample(); /*242:topLevelNull*/
+    }
+
+    /**
+     * @param stdClass|float|null $value
+     * @throws Exception
+     * @return NullNode|float|null
+     */
+    public static function fromNullNode(stdClass|float|null $value): NullNode|float|null {
+        if (is_null($value)) {
+            return $value; /*null*/
+        } elseif (is_object($value)) {
+            return NullNode::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 toNullNode(): stdClass|float|null {
+        if (TopLevel::validateNullNode($this->nullNode))  {
+            if (is_null($this->nullNode)) {
+                return $this->nullNode; /*null*/
+            } elseif ($this->nullNode instanceof NullNode) {
+                return $this->nullNode->to(); /*class*/
+            } elseif (is_float($this->nullNode) || is_int($this->nullNode)) {
+                return $this->nullNode; /*float*/
+            } else {
+                throw new Exception('Union value has no matching member in TopLevel');
+            }
+        }
+        throw new Exception('never get to this TopLevel::nullNode');
+    }
+
+    /**
+     * @param NullNode|float|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNullNode(NullNode|float|null $value): bool {
+        if (is_null($value)) {
+            if (!is_null($value)) {
+                throw new Exception("Attribute Error:TopLevel::nullNode");
+            }
+        } elseif ($value instanceof NullNode) {
+            $value->validate();
+        } elseif (is_float($value) || is_int($value)) {
+            if (!is_float($value) && !is_int($value)) {
+                throw new Exception("Attribute Error:TopLevel::nullNode");
+            }
+        } else {
+            throw new Exception("Attribute Error:TopLevel::nullNode");
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return NullNode|float|null
+     */
+    public function getNullNode(): NullNode|float|null {
+        if (TopLevel::validateNullNode($this->nullNode))  {
+            return $this->nullNode;
+        }
+        throw new Exception('never get to getNullNode TopLevel::nullNode');
+    }
+
+    /**
+     * @return NullNode|float|null
+     */
+    public static function sampleNullNode(): NullNode|float|null {
+        return NullNode::sample(); /*243:nullNode*/
     }
 
     /**
@@ -16719,7 +17281,7 @@ class TopLevel {
      * @return Nullptr|float|null
      */
     public static function sampleNullptr(): Nullptr|float|null {
-        return Nullptr::sample(); /*237:nullptr*/
+        return Nullptr::sample(); /*244:nullptr*/
     }
 
     /**
@@ -16795,7 +17357,7 @@ class TopLevel {
      * @return Number|float|null
      */
     public static function sampleNumber(): Number|float|null {
-        return Number::sample(); /*238:number*/
+        return Number::sample(); /*245:number*/
     }
 
     /**
@@ -16871,7 +17433,7 @@ class TopLevel {
      * @return ObjectClass|float|null
      */
     public static function sampleObject(): ObjectClass|float|null {
-        return ObjectClass::sample(); /*239:object*/
+        return ObjectClass::sample(); /*246:object*/
     }
 
     /**
@@ -16947,7 +17509,83 @@ class TopLevel {
      * @return ObjectMapper|float|null
      */
     public static function sampleObjectMapper(): ObjectMapper|float|null {
-        return ObjectMapper::sample(); /*240:objectMapper*/
+        return ObjectMapper::sample(); /*247:objectMapper*/
+    }
+
+    /**
+     * @param stdClass|float|null $value
+     * @throws Exception
+     * @return ObjectNode|float|null
+     */
+    public static function fromObjectNode(stdClass|float|null $value): ObjectNode|float|null {
+        if (is_null($value)) {
+            return $value; /*null*/
+        } elseif (is_object($value)) {
+            return ObjectNode::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 toObjectNode(): stdClass|float|null {
+        if (TopLevel::validateObjectNode($this->objectNode))  {
+            if (is_null($this->objectNode)) {
+                return $this->objectNode; /*null*/
+            } elseif ($this->objectNode instanceof ObjectNode) {
+                return $this->objectNode->to(); /*class*/
+            } elseif (is_float($this->objectNode) || is_int($this->objectNode)) {
+                return $this->objectNode; /*float*/
+            } else {
+                throw new Exception('Union value has no matching member in TopLevel');
+            }
+        }
+        throw new Exception('never get to this TopLevel::objectNode');
+    }
+
+    /**
+     * @param ObjectNode|float|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateObjectNode(ObjectNode|float|null $value): bool {
+        if (is_null($value)) {
+            if (!is_null($value)) {
+                throw new Exception("Attribute Error:TopLevel::objectNode");
+            }
+        } elseif ($value instanceof ObjectNode) {
+            $value->validate();
+        } elseif (is_float($value) || is_int($value)) {
+            if (!is_float($value) && !is_int($value)) {
+                throw new Exception("Attribute Error:TopLevel::objectNode");
+            }
+        } else {
+            throw new Exception("Attribute Error:TopLevel::objectNode");
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ObjectNode|float|null
+     */
+    public function getObjectNode(): ObjectNode|float|null {
+        if (TopLevel::validateObjectNode($this->objectNode))  {
+            return $this->objectNode;
+        }
+        throw new Exception('never get to getObjectNode TopLevel::objectNode');
+    }
+
+    /**
+     * @return ObjectNode|float|null
+     */
+    public static function sampleObjectNode(): ObjectNode|float|null {
+        return ObjectNode::sample(); /*248:objectNode*/
     }
 
     /**
@@ -17023,7 +17661,7 @@ class TopLevel {
      * @return Of|float|null
      */
     public static function sampleOf(): Of|float|null {
-        return Of::sample(); /*241:of*/
+        return Of::sample(); /*249:of*/
     }
 
     /**
@@ -17099,7 +17737,7 @@ class TopLevel {
      * @return Oneway|float|null
      */
     public static function sampleOneway(): Oneway|float|null {
-        return Oneway::sample(); /*242:oneway*/
+        return Oneway::sample(); /*250:oneway*/
     }
 
     /**
@@ -17175,7 +17813,7 @@ class TopLevel {
      * @return Open|float|null
      */
     public static function sampleOpen(): Open|float|null {
-        return Open::sample(); /*243:open*/
+        return Open::sample(); /*251:open*/
     }
 
     /**
@@ -17251,7 +17889,7 @@ class TopLevel {
      * @return Operator|float|null
      */
     public static function sampleOperator(): Operator|float|null {
-        return Operator::sample(); /*244:operator*/
+        return Operator::sample(); /*252:operator*/
     }
 
     /**
@@ -17327,7 +17965,7 @@ class TopLevel {
      * @return Optional|float|null
      */
     public static function sampleOptional(): Optional|float|null {
-        return Optional::sample(); /*245:optional*/
+        return Optional::sample(); /*253:optional*/
     }
 
     /**
@@ -17403,7 +18041,7 @@ class TopLevel {
      * @return OrClass|float|null
      */
     public static function sampleOr(): OrClass|float|null {
-        return OrClass::sample(); /*246:or*/
+        return OrClass::sample(); /*254:or*/
     }
 
     /**
@@ -17479,7 +18117,7 @@ class TopLevel {
      * @return OrEq|float|null
      */
     public static function sampleOrEq(): OrEq|float|null {
-        return OrEq::sample(); /*247:orEq*/
+        return OrEq::sample(); /*255:orEq*/
     }
 
     /**
@@ -17555,7 +18193,7 @@ class TopLevel {
      * @return Out|float|null
      */
     public static function sampleOut(): Out|float|null {
-        return Out::sample(); /*248:out*/
+        return Out::sample(); /*256:out*/
     }
 
     /**
@@ -17631,7 +18269,7 @@ class TopLevel {
      * @return OverrideClass|float|null
      */
     public static function sampleOverride(): OverrideClass|float|null {
-        return OverrideClass::sample(); /*249:override*/
+        return OverrideClass::sample(); /*257:override*/
     }
 
     /**
@@ -17707,7 +18345,7 @@ class TopLevel {
      * @return Package|float|null
      */
     public static function samplePackage(): Package|float|null {
-        return Package::sample(); /*250:package*/
+        return Package::sample(); /*258:package*/
     }
 
     /**
@@ -17783,7 +18421,7 @@ class TopLevel {
      * @return Params|float|null
      */
     public static function sampleParams(): Params|float|null {
-        return Params::sample(); /*251:params*/
+        return Params::sample(); /*259:params*/
     }
 
     /**
@@ -17859,7 +18497,7 @@ class TopLevel {
      * @return Pass|float|null
      */
     public static function samplePass(): Pass|float|null {
-        return Pass::sample(); /*252:pass*/
+        return Pass::sample(); /*260:pass*/
     }
 
     /**
@@ -17935,7 +18573,7 @@ class TopLevel {
      * @return Port|float|null
      */
     public static function samplePort(): Port|float|null {
-        return Port::sample(); /*253:port*/
+        return Port::sample(); /*261:port*/
     }
 
     /**
@@ -18011,7 +18649,7 @@ class TopLevel {
      * @return Postfix|float|null
      */
     public static function samplePostfix(): Postfix|float|null {
-        return Postfix::sample(); /*254:postfix*/
+        return Postfix::sample(); /*262:postfix*/
     }
 
     /**
@@ -18087,7 +18725,7 @@ class TopLevel {
      * @return Precedence|float|null
      */
     public static function samplePrecedence(): Precedence|float|null {
-        return Precedence::sample(); /*255:precedence*/
+        return Precedence::sample(); /*263:precedence*/
     }
 
     /**
@@ -18163,7 +18801,7 @@ class TopLevel {
      * @return Prefix|float|null
      */
     public static function samplePrefix(): Prefix|float|null {
-        return Prefix::sample(); /*256:prefix*/
+        return Prefix::sample(); /*264:prefix*/
     }
 
     /**
@@ -18239,7 +18877,7 @@ class TopLevel {
      * @return PrintClass|float|null
      */
     public static function samplePrint(): PrintClass|float|null {
-        return PrintClass::sample(); /*257:print*/
+        return PrintClass::sample(); /*265:print*/
     }
 
     /**
@@ -18315,7 +18953,7 @@ class TopLevel {
      * @return Printf|float|null
      */
     public static function samplePrintf(): Printf|float|null {
-        return Printf::sample(); /*258:printf*/
+        return Printf::sample(); /*266:printf*/
     }
 
     /**
@@ -18391,7 +19029,7 @@ class TopLevel {
      * @return PrintMembers|float|null
      */
     public static function samplePrintMembers(): PrintMembers|float|null {
-        return PrintMembers::sample(); /*259:printMembers*/
+        return PrintMembers::sample(); /*267:printMembers*/
     }
 
     /**
@@ -18467,7 +19105,7 @@ class TopLevel {
      * @return PrivateClass|float|null
      */
     public static function samplePrivate(): PrivateClass|float|null {
-        return PrivateClass::sample(); /*260:private*/
+        return PrivateClass::sample(); /*268:private*/
     }
 
     /**
@@ -18543,7 +19181,7 @@ class TopLevel {
      * @return ProtectedClass|float|null
      */
     public static function sampleProtected(): ProtectedClass|float|null {
-        return ProtectedClass::sample(); /*261:protected*/
+        return ProtectedClass::sample(); /*269:protected*/
     }
 
     /**
@@ -18619,7 +19257,7 @@ class TopLevel {
      * @return Protocol|float|null
      */
     public static function sampleProtocol(): Protocol|float|null {
-        return Protocol::sample(); /*262:protocol*/
+        return Protocol::sample(); /*270:protocol*/
     }
 
     /**
@@ -18695,7 +19333,7 @@ class TopLevel {
      * @return ProtocolClass|float|null
      */
     public static function sampleTopLevelProtocol(): ProtocolClass|float|null {
-        return ProtocolClass::sample(); /*263:topLevelProtocol*/
+        return ProtocolClass::sample(); /*271:topLevelProtocol*/
     }
 
     /**
@@ -18771,7 +19409,7 @@ class TopLevel {
      * @return PublicClass|float|null
      */
     public static function samplePublic(): PublicClass|float|null {
-        return PublicClass::sample(); /*264:public*/
+        return PublicClass::sample(); /*272:public*/
     }
 
     /**
@@ -18847,7 +19485,7 @@ class TopLevel {
      * @return Quicktype|float|null
      */
     public static function sampleQuicktype(): Quicktype|float|null {
-        return Quicktype::sample(); /*265:quicktype*/
+        return Quicktype::sample(); /*273:quicktype*/
     }
 
     /**
@@ -18923,7 +19561,7 @@ class TopLevel {
      * @return Raise|float|null
      */
     public static function sampleRaise(): Raise|float|null {
-        return Raise::sample(); /*266:raise*/
+        return Raise::sample(); /*274:raise*/
     }
 
     /**
@@ -18999,7 +19637,7 @@ class TopLevel {
      * @return Range|float|null
      */
     public static function sampleRange(): Range|float|null {
-        return Range::sample(); /*267:range*/
+        return Range::sample(); /*275:range*/
     }
 
     /**
@@ -19075,7 +19713,7 @@ class TopLevel {
      * @return ReadonlyClass|float|null
      */
     public static function sampleReadonly(): ReadonlyClass|float|null {
-        return ReadonlyClass::sample(); /*268:readonly*/
+        return ReadonlyClass::sample(); /*276:readonly*/
     }
 
     /**
@@ -19151,7 +19789,7 @@ class TopLevel {
      * @return Ref|float|null
      */
     public static function sampleRef(): Ref|float|null {
-        return Ref::sample(); /*269:ref*/
+        return Ref::sample(); /*277:ref*/
     }
 
     /**
@@ -19227,7 +19865,7 @@ class TopLevel {
      * @return RegExp|float|null
      */
     public static function sampleRegExp(): RegExp|float|null {
-        return RegExp::sample(); /*270:regExp*/
+        return RegExp::sample(); /*278:regExp*/
     }
 
     /**
@@ -19303,7 +19941,7 @@ class TopLevel {
      * @return Register|float|null
      */
     public static function sampleRegister(): Register|float|null {
-        return Register::sample(); /*271:register*/
+        return Register::sample(); /*279:register*/
     }
 
     /**
@@ -19379,7 +20017,7 @@ class TopLevel {
      * @return ReinterpretCast|float|null
      */
     public static function sampleReinterpretCast(): ReinterpretCast|float|null {
-        return ReinterpretCast::sample(); /*272:reinterpretCast*/
+        return ReinterpretCast::sample(); /*280:reinterpretCast*/
     }
 
     /**
@@ -19455,7 +20093,7 @@ class TopLevel {
      * @return Repeat|float|null
      */
     public static function sampleRepeat(): Repeat|float|null {
-        return Repeat::sample(); /*273:repeat*/
+        return Repeat::sample(); /*281:repeat*/
     }
 
     /**
@@ -19531,7 +20169,7 @@ class TopLevel {
      * @return RequireClass|float|null
      */
     public static function sampleRequire(): RequireClass|float|null {
-        return RequireClass::sample(); /*274:require*/
+        return RequireClass::sample(); /*282:require*/
     }
 
     /**
@@ -19607,7 +20245,7 @@ class TopLevel {
      * @return Required|float|null
      */
     public static function sampleRequired(): Required|float|null {
-        return Required::sample(); /*275:required*/
+        return Required::sample(); /*283:required*/
     }
 
     /**
@@ -19683,7 +20321,7 @@ class TopLevel {
      * @return Requires|float|null
      */
     public static function sampleRequires(): Requires|float|null {
-        return Requires::sample(); /*276:requires*/
+        return Requires::sample(); /*284:requires*/
     }
 
     /**
@@ -19759,7 +20397,7 @@ class TopLevel {
      * @return Restrict|float|null
      */
     public static function sampleRestrict(): Restrict|float|null {
-        return Restrict::sample(); /*277:restrict*/
+        return Restrict::sample(); /*285:restrict*/
     }
 
     /**
@@ -19835,7 +20473,7 @@ class TopLevel {
      * @return Retain|float|null
      */
     public static function sampleRetain(): Retain|float|null {
-        return Retain::sample(); /*278:retain*/
+        return Retain::sample(); /*286:retain*/
     }
 
     /**
@@ -19911,7 +20549,7 @@ class TopLevel {
      * @return Rethrows|float|null
      */
     public static function sampleRethrows(): Rethrows|float|null {
-        return Rethrows::sample(); /*279:rethrows*/
+        return Rethrows::sample(); /*287:rethrows*/
     }
 
     /**
@@ -19987,7 +20625,7 @@ class TopLevel {
      * @return ReturnClass|float|null
      */
     public static function sampleReturn(): ReturnClass|float|null {
-        return ReturnClass::sample(); /*280:return*/
+        return ReturnClass::sample(); /*288:return*/
     }
 
     /**
@@ -20063,7 +20701,7 @@ class TopLevel {
      * @return Right|float|null
      */
     public static function sampleRight(): Right|float|null {
-        return Right::sample(); /*281:right*/
+        return Right::sample(); /*289:right*/
     }
 
     /**
@@ -20139,7 +20777,7 @@ class TopLevel {
      * @return RuntimeType|float|null
      */
     public static function sampleRuntimeType(): RuntimeType|float|null {
-        return RuntimeType::sample(); /*282:runtimeType*/
+        return RuntimeType::sample(); /*290:runtimeType*/
     }
 
     /**
@@ -20215,7 +20853,7 @@ class TopLevel {
      * @return S|float|null
      */
     public static function sampleS(): S|float|null {
-        return S::sample(); /*283:s*/
+        return S::sample(); /*291:s*/
     }
 
     /**
@@ -20291,7 +20929,7 @@ class TopLevel {
      * @return Sbyte|float|null
      */
     public static function sampleSbyte(): Sbyte|float|null {
-        return Sbyte::sample(); /*284:sbyte*/
+        return Sbyte::sample(); /*292:sbyte*/
     }
 
     /**
@@ -20367,7 +21005,7 @@ class TopLevel {
      * @return Sealed|float|null
      */
     public static function sampleSealed(): Sealed|float|null {
-        return Sealed::sample(); /*285:sealed*/
+        return Sealed::sample(); /*293:sealed*/
     }
 
     /**
@@ -20443,7 +21081,7 @@ class TopLevel {
      * @return Sel|float|null
      */
     public static function sampleSel(): Sel|float|null {
-        return Sel::sample(); /*286:sel*/
+        return Sel::sample(); /*294:sel*/
     }
 
     /**
@@ -20519,7 +21157,7 @@ class TopLevel {
      * @return Select|float|null
      */
     public static function sampleSelect(): Select|float|null {
-        return Select::sample(); /*287:select*/
+        return Select::sample(); /*295:select*/
     }
 
     /**
@@ -20595,7 +21233,7 @@ class TopLevel {
      * @return SelfClass|float|null
      */
     public static function sampleSelf(): SelfClass|float|null {
-        return SelfClass::sample(); /*288:self*/
+        return SelfClass::sample(); /*296:self*/
     }
 
     /**
@@ -20671,7 +21309,7 @@ class TopLevel {
      * @return UnionSelfSelf|float|null
      */
     public static function sampleTopLevelSelf(): UnionSelfSelf|float|null {
-        return UnionSelfSelf::sample(); /*289:topLevelSelf*/
+        return UnionSelfSelf::sample(); /*297:topLevelSelf*/
     }
 
     /**
@@ -20747,7 +21385,83 @@ class TopLevel {
      * @return Sendable|float|null
      */
     public static function sampleSendable(): Sendable|float|null {
-        return Sendable::sample(); /*290:sendable*/
+        return Sendable::sample(); /*298:sendable*/
+    }
+
+    /**
+     * @param stdClass|float|null $value
+     * @throws Exception
+     * @return SerializationFeature|float|null
+     */
+    public static function fromSerializationFeature(stdClass|float|null $value): SerializationFeature|float|null {
+        if (is_null($value)) {
+            return $value; /*null*/
+        } elseif (is_object($value)) {
+            return SerializationFeature::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 toSerializationFeature(): stdClass|float|null {
+        if (TopLevel::validateSerializationFeature($this->serializationFeature))  {
+            if (is_null($this->serializationFeature)) {
+                return $this->serializationFeature; /*null*/
+            } elseif ($this->serializationFeature instanceof SerializationFeature) {
+                return $this->serializationFeature->to(); /*class*/
+            } elseif (is_float($this->serializationFeature) || is_int($this->serializationFeature)) {
+                return $this->serializationFeature; /*float*/
+            } else {
+                throw new Exception('Union value has no matching member in TopLevel');
+            }
+        }
+        throw new Exception('never get to this TopLevel::serializationFeature');
+    }
+
+    /**
+     * @param SerializationFeature|float|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSerializationFeature(SerializationFeature|float|null $value): bool {
+        if (is_null($value)) {
+            if (!is_null($value)) {
+                throw new Exception("Attribute Error:TopLevel::serializationFeature");
+            }
+        } elseif ($value instanceof SerializationFeature) {
+            $value->validate();
+        } elseif (is_float($value) || is_int($value)) {
+            if (!is_float($value) && !is_int($value)) {
+                throw new Exception("Attribute Error:TopLevel::serializationFeature");
+            }
+        } else {
+            throw new Exception("Attribute Error:TopLevel::serializationFeature");
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return SerializationFeature|float|null
+     */
+    public function getSerializationFeature(): SerializationFeature|float|null {
+        if (TopLevel::validateSerializationFeature($this->serializationFeature))  {
+            return $this->serializationFeature;
+        }
+        throw new Exception('never get to getSerializationFeature TopLevel::serializationFeature');
+    }
+
+    /**
+     * @return SerializationFeature|float|null
+     */
+    public static function sampleSerializationFeature(): SerializationFeature|float|null {
+        return SerializationFeature::sample(); /*299:serializationFeature*/
     }
 
     /**
@@ -20823,7 +21537,7 @@ class TopLevel {
      * @return Serialize|float|null
      */
     public static function sampleSerialize(): Serialize|float|null {
-        return Serialize::sample(); /*291:serialize*/
+        return Serialize::sample(); /*300:serialize*/
     }
 
     /**
@@ -20899,7 +21613,7 @@ class TopLevel {
      * @return SerializerProvider|float|null
      */
     public static function sampleSerializerProvider(): SerializerProvider|float|null {
-        return SerializerProvider::sample(); /*292:serializerProvider*/
+        return SerializerProvider::sample(); /*301:serializerProvider*/
     }
 
     /**
@@ -20975,7 +21689,7 @@ class TopLevel {
      * @return Set|float|null
      */
     public static function sampleSet(): Set|float|null {
-        return Set::sample(); /*293:set*/
+        return Set::sample(); /*302:set*/
     }
 
     /**
@@ -21051,7 +21765,7 @@ class TopLevel {
      * @return Short|float|null
      */
     public static function sampleShort(): Short|float|null {
-        return Short::sample(); /*294:short*/
+        return Short::sample(); /*303:short*/
     }
 
     /**
@@ -21127,7 +21841,7 @@ class TopLevel {
      * @return Signed|float|null
      */
     public static function sampleSigned(): Signed|float|null {
-        return Signed::sample(); /*295:signed*/
+        return Signed::sample(); /*304:signed*/
     }
 
     /**
@@ -21203,7 +21917,7 @@ class TopLevel {
      * @return SimpleModule|float|null
      */
     public static function sampleSimpleModule(): SimpleModule|float|null {
-        return SimpleModule::sample(); /*296:simpleModule*/
+        return SimpleModule::sample(); /*305:simpleModule*/
     }
 
     /**
@@ -21279,7 +21993,7 @@ class TopLevel {
      * @return Sizeof|float|null
      */
     public static function sampleSizeof(): Sizeof|float|null {
-        return Sizeof::sample(); /*297:sizeof*/
+        return Sizeof::sample(); /*306:sizeof*/
     }
 
     /**
@@ -21355,7 +22069,7 @@ class TopLevel {
      * @return Stackalloc|float|null
      */
     public static function sampleStackalloc(): Stackalloc|float|null {
-        return Stackalloc::sample(); /*298:stackalloc*/
+        return Stackalloc::sample(); /*307:stackalloc*/
     }
 
     /**
@@ -21431,7 +22145,7 @@ class TopLevel {
      * @return Standards|float|null
      */
     public static function sampleStandards(): Standards|float|null {
-        return Standards::sample(); /*299:standards*/
+        return Standards::sample(); /*308:standards*/
     }
 
     /**
@@ -21507,7 +22221,7 @@ class TopLevel {
      * @return StaticClass|float|null
      */
     public static function sampleStatic(): StaticClass|float|null {
-        return StaticClass::sample(); /*300:static*/
+        return StaticClass::sample(); /*309:static*/
     }
 
     /**
@@ -21583,7 +22297,7 @@ class TopLevel {
      * @return StaticAssert|float|null
      */
     public static function sampleStaticAssert(): StaticAssert|float|null {
-        return StaticAssert::sample(); /*301:staticAssert*/
+        return StaticAssert::sample(); /*310:staticAssert*/
     }
 
     /**
@@ -21659,7 +22373,7 @@ class TopLevel {
      * @return StaticCast|float|null
      */
     public static function sampleStaticCast(): StaticCast|float|null {
-        return StaticCast::sample(); /*302:staticCast*/
+        return StaticCast::sample(); /*311:staticCast*/
     }
 
     /**
@@ -21735,7 +22449,7 @@ class TopLevel {
      * @return StdDeserializer|float|null
      */
     public static function sampleStdDeserializer(): StdDeserializer|float|null {
-        return StdDeserializer::sample(); /*303:stdDeserializer*/
+        return StdDeserializer::sample(); /*312:stdDeserializer*/
     }
 
     /**
@@ -21811,7 +22525,7 @@ class TopLevel {
      * @return StdSerializer|float|null
      */
     public static function sampleStdSerializer(): StdSerializer|float|null {
-        return StdSerializer::sample(); /*304:stdSerializer*/
+        return StdSerializer::sample(); /*313:stdSerializer*/
     }
 
     /**
@@ -21887,7 +22601,7 @@ class TopLevel {
      * @return Strictfp|float|null
      */
     public static function sampleStrictfp(): Strictfp|float|null {
-        return Strictfp::sample(); /*305:strictfp*/
+        return Strictfp::sample(); /*314:strictfp*/
     }
 
     /**
@@ -21963,7 +22677,7 @@ class TopLevel {
      * @return StringClass|float|null
      */
     public static function sampleString(): StringClass|float|null {
-        return StringClass::sample(); /*306:string*/
+        return StringClass::sample(); /*315:string*/
     }
 
     /**
@@ -22039,7 +22753,7 @@ class TopLevel {
      * @return Struct|float|null
      */
     public static function sampleStruct(): Struct|float|null {
-        return Struct::sample(); /*307:struct*/
+        return Struct::sample(); /*316:struct*/
     }
 
     /**
@@ -22115,7 +22829,7 @@ class TopLevel {
      * @return Subscript|float|null
      */
     public static function sampleSubscript(): Subscript|float|null {
-        return Subscript::sample(); /*308:subscript*/
+        return Subscript::sample(); /*317:subscript*/
     }
 
     /**
@@ -22191,7 +22905,7 @@ class TopLevel {
      * @return Super|float|null
      */
     public static function sampleSuper(): Super|float|null {
-        return Super::sample(); /*309:super*/
+        return Super::sample(); /*318:super*/
     }
 
     /**
@@ -22267,7 +22981,7 @@ class TopLevel {
      * @return SwitchClass|float|null
      */
     public static function sampleSwitch(): SwitchClass|float|null {
-        return SwitchClass::sample(); /*310:switch*/
+        return SwitchClass::sample(); /*319:switch*/
     }
 
     /**
@@ -22343,7 +23057,7 @@ class TopLevel {
      * @return Symbol|float|null
      */
     public static function sampleSymbol(): Symbol|float|null {
-        return Symbol::sample(); /*311:symbol*/
+        return Symbol::sample(); /*320:symbol*/
     }
 
     /**
@@ -22419,7 +23133,7 @@ class TopLevel {
      * @return Synchronized|float|null
      */
     public static function sampleSynchronized(): Synchronized|float|null {
-        return Synchronized::sample(); /*312:synchronized*/
+        return Synchronized::sample(); /*321:synchronized*/
     }
 
     /**
@@ -22495,7 +23209,7 @@ class TopLevel {
      * @return System|float|null
      */
     public static function sampleSystem(): System|float|null {
-        return System::sample(); /*313:system*/
+        return System::sample(); /*322:system*/
     }
 
     /**
@@ -22571,7 +23285,83 @@ class TopLevel {
      * @return Template|float|null
      */
     public static function sampleTemplate(): Template|float|null {
-        return Template::sample(); /*314:template*/
+        return Template::sample(); /*323:template*/
+    }
+
+    /**
+     * @param stdClass|float|null $value
+     * @throws Exception
+     * @return TextNode|float|null
+     */
+    public static function fromTextNode(stdClass|float|null $value): TextNode|float|null {
+        if (is_null($value)) {
+            return $value; /*null*/
+        } elseif (is_object($value)) {
+            return TextNode::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 toTextNode(): stdClass|float|null {
+        if (TopLevel::validateTextNode($this->textNode))  {
+            if (is_null($this->textNode)) {
+                return $this->textNode; /*null*/
+            } elseif ($this->textNode instanceof TextNode) {
+                return $this->textNode->to(); /*class*/
+            } elseif (is_float($this->textNode) || is_int($this->textNode)) {
+                return $this->textNode; /*float*/
+            } else {
+                throw new Exception('Union value has no matching member in TopLevel');
+            }
+        }
+        throw new Exception('never get to this TopLevel::textNode');
+    }
+
+    /**
+     * @param TextNode|float|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateTextNode(TextNode|float|null $value): bool {
+        if (is_null($value)) {
+            if (!is_null($value)) {
+                throw new Exception("Attribute Error:TopLevel::textNode");
+            }
+        } elseif ($value instanceof TextNode) {
+            $value->validate();
+        } elseif (is_float($value) || is_int($value)) {
+            if (!is_float($value) && !is_int($value)) {
+                throw new Exception("Attribute Error:TopLevel::textNode");
+            }
+        } else {
+            throw new Exception("Attribute Error:TopLevel::textNode");
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return TextNode|float|null
+     */
+    public function getTextNode(): TextNode|float|null {
+        if (TopLevel::validateTextNode($this->textNode))  {
+            return $this->textNode;
+        }
+        throw new Exception('never get to getTextNode TopLevel::textNode');
+    }
+
+    /**
+     * @return TextNode|float|null
+     */
+    public static function sampleTextNode(): TextNode|float|null {
+        return TextNode::sample(); /*324:textNode*/
     }
 
     /**
@@ -22647,7 +23437,7 @@ class TopLevel {
      * @return Then|float|null
      */
     public static function sampleThen(): Then|float|null {
-        return Then::sample(); /*315:then*/
+        return Then::sample(); /*325:then*/
     }
 
     /**
@@ -22723,7 +23513,7 @@ class TopLevel {
      * @return This|float|null
      */
     public static function sampleTopLevelThis(): This|float|null {
-        return This::sample(); /*316:topLevelThis*/
+        return This::sample(); /*326:topLevelThis*/
     }
 
     /**
@@ -22799,7 +23589,7 @@ class TopLevel {
      * @return ThreadLocal|float|null
      */
     public static function sampleThreadLocal(): ThreadLocal|float|null {
-        return ThreadLocal::sample(); /*317:threadLocal*/
+        return ThreadLocal::sample(); /*327:threadLocal*/
     }
 
     /**
@@ -22875,7 +23665,7 @@ class TopLevel {
      * @return ThrowClass|float|null
      */
     public static function sampleThrow(): ThrowClass|float|null {
-        return ThrowClass::sample(); /*318:throw*/
+        return ThrowClass::sample(); /*328:throw*/
     }
 
     /**
@@ -22951,7 +23741,7 @@ class TopLevel {
      * @return Throws|float|null
      */
     public static function sampleThrows(): Throws|float|null {
-        return Throws::sample(); /*319:throws*/
+        return Throws::sample(); /*329:throws*/
     }
 
     /**
@@ -23027,7 +23817,7 @@ class TopLevel {
      * @return TimeOnly|float|null
      */
     public static function sampleTimeOnly(): TimeOnly|float|null {
-        return TimeOnly::sample(); /*320:timeOnly*/
+        return TimeOnly::sample(); /*330:timeOnly*/
     }
 
     /**
@@ -23103,7 +23893,7 @@ class TopLevel {
      * @return TimeOnlyConverter|float|null
      */
     public static function sampleTimeOnlyConverter(): TimeOnlyConverter|float|null {
-        return TimeOnlyConverter::sample(); /*321:timeOnlyConverter*/
+        return TimeOnlyConverter::sample(); /*331:timeOnlyConverter*/
     }
 
     /**
@@ -23179,7 +23969,7 @@ class TopLevel {
      * @return TimeZone|float|null
      */
     public static function sampleTimeZone(): TimeZone|float|null {
-        return TimeZone::sample(); /*322:timeZone*/
+        return TimeZone::sample(); /*332:timeZone*/
     }
 
     /**
@@ -23255,7 +24045,7 @@ class TopLevel {
      * @return ToJSON|float|null
      */
     public static function sampleToJSON(): ToJSON|float|null {
-        return ToJSON::sample(); /*323:toJSON*/
+        return ToJSON::sample(); /*333:toJSON*/
     }
 
     /**
@@ -23331,7 +24121,7 @@ class TopLevel {
      * @return TopLevelClass|float|null
      */
     public static function sampleTopLevel(): TopLevelClass|float|null {
-        return TopLevelClass::sample(); /*324:topLevel*/
+        return TopLevelClass::sample(); /*334:topLevel*/
     }
 
     /**
@@ -23407,7 +24197,7 @@ class TopLevel {
      * @return ToString|float|null
      */
     public static function sampleToString(): ToString|float|null {
-        return ToString::sample(); /*325:toString*/
+        return ToString::sample(); /*335:toString*/
     }
 
     /**
@@ -23483,7 +24273,7 @@ class TopLevel {
      * @return Transient|float|null
      */
     public static function sampleTransient(): Transient|float|null {
-        return Transient::sample(); /*326:transient*/
+        return Transient::sample(); /*336:transient*/
     }
 
     /**
@@ -23559,7 +24349,7 @@ class TopLevel {
      * @return TrueClass|float|null
      */
     public static function sampleTrue(): TrueClass|float|null {
-        return TrueClass::sample(); /*327:true*/
+        return TrueClass::sample(); /*337:true*/
     }
 
     /**
@@ -23635,7 +24425,7 @@ class TopLevel {
      * @return UnionTrueTrue|float|null
      */
     public static function sampleTopLevelTrue(): UnionTrueTrue|float|null {
-        return UnionTrueTrue::sample(); /*328:topLevelTrue*/
+        return UnionTrueTrue::sample(); /*338:topLevelTrue*/
     }
 
     /**
@@ -23711,7 +24501,7 @@ class TopLevel {
      * @return TryClass|float|null
      */
     public static function sampleTry(): TryClass|float|null {
-        return TryClass::sample(); /*329:try*/
+        return TryClass::sample(); /*339:try*/
     }
 
     /**
@@ -23787,7 +24577,7 @@ class TopLevel {
      * @return Type|float|null
      */
     public static function sampleType(): Type|float|null {
-        return Type::sample(); /*330:type*/
+        return Type::sample(); /*340:type*/
     }
 
     /**
@@ -23863,7 +24653,7 @@ class TopLevel {
      * @return TypeClass|float|null
      */
     public static function sampleTopLevelType(): TypeClass|float|null {
-        return TypeClass::sample(); /*331:topLevelType*/
+        return TypeClass::sample(); /*341:topLevelType*/
     }
 
     /**
@@ -23939,7 +24729,7 @@ class TopLevel {
      * @return Typealias|float|null
      */
     public static function sampleTypealias(): Typealias|float|null {
-        return Typealias::sample(); /*332:typealias*/
+        return Typealias::sample(); /*342:typealias*/
     }
 
     /**
@@ -24015,7 +24805,7 @@ class TopLevel {
      * @return Typedef|float|null
      */
     public static function sampleTypedef(): Typedef|float|null {
-        return Typedef::sample(); /*333:typedef*/
+        return Typedef::sample(); /*343:typedef*/
     }
 
     /**
@@ -24091,7 +24881,7 @@ class TopLevel {
      * @return Typeid|float|null
      */
     public static function sampleTypeid(): Typeid|float|null {
-        return Typeid::sample(); /*334:typeid*/
+        return Typeid::sample(); /*344:typeid*/
     }
 
     /**
@@ -24167,7 +24957,7 @@ class TopLevel {
      * @return Typename|float|null
      */
     public static function sampleTypename(): Typename|float|null {
-        return Typename::sample(); /*335:typename*/
+        return Typename::sample(); /*345:typename*/
     }
 
     /**
@@ -24243,7 +25033,7 @@ class TopLevel {
      * @return Typeof|float|null
      */
     public static function sampleTypeof(): Typeof|float|null {
-        return Typeof::sample(); /*336:typeof*/
+        return Typeof::sample(); /*346:typeof*/
     }
 
     /**
@@ -24319,7 +25109,7 @@ class TopLevel {
      * @return Uint|float|null
      */
     public static function sampleUint(): Uint|float|null {
-        return Uint::sample(); /*337:uint*/
+        return Uint::sample(); /*347:uint*/
     }
 
     /**
@@ -24395,7 +25185,7 @@ class TopLevel {
      * @return Ulong|float|null
      */
     public static function sampleUlong(): Ulong|float|null {
-        return Ulong::sample(); /*338:ulong*/
+        return Ulong::sample(); /*348:ulong*/
     }
 
     /**
@@ -24471,7 +25261,7 @@ class TopLevel {
      * @return Unchecked|float|null
      */
     public static function sampleUnchecked(): Unchecked|float|null {
-        return Unchecked::sample(); /*339:unchecked*/
+        return Unchecked::sample(); /*349:unchecked*/
     }
 
     /**
@@ -24547,7 +25337,7 @@ class TopLevel {
      * @return Undefined|float|null
      */
     public static function sampleUndefined(): Undefined|float|null {
-        return Undefined::sample(); /*340:undefined*/
+        return Undefined::sample(); /*350:undefined*/
     }
 
     /**
@@ -24623,7 +25413,7 @@ class TopLevel {
      * @return UnionClass|float|null
      */
     public static function sampleUnion(): UnionClass|float|null {
-        return UnionClass::sample(); /*341:union*/
+        return UnionClass::sample(); /*351:union*/
     }
 
     /**
@@ -24699,7 +25489,7 @@ class TopLevel {
      * @return Unowned|float|null
      */
     public static function sampleUnowned(): Unowned|float|null {
-        return Unowned::sample(); /*342:unowned*/
+        return Unowned::sample(); /*352:unowned*/
     }
 
     /**
@@ -24775,7 +25565,7 @@ class TopLevel {
      * @return Unsafe|float|null
      */
     public static function sampleUnsafe(): Unsafe|float|null {
-        return Unsafe::sample(); /*343:unsafe*/
+        return Unsafe::sample(); /*353:unsafe*/
     }
 
     /**
@@ -24851,7 +25641,7 @@ class TopLevel {
      * @return Unsigned|float|null
      */
     public static function sampleUnsigned(): Unsigned|float|null {
-        return Unsigned::sample(); /*344:unsigned*/
+        return Unsigned::sample(); /*354:unsigned*/
     }
 
     /**
@@ -24927,7 +25717,7 @@ class TopLevel {
      * @return Ushort|float|null
      */
     public static function sampleUshort(): Ushort|float|null {
-        return Ushort::sample(); /*345:ushort*/
+        return Ushort::sample(); /*355:ushort*/
     }
 
     /**
@@ -25003,7 +25793,7 @@ class TopLevel {
      * @return Using|float|null
      */
     public static function sampleUsing(): Using|float|null {
-        return Using::sample(); /*346:using*/
+        return Using::sample(); /*356:using*/
     }
 
     /**
@@ -25079,7 +25869,7 @@ class TopLevel {
      * @return Utf8JSONReader|float|null
      */
     public static function sampleUtf8JSONReader(): Utf8JSONReader|float|null {
-        return Utf8JSONReader::sample(); /*347:utf8JSONReader*/
+        return Utf8JSONReader::sample(); /*357:utf8JSONReader*/
     }
 
     /**
@@ -25155,7 +25945,7 @@ class TopLevel {
      * @return Utf8JSONWriter|float|null
      */
     public static function sampleUtf8JSONWriter(): Utf8JSONWriter|float|null {
-        return Utf8JSONWriter::sample(); /*348:utf8JSONWriter*/
+        return Utf8JSONWriter::sample(); /*358:utf8JSONWriter*/
     }
 
     /**
@@ -25231,7 +26021,7 @@ class TopLevel {
      * @return UUID|float|null
      */
     public static function sampleUUID(): UUID|float|null {
-        return UUID::sample(); /*349:uuid*/
+        return UUID::sample(); /*359:uuid*/
     }
 
     /**
@@ -25307,7 +26097,7 @@ class TopLevel {
      * @return VarClass|float|null
      */
     public static function sampleVar(): VarClass|float|null {
-        return VarClass::sample(); /*350:var*/
+        return VarClass::sample(); /*360:var*/
     }
 
     /**
@@ -25383,7 +26173,7 @@ class TopLevel {
      * @return Virtual|float|null
      */
     public static function sampleVirtual(): Virtual|float|null {
-        return Virtual::sample(); /*351:virtual*/
+        return Virtual::sample(); /*361:virtual*/
     }
 
     /**
@@ -25459,7 +26249,7 @@ class TopLevel {
      * @return VoidClass|float|null
      */
     public static function sampleVoid(): VoidClass|float|null {
-        return VoidClass::sample(); /*352:void*/
+        return VoidClass::sample(); /*362:void*/
     }
 
     /**
@@ -25535,7 +26325,7 @@ class TopLevel {
      * @return Volatile|float|null
      */
     public static function sampleVolatile(): Volatile|float|null {
-        return Volatile::sample(); /*353:volatile*/
+        return Volatile::sample(); /*363:volatile*/
     }
 
     /**
@@ -25611,7 +26401,7 @@ class TopLevel {
      * @return WcharT|float|null
      */
     public static function sampleWcharT(): WcharT|float|null {
-        return WcharT::sample(); /*354:wcharT*/
+        return WcharT::sample(); /*364:wcharT*/
     }
 
     /**
@@ -25687,7 +26477,7 @@ class TopLevel {
      * @return Weak|float|null
      */
     public static function sampleWeak(): Weak|float|null {
-        return Weak::sample(); /*355:weak*/
+        return Weak::sample(); /*365:weak*/
     }
 
     /**
@@ -25763,7 +26553,7 @@ class TopLevel {
      * @return Where|float|null
      */
     public static function sampleWhere(): Where|float|null {
-        return Where::sample(); /*356:where*/
+        return Where::sample(); /*366:where*/
     }
 
     /**
@@ -25839,7 +26629,7 @@ class TopLevel {
      * @return WhileClass|float|null
      */
     public static function sampleWhile(): WhileClass|float|null {
-        return WhileClass::sample(); /*357:while*/
+        return WhileClass::sample(); /*367:while*/
     }
 
     /**
@@ -25915,7 +26705,7 @@ class TopLevel {
      * @return WillSet|float|null
      */
     public static function sampleWillSet(): WillSet|float|null {
-        return WillSet::sample(); /*358:willSet*/
+        return WillSet::sample(); /*368:willSet*/
     }
 
     /**
@@ -25991,7 +26781,7 @@ class TopLevel {
      * @return With|float|null
      */
     public static function sampleWith(): With|float|null {
-        return With::sample(); /*359:with*/
+        return With::sample(); /*369:with*/
     }
 
     /**
@@ -26067,7 +26857,7 @@ class TopLevel {
      * @return XorClass|float|null
      */
     public static function sampleXor(): XorClass|float|null {
-        return XorClass::sample(); /*360:xor*/
+        return XorClass::sample(); /*370:xor*/
     }
 
     /**
@@ -26143,7 +26933,7 @@ class TopLevel {
      * @return XorEq|float|null
      */
     public static function sampleXorEq(): XorEq|float|null {
-        return XorEq::sample(); /*361:xorEq*/
+        return XorEq::sample(); /*371:xorEq*/
     }
 
     /**
@@ -26219,7 +27009,7 @@ class TopLevel {
      * @return Yes|float|null
      */
     public static function sampleYes(): Yes|float|null {
-        return Yes::sample(); /*362:yes*/
+        return Yes::sample(); /*372:yes*/
     }
 
     /**
@@ -26295,7 +27085,7 @@ class TopLevel {
      * @return YieldClass|float|null
      */
     public static function sampleYield(): YieldClass|float|null {
-        return YieldClass::sample(); /*363:yield*/
+        return YieldClass::sample(); /*373:yield*/
     }
 
     /**
@@ -26315,6 +27105,7 @@ class TopLevel {
         || TopLevel::validateTopLevelAny($this->topLevelAny)
         || TopLevel::validateAny($this->any)
         || TopLevel::validateArray($this->array)
+        || TopLevel::validateArrayNode($this->arrayNode)
         || TopLevel::validateAs($this->as)
         || TopLevel::validateASM($this->asm)
         || TopLevel::validateAssert($this->assert)
@@ -26333,6 +27124,7 @@ class TopLevel {
         || TopLevel::validateBool($this->bool)
         || TopLevel::validatePurpleBool($this->purpleBool)
         || TopLevel::validateBoolean($this->boolean)
+        || TopLevel::validateBooleanNode($this->booleanNode)
         || TopLevel::validateBreak($this->break)
         || TopLevel::validateBycopy($this->bycopy)
         || TopLevel::validateByref($this->byref)
@@ -26387,11 +27179,13 @@ class TopLevel {
         || TopLevel::validateDel($this->del)
         || TopLevel::validateDelegate($this->delegate)
         || TopLevel::validateDelete($this->delete)
+        || TopLevel::validateDeserializationFeature($this->deserializationFeature)
         || TopLevel::validateDict($this->dict)
         || TopLevel::validateDictionary($this->dictionary)
         || TopLevel::validateDidSet($this->didSet)
         || TopLevel::validateDo($this->do)
         || TopLevel::validateDouble($this->double)
+        || TopLevel::validateDoubleNode($this->doubleNode)
         || TopLevel::validateDummy($this->dummy)
         || TopLevel::validateDynamic($this->dynamic)
         || TopLevel::validateDynamicCast($this->dynamicCast)
@@ -26453,6 +27247,7 @@ class TopLevel {
         || TopLevel::validateInt($this->int)
         || TopLevel::validateInterface($this->interface)
         || TopLevel::validateInternal($this->internal)
+        || TopLevel::validateIntNode($this->intNode)
         || TopLevel::validateIs($this->is)
         || TopLevel::validateISODateTimeOffsetConverter($this->isoDateTimeOffsetConverter)
         || TopLevel::validateIterable($this->iterable)
@@ -26483,6 +27278,7 @@ class TopLevel {
         || TopLevel::validateLocale($this->locale)
         || TopLevel::validateLock($this->lock)
         || TopLevel::validateLong($this->long)
+        || TopLevel::validateLongNode($this->longNode)
         || TopLevel::validateMap($this->map)
         || TopLevel::validateMapEntry($this->mapEntry)
         || TopLevel::validateMetadataPropertyHandling($this->metadataPropertyHandling)
@@ -26509,10 +27305,12 @@ class TopLevel {
         || TopLevel::validateNSString($this->nsString)
         || TopLevel::validateNull($this->null)
         || TopLevel::validateTopLevelNull($this->topLevelNull)
+        || TopLevel::validateNullNode($this->nullNode)
         || TopLevel::validateNullptr($this->nullptr)
         || TopLevel::validateNumber($this->number)
         || TopLevel::validateObject($this->object)
         || TopLevel::validateObjectMapper($this->objectMapper)
+        || TopLevel::validateObjectNode($this->objectNode)
         || TopLevel::validateOf($this->of)
         || TopLevel::validateOneway($this->oneway)
         || TopLevel::validateOpen($this->open)
@@ -26563,6 +27361,7 @@ class TopLevel {
         || TopLevel::validateSelf($this->self)
         || TopLevel::validateTopLevelSelf($this->topLevelSelf)
         || TopLevel::validateSendable($this->sendable)
+        || TopLevel::validateSerializationFeature($this->serializationFeature)
         || TopLevel::validateSerialize($this->serialize)
         || TopLevel::validateSerializerProvider($this->serializerProvider)
         || TopLevel::validateSet($this->set)
@@ -26587,6 +27386,7 @@ class TopLevel {
         || TopLevel::validateSynchronized($this->synchronized)
         || TopLevel::validateSystem($this->system)
         || TopLevel::validateTemplate($this->template)
+        || TopLevel::validateTextNode($this->textNode)
         || TopLevel::validateThen($this->then)
         || TopLevel::validateTopLevelThis($this->topLevelThis)
         || TopLevel::validateThreadLocal($this->threadLocal)
@@ -26656,6 +27456,7 @@ class TopLevel {
         $out->{'any'} = $this->toTopLevelAny();
         $out->{'Any'} = $this->toAny();
         $out->{'array'} = $this->toArray();
+        $out->{'ArrayNode'} = $this->toArrayNode();
         $out->{'as'} = $this->toAs();
         $out->{'asm'} = $this->toASM();
         $out->{'assert'} = $this->toAssert();
@@ -26674,6 +27475,7 @@ class TopLevel {
         $out->{'BOOL'} = $this->toBool();
         $out->{'bool'} = $this->toPurpleBool();
         $out->{'boolean'} = $this->toBoolean();
+        $out->{'BooleanNode'} = $this->toBooleanNode();
         $out->{'break'} = $this->toBreak();
         $out->{'bycopy'} = $this->toBycopy();
         $out->{'byref'} = $this->toByref();
@@ -26728,11 +27530,13 @@ class TopLevel {
         $out->{'del'} = $this->toDel();
         $out->{'delegate'} = $this->toDelegate();
         $out->{'delete'} = $this->toDelete();
+        $out->{'DeserializationFeature'} = $this->toDeserializationFeature();
         $out->{'dict'} = $this->toDict();
         $out->{'dictionary'} = $this->toDictionary();
         $out->{'didSet'} = $this->toDidSet();
         $out->{'do'} = $this->toDo();
         $out->{'double'} = $this->toDouble();
+        $out->{'DoubleNode'} = $this->toDoubleNode();
         $out->{'dummy'} = $this->toDummy();
         $out->{'dynamic'} = $this->toDynamic();
         $out->{'dynamic_cast'} = $this->toDynamicCast();
@@ -26794,6 +27598,7 @@ class TopLevel {
         $out->{'int'} = $this->toInt();
         $out->{'interface'} = $this->toInterface();
         $out->{'internal'} = $this->toInternal();
+        $out->{'IntNode'} = $this->toIntNode();
         $out->{'is'} = $this->toIs();
         $out->{'IsoDateTimeOffsetConverter'} = $this->toISODateTimeOffsetConverter();
         $out->{'iterable'} = $this->toIterable();
@@ -26824,6 +27629,7 @@ class TopLevel {
         $out->{'Locale'} = $this->toLocale();
         $out->{'lock'} = $this->toLock();
         $out->{'long'} = $this->toLong();
+        $out->{'LongNode'} = $this->toLongNode();
         $out->{'map'} = $this->toMap();
         $out->{'MapEntry'} = $this->toMapEntry();
         $out->{'metadata_property_handling'} = $this->toMetadataPropertyHandling();
@@ -26850,10 +27656,12 @@ class TopLevel {
         $out->{'NSString'} = $this->toNSString();
         $out->{'NULL'} = $this->toNull();
         $out->{'null'} = $this->toTopLevelNull();
+        $out->{'NullNode'} = $this->toNullNode();
         $out->{'nullptr'} = $this->toNullptr();
         $out->{'number'} = $this->toNumber();
         $out->{'object'} = $this->toObject();
         $out->{'ObjectMapper'} = $this->toObjectMapper();
+        $out->{'ObjectNode'} = $this->toObjectNode();
         $out->{'of'} = $this->toOf();
         $out->{'oneway'} = $this->toOneway();
         $out->{'open'} = $this->toOpen();
@@ -26904,6 +27712,7 @@ class TopLevel {
         $out->{'Self'} = $this->toSelf();
         $out->{'self'} = $this->toTopLevelSelf();
         $out->{'Sendable'} = $this->toSendable();
+        $out->{'SerializationFeature'} = $this->toSerializationFeature();
         $out->{'serialize'} = $this->toSerialize();
         $out->{'SerializerProvider'} = $this->toSerializerProvider();
         $out->{'set'} = $this->toSet();
@@ -26928,6 +27737,7 @@ class TopLevel {
         $out->{'synchronized'} = $this->toSynchronized();
         $out->{'system'} = $this->toSystem();
         $out->{'template'} = $this->toTemplate();
+        $out->{'TextNode'} = $this->toTextNode();
         $out->{'then'} = $this->toThen();
         $out->{'this'} = $this->toTopLevelThis();
         $out->{'thread_local'} = $this->toThreadLocal();
@@ -26999,6 +27809,7 @@ class TopLevel {
         ,TopLevel::fromTopLevelAny($obj->{'any'})
         ,TopLevel::fromAny($obj->{'Any'})
         ,TopLevel::fromArray($obj->{'array'})
+        ,TopLevel::fromArrayNode($obj->{'ArrayNode'})
         ,TopLevel::fromAs($obj->{'as'})
         ,TopLevel::fromASM($obj->{'asm'})
         ,TopLevel::fromAssert($obj->{'assert'})
@@ -27017,6 +27828,7 @@ class TopLevel {
         ,TopLevel::fromBool($obj->{'BOOL'})
         ,TopLevel::fromPurpleBool($obj->{'bool'})
         ,TopLevel::fromBoolean($obj->{'boolean'})
+        ,TopLevel::fromBooleanNode($obj->{'BooleanNode'})
         ,TopLevel::fromBreak($obj->{'break'})
         ,TopLevel::fromBycopy($obj->{'bycopy'})
         ,TopLevel::fromByref($obj->{'byref'})
@@ -27071,11 +27883,13 @@ class TopLevel {
         ,TopLevel::fromDel($obj->{'del'})
         ,TopLevel::fromDelegate($obj->{'delegate'})
         ,TopLevel::fromDelete($obj->{'delete'})
+        ,TopLevel::fromDeserializationFeature($obj->{'DeserializationFeature'})
         ,TopLevel::fromDict($obj->{'dict'})
         ,TopLevel::fromDictionary($obj->{'dictionary'})
         ,TopLevel::fromDidSet($obj->{'didSet'})
         ,TopLevel::fromDo($obj->{'do'})
         ,TopLevel::fromDouble($obj->{'double'})
+        ,TopLevel::fromDoubleNode($obj->{'DoubleNode'})
         ,TopLevel::fromDummy($obj->{'dummy'})
         ,TopLevel::fromDynamic($obj->{'dynamic'})
         ,TopLevel::fromDynamicCast($obj->{'dynamic_cast'})
@@ -27137,6 +27951,7 @@ class TopLevel {
         ,TopLevel::fromInt($obj->{'int'})
         ,TopLevel::fromInterface($obj->{'interface'})
         ,TopLevel::fromInternal($obj->{'internal'})
+        ,TopLevel::fromIntNode($obj->{'IntNode'})
         ,TopLevel::fromIs($obj->{'is'})
         ,TopLevel::fromISODateTimeOffsetConverter($obj->{'IsoDateTimeOffsetConverter'})
         ,TopLevel::fromIterable($obj->{'iterable'})
@@ -27167,6 +27982,7 @@ class TopLevel {
         ,TopLevel::fromLocale($obj->{'Locale'})
         ,TopLevel::fromLock($obj->{'lock'})
         ,TopLevel::fromLong($obj->{'long'})
+        ,TopLevel::fromLongNode($obj->{'LongNode'})
         ,TopLevel::fromMap($obj->{'map'})
         ,TopLevel::fromMapEntry($obj->{'MapEntry'})
         ,TopLevel::fromMetadataPropertyHandling($obj->{'metadata_property_handling'})
@@ -27193,10 +28009,12 @@ class TopLevel {
         ,TopLevel::fromNSString($obj->{'NSString'})
         ,TopLevel::fromNull($obj->{'NULL'})
         ,TopLevel::fromTopLevelNull($obj->{'null'})
+        ,TopLevel::fromNullNode($obj->{'NullNode'})
         ,TopLevel::fromNullptr($obj->{'nullptr'})
         ,TopLevel::fromNumber($obj->{'number'})
         ,TopLevel::fromObject($obj->{'object'})
         ,TopLevel::fromObjectMapper($obj->{'ObjectMapper'})
+        ,TopLevel::fromObjectNode($obj->{'ObjectNode'})
         ,TopLevel::fromOf($obj->{'of'})
         ,TopLevel::fromOneway($obj->{'oneway'})
         ,TopLevel::fromOpen($obj->{'open'})
@@ -27247,6 +28065,7 @@ class TopLevel {
         ,TopLevel::fromSelf($obj->{'Self'})
         ,TopLevel::fromTopLevelSelf($obj->{'self'})
         ,TopLevel::fromSendable($obj->{'Sendable'})
+        ,TopLevel::fromSerializationFeature($obj->{'SerializationFeature'})
         ,TopLevel::fromSerialize($obj->{'serialize'})
         ,TopLevel::fromSerializerProvider($obj->{'SerializerProvider'})
         ,TopLevel::fromSet($obj->{'set'})
@@ -27271,6 +28090,7 @@ class TopLevel {
         ,TopLevel::fromSynchronized($obj->{'synchronized'})
         ,TopLevel::fromSystem($obj->{'system'})
         ,TopLevel::fromTemplate($obj->{'template'})
+        ,TopLevel::fromTextNode($obj->{'TextNode'})
         ,TopLevel::fromThen($obj->{'then'})
         ,TopLevel::fromTopLevelThis($obj->{'this'})
         ,TopLevel::fromThreadLocal($obj->{'thread_local'})
@@ -27340,6 +28160,7 @@ class TopLevel {
         ,TopLevel::sampleTopLevelAny()
         ,TopLevel::sampleAny()
         ,TopLevel::sampleArray()
+        ,TopLevel::sampleArrayNode()
         ,TopLevel::sampleAs()
         ,TopLevel::sampleASM()
         ,TopLevel::sampleAssert()
@@ -27358,6 +28179,7 @@ class TopLevel {
         ,TopLevel::sampleBool()
         ,TopLevel::samplePurpleBool()
         ,TopLevel::sampleBoolean()
+        ,TopLevel::sampleBooleanNode()
         ,TopLevel::sampleBreak()
         ,TopLevel::sampleBycopy()
         ,TopLevel::sampleByref()
@@ -27412,11 +28234,13 @@ class TopLevel {
         ,TopLevel::sampleDel()
         ,TopLevel::sampleDelegate()
         ,TopLevel::sampleDelete()
+        ,TopLevel::sampleDeserializationFeature()
         ,TopLevel::sampleDict()
         ,TopLevel::sampleDictionary()
         ,TopLevel::sampleDidSet()
         ,TopLevel::sampleDo()
         ,TopLevel::sampleDouble()
+        ,TopLevel::sampleDoubleNode()
         ,TopLevel::sampleDummy()
         ,TopLevel::sampleDynamic()
         ,TopLevel::sampleDynamicCast()
@@ -27478,6 +28302,7 @@ class TopLevel {
         ,TopLevel::sampleInt()
         ,TopLevel::sampleInterface()
         ,TopLevel::sampleInternal()
+        ,TopLevel::sampleIntNode()
         ,TopLevel::sampleIs()
         ,TopLevel::sampleISODateTimeOffsetConverter()
         ,TopLevel::sampleIterable()
@@ -27508,6 +28333,7 @@ class TopLevel {
         ,TopLevel::sampleLocale()
         ,TopLevel::sampleLock()
         ,TopLevel::sampleLong()
+        ,TopLevel::sampleLongNode()
         ,TopLevel::sampleMap()
         ,TopLevel::sampleMapEntry()
         ,TopLevel::sampleMetadataPropertyHandling()
@@ -27534,10 +28360,12 @@ class TopLevel {
         ,TopLevel::sampleNSString()
         ,TopLevel::sampleNull()
         ,TopLevel::sampleTopLevelNull()
+        ,TopLevel::sampleNullNode()
         ,TopLevel::sampleNullptr()
         ,TopLevel::sampleNumber()
         ,TopLevel::sampleObject()
         ,TopLevel::sampleObjectMapper()
+        ,TopLevel::sampleObjectNode()
         ,TopLevel::sampleOf()
         ,TopLevel::sampleOneway()
         ,TopLevel::sampleOpen()
@@ -27588,6 +28416,7 @@ class TopLevel {
         ,TopLevel::sampleSelf()
         ,TopLevel::sampleTopLevelSelf()
         ,TopLevel::sampleSendable()
+        ,TopLevel::sampleSerializationFeature()
         ,TopLevel::sampleSerialize()
         ,TopLevel::sampleSerializerProvider()
         ,TopLevel::sampleSet()
@@ -27612,6 +28441,7 @@ class TopLevel {
         ,TopLevel::sampleSynchronized()
         ,TopLevel::sampleSystem()
         ,TopLevel::sampleTemplate()
+        ,TopLevel::sampleTextNode()
         ,TopLevel::sampleThen()
         ,TopLevel::sampleTopLevelThis()
         ,TopLevel::sampleThreadLocal()
@@ -27980,6 +28810,51 @@ class ArrayClass {
     }
 }
 
+// This is an autogenerated file:ArrayNode
+
+class ArrayNode {
+
+    /**
+     */
+    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 ArrayNode
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ArrayNode {
+        return new ArrayNode(
+        );
+    }
+
+    /**
+     * @return ArrayNode
+     */
+    public static function sample(): ArrayNode {
+        return new ArrayNode(
+        );
+    }
+}
+
 // This is an autogenerated file:AsClass
 
 class AsClass {
@@ -28745,6 +29620,51 @@ class Boolean {
     }
 }
 
+// This is an autogenerated file:BooleanNode
+
+class BooleanNode {
+
+    /**
+     */
+    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 BooleanNode
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): BooleanNode {
+        return new BooleanNode(
+        );
+    }
+
+    /**
+     * @return BooleanNode
+     */
+    public static function sample(): BooleanNode {
+        return new BooleanNode(
+        );
+    }
+}
+
 // This is an autogenerated file:BreakClass
 
 class BreakClass {
@@ -31175,6 +32095,51 @@ class Delete {
     }
 }
 
+// This is an autogenerated file:DeserializationFeature
+
+class DeserializationFeature {
+
+    /**
+     */
+    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 DeserializationFeature
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): DeserializationFeature {
+        return new DeserializationFeature(
+        );
+    }
+
+    /**
+     * @return DeserializationFeature
+     */
+    public static function sample(): DeserializationFeature {
+        return new DeserializationFeature(
+        );
+    }
+}
+
 // This is an autogenerated file:Dict
 
 class Dict {
@@ -31293,26 +32258,71 @@ class DidSet {
 
     /**
      * @param stdClass $obj
-     * @return DidSet
+     * @return DidSet
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): DidSet {
+        return new DidSet(
+        );
+    }
+
+    /**
+     * @return DidSet
+     */
+    public static function sample(): DidSet {
+        return new DidSet(
+        );
+    }
+}
+
+// This is an autogenerated file:DoClass
+
+class DoClass {
+
+    /**
+     */
+    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 DoClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): DidSet {
-        return new DidSet(
+    public static function from(stdClass $obj): DoClass {
+        return new DoClass(
         );
     }
 
     /**
-     * @return DidSet
+     * @return DoClass
      */
-    public static function sample(): DidSet {
-        return new DidSet(
+    public static function sample(): DoClass {
+        return new DoClass(
         );
     }
 }
 
-// This is an autogenerated file:DoClass
+// This is an autogenerated file:Double
 
-class DoClass {
+class Double {
 
     /**
      */
@@ -31338,26 +32348,26 @@ class DoClass {
 
     /**
      * @param stdClass $obj
-     * @return DoClass
+     * @return Double
      * @throws Exception
      */
-    public static function from(stdClass $obj): DoClass {
-        return new DoClass(
+    public static function from(stdClass $obj): Double {
+        return new Double(
         );
     }
 
     /**
-     * @return DoClass
+     * @return Double
      */
-    public static function sample(): DoClass {
-        return new DoClass(
+    public static function sample(): Double {
+        return new Double(
         );
     }
 }
 
-// This is an autogenerated file:Double
+// This is an autogenerated file:DoubleNode
 
-class Double {
+class DoubleNode {
 
     /**
      */
@@ -31383,19 +32393,19 @@ class Double {
 
     /**
      * @param stdClass $obj
-     * @return Double
+     * @return DoubleNode
      * @throws Exception
      */
-    public static function from(stdClass $obj): Double {
-        return new Double(
+    public static function from(stdClass $obj): DoubleNode {
+        return new DoubleNode(
         );
     }
 
     /**
-     * @return Double
+     * @return DoubleNode
      */
-    public static function sample(): Double {
-        return new Double(
+    public static function sample(): DoubleNode {
+        return new DoubleNode(
         );
     }
 }
@@ -34055,6 +35065,51 @@ class IntClass {
     }
 }
 
+// This is an autogenerated file:IntNode
+
+class IntNode {
+
+    /**
+     */
+    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 IntNode
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): IntNode {
+        return new IntNode(
+        );
+    }
+
+    /**
+     * @return IntNode
+     */
+    public static function sample(): IntNode {
+        return new IntNode(
+        );
+    }
+}
+
 // This is an autogenerated file:InterfaceClass
 
 class InterfaceClass {
@@ -35495,6 +36550,51 @@ class Long {
     }
 }
 
+// This is an autogenerated file:LongNode
+
+class LongNode {
+
+    /**
+     */
+    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 LongNode
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): LongNode {
+        return new LongNode(
+        );
+    }
+
+    /**
+     * @return LongNode
+     */
+    public static function sample(): LongNode {
+        return new LongNode(
+        );
+    }
+}
+
 // This is an autogenerated file:Map
 
 class Map {
@@ -36575,6 +37675,51 @@ class NULLClass {
     }
 }
 
+// This is an autogenerated file:NullNode
+
+class NullNode {
+
+    /**
+     */
+    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 NullNode
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): NullNode {
+        return new NullNode(
+        );
+    }
+
+    /**
+     * @return NullNode
+     */
+    public static function sample(): NullNode {
+        return new NullNode(
+        );
+    }
+}
+
 // This is an autogenerated file:Nullptr
 
 class Nullptr {
@@ -36755,6 +37900,51 @@ class ObjectMapper {
     }
 }
 
+// This is an autogenerated file:ObjectNode
+
+class ObjectNode {
+
+    /**
+     */
+    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 ObjectNode
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): ObjectNode {
+        return new ObjectNode(
+        );
+    }
+
+    /**
+     * @return ObjectNode
+     */
+    public static function sample(): ObjectNode {
+        return new ObjectNode(
+        );
+    }
+}
+
 // This is an autogenerated file:Of
 
 class Of {
@@ -38960,6 +40150,51 @@ class Sendable {
     }
 }
 
+// This is an autogenerated file:SerializationFeature
+
+class SerializationFeature {
+
+    /**
+     */
+    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 SerializationFeature
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): SerializationFeature {
+        return new SerializationFeature(
+        );
+    }
+
+    /**
+     * @return SerializationFeature
+     */
+    public static function sample(): SerializationFeature {
+        return new SerializationFeature(
+        );
+    }
+}
+
 // This is an autogenerated file:Serialize
 
 class Serialize {
@@ -40040,6 +41275,51 @@ class Template {
     }
 }
 
+// This is an autogenerated file:TextNode
+
+class TextNode {
+
+    /**
+     */
+    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 TextNode
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): TextNode {
+        return new TextNode(
+        );
+    }
+
+    /**
+     * @return TextNode
+     */
+    public static function sample(): TextNode {
+        return new TextNode(
+        );
+    }
+}
+
 // This is an autogenerated file:Then
 
 class Then {
diff --git a/base/schema-pike/test/inputs/schema/direct-union.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/direct-union.schema/default/TopLevel.pmod
index 301f9f7..8035c49 100644
--- a/base/schema-pike/test/inputs/schema/direct-union.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/direct-union.schema/default/TopLevel.pmod
@@ -13,11 +13,27 @@
 // match the expected interface, even if the JSON itself is valid.
 
 class TopLevel {
-    mapping(string:Thing) stuff; // json: "stuff"
+    ArrayNode|mixed       array_node;   // json: "arrayNode"
+    BooleanNode|mixed     boolean_node; // json: "booleanNode"
+    DoubleNode|mixed      double_node;  // json: "doubleNode"
+    IntNode|mixed         int_node;     // json: "intNode"
+    LongNode|mixed        long_node;    // json: "longNode"
+    NullNode|mixed        null_node;    // json: "nullNode"
+    ObjectNode|mixed      object_node;  // json: "objectNode"
+    mapping(string:Thing) stuff;        // json: "stuff"
+    TextNode|mixed        text_node;    // json: "textNode"
 
     string encode_json() {
         mapping(string:mixed) json = ([
+            "arrayNode" : array_node,
+            "booleanNode" : boolean_node,
+            "doubleNode" : double_node,
+            "intNode" : int_node,
+            "longNode" : long_node,
+            "nullNode" : null_node,
+            "objectNode" : object_node,
             "stuff" : stuff,
+            "textNode" : text_node,
         ]);
 
         return Standards.JSON.encode(json);
@@ -27,7 +43,127 @@ class TopLevel {
 TopLevel TopLevel_from_JSON(mixed json) {
     TopLevel retval = TopLevel();
 
+    retval.array_node = json["arrayNode"];
+    retval.boolean_node = json["booleanNode"];
+    retval.double_node = json["doubleNode"];
+    retval.int_node = json["intNode"];
+    retval.long_node = json["longNode"];
+    retval.null_node = json["nullNode"];
+    retval.object_node = json["objectNode"];
     retval.stuff = json["stuff"];
+    retval.text_node = json["textNode"];
+
+    return retval;
+}
+
+class ArrayNode {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+ArrayNode ArrayNode_from_JSON(mixed json) {
+    ArrayNode retval = ArrayNode();
+
+    return retval;
+}
+
+class BooleanNode {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+BooleanNode BooleanNode_from_JSON(mixed json) {
+    BooleanNode retval = BooleanNode();
+
+    return retval;
+}
+
+class DoubleNode {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+DoubleNode DoubleNode_from_JSON(mixed json) {
+    DoubleNode retval = DoubleNode();
+
+    return retval;
+}
+
+class IntNode {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+IntNode IntNode_from_JSON(mixed json) {
+    IntNode retval = IntNode();
+
+    return retval;
+}
+
+class LongNode {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+LongNode LongNode_from_JSON(mixed json) {
+    LongNode retval = LongNode();
+
+    return retval;
+}
+
+class NullNode {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+NullNode NullNode_from_JSON(mixed json) {
+    NullNode retval = NullNode();
+
+    return retval;
+}
+
+class ObjectNode {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+ObjectNode ObjectNode_from_JSON(mixed json) {
+    ObjectNode retval = ObjectNode();
 
     return retval;
 }
@@ -60,3 +196,19 @@ typedef array(mixed)|mapping(string:mixed)|bool|float|int|string Anything;
 Anything Anything_from_JSON(mixed json) {
     return json;
 }
+
+class TextNode {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+TextNode TextNode_from_JSON(mixed json) {
+    TextNode retval = TextNode();
+
+    return retval;
+}
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..1eeb407 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
@@ -44,6 +44,7 @@ enum Enum {
     AND_EQ = "and_eq",                                             // json: "and_eq"
     ANY = "any",                                                   // json: "any"
     ENUM_ANY = "Any",                                              // json: "Any"
+    ARRAY_NODE = "ArrayNode",                                      // json: "ArrayNode"
     ARRAY = "array",                                               // json: "array"
     AS = "as",                                                     // json: "as"
     ASM = "asm",                                                   // json: "asm"
@@ -63,6 +64,7 @@ enum Enum {
     ENUM_BOOL = "BOOL",                                            // json: "BOOL"
     PURPLE_BOOL = "bool",                                          // json: "bool"
     BOOLEAN = "boolean",                                           // json: "boolean"
+    BOOLEAN_NODE = "BooleanNode",                                  // json: "BooleanNode"
     BREAK = "break",                                               // json: "break"
     BYCOPY = "bycopy",                                             // json: "bycopy"
     BYREF = "byref",                                               // json: "byref"
@@ -106,6 +108,7 @@ enum Enum {
     DEBUGGER = "debugger",                                         // json: "debugger"
     DECIMAL = "decimal",                                           // json: "decimal"
     DECLARE = "declare",                                           // json: "declare"
+    DESERIALIZATION_FEATURE = "DeserializationFeature",            // json: "DeserializationFeature"
     DECLTYPE = "decltype",                                         // json: "decltype"
     DECODE_STRING = "decode_string",                               // json: "decode_string"
     DECODER = "Decoder",                                           // json: "Decoder"
@@ -122,6 +125,7 @@ enum Enum {
     DID_SET = "didSet",                                            // json: "didSet"
     DO = "do",                                                     // json: "do"
     DOUBLE = "double",                                             // json: "double"
+    DOUBLE_NODE = "DoubleNode",                                    // json: "DoubleNode"
     DYNAMIC = "dynamic",                                           // json: "dynamic"
     DYNAMIC_CAST = "dynamic_cast",                                 // json: "dynamic_cast"
     ELIF = "elif",                                                 // json: "elif"
@@ -180,6 +184,7 @@ enum Enum {
     INOUT = "inout",                                               // json: "inout"
     INSTANCEOF = "instanceof",                                     // json: "instanceof"
     INT = "int",                                                   // json: "int"
+    INT_NODE = "IntNode",                                          // json: "IntNode"
     INTERFACE = "interface",                                       // json: "interface"
     INTERNAL = "internal",                                         // json: "internal"
     ISO_DATE_TIME_OFFSET_CONVERTER = "IsoDateTimeOffsetConverter", // json: "IsoDateTimeOffsetConverter"
@@ -209,6 +214,7 @@ enum Enum {
     LEFT = "left",                                                 // json: "left"
     LET = "let",                                                   // json: "let"
     LIST = "list",                                                 // json: "list"
+    LONG_NODE = "LongNode",                                        // json: "LongNode"
     LOCALE = "Locale",                                             // json: "Locale"
     LOCK = "lock",                                                 // json: "lock"
     LONG = "long",                                                 // json: "long"
@@ -223,6 +229,7 @@ enum Enum {
     NEW = "new",                                                   // json: "new"
     NEWTONSOFT = "newtonsoft",                                     // json: "newtonsoft"
     NIL = "nil",                                                   // json: "nil"
+    NULL_NODE = "NullNode",                                        // json: "NullNode"
     NO = "NO",                                                     // json: "NO"
     NOEXCEPT = "noexcept",                                         // json: "noexcept"
     NONATOMIC = "nonatomic",                                       // json: "nonatomic"
@@ -241,6 +248,7 @@ enum Enum {
     NULLPTR = "nullptr",                                           // json: "nullptr"
     NUMBER = "number",                                             // json: "number"
     OBJECT = "object",                                             // json: "object"
+    OBJECT_NODE = "ObjectNode",                                    // json: "ObjectNode"
     OBJECT_MAPPER = "ObjectMapper",                                // json: "ObjectMapper"
     OF = "of",                                                     // json: "of"
     ONEWAY = "oneway",                                             // json: "oneway"
@@ -293,6 +301,7 @@ enum Enum {
     ENUM_SELF = "self",                                            // json: "self"
     SENDABLE = "Sendable",                                         // json: "Sendable"
     SERIALIZE = "serialize",                                       // json: "serialize"
+    SERIALIZATION_FEATURE = "SerializationFeature",                // json: "SerializationFeature"
     SERIALIZER_PROVIDER = "SerializerProvider",                    // json: "SerializerProvider"
     SET = "set",                                                   // json: "set"
     SHORT = "short",                                               // json: "short"
@@ -318,6 +327,7 @@ enum Enum {
     TEMPLATE = "template",                                         // json: "template"
     THEN = "then",                                                 // json: "then"
     THIS = "this",                                                 // json: "this"
+    TEXT_NODE = "TextNode",                                        // json: "TextNode"
     THREAD_LOCAL = "thread_local",                                 // json: "thread_local"
     THROW = "throw",                                               // json: "throw"
     THROWS = "throws",                                             // json: "throws"
@@ -369,5 +379,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 != "ArrayNode"&&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 != "BooleanNode"&&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 != "DeserializationFeature"&&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 != "DoubleNode"&&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 != "IntNode"&&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 != "LongNode"&&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 != "NullNode"&&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 != "ObjectNode"&&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 != "SerializationFeature"&&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 != "TextNode"&&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;
 }
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..977c0d8 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
@@ -25,6 +25,7 @@ class TopLevel {
     UnionAnyUnion                   top_level_any;                  // json: "any"
     UnionAny                        any;                            // json: "Any"
     UnionArray                      top_level_array;                // json: "array"
+    UnionArrayNode                  array_node;                     // json: "ArrayNode"
     UnionAs                         as;                             // json: "as"
     UnionAsm                        asm;                            // json: "asm"
     UnionAssert                     assert;                         // json: "assert"
@@ -43,6 +44,7 @@ class TopLevel {
     UnionBool                       bool;                           // json: "BOOL"
     TopLevelUnionBool               purple_bool;                    // json: "bool"
     UnionBoolean                    boolean;                        // json: "boolean"
+    UnionBooleanNode                boolean_node;                   // json: "BooleanNode"
     UnionBreak                      top_level_break;                // json: "break"
     UnionBycopy                     bycopy;                         // json: "bycopy"
     UnionByref                      byref;                          // json: "byref"
@@ -97,11 +99,13 @@ class TopLevel {
     UnionDel                        del;                            // json: "del"
     UnionDelegate                   delegate;                       // json: "delegate"
     UnionDelete                     delete;                         // json: "delete"
+    UnionDeserializationFeature     deserialization_feature;        // json: "DeserializationFeature"
     UnionDict                       dict;                           // json: "dict"
     UnionDictionary                 dictionary;                     // json: "dictionary"
     UnionDidSet                     did_set;                        // json: "didSet"
     UnionDo                         top_level_do;                   // json: "do"
     UnionDouble                     double;                         // json: "double"
+    UnionDoubleNode                 double_node;                    // json: "DoubleNode"
     float|mixed                     dummy;                          // json: "dummy"
     UnionDynamic                    dynamic;                        // json: "dynamic"
     UnionDynamicCast                dynamic_cast;                   // json: "dynamic_cast"
@@ -163,6 +167,7 @@ class TopLevel {
     UnionInt                        top_level_int;                  // json: "int"
     UnionInterface                  interface;                      // json: "interface"
     UnionInternal                   internal;                       // json: "internal"
+    UnionIntNode                    int_node;                       // json: "IntNode"
     UnionIs                         is;                             // json: "is"
     UnionIsoDateTimeOffsetConverter iso_date_time_offset_converter; // json: "IsoDateTimeOffsetConverter"
     UnionIterable                   iterable;                       // json: "iterable"
@@ -193,6 +198,7 @@ class TopLevel {
     UnionLocale                     locale;                         // json: "Locale"
     UnionLock                       lock;                           // json: "lock"
     UnionLong                       long;                           // json: "long"
+    UnionLongNode                   long_node;                      // json: "LongNode"
     UnionMap                        map;                            // json: "map"
     UnionMapEntry                   map_entry;                      // json: "MapEntry"
     UnionMetadataPropertyHandling   metadata_property_handling;     // json: "metadata_property_handling"
@@ -219,10 +225,12 @@ class TopLevel {
     UnionNsString                   ns_string;                      // json: "NSString"
     UnionNull                       null;                           // json: "NULL"
     UnionNullUnion                  top_level_null;                 // json: "null"
+    UnionNullNode                   null_node;                      // json: "NullNode"
     UnionNullptr                    nullptr;                        // json: "nullptr"
     UnionNumber                     number;                         // json: "number"
     UnionObject                     top_level_object;               // json: "object"
     UnionObjectMapper               object_mapper;                  // json: "ObjectMapper"
+    UnionObjectNode                 object_node;                    // json: "ObjectNode"
     UnionOf                         of;                             // json: "of"
     UnionOneway                     oneway;                         // json: "oneway"
     UnionOpen                       open;                           // json: "open"
@@ -273,6 +281,7 @@ class TopLevel {
     UnionSelf                       self;                           // json: "Self"
     UnionSelfUnion                  top_level_self;                 // json: "self"
     UnionSendable                   sendable;                       // json: "Sendable"
+    UnionSerializationFeature       serialization_feature;          // json: "SerializationFeature"
     UnionSerialize                  serialize;                      // json: "serialize"
     UnionSerializerProvider         serializer_provider;            // json: "SerializerProvider"
     UnionSet                        set;                            // json: "set"
@@ -297,6 +306,7 @@ class TopLevel {
     UnionSynchronized               synchronized;                   // json: "synchronized"
     UnionSystem                     system;                         // json: "system"
     UnionTemplate                   template;                       // json: "template"
+    UnionTextNode                   text_node;                      // json: "TextNode"
     UnionThen                       then;                           // json: "then"
     UnionThis                       this;                           // json: "this"
     UnionThreadLocal                thread_local;                   // json: "thread_local"
@@ -361,6 +371,7 @@ class TopLevel {
             "any" : top_level_any,
             "Any" : any,
             "array" : top_level_array,
+            "ArrayNode" : array_node,
             "as" : as,
             "asm" : asm,
             "assert" : assert,
@@ -379,6 +390,7 @@ class TopLevel {
             "BOOL" : bool,
             "bool" : purple_bool,
             "boolean" : boolean,
+            "BooleanNode" : boolean_node,
             "break" : top_level_break,
             "bycopy" : bycopy,
             "byref" : byref,
@@ -433,11 +445,13 @@ class TopLevel {
             "del" : del,
             "delegate" : delegate,
             "delete" : delete,
+            "DeserializationFeature" : deserialization_feature,
             "dict" : dict,
             "dictionary" : dictionary,
             "didSet" : did_set,
             "do" : top_level_do,
             "double" : double,
+            "DoubleNode" : double_node,
             "dummy" : dummy,
             "dynamic" : dynamic,
             "dynamic_cast" : dynamic_cast,
@@ -499,6 +513,7 @@ class TopLevel {
             "int" : top_level_int,
             "interface" : interface,
             "internal" : internal,
+            "IntNode" : int_node,
             "is" : is,
             "IsoDateTimeOffsetConverter" : iso_date_time_offset_converter,
             "iterable" : iterable,
@@ -529,6 +544,7 @@ class TopLevel {
             "Locale" : locale,
             "lock" : lock,
             "long" : long,
+            "LongNode" : long_node,
             "map" : map,
             "MapEntry" : map_entry,
             "metadata_property_handling" : metadata_property_handling,
@@ -555,10 +571,12 @@ class TopLevel {
             "NSString" : ns_string,
             "NULL" : null,
             "null" : top_level_null,
+            "NullNode" : null_node,
             "nullptr" : nullptr,
             "number" : number,
             "object" : top_level_object,
             "ObjectMapper" : object_mapper,
+            "ObjectNode" : object_node,
             "of" : of,
             "oneway" : oneway,
             "open" : open,
@@ -609,6 +627,7 @@ class TopLevel {
             "Self" : self,
             "self" : top_level_self,
             "Sendable" : sendable,
+            "SerializationFeature" : serialization_feature,
             "serialize" : serialize,
             "SerializerProvider" : serializer_provider,
             "set" : set,
@@ -633,6 +652,7 @@ class TopLevel {
             "synchronized" : synchronized,
             "system" : system,
             "template" : template,
+            "TextNode" : text_node,
             "then" : then,
             "this" : this,
             "thread_local" : thread_local,
@@ -715,6 +735,8 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.any = json["Any"];
     if (arrayp(json["array"])) error("Unexpected array");
     retval.top_level_array = json["array"];
+    if (arrayp(json["ArrayNode"])) error("Unexpected array");
+    retval.array_node = json["ArrayNode"];
     if (arrayp(json["as"])) error("Unexpected array");
     retval.as = json["as"];
     if (arrayp(json["asm"])) error("Unexpected array");
@@ -751,6 +773,8 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.purple_bool = json["bool"];
     if (arrayp(json["boolean"])) error("Unexpected array");
     retval.boolean = json["boolean"];
+    if (arrayp(json["BooleanNode"])) error("Unexpected array");
+    retval.boolean_node = json["BooleanNode"];
     if (arrayp(json["break"])) error("Unexpected array");
     retval.top_level_break = json["break"];
     if (arrayp(json["bycopy"])) error("Unexpected array");
@@ -859,6 +883,8 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.delegate = json["delegate"];
     if (arrayp(json["delete"])) error("Unexpected array");
     retval.delete = json["delete"];
+    if (arrayp(json["DeserializationFeature"])) error("Unexpected array");
+    retval.deserialization_feature = json["DeserializationFeature"];
     if (arrayp(json["dict"])) error("Unexpected array");
     retval.dict = json["dict"];
     if (arrayp(json["dictionary"])) error("Unexpected array");
@@ -869,6 +895,8 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.top_level_do = json["do"];
     if (arrayp(json["double"])) error("Unexpected array");
     retval.double = json["double"];
+    if (arrayp(json["DoubleNode"])) error("Unexpected array");
+    retval.double_node = json["DoubleNode"];
     retval.dummy = json["dummy"];
     if (arrayp(json["dynamic"])) error("Unexpected array");
     retval.dynamic = json["dynamic"];
@@ -990,6 +1018,8 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.interface = json["interface"];
     if (arrayp(json["internal"])) error("Unexpected array");
     retval.internal = json["internal"];
+    if (arrayp(json["IntNode"])) error("Unexpected array");
+    retval.int_node = json["IntNode"];
     if (arrayp(json["is"])) error("Unexpected array");
     retval.is = json["is"];
     if (arrayp(json["IsoDateTimeOffsetConverter"])) error("Unexpected array");
@@ -1050,6 +1080,8 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.lock = json["lock"];
     if (arrayp(json["long"])) error("Unexpected array");
     retval.long = json["long"];
+    if (arrayp(json["LongNode"])) error("Unexpected array");
+    retval.long_node = json["LongNode"];
     if (arrayp(json["map"])) error("Unexpected array");
     retval.map = json["map"];
     if (arrayp(json["MapEntry"])) error("Unexpected array");
@@ -1102,6 +1134,8 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.null = json["NULL"];
     if (arrayp(json["null"])) error("Unexpected array");
     retval.top_level_null = json["null"];
+    if (arrayp(json["NullNode"])) error("Unexpected array");
+    retval.null_node = json["NullNode"];
     if (arrayp(json["nullptr"])) error("Unexpected array");
     retval.nullptr = json["nullptr"];
     if (arrayp(json["number"])) error("Unexpected array");
@@ -1110,6 +1144,8 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.top_level_object = json["object"];
     if (arrayp(json["ObjectMapper"])) error("Unexpected array");
     retval.object_mapper = json["ObjectMapper"];
+    if (arrayp(json["ObjectNode"])) error("Unexpected array");
+    retval.object_node = json["ObjectNode"];
     if (arrayp(json["of"])) error("Unexpected array");
     retval.of = json["of"];
     if (arrayp(json["oneway"])) error("Unexpected array");
@@ -1210,6 +1246,8 @@ 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["SerializationFeature"])) error("Unexpected array");
+    retval.serialization_feature = json["SerializationFeature"];
     if (arrayp(json["serialize"])) error("Unexpected array");
     retval.serialize = json["serialize"];
     if (arrayp(json["SerializerProvider"])) error("Unexpected array");
@@ -1258,6 +1296,8 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.system = json["system"];
     if (arrayp(json["template"])) error("Unexpected array");
     retval.template = json["template"];
+    if (arrayp(json["TextNode"])) error("Unexpected array");
+    retval.text_node = json["TextNode"];
     if (arrayp(json["then"])) error("Unexpected array");
     retval.then = json["then"];
     if (arrayp(json["this"])) error("Unexpected array");
@@ -1492,6 +1532,28 @@ Any Any_from_JSON(mixed json) {
     return retval;
 }
 
+typedef ArrayNode|float UnionArrayNode;
+
+UnionArrayNode UnionArrayNode_from_JSON(mixed json) {
+    return json;
+}
+
+class ArrayNode {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+ArrayNode ArrayNode_from_JSON(mixed json) {
+    ArrayNode retval = ArrayNode();
+
+    return retval;
+}
+
 typedef As|float UnionAs;
 
 UnionAs UnionAs_from_JSON(mixed json) {
@@ -1844,6 +1906,28 @@ Boolean Boolean_from_JSON(mixed json) {
     return retval;
 }
 
+typedef BooleanNode|float UnionBooleanNode;
+
+UnionBooleanNode UnionBooleanNode_from_JSON(mixed json) {
+    return json;
+}
+
+class BooleanNode {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+BooleanNode BooleanNode_from_JSON(mixed json) {
+    BooleanNode retval = BooleanNode();
+
+    return retval;
+}
+
 typedef Bycopy|float UnionBycopy;
 
 UnionBycopy UnionBycopy_from_JSON(mixed json) {
@@ -2878,6 +2962,28 @@ Delete Delete_from_JSON(mixed json) {
     return retval;
 }
 
+typedef DeserializationFeature|float UnionDeserializationFeature;
+
+UnionDeserializationFeature UnionDeserializationFeature_from_JSON(mixed json) {
+    return json;
+}
+
+class DeserializationFeature {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+DeserializationFeature DeserializationFeature_from_JSON(mixed json) {
+    DeserializationFeature retval = DeserializationFeature();
+
+    return retval;
+}
+
 typedef Dict|float UnionDict;
 
 UnionDict UnionDict_from_JSON(mixed json) {
@@ -2966,6 +3072,28 @@ Double Double_from_JSON(mixed json) {
     return retval;
 }
 
+typedef float|DoubleNode UnionDoubleNode;
+
+UnionDoubleNode UnionDoubleNode_from_JSON(mixed json) {
+    return json;
+}
+
+class DoubleNode {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+DoubleNode DoubleNode_from_JSON(mixed json) {
+    DoubleNode retval = DoubleNode();
+
+    return retval;
+}
+
 typedef float|Dynamic UnionDynamic;
 
 UnionDynamic UnionDynamic_from_JSON(mixed json) {
@@ -3978,6 +4106,28 @@ Instanceof Instanceof_from_JSON(mixed json) {
     return retval;
 }
 
+typedef float|IntNode UnionIntNode;
+
+UnionIntNode UnionIntNode_from_JSON(mixed json) {
+    return json;
+}
+
+class IntNode {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+IntNode IntNode_from_JSON(mixed json) {
+    IntNode retval = IntNode();
+
+    return retval;
+}
+
 typedef float|Interface UnionInterface;
 
 UnionInterface UnionInterface_from_JSON(mixed json) {
@@ -4660,6 +4810,28 @@ Long Long_from_JSON(mixed json) {
     return retval;
 }
 
+typedef float|LongNode UnionLongNode;
+
+UnionLongNode UnionLongNode_from_JSON(mixed json) {
+    return json;
+}
+
+class LongNode {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+LongNode LongNode_from_JSON(mixed json) {
+    LongNode retval = LongNode();
+
+    return retval;
+}
+
 typedef float|Map UnionMap;
 
 UnionMap UnionMap_from_JSON(mixed json) {
@@ -5188,6 +5360,28 @@ Null Null_from_JSON(mixed json) {
     return retval;
 }
 
+typedef float|NullNode UnionNullNode;
+
+UnionNullNode UnionNullNode_from_JSON(mixed json) {
+    return json;
+}
+
+class NullNode {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+NullNode NullNode_from_JSON(mixed json) {
+    NullNode retval = NullNode();
+
+    return retval;
+}
+
 typedef float|Nullptr UnionNullptr;
 
 UnionNullptr UnionNullptr_from_JSON(mixed json) {
@@ -5254,6 +5448,28 @@ ObjectMapper ObjectMapper_from_JSON(mixed json) {
     return retval;
 }
 
+typedef float|ObjectNode UnionObjectNode;
+
+UnionObjectNode UnionObjectNode_from_JSON(mixed json) {
+    return json;
+}
+
+class ObjectNode {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+ObjectNode ObjectNode_from_JSON(mixed json) {
+    ObjectNode retval = ObjectNode();
+
+    return retval;
+}
+
 typedef float|Of UnionOf;
 
 UnionOf UnionOf_from_JSON(mixed json) {
@@ -6244,6 +6460,28 @@ Sendable Sendable_from_JSON(mixed json) {
     return retval;
 }
 
+typedef float|SerializationFeature UnionSerializationFeature;
+
+UnionSerializationFeature UnionSerializationFeature_from_JSON(mixed json) {
+    return json;
+}
+
+class SerializationFeature {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+SerializationFeature SerializationFeature_from_JSON(mixed json) {
+    SerializationFeature retval = SerializationFeature();
+
+    return retval;
+}
+
 typedef float|Serialize UnionSerialize;
 
 UnionSerialize UnionSerialize_from_JSON(mixed json) {
@@ -6706,6 +6944,28 @@ Template Template_from_JSON(mixed json) {
     return retval;
 }
 
+typedef float|TextNode UnionTextNode;
+
+UnionTextNode UnionTextNode_from_JSON(mixed json) {
+    return json;
+}
+
+class TextNode {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+TextNode TextNode_from_JSON(mixed json) {
+    TextNode retval = TextNode();
+
+    return retval;
+}
+
 typedef float|Then UnionThen;
 
 UnionThen UnionThen_from_JSON(mixed json) {
diff --git a/base/schema-python/test/inputs/schema/direct-union.schema/default/quicktype.py b/head/schema-python/test/inputs/schema/direct-union.schema/default/quicktype.py
index f5c74c0..efd3f25 100644
--- a/base/schema-python/test/inputs/schema/direct-union.schema/default/quicktype.py
+++ b/head/schema-python/test/inputs/schema/direct-union.schema/default/quicktype.py
@@ -59,6 +59,104 @@ def to_class(c: Type[T], x: Any) -> dict:
     return cast(Any, x).to_dict()
 
 
+@dataclass
+class ArrayNode:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'ArrayNode':
+        assert isinstance(obj, dict)
+        return ArrayNode()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
+@dataclass
+class BooleanNode:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'BooleanNode':
+        assert isinstance(obj, dict)
+        return BooleanNode()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
+@dataclass
+class DoubleNode:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'DoubleNode':
+        assert isinstance(obj, dict)
+        return DoubleNode()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
+@dataclass
+class IntNode:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'IntNode':
+        assert isinstance(obj, dict)
+        return IntNode()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
+@dataclass
+class LongNode:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'LongNode':
+        assert isinstance(obj, dict)
+        return LongNode()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
+@dataclass
+class NullNode:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'NullNode':
+        assert isinstance(obj, dict)
+        return NullNode()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
+@dataclass
+class ObjectNode:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'ObjectNode':
+        assert isinstance(obj, dict)
+        return ObjectNode()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
 @dataclass
 class Thing:
     optional: float | int | bool | str | list[Any] | dict[str, Any] | None = None
@@ -79,19 +177,65 @@ class Thing:
         return result
 
 
+@dataclass
+class TextNode:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'TextNode':
+        assert isinstance(obj, dict)
+        return TextNode()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
 @dataclass
 class TopLevel:
     stuff: dict[str, Thing]
+    array_node: ArrayNode | None = None
+    boolean_node: BooleanNode | None = None
+    double_node: DoubleNode | None = None
+    int_node: IntNode | None = None
+    long_node: LongNode | None = None
+    null_node: NullNode | None = None
+    object_node: ObjectNode | None = None
+    text_node: TextNode | None = None
 
     @staticmethod
     def from_dict(obj: Any) -> 'TopLevel':
         assert isinstance(obj, dict)
         stuff = from_dict(Thing.from_dict, obj["stuff"])
-        return TopLevel(stuff)
+        array_node = from_union([ArrayNode.from_dict, from_none], obj.get("arrayNode"))
+        boolean_node = from_union([BooleanNode.from_dict, from_none], obj.get("booleanNode"))
+        double_node = from_union([DoubleNode.from_dict, from_none], obj.get("doubleNode"))
+        int_node = from_union([IntNode.from_dict, from_none], obj.get("intNode"))
+        long_node = from_union([LongNode.from_dict, from_none], obj.get("longNode"))
+        null_node = from_union([NullNode.from_dict, from_none], obj.get("nullNode"))
+        object_node = from_union([ObjectNode.from_dict, from_none], obj.get("objectNode"))
+        text_node = from_union([TextNode.from_dict, from_none], obj.get("textNode"))
+        return TopLevel(stuff, array_node, boolean_node, double_node, int_node, long_node, null_node, object_node, text_node)
 
     def to_dict(self) -> dict:
         result: dict = {}
         result["stuff"] = from_dict(lambda x: to_class(Thing, x), self.stuff)
+        if self.array_node is not None:
+            result["arrayNode"] = from_union([lambda x: to_class(ArrayNode, x), from_none], self.array_node)
+        if self.boolean_node is not None:
+            result["booleanNode"] = from_union([lambda x: to_class(BooleanNode, x), from_none], self.boolean_node)
+        if self.double_node is not None:
+            result["doubleNode"] = from_union([lambda x: to_class(DoubleNode, x), from_none], self.double_node)
+        if self.int_node is not None:
+            result["intNode"] = from_union([lambda x: to_class(IntNode, x), from_none], self.int_node)
+        if self.long_node is not None:
+            result["longNode"] = from_union([lambda x: to_class(LongNode, x), from_none], self.long_node)
+        if self.null_node is not None:
+            result["nullNode"] = from_union([lambda x: to_class(NullNode, x), from_none], self.null_node)
+        if self.object_node is not None:
+            result["objectNode"] = from_union([lambda x: to_class(ObjectNode, x), from_none], self.object_node)
+        if self.text_node is not None:
+            result["textNode"] = from_union([lambda x: to_class(TextNode, x), from_none], self.text_node)
         return result
 
 
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..38ab998 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
@@ -43,6 +43,7 @@ class EnumEnum(Enum):
     AND_EQ = "and_eq"
     ANY = "any"
     ENUM_ANY = "Any"
+    ARRAY_NODE = "ArrayNode"
     ARRAY = "array"
     AS = "as"
     ASM = "asm"
@@ -62,6 +63,7 @@ class EnumEnum(Enum):
     ENUM_BOOL = "BOOL"
     PURPLE_BOOL = "bool"
     BOOLEAN = "boolean"
+    BOOLEAN_NODE = "BooleanNode"
     BREAK = "break"
     BYCOPY = "bycopy"
     BYREF = "byref"
@@ -105,6 +107,7 @@ class EnumEnum(Enum):
     DEBUGGER = "debugger"
     DECIMAL = "decimal"
     DECLARE = "declare"
+    DESERIALIZATION_FEATURE = "DeserializationFeature"
     DECLTYPE = "decltype"
     DECODE_STRING = "decode_string"
     DECODER = "Decoder"
@@ -121,6 +124,7 @@ class EnumEnum(Enum):
     DID_SET = "didSet"
     DO = "do"
     DOUBLE = "double"
+    DOUBLE_NODE = "DoubleNode"
     DYNAMIC = "dynamic"
     DYNAMIC_CAST = "dynamic_cast"
     ELIF = "elif"
@@ -179,6 +183,7 @@ class EnumEnum(Enum):
     INOUT = "inout"
     INSTANCEOF = "instanceof"
     INT = "int"
+    INT_NODE = "IntNode"
     INTERFACE = "interface"
     INTERNAL = "internal"
     ISO_DATE_TIME_OFFSET_CONVERTER = "IsoDateTimeOffsetConverter"
@@ -208,6 +213,7 @@ class EnumEnum(Enum):
     LEFT = "left"
     LET = "let"
     LIST = "list"
+    LONG_NODE = "LongNode"
     LOCALE = "Locale"
     LOCK = "lock"
     LONG = "long"
@@ -222,6 +228,7 @@ class EnumEnum(Enum):
     NEW = "new"
     NEWTONSOFT = "newtonsoft"
     NIL = "nil"
+    NULL_NODE = "NullNode"
     NO = "NO"
     NOEXCEPT = "noexcept"
     NONATOMIC = "nonatomic"
@@ -240,6 +247,7 @@ class EnumEnum(Enum):
     NULLPTR = "nullptr"
     NUMBER = "number"
     OBJECT = "object"
+    OBJECT_NODE = "ObjectNode"
     OBJECT_MAPPER = "ObjectMapper"
     OF = "of"
     ONEWAY = "oneway"
@@ -292,6 +300,7 @@ class EnumEnum(Enum):
     ENUM_SELF = "self"
     SENDABLE = "Sendable"
     SERIALIZE = "serialize"
+    SERIALIZATION_FEATURE = "SerializationFeature"
     SERIALIZER_PROVIDER = "SerializerProvider"
     SET = "set"
     SHORT = "short"
@@ -317,6 +326,7 @@ class EnumEnum(Enum):
     TEMPLATE = "template"
     THEN = "then"
     THIS = "this"
+    TEXT_NODE = "TextNode"
     THREAD_LOCAL = "thread_local"
     THROW = "throw"
     THROWS = "throws"
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..3873ffc 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
@@ -118,6 +118,20 @@ class Array:
         return result
 
 
+@dataclass
+class ArrayNode:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'ArrayNode':
+        assert isinstance(obj, dict)
+        return ArrayNode()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
 @dataclass
 class ASM:
     pass
@@ -286,6 +300,20 @@ class Boolean:
         return result
 
 
+@dataclass
+class BooleanNode:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'BooleanNode':
+        assert isinstance(obj, dict)
+        return BooleanNode()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
 @dataclass
 class Bycopy:
     pass
@@ -972,6 +1000,20 @@ class Delete:
         return result
 
 
+@dataclass
+class DeserializationFeature:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'DeserializationFeature':
+        assert isinstance(obj, dict)
+        return DeserializationFeature()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
 @dataclass
 class Dictionary:
     pass
@@ -1028,6 +1070,20 @@ class Double:
         return result
 
 
+@dataclass
+class DoubleNode:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'DoubleNode':
+        assert isinstance(obj, dict)
+        return DoubleNode()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
 @dataclass
 class Dynamic:
     pass
@@ -1700,6 +1756,20 @@ class Instanceof:
         return result
 
 
+@dataclass
+class IntNode:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'IntNode':
+        assert isinstance(obj, dict)
+        return IntNode()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
 @dataclass
 class Interface:
     pass
@@ -2120,6 +2190,20 @@ class Long:
         return result
 
 
+@dataclass
+class LongNode:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'LongNode':
+        assert isinstance(obj, dict)
+        return LongNode()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
 @dataclass
 class Map:
     pass
@@ -2428,6 +2512,20 @@ class Null:
         return result
 
 
+@dataclass
+class NullNode:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'NullNode':
+        assert isinstance(obj, dict)
+        return NullNode()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
 @dataclass
 class Nullptr:
     pass
@@ -2484,6 +2582,20 @@ class ObjectMapper:
         return result
 
 
+@dataclass
+class ObjectNode:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'ObjectNode':
+        assert isinstance(obj, dict)
+        return ObjectNode()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
 @dataclass
 class Of:
     pass
@@ -3114,6 +3226,20 @@ class Sendable:
         return result
 
 
+@dataclass
+class SerializationFeature:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'SerializationFeature':
+        assert isinstance(obj, dict)
+        return SerializationFeature()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
 @dataclass
 class Serialize:
     pass
@@ -3450,6 +3576,20 @@ class Template:
         return result
 
 
+@dataclass
+class TextNode:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'TextNode':
+        assert isinstance(obj, dict)
+        return TextNode()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
 @dataclass
 class Then:
     pass
@@ -4696,6 +4836,7 @@ class TopLevel:
     top_level_any: float | UnionAnyAny | None = None
     any: float | AnyClass | None = None
     array: float | Array | None = None
+    array_node: float | ArrayNode | None = None
     top_level_as: float | As | None = None
     asm: float | ASM | None = None
     top_level_assert: float | Assert | None = None
@@ -4714,6 +4855,7 @@ class TopLevel:
     top_level_bool: float | Bool | None = None
     fluffy_bool: float | UnionBoolBool | None = None
     boolean: float | Boolean | None = None
+    boolean_node: float | BooleanNode | None = None
     top_level_break: float | Break | None = None
     bycopy: float | Bycopy | None = None
     byref: float | Byref | None = None
@@ -4768,11 +4910,13 @@ class TopLevel:
     top_level_del: float | Del | None = None
     delegate: float | Delegate | None = None
     delete: float | Delete | None = None
+    deserialization_feature: float | DeserializationFeature | None = None
     top_level_dict: float | DictClass | None = None
     dictionary: float | Dictionary | None = None
     did_set: float | DidSet | None = None
     do: float | Do | None = None
     double: float | Double | None = None
+    double_node: float | DoubleNode | None = None
     dummy: float | None = None
     dynamic: float | Dynamic | None = None
     dynamic_cast: float | DynamicCast | None = None
@@ -4834,6 +4978,7 @@ class TopLevel:
     top_level_int: float | Int | None = None
     interface: float | Interface | None = None
     internal: float | Internal | None = None
+    int_node: float | IntNode | None = None
     top_level_is: float | Is | None = None
     iso_date_time_offset_converter: float | ISODateTimeOffsetConverter | None = None
     iterable: float | IterableClass | None = None
@@ -4864,6 +5009,7 @@ class TopLevel:
     locale: float | Locale | None = None
     lock: float | Lock | None = None
     long: float | Long | None = None
+    long_node: float | LongNode | None = None
     map: float | Map | None = None
     map_entry: float | MapEntry | None = None
     metadata_property_handling: float | MetadataPropertyHandling | None = None
@@ -4890,10 +5036,12 @@ class TopLevel:
     ns_string: float | NSString | None = None
     null: float | Null | None = None
     top_level_null: float | NullClass | None = None
+    null_node: float | NullNode | None = None
     nullptr: float | Nullptr | None = None
     number: float | Number | None = None
     object: float | Object | None = None
     object_mapper: float | ObjectMapper | None = None
+    object_node: float | ObjectNode | None = None
     of: float | Of | None = None
     oneway: float | Oneway | None = None
     open: float | Open | None = None
@@ -4944,6 +5092,7 @@ class TopLevel:
     top_level_self: float | Self | None = None
     purple_self: float | SelfClass | None = None
     sendable: float | Sendable | None = None
+    serialization_feature: float | SerializationFeature | None = None
     serialize: float | Serialize | None = None
     serializer_provider: float | SerializerProvider | None = None
     set: float | Set | None = None
@@ -4968,6 +5117,7 @@ class TopLevel:
     synchronized: float | Synchronized | None = None
     system: float | System | None = None
     template: float | Template | None = None
+    text_node: float | TextNode | None = None
     then: float | Then | None = None
     this: float | This | None = None
     thread_local: float | ThreadLocal | None = None
@@ -5033,6 +5183,7 @@ class TopLevel:
         top_level_any = from_union([from_float, UnionAnyAny.from_dict, from_none], obj.get("any"))
         any = from_union([from_float, AnyClass.from_dict, from_none], obj.get("Any"))
         array = from_union([from_float, Array.from_dict, from_none], obj.get("array"))
+        array_node = from_union([from_float, ArrayNode.from_dict, from_none], obj.get("ArrayNode"))
         top_level_as = from_union([from_float, As.from_dict, from_none], obj.get("as"))
         asm = from_union([from_float, ASM.from_dict, from_none], obj.get("asm"))
         top_level_assert = from_union([from_float, Assert.from_dict, from_none], obj.get("assert"))
@@ -5051,6 +5202,7 @@ class TopLevel:
         top_level_bool = from_union([from_float, Bool.from_dict, from_none], obj.get("BOOL"))
         fluffy_bool = from_union([from_float, UnionBoolBool.from_dict, from_none], obj.get("bool"))
         boolean = from_union([from_float, Boolean.from_dict, from_none], obj.get("boolean"))
+        boolean_node = from_union([from_float, BooleanNode.from_dict, from_none], obj.get("BooleanNode"))
         top_level_break = from_union([from_float, Break.from_dict, from_none], obj.get("break"))
         bycopy = from_union([from_float, Bycopy.from_dict, from_none], obj.get("bycopy"))
         byref = from_union([from_float, Byref.from_dict, from_none], obj.get("byref"))
@@ -5105,11 +5257,13 @@ class TopLevel:
         top_level_del = from_union([from_float, Del.from_dict, from_none], obj.get("del"))
         delegate = from_union([from_float, Delegate.from_dict, from_none], obj.get("delegate"))
         delete = from_union([from_float, Delete.from_dict, from_none], obj.get("delete"))
+        deserialization_feature = from_union([from_float, DeserializationFeature.from_dict, from_none], obj.get("DeserializationFeature"))
         top_level_dict = from_union([from_float, DictClass.from_dict, from_none], obj.get("dict"))
         dictionary = from_union([from_float, Dictionary.from_dict, from_none], obj.get("dictionary"))
         did_set = from_union([from_float, DidSet.from_dict, from_none], obj.get("didSet"))
         do = from_union([from_float, Do.from_dict, from_none], obj.get("do"))
         double = from_union([from_float, Double.from_dict, from_none], obj.get("double"))
+        double_node = from_union([from_float, DoubleNode.from_dict, from_none], obj.get("DoubleNode"))
         dummy = from_union([from_float, from_none], obj.get("dummy"))
         dynamic = from_union([from_float, Dynamic.from_dict, from_none], obj.get("dynamic"))
         dynamic_cast = from_union([from_float, DynamicCast.from_dict, from_none], obj.get("dynamic_cast"))
@@ -5171,6 +5325,7 @@ class TopLevel:
         top_level_int = from_union([from_float, Int.from_dict, from_none], obj.get("int"))
         interface = from_union([from_float, Interface.from_dict, from_none], obj.get("interface"))
         internal = from_union([from_float, Internal.from_dict, from_none], obj.get("internal"))
+        int_node = from_union([from_float, IntNode.from_dict, from_none], obj.get("IntNode"))
         top_level_is = from_union([from_float, Is.from_dict, from_none], obj.get("is"))
         iso_date_time_offset_converter = from_union([from_float, ISODateTimeOffsetConverter.from_dict, from_none], obj.get("IsoDateTimeOffsetConverter"))
         iterable = from_union([from_float, IterableClass.from_dict, from_none], obj.get("iterable"))
@@ -5201,6 +5356,7 @@ class TopLevel:
         locale = from_union([from_float, Locale.from_dict, from_none], obj.get("Locale"))
         lock = from_union([from_float, Lock.from_dict, from_none], obj.get("lock"))
         long = from_union([from_float, Long.from_dict, from_none], obj.get("long"))
+        long_node = from_union([from_float, LongNode.from_dict, from_none], obj.get("LongNode"))
         map = from_union([from_float, Map.from_dict, from_none], obj.get("map"))
         map_entry = from_union([from_float, MapEntry.from_dict, from_none], obj.get("MapEntry"))
         metadata_property_handling = from_union([from_float, MetadataPropertyHandling.from_dict, from_none], obj.get("metadata_property_handling"))
@@ -5227,10 +5383,12 @@ class TopLevel:
         ns_string = from_union([from_float, NSString.from_dict, from_none], obj.get("NSString"))
         null = from_union([from_float, Null.from_dict, from_none], obj.get("NULL"))
         top_level_null = from_union([from_float, NullClass.from_dict, from_none], obj.get("null"))
+        null_node = from_union([from_float, NullNode.from_dict, from_none], obj.get("NullNode"))
         nullptr = from_union([from_float, Nullptr.from_dict, from_none], obj.get("nullptr"))
         number = from_union([from_float, Number.from_dict, from_none], obj.get("number"))
         object = from_union([from_float, Object.from_dict, from_none], obj.get("object"))
         object_mapper = from_union([from_float, ObjectMapper.from_dict, from_none], obj.get("ObjectMapper"))
+        object_node = from_union([from_float, ObjectNode.from_dict, from_none], obj.get("ObjectNode"))
         of = from_union([from_float, Of.from_dict, from_none], obj.get("of"))
         oneway = from_union([from_float, Oneway.from_dict, from_none], obj.get("oneway"))
         open = from_union([from_float, Open.from_dict, from_none], obj.get("open"))
@@ -5281,6 +5439,7 @@ 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"))
+        serialization_feature = from_union([from_float, SerializationFeature.from_dict, from_none], obj.get("SerializationFeature"))
         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"))
         set = from_union([from_float, Set.from_dict, from_none], obj.get("set"))
@@ -5305,6 +5464,7 @@ class TopLevel:
         synchronized = from_union([from_float, Synchronized.from_dict, from_none], obj.get("synchronized"))
         system = from_union([from_float, System.from_dict, from_none], obj.get("system"))
         template = from_union([from_float, Template.from_dict, from_none], obj.get("template"))
+        text_node = from_union([from_float, TextNode.from_dict, from_none], obj.get("TextNode"))
         then = from_union([from_float, Then.from_dict, from_none], obj.get("then"))
         this = from_union([from_float, This.from_dict, from_none], obj.get("this"))
         thread_local = from_union([from_float, ThreadLocal.from_dict, from_none], obj.get("thread_local"))
@@ -5354,7 +5514,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, array_node, 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, boolean_node, 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, deserialization_feature, top_level_dict, dictionary, did_set, do, double, double_node, 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, int_node, 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, long_node, 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, null_node, nullptr, number, object, object_mapper, object_node, 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, serialization_feature, 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, text_node, 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)
 
     def to_dict(self) -> dict:
         result: dict = {}
@@ -5382,6 +5542,8 @@ class TopLevel:
             result["Any"] = from_union([to_float, lambda x: to_class(AnyClass, x), from_none], self.any)
         if self.array is not None:
             result["array"] = from_union([to_float, lambda x: to_class(Array, x), from_none], self.array)
+        if self.array_node is not None:
+            result["ArrayNode"] = from_union([to_float, lambda x: to_class(ArrayNode, x), from_none], self.array_node)
         if self.top_level_as is not None:
             result["as"] = from_union([to_float, lambda x: to_class(As, x), from_none], self.top_level_as)
         if self.asm is not None:
@@ -5418,6 +5580,8 @@ class TopLevel:
             result["bool"] = from_union([to_float, lambda x: to_class(UnionBoolBool, x), from_none], self.fluffy_bool)
         if self.boolean is not None:
             result["boolean"] = from_union([to_float, lambda x: to_class(Boolean, x), from_none], self.boolean)
+        if self.boolean_node is not None:
+            result["BooleanNode"] = from_union([to_float, lambda x: to_class(BooleanNode, x), from_none], self.boolean_node)
         if self.top_level_break is not None:
             result["break"] = from_union([to_float, lambda x: to_class(Break, x), from_none], self.top_level_break)
         if self.bycopy is not None:
@@ -5526,6 +5690,8 @@ class TopLevel:
             result["delegate"] = from_union([to_float, lambda x: to_class(Delegate, x), from_none], self.delegate)
         if self.delete is not None:
             result["delete"] = from_union([to_float, lambda x: to_class(Delete, x), from_none], self.delete)
+        if self.deserialization_feature is not None:
+            result["DeserializationFeature"] = from_union([to_float, lambda x: to_class(DeserializationFeature, x), from_none], self.deserialization_feature)
         if self.top_level_dict is not None:
             result["dict"] = from_union([to_float, lambda x: to_class(DictClass, x), from_none], self.top_level_dict)
         if self.dictionary is not None:
@@ -5536,6 +5702,8 @@ class TopLevel:
             result["do"] = from_union([to_float, lambda x: to_class(Do, x), from_none], self.do)
         if self.double is not None:
             result["double"] = from_union([to_float, lambda x: to_class(Double, x), from_none], self.double)
+        if self.double_node is not None:
+            result["DoubleNode"] = from_union([to_float, lambda x: to_class(DoubleNode, x), from_none], self.double_node)
         if self.dummy is not None:
             result["dummy"] = from_union([to_float, from_none], self.dummy)
         if self.dynamic is not None:
@@ -5658,6 +5826,8 @@ class TopLevel:
             result["interface"] = from_union([to_float, lambda x: to_class(Interface, x), from_none], self.interface)
         if self.internal is not None:
             result["internal"] = from_union([to_float, lambda x: to_class(Internal, x), from_none], self.internal)
+        if self.int_node is not None:
+            result["IntNode"] = from_union([to_float, lambda x: to_class(IntNode, x), from_none], self.int_node)
         if self.top_level_is is not None:
             result["is"] = from_union([to_float, lambda x: to_class(Is, x), from_none], self.top_level_is)
         if self.iso_date_time_offset_converter is not None:
@@ -5718,6 +5888,8 @@ class TopLevel:
             result["lock"] = from_union([to_float, lambda x: to_class(Lock, x), from_none], self.lock)
         if self.long is not None:
             result["long"] = from_union([to_float, lambda x: to_class(Long, x), from_none], self.long)
+        if self.long_node is not None:
+            result["LongNode"] = from_union([to_float, lambda x: to_class(LongNode, x), from_none], self.long_node)
         if self.map is not None:
             result["map"] = from_union([to_float, lambda x: to_class(Map, x), from_none], self.map)
         if self.map_entry is not None:
@@ -5770,6 +5942,8 @@ class TopLevel:
             result["NULL"] = from_union([to_float, lambda x: to_class(Null, x), from_none], self.null)
         if self.top_level_null is not None:
             result["null"] = from_union([to_float, lambda x: to_class(NullClass, x), from_none], self.top_level_null)
+        if self.null_node is not None:
+            result["NullNode"] = from_union([to_float, lambda x: to_class(NullNode, x), from_none], self.null_node)
         if self.nullptr is not None:
             result["nullptr"] = from_union([to_float, lambda x: to_class(Nullptr, x), from_none], self.nullptr)
         if self.number is not None:
@@ -5778,6 +5952,8 @@ class TopLevel:
             result["object"] = from_union([to_float, lambda x: to_class(Object, x), from_none], self.object)
         if self.object_mapper is not None:
             result["ObjectMapper"] = from_union([to_float, lambda x: to_class(ObjectMapper, x), from_none], self.object_mapper)
+        if self.object_node is not None:
+            result["ObjectNode"] = from_union([to_float, lambda x: to_class(ObjectNode, x), from_none], self.object_node)
         if self.of is not None:
             result["of"] = from_union([to_float, lambda x: to_class(Of, x), from_none], self.of)
         if self.oneway is not None:
@@ -5878,6 +6054,8 @@ 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.serialization_feature is not None:
+            result["SerializationFeature"] = from_union([to_float, lambda x: to_class(SerializationFeature, x), from_none], self.serialization_feature)
         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:
@@ -5926,6 +6104,8 @@ class TopLevel:
             result["system"] = from_union([to_float, lambda x: to_class(System, x), from_none], self.system)
         if self.template is not None:
             result["template"] = from_union([to_float, lambda x: to_class(Template, x), from_none], self.template)
+        if self.text_node is not None:
+            result["TextNode"] = from_union([to_float, lambda x: to_class(TextNode, x), from_none], self.text_node)
         if self.then is not None:
             result["then"] = from_union([to_float, lambda x: to_class(Then, x), from_none], self.then)
         if self.this is not None:
diff --git a/base/schema-ruby/test/inputs/schema/direct-union.schema/default/TopLevel.rb b/head/schema-ruby/test/inputs/schema/direct-union.schema/default/TopLevel.rb
index 9ceda40..3aef446 100644
--- a/base/schema-ruby/test/inputs/schema/direct-union.schema/default/TopLevel.rb
+++ b/head/schema-ruby/test/inputs/schema/direct-union.schema/default/TopLevel.rb
@@ -4,7 +4,7 @@
 # To parse this JSON, add 'dry-struct' and 'dry-types' gems, then do:
 #
 #   top_level = TopLevel.from_json! "{…}"
-#   puts top_level.stuff["…"].thing_optional
+#   puts top_level.text_node
 #
 # If from_json! succeeds, the value returned matches the schema.
 
@@ -23,6 +23,160 @@ module Types
   Double  = Strict::Float | Strict::Integer
 end
 
+class ArrayNode < 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 BooleanNode < 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 DoubleNode < 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 IntNode < 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 LongNode < 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 NullNode < 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 ObjectNode < 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 Anything < Dry::Struct
   attribute :anything_array, Types.Array(Types::Any).optional
   attribute :anything_map,   Types::Hash.meta(of: Types::Any).optional
@@ -116,13 +270,51 @@ class Thing < Dry::Struct
   end
 end
 
+class TextNode < 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 TopLevel < Dry::Struct
-  attribute :stuff, Types::Hash.meta(of: Thing)
+  attribute :array_node,   ArrayNode.optional
+  attribute :boolean_node, BooleanNode.optional
+  attribute :double_node,  DoubleNode.optional
+  attribute :int_node,     IntNode.optional
+  attribute :long_node,    LongNode.optional
+  attribute :null_node,    NullNode.optional
+  attribute :object_node,  ObjectNode.optional
+  attribute :stuff,        Types::Hash.meta(of: Thing)
+  attribute :text_node,    TextNode.optional
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      stuff: Types::Hash[d.fetch("stuff")].map { |k, v| [k, Thing.from_dynamic!(v)] }.to_h,
+      array_node:   d.key?("arrayNode") ? ArrayNode.from_dynamic!(d["arrayNode"]) : nil,
+      boolean_node: d.key?("booleanNode") ? BooleanNode.from_dynamic!(d["booleanNode"]) : nil,
+      double_node:  d.key?("doubleNode") ? DoubleNode.from_dynamic!(d["doubleNode"]) : nil,
+      int_node:     d.key?("intNode") ? IntNode.from_dynamic!(d["intNode"]) : nil,
+      long_node:    d.key?("longNode") ? LongNode.from_dynamic!(d["longNode"]) : nil,
+      null_node:    d.key?("nullNode") ? NullNode.from_dynamic!(d["nullNode"]) : nil,
+      object_node:  d.key?("objectNode") ? ObjectNode.from_dynamic!(d["objectNode"]) : nil,
+      stuff:        Types::Hash[d.fetch("stuff")].map { |k, v| [k, Thing.from_dynamic!(v)] }.to_h,
+      text_node:    d.key?("textNode") ? TextNode.from_dynamic!(d["textNode"]) : nil,
     )
   end
 
@@ -132,7 +324,15 @@ class TopLevel < Dry::Struct
 
   def to_dynamic
     {
-      "stuff" => stuff.map { |k, v| [k, v.to_dynamic] }.to_h,
+      "arrayNode"   => array_node&.to_dynamic,
+      "booleanNode" => boolean_node&.to_dynamic,
+      "doubleNode"  => double_node&.to_dynamic,
+      "intNode"     => int_node&.to_dynamic,
+      "longNode"    => long_node&.to_dynamic,
+      "nullNode"    => null_node&.to_dynamic,
+      "objectNode"  => object_node&.to_dynamic,
+      "stuff"       => stuff.map { |k, v| [k, v.to_dynamic] }.to_h,
+      "textNode"    => text_node&.to_dynamic,
     }
   end
 
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..721ad10 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", "ArrayNode", "array", "as", "asm", "assert", "associatedtype", "associativity", "async", "atomic", "atomic_cancel", "atomic_commit", "atomic_noexcept", "auto", "await", "base", "bitand", "bitor", "BOOL", "bool", "boolean", "BooleanNode", "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", "DeserializationFeature", "decltype", "decode_string", "Decoder", "DecodingError", "def", "default", "defer", "deinit", "del", "delegate", "delete", "dict", "dictionary", "didSet", "do", "double", "DoubleNode", "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", "IntNode", "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", "LongNode", "Locale", "lock", "long", "map", "MapEntry", "metadata_property_handling", "module", "mutable", "mutating", "namespace", "native", "new", "newtonsoft", "nil", "NullNode", "NO", "noexcept", "nonatomic", "none", "None", "nonlocal", "nonmutating", "NSObject", "noSuchMethod", "not", "not_eq", "NSError", "NSString", "NULL", "null", "nullptr", "number", "object", "ObjectNode", "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", "SerializationFeature", "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", "TextNode", "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")
 end
 
 module Enum
@@ -32,6 +32,7 @@ module Enum
   AndEq                      = "and_eq"
   Any                        = "any"
   EnumAny                    = "Any"
+  ArrayNode                  = "ArrayNode"
   Array                      = "array"
   As                         = "as"
   ASM                        = "asm"
@@ -51,6 +52,7 @@ module Enum
   EnumBOOL                   = "BOOL"
   EnumBool                   = "bool"
   Boolean                    = "boolean"
+  BooleanNode                = "BooleanNode"
   Break                      = "break"
   Bycopy                     = "bycopy"
   Byref                      = "byref"
@@ -94,6 +96,7 @@ module Enum
   Debugger                   = "debugger"
   Decimal                    = "decimal"
   Declare                    = "declare"
+  DeserializationFeature     = "DeserializationFeature"
   Decltype                   = "decltype"
   DecodeString               = "decode_string"
   Decoder                    = "Decoder"
@@ -110,6 +113,7 @@ module Enum
   DidSet                     = "didSet"
   Do                         = "do"
   Double                     = "double"
+  DoubleNode                 = "DoubleNode"
   Dynamic                    = "dynamic"
   DynamicCast                = "dynamic_cast"
   Elif                       = "elif"
@@ -168,6 +172,7 @@ module Enum
   Inout                      = "inout"
   Instanceof                 = "instanceof"
   Int                        = "int"
+  IntNode                    = "IntNode"
   Interface                  = "interface"
   Internal                   = "internal"
   ISODateTimeOffsetConverter = "IsoDateTimeOffsetConverter"
@@ -197,6 +202,7 @@ module Enum
   Left                       = "left"
   Let                        = "let"
   List                       = "list"
+  LongNode                   = "LongNode"
   Locale                     = "Locale"
   Lock                       = "lock"
   Long                       = "long"
@@ -211,6 +217,7 @@ module Enum
   New                        = "new"
   Newtonsoft                 = "newtonsoft"
   Nil                        = "nil"
+  NullNode                   = "NullNode"
   No                         = "NO"
   Noexcept                   = "noexcept"
   Nonatomic                  = "nonatomic"
@@ -229,6 +236,7 @@ module Enum
   Nullptr                    = "nullptr"
   Number                     = "number"
   Object                     = "object"
+  ObjectNode                 = "ObjectNode"
   ObjectMapper               = "ObjectMapper"
   Of                         = "of"
   Oneway                     = "oneway"
@@ -281,6 +289,7 @@ module Enum
   EnumSelf                   = "self"
   Sendable                   = "Sendable"
   Serialize                  = "serialize"
+  SerializationFeature       = "SerializationFeature"
   SerializerProvider         = "SerializerProvider"
   Set                        = "set"
   Short                      = "short"
@@ -306,6 +315,7 @@ module Enum
   Template                   = "template"
   Then                       = "then"
   This                       = "this"
+  TextNode                   = "TextNode"
   ThreadLocal                = "thread_local"
   Throw                      = "throw"
   Throws                     = "throws"
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..c8d743e 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
@@ -361,6 +361,63 @@ class UnionArray < Dry::Struct
   end
 end
 
+class ArrayNode < 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 UnionArrayNode < Dry::Struct
+  attribute :array_node, ArrayNode.optional
+  attribute :double,     Types::Double.optional
+
+  def self.from_dynamic!(d)
+    begin
+      value = ArrayNode.from_dynamic!(d)
+      if schema.key(:array_node).type.right.valid? value
+        return new(array_node: value, double: nil)
+      end
+    rescue
+    end
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, array_node: nil)
+    end
+    raise "Invalid union"
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    if array_node != nil
+      array_node.to_dynamic
+    elsif double != nil
+      double
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class As < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -1387,6 +1444,63 @@ class UnionBoolean < Dry::Struct
   end
 end
 
+class BooleanNode < 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 UnionBooleanNode < Dry::Struct
+  attribute :boolean_node, BooleanNode.optional
+  attribute :double,       Types::Double.optional
+
+  def self.from_dynamic!(d)
+    begin
+      value = BooleanNode.from_dynamic!(d)
+      if schema.key(:boolean_node).type.right.valid? value
+        return new(boolean_node: value, double: nil)
+      end
+    rescue
+    end
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, boolean_node: nil)
+    end
+    raise "Invalid union"
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    if boolean_node != nil
+      boolean_node.to_dynamic
+    elsif double != nil
+      double
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Bycopy < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -4066,6 +4180,63 @@ class UnionDelete < Dry::Struct
   end
 end
 
+class DeserializationFeature < 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 UnionDeserializationFeature < Dry::Struct
+  attribute :deserialization_feature, DeserializationFeature.optional
+  attribute :double,                  Types::Double.optional
+
+  def self.from_dynamic!(d)
+    begin
+      value = DeserializationFeature.from_dynamic!(d)
+      if schema.key(:deserialization_feature).type.right.valid? value
+        return new(deserialization_feature: value, double: nil)
+      end
+    rescue
+    end
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, deserialization_feature: nil)
+    end
+    raise "Invalid union"
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    if deserialization_feature != nil
+      deserialization_feature.to_dynamic
+    elsif double != nil
+      double
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Dict < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -4294,6 +4465,63 @@ class UnionDouble < Dry::Struct
   end
 end
 
+class DoubleNode < 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 UnionDoubleNode < Dry::Struct
+  attribute :double,      Types::Double.optional
+  attribute :double_node, DoubleNode.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, double_node: nil)
+    end
+    begin
+      value = DoubleNode.from_dynamic!(d)
+      if schema.key(:double_node).type.right.valid? value
+        return new(double_node: 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 double_node != nil
+      double_node.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Dynamic < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -7372,6 +7600,63 @@ class UnionInt < Dry::Struct
   end
 end
 
+class IntNode < 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 UnionIntNode < Dry::Struct
+  attribute :double,   Types::Double.optional
+  attribute :int_node, IntNode.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, int_node: nil)
+    end
+    begin
+      value = IntNode.from_dynamic!(d)
+      if schema.key(:int_node).type.right.valid? value
+        return new(int_node: 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 int_node != nil
+      int_node.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Interface < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -9139,6 +9424,63 @@ class UnionLong < Dry::Struct
   end
 end
 
+class LongNode < 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 UnionLongNode < Dry::Struct
+  attribute :double,    Types::Double.optional
+  attribute :long_node, LongNode.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, long_node: nil)
+    end
+    begin
+      value = LongNode.from_dynamic!(d)
+      if schema.key(:long_node).type.right.valid? value
+        return new(long_node: 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 long_node != nil
+      long_node.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Map < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -10279,6 +10621,63 @@ class UnionNULL < Dry::Struct
   end
 end
 
+class NullNode < 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 UnionNullNode < Dry::Struct
+  attribute :double,    Types::Double.optional
+  attribute :null_node, NullNode.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, null_node: nil)
+    end
+    begin
+      value = NullNode.from_dynamic!(d)
+      if schema.key(:null_node).type.right.valid? value
+        return new(null_node: 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 null_node != nil
+      null_node.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Nullptr < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -10507,6 +10906,63 @@ class UnionObjectMapper < Dry::Struct
   end
 end
 
+class ObjectNode < 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 UnionObjectNode < Dry::Struct
+  attribute :double,      Types::Double.optional
+  attribute :object_node, ObjectNode.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, object_node: nil)
+    end
+    begin
+      value = ObjectNode.from_dynamic!(d)
+      if schema.key(:object_node).type.right.valid? value
+        return new(object_node: 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 object_node != nil
+      object_node.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Of < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -12730,6 +13186,63 @@ class UnionSendable < Dry::Struct
   end
 end
 
+class SerializationFeature < 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 UnionSerializationFeature < Dry::Struct
+  attribute :double,                Types::Double.optional
+  attribute :serialization_feature, SerializationFeature.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, serialization_feature: nil)
+    end
+    begin
+      value = SerializationFeature.from_dynamic!(d)
+      if schema.key(:serialization_feature).type.right.valid? value
+        return new(serialization_feature: 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 serialization_feature != nil
+      serialization_feature.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)
@@ -13984,6 +14497,63 @@ class UnionTemplate < Dry::Struct
   end
 end
 
+class TextNode < 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 UnionTextNode < Dry::Struct
+  attribute :double,    Types::Double.optional
+  attribute :text_node, TextNode.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, text_node: nil)
+    end
+    begin
+      value = TextNode.from_dynamic!(d)
+      if schema.key(:text_node).type.right.valid? value
+        return new(text_node: 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 text_node != nil
+      text_node.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class This < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -18956,6 +19526,7 @@ class TopLevel < Dry::Struct
   attribute :top_level_any,                  Types.Instance(UnionAnyUnion).optional
   attribute :any,                            Types.Instance(UnionAny).optional
   attribute :array,                          Types.Instance(UnionArray).optional
+  attribute :array_node,                     Types.Instance(UnionArrayNode).optional
   attribute :as,                             Types.Instance(UnionAs).optional
   attribute :asm,                            Types.Instance(UnionASM).optional
   attribute :assert,                         Types.Instance(UnionAssert).optional
@@ -18974,6 +19545,7 @@ class TopLevel < Dry::Struct
   attribute :bool,                           Types.Instance(UnionBOOL).optional
   attribute :bool_1,                         Types.Instance(UnionBoolUnion).optional
   attribute :boolean,                        Types.Instance(UnionBoolean).optional
+  attribute :boolean_node,                   Types.Instance(UnionBooleanNode).optional
   attribute :top_level_break,                Types.Instance(UnionBreak).optional
   attribute :bycopy,                         Types.Instance(UnionBycopy).optional
   attribute :byref,                          Types.Instance(UnionByref).optional
@@ -19028,11 +19600,13 @@ class TopLevel < Dry::Struct
   attribute :del,                            Types.Instance(UnionDel).optional
   attribute :delegate,                       Types.Instance(UnionDelegate).optional
   attribute :delete,                         Types.Instance(UnionDelete).optional
+  attribute :deserialization_feature,        Types.Instance(UnionDeserializationFeature).optional
   attribute :dict,                           Types.Instance(UnionDict).optional
   attribute :dictionary,                     Types.Instance(UnionDictionary).optional
   attribute :did_set,                        Types.Instance(UnionDidSet).optional
   attribute :top_level_do,                   Types.Instance(UnionDo).optional
   attribute :double,                         Types.Instance(UnionDouble).optional
+  attribute :double_node,                    Types.Instance(UnionDoubleNode).optional
   attribute :dummy,                          Types::Double.optional
   attribute :dynamic,                        Types.Instance(UnionDynamic).optional
   attribute :dynamic_cast,                   Types.Instance(UnionDynamicCast).optional
@@ -19094,6 +19668,7 @@ class TopLevel < Dry::Struct
   attribute :int,                            Types.Instance(UnionInt).optional
   attribute :interface,                      Types.Instance(UnionInterface).optional
   attribute :internal,                       Types.Instance(UnionInternal).optional
+  attribute :int_node,                       Types.Instance(UnionIntNode).optional
   attribute :is,                             Types.Instance(UnionIs).optional
   attribute :iso_date_time_offset_converter, Types.Instance(UnionISODateTimeOffsetConverter).optional
   attribute :iterable,                       Types.Instance(UnionIterable).optional
@@ -19124,6 +19699,7 @@ class TopLevel < Dry::Struct
   attribute :locale,                         Types.Instance(UnionLocale).optional
   attribute :lock,                           Types.Instance(UnionLock).optional
   attribute :long,                           Types.Instance(UnionLong).optional
+  attribute :long_node,                      Types.Instance(UnionLongNode).optional
   attribute :map,                            Types.Instance(UnionMap).optional
   attribute :map_entry,                      Types.Instance(UnionMapEntry).optional
   attribute :metadata_property_handling,     Types.Instance(UnionMetadataPropertyHandling).optional
@@ -19150,10 +19726,12 @@ class TopLevel < Dry::Struct
   attribute :ns_string,                      Types.Instance(UnionNSString).optional
   attribute :null,                           Types.Instance(UnionNULL).optional
   attribute :top_level_null,                 Types.Instance(UnionNull).optional
+  attribute :null_node,                      Types.Instance(UnionNullNode).optional
   attribute :nullptr,                        Types.Instance(UnionNullptr).optional
   attribute :number,                         Types.Instance(UnionNumber).optional
   attribute :object,                         Types.Instance(UnionObject).optional
   attribute :object_mapper,                  Types.Instance(UnionObjectMapper).optional
+  attribute :object_node,                    Types.Instance(UnionObjectNode).optional
   attribute :of,                             Types.Instance(UnionOf).optional
   attribute :oneway,                         Types.Instance(UnionOneway).optional
   attribute :top_level_open,                 Types.Instance(UnionOpen).optional
@@ -19204,6 +19782,7 @@ 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 :serialization_feature,          Types.Instance(UnionSerializationFeature).optional
   attribute :serialize,                      Types.Instance(UnionSerialize).optional
   attribute :serializer_provider,            Types.Instance(UnionSerializerProvider).optional
   attribute :set,                            Types.Instance(UnionSet).optional
@@ -19228,6 +19807,7 @@ class TopLevel < Dry::Struct
   attribute :synchronized,                   Types.Instance(UnionSynchronized).optional
   attribute :top_level_system,               Types.Instance(UnionSystem).optional
   attribute :template,                       Types.Instance(UnionTemplate).optional
+  attribute :text_node,                      Types.Instance(UnionTextNode).optional
   attribute :top_level_then,                 Types.Instance(UnionThen).optional
   attribute :this,                           Types.Instance(UnionThis).optional
   attribute :thread_local,                   Types.Instance(UnionThreadLocal).optional
@@ -19293,6 +19873,7 @@ class TopLevel < Dry::Struct
       top_level_any:                  d.key?("any") ? UnionAnyUnion.from_dynamic!(d["any"]) : nil,
       any:                            d.key?("Any") ? UnionAny.from_dynamic!(d["Any"]) : nil,
       array:                          d.key?("array") ? UnionArray.from_dynamic!(d["array"]) : nil,
+      array_node:                     d.key?("ArrayNode") ? UnionArrayNode.from_dynamic!(d["ArrayNode"]) : nil,
       as:                             d.key?("as") ? UnionAs.from_dynamic!(d["as"]) : nil,
       asm:                            d.key?("asm") ? UnionASM.from_dynamic!(d["asm"]) : nil,
       assert:                         d.key?("assert") ? UnionAssert.from_dynamic!(d["assert"]) : nil,
@@ -19311,6 +19892,7 @@ class TopLevel < Dry::Struct
       bool:                           d.key?("BOOL") ? UnionBOOL.from_dynamic!(d["BOOL"]) : nil,
       bool_1:                         d.key?("bool") ? UnionBoolUnion.from_dynamic!(d["bool"]) : nil,
       boolean:                        d.key?("boolean") ? UnionBoolean.from_dynamic!(d["boolean"]) : nil,
+      boolean_node:                   d.key?("BooleanNode") ? UnionBooleanNode.from_dynamic!(d["BooleanNode"]) : nil,
       top_level_break:                d.key?("break") ? UnionBreak.from_dynamic!(d["break"]) : nil,
       bycopy:                         d.key?("bycopy") ? UnionBycopy.from_dynamic!(d["bycopy"]) : nil,
       byref:                          d.key?("byref") ? UnionByref.from_dynamic!(d["byref"]) : nil,
@@ -19365,11 +19947,13 @@ class TopLevel < Dry::Struct
       del:                            d.key?("del") ? UnionDel.from_dynamic!(d["del"]) : nil,
       delegate:                       d.key?("delegate") ? UnionDelegate.from_dynamic!(d["delegate"]) : nil,
       delete:                         d.key?("delete") ? UnionDelete.from_dynamic!(d["delete"]) : nil,
+      deserialization_feature:        d.key?("DeserializationFeature") ? UnionDeserializationFeature.from_dynamic!(d["DeserializationFeature"]) : nil,
       dict:                           d.key?("dict") ? UnionDict.from_dynamic!(d["dict"]) : nil,
       dictionary:                     d.key?("dictionary") ? UnionDictionary.from_dynamic!(d["dictionary"]) : nil,
       did_set:                        d.key?("didSet") ? UnionDidSet.from_dynamic!(d["didSet"]) : nil,
       top_level_do:                   d.key?("do") ? UnionDo.from_dynamic!(d["do"]) : nil,
       double:                         d.key?("double") ? UnionDouble.from_dynamic!(d["double"]) : nil,
+      double_node:                    d.key?("DoubleNode") ? UnionDoubleNode.from_dynamic!(d["DoubleNode"]) : nil,
       dummy:                          d.key?("dummy") ? Types::Double[d["dummy"]] : nil,
       dynamic:                        d.key?("dynamic") ? UnionDynamic.from_dynamic!(d["dynamic"]) : nil,
       dynamic_cast:                   d.key?("dynamic_cast") ? UnionDynamicCast.from_dynamic!(d["dynamic_cast"]) : nil,
@@ -19431,6 +20015,7 @@ class TopLevel < Dry::Struct
       int:                            d.key?("int") ? UnionInt.from_dynamic!(d["int"]) : nil,
       interface:                      d.key?("interface") ? UnionInterface.from_dynamic!(d["interface"]) : nil,
       internal:                       d.key?("internal") ? UnionInternal.from_dynamic!(d["internal"]) : nil,
+      int_node:                       d.key?("IntNode") ? UnionIntNode.from_dynamic!(d["IntNode"]) : nil,
       is:                             d.key?("is") ? UnionIs.from_dynamic!(d["is"]) : nil,
       iso_date_time_offset_converter: d.key?("IsoDateTimeOffsetConverter") ? UnionISODateTimeOffsetConverter.from_dynamic!(d["IsoDateTimeOffsetConverter"]) : nil,
       iterable:                       d.key?("iterable") ? UnionIterable.from_dynamic!(d["iterable"]) : nil,
@@ -19461,6 +20046,7 @@ class TopLevel < Dry::Struct
       locale:                         d.key?("Locale") ? UnionLocale.from_dynamic!(d["Locale"]) : nil,
       lock:                           d.key?("lock") ? UnionLock.from_dynamic!(d["lock"]) : nil,
       long:                           d.key?("long") ? UnionLong.from_dynamic!(d["long"]) : nil,
+      long_node:                      d.key?("LongNode") ? UnionLongNode.from_dynamic!(d["LongNode"]) : nil,
       map:                            d.key?("map") ? UnionMap.from_dynamic!(d["map"]) : nil,
       map_entry:                      d.key?("MapEntry") ? UnionMapEntry.from_dynamic!(d["MapEntry"]) : nil,
       metadata_property_handling:     d.key?("metadata_property_handling") ? UnionMetadataPropertyHandling.from_dynamic!(d["metadata_property_handling"]) : nil,
@@ -19487,10 +20073,12 @@ class TopLevel < Dry::Struct
       ns_string:                      d.key?("NSString") ? UnionNSString.from_dynamic!(d["NSString"]) : nil,
       null:                           d.key?("NULL") ? UnionNULL.from_dynamic!(d["NULL"]) : nil,
       top_level_null:                 d.key?("null") ? UnionNull.from_dynamic!(d["null"]) : nil,
+      null_node:                      d.key?("NullNode") ? UnionNullNode.from_dynamic!(d["NullNode"]) : nil,
       nullptr:                        d.key?("nullptr") ? UnionNullptr.from_dynamic!(d["nullptr"]) : nil,
       number:                         d.key?("number") ? UnionNumber.from_dynamic!(d["number"]) : nil,
       object:                         d.key?("object") ? UnionObject.from_dynamic!(d["object"]) : nil,
       object_mapper:                  d.key?("ObjectMapper") ? UnionObjectMapper.from_dynamic!(d["ObjectMapper"]) : nil,
+      object_node:                    d.key?("ObjectNode") ? UnionObjectNode.from_dynamic!(d["ObjectNode"]) : nil,
       of:                             d.key?("of") ? UnionOf.from_dynamic!(d["of"]) : nil,
       oneway:                         d.key?("oneway") ? UnionOneway.from_dynamic!(d["oneway"]) : nil,
       top_level_open:                 d.key?("open") ? UnionOpen.from_dynamic!(d["open"]) : nil,
@@ -19541,6 +20129,7 @@ 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,
+      serialization_feature:          d.key?("SerializationFeature") ? UnionSerializationFeature.from_dynamic!(d["SerializationFeature"]) : nil,
       serialize:                      d.key?("serialize") ? UnionSerialize.from_dynamic!(d["serialize"]) : nil,
       serializer_provider:            d.key?("SerializerProvider") ? UnionSerializerProvider.from_dynamic!(d["SerializerProvider"]) : nil,
       set:                            d.key?("set") ? UnionSet.from_dynamic!(d["set"]) : nil,
@@ -19565,6 +20154,7 @@ class TopLevel < Dry::Struct
       synchronized:                   d.key?("synchronized") ? UnionSynchronized.from_dynamic!(d["synchronized"]) : nil,
       top_level_system:               d.key?("system") ? UnionSystem.from_dynamic!(d["system"]) : nil,
       template:                       d.key?("template") ? UnionTemplate.from_dynamic!(d["template"]) : nil,
+      text_node:                      d.key?("TextNode") ? UnionTextNode.from_dynamic!(d["TextNode"]) : nil,
       top_level_then:                 d.key?("then") ? UnionThen.from_dynamic!(d["then"]) : nil,
       this:                           d.key?("this") ? UnionThis.from_dynamic!(d["this"]) : nil,
       thread_local:                   d.key?("thread_local") ? UnionThreadLocal.from_dynamic!(d["thread_local"]) : nil,
@@ -19635,6 +20225,7 @@ class TopLevel < Dry::Struct
       "any"                        => top_level_any&.to_dynamic,
       "Any"                        => any&.to_dynamic,
       "array"                      => array&.to_dynamic,
+      "ArrayNode"                  => array_node&.to_dynamic,
       "as"                         => as&.to_dynamic,
       "asm"                        => asm&.to_dynamic,
       "assert"                     => assert&.to_dynamic,
@@ -19653,6 +20244,7 @@ class TopLevel < Dry::Struct
       "BOOL"                       => bool&.to_dynamic,
       "bool"                       => bool_1&.to_dynamic,
       "boolean"                    => boolean&.to_dynamic,
+      "BooleanNode"                => boolean_node&.to_dynamic,
       "break"                      => top_level_break&.to_dynamic,
       "bycopy"                     => bycopy&.to_dynamic,
       "byref"                      => byref&.to_dynamic,
@@ -19707,11 +20299,13 @@ class TopLevel < Dry::Struct
       "del"                        => del&.to_dynamic,
       "delegate"                   => delegate&.to_dynamic,
       "delete"                     => delete&.to_dynamic,
+      "DeserializationFeature"     => deserialization_feature&.to_dynamic,
       "dict"                       => dict&.to_dynamic,
       "dictionary"                 => dictionary&.to_dynamic,
       "didSet"                     => did_set&.to_dynamic,
       "do"                         => top_level_do&.to_dynamic,
       "double"                     => double&.to_dynamic,
+      "DoubleNode"                 => double_node&.to_dynamic,
       "dummy"                      => dummy,
       "dynamic"                    => dynamic&.to_dynamic,
       "dynamic_cast"               => dynamic_cast&.to_dynamic,
@@ -19773,6 +20367,7 @@ class TopLevel < Dry::Struct
       "int"                        => int&.to_dynamic,
       "interface"                  => interface&.to_dynamic,
       "internal"                   => internal&.to_dynamic,
+      "IntNode"                    => int_node&.to_dynamic,
       "is"                         => is&.to_dynamic,
       "IsoDateTimeOffsetConverter" => iso_date_time_offset_converter&.to_dynamic,
       "iterable"                   => iterable&.to_dynamic,
@@ -19803,6 +20398,7 @@ class TopLevel < Dry::Struct
       "Locale"                     => locale&.to_dynamic,
       "lock"                       => lock&.to_dynamic,
       "long"                       => long&.to_dynamic,
+      "LongNode"                   => long_node&.to_dynamic,
       "map"                        => map&.to_dynamic,
       "MapEntry"                   => map_entry&.to_dynamic,
       "metadata_property_handling" => metadata_property_handling&.to_dynamic,
@@ -19829,10 +20425,12 @@ class TopLevel < Dry::Struct
       "NSString"                   => ns_string&.to_dynamic,
       "NULL"                       => null&.to_dynamic,
       "null"                       => top_level_null&.to_dynamic,
+      "NullNode"                   => null_node&.to_dynamic,
       "nullptr"                    => nullptr&.to_dynamic,
       "number"                     => number&.to_dynamic,
       "object"                     => object&.to_dynamic,
       "ObjectMapper"               => object_mapper&.to_dynamic,
+      "ObjectNode"                 => object_node&.to_dynamic,
       "of"                         => of&.to_dynamic,
       "oneway"                     => oneway&.to_dynamic,
       "open"                       => top_level_open&.to_dynamic,
@@ -19883,6 +20481,7 @@ class TopLevel < Dry::Struct
       "Self"                       => top_level_self&.to_dynamic,
       "self"                       => self_1&.to_dynamic,
       "Sendable"                   => sendable&.to_dynamic,
+      "SerializationFeature"       => serialization_feature&.to_dynamic,
       "serialize"                  => serialize&.to_dynamic,
       "SerializerProvider"         => serializer_provider&.to_dynamic,
       "set"                        => set&.to_dynamic,
@@ -19907,6 +20506,7 @@ class TopLevel < Dry::Struct
       "synchronized"               => synchronized&.to_dynamic,
       "system"                     => top_level_system&.to_dynamic,
       "template"                   => template&.to_dynamic,
+      "TextNode"                   => text_node&.to_dynamic,
       "then"                       => top_level_then&.to_dynamic,
       "this"                       => this&.to_dynamic,
       "thread_local"               => thread_local&.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..c8d743e 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
@@ -361,6 +361,63 @@ class UnionArray < Dry::Struct
   end
 end
 
+class ArrayNode < 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 UnionArrayNode < Dry::Struct
+  attribute :array_node, ArrayNode.optional
+  attribute :double,     Types::Double.optional
+
+  def self.from_dynamic!(d)
+    begin
+      value = ArrayNode.from_dynamic!(d)
+      if schema.key(:array_node).type.right.valid? value
+        return new(array_node: value, double: nil)
+      end
+    rescue
+    end
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, array_node: nil)
+    end
+    raise "Invalid union"
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    if array_node != nil
+      array_node.to_dynamic
+    elsif double != nil
+      double
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class As < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -1387,6 +1444,63 @@ class UnionBoolean < Dry::Struct
   end
 end
 
+class BooleanNode < 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 UnionBooleanNode < Dry::Struct
+  attribute :boolean_node, BooleanNode.optional
+  attribute :double,       Types::Double.optional
+
+  def self.from_dynamic!(d)
+    begin
+      value = BooleanNode.from_dynamic!(d)
+      if schema.key(:boolean_node).type.right.valid? value
+        return new(boolean_node: value, double: nil)
+      end
+    rescue
+    end
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, boolean_node: nil)
+    end
+    raise "Invalid union"
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    if boolean_node != nil
+      boolean_node.to_dynamic
+    elsif double != nil
+      double
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Bycopy < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -4066,6 +4180,63 @@ class UnionDelete < Dry::Struct
   end
 end
 
+class DeserializationFeature < 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 UnionDeserializationFeature < Dry::Struct
+  attribute :deserialization_feature, DeserializationFeature.optional
+  attribute :double,                  Types::Double.optional
+
+  def self.from_dynamic!(d)
+    begin
+      value = DeserializationFeature.from_dynamic!(d)
+      if schema.key(:deserialization_feature).type.right.valid? value
+        return new(deserialization_feature: value, double: nil)
+      end
+    rescue
+    end
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, deserialization_feature: nil)
+    end
+    raise "Invalid union"
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    if deserialization_feature != nil
+      deserialization_feature.to_dynamic
+    elsif double != nil
+      double
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Dict < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -4294,6 +4465,63 @@ class UnionDouble < Dry::Struct
   end
 end
 
+class DoubleNode < 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 UnionDoubleNode < Dry::Struct
+  attribute :double,      Types::Double.optional
+  attribute :double_node, DoubleNode.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, double_node: nil)
+    end
+    begin
+      value = DoubleNode.from_dynamic!(d)
+      if schema.key(:double_node).type.right.valid? value
+        return new(double_node: 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 double_node != nil
+      double_node.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Dynamic < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -7372,6 +7600,63 @@ class UnionInt < Dry::Struct
   end
 end
 
+class IntNode < 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 UnionIntNode < Dry::Struct
+  attribute :double,   Types::Double.optional
+  attribute :int_node, IntNode.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, int_node: nil)
+    end
+    begin
+      value = IntNode.from_dynamic!(d)
+      if schema.key(:int_node).type.right.valid? value
+        return new(int_node: 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 int_node != nil
+      int_node.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Interface < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -9139,6 +9424,63 @@ class UnionLong < Dry::Struct
   end
 end
 
+class LongNode < 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 UnionLongNode < Dry::Struct
+  attribute :double,    Types::Double.optional
+  attribute :long_node, LongNode.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, long_node: nil)
+    end
+    begin
+      value = LongNode.from_dynamic!(d)
+      if schema.key(:long_node).type.right.valid? value
+        return new(long_node: 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 long_node != nil
+      long_node.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Map < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -10279,6 +10621,63 @@ class UnionNULL < Dry::Struct
   end
 end
 
+class NullNode < 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 UnionNullNode < Dry::Struct
+  attribute :double,    Types::Double.optional
+  attribute :null_node, NullNode.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, null_node: nil)
+    end
+    begin
+      value = NullNode.from_dynamic!(d)
+      if schema.key(:null_node).type.right.valid? value
+        return new(null_node: 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 null_node != nil
+      null_node.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Nullptr < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -10507,6 +10906,63 @@ class UnionObjectMapper < Dry::Struct
   end
 end
 
+class ObjectNode < 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 UnionObjectNode < Dry::Struct
+  attribute :double,      Types::Double.optional
+  attribute :object_node, ObjectNode.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, object_node: nil)
+    end
+    begin
+      value = ObjectNode.from_dynamic!(d)
+      if schema.key(:object_node).type.right.valid? value
+        return new(object_node: 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 object_node != nil
+      object_node.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Of < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -12730,6 +13186,63 @@ class UnionSendable < Dry::Struct
   end
 end
 
+class SerializationFeature < 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 UnionSerializationFeature < Dry::Struct
+  attribute :double,                Types::Double.optional
+  attribute :serialization_feature, SerializationFeature.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, serialization_feature: nil)
+    end
+    begin
+      value = SerializationFeature.from_dynamic!(d)
+      if schema.key(:serialization_feature).type.right.valid? value
+        return new(serialization_feature: 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 serialization_feature != nil
+      serialization_feature.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)
@@ -13984,6 +14497,63 @@ class UnionTemplate < Dry::Struct
   end
 end
 
+class TextNode < 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 UnionTextNode < Dry::Struct
+  attribute :double,    Types::Double.optional
+  attribute :text_node, TextNode.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, text_node: nil)
+    end
+    begin
+      value = TextNode.from_dynamic!(d)
+      if schema.key(:text_node).type.right.valid? value
+        return new(text_node: 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 text_node != nil
+      text_node.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class This < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -18956,6 +19526,7 @@ class TopLevel < Dry::Struct
   attribute :top_level_any,                  Types.Instance(UnionAnyUnion).optional
   attribute :any,                            Types.Instance(UnionAny).optional
   attribute :array,                          Types.Instance(UnionArray).optional
+  attribute :array_node,                     Types.Instance(UnionArrayNode).optional
   attribute :as,                             Types.Instance(UnionAs).optional
   attribute :asm,                            Types.Instance(UnionASM).optional
   attribute :assert,                         Types.Instance(UnionAssert).optional
@@ -18974,6 +19545,7 @@ class TopLevel < Dry::Struct
   attribute :bool,                           Types.Instance(UnionBOOL).optional
   attribute :bool_1,                         Types.Instance(UnionBoolUnion).optional
   attribute :boolean,                        Types.Instance(UnionBoolean).optional
+  attribute :boolean_node,                   Types.Instance(UnionBooleanNode).optional
   attribute :top_level_break,                Types.Instance(UnionBreak).optional
   attribute :bycopy,                         Types.Instance(UnionBycopy).optional
   attribute :byref,                          Types.Instance(UnionByref).optional
@@ -19028,11 +19600,13 @@ class TopLevel < Dry::Struct
   attribute :del,                            Types.Instance(UnionDel).optional
   attribute :delegate,                       Types.Instance(UnionDelegate).optional
   attribute :delete,                         Types.Instance(UnionDelete).optional
+  attribute :deserialization_feature,        Types.Instance(UnionDeserializationFeature).optional
   attribute :dict,                           Types.Instance(UnionDict).optional
   attribute :dictionary,                     Types.Instance(UnionDictionary).optional
   attribute :did_set,                        Types.Instance(UnionDidSet).optional
   attribute :top_level_do,                   Types.Instance(UnionDo).optional
   attribute :double,                         Types.Instance(UnionDouble).optional
+  attribute :double_node,                    Types.Instance(UnionDoubleNode).optional
   attribute :dummy,                          Types::Double.optional
   attribute :dynamic,                        Types.Instance(UnionDynamic).optional
   attribute :dynamic_cast,                   Types.Instance(UnionDynamicCast).optional
@@ -19094,6 +19668,7 @@ class TopLevel < Dry::Struct
   attribute :int,                            Types.Instance(UnionInt).optional
   attribute :interface,                      Types.Instance(UnionInterface).optional
   attribute :internal,                       Types.Instance(UnionInternal).optional
+  attribute :int_node,                       Types.Instance(UnionIntNode).optional
   attribute :is,                             Types.Instance(UnionIs).optional
   attribute :iso_date_time_offset_converter, Types.Instance(UnionISODateTimeOffsetConverter).optional
   attribute :iterable,                       Types.Instance(UnionIterable).optional
@@ -19124,6 +19699,7 @@ class TopLevel < Dry::Struct
   attribute :locale,                         Types.Instance(UnionLocale).optional
   attribute :lock,                           Types.Instance(UnionLock).optional
   attribute :long,                           Types.Instance(UnionLong).optional
+  attribute :long_node,                      Types.Instance(UnionLongNode).optional
   attribute :map,                            Types.Instance(UnionMap).optional
   attribute :map_entry,                      Types.Instance(UnionMapEntry).optional
   attribute :metadata_property_handling,     Types.Instance(UnionMetadataPropertyHandling).optional
@@ -19150,10 +19726,12 @@ class TopLevel < Dry::Struct
   attribute :ns_string,                      Types.Instance(UnionNSString).optional
   attribute :null,                           Types.Instance(UnionNULL).optional
   attribute :top_level_null,                 Types.Instance(UnionNull).optional
+  attribute :null_node,                      Types.Instance(UnionNullNode).optional
   attribute :nullptr,                        Types.Instance(UnionNullptr).optional
   attribute :number,                         Types.Instance(UnionNumber).optional
   attribute :object,                         Types.Instance(UnionObject).optional
   attribute :object_mapper,                  Types.Instance(UnionObjectMapper).optional
+  attribute :object_node,                    Types.Instance(UnionObjectNode).optional
   attribute :of,                             Types.Instance(UnionOf).optional
   attribute :oneway,                         Types.Instance(UnionOneway).optional
   attribute :top_level_open,                 Types.Instance(UnionOpen).optional
@@ -19204,6 +19782,7 @@ 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 :serialization_feature,          Types.Instance(UnionSerializationFeature).optional
   attribute :serialize,                      Types.Instance(UnionSerialize).optional
   attribute :serializer_provider,            Types.Instance(UnionSerializerProvider).optional
   attribute :set,                            Types.Instance(UnionSet).optional
@@ -19228,6 +19807,7 @@ class TopLevel < Dry::Struct
   attribute :synchronized,                   Types.Instance(UnionSynchronized).optional
   attribute :top_level_system,               Types.Instance(UnionSystem).optional
   attribute :template,                       Types.Instance(UnionTemplate).optional
+  attribute :text_node,                      Types.Instance(UnionTextNode).optional
   attribute :top_level_then,                 Types.Instance(UnionThen).optional
   attribute :this,                           Types.Instance(UnionThis).optional
   attribute :thread_local,                   Types.Instance(UnionThreadLocal).optional
@@ -19293,6 +19873,7 @@ class TopLevel < Dry::Struct
       top_level_any:                  d.key?("any") ? UnionAnyUnion.from_dynamic!(d["any"]) : nil,
       any:                            d.key?("Any") ? UnionAny.from_dynamic!(d["Any"]) : nil,
       array:                          d.key?("array") ? UnionArray.from_dynamic!(d["array"]) : nil,
+      array_node:                     d.key?("ArrayNode") ? UnionArrayNode.from_dynamic!(d["ArrayNode"]) : nil,
       as:                             d.key?("as") ? UnionAs.from_dynamic!(d["as"]) : nil,
       asm:                            d.key?("asm") ? UnionASM.from_dynamic!(d["asm"]) : nil,
       assert:                         d.key?("assert") ? UnionAssert.from_dynamic!(d["assert"]) : nil,
@@ -19311,6 +19892,7 @@ class TopLevel < Dry::Struct
       bool:                           d.key?("BOOL") ? UnionBOOL.from_dynamic!(d["BOOL"]) : nil,
       bool_1:                         d.key?("bool") ? UnionBoolUnion.from_dynamic!(d["bool"]) : nil,
       boolean:                        d.key?("boolean") ? UnionBoolean.from_dynamic!(d["boolean"]) : nil,
+      boolean_node:                   d.key?("BooleanNode") ? UnionBooleanNode.from_dynamic!(d["BooleanNode"]) : nil,
       top_level_break:                d.key?("break") ? UnionBreak.from_dynamic!(d["break"]) : nil,
       bycopy:                         d.key?("bycopy") ? UnionBycopy.from_dynamic!(d["bycopy"]) : nil,
       byref:                          d.key?("byref") ? UnionByref.from_dynamic!(d["byref"]) : nil,
@@ -19365,11 +19947,13 @@ class TopLevel < Dry::Struct
       del:                            d.key?("del") ? UnionDel.from_dynamic!(d["del"]) : nil,
       delegate:                       d.key?("delegate") ? UnionDelegate.from_dynamic!(d["delegate"]) : nil,
       delete:                         d.key?("delete") ? UnionDelete.from_dynamic!(d["delete"]) : nil,
+      deserialization_feature:        d.key?("DeserializationFeature") ? UnionDeserializationFeature.from_dynamic!(d["DeserializationFeature"]) : nil,
       dict:                           d.key?("dict") ? UnionDict.from_dynamic!(d["dict"]) : nil,
       dictionary:                     d.key?("dictionary") ? UnionDictionary.from_dynamic!(d["dictionary"]) : nil,
       did_set:                        d.key?("didSet") ? UnionDidSet.from_dynamic!(d["didSet"]) : nil,
       top_level_do:                   d.key?("do") ? UnionDo.from_dynamic!(d["do"]) : nil,
       double:                         d.key?("double") ? UnionDouble.from_dynamic!(d["double"]) : nil,
+      double_node:                    d.key?("DoubleNode") ? UnionDoubleNode.from_dynamic!(d["DoubleNode"]) : nil,
       dummy:                          d.key?("dummy") ? Types::Double[d["dummy"]] : nil,
       dynamic:                        d.key?("dynamic") ? UnionDynamic.from_dynamic!(d["dynamic"]) : nil,
       dynamic_cast:                   d.key?("dynamic_cast") ? UnionDynamicCast.from_dynamic!(d["dynamic_cast"]) : nil,
@@ -19431,6 +20015,7 @@ class TopLevel < Dry::Struct
       int:                            d.key?("int") ? UnionInt.from_dynamic!(d["int"]) : nil,
       interface:                      d.key?("interface") ? UnionInterface.from_dynamic!(d["interface"]) : nil,
       internal:                       d.key?("internal") ? UnionInternal.from_dynamic!(d["internal"]) : nil,
+      int_node:                       d.key?("IntNode") ? UnionIntNode.from_dynamic!(d["IntNode"]) : nil,
       is:                             d.key?("is") ? UnionIs.from_dynamic!(d["is"]) : nil,
       iso_date_time_offset_converter: d.key?("IsoDateTimeOffsetConverter") ? UnionISODateTimeOffsetConverter.from_dynamic!(d["IsoDateTimeOffsetConverter"]) : nil,
       iterable:                       d.key?("iterable") ? UnionIterable.from_dynamic!(d["iterable"]) : nil,
@@ -19461,6 +20046,7 @@ class TopLevel < Dry::Struct
       locale:                         d.key?("Locale") ? UnionLocale.from_dynamic!(d["Locale"]) : nil,
       lock:                           d.key?("lock") ? UnionLock.from_dynamic!(d["lock"]) : nil,
       long:                           d.key?("long") ? UnionLong.from_dynamic!(d["long"]) : nil,
+      long_node:                      d.key?("LongNode") ? UnionLongNode.from_dynamic!(d["LongNode"]) : nil,
       map:                            d.key?("map") ? UnionMap.from_dynamic!(d["map"]) : nil,
       map_entry:                      d.key?("MapEntry") ? UnionMapEntry.from_dynamic!(d["MapEntry"]) : nil,
       metadata_property_handling:     d.key?("metadata_property_handling") ? UnionMetadataPropertyHandling.from_dynamic!(d["metadata_property_handling"]) : nil,
@@ -19487,10 +20073,12 @@ class TopLevel < Dry::Struct
       ns_string:                      d.key?("NSString") ? UnionNSString.from_dynamic!(d["NSString"]) : nil,
       null:                           d.key?("NULL") ? UnionNULL.from_dynamic!(d["NULL"]) : nil,
       top_level_null:                 d.key?("null") ? UnionNull.from_dynamic!(d["null"]) : nil,
+      null_node:                      d.key?("NullNode") ? UnionNullNode.from_dynamic!(d["NullNode"]) : nil,
       nullptr:                        d.key?("nullptr") ? UnionNullptr.from_dynamic!(d["nullptr"]) : nil,
       number:                         d.key?("number") ? UnionNumber.from_dynamic!(d["number"]) : nil,
       object:                         d.key?("object") ? UnionObject.from_dynamic!(d["object"]) : nil,
       object_mapper:                  d.key?("ObjectMapper") ? UnionObjectMapper.from_dynamic!(d["ObjectMapper"]) : nil,
+      object_node:                    d.key?("ObjectNode") ? UnionObjectNode.from_dynamic!(d["ObjectNode"]) : nil,
       of:                             d.key?("of") ? UnionOf.from_dynamic!(d["of"]) : nil,
       oneway:                         d.key?("oneway") ? UnionOneway.from_dynamic!(d["oneway"]) : nil,
       top_level_open:                 d.key?("open") ? UnionOpen.from_dynamic!(d["open"]) : nil,
@@ -19541,6 +20129,7 @@ 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,
+      serialization_feature:          d.key?("SerializationFeature") ? UnionSerializationFeature.from_dynamic!(d["SerializationFeature"]) : nil,
       serialize:                      d.key?("serialize") ? UnionSerialize.from_dynamic!(d["serialize"]) : nil,
       serializer_provider:            d.key?("SerializerProvider") ? UnionSerializerProvider.from_dynamic!(d["SerializerProvider"]) : nil,
       set:                            d.key?("set") ? UnionSet.from_dynamic!(d["set"]) : nil,
@@ -19565,6 +20154,7 @@ class TopLevel < Dry::Struct
       synchronized:                   d.key?("synchronized") ? UnionSynchronized.from_dynamic!(d["synchronized"]) : nil,
       top_level_system:               d.key?("system") ? UnionSystem.from_dynamic!(d["system"]) : nil,
       template:                       d.key?("template") ? UnionTemplate.from_dynamic!(d["template"]) : nil,
+      text_node:                      d.key?("TextNode") ? UnionTextNode.from_dynamic!(d["TextNode"]) : nil,
       top_level_then:                 d.key?("then") ? UnionThen.from_dynamic!(d["then"]) : nil,
       this:                           d.key?("this") ? UnionThis.from_dynamic!(d["this"]) : nil,
       thread_local:                   d.key?("thread_local") ? UnionThreadLocal.from_dynamic!(d["thread_local"]) : nil,
@@ -19635,6 +20225,7 @@ class TopLevel < Dry::Struct
       "any"                        => top_level_any&.to_dynamic,
       "Any"                        => any&.to_dynamic,
       "array"                      => array&.to_dynamic,
+      "ArrayNode"                  => array_node&.to_dynamic,
       "as"                         => as&.to_dynamic,
       "asm"                        => asm&.to_dynamic,
       "assert"                     => assert&.to_dynamic,
@@ -19653,6 +20244,7 @@ class TopLevel < Dry::Struct
       "BOOL"                       => bool&.to_dynamic,
       "bool"                       => bool_1&.to_dynamic,
       "boolean"                    => boolean&.to_dynamic,
+      "BooleanNode"                => boolean_node&.to_dynamic,
       "break"                      => top_level_break&.to_dynamic,
       "bycopy"                     => bycopy&.to_dynamic,
       "byref"                      => byref&.to_dynamic,
@@ -19707,11 +20299,13 @@ class TopLevel < Dry::Struct
       "del"                        => del&.to_dynamic,
       "delegate"                   => delegate&.to_dynamic,
       "delete"                     => delete&.to_dynamic,
+      "DeserializationFeature"     => deserialization_feature&.to_dynamic,
       "dict"                       => dict&.to_dynamic,
       "dictionary"                 => dictionary&.to_dynamic,
       "didSet"                     => did_set&.to_dynamic,
       "do"                         => top_level_do&.to_dynamic,
       "double"                     => double&.to_dynamic,
+      "DoubleNode"                 => double_node&.to_dynamic,
       "dummy"                      => dummy,
       "dynamic"                    => dynamic&.to_dynamic,
       "dynamic_cast"               => dynamic_cast&.to_dynamic,
@@ -19773,6 +20367,7 @@ class TopLevel < Dry::Struct
       "int"                        => int&.to_dynamic,
       "interface"                  => interface&.to_dynamic,
       "internal"                   => internal&.to_dynamic,
+      "IntNode"                    => int_node&.to_dynamic,
       "is"                         => is&.to_dynamic,
       "IsoDateTimeOffsetConverter" => iso_date_time_offset_converter&.to_dynamic,
       "iterable"                   => iterable&.to_dynamic,
@@ -19803,6 +20398,7 @@ class TopLevel < Dry::Struct
       "Locale"                     => locale&.to_dynamic,
       "lock"                       => lock&.to_dynamic,
       "long"                       => long&.to_dynamic,
+      "LongNode"                   => long_node&.to_dynamic,
       "map"                        => map&.to_dynamic,
       "MapEntry"                   => map_entry&.to_dynamic,
       "metadata_property_handling" => metadata_property_handling&.to_dynamic,
@@ -19829,10 +20425,12 @@ class TopLevel < Dry::Struct
       "NSString"                   => ns_string&.to_dynamic,
       "NULL"                       => null&.to_dynamic,
       "null"                       => top_level_null&.to_dynamic,
+      "NullNode"                   => null_node&.to_dynamic,
       "nullptr"                    => nullptr&.to_dynamic,
       "number"                     => number&.to_dynamic,
       "object"                     => object&.to_dynamic,
       "ObjectMapper"               => object_mapper&.to_dynamic,
+      "ObjectNode"                 => object_node&.to_dynamic,
       "of"                         => of&.to_dynamic,
       "oneway"                     => oneway&.to_dynamic,
       "open"                       => top_level_open&.to_dynamic,
@@ -19883,6 +20481,7 @@ class TopLevel < Dry::Struct
       "Self"                       => top_level_self&.to_dynamic,
       "self"                       => self_1&.to_dynamic,
       "Sendable"                   => sendable&.to_dynamic,
+      "SerializationFeature"       => serialization_feature&.to_dynamic,
       "serialize"                  => serialize&.to_dynamic,
       "SerializerProvider"         => serializer_provider&.to_dynamic,
       "set"                        => set&.to_dynamic,
@@ -19907,6 +20506,7 @@ class TopLevel < Dry::Struct
       "synchronized"               => synchronized&.to_dynamic,
       "system"                     => top_level_system&.to_dynamic,
       "template"                   => template&.to_dynamic,
+      "TextNode"                   => text_node&.to_dynamic,
       "then"                       => top_level_then&.to_dynamic,
       "this"                       => this&.to_dynamic,
       "thread_local"               => thread_local&.to_dynamic,
diff --git a/base/schema-rust/test/inputs/schema/direct-union.schema/default/module_under_test.rs b/head/schema-rust/test/inputs/schema/direct-union.schema/default/module_under_test.rs
index 5103ae3..b96df13 100644
--- a/base/schema-rust/test/inputs/schema/direct-union.schema/default/module_under_test.rs
+++ b/head/schema-rust/test/inputs/schema/direct-union.schema/default/module_under_test.rs
@@ -15,8 +15,53 @@ use serde::{Serialize, Deserialize};
 use std::collections::HashMap;
 
 #[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
 pub struct TopLevel {
+    pub array_node: Option<ArrayNode>,
+
+    pub boolean_node: Option<BooleanNode>,
+
+    pub double_node: Option<DoubleNode>,
+
+    pub int_node: Option<IntNode>,
+
+    pub long_node: Option<LongNode>,
+
+    pub null_node: Option<NullNode>,
+
+    pub object_node: Option<ObjectNode>,
+
     pub stuff: HashMap<String, Thing>,
+
+    pub text_node: Option<TextNode>,
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct ArrayNode {
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct BooleanNode {
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct DoubleNode {
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct IntNode {
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct LongNode {
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct NullNode {
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct ObjectNode {
 }
 
 #[derive(Debug, Clone, Serialize, Deserialize)]
@@ -41,3 +86,7 @@ pub enum Anything {
 
     PurpleString(String),
 }
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct TextNode {
+}
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..bec621a 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
@@ -50,6 +50,9 @@ pub enum Enum {
     #[serde(rename = "Any")]
     EnumAny,
 
+    #[serde(rename = "ArrayNode")]
+    ArrayNode,
+
     Array,
 
     As,
@@ -93,6 +96,9 @@ pub enum Enum {
 
     Boolean,
 
+    #[serde(rename = "BooleanNode")]
+    BooleanNode,
+
     Break,
 
     Bycopy,
@@ -197,6 +203,9 @@ pub enum Enum {
 
     Declare,
 
+    #[serde(rename = "DeserializationFeature")]
+    DeserializationFeature,
+
     Decltype,
 
     #[serde(rename = "decode_string")]
@@ -233,6 +242,9 @@ pub enum Enum {
 
     Double,
 
+    #[serde(rename = "DoubleNode")]
+    DoubleNode,
+
     Dynamic,
 
     #[serde(rename = "dynamic_cast")]
@@ -363,6 +375,9 @@ pub enum Enum {
 
     Int,
 
+    #[serde(rename = "IntNode")]
+    IntNode,
+
     Interface,
 
     Internal,
@@ -437,6 +452,9 @@ pub enum Enum {
 
     List,
 
+    #[serde(rename = "LongNode")]
+    LongNode,
+
     #[serde(rename = "Locale")]
     Locale,
 
@@ -468,6 +486,9 @@ pub enum Enum {
 
     Nil,
 
+    #[serde(rename = "NullNode")]
+    NullNode,
+
     #[serde(rename = "NO")]
     No,
 
@@ -514,6 +535,9 @@ pub enum Enum {
 
     Object,
 
+    #[serde(rename = "ObjectNode")]
+    ObjectNode,
+
     #[serde(rename = "ObjectMapper")]
     ObjectMapper,
 
@@ -631,6 +655,9 @@ pub enum Enum {
     #[serde(rename = "serialize")]
     EnumSerialize,
 
+    #[serde(rename = "SerializationFeature")]
+    SerializationFeature,
+
     #[serde(rename = "SerializerProvider")]
     SerializerProvider,
 
@@ -689,6 +716,9 @@ pub enum Enum {
 
     This,
 
+    #[serde(rename = "TextNode")]
+    TextNode,
+
     #[serde(rename = "thread_local")]
     ThreadLocal,
 
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..548ae13 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
@@ -47,6 +47,9 @@ pub struct TopLevel {
 
     pub array: Option<UnionArray>,
 
+    #[serde(rename = "ArrayNode")]
+    pub array_node: Option<UnionArrayNode>,
+
     #[serde(rename = "as")]
     pub top_level_as: Option<UnionAs>,
 
@@ -87,6 +90,9 @@ pub struct TopLevel {
 
     pub boolean: Option<UnionBoolean>,
 
+    #[serde(rename = "BooleanNode")]
+    pub boolean_node: Option<UnionBooleanNode>,
+
     #[serde(rename = "break")]
     pub top_level_break: Option<UnionBreak>,
 
@@ -214,6 +220,9 @@ pub struct TopLevel {
 
     pub delete: Option<UnionDelete>,
 
+    #[serde(rename = "DeserializationFeature")]
+    pub deserialization_feature: Option<UnionDeserializationFeature>,
+
     pub dict: Option<UnionDict>,
 
     pub dictionary: Option<UnionDictionary>,
@@ -226,6 +235,9 @@ pub struct TopLevel {
 
     pub double: Option<UnionDouble>,
 
+    #[serde(rename = "DoubleNode")]
+    pub double_node: Option<UnionDoubleNode>,
+
     pub dummy: Option<f64>,
 
     pub dynamic: Option<UnionDynamic>,
@@ -367,6 +379,9 @@ pub struct TopLevel {
 
     pub internal: Option<UnionInternal>,
 
+    #[serde(rename = "IntNode")]
+    pub int_node: Option<UnionIntNode>,
+
     pub is: Option<UnionIs>,
 
     #[serde(rename = "IsoDateTimeOffsetConverter")]
@@ -441,6 +456,9 @@ pub struct TopLevel {
 
     pub long: Option<UnionLong>,
 
+    #[serde(rename = "LongNode")]
+    pub long_node: Option<UnionLongNode>,
+
     pub map: Option<UnionMap>,
 
     #[serde(rename = "MapEntry")]
@@ -503,6 +521,9 @@ pub struct TopLevel {
     #[serde(rename = "null")]
     pub top_level_null: Option<UnionNullUnion>,
 
+    #[serde(rename = "NullNode")]
+    pub null_node: Option<UnionNullNode>,
+
     pub nullptr: Option<UnionNullptr>,
 
     pub number: Option<UnionNumber>,
@@ -512,6 +533,9 @@ pub struct TopLevel {
     #[serde(rename = "ObjectMapper")]
     pub object_mapper: Option<UnionObjectMapper>,
 
+    #[serde(rename = "ObjectNode")]
+    pub object_node: Option<UnionObjectNode>,
+
     pub of: Option<UnionOf>,
 
     pub oneway: Option<UnionOneway>,
@@ -624,6 +648,9 @@ pub struct TopLevel {
     #[serde(rename = "Sendable")]
     pub sendable: Option<UnionSendable>,
 
+    #[serde(rename = "SerializationFeature")]
+    pub serialization_feature: Option<UnionSerializationFeature>,
+
     pub serialize: Option<UnionSerialize>,
 
     #[serde(rename = "SerializerProvider")]
@@ -681,6 +708,9 @@ pub struct TopLevel {
 
     pub template: Option<UnionTemplate>,
 
+    #[serde(rename = "TextNode")]
+    pub text_node: Option<UnionTextNode>,
+
     pub then: Option<UnionThen>,
 
     pub this: Option<UnionThis>,
@@ -860,6 +890,18 @@ pub enum UnionArray {
 pub struct Array {
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(untagged)]
+pub enum UnionArrayNode {
+    ArrayNode(ArrayNode),
+
+    Double(f64),
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct ArrayNode {
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 #[serde(untagged)]
 pub enum UnionAsm {
@@ -1040,6 +1082,18 @@ pub enum UnionBoolean {
 pub struct Boolean {
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(untagged)]
+pub enum UnionBooleanNode {
+    BooleanNode(BooleanNode),
+
+    Double(f64),
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct BooleanNode {
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 #[serde(untagged)]
 pub enum UnionBycopy {
@@ -1628,6 +1682,18 @@ pub enum UnionDelete {
 pub struct Delete {
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(untagged)]
+pub enum UnionDeserializationFeature {
+    DeserializationFeature(DeserializationFeature),
+
+    Double(f64),
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct DeserializationFeature {
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 #[serde(untagged)]
 pub enum UnionDict {
@@ -1676,6 +1742,18 @@ pub enum UnionDouble {
 pub struct Double {
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(untagged)]
+pub enum UnionDoubleNode {
+    Double(f64),
+
+    DoubleNode(DoubleNode),
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct DoubleNode {
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 #[serde(untagged)]
 pub enum UnionDynamic {
@@ -2288,6 +2366,18 @@ pub enum UnionInt {
 pub struct Int {
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(untagged)]
+pub enum UnionIntNode {
+    Double(f64),
+
+    IntNode(IntNode),
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct IntNode {
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 #[serde(untagged)]
 pub enum UnionInterface {
@@ -2660,6 +2750,18 @@ pub enum UnionLong {
 pub struct Long {
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(untagged)]
+pub enum UnionLongNode {
+    Double(f64),
+
+    LongNode(LongNode),
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct LongNode {
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 #[serde(untagged)]
 pub enum UnionMap {
@@ -2948,6 +3050,18 @@ pub enum UnionNull {
 pub struct Null {
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(untagged)]
+pub enum UnionNullNode {
+    Double(f64),
+
+    NullNode(NullNode),
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct NullNode {
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 #[serde(untagged)]
 pub enum UnionNullptr {
@@ -2996,6 +3110,18 @@ pub enum UnionObjectMapper {
 pub struct ObjectMapper {
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(untagged)]
+pub enum UnionObjectNode {
+    Double(f64),
+
+    ObjectNode(ObjectNode),
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct ObjectNode {
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 #[serde(untagged)]
 pub enum UnionOf {
@@ -3584,6 +3710,18 @@ pub enum UnionSendable {
 pub struct Sendable {
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(untagged)]
+pub enum UnionSerializationFeature {
+    Double(f64),
+
+    SerializationFeature(SerializationFeature),
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct SerializationFeature {
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 #[serde(untagged)]
 pub enum UnionSerialize {
@@ -3824,6 +3962,18 @@ pub enum UnionTemplate {
 pub struct Template {
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(untagged)]
+pub enum UnionTextNode {
+    Double(f64),
+
+    TextNode(TextNode),
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct TextNode {
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 #[serde(untagged)]
 pub enum UnionThen {
diff --git a/base/schema-scala3/test/inputs/schema/direct-union.schema/default/TopLevel.scala b/head/schema-scala3/test/inputs/schema/direct-union.schema/default/TopLevel.scala
index 86786cb..5b25dda 100644
--- a/base/schema-scala3/test/inputs/schema/direct-union.schema/default/TopLevel.scala
+++ b/head/schema-scala3/test/inputs/schema/direct-union.schema/default/TopLevel.scala
@@ -8,9 +8,31 @@ import cats.syntax.functor._
 type NullValue = None.type
 
 case class TopLevel (
-    val stuff : Map[String, Thing]
+    val arrayNode : Option[ArrayNode] = None,
+    val booleanNode : Option[BooleanNode] = None,
+    val doubleNode : Option[DoubleNode] = None,
+    val intNode : Option[IntNode] = None,
+    val longNode : Option[LongNode] = None,
+    val nullNode : Option[NullNode] = None,
+    val objectNode : Option[ObjectNode] = None,
+    val stuff : Map[String, Thing],
+    val textNode : Option[TextNode] = None
 ) derives Encoder.AsObject, Decoder
 
+case class ArrayNode()  derives Encoder.AsObject, Decoder
+
+case class BooleanNode()  derives Encoder.AsObject, Decoder
+
+case class DoubleNode()  derives Encoder.AsObject, Decoder
+
+case class IntNode()  derives Encoder.AsObject, Decoder
+
+case class LongNode()  derives Encoder.AsObject, Decoder
+
+case class NullNode()  derives Encoder.AsObject, Decoder
+
+case class ObjectNode()  derives Encoder.AsObject, Decoder
+
 case class Thing (
     val optional : Option[Anything] = None,
     val required : Anything
@@ -38,3 +60,5 @@ given Encoder[Anything] = Encoder.instance {
     case enc5 : Map[String, Option[Json]] => Encoder.encodeMap[String,Option[Json]].apply(enc5)
     case enc6 : NullValue => Encoder.encodeNone(enc6)
 }
+
+case class TextNode()  derives Encoder.AsObject, Decoder
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..3c91838 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
@@ -23,6 +23,7 @@ enum EnumEnum :
     case AndEq
     case EnumAny
     case PurpleAny
+    case ArrayNode
     case EnumArray
     case As
     case ASM
@@ -42,6 +43,7 @@ enum EnumEnum :
     case EnumBOOL
     case EnumBool
     case EnumBoolean
+    case BooleanNode
     case Break
     case Bycopy
     case Byref
@@ -85,6 +87,7 @@ enum EnumEnum :
     case Debugger
     case Decimal
     case Declare
+    case DeserializationFeature
     case Decltype
     case DecodeString
     case Decoder
@@ -101,6 +104,7 @@ enum EnumEnum :
     case DidSet
     case Do
     case EnumDouble
+    case DoubleNode
     case Dynamic
     case DynamicCast
     case Elif
@@ -159,6 +163,7 @@ enum EnumEnum :
     case Inout
     case Instanceof
     case EnumInt
+    case IntNode
     case Interface
     case Internal
     case ISODateTimeOffsetConverter
@@ -188,6 +193,7 @@ enum EnumEnum :
     case Left
     case Let
     case EnumList
+    case LongNode
     case Locale
     case Lock
     case EnumLong
@@ -202,6 +208,7 @@ enum EnumEnum :
     case New
     case Newtonsoft
     case Nil
+    case NullNode
     case No
     case Noexcept
     case Nonatomic
@@ -220,6 +227,7 @@ enum EnumEnum :
     case Nullptr
     case Number
     case Object
+    case ObjectNode
     case ObjectMapper
     case Of
     case Oneway
@@ -272,6 +280,7 @@ enum EnumEnum :
     case EnumSelf
     case Sendable
     case Serialize
+    case SerializationFeature
     case SerializerProvider
     case Set
     case EnumShort
@@ -297,6 +306,7 @@ enum EnumEnum :
     case Template
     case Then
     case This
+    case TextNode
     case ThreadLocal
     case Throw
     case Throws
@@ -358,6 +368,7 @@ given Decoder[EnumEnum] = Decoder.decodeString.emap {
     case "and_eq" => scala.Right(EnumEnum.AndEq)
     case "any" => scala.Right(EnumEnum.EnumAny)
     case "Any" => scala.Right(EnumEnum.PurpleAny)
+    case "ArrayNode" => scala.Right(EnumEnum.ArrayNode)
     case "array" => scala.Right(EnumEnum.EnumArray)
     case "as" => scala.Right(EnumEnum.As)
     case "asm" => scala.Right(EnumEnum.ASM)
@@ -377,6 +388,7 @@ given Decoder[EnumEnum] = Decoder.decodeString.emap {
     case "BOOL" => scala.Right(EnumEnum.EnumBOOL)
     case "bool" => scala.Right(EnumEnum.EnumBool)
     case "boolean" => scala.Right(EnumEnum.EnumBoolean)
+    case "BooleanNode" => scala.Right(EnumEnum.BooleanNode)
     case "break" => scala.Right(EnumEnum.Break)
     case "bycopy" => scala.Right(EnumEnum.Bycopy)
     case "byref" => scala.Right(EnumEnum.Byref)
@@ -420,6 +432,7 @@ given Decoder[EnumEnum] = Decoder.decodeString.emap {
     case "debugger" => scala.Right(EnumEnum.Debugger)
     case "decimal" => scala.Right(EnumEnum.Decimal)
     case "declare" => scala.Right(EnumEnum.Declare)
+    case "DeserializationFeature" => scala.Right(EnumEnum.DeserializationFeature)
     case "decltype" => scala.Right(EnumEnum.Decltype)
     case "decode_string" => scala.Right(EnumEnum.DecodeString)
     case "Decoder" => scala.Right(EnumEnum.Decoder)
@@ -436,6 +449,7 @@ given Decoder[EnumEnum] = Decoder.decodeString.emap {
     case "didSet" => scala.Right(EnumEnum.DidSet)
     case "do" => scala.Right(EnumEnum.Do)
     case "double" => scala.Right(EnumEnum.EnumDouble)
+    case "DoubleNode" => scala.Right(EnumEnum.DoubleNode)
     case "dynamic" => scala.Right(EnumEnum.Dynamic)
     case "dynamic_cast" => scala.Right(EnumEnum.DynamicCast)
     case "elif" => scala.Right(EnumEnum.Elif)
@@ -494,6 +508,7 @@ given Decoder[EnumEnum] = Decoder.decodeString.emap {
     case "inout" => scala.Right(EnumEnum.Inout)
     case "instanceof" => scala.Right(EnumEnum.Instanceof)
     case "int" => scala.Right(EnumEnum.EnumInt)
+    case "IntNode" => scala.Right(EnumEnum.IntNode)
     case "interface" => scala.Right(EnumEnum.Interface)
     case "internal" => scala.Right(EnumEnum.Internal)
     case "IsoDateTimeOffsetConverter" => scala.Right(EnumEnum.ISODateTimeOffsetConverter)
@@ -523,6 +538,7 @@ given Decoder[EnumEnum] = Decoder.decodeString.emap {
     case "left" => scala.Right(EnumEnum.Left)
     case "let" => scala.Right(EnumEnum.Let)
     case "list" => scala.Right(EnumEnum.EnumList)
+    case "LongNode" => scala.Right(EnumEnum.LongNode)
     case "Locale" => scala.Right(EnumEnum.Locale)
     case "lock" => scala.Right(EnumEnum.Lock)
     case "long" => scala.Right(EnumEnum.EnumLong)
@@ -537,6 +553,7 @@ given Decoder[EnumEnum] = Decoder.decodeString.emap {
     case "new" => scala.Right(EnumEnum.New)
     case "newtonsoft" => scala.Right(EnumEnum.Newtonsoft)
     case "nil" => scala.Right(EnumEnum.Nil)
+    case "NullNode" => scala.Right(EnumEnum.NullNode)
     case "NO" => scala.Right(EnumEnum.No)
     case "noexcept" => scala.Right(EnumEnum.Noexcept)
     case "nonatomic" => scala.Right(EnumEnum.Nonatomic)
@@ -555,6 +572,7 @@ given Decoder[EnumEnum] = Decoder.decodeString.emap {
     case "nullptr" => scala.Right(EnumEnum.Nullptr)
     case "number" => scala.Right(EnumEnum.Number)
     case "object" => scala.Right(EnumEnum.Object)
+    case "ObjectNode" => scala.Right(EnumEnum.ObjectNode)
     case "ObjectMapper" => scala.Right(EnumEnum.ObjectMapper)
     case "of" => scala.Right(EnumEnum.Of)
     case "oneway" => scala.Right(EnumEnum.Oneway)
@@ -607,6 +625,7 @@ given Decoder[EnumEnum] = Decoder.decodeString.emap {
     case "self" => scala.Right(EnumEnum.EnumSelf)
     case "Sendable" => scala.Right(EnumEnum.Sendable)
     case "serialize" => scala.Right(EnumEnum.Serialize)
+    case "SerializationFeature" => scala.Right(EnumEnum.SerializationFeature)
     case "SerializerProvider" => scala.Right(EnumEnum.SerializerProvider)
     case "set" => scala.Right(EnumEnum.Set)
     case "short" => scala.Right(EnumEnum.EnumShort)
@@ -632,6 +651,7 @@ given Decoder[EnumEnum] = Decoder.decodeString.emap {
     case "template" => scala.Right(EnumEnum.Template)
     case "then" => scala.Right(EnumEnum.Then)
     case "this" => scala.Right(EnumEnum.This)
+    case "TextNode" => scala.Right(EnumEnum.TextNode)
     case "thread_local" => scala.Right(EnumEnum.ThreadLocal)
     case "throw" => scala.Right(EnumEnum.Throw)
     case "throws" => scala.Right(EnumEnum.Throws)
@@ -694,6 +714,7 @@ given Encoder[EnumEnum] = Encoder.encodeString.contramap {
     case EnumEnum.AndEq => "and_eq"
     case EnumEnum.EnumAny => "any"
     case EnumEnum.PurpleAny => "Any"
+    case EnumEnum.ArrayNode => "ArrayNode"
     case EnumEnum.EnumArray => "array"
     case EnumEnum.As => "as"
     case EnumEnum.ASM => "asm"
@@ -713,6 +734,7 @@ given Encoder[EnumEnum] = Encoder.encodeString.contramap {
     case EnumEnum.EnumBOOL => "BOOL"
     case EnumEnum.EnumBool => "bool"
     case EnumEnum.EnumBoolean => "boolean"
+    case EnumEnum.BooleanNode => "BooleanNode"
     case EnumEnum.Break => "break"
     case EnumEnum.Bycopy => "bycopy"
     case EnumEnum.Byref => "byref"
@@ -756,6 +778,7 @@ given Encoder[EnumEnum] = Encoder.encodeString.contramap {
     case EnumEnum.Debugger => "debugger"
     case EnumEnum.Decimal => "decimal"
     case EnumEnum.Declare => "declare"
+    case EnumEnum.DeserializationFeature => "DeserializationFeature"
     case EnumEnum.Decltype => "decltype"
     case EnumEnum.DecodeString => "decode_string"
     case EnumEnum.Decoder => "Decoder"
@@ -772,6 +795,7 @@ given Encoder[EnumEnum] = Encoder.encodeString.contramap {
     case EnumEnum.DidSet => "didSet"
     case EnumEnum.Do => "do"
     case EnumEnum.EnumDouble => "double"
+    case EnumEnum.DoubleNode => "DoubleNode"
     case EnumEnum.Dynamic => "dynamic"
     case EnumEnum.DynamicCast => "dynamic_cast"
     case EnumEnum.Elif => "elif"
@@ -830,6 +854,7 @@ given Encoder[EnumEnum] = Encoder.encodeString.contramap {
     case EnumEnum.Inout => "inout"
     case EnumEnum.Instanceof => "instanceof"
     case EnumEnum.EnumInt => "int"
+    case EnumEnum.IntNode => "IntNode"
     case EnumEnum.Interface => "interface"
     case EnumEnum.Internal => "internal"
     case EnumEnum.ISODateTimeOffsetConverter => "IsoDateTimeOffsetConverter"
@@ -859,6 +884,7 @@ given Encoder[EnumEnum] = Encoder.encodeString.contramap {
     case EnumEnum.Left => "left"
     case EnumEnum.Let => "let"
     case EnumEnum.EnumList => "list"
+    case EnumEnum.LongNode => "LongNode"
     case EnumEnum.Locale => "Locale"
     case EnumEnum.Lock => "lock"
     case EnumEnum.EnumLong => "long"
@@ -873,6 +899,7 @@ given Encoder[EnumEnum] = Encoder.encodeString.contramap {
     case EnumEnum.New => "new"
     case EnumEnum.Newtonsoft => "newtonsoft"
     case EnumEnum.Nil => "nil"
+    case EnumEnum.NullNode => "NullNode"
     case EnumEnum.No => "NO"
     case EnumEnum.Noexcept => "noexcept"
     case EnumEnum.Nonatomic => "nonatomic"
@@ -891,6 +918,7 @@ given Encoder[EnumEnum] = Encoder.encodeString.contramap {
     case EnumEnum.Nullptr => "nullptr"
     case EnumEnum.Number => "number"
     case EnumEnum.Object => "object"
+    case EnumEnum.ObjectNode => "ObjectNode"
     case EnumEnum.ObjectMapper => "ObjectMapper"
     case EnumEnum.Of => "of"
     case EnumEnum.Oneway => "oneway"
@@ -943,6 +971,7 @@ given Encoder[EnumEnum] = Encoder.encodeString.contramap {
     case EnumEnum.EnumSelf => "self"
     case EnumEnum.Sendable => "Sendable"
     case EnumEnum.Serialize => "serialize"
+    case EnumEnum.SerializationFeature => "SerializationFeature"
     case EnumEnum.SerializerProvider => "SerializerProvider"
     case EnumEnum.Set => "set"
     case EnumEnum.EnumShort => "short"
@@ -968,6 +997,7 @@ given Encoder[EnumEnum] = Encoder.encodeString.contramap {
     case EnumEnum.Template => "template"
     case EnumEnum.Then => "then"
     case EnumEnum.This => "this"
+    case EnumEnum.TextNode => "TextNode"
     case EnumEnum.ThreadLocal => "thread_local"
     case EnumEnum.Throw => "throw"
     case EnumEnum.Throws => "throws"
diff --git a/base/schema-scala3-upickle/test/inputs/schema/direct-union.schema/default/TopLevel.scala b/head/schema-scala3-upickle/test/inputs/schema/direct-union.schema/default/TopLevel.scala
index 368c29a..48c807f 100644
--- a/base/schema-scala3-upickle/test/inputs/schema/direct-union.schema/default/TopLevel.scala
+++ b/head/schema-scala3-upickle/test/inputs/schema/direct-union.schema/default/TopLevel.scala
@@ -79,9 +79,31 @@ given OptionPickler.Reader[Long] = JsonExt.strictLong
 
 
 case class TopLevel (
-    val stuff : Map[String, Thing]
+    val arrayNode : Option[ArrayNode] = None,
+    val booleanNode : Option[BooleanNode] = None,
+    val doubleNode : Option[DoubleNode] = None,
+    val intNode : Option[IntNode] = None,
+    val longNode : Option[LongNode] = None,
+    val nullNode : Option[NullNode] = None,
+    val objectNode : Option[ObjectNode] = None,
+    val stuff : Map[String, Thing],
+    val textNode : Option[TextNode] = None
 ) derives OptionPickler.ReadWriter
 
+case class ArrayNode()
+ derives OptionPickler.ReadWriter
+case class BooleanNode()
+ derives OptionPickler.ReadWriter
+case class DoubleNode()
+ derives OptionPickler.ReadWriter
+case class IntNode()
+ derives OptionPickler.ReadWriter
+case class LongNode()
+ derives OptionPickler.ReadWriter
+case class NullNode()
+ derives OptionPickler.ReadWriter
+case class ObjectNode()
+ derives OptionPickler.ReadWriter
 case class Thing (
     val optional : Option[Anything] = None,
     val required : Anything
@@ -108,3 +130,6 @@ given unionWriterAnything: OptionPickler.Writer[Anything] = OptionPickler.writer
         case v: Map[String, Option[ujson.Value]] => OptionPickler.writeJs[Map[String, Option[ujson.Value]]](v)
         case v: NullValue => OptionPickler.writeJs[NullValue](v)
 }
+
+case class TextNode()
+ derives OptionPickler.ReadWriter
\ No newline at end of file
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..942ab6c 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
@@ -94,6 +94,7 @@ enum EnumEnum :
     case AndEq
     case EnumAny
     case PurpleAny
+    case ArrayNode
     case EnumArray
     case As
     case ASM
@@ -113,6 +114,7 @@ enum EnumEnum :
     case EnumBOOL
     case EnumBool
     case EnumBoolean
+    case BooleanNode
     case Break
     case Bycopy
     case Byref
@@ -156,6 +158,7 @@ enum EnumEnum :
     case Debugger
     case Decimal
     case Declare
+    case DeserializationFeature
     case Decltype
     case DecodeString
     case Decoder
@@ -172,6 +175,7 @@ enum EnumEnum :
     case DidSet
     case Do
     case EnumDouble
+    case DoubleNode
     case Dynamic
     case DynamicCast
     case Elif
@@ -230,6 +234,7 @@ enum EnumEnum :
     case Inout
     case Instanceof
     case EnumInt
+    case IntNode
     case Interface
     case Internal
     case ISODateTimeOffsetConverter
@@ -259,6 +264,7 @@ enum EnumEnum :
     case Left
     case Let
     case EnumList
+    case LongNode
     case Locale
     case Lock
     case EnumLong
@@ -273,6 +279,7 @@ enum EnumEnum :
     case New
     case Newtonsoft
     case Nil
+    case NullNode
     case No
     case Noexcept
     case Nonatomic
@@ -291,6 +298,7 @@ enum EnumEnum :
     case Nullptr
     case Number
     case Object
+    case ObjectNode
     case ObjectMapper
     case Of
     case Oneway
@@ -343,6 +351,7 @@ enum EnumEnum :
     case EnumSelf
     case Sendable
     case Serialize
+    case SerializationFeature
     case SerializerProvider
     case Set
     case EnumShort
@@ -368,6 +377,7 @@ enum EnumEnum :
     case Template
     case Then
     case This
+    case TextNode
     case ThreadLocal
     case Throw
     case Throws
@@ -430,6 +440,7 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case EnumEnum.AndEq => "and_eq"
         case EnumEnum.EnumAny => "any"
         case EnumEnum.PurpleAny => "Any"
+        case EnumEnum.ArrayNode => "ArrayNode"
         case EnumEnum.EnumArray => "array"
         case EnumEnum.As => "as"
         case EnumEnum.ASM => "asm"
@@ -449,6 +460,7 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case EnumEnum.EnumBOOL => "BOOL"
         case EnumEnum.EnumBool => "bool"
         case EnumEnum.EnumBoolean => "boolean"
+        case EnumEnum.BooleanNode => "BooleanNode"
         case EnumEnum.Break => "break"
         case EnumEnum.Bycopy => "bycopy"
         case EnumEnum.Byref => "byref"
@@ -492,6 +504,7 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case EnumEnum.Debugger => "debugger"
         case EnumEnum.Decimal => "decimal"
         case EnumEnum.Declare => "declare"
+        case EnumEnum.DeserializationFeature => "DeserializationFeature"
         case EnumEnum.Decltype => "decltype"
         case EnumEnum.DecodeString => "decode_string"
         case EnumEnum.Decoder => "Decoder"
@@ -508,6 +521,7 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case EnumEnum.DidSet => "didSet"
         case EnumEnum.Do => "do"
         case EnumEnum.EnumDouble => "double"
+        case EnumEnum.DoubleNode => "DoubleNode"
         case EnumEnum.Dynamic => "dynamic"
         case EnumEnum.DynamicCast => "dynamic_cast"
         case EnumEnum.Elif => "elif"
@@ -566,6 +580,7 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case EnumEnum.Inout => "inout"
         case EnumEnum.Instanceof => "instanceof"
         case EnumEnum.EnumInt => "int"
+        case EnumEnum.IntNode => "IntNode"
         case EnumEnum.Interface => "interface"
         case EnumEnum.Internal => "internal"
         case EnumEnum.ISODateTimeOffsetConverter => "IsoDateTimeOffsetConverter"
@@ -595,6 +610,7 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case EnumEnum.Left => "left"
         case EnumEnum.Let => "let"
         case EnumEnum.EnumList => "list"
+        case EnumEnum.LongNode => "LongNode"
         case EnumEnum.Locale => "Locale"
         case EnumEnum.Lock => "lock"
         case EnumEnum.EnumLong => "long"
@@ -609,6 +625,7 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case EnumEnum.New => "new"
         case EnumEnum.Newtonsoft => "newtonsoft"
         case EnumEnum.Nil => "nil"
+        case EnumEnum.NullNode => "NullNode"
         case EnumEnum.No => "NO"
         case EnumEnum.Noexcept => "noexcept"
         case EnumEnum.Nonatomic => "nonatomic"
@@ -627,6 +644,7 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case EnumEnum.Nullptr => "nullptr"
         case EnumEnum.Number => "number"
         case EnumEnum.Object => "object"
+        case EnumEnum.ObjectNode => "ObjectNode"
         case EnumEnum.ObjectMapper => "ObjectMapper"
         case EnumEnum.Of => "of"
         case EnumEnum.Oneway => "oneway"
@@ -679,6 +697,7 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case EnumEnum.EnumSelf => "self"
         case EnumEnum.Sendable => "Sendable"
         case EnumEnum.Serialize => "serialize"
+        case EnumEnum.SerializationFeature => "SerializationFeature"
         case EnumEnum.SerializerProvider => "SerializerProvider"
         case EnumEnum.Set => "set"
         case EnumEnum.EnumShort => "short"
@@ -704,6 +723,7 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case EnumEnum.Template => "template"
         case EnumEnum.Then => "then"
         case EnumEnum.This => "this"
+        case EnumEnum.TextNode => "TextNode"
         case EnumEnum.ThreadLocal => "thread_local"
         case EnumEnum.Throw => "throw"
         case EnumEnum.Throws => "throws"
@@ -765,6 +785,7 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case "and_eq" => EnumEnum.AndEq
         case "any" => EnumEnum.EnumAny
         case "Any" => EnumEnum.PurpleAny
+        case "ArrayNode" => EnumEnum.ArrayNode
         case "array" => EnumEnum.EnumArray
         case "as" => EnumEnum.As
         case "asm" => EnumEnum.ASM
@@ -784,6 +805,7 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case "BOOL" => EnumEnum.EnumBOOL
         case "bool" => EnumEnum.EnumBool
         case "boolean" => EnumEnum.EnumBoolean
+        case "BooleanNode" => EnumEnum.BooleanNode
         case "break" => EnumEnum.Break
         case "bycopy" => EnumEnum.Bycopy
         case "byref" => EnumEnum.Byref
@@ -827,6 +849,7 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case "debugger" => EnumEnum.Debugger
         case "decimal" => EnumEnum.Decimal
         case "declare" => EnumEnum.Declare
+        case "DeserializationFeature" => EnumEnum.DeserializationFeature
         case "decltype" => EnumEnum.Decltype
         case "decode_string" => EnumEnum.DecodeString
         case "Decoder" => EnumEnum.Decoder
@@ -843,6 +866,7 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case "didSet" => EnumEnum.DidSet
         case "do" => EnumEnum.Do
         case "double" => EnumEnum.EnumDouble
+        case "DoubleNode" => EnumEnum.DoubleNode
         case "dynamic" => EnumEnum.Dynamic
         case "dynamic_cast" => EnumEnum.DynamicCast
         case "elif" => EnumEnum.Elif
@@ -901,6 +925,7 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case "inout" => EnumEnum.Inout
         case "instanceof" => EnumEnum.Instanceof
         case "int" => EnumEnum.EnumInt
+        case "IntNode" => EnumEnum.IntNode
         case "interface" => EnumEnum.Interface
         case "internal" => EnumEnum.Internal
         case "IsoDateTimeOffsetConverter" => EnumEnum.ISODateTimeOffsetConverter
@@ -930,6 +955,7 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case "left" => EnumEnum.Left
         case "let" => EnumEnum.Let
         case "list" => EnumEnum.EnumList
+        case "LongNode" => EnumEnum.LongNode
         case "Locale" => EnumEnum.Locale
         case "lock" => EnumEnum.Lock
         case "long" => EnumEnum.EnumLong
@@ -944,6 +970,7 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case "new" => EnumEnum.New
         case "newtonsoft" => EnumEnum.Newtonsoft
         case "nil" => EnumEnum.Nil
+        case "NullNode" => EnumEnum.NullNode
         case "NO" => EnumEnum.No
         case "noexcept" => EnumEnum.Noexcept
         case "nonatomic" => EnumEnum.Nonatomic
@@ -962,6 +989,7 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case "nullptr" => EnumEnum.Nullptr
         case "number" => EnumEnum.Number
         case "object" => EnumEnum.Object
+        case "ObjectNode" => EnumEnum.ObjectNode
         case "ObjectMapper" => EnumEnum.ObjectMapper
         case "of" => EnumEnum.Of
         case "oneway" => EnumEnum.Oneway
@@ -1014,6 +1042,7 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case "self" => EnumEnum.EnumSelf
         case "Sendable" => EnumEnum.Sendable
         case "serialize" => EnumEnum.Serialize
+        case "SerializationFeature" => EnumEnum.SerializationFeature
         case "SerializerProvider" => EnumEnum.SerializerProvider
         case "set" => EnumEnum.Set
         case "short" => EnumEnum.EnumShort
@@ -1039,6 +1068,7 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case "template" => EnumEnum.Template
         case "then" => EnumEnum.Then
         case "this" => EnumEnum.This
+        case "TextNode" => EnumEnum.TextNode
         case "thread_local" => EnumEnum.ThreadLocal
         case "throw" => EnumEnum.Throw
         case "throws" => EnumEnum.Throws
diff --git a/base/schema-schema/test/inputs/schema/direct-union.schema/default/TopLevel.schema b/head/schema-schema/test/inputs/schema/direct-union.schema/default/TopLevel.schema
index 4e9f88a..6701ece 100644
--- a/base/schema-schema/test/inputs/schema/direct-union.schema/default/TopLevel.schema
+++ b/head/schema-schema/test/inputs/schema/direct-union.schema/default/TopLevel.schema
@@ -6,11 +6,35 @@
             "type": "object",
             "additionalProperties": false,
             "properties": {
+                "arrayNode": {
+                    "$ref": "#/definitions/ArrayNode"
+                },
+                "booleanNode": {
+                    "$ref": "#/definitions/BooleanNode"
+                },
+                "doubleNode": {
+                    "$ref": "#/definitions/DoubleNode"
+                },
+                "intNode": {
+                    "$ref": "#/definitions/IntNode"
+                },
+                "longNode": {
+                    "$ref": "#/definitions/LongNode"
+                },
+                "nullNode": {
+                    "$ref": "#/definitions/NullNode"
+                },
+                "objectNode": {
+                    "$ref": "#/definitions/ObjectNode"
+                },
                 "stuff": {
                     "type": "object",
                     "additionalProperties": {
                         "$ref": "#/definitions/Thing"
                     }
+                },
+                "textNode": {
+                    "$ref": "#/definitions/TextNode"
                 }
             },
             "required": [
@@ -18,6 +42,41 @@
             ],
             "title": "TopLevel"
         },
+        "ArrayNode": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "ArrayNode"
+        },
+        "BooleanNode": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "BooleanNode"
+        },
+        "DoubleNode": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "DoubleNode"
+        },
+        "IntNode": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "IntNode"
+        },
+        "LongNode": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "LongNode"
+        },
+        "NullNode": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "NullNode"
+        },
+        "ObjectNode": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "ObjectNode"
+        },
         "Thing": {
             "type": "object",
             "additionalProperties": false,
@@ -34,6 +93,11 @@
             ],
             "title": "Thing"
         },
+        "TextNode": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "TextNode"
+        },
         "Anything": {
             "anyOf": [
                 {
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..515b27c 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
@@ -27,6 +27,7 @@
                 "and_eq",
                 "any",
                 "Any",
+                "ArrayNode",
                 "array",
                 "as",
                 "asm",
@@ -46,6 +47,7 @@
                 "BOOL",
                 "bool",
                 "boolean",
+                "BooleanNode",
                 "break",
                 "bycopy",
                 "byref",
@@ -89,6 +91,7 @@
                 "debugger",
                 "decimal",
                 "declare",
+                "DeserializationFeature",
                 "decltype",
                 "decode_string",
                 "Decoder",
@@ -105,6 +108,7 @@
                 "didSet",
                 "do",
                 "double",
+                "DoubleNode",
                 "dynamic",
                 "dynamic_cast",
                 "elif",
@@ -163,6 +167,7 @@
                 "inout",
                 "instanceof",
                 "int",
+                "IntNode",
                 "interface",
                 "internal",
                 "IsoDateTimeOffsetConverter",
@@ -192,6 +197,7 @@
                 "left",
                 "let",
                 "list",
+                "LongNode",
                 "Locale",
                 "lock",
                 "long",
@@ -206,6 +212,7 @@
                 "new",
                 "newtonsoft",
                 "nil",
+                "NullNode",
                 "NO",
                 "noexcept",
                 "nonatomic",
@@ -224,6 +231,7 @@
                 "nullptr",
                 "number",
                 "object",
+                "ObjectNode",
                 "ObjectMapper",
                 "of",
                 "oneway",
@@ -276,6 +284,7 @@
                 "self",
                 "Sendable",
                 "serialize",
+                "SerializationFeature",
                 "SerializerProvider",
                 "set",
                 "short",
@@ -301,6 +310,7 @@
                 "template",
                 "then",
                 "this",
+                "TextNode",
                 "thread_local",
                 "throw",
                 "throws",
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..4b894f5 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
@@ -42,6 +42,9 @@
                 "array": {
                     "$ref": "#/definitions/UnionArray"
                 },
+                "ArrayNode": {
+                    "$ref": "#/definitions/UnionArrayNode"
+                },
                 "as": {
                     "$ref": "#/definitions/UnionAs"
                 },
@@ -96,6 +99,9 @@
                 "boolean": {
                     "$ref": "#/definitions/UnionBoolean"
                 },
+                "BooleanNode": {
+                    "$ref": "#/definitions/UnionBooleanNode"
+                },
                 "break": {
                     "$ref": "#/definitions/UnionBreak"
                 },
@@ -258,6 +264,9 @@
                 "delete": {
                     "$ref": "#/definitions/UnionDelete"
                 },
+                "DeserializationFeature": {
+                    "$ref": "#/definitions/UnionDeserializationFeature"
+                },
                 "dict": {
                     "$ref": "#/definitions/UnionDict"
                 },
@@ -273,6 +282,9 @@
                 "double": {
                     "$ref": "#/definitions/UnionDouble"
                 },
+                "DoubleNode": {
+                    "$ref": "#/definitions/UnionDoubleNode"
+                },
                 "dummy": {
                     "type": "number"
                 },
@@ -456,6 +468,9 @@
                 "internal": {
                     "$ref": "#/definitions/UnionInternal"
                 },
+                "IntNode": {
+                    "$ref": "#/definitions/UnionIntNode"
+                },
                 "is": {
                     "$ref": "#/definitions/UnionIs"
                 },
@@ -546,6 +561,9 @@
                 "long": {
                     "$ref": "#/definitions/UnionLong"
                 },
+                "LongNode": {
+                    "$ref": "#/definitions/UnionLongNode"
+                },
                 "map": {
                     "$ref": "#/definitions/UnionMap"
                 },
@@ -624,6 +642,9 @@
                 "null": {
                     "$ref": "#/definitions/UnionNull"
                 },
+                "NullNode": {
+                    "$ref": "#/definitions/UnionNullNode"
+                },
                 "nullptr": {
                     "$ref": "#/definitions/UnionNullptr"
                 },
@@ -636,6 +657,9 @@
                 "ObjectMapper": {
                     "$ref": "#/definitions/UnionObjectMapper"
                 },
+                "ObjectNode": {
+                    "$ref": "#/definitions/UnionObjectNode"
+                },
                 "of": {
                     "$ref": "#/definitions/UnionOf"
                 },
@@ -786,6 +810,9 @@
                 "Sendable": {
                     "$ref": "#/definitions/UnionSendable"
                 },
+                "SerializationFeature": {
+                    "$ref": "#/definitions/UnionSerializationFeature"
+                },
                 "serialize": {
                     "$ref": "#/definitions/UnionSerialize"
                 },
@@ -858,6 +885,9 @@
                 "template": {
                     "$ref": "#/definitions/UnionTemplate"
                 },
+                "TextNode": {
+                    "$ref": "#/definitions/UnionTextNode"
+                },
                 "then": {
                     "$ref": "#/definitions/UnionThen"
                 },
@@ -1014,11 +1044,21 @@
             "additionalProperties": false,
             "title": "Any"
         },
+        "ArrayNode": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "ArrayNode"
+        },
         "Bool": {
             "type": "object",
             "additionalProperties": false,
             "title": "Bool"
         },
+        "BooleanNode": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "BooleanNode"
+        },
         "Calendar": {
             "type": "object",
             "additionalProperties": false,
@@ -1084,6 +1124,16 @@
             "additionalProperties": false,
             "title": "DecodingError"
         },
+        "DeserializationFeature": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "DeserializationFeature"
+        },
+        "DoubleNode": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "DoubleNode"
+        },
         "Encoder": {
             "type": "object",
             "additionalProperties": false,
@@ -1124,6 +1174,11 @@
             "additionalProperties": false,
             "title": "Imp"
         },
+        "IntNode": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "IntNode"
+        },
         "ISODateTimeOffsetConverter": {
             "type": "object",
             "additionalProperties": false,
@@ -1189,6 +1244,11 @@
             "additionalProperties": false,
             "title": "Locale"
         },
+        "LongNode": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "LongNode"
+        },
         "MapEntry": {
             "type": "object",
             "additionalProperties": false,
@@ -1224,11 +1284,21 @@
             "additionalProperties": false,
             "title": "None"
         },
+        "NullNode": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "NullNode"
+        },
         "ObjectMapper": {
             "type": "object",
             "additionalProperties": false,
             "title": "ObjectMapper"
         },
+        "ObjectNode": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "ObjectNode"
+        },
         "Protocol": {
             "type": "object",
             "additionalProperties": false,
@@ -1254,6 +1324,11 @@
             "additionalProperties": false,
             "title": "Sendable"
         },
+        "SerializationFeature": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "SerializationFeature"
+        },
         "SerializerProvider": {
             "type": "object",
             "additionalProperties": false,
@@ -1279,6 +1354,11 @@
             "additionalProperties": false,
             "title": "StdSerializer"
         },
+        "TextNode": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "TextNode"
+        },
         "TimeOnly": {
             "type": "object",
             "additionalProperties": false,
@@ -2680,6 +2760,17 @@
             ],
             "title": "UnionAny"
         },
+        "UnionArrayNode": {
+            "anyOf": [
+                {
+                    "$ref": "#/definitions/ArrayNode"
+                },
+                {
+                    "type": "number"
+                }
+            ],
+            "title": "UnionArrayNode"
+        },
         "UnionBOOL": {
             "anyOf": [
                 {
@@ -2691,6 +2782,17 @@
             ],
             "title": "UnionBOOL"
         },
+        "UnionBooleanNode": {
+            "anyOf": [
+                {
+                    "$ref": "#/definitions/BooleanNode"
+                },
+                {
+                    "type": "number"
+                }
+            ],
+            "title": "UnionBooleanNode"
+        },
         "UnionCalendar": {
             "anyOf": [
                 {
@@ -2834,6 +2936,28 @@
             ],
             "title": "UnionDecodingError"
         },
+        "UnionDeserializationFeature": {
+            "anyOf": [
+                {
+                    "$ref": "#/definitions/DeserializationFeature"
+                },
+                {
+                    "type": "number"
+                }
+            ],
+            "title": "UnionDeserializationFeature"
+        },
+        "UnionDoubleNode": {
+            "anyOf": [
+                {
+                    "$ref": "#/definitions/DoubleNode"
+                },
+                {
+                    "type": "number"
+                }
+            ],
+            "title": "UnionDoubleNode"
+        },
         "UnionEncoder": {
             "anyOf": [
                 {
@@ -2922,6 +3046,17 @@
             ],
             "title": "UnionIMP"
         },
+        "UnionIntNode": {
+            "anyOf": [
+                {
+                    "$ref": "#/definitions/IntNode"
+                },
+                {
+                    "type": "number"
+                }
+            ],
+            "title": "UnionIntNode"
+        },
         "UnionISODateTimeOffsetConverter": {
             "anyOf": [
                 {
@@ -3065,6 +3200,17 @@
             ],
             "title": "UnionLocale"
         },
+        "UnionLongNode": {
+            "anyOf": [
+                {
+                    "$ref": "#/definitions/LongNode"
+                },
+                {
+                    "type": "number"
+                }
+            ],
+            "title": "UnionLongNode"
+        },
         "UnionMapEntry": {
             "anyOf": [
                 {
@@ -3142,6 +3288,17 @@
             ],
             "title": "UnionNone"
         },
+        "UnionNullNode": {
+            "anyOf": [
+                {
+                    "$ref": "#/definitions/NullNode"
+                },
+                {
+                    "type": "number"
+                }
+            ],
+            "title": "UnionNullNode"
+        },
         "UnionObjectMapper": {
             "anyOf": [
                 {
@@ -3153,6 +3310,17 @@
             ],
             "title": "UnionObjectMapper"
         },
+        "UnionObjectNode": {
+            "anyOf": [
+                {
+                    "$ref": "#/definitions/ObjectNode"
+                },
+                {
+                    "type": "number"
+                }
+            ],
+            "title": "UnionObjectNode"
+        },
         "UnionProtocol": {
             "anyOf": [
                 {
@@ -3208,6 +3376,17 @@
             ],
             "title": "UnionSendable"
         },
+        "UnionSerializationFeature": {
+            "anyOf": [
+                {
+                    "$ref": "#/definitions/SerializationFeature"
+                },
+                {
+                    "type": "number"
+                }
+            ],
+            "title": "UnionSerializationFeature"
+        },
         "UnionSerializerProvider": {
             "anyOf": [
                 {
@@ -3263,6 +3442,17 @@
             ],
             "title": "UnionStdSerializer"
         },
+        "UnionTextNode": {
+            "anyOf": [
+                {
+                    "$ref": "#/definitions/TextNode"
+                },
+                {
+                    "type": "number"
+                }
+            ],
+            "title": "UnionTextNode"
+        },
         "UnionTimeOnly": {
             "anyOf": [
                 {
diff --git a/base/schema-swift/test/inputs/schema/direct-union.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/direct-union.schema/default/quicktype.swift
index 4bd1d95..9fab926 100644
--- a/base/schema-swift/test/inputs/schema/direct-union.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/direct-union.schema/default/quicktype.swift
@@ -7,10 +7,26 @@ import Foundation
 
 // MARK: - TopLevel
 struct TopLevel: Codable {
+    let arrayNode: ArrayNode?
+    let booleanNode: BooleanNode?
+    let doubleNode: DoubleNode?
+    let intNode: IntNode?
+    let longNode: LongNode?
+    let nullNode: NullNode?
+    let objectNode: ObjectNode?
     let stuff: [String: Thing]
+    let textNode: TextNode?
 
     enum CodingKeys: String, CodingKey {
+        case arrayNode = "arrayNode"
+        case booleanNode = "booleanNode"
+        case doubleNode = "doubleNode"
+        case intNode = "intNode"
+        case longNode = "longNode"
+        case nullNode = "nullNode"
+        case objectNode = "objectNode"
         case stuff = "stuff"
+        case textNode = "textNode"
     }
 }
 
@@ -33,10 +49,327 @@ extension TopLevel {
     }
 
     func with(
-        stuff: [String: Thing]? = nil
+        arrayNode: ArrayNode?? = nil,
+        booleanNode: BooleanNode?? = nil,
+        doubleNode: DoubleNode?? = nil,
+        intNode: IntNode?? = nil,
+        longNode: LongNode?? = nil,
+        nullNode: NullNode?? = nil,
+        objectNode: ObjectNode?? = nil,
+        stuff: [String: Thing]? = nil,
+        textNode: TextNode?? = nil
     ) -> TopLevel {
         return TopLevel(
-            stuff: stuff ?? self.stuff
+            arrayNode: arrayNode ?? self.arrayNode,
+            booleanNode: booleanNode ?? self.booleanNode,
+            doubleNode: doubleNode ?? self.doubleNode,
+            intNode: intNode ?? self.intNode,
+            longNode: longNode ?? self.longNode,
+            nullNode: nullNode ?? self.nullNode,
+            objectNode: objectNode ?? self.objectNode,
+            stuff: stuff ?? self.stuff,
+            textNode: textNode ?? self.textNode
+        )
+    }
+
+    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: - ArrayNode
+struct ArrayNode: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: ArrayNode convenience initializers and mutators
+
+extension ArrayNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(ArrayNode.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(
+    ) -> ArrayNode {
+        return ArrayNode(
+        )
+    }
+
+    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: - BooleanNode
+struct BooleanNode: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: BooleanNode convenience initializers and mutators
+
+extension BooleanNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(BooleanNode.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(
+    ) -> BooleanNode {
+        return BooleanNode(
+        )
+    }
+
+    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: - DoubleNode
+struct DoubleNode: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: DoubleNode convenience initializers and mutators
+
+extension DoubleNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(DoubleNode.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(
+    ) -> DoubleNode {
+        return DoubleNode(
+        )
+    }
+
+    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: - IntNode
+struct IntNode: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: IntNode convenience initializers and mutators
+
+extension IntNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(IntNode.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(
+    ) -> IntNode {
+        return IntNode(
+        )
+    }
+
+    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: - LongNode
+struct LongNode: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: LongNode convenience initializers and mutators
+
+extension LongNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(LongNode.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(
+    ) -> LongNode {
+        return LongNode(
+        )
+    }
+
+    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: - NullNode
+struct NullNode: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: NullNode convenience initializers and mutators
+
+extension NullNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(NullNode.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(
+    ) -> NullNode {
+        return NullNode(
+        )
+    }
+
+    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: - ObjectNode
+struct ObjectNode: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: ObjectNode convenience initializers and mutators
+
+extension ObjectNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(ObjectNode.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(
+    ) -> ObjectNode {
+        return ObjectNode(
         )
     }
 
@@ -160,6 +493,49 @@ enum Anything: Codable {
     }
 }
 
+// MARK: - TextNode
+struct TextNode: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: TextNode convenience initializers and mutators
+
+extension TextNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(TextNode.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(
+    ) -> TextNode {
+        return TextNode(
+        )
+    }
+
+    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: - Helper functions for creating encoders and decoders
 
 func newJSONDecoder() -> JSONDecoder {
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..f937b7d 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
@@ -61,6 +61,7 @@ enum Enum: String, Codable {
     case andEq = "and_eq"
     case any = "any"
     case enumAny = "Any"
+    case arrayNode = "ArrayNode"
     case array = "array"
     case enumAs = "as"
     case asm = "asm"
@@ -80,6 +81,7 @@ enum Enum: String, Codable {
     case enumBOOL = "BOOL"
     case enumBool = "bool"
     case boolean = "boolean"
+    case booleanNode = "BooleanNode"
     case enumBreak = "break"
     case bycopy = "bycopy"
     case byref = "byref"
@@ -123,6 +125,7 @@ enum Enum: String, Codable {
     case debugger = "debugger"
     case decimal = "decimal"
     case declare = "declare"
+    case deserializationFeature = "DeserializationFeature"
     case decltype = "decltype"
     case decodeString = "decode_string"
     case decoder = "Decoder"
@@ -139,6 +142,7 @@ enum Enum: String, Codable {
     case enumDidSet = "didSet"
     case enumDo = "do"
     case double = "double"
+    case doubleNode = "DoubleNode"
     case enumDynamic = "dynamic"
     case dynamicCast = "dynamic_cast"
     case elif = "elif"
@@ -197,6 +201,7 @@ enum Enum: String, Codable {
     case enumInout = "inout"
     case instanceof = "instanceof"
     case int = "int"
+    case intNode = "IntNode"
     case interface = "interface"
     case enumInternal = "internal"
     case isoDateTimeOffsetConverter = "IsoDateTimeOffsetConverter"
@@ -226,6 +231,7 @@ enum Enum: String, Codable {
     case enumLeft = "left"
     case enumLet = "let"
     case list = "list"
+    case longNode = "LongNode"
     case locale = "Locale"
     case lock = "lock"
     case long = "long"
@@ -240,6 +246,7 @@ enum Enum: String, Codable {
     case new = "new"
     case newtonsoft = "newtonsoft"
     case enumNil = "nil"
+    case nullNode = "NullNode"
     case no = "NO"
     case noexcept = "noexcept"
     case nonatomic = "nonatomic"
@@ -258,6 +265,7 @@ enum Enum: String, Codable {
     case nullptr = "nullptr"
     case number = "number"
     case object = "object"
+    case objectNode = "ObjectNode"
     case objectMapper = "ObjectMapper"
     case of = "of"
     case oneway = "oneway"
@@ -310,6 +318,7 @@ enum Enum: String, Codable {
     case purpleSelf = "self"
     case sendable = "Sendable"
     case serialize = "serialize"
+    case serializationFeature = "SerializationFeature"
     case serializerProvider = "SerializerProvider"
     case enumSet = "set"
     case short = "short"
@@ -335,6 +344,7 @@ enum Enum: String, Codable {
     case template = "template"
     case then = "then"
     case this = "this"
+    case textNode = "TextNode"
     case threadLocal = "thread_local"
     case enumThrow = "throw"
     case enumThrows = "throws"
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..c78da41 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
@@ -19,6 +19,7 @@ struct TopLevel: Codable {
     let topLevelAny: UnionAnyUnion?
     let any: UnionAny?
     let array: UnionArray?
+    let arrayNode: UnionArrayNode?
     let topLevelAs: UnionAs?
     let asm: UnionASM?
     let assert: UnionAssert?
@@ -37,6 +38,7 @@ struct TopLevel: Codable {
     let bool: UnionBOOL?
     let purpleBool: UnionBoolUnion?
     let boolean: UnionBoolean?
+    let booleanNode: UnionBooleanNode?
     let topLevelBreak: UnionBreak?
     let bycopy: UnionBycopy?
     let byref: UnionByref?
@@ -91,11 +93,13 @@ struct TopLevel: Codable {
     let del: UnionDel?
     let delegate: UnionDelegate?
     let delete: UnionDelete?
+    let deserializationFeature: UnionDeserializationFeature?
     let dict: UnionDict?
     let dictionary: UnionDictionary?
     let topLevelDidSet: UnionDidSet?
     let topLevelDo: UnionDo?
     let double: UnionDouble?
+    let doubleNode: UnionDoubleNode?
     let dummy: Double?
     let topLevelDynamic: UnionDynamic?
     let dynamicCast: UnionDynamicCast?
@@ -157,6 +161,7 @@ struct TopLevel: Codable {
     let int: UnionInt?
     let interface: UnionInterface?
     let topLevelInternal: UnionInternal?
+    let intNode: UnionIntNode?
     let topLevelIs: UnionIs?
     let isoDateTimeOffsetConverter: UnionISODateTimeOffsetConverter?
     let iterable: UnionIterable?
@@ -187,6 +192,7 @@ struct TopLevel: Codable {
     let locale: UnionLocale?
     let lock: UnionLock?
     let long: UnionLong?
+    let longNode: UnionLongNode?
     let map: UnionMap?
     let mapEntry: UnionMapEntry?
     let metadataPropertyHandling: UnionMetadataPropertyHandling?
@@ -213,10 +219,12 @@ struct TopLevel: Codable {
     let nsString: UnionNSString?
     let null: UnionNULL?
     let topLevelNull: UnionNull?
+    let nullNode: UnionNullNode?
     let nullptr: UnionNullptr?
     let number: UnionNumber?
     let object: UnionObject?
     let objectMapper: UnionObjectMapper?
+    let objectNode: UnionObjectNode?
     let of: UnionOf?
     let oneway: UnionOneway?
     let topLevelOpen: UnionOpen?
@@ -267,6 +275,7 @@ struct TopLevel: Codable {
     let topLevelSelf: UnionSelf?
     let purpleSelf: UnionSelfUnion?
     let sendable: UnionSendable?
+    let serializationFeature: UnionSerializationFeature?
     let serialize: UnionSerialize?
     let serializerProvider: UnionSerializerProvider?
     let topLevelSet: UnionSet?
@@ -291,6 +300,7 @@ struct TopLevel: Codable {
     let synchronized: UnionSynchronized?
     let system: UnionSystem?
     let template: UnionTemplate?
+    let textNode: UnionTextNode?
     let then: UnionThen?
     let this: UnionThis?
     let threadLocal: UnionThreadLocal?
@@ -354,6 +364,7 @@ struct TopLevel: Codable {
         case topLevelAny = "any"
         case any = "Any"
         case array = "array"
+        case arrayNode = "ArrayNode"
         case topLevelAs = "as"
         case asm = "asm"
         case assert = "assert"
@@ -372,6 +383,7 @@ struct TopLevel: Codable {
         case bool = "BOOL"
         case purpleBool = "bool"
         case boolean = "boolean"
+        case booleanNode = "BooleanNode"
         case topLevelBreak = "break"
         case bycopy = "bycopy"
         case byref = "byref"
@@ -426,11 +438,13 @@ struct TopLevel: Codable {
         case del = "del"
         case delegate = "delegate"
         case delete = "delete"
+        case deserializationFeature = "DeserializationFeature"
         case dict = "dict"
         case dictionary = "dictionary"
         case topLevelDidSet = "didSet"
         case topLevelDo = "do"
         case double = "double"
+        case doubleNode = "DoubleNode"
         case dummy = "dummy"
         case topLevelDynamic = "dynamic"
         case dynamicCast = "dynamic_cast"
@@ -492,6 +506,7 @@ struct TopLevel: Codable {
         case int = "int"
         case interface = "interface"
         case topLevelInternal = "internal"
+        case intNode = "IntNode"
         case topLevelIs = "is"
         case isoDateTimeOffsetConverter = "IsoDateTimeOffsetConverter"
         case iterable = "iterable"
@@ -522,6 +537,7 @@ struct TopLevel: Codable {
         case locale = "Locale"
         case lock = "lock"
         case long = "long"
+        case longNode = "LongNode"
         case map = "map"
         case mapEntry = "MapEntry"
         case metadataPropertyHandling = "metadata_property_handling"
@@ -548,10 +564,12 @@ struct TopLevel: Codable {
         case nsString = "NSString"
         case null = "NULL"
         case topLevelNull = "null"
+        case nullNode = "NullNode"
         case nullptr = "nullptr"
         case number = "number"
         case object = "object"
         case objectMapper = "ObjectMapper"
+        case objectNode = "ObjectNode"
         case of = "of"
         case oneway = "oneway"
         case topLevelOpen = "open"
@@ -602,6 +620,7 @@ struct TopLevel: Codable {
         case topLevelSelf = "Self"
         case purpleSelf = "self"
         case sendable = "Sendable"
+        case serializationFeature = "SerializationFeature"
         case serialize = "serialize"
         case serializerProvider = "SerializerProvider"
         case topLevelSet = "set"
@@ -626,6 +645,7 @@ struct TopLevel: Codable {
         case synchronized = "synchronized"
         case system = "system"
         case template = "template"
+        case textNode = "TextNode"
         case then = "then"
         case this = "this"
         case threadLocal = "thread_local"
@@ -709,6 +729,7 @@ extension TopLevel {
         topLevelAny: UnionAnyUnion?? = nil,
         any: UnionAny?? = nil,
         array: UnionArray?? = nil,
+        arrayNode: UnionArrayNode?? = nil,
         topLevelAs: UnionAs?? = nil,
         asm: UnionASM?? = nil,
         assert: UnionAssert?? = nil,
@@ -727,6 +748,7 @@ extension TopLevel {
         bool: UnionBOOL?? = nil,
         purpleBool: UnionBoolUnion?? = nil,
         boolean: UnionBoolean?? = nil,
+        booleanNode: UnionBooleanNode?? = nil,
         topLevelBreak: UnionBreak?? = nil,
         bycopy: UnionBycopy?? = nil,
         byref: UnionByref?? = nil,
@@ -781,11 +803,13 @@ extension TopLevel {
         del: UnionDel?? = nil,
         delegate: UnionDelegate?? = nil,
         delete: UnionDelete?? = nil,
+        deserializationFeature: UnionDeserializationFeature?? = nil,
         dict: UnionDict?? = nil,
         dictionary: UnionDictionary?? = nil,
         topLevelDidSet: UnionDidSet?? = nil,
         topLevelDo: UnionDo?? = nil,
         double: UnionDouble?? = nil,
+        doubleNode: UnionDoubleNode?? = nil,
         dummy: Double?? = nil,
         topLevelDynamic: UnionDynamic?? = nil,
         dynamicCast: UnionDynamicCast?? = nil,
@@ -847,6 +871,7 @@ extension TopLevel {
         int: UnionInt?? = nil,
         interface: UnionInterface?? = nil,
         topLevelInternal: UnionInternal?? = nil,
+        intNode: UnionIntNode?? = nil,
         topLevelIs: UnionIs?? = nil,
         isoDateTimeOffsetConverter: UnionISODateTimeOffsetConverter?? = nil,
         iterable: UnionIterable?? = nil,
@@ -877,6 +902,7 @@ extension TopLevel {
         locale: UnionLocale?? = nil,
         lock: UnionLock?? = nil,
         long: UnionLong?? = nil,
+        longNode: UnionLongNode?? = nil,
         map: UnionMap?? = nil,
         mapEntry: UnionMapEntry?? = nil,
         metadataPropertyHandling: UnionMetadataPropertyHandling?? = nil,
@@ -903,10 +929,12 @@ extension TopLevel {
         nsString: UnionNSString?? = nil,
         null: UnionNULL?? = nil,
         topLevelNull: UnionNull?? = nil,
+        nullNode: UnionNullNode?? = nil,
         nullptr: UnionNullptr?? = nil,
         number: UnionNumber?? = nil,
         object: UnionObject?? = nil,
         objectMapper: UnionObjectMapper?? = nil,
+        objectNode: UnionObjectNode?? = nil,
         of: UnionOf?? = nil,
         oneway: UnionOneway?? = nil,
         topLevelOpen: UnionOpen?? = nil,
@@ -957,6 +985,7 @@ extension TopLevel {
         topLevelSelf: UnionSelf?? = nil,
         purpleSelf: UnionSelfUnion?? = nil,
         sendable: UnionSendable?? = nil,
+        serializationFeature: UnionSerializationFeature?? = nil,
         serialize: UnionSerialize?? = nil,
         serializerProvider: UnionSerializerProvider?? = nil,
         topLevelSet: UnionSet?? = nil,
@@ -981,6 +1010,7 @@ extension TopLevel {
         synchronized: UnionSynchronized?? = nil,
         system: UnionSystem?? = nil,
         template: UnionTemplate?? = nil,
+        textNode: UnionTextNode?? = nil,
         then: UnionThen?? = nil,
         this: UnionThis?? = nil,
         threadLocal: UnionThreadLocal?? = nil,
@@ -1044,6 +1074,7 @@ extension TopLevel {
             topLevelAny: topLevelAny ?? self.topLevelAny,
             any: any ?? self.any,
             array: array ?? self.array,
+            arrayNode: arrayNode ?? self.arrayNode,
             topLevelAs: topLevelAs ?? self.topLevelAs,
             asm: asm ?? self.asm,
             assert: assert ?? self.assert,
@@ -1062,6 +1093,7 @@ extension TopLevel {
             bool: bool ?? self.bool,
             purpleBool: purpleBool ?? self.purpleBool,
             boolean: boolean ?? self.boolean,
+            booleanNode: booleanNode ?? self.booleanNode,
             topLevelBreak: topLevelBreak ?? self.topLevelBreak,
             bycopy: bycopy ?? self.bycopy,
             byref: byref ?? self.byref,
@@ -1116,11 +1148,13 @@ extension TopLevel {
             del: del ?? self.del,
             delegate: delegate ?? self.delegate,
             delete: delete ?? self.delete,
+            deserializationFeature: deserializationFeature ?? self.deserializationFeature,
             dict: dict ?? self.dict,
             dictionary: dictionary ?? self.dictionary,
             topLevelDidSet: topLevelDidSet ?? self.topLevelDidSet,
             topLevelDo: topLevelDo ?? self.topLevelDo,
             double: double ?? self.double,
+            doubleNode: doubleNode ?? self.doubleNode,
             dummy: dummy ?? self.dummy,
             topLevelDynamic: topLevelDynamic ?? self.topLevelDynamic,
             dynamicCast: dynamicCast ?? self.dynamicCast,
@@ -1182,6 +1216,7 @@ extension TopLevel {
             int: int ?? self.int,
             interface: interface ?? self.interface,
             topLevelInternal: topLevelInternal ?? self.topLevelInternal,
+            intNode: intNode ?? self.intNode,
             topLevelIs: topLevelIs ?? self.topLevelIs,
             isoDateTimeOffsetConverter: isoDateTimeOffsetConverter ?? self.isoDateTimeOffsetConverter,
             iterable: iterable ?? self.iterable,
@@ -1212,6 +1247,7 @@ extension TopLevel {
             locale: locale ?? self.locale,
             lock: lock ?? self.lock,
             long: long ?? self.long,
+            longNode: longNode ?? self.longNode,
             map: map ?? self.map,
             mapEntry: mapEntry ?? self.mapEntry,
             metadataPropertyHandling: metadataPropertyHandling ?? self.metadataPropertyHandling,
@@ -1238,10 +1274,12 @@ extension TopLevel {
             nsString: nsString ?? self.nsString,
             null: null ?? self.null,
             topLevelNull: topLevelNull ?? self.topLevelNull,
+            nullNode: nullNode ?? self.nullNode,
             nullptr: nullptr ?? self.nullptr,
             number: number ?? self.number,
             object: object ?? self.object,
             objectMapper: objectMapper ?? self.objectMapper,
+            objectNode: objectNode ?? self.objectNode,
             of: of ?? self.of,
             oneway: oneway ?? self.oneway,
             topLevelOpen: topLevelOpen ?? self.topLevelOpen,
@@ -1292,6 +1330,7 @@ extension TopLevel {
             topLevelSelf: topLevelSelf ?? self.topLevelSelf,
             purpleSelf: purpleSelf ?? self.purpleSelf,
             sendable: sendable ?? self.sendable,
+            serializationFeature: serializationFeature ?? self.serializationFeature,
             serialize: serialize ?? self.serialize,
             serializerProvider: serializerProvider ?? self.serializerProvider,
             topLevelSet: topLevelSet ?? self.topLevelSet,
@@ -1316,6 +1355,7 @@ extension TopLevel {
             synchronized: synchronized ?? self.synchronized,
             system: system ?? self.system,
             template: template ?? self.template,
+            textNode: textNode ?? self.textNode,
             then: then ?? self.then,
             this: this ?? self.this,
             threadLocal: threadLocal ?? self.threadLocal,
@@ -1874,6 +1914,77 @@ extension Array {
     }
 }
 
+enum UnionArrayNode: Codable {
+    case arrayNode(ArrayNode)
+    case double(Double)
+
+    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(ArrayNode.self) {
+            self = .arrayNode(x)
+            return
+        }
+        throw DecodingError.typeMismatch(UnionArrayNode.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for UnionArrayNode"))
+    }
+
+    func encode(to encoder: Encoder) throws {
+        var container = encoder.singleValueContainer()
+        switch self {
+        case .arrayNode(let x):
+            try container.encode(x)
+        case .double(let x):
+            try container.encode(x)
+        }
+    }
+}
+
+// MARK: - ArrayNode
+struct ArrayNode: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: ArrayNode convenience initializers and mutators
+
+extension ArrayNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(ArrayNode.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(
+    ) -> ArrayNode {
+        return ArrayNode(
+        )
+    }
+
+    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 UnionASM: Codable {
     case asm(ASM)
     case double(Double)
@@ -2797,6 +2908,77 @@ extension Boolean {
     }
 }
 
+enum UnionBooleanNode: Codable {
+    case booleanNode(BooleanNode)
+    case double(Double)
+
+    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(BooleanNode.self) {
+            self = .booleanNode(x)
+            return
+        }
+        throw DecodingError.typeMismatch(UnionBooleanNode.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for UnionBooleanNode"))
+    }
+
+    func encode(to encoder: Encoder) throws {
+        var container = encoder.singleValueContainer()
+        switch self {
+        case .booleanNode(let x):
+            try container.encode(x)
+        case .double(let x):
+            try container.encode(x)
+        }
+    }
+}
+
+// MARK: - BooleanNode
+struct BooleanNode: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: BooleanNode convenience initializers and mutators
+
+extension BooleanNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(BooleanNode.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(
+    ) -> BooleanNode {
+        return BooleanNode(
+        )
+    }
+
+    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 UnionBycopy: Codable {
     case bycopy(Bycopy)
     case double(Double)
@@ -5992,6 +6174,77 @@ extension Delete {
     }
 }
 
+enum UnionDeserializationFeature: Codable {
+    case deserializationFeature(DeserializationFeature)
+    case double(Double)
+
+    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(DeserializationFeature.self) {
+            self = .deserializationFeature(x)
+            return
+        }
+        throw DecodingError.typeMismatch(UnionDeserializationFeature.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for UnionDeserializationFeature"))
+    }
+
+    func encode(to encoder: Encoder) throws {
+        var container = encoder.singleValueContainer()
+        switch self {
+        case .deserializationFeature(let x):
+            try container.encode(x)
+        case .double(let x):
+            try container.encode(x)
+        }
+    }
+}
+
+// MARK: - DeserializationFeature
+struct DeserializationFeature: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: DeserializationFeature convenience initializers and mutators
+
+extension DeserializationFeature {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(DeserializationFeature.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(
+    ) -> DeserializationFeature {
+        return DeserializationFeature(
+        )
+    }
+
+    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 UnionDict: Codable {
     case dict(Dict)
     case double(Double)
@@ -6205,6 +6458,77 @@ extension DoubleClass {
     }
 }
 
+enum UnionDoubleNode: Codable {
+    case double(Double)
+    case doubleNode(DoubleNode)
+
+    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(DoubleNode.self) {
+            self = .doubleNode(x)
+            return
+        }
+        throw DecodingError.typeMismatch(UnionDoubleNode.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for UnionDoubleNode"))
+    }
+
+    func encode(to encoder: Encoder) throws {
+        var container = encoder.singleValueContainer()
+        switch self {
+        case .double(let x):
+            try container.encode(x)
+        case .doubleNode(let x):
+            try container.encode(x)
+        }
+    }
+}
+
+// MARK: - DoubleNode
+struct DoubleNode: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: DoubleNode convenience initializers and mutators
+
+extension DoubleNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(DoubleNode.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(
+    ) -> DoubleNode {
+        return DoubleNode(
+        )
+    }
+
+    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 UnionDynamicCast: Codable {
     case double(Double)
     case dynamicCast(DynamicCast)
@@ -9045,9 +9369,9 @@ extension IntClass {
     }
 }
 
-enum UnionInterface: Codable {
+enum UnionIntNode: Codable {
     case double(Double)
-    case interface(Interface)
+    case intNode(IntNode)
 
     init(from decoder: Decoder) throws {
         let container = try decoder.singleValueContainer()
@@ -9055,11 +9379,11 @@ enum UnionInterface: Codable {
             self = .double(x)
             return
         }
-        if let x = try? container.decode(Interface.self) {
-            self = .interface(x)
+        if let x = try? container.decode(IntNode.self) {
+            self = .intNode(x)
             return
         }
-        throw DecodingError.typeMismatch(UnionInterface.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for UnionInterface"))
+        throw DecodingError.typeMismatch(UnionIntNode.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for UnionIntNode"))
     }
 
     func encode(to encoder: Encoder) throws {
@@ -9067,14 +9391,14 @@ enum UnionInterface: Codable {
         switch self {
         case .double(let x):
             try container.encode(x)
-        case .interface(let x):
+        case .intNode(let x):
             try container.encode(x)
         }
     }
 }
 
-// MARK: - Interface
-struct Interface: Codable {
+// MARK: - IntNode
+struct IntNode: Codable {
     private enum K: String, CodingKey { case unused }
     init(from decoder: Decoder) throws {
         _ = try decoder.container(keyedBy: K.self)
@@ -9083,11 +9407,11 @@ struct Interface: Codable {
     }
 }
 
-// MARK: Interface convenience initializers and mutators
+// MARK: IntNode convenience initializers and mutators
 
-extension Interface {
+extension IntNode {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Interface.self, from: data)
+        self = try newJSONDecoder().decode(IntNode.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -9102,8 +9426,8 @@ extension Interface {
     }
 
     func with(
-    ) -> Interface {
-        return Interface(
+    ) -> IntNode {
+        return IntNode(
         )
     }
 
@@ -9116,9 +9440,9 @@ extension Interface {
     }
 }
 
-enum UnionISODateTimeOffsetConverter: Codable {
+enum UnionInterface: Codable {
     case double(Double)
-    case isoDateTimeOffsetConverter(ISODateTimeOffsetConverter)
+    case interface(Interface)
 
     init(from decoder: Decoder) throws {
         let container = try decoder.singleValueContainer()
@@ -9126,11 +9450,11 @@ enum UnionISODateTimeOffsetConverter: Codable {
             self = .double(x)
             return
         }
-        if let x = try? container.decode(ISODateTimeOffsetConverter.self) {
-            self = .isoDateTimeOffsetConverter(x)
+        if let x = try? container.decode(Interface.self) {
+            self = .interface(x)
             return
         }
-        throw DecodingError.typeMismatch(UnionISODateTimeOffsetConverter.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for UnionISODateTimeOffsetConverter"))
+        throw DecodingError.typeMismatch(UnionInterface.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for UnionInterface"))
     }
 
     func encode(to encoder: Encoder) throws {
@@ -9138,7 +9462,78 @@ enum UnionISODateTimeOffsetConverter: Codable {
         switch self {
         case .double(let x):
             try container.encode(x)
-        case .isoDateTimeOffsetConverter(let x):
+        case .interface(let x):
+            try container.encode(x)
+        }
+    }
+}
+
+// MARK: - Interface
+struct Interface: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: Interface convenience initializers and mutators
+
+extension Interface {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Interface.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(
+    ) -> Interface {
+        return Interface(
+        )
+    }
+
+    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 UnionISODateTimeOffsetConverter: Codable {
+    case double(Double)
+    case isoDateTimeOffsetConverter(ISODateTimeOffsetConverter)
+
+    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(ISODateTimeOffsetConverter.self) {
+            self = .isoDateTimeOffsetConverter(x)
+            return
+        }
+        throw DecodingError.typeMismatch(UnionISODateTimeOffsetConverter.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for UnionISODateTimeOffsetConverter"))
+    }
+
+    func encode(to encoder: Encoder) throws {
+        var container = encoder.singleValueContainer()
+        switch self {
+        case .double(let x):
+            try container.encode(x)
+        case .isoDateTimeOffsetConverter(let x):
             try container.encode(x)
         }
     }
@@ -10891,6 +11286,77 @@ extension Long {
     }
 }
 
+enum UnionLongNode: Codable {
+    case double(Double)
+    case longNode(LongNode)
+
+    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(LongNode.self) {
+            self = .longNode(x)
+            return
+        }
+        throw DecodingError.typeMismatch(UnionLongNode.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for UnionLongNode"))
+    }
+
+    func encode(to encoder: Encoder) throws {
+        var container = encoder.singleValueContainer()
+        switch self {
+        case .double(let x):
+            try container.encode(x)
+        case .longNode(let x):
+            try container.encode(x)
+        }
+    }
+}
+
+// MARK: - LongNode
+struct LongNode: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: LongNode convenience initializers and mutators
+
+extension LongNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(LongNode.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(
+    ) -> LongNode {
+        return LongNode(
+        )
+    }
+
+    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 UnionMap: Codable {
     case double(Double)
     case map(Map)
@@ -12382,6 +12848,77 @@ extension Null {
     }
 }
 
+enum UnionNullNode: Codable {
+    case double(Double)
+    case nullNode(NullNode)
+
+    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(NullNode.self) {
+            self = .nullNode(x)
+            return
+        }
+        throw DecodingError.typeMismatch(UnionNullNode.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for UnionNullNode"))
+    }
+
+    func encode(to encoder: Encoder) throws {
+        var container = encoder.singleValueContainer()
+        switch self {
+        case .double(let x):
+            try container.encode(x)
+        case .nullNode(let x):
+            try container.encode(x)
+        }
+    }
+}
+
+// MARK: - NullNode
+struct NullNode: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: NullNode convenience initializers and mutators
+
+extension NullNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(NullNode.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(
+    ) -> NullNode {
+        return NullNode(
+        )
+    }
+
+    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 UnionNullptr: Codable {
     case double(Double)
     case nullptr(Nullptr)
@@ -12666,6 +13203,77 @@ extension ObjectMapper {
     }
 }
 
+enum UnionObjectNode: Codable {
+    case double(Double)
+    case objectNode(ObjectNode)
+
+    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(ObjectNode.self) {
+            self = .objectNode(x)
+            return
+        }
+        throw DecodingError.typeMismatch(UnionObjectNode.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for UnionObjectNode"))
+    }
+
+    func encode(to encoder: Encoder) throws {
+        var container = encoder.singleValueContainer()
+        switch self {
+        case .double(let x):
+            try container.encode(x)
+        case .objectNode(let x):
+            try container.encode(x)
+        }
+    }
+}
+
+// MARK: - ObjectNode
+struct ObjectNode: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: ObjectNode convenience initializers and mutators
+
+extension ObjectNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(ObjectNode.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(
+    ) -> ObjectNode {
+        return ObjectNode(
+        )
+    }
+
+    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 UnionOf: Codable {
     case double(Double)
     case of(Of)
@@ -15364,6 +15972,77 @@ extension Sendable {
     }
 }
 
+enum UnionSerializationFeature: Codable {
+    case double(Double)
+    case serializationFeature(SerializationFeature)
+
+    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(SerializationFeature.self) {
+            self = .serializationFeature(x)
+            return
+        }
+        throw DecodingError.typeMismatch(UnionSerializationFeature.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for UnionSerializationFeature"))
+    }
+
+    func encode(to encoder: Encoder) throws {
+        var container = encoder.singleValueContainer()
+        switch self {
+        case .double(let x):
+            try container.encode(x)
+        case .serializationFeature(let x):
+            try container.encode(x)
+        }
+    }
+}
+
+// MARK: - SerializationFeature
+struct SerializationFeature: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: SerializationFeature convenience initializers and mutators
+
+extension SerializationFeature {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(SerializationFeature.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(
+    ) -> SerializationFeature {
+        return SerializationFeature(
+        )
+    }
+
+    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)
@@ -16642,6 +17321,77 @@ extension Template {
     }
 }
 
+enum UnionTextNode: Codable {
+    case double(Double)
+    case textNode(TextNode)
+
+    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(TextNode.self) {
+            self = .textNode(x)
+            return
+        }
+        throw DecodingError.typeMismatch(UnionTextNode.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for UnionTextNode"))
+    }
+
+    func encode(to encoder: Encoder) throws {
+        var container = encoder.singleValueContainer()
+        switch self {
+        case .double(let x):
+            try container.encode(x)
+        case .textNode(let x):
+            try container.encode(x)
+        }
+    }
+}
+
+// MARK: - TextNode
+struct TextNode: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: TextNode convenience initializers and mutators
+
+extension TextNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(TextNode.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(
+    ) -> TextNode {
+        return TextNode(
+        )
+    }
+
+    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 UnionThen: Codable {
     case double(Double)
     case then(Then)
diff --git a/base/schema-typescript/test/inputs/schema/direct-union.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/direct-union.schema/default/TopLevel.ts
index 7c30718..8d17d07 100644
--- a/base/schema-typescript/test/inputs/schema/direct-union.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/direct-union.schema/default/TopLevel.ts
@@ -8,7 +8,15 @@
 // match the expected interface, even if the JSON is valid.
 
 export interface TopLevel {
-    stuff: { [key: string]: Thing };
+    arrayNode?:   object;
+    booleanNode?: object;
+    doubleNode?:  object;
+    intNode?:     object;
+    longNode?:    object;
+    nullNode?:    object;
+    objectNode?:  object;
+    stuff:        { [key: string]: Thing };
+    textNode?:    object;
 }
 
 export interface Thing {
@@ -206,7 +214,15 @@ function r(name: string) {
 
 const typeMap: any = {
     "TopLevel": o([
+        { json: "arrayNode", js: "arrayNode", typ: u(undefined, m("any")) },
+        { json: "booleanNode", js: "booleanNode", typ: u(undefined, m("any")) },
+        { json: "doubleNode", js: "doubleNode", typ: u(undefined, m("any")) },
+        { json: "intNode", js: "intNode", typ: u(undefined, m("any")) },
+        { json: "longNode", js: "longNode", typ: u(undefined, m("any")) },
+        { json: "nullNode", js: "nullNode", typ: u(undefined, m("any")) },
+        { json: "objectNode", js: "objectNode", typ: u(undefined, m("any")) },
         { json: "stuff", js: "stuff", typ: m(r("Thing")) },
+        { json: "textNode", js: "textNode", typ: u(undefined, m("any")) },
     ], false),
     "Thing": o([
         { json: "optional", js: "optional", typ: u(undefined, u(a("any"), true, 3.14, i(0), m("any"), null, "")) },
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..83bed6d 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" | "ArrayNode" | "array" | "as" | "asm" | "assert" | "associatedtype" | "associativity" | "async" | "atomic" | "atomic_cancel" | "atomic_commit" | "atomic_noexcept" | "auto" | "await" | "base" | "bitand" | "bitor" | "BOOL" | "bool" | "boolean" | "BooleanNode" | "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" | "DeserializationFeature" | "decltype" | "decode_string" | "Decoder" | "DecodingError" | "def" | "default" | "defer" | "deinit" | "del" | "delegate" | "delete" | "dict" | "dictionary" | "didSet" | "do" | "double" | "DoubleNode" | "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" | "IntNode" | "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" | "LongNode" | "Locale" | "lock" | "long" | "map" | "MapEntry" | "metadata_property_handling" | "module" | "mutable" | "mutating" | "namespace" | "native" | "new" | "newtonsoft" | "nil" | "NullNode" | "NO" | "noexcept" | "nonatomic" | "none" | "None" | "nonlocal" | "nonmutating" | "NSObject" | "noSuchMethod" | "not" | "not_eq" | "NSError" | "NSString" | "NULL" | "null" | "nullptr" | "number" | "object" | "ObjectNode" | "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" | "SerializationFeature" | "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" | "TextNode" | "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";
 
 // Converts JSON strings to/from your types
 // and asserts the results of JSON.parse at runtime
@@ -216,6 +216,7 @@ const typeMap: any = {
         "and_eq",
         "any",
         "Any",
+        "ArrayNode",
         "array",
         "as",
         "asm",
@@ -235,6 +236,7 @@ const typeMap: any = {
         "BOOL",
         "bool",
         "boolean",
+        "BooleanNode",
         "break",
         "bycopy",
         "byref",
@@ -278,6 +280,7 @@ const typeMap: any = {
         "debugger",
         "decimal",
         "declare",
+        "DeserializationFeature",
         "decltype",
         "decode_string",
         "Decoder",
@@ -294,6 +297,7 @@ const typeMap: any = {
         "didSet",
         "do",
         "double",
+        "DoubleNode",
         "dynamic",
         "dynamic_cast",
         "elif",
@@ -352,6 +356,7 @@ const typeMap: any = {
         "inout",
         "instanceof",
         "int",
+        "IntNode",
         "interface",
         "internal",
         "IsoDateTimeOffsetConverter",
@@ -381,6 +386,7 @@ const typeMap: any = {
         "left",
         "let",
         "list",
+        "LongNode",
         "Locale",
         "lock",
         "long",
@@ -395,6 +401,7 @@ const typeMap: any = {
         "new",
         "newtonsoft",
         "nil",
+        "NullNode",
         "NO",
         "noexcept",
         "nonatomic",
@@ -413,6 +420,7 @@ const typeMap: any = {
         "nullptr",
         "number",
         "object",
+        "ObjectNode",
         "ObjectMapper",
         "of",
         "oneway",
@@ -465,6 +473,7 @@ const typeMap: any = {
         "self",
         "Sendable",
         "serialize",
+        "SerializationFeature",
         "SerializerProvider",
         "set",
         "short",
@@ -490,6 +499,7 @@ const typeMap: any = {
         "template",
         "then",
         "this",
+        "TextNode",
         "thread_local",
         "throw",
         "throws",
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..d78d251 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
@@ -20,6 +20,7 @@ export interface TopLevel {
     any?:                        UnionAnyUnion;
     Any?:                        UnionAny;
     array?:                      UnionArray;
+    ArrayNode?:                  UnionArrayNode;
     as?:                         UnionAs;
     asm?:                        UnionASM;
     assert?:                     UnionAssert;
@@ -38,6 +39,7 @@ export interface TopLevel {
     BOOL?:                       UnionBOOL;
     bool?:                       UnionBoolUnion;
     boolean?:                    UnionBoolean;
+    BooleanNode?:                UnionBooleanNode;
     break?:                      UnionBreak;
     bycopy?:                     UnionBycopy;
     byref?:                      UnionByref;
@@ -92,11 +94,13 @@ export interface TopLevel {
     del?:                        UnionDel;
     delegate?:                   UnionDelegate;
     delete?:                     UnionDelete;
+    DeserializationFeature?:     UnionDeserializationFeature;
     dict?:                       UnionDict;
     dictionary?:                 UnionDictionary;
     didSet?:                     UnionDidSet;
     do?:                         UnionDo;
     double?:                     UnionDouble;
+    DoubleNode?:                 UnionDoubleNode;
     dummy?:                      number;
     dynamic?:                    UnionDynamic;
     dynamic_cast?:               UnionDynamicCast;
@@ -158,6 +162,7 @@ export interface TopLevel {
     int?:                        UnionInt;
     interface?:                  UnionInterface;
     internal?:                   UnionInternal;
+    IntNode?:                    UnionIntNode;
     is?:                         UnionIs;
     IsoDateTimeOffsetConverter?: UnionISODateTimeOffsetConverter;
     iterable?:                   UnionIterable;
@@ -188,6 +193,7 @@ export interface TopLevel {
     Locale?:                     UnionLocale;
     lock?:                       UnionLock;
     long?:                       UnionLong;
+    LongNode?:                   UnionLongNode;
     map?:                        UnionMap;
     MapEntry?:                   UnionMapEntry;
     metadata_property_handling?: UnionMetadataPropertyHandling;
@@ -214,10 +220,12 @@ export interface TopLevel {
     NSString?:                   UnionNSString;
     NULL?:                       UnionNULL;
     null?:                       UnionNull;
+    NullNode?:                   UnionNullNode;
     nullptr?:                    UnionNullptr;
     number?:                     UnionNumber;
     object?:                     UnionObject;
     ObjectMapper?:               UnionObjectMapper;
+    ObjectNode?:                 UnionObjectNode;
     of?:                         UnionOf;
     oneway?:                     UnionOneway;
     open?:                       UnionOpen;
@@ -268,6 +276,7 @@ export interface TopLevel {
     Self?:                       UnionSelf;
     self?:                       UnionSelfUnion;
     Sendable?:                   UnionSendable;
+    SerializationFeature?:       UnionSerializationFeature;
     serialize?:                  UnionSerialize;
     SerializerProvider?:         UnionSerializerProvider;
     set?:                        UnionSet;
@@ -292,6 +301,7 @@ export interface TopLevel {
     synchronized?:               UnionSynchronized;
     system?:                     UnionSystem;
     template?:                   UnionTemplate;
+    TextNode?:                   UnionTextNode;
     then?:                       UnionThen;
     this?:                       UnionThis;
     thread_local?:               UnionThreadLocal;
@@ -346,8 +356,12 @@ export interface TopLevel {
 
 export type UnionAny = object | number;
 
+export type UnionArrayNode = object | number;
+
 export type UnionBOOL = object | number;
 
+export type UnionBooleanNode = object | number;
+
 export type UnionCalendar = object | number;
 
 export type UnionClass = object | number;
@@ -374,6 +388,10 @@ export type UnionDecoder = object | number;
 
 export type UnionDecodingError = object | number;
 
+export type UnionDeserializationFeature = object | number;
+
+export type UnionDoubleNode = object | number;
+
 export type UnionEncoder = object | number;
 
 export type UnionEnumValues = object | number;
@@ -390,6 +408,8 @@ export type UnionHasher = object | number;
 
 export type UnionIMP = object | number;
 
+export type UnionIntNode = object | number;
+
 export type UnionISODateTimeOffsetConverter = object | number;
 
 export type UnionJSONAny = object | number;
@@ -416,6 +436,8 @@ export type UnionJSONTokenType = object | number;
 
 export type UnionLocale = object | number;
 
+export type UnionLongNode = object | number;
+
 export type UnionMapEntry = object | number;
 
 export type UnionNO = object | number;
@@ -430,8 +452,12 @@ export type UnionNULL = object | number;
 
 export type UnionNone = object | number;
 
+export type UnionNullNode = object | number;
+
 export type UnionObjectMapper = object | number;
 
+export type UnionObjectNode = object | number;
+
 export type UnionProtocol = object | number;
 
 export type UnionRegExp = object | number;
@@ -442,6 +468,8 @@ export type UnionSelf = object | number;
 
 export type UnionSendable = object | number;
 
+export type UnionSerializationFeature = object | number;
+
 export type UnionSerializerProvider = object | number;
 
 export type UnionSimpleModule = object | number;
@@ -452,6 +480,8 @@ export type UnionStdDeserializer = object | number;
 
 export type UnionStdSerializer = object | number;
 
+export type UnionTextNode = object | number;
+
 export type UnionTimeOnly = object | number;
 
 export type UnionTimeOnlyConverter = object | number;
@@ -1208,6 +1238,7 @@ const typeMap: any = {
         { json: "any", js: "any", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "Any", js: "Any", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "array", js: "array", typ: u(undefined, u(m("any"), 3.14)) },
+        { json: "ArrayNode", js: "ArrayNode", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "as", js: "as", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "asm", js: "asm", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "assert", js: "assert", typ: u(undefined, u(m("any"), 3.14)) },
@@ -1226,6 +1257,7 @@ const typeMap: any = {
         { json: "BOOL", js: "BOOL", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "bool", js: "bool", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "boolean", js: "boolean", typ: u(undefined, u(m("any"), 3.14)) },
+        { json: "BooleanNode", js: "BooleanNode", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "break", js: "break", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "bycopy", js: "bycopy", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "byref", js: "byref", typ: u(undefined, u(m("any"), 3.14)) },
@@ -1280,11 +1312,13 @@ const typeMap: any = {
         { json: "del", js: "del", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "delegate", js: "delegate", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "delete", js: "delete", typ: u(undefined, u(m("any"), 3.14)) },
+        { json: "DeserializationFeature", js: "DeserializationFeature", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "dict", js: "dict", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "dictionary", js: "dictionary", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "didSet", js: "didSet", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "do", js: "do", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "double", js: "double", typ: u(undefined, u(m("any"), 3.14)) },
+        { json: "DoubleNode", js: "DoubleNode", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "dummy", js: "dummy", typ: u(undefined, 3.14) },
         { json: "dynamic", js: "dynamic", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "dynamic_cast", js: "dynamic_cast", typ: u(undefined, u(m("any"), 3.14)) },
@@ -1346,6 +1380,7 @@ const typeMap: any = {
         { json: "int", js: "int", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "interface", js: "interface", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "internal", js: "internal", typ: u(undefined, u(m("any"), 3.14)) },
+        { json: "IntNode", js: "IntNode", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "is", js: "is", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "IsoDateTimeOffsetConverter", js: "IsoDateTimeOffsetConverter", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "iterable", js: "iterable", typ: u(undefined, u(m("any"), 3.14)) },
@@ -1376,6 +1411,7 @@ const typeMap: any = {
         { json: "Locale", js: "Locale", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "lock", js: "lock", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "long", js: "long", typ: u(undefined, u(m("any"), 3.14)) },
+        { json: "LongNode", js: "LongNode", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "map", js: "map", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "MapEntry", js: "MapEntry", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "metadata_property_handling", js: "metadata_property_handling", typ: u(undefined, u(m("any"), 3.14)) },
@@ -1402,10 +1438,12 @@ const typeMap: any = {
         { json: "NSString", js: "NSString", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "NULL", js: "NULL", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "null", js: "null", typ: u(undefined, u(m("any"), 3.14)) },
+        { json: "NullNode", js: "NullNode", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "nullptr", js: "nullptr", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "number", js: "number", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "object", js: "object", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "ObjectMapper", js: "ObjectMapper", typ: u(undefined, u(m("any"), 3.14)) },
+        { json: "ObjectNode", js: "ObjectNode", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "of", js: "of", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "oneway", js: "oneway", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "open", js: "open", typ: u(undefined, u(m("any"), 3.14)) },
@@ -1456,6 +1494,7 @@ 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: "SerializationFeature", js: "SerializationFeature", 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: "set", js: "set", typ: u(undefined, u(m("any"), 3.14)) },
@@ -1480,6 +1519,7 @@ const typeMap: any = {
         { json: "synchronized", js: "synchronized", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "system", js: "system", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "template", js: "template", typ: u(undefined, u(m("any"), 3.14)) },
+        { json: "TextNode", js: "TextNode", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "then", js: "then", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "this", js: "this", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "thread_local", js: "thread_local", typ: u(undefined, u(m("any"), 3.14)) },
diff --git a/base/schema-typescript-effect-schema/test/inputs/schema/direct-union.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/schema/direct-union.schema/default/TopLevel.ts
index ba1b7e6..a5ab4d9 100644
--- a/base/schema-typescript-effect-schema/test/inputs/schema/direct-union.schema/default/TopLevel.ts
+++ b/head/schema-typescript-effect-schema/test/inputs/schema/direct-union.schema/default/TopLevel.ts
@@ -1,11 +1,43 @@
 import * as S from "effect/Schema";
 
 
+export class TextNode extends S.Class<TextNode>("TextNode")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
 export class Thing extends S.Class<Thing>("Thing")({
     "optional": S.optional(S.Union(S.Array(S.Any), S.Boolean, S.Number, S.Int, S.Record({ key: S.String, value: S.Any}), S.String, S.Null)),
     "required": S.Union(S.Array(S.Any), S.Boolean, S.Number, S.Int, S.Record({ key: S.String, value: S.Any}), S.String, S.Null),
 }) {}
 
+export class ObjectNode extends S.Class<ObjectNode>("ObjectNode")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
+export class NullNode extends S.Class<NullNode>("NullNode")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
+export class LongNode extends S.Class<LongNode>("LongNode")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
+export class IntNode extends S.Class<IntNode>("IntNode")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
+export class DoubleNode extends S.Class<DoubleNode>("DoubleNode")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
+export class BooleanNode extends S.Class<BooleanNode>("BooleanNode")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
+export class ArrayNode extends S.Class<ArrayNode>("ArrayNode")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
+    "arrayNode": S.optional(ArrayNode),
+    "booleanNode": S.optional(BooleanNode),
+    "doubleNode": S.optional(DoubleNode),
+    "intNode": S.optional(IntNode),
+    "longNode": S.optional(LongNode),
+    "nullNode": S.optional(NullNode),
+    "objectNode": S.optional(ObjectNode),
     "stuff": S.Record({ key: S.String, value: Thing}),
+    "textNode": S.optional(TextNode),
 }) {}
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..70c2b63 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
@@ -13,6 +13,7 @@ export const Enum = S.Literal(
     "and_eq",
     "any",
     "Any",
+    "ArrayNode",
     "array",
     "as",
     "asm",
@@ -32,6 +33,7 @@ export const Enum = S.Literal(
     "BOOL",
     "bool",
     "boolean",
+    "BooleanNode",
     "break",
     "bycopy",
     "byref",
@@ -75,6 +77,7 @@ export const Enum = S.Literal(
     "debugger",
     "decimal",
     "declare",
+    "DeserializationFeature",
     "decltype",
     "decode_string",
     "Decoder",
@@ -91,6 +94,7 @@ export const Enum = S.Literal(
     "didSet",
     "do",
     "double",
+    "DoubleNode",
     "dynamic",
     "dynamic_cast",
     "elif",
@@ -149,6 +153,7 @@ export const Enum = S.Literal(
     "inout",
     "instanceof",
     "int",
+    "IntNode",
     "interface",
     "internal",
     "IsoDateTimeOffsetConverter",
@@ -178,6 +183,7 @@ export const Enum = S.Literal(
     "left",
     "let",
     "list",
+    "LongNode",
     "Locale",
     "lock",
     "long",
@@ -192,6 +198,7 @@ export const Enum = S.Literal(
     "new",
     "newtonsoft",
     "nil",
+    "NullNode",
     "NO",
     "noexcept",
     "nonatomic",
@@ -210,6 +217,7 @@ export const Enum = S.Literal(
     "nullptr",
     "number",
     "object",
+    "ObjectNode",
     "ObjectMapper",
     "of",
     "oneway",
@@ -262,6 +270,7 @@ export const Enum = S.Literal(
     "self",
     "Sendable",
     "serialize",
+    "SerializationFeature",
     "SerializerProvider",
     "set",
     "short",
@@ -287,6 +296,7 @@ export const Enum = S.Literal(
     "template",
     "then",
     "this",
+    "TextNode",
     "thread_local",
     "throw",
     "throws",
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..a87d582 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
@@ -172,6 +172,9 @@ export class This extends S.Class<This>("This")(S.Struct({}).pipe(S.filter(value
 export class Then extends S.Class<Then>("Then")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
+export class TextNode extends S.Class<TextNode>("TextNode")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
 export class Template extends S.Class<Template>("Template")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
@@ -244,6 +247,9 @@ 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 SerializationFeature extends S.Class<SerializationFeature>("SerializationFeature")(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)))
 ) {}
 
@@ -391,6 +397,9 @@ export class Oneway extends S.Class<Oneway>("Oneway")(S.Struct({}).pipe(S.filter
 export class Of extends S.Class<Of>("Of")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
+export class ObjectNode extends S.Class<ObjectNode>("ObjectNode")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
 export class ObjectMapper extends S.Class<ObjectMapper>("ObjectMapper")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
@@ -403,6 +412,9 @@ export class Number extends S.Class<Number>("Number")(S.Struct({}).pipe(S.filter
 export class Nullptr extends S.Class<Nullptr>("Nullptr")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
+export class NullNode extends S.Class<NullNode>("NullNode")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
 export class Null extends S.Class<Null>("Null")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
@@ -475,6 +487,9 @@ export class MapEntry extends S.Class<MapEntry>("MapEntry")(S.Struct({}).pipe(S.
 export class Map extends S.Class<Map>("Map")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
+export class LongNode extends S.Class<LongNode>("LongNode")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
 export class Long extends S.Class<Long>("Long")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
@@ -571,6 +586,9 @@ export class Internal extends S.Class<Internal>("Internal")(S.Struct({}).pipe(S.
 export class Interface extends S.Class<Interface>("Interface")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
+export class IntNode extends S.Class<IntNode>("IntNode")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
 export class Int extends S.Class<Int>("Int")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
@@ -748,6 +766,9 @@ export class DynamicCast extends S.Class<DynamicCast>("DynamicCast")(S.Struct({}
 export class Dynamic extends S.Class<Dynamic>("Dynamic")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
+export class DoubleNode extends S.Class<DoubleNode>("DoubleNode")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
 export class Double extends S.Class<Double>("Double")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
@@ -763,6 +784,9 @@ export class Dictionary extends S.Class<Dictionary>("Dictionary")(S.Struct({}).p
 export class Dict extends S.Class<Dict>("Dict")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
+export class DeserializationFeature extends S.Class<DeserializationFeature>("DeserializationFeature")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
 export class Delete extends S.Class<Delete>("Delete")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
@@ -925,6 +949,9 @@ export class Bycopy extends S.Class<Bycopy>("Bycopy")(S.Struct({}).pipe(S.filter
 export class Break extends S.Class<Break>("Break")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
+export class BooleanNode extends S.Class<BooleanNode>("BooleanNode")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
 export class Boolean extends S.Class<Boolean>("Boolean")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
@@ -976,6 +1003,9 @@ export class Asm extends S.Class<Asm>("Asm")(S.Struct({}).pipe(S.filter(value =>
 export class As extends S.Class<As>("As")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
+export class ArrayNode extends S.Class<ArrayNode>("ArrayNode")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
 export class ArrayClass extends S.Class<ArrayClass>("ArrayClass")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
@@ -1010,6 +1040,7 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "any": S.optional(S.Union(S.Number, AnyClass)),
     "Any": S.optional(S.Union(S.Number, Any)),
     "array": S.optional(S.Union(S.Number, ArrayClass)),
+    "ArrayNode": S.optional(S.Union(S.Number, ArrayNode)),
     "as": S.optional(S.Union(S.Number, As)),
     "asm": S.optional(S.Union(S.Number, Asm)),
     "assert": S.optional(S.Union(S.Number, Assert)),
@@ -1028,6 +1059,7 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "BOOL": S.optional(S.Union(S.Number, Bool)),
     "bool": S.optional(S.Union(S.Number, UnionBoolBool)),
     "boolean": S.optional(S.Union(S.Number, Boolean)),
+    "BooleanNode": S.optional(S.Union(S.Number, BooleanNode)),
     "break": S.optional(S.Union(S.Number, Break)),
     "bycopy": S.optional(S.Union(S.Number, Bycopy)),
     "byref": S.optional(S.Union(S.Number, Byref)),
@@ -1082,11 +1114,13 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "del": S.optional(S.Union(S.Number, Del)),
     "delegate": S.optional(S.Union(S.Number, Delegate)),
     "delete": S.optional(S.Union(S.Number, Delete)),
+    "DeserializationFeature": S.optional(S.Union(S.Number, DeserializationFeature)),
     "dict": S.optional(S.Union(S.Number, Dict)),
     "dictionary": S.optional(S.Union(S.Number, Dictionary)),
     "didSet": S.optional(S.Union(S.Number, DidSet)),
     "do": S.optional(S.Union(S.Number, Do)),
     "double": S.optional(S.Union(S.Number, Double)),
+    "DoubleNode": S.optional(S.Union(S.Number, DoubleNode)),
     "dummy": S.optional(S.Number),
     "dynamic": S.optional(S.Union(S.Number, Dynamic)),
     "dynamic_cast": S.optional(S.Union(S.Number, DynamicCast)),
@@ -1148,6 +1182,7 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "int": S.optional(S.Union(S.Number, Int)),
     "interface": S.optional(S.Union(S.Number, Interface)),
     "internal": S.optional(S.Union(S.Number, Internal)),
+    "IntNode": S.optional(S.Union(S.Number, IntNode)),
     "is": S.optional(S.Union(S.Number, Is)),
     "IsoDateTimeOffsetConverter": S.optional(S.Union(S.Number, IsoDateTimeOffsetConverter)),
     "iterable": S.optional(S.Union(S.Number, Iterable)),
@@ -1178,6 +1213,7 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "Locale": S.optional(S.Union(S.Number, Locale)),
     "lock": S.optional(S.Union(S.Number, Lock)),
     "long": S.optional(S.Union(S.Number, Long)),
+    "LongNode": S.optional(S.Union(S.Number, LongNode)),
     "map": S.optional(S.Union(S.Number, Map)),
     "MapEntry": S.optional(S.Union(S.Number, MapEntry)),
     "metadata_property_handling": S.optional(S.Union(S.Number, MetadataPropertyHandling)),
@@ -1204,10 +1240,12 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "NSString": S.optional(S.Union(S.Number, NsString)),
     "NULL": S.optional(S.Union(S.Number, Null)),
     "null": S.optional(S.Union(S.Number, NullClass)),
+    "NullNode": S.optional(S.Union(S.Number, NullNode)),
     "nullptr": S.optional(S.Union(S.Number, Nullptr)),
     "number": S.optional(S.Union(S.Number, Number)),
     "object": S.optional(S.Union(S.Number, ObjectClass)),
     "ObjectMapper": S.optional(S.Union(S.Number, ObjectMapper)),
+    "ObjectNode": S.optional(S.Union(S.Number, ObjectNode)),
     "of": S.optional(S.Union(S.Number, Of)),
     "oneway": S.optional(S.Union(S.Number, Oneway)),
     "open": S.optional(S.Union(S.Number, Open)),
@@ -1258,6 +1296,7 @@ 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)),
+    "SerializationFeature": S.optional(S.Union(S.Number, SerializationFeature)),
     "serialize": S.optional(S.Union(S.Number, Serialize)),
     "SerializerProvider": S.optional(S.Union(S.Number, SerializerProvider)),
     "set": S.optional(S.Union(S.Number, Set)),
@@ -1282,6 +1321,7 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "synchronized": S.optional(S.Union(S.Number, Synchronized)),
     "system": S.optional(S.Union(S.Number, System)),
     "template": S.optional(S.Union(S.Number, Template)),
+    "TextNode": S.optional(S.Union(S.Number, TextNode)),
     "then": S.optional(S.Union(S.Number, Then)),
     "this": S.optional(S.Union(S.Number, This)),
     "thread_local": S.optional(S.Union(S.Number, ThreadLocal)),
diff --git a/base/schema-typescript-zod/test/inputs/schema/direct-union.schema/default/TopLevel.ts b/head/schema-typescript-zod/test/inputs/schema/direct-union.schema/default/TopLevel.ts
index 6887a6e..c8f0763 100644
--- a/base/schema-typescript-zod/test/inputs/schema/direct-union.schema/default/TopLevel.ts
+++ b/head/schema-typescript-zod/test/inputs/schema/direct-union.schema/default/TopLevel.ts
@@ -1,13 +1,53 @@
 import * as z from "zod";
 
 
+export const ArrayNodeSchema = z.object({
+});
+export type ArrayNode = z.infer<typeof ArrayNodeSchema>;
+
+export const BooleanNodeSchema = z.object({
+});
+export type BooleanNode = z.infer<typeof BooleanNodeSchema>;
+
+export const DoubleNodeSchema = z.object({
+});
+export type DoubleNode = z.infer<typeof DoubleNodeSchema>;
+
+export const IntNodeSchema = z.object({
+});
+export type IntNode = z.infer<typeof IntNodeSchema>;
+
+export const LongNodeSchema = z.object({
+});
+export type LongNode = z.infer<typeof LongNodeSchema>;
+
+export const NullNodeSchema = z.object({
+});
+export type NullNode = z.infer<typeof NullNodeSchema>;
+
+export const ObjectNodeSchema = z.object({
+});
+export type ObjectNode = z.infer<typeof ObjectNodeSchema>;
+
 export const ThingSchema = z.object({
     "optional": z.union([z.null(), z.array(z.any()), z.boolean(), z.number(), z.number().int(), z.record(z.string(), z.any()), z.string()]).optional(),
     "required": z.union([z.null(), z.array(z.any()), z.boolean(), z.number(), z.number().int(), z.record(z.string(), z.any()), z.string()]),
 });
 export type Thing = z.infer<typeof ThingSchema>;
 
+export const TextNodeSchema = z.object({
+});
+export type TextNode = z.infer<typeof TextNodeSchema>;
+
 export const TopLevelSchema = z.object({
+    "arrayNode": ArrayNodeSchema.optional(),
+    "booleanNode": BooleanNodeSchema.optional(),
+    "doubleNode": DoubleNodeSchema.optional(),
+    "intNode": IntNodeSchema.optional(),
+    "longNode": LongNodeSchema.optional(),
+    "nullNode": NullNodeSchema.optional(),
+    "objectNode": ObjectNodeSchema.optional(),
     "stuff": z.record(z.string(), ThingSchema),
+    "textNode": TextNodeSchema.optional(),
 });
 export type TopLevel = z.infer<typeof TopLevelSchema>;
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..992355c 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
@@ -13,6 +13,7 @@ export const EnumSchema = z.enum([
     "and_eq",
     "any",
     "Any",
+    "ArrayNode",
     "array",
     "as",
     "asm",
@@ -32,6 +33,7 @@ export const EnumSchema = z.enum([
     "BOOL",
     "bool",
     "boolean",
+    "BooleanNode",
     "break",
     "bycopy",
     "byref",
@@ -75,6 +77,7 @@ export const EnumSchema = z.enum([
     "debugger",
     "decimal",
     "declare",
+    "DeserializationFeature",
     "decltype",
     "decode_string",
     "Decoder",
@@ -91,6 +94,7 @@ export const EnumSchema = z.enum([
     "didSet",
     "do",
     "double",
+    "DoubleNode",
     "dynamic",
     "dynamic_cast",
     "elif",
@@ -149,6 +153,7 @@ export const EnumSchema = z.enum([
     "inout",
     "instanceof",
     "int",
+    "IntNode",
     "interface",
     "internal",
     "IsoDateTimeOffsetConverter",
@@ -178,6 +183,7 @@ export const EnumSchema = z.enum([
     "left",
     "let",
     "list",
+    "LongNode",
     "Locale",
     "lock",
     "long",
@@ -192,6 +198,7 @@ export const EnumSchema = z.enum([
     "new",
     "newtonsoft",
     "nil",
+    "NullNode",
     "NO",
     "noexcept",
     "nonatomic",
@@ -210,6 +217,7 @@ export const EnumSchema = z.enum([
     "nullptr",
     "number",
     "object",
+    "ObjectNode",
     "ObjectMapper",
     "of",
     "oneway",
@@ -262,6 +270,7 @@ export const EnumSchema = z.enum([
     "self",
     "Sendable",
     "serialize",
+    "SerializationFeature",
     "SerializerProvider",
     "set",
     "short",
@@ -287,6 +296,7 @@ export const EnumSchema = z.enum([
     "template",
     "then",
     "this",
+    "TextNode",
     "thread_local",
     "throw",
     "throws",
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..a3a82c1 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
@@ -29,6 +29,10 @@ export const ArrayClassSchema = z.object({
 });
 export type ArrayClass = z.infer<typeof ArrayClassSchema>;
 
+export const ArrayNodeSchema = z.object({
+});
+export type ArrayNode = z.infer<typeof ArrayNodeSchema>;
+
 export const AsSchema = z.object({
 });
 export type As = z.infer<typeof AsSchema>;
@@ -97,6 +101,10 @@ export const BooleanSchema = z.object({
 });
 export type Boolean = z.infer<typeof BooleanSchema>;
 
+export const BooleanNodeSchema = z.object({
+});
+export type BooleanNode = z.infer<typeof BooleanNodeSchema>;
+
 export const BreakSchema = z.object({
 });
 export type Break = z.infer<typeof BreakSchema>;
@@ -313,6 +321,10 @@ export const DeleteSchema = z.object({
 });
 export type Delete = z.infer<typeof DeleteSchema>;
 
+export const DeserializationFeatureSchema = z.object({
+});
+export type DeserializationFeature = z.infer<typeof DeserializationFeatureSchema>;
+
 export const DictSchema = z.object({
 });
 export type Dict = z.infer<typeof DictSchema>;
@@ -333,6 +345,10 @@ export const DoubleSchema = z.object({
 });
 export type Double = z.infer<typeof DoubleSchema>;
 
+export const DoubleNodeSchema = z.object({
+});
+export type DoubleNode = z.infer<typeof DoubleNodeSchema>;
+
 export const DynamicSchema = z.object({
 });
 export type Dynamic = z.infer<typeof DynamicSchema>;
@@ -569,6 +585,10 @@ export const IntSchema = z.object({
 });
 export type Int = z.infer<typeof IntSchema>;
 
+export const IntNodeSchema = z.object({
+});
+export type IntNode = z.infer<typeof IntNodeSchema>;
+
 export const InterfaceSchema = z.object({
 });
 export type Interface = z.infer<typeof InterfaceSchema>;
@@ -697,6 +717,10 @@ export const LongSchema = z.object({
 });
 export type Long = z.infer<typeof LongSchema>;
 
+export const LongNodeSchema = z.object({
+});
+export type LongNode = z.infer<typeof LongNodeSchema>;
+
 export const MapSchema = z.object({
 });
 export type Map = z.infer<typeof MapSchema>;
@@ -793,6 +817,10 @@ export const NullSchema = z.object({
 });
 export type Null = z.infer<typeof NullSchema>;
 
+export const NullNodeSchema = z.object({
+});
+export type NullNode = z.infer<typeof NullNodeSchema>;
+
 export const NullptrSchema = z.object({
 });
 export type Nullptr = z.infer<typeof NullptrSchema>;
@@ -809,6 +837,10 @@ export const ObjectMapperSchema = z.object({
 });
 export type ObjectMapper = z.infer<typeof ObjectMapperSchema>;
 
+export const ObjectNodeSchema = z.object({
+});
+export type ObjectNode = z.infer<typeof ObjectNodeSchema>;
+
 export const OfSchema = z.object({
 });
 export type Of = z.infer<typeof OfSchema>;
@@ -1005,6 +1037,10 @@ export const SendableSchema = z.object({
 });
 export type Sendable = z.infer<typeof SendableSchema>;
 
+export const SerializationFeatureSchema = z.object({
+});
+export type SerializationFeature = z.infer<typeof SerializationFeatureSchema>;
+
 export const SerializeSchema = z.object({
 });
 export type Serialize = z.infer<typeof SerializeSchema>;
@@ -1101,6 +1137,10 @@ export const TemplateSchema = z.object({
 });
 export type Template = z.infer<typeof TemplateSchema>;
 
+export const TextNodeSchema = z.object({
+});
+export type TextNode = z.infer<typeof TextNodeSchema>;
+
 export const ThenSchema = z.object({
 });
 export type Then = z.infer<typeof ThenSchema>;
@@ -1342,6 +1382,7 @@ export const TopLevelSchema = z.preprocess(value => typeof value === "object" &&
     "any": z.union([AnyClassSchema, z.number()]).optional(),
     "Any": z.union([AnySchema, z.number()]).optional(),
     "array": z.union([ArrayClassSchema, z.number()]).optional(),
+    "ArrayNode": z.union([ArrayNodeSchema, z.number()]).optional(),
     "as": z.union([AsSchema, z.number()]).optional(),
     "asm": z.union([AsmSchema, z.number()]).optional(),
     "assert": z.union([AssertSchema, z.number()]).optional(),
@@ -1360,6 +1401,7 @@ export const TopLevelSchema = z.preprocess(value => typeof value === "object" &&
     "BOOL": z.union([BoolSchema, z.number()]).optional(),
     "bool": z.union([UnionBoolBoolSchema, z.number()]).optional(),
     "boolean": z.union([BooleanSchema, z.number()]).optional(),
+    "BooleanNode": z.union([BooleanNodeSchema, z.number()]).optional(),
     "break": z.union([BreakSchema, z.number()]).optional(),
     "bycopy": z.union([BycopySchema, z.number()]).optional(),
     "byref": z.union([ByrefSchema, z.number()]).optional(),
@@ -1414,11 +1456,13 @@ export const TopLevelSchema = z.preprocess(value => typeof value === "object" &&
     "del": z.union([DelSchema, z.number()]).optional(),
     "delegate": z.union([DelegateSchema, z.number()]).optional(),
     "delete": z.union([DeleteSchema, z.number()]).optional(),
+    "DeserializationFeature": z.union([DeserializationFeatureSchema, z.number()]).optional(),
     "dict": z.union([DictSchema, z.number()]).optional(),
     "dictionary": z.union([DictionarySchema, z.number()]).optional(),
     "didSet": z.union([DidSetSchema, z.number()]).optional(),
     "do": z.union([DoSchema, z.number()]).optional(),
     "double": z.union([DoubleSchema, z.number()]).optional(),
+    "DoubleNode": z.union([DoubleNodeSchema, z.number()]).optional(),
     "dummy": z.number().optional(),
     "dynamic": z.union([DynamicSchema, z.number()]).optional(),
     "dynamic_cast": z.union([DynamicCastSchema, z.number()]).optional(),
@@ -1480,6 +1524,7 @@ export const TopLevelSchema = z.preprocess(value => typeof value === "object" &&
     "int": z.union([IntSchema, z.number()]).optional(),
     "interface": z.union([InterfaceSchema, z.number()]).optional(),
     "internal": z.union([InternalSchema, z.number()]).optional(),
+    "IntNode": z.union([IntNodeSchema, z.number()]).optional(),
     "is": z.union([IsSchema, z.number()]).optional(),
     "IsoDateTimeOffsetConverter": z.union([IsoDateTimeOffsetConverterSchema, z.number()]).optional(),
     "iterable": z.union([IterableSchema, z.number()]).optional(),
@@ -1510,6 +1555,7 @@ export const TopLevelSchema = z.preprocess(value => typeof value === "object" &&
     "Locale": z.union([LocaleSchema, z.number()]).optional(),
     "lock": z.union([LockSchema, z.number()]).optional(),
     "long": z.union([LongSchema, z.number()]).optional(),
+    "LongNode": z.union([LongNodeSchema, z.number()]).optional(),
     "map": z.union([MapSchema, z.number()]).optional(),
     "MapEntry": z.union([MapEntrySchema, z.number()]).optional(),
     "metadata_property_handling": z.union([MetadataPropertyHandlingSchema, z.number()]).optional(),
@@ -1536,10 +1582,12 @@ export const TopLevelSchema = z.preprocess(value => typeof value === "object" &&
     "NSString": z.union([NsStringSchema, z.number()]).optional(),
     "NULL": z.union([NullSchema, z.number()]).optional(),
     "null": z.union([NullClassSchema, z.number()]).optional(),
+    "NullNode": z.union([NullNodeSchema, z.number()]).optional(),
     "nullptr": z.union([NullptrSchema, z.number()]).optional(),
     "number": z.union([NumberSchema, z.number()]).optional(),
     "object": z.union([ObjectClassSchema, z.number()]).optional(),
     "ObjectMapper": z.union([ObjectMapperSchema, z.number()]).optional(),
+    "ObjectNode": z.union([ObjectNodeSchema, z.number()]).optional(),
     "of": z.union([OfSchema, z.number()]).optional(),
     "oneway": z.union([OnewaySchema, z.number()]).optional(),
     "open": z.union([OpenSchema, z.number()]).optional(),
@@ -1590,6 +1638,7 @@ 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(),
+    "SerializationFeature": z.union([SerializationFeatureSchema, z.number()]).optional(),
     "serialize": z.union([SerializeSchema, z.number()]).optional(),
     "SerializerProvider": z.union([SerializerProviderSchema, z.number()]).optional(),
     "set": z.union([SetSchema, z.number()]).optional(),
@@ -1614,6 +1663,7 @@ export const TopLevelSchema = z.preprocess(value => typeof value === "object" &&
     "synchronized": z.union([SynchronizedSchema, z.number()]).optional(),
     "system": z.union([SystemSchema, z.number()]).optional(),
     "template": z.union([TemplateSchema, z.number()]).optional(),
+    "TextNode": z.union([TextNodeSchema, z.number()]).optional(),
     "then": z.union([ThenSchema, z.number()]).optional(),
     "this": z.union([ThisSchema, z.number()]).optional(),
     "thread_local": z.union([ThreadLocalSchema, 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..81d5787 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
@@ -82,6 +82,7 @@ struct Obj1: Codable {
     let andEq: AndEq
     let any: AnyClass
     let array: Array
+    let arrayNode: ArrayNode
     let asm: ASM
     let assert: Assert
     let async: Async
@@ -95,6 +96,7 @@ struct Obj1: Codable {
     let bitor: Bitor
     let bool: BOOLClass
     let boolean: Boolean
+    let booleanNode: BooleanNode
     let bycopy: Bycopy
     let byref: Byref
     let byte: Byte
@@ -121,8 +123,6 @@ struct Obj1: Codable {
     let constructor: Constructor
     let convert: Convert
     let converter: Converter
-    let cultureInfo: CultureInfo
-    let date: DateClass
     let dummy: Int
     let empty: Empty
     let imaginery: Imaginery
@@ -149,6 +149,7 @@ struct Obj1: Codable {
         case andEq = "and_eq"
         case any = "Any"
         case array = "array"
+        case arrayNode = "ArrayNode"
         case asm = "asm"
         case assert = "assert"
         case async = "async"
@@ -162,6 +163,7 @@ struct Obj1: Codable {
         case bitor = "bitor"
         case bool = "BOOL"
         case boolean = "boolean"
+        case booleanNode = "BooleanNode"
         case bycopy = "bycopy"
         case byref = "byref"
         case byte = "byte"
@@ -188,8 +190,6 @@ struct Obj1: Codable {
         case constructor = "constructor"
         case convert = "convert"
         case converter = "converter"
-        case cultureInfo = "CultureInfo"
-        case date = "date"
         case dummy = "dummy"
         case empty = "_"
         case imaginery = "_Imaginery"
@@ -236,6 +236,7 @@ extension Obj1 {
         andEq: AndEq? = nil,
         any: AnyClass? = nil,
         array: Array? = nil,
+        arrayNode: ArrayNode? = nil,
         asm: ASM? = nil,
         assert: Assert? = nil,
         async: Async? = nil,
@@ -249,6 +250,7 @@ extension Obj1 {
         bitor: Bitor? = nil,
         bool: BOOLClass? = nil,
         boolean: Boolean? = nil,
+        booleanNode: BooleanNode? = nil,
         bycopy: Bycopy? = nil,
         byref: Byref? = nil,
         byte: Byte? = nil,
@@ -275,8 +277,6 @@ extension Obj1 {
         constructor: Constructor? = nil,
         convert: Convert? = nil,
         converter: Converter? = nil,
-        cultureInfo: CultureInfo? = nil,
-        date: DateClass? = nil,
         dummy: Int? = nil,
         empty: Empty? = nil,
         imaginery: Imaginery? = nil,
@@ -303,6 +303,7 @@ extension Obj1 {
             andEq: andEq ?? self.andEq,
             any: any ?? self.any,
             array: array ?? self.array,
+            arrayNode: arrayNode ?? self.arrayNode,
             asm: asm ?? self.asm,
             assert: assert ?? self.assert,
             async: async ?? self.async,
@@ -316,6 +317,7 @@ extension Obj1 {
             bitor: bitor ?? self.bitor,
             bool: bool ?? self.bool,
             boolean: boolean ?? self.boolean,
+            booleanNode: booleanNode ?? self.booleanNode,
             bycopy: bycopy ?? self.bycopy,
             byref: byref ?? self.byref,
             byte: byte ?? self.byte,
@@ -342,8 +344,6 @@ extension Obj1 {
             constructor: constructor ?? self.constructor,
             convert: convert ?? self.convert,
             converter: converter ?? self.converter,
-            cultureInfo: cultureInfo ?? self.cultureInfo,
-            date: date ?? self.date,
             dummy: dummy ?? self.dummy,
             empty: empty ?? self.empty,
             imaginery: imaginery ?? self.imaginery,
@@ -681,6 +681,50 @@ extension Array {
     }
 }
 
+// MARK: - ArrayNode
+struct ArrayNode: Codable {
+    let arrayNode: Int
+
+    enum CodingKeys: String, CodingKey {
+        case arrayNode = "ArrayNode"
+    }
+}
+
+// MARK: ArrayNode convenience initializers and mutators
+
+extension ArrayNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(ArrayNode.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(
+        arrayNode: Int? = nil
+    ) -> ArrayNode {
+        return ArrayNode(
+            arrayNode: arrayNode ?? self.arrayNode
+        )
+    }
+
+    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: - ASM
 struct ASM: Codable {
     let asm: Int
@@ -1253,6 +1297,50 @@ extension Boolean {
     }
 }
 
+// MARK: - BooleanNode
+struct BooleanNode: Codable {
+    let booleanNode: Int
+
+    enum CodingKeys: String, CodingKey {
+        case booleanNode = "BooleanNode"
+    }
+}
+
+// MARK: BooleanNode convenience initializers and mutators
+
+extension BooleanNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(BooleanNode.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(
+        booleanNode: Int? = nil
+    ) -> BooleanNode {
+        return BooleanNode(
+            booleanNode: booleanNode ?? self.booleanNode
+        )
+    }
+
+    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: - Bycopy
 struct Bycopy: Codable {
     let bycopy: Int
@@ -2397,94 +2485,6 @@ extension Converter {
     }
 }
 
-// MARK: - CultureInfo
-struct CultureInfo: Codable {
-    let cultureInfo: Int
-
-    enum CodingKeys: String, CodingKey {
-        case cultureInfo = "CultureInfo"
-    }
-}
-
-// MARK: CultureInfo convenience initializers and mutators
-
-extension CultureInfo {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(CultureInfo.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(
-        cultureInfo: Int? = nil
-    ) -> CultureInfo {
-        return CultureInfo(
-            cultureInfo: cultureInfo ?? self.cultureInfo
-        )
-    }
-
-    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: - DateClass
-struct DateClass: Codable {
-    let date: Int
-
-    enum CodingKeys: String, CodingKey {
-        case date = "date"
-    }
-}
-
-// MARK: DateClass convenience initializers and mutators
-
-extension DateClass {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(DateClass.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(
-        date: Int? = nil
-    ) -> DateClass {
-        return DateClass(
-            date: date ?? self.date
-        )
-    }
-
-    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: - Empty
 struct Empty: Codable {
     let empty: Int
@@ -3191,6 +3191,8 @@ extension ClassClass {
 
 // MARK: - Obj2
 struct Obj2: Codable {
+    let cultureInfo: CultureInfo
+    let date: DateClass
     let dateFormatter: DateFormatterClass
     let dateOnly: DateOnly
     let dateOnlyConverter: DateOnlyConverter
@@ -3208,9 +3210,11 @@ struct Obj2: Codable {
     let del: Del
     let delegate: Delegate
     let delete: Delete
+    let deserializationFeature: DeserializationFeature
     let dict: Dict
     let dictionary: Dictionary
     let double: DoubleClass
+    let doubleNode: DoubleNode
     let dummy: Int
     let dynamicCast: DynamicCast
     let elif: Elif
@@ -3236,9 +3240,6 @@ struct Obj2: Codable {
     let from: From
     let fromJSON: FromJSON
     let function: Function
-    let global: Global
-    let go: Go
-    let goto: Goto
     let obj2Default: Default
     let obj2Defer: Defer
     let obj2Deinit: Deinit
@@ -3254,10 +3255,11 @@ struct Obj2: Codable {
     let obj2Final: Final
     let obj2For: For
     let obj2Func: Func
-    let obj2Get: Get
     let purpleFalse: FalseClass
 
     enum CodingKeys: String, CodingKey {
+        case cultureInfo = "CultureInfo"
+        case date = "date"
         case dateFormatter = "DateFormatter"
         case dateOnly = "DateOnly"
         case dateOnlyConverter = "DateOnlyConverter"
@@ -3275,9 +3277,11 @@ struct Obj2: Codable {
         case del = "del"
         case delegate = "delegate"
         case delete = "delete"
+        case deserializationFeature = "DeserializationFeature"
         case dict = "dict"
         case dictionary = "dictionary"
         case double = "double"
+        case doubleNode = "DoubleNode"
         case dummy = "dummy"
         case dynamicCast = "dynamic_cast"
         case elif = "elif"
@@ -3303,9 +3307,6 @@ struct Obj2: Codable {
         case from = "from"
         case fromJSON = "from_json"
         case function = "function"
-        case global = "global"
-        case go = "go"
-        case goto = "goto"
         case obj2Default = "default"
         case obj2Defer = "defer"
         case obj2Deinit = "deinit"
@@ -3321,7 +3322,6 @@ struct Obj2: Codable {
         case obj2Final = "final"
         case obj2For = "for"
         case obj2Func = "func"
-        case obj2Get = "get"
         case purpleFalse = "false"
     }
 }
@@ -3345,6 +3345,8 @@ extension Obj2 {
     }
 
     func with(
+        cultureInfo: CultureInfo? = nil,
+        date: DateClass? = nil,
         dateFormatter: DateFormatterClass? = nil,
         dateOnly: DateOnly? = nil,
         dateOnlyConverter: DateOnlyConverter? = nil,
@@ -3362,9 +3364,11 @@ extension Obj2 {
         del: Del? = nil,
         delegate: Delegate? = nil,
         delete: Delete? = nil,
+        deserializationFeature: DeserializationFeature? = nil,
         dict: Dict? = nil,
         dictionary: Dictionary? = nil,
         double: DoubleClass? = nil,
+        doubleNode: DoubleNode? = nil,
         dummy: Int? = nil,
         dynamicCast: DynamicCast? = nil,
         elif: Elif? = nil,
@@ -3390,9 +3394,6 @@ extension Obj2 {
         from: From? = nil,
         fromJSON: FromJSON? = nil,
         function: Function? = nil,
-        global: Global? = nil,
-        go: Go? = nil,
-        goto: Goto? = nil,
         obj2Default: Default? = nil,
         obj2Defer: Defer? = nil,
         obj2Deinit: Deinit? = nil,
@@ -3408,10 +3409,11 @@ extension Obj2 {
         obj2Final: Final? = nil,
         obj2For: For? = nil,
         obj2Func: Func? = nil,
-        obj2Get: Get? = nil,
         purpleFalse: FalseClass? = nil
     ) -> Obj2 {
         return Obj2(
+            cultureInfo: cultureInfo ?? self.cultureInfo,
+            date: date ?? self.date,
             dateFormatter: dateFormatter ?? self.dateFormatter,
             dateOnly: dateOnly ?? self.dateOnly,
             dateOnlyConverter: dateOnlyConverter ?? self.dateOnlyConverter,
@@ -3429,9 +3431,11 @@ extension Obj2 {
             del: del ?? self.del,
             delegate: delegate ?? self.delegate,
             delete: delete ?? self.delete,
+            deserializationFeature: deserializationFeature ?? self.deserializationFeature,
             dict: dict ?? self.dict,
             dictionary: dictionary ?? self.dictionary,
             double: double ?? self.double,
+            doubleNode: doubleNode ?? self.doubleNode,
             dummy: dummy ?? self.dummy,
             dynamicCast: dynamicCast ?? self.dynamicCast,
             elif: elif ?? self.elif,
@@ -3457,9 +3461,6 @@ extension Obj2 {
             from: from ?? self.from,
             fromJSON: fromJSON ?? self.fromJSON,
             function: function ?? self.function,
-            global: global ?? self.global,
-            go: go ?? self.go,
-            goto: goto ?? self.goto,
             obj2Default: obj2Default ?? self.obj2Default,
             obj2Defer: obj2Defer ?? self.obj2Defer,
             obj2Deinit: obj2Deinit ?? self.obj2Deinit,
@@ -3475,7 +3476,6 @@ extension Obj2 {
             obj2Final: obj2Final ?? self.obj2Final,
             obj2For: obj2For ?? self.obj2For,
             obj2Func: obj2Func ?? self.obj2Func,
-            obj2Get: obj2Get ?? self.obj2Get,
             purpleFalse: purpleFalse ?? self.purpleFalse
         )
     }
@@ -3489,20 +3489,20 @@ extension Obj2 {
     }
 }
 
-// MARK: - DateFormatterClass
-struct DateFormatterClass: Codable {
-    let dateFormatter: Int
+// MARK: - CultureInfo
+struct CultureInfo: Codable {
+    let cultureInfo: Int
 
     enum CodingKeys: String, CodingKey {
-        case dateFormatter = "DateFormatter"
+        case cultureInfo = "CultureInfo"
     }
 }
 
-// MARK: DateFormatterClass convenience initializers and mutators
+// MARK: CultureInfo convenience initializers and mutators
 
-extension DateFormatterClass {
+extension CultureInfo {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(DateFormatterClass.self, from: data)
+        self = try newJSONDecoder().decode(CultureInfo.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -3517,10 +3517,10 @@ extension DateFormatterClass {
     }
 
     func with(
-        dateFormatter: Int? = nil
-    ) -> DateFormatterClass {
-        return DateFormatterClass(
-            dateFormatter: dateFormatter ?? self.dateFormatter
+        cultureInfo: Int? = nil
+    ) -> CultureInfo {
+        return CultureInfo(
+            cultureInfo: cultureInfo ?? self.cultureInfo
         )
     }
 
@@ -3533,20 +3533,20 @@ extension DateFormatterClass {
     }
 }
 
-// MARK: - DateOnly
-struct DateOnly: Codable {
-    let dateOnly: Int
+// MARK: - DateClass
+struct DateClass: Codable {
+    let date: Int
 
     enum CodingKeys: String, CodingKey {
-        case dateOnly = "DateOnly"
+        case date = "date"
     }
 }
 
-// MARK: DateOnly convenience initializers and mutators
+// MARK: DateClass convenience initializers and mutators
 
-extension DateOnly {
+extension DateClass {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(DateOnly.self, from: data)
+        self = try newJSONDecoder().decode(DateClass.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -3561,10 +3561,10 @@ extension DateOnly {
     }
 
     func with(
-        dateOnly: Int? = nil
-    ) -> DateOnly {
-        return DateOnly(
-            dateOnly: dateOnly ?? self.dateOnly
+        date: Int? = nil
+    ) -> DateClass {
+        return DateClass(
+            date: date ?? self.date
         )
     }
 
@@ -3577,20 +3577,20 @@ extension DateOnly {
     }
 }
 
-// MARK: - DateOnlyConverter
-struct DateOnlyConverter: Codable {
-    let dateOnlyConverter: Int
+// MARK: - DateFormatterClass
+struct DateFormatterClass: Codable {
+    let dateFormatter: Int
 
     enum CodingKeys: String, CodingKey {
-        case dateOnlyConverter = "DateOnlyConverter"
+        case dateFormatter = "DateFormatter"
     }
 }
 
-// MARK: DateOnlyConverter convenience initializers and mutators
+// MARK: DateFormatterClass convenience initializers and mutators
 
-extension DateOnlyConverter {
+extension DateFormatterClass {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(DateOnlyConverter.self, from: data)
+        self = try newJSONDecoder().decode(DateFormatterClass.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -3605,10 +3605,10 @@ extension DateOnlyConverter {
     }
 
     func with(
-        dateOnlyConverter: Int? = nil
-    ) -> DateOnlyConverter {
-        return DateOnlyConverter(
-            dateOnlyConverter: dateOnlyConverter ?? self.dateOnlyConverter
+        dateFormatter: Int? = nil
+    ) -> DateFormatterClass {
+        return DateFormatterClass(
+            dateFormatter: dateFormatter ?? self.dateFormatter
         )
     }
 
@@ -3621,12 +3621,100 @@ extension DateOnlyConverter {
     }
 }
 
-// MARK: - DateParseHandling
-struct DateParseHandling: Codable {
-    let dateParseHandling: Int
+// MARK: - DateOnly
+struct DateOnly: Codable {
+    let dateOnly: Int
 
     enum CodingKeys: String, CodingKey {
-        case dateParseHandling = "date_parse_handling"
+        case dateOnly = "DateOnly"
+    }
+}
+
+// MARK: DateOnly convenience initializers and mutators
+
+extension DateOnly {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(DateOnly.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(
+        dateOnly: Int? = nil
+    ) -> DateOnly {
+        return DateOnly(
+            dateOnly: dateOnly ?? self.dateOnly
+        )
+    }
+
+    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: - DateOnlyConverter
+struct DateOnlyConverter: Codable {
+    let dateOnlyConverter: Int
+
+    enum CodingKeys: String, CodingKey {
+        case dateOnlyConverter = "DateOnlyConverter"
+    }
+}
+
+// MARK: DateOnlyConverter convenience initializers and mutators
+
+extension DateOnlyConverter {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(DateOnlyConverter.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(
+        dateOnlyConverter: Int? = nil
+    ) -> DateOnlyConverter {
+        return DateOnlyConverter(
+            dateOnlyConverter: dateOnlyConverter ?? self.dateOnlyConverter
+        )
+    }
+
+    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: - DateParseHandling
+struct DateParseHandling: Codable {
+    let dateParseHandling: Int
+
+    enum CodingKeys: String, CodingKey {
+        case dateParseHandling = "date_parse_handling"
     }
 }
 
@@ -4237,6 +4325,50 @@ extension Delete {
     }
 }
 
+// MARK: - DeserializationFeature
+struct DeserializationFeature: Codable {
+    let deserializationFeature: Int
+
+    enum CodingKeys: String, CodingKey {
+        case deserializationFeature = "DeserializationFeature"
+    }
+}
+
+// MARK: DeserializationFeature convenience initializers and mutators
+
+extension DeserializationFeature {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(DeserializationFeature.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(
+        deserializationFeature: Int? = nil
+    ) -> DeserializationFeature {
+        return DeserializationFeature(
+            deserializationFeature: deserializationFeature ?? self.deserializationFeature
+        )
+    }
+
+    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: - Dict
 struct Dict: Codable {
     let dict: Int
@@ -4369,6 +4501,50 @@ extension DoubleClass {
     }
 }
 
+// MARK: - DoubleNode
+struct DoubleNode: Codable {
+    let doubleNode: Int
+
+    enum CodingKeys: String, CodingKey {
+        case doubleNode = "DoubleNode"
+    }
+}
+
+// MARK: DoubleNode convenience initializers and mutators
+
+extension DoubleNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(DoubleNode.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(
+        doubleNode: Int? = nil
+    ) -> DoubleNode {
+        return DoubleNode(
+            doubleNode: doubleNode ?? self.doubleNode
+        )
+    }
+
+    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: - DynamicCast
 struct DynamicCast: Codable {
     let dynamicCast: Int
@@ -5430,20 +5606,20 @@ extension Function {
     }
 }
 
-// MARK: - Global
-struct Global: Codable {
-    let global: Int
+// MARK: - Default
+struct Default: Codable {
+    let defaultDefault: Int
 
     enum CodingKeys: String, CodingKey {
-        case global = "global"
+        case defaultDefault = "default"
     }
 }
 
-// MARK: Global convenience initializers and mutators
+// MARK: Default convenience initializers and mutators
 
-extension Global {
+extension Default {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Global.self, from: data)
+        self = try newJSONDecoder().decode(Default.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -5458,10 +5634,10 @@ extension Global {
     }
 
     func with(
-        global: Int? = nil
-    ) -> Global {
-        return Global(
-            global: global ?? self.global
+        defaultDefault: Int? = nil
+    ) -> Default {
+        return Default(
+            defaultDefault: defaultDefault ?? self.defaultDefault
         )
     }
 
@@ -5474,20 +5650,20 @@ extension Global {
     }
 }
 
-// MARK: - Go
-struct Go: Codable {
-    let go: Int
+// MARK: - Defer
+struct Defer: Codable {
+    let deferDefer: Int
 
     enum CodingKeys: String, CodingKey {
-        case go = "go"
+        case deferDefer = "defer"
     }
 }
 
-// MARK: Go convenience initializers and mutators
+// MARK: Defer convenience initializers and mutators
 
-extension Go {
+extension Defer {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Go.self, from: data)
+        self = try newJSONDecoder().decode(Defer.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -5502,10 +5678,10 @@ extension Go {
     }
 
     func with(
-        go: Int? = nil
-    ) -> Go {
-        return Go(
-            go: go ?? self.go
+        deferDefer: Int? = nil
+    ) -> Defer {
+        return Defer(
+            deferDefer: deferDefer ?? self.deferDefer
         )
     }
 
@@ -5518,20 +5694,20 @@ extension Go {
     }
 }
 
-// MARK: - Goto
-struct Goto: Codable {
-    let goto: Int
+// MARK: - Deinit
+struct Deinit: Codable {
+    let deinitDeinit: Int
 
     enum CodingKeys: String, CodingKey {
-        case goto = "goto"
+        case deinitDeinit = "deinit"
     }
 }
 
-// MARK: Goto convenience initializers and mutators
+// MARK: Deinit convenience initializers and mutators
 
-extension Goto {
+extension Deinit {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Goto.self, from: data)
+        self = try newJSONDecoder().decode(Deinit.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -5546,10 +5722,10 @@ extension Goto {
     }
 
     func with(
-        goto: Int? = nil
-    ) -> Goto {
-        return Goto(
-            goto: goto ?? self.goto
+        deinitDeinit: Int? = nil
+    ) -> Deinit {
+        return Deinit(
+            deinitDeinit: deinitDeinit ?? self.deinitDeinit
         )
     }
 
@@ -5562,20 +5738,20 @@ extension Goto {
     }
 }
 
-// MARK: - Default
-struct Default: Codable {
-    let defaultDefault: Int
+// MARK: - DidSet
+struct DidSet: Codable {
+    let didSetDidSet: Int
 
     enum CodingKeys: String, CodingKey {
-        case defaultDefault = "default"
+        case didSetDidSet = "didSet"
     }
 }
 
-// MARK: Default convenience initializers and mutators
+// MARK: DidSet convenience initializers and mutators
 
-extension Default {
+extension DidSet {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Default.self, from: data)
+        self = try newJSONDecoder().decode(DidSet.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -5590,10 +5766,10 @@ extension Default {
     }
 
     func with(
-        defaultDefault: Int? = nil
-    ) -> Default {
-        return Default(
-            defaultDefault: defaultDefault ?? self.defaultDefault
+        didSetDidSet: Int? = nil
+    ) -> DidSet {
+        return DidSet(
+            didSetDidSet: didSetDidSet ?? self.didSetDidSet
         )
     }
 
@@ -5606,152 +5782,20 @@ extension Default {
     }
 }
 
-// MARK: - Defer
-struct Defer: Codable {
-    let deferDefer: Int
+// MARK: - Do
+struct Do: Codable {
+    let doDo: Int
 
     enum CodingKeys: String, CodingKey {
-        case deferDefer = "defer"
+        case doDo = "do"
     }
 }
 
-// MARK: Defer convenience initializers and mutators
+// MARK: Do convenience initializers and mutators
 
-extension Defer {
+extension Do {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Defer.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(
-        deferDefer: Int? = nil
-    ) -> Defer {
-        return Defer(
-            deferDefer: deferDefer ?? self.deferDefer
-        )
-    }
-
-    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: - Deinit
-struct Deinit: Codable {
-    let deinitDeinit: Int
-
-    enum CodingKeys: String, CodingKey {
-        case deinitDeinit = "deinit"
-    }
-}
-
-// MARK: Deinit convenience initializers and mutators
-
-extension Deinit {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Deinit.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(
-        deinitDeinit: Int? = nil
-    ) -> Deinit {
-        return Deinit(
-            deinitDeinit: deinitDeinit ?? self.deinitDeinit
-        )
-    }
-
-    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: - DidSet
-struct DidSet: Codable {
-    let didSetDidSet: Int
-
-    enum CodingKeys: String, CodingKey {
-        case didSetDidSet = "didSet"
-    }
-}
-
-// MARK: DidSet convenience initializers and mutators
-
-extension DidSet {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(DidSet.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(
-        didSetDidSet: Int? = nil
-    ) -> DidSet {
-        return DidSet(
-            didSetDidSet: didSetDidSet ?? self.didSetDidSet
-        )
-    }
-
-    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: - Do
-struct Do: Codable {
-    let doDo: Int
-
-    enum CodingKeys: String, CodingKey {
-        case doDo = "do"
-    }
-}
-
-// MARK: Do convenience initializers and mutators
-
-extension Do {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Do.self, from: data)
+        self = try newJSONDecoder().decode(Do.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -6222,50 +6266,6 @@ extension Func {
     }
 }
 
-// MARK: - Get
-struct Get: Codable {
-    let getGet: Int
-
-    enum CodingKeys: String, CodingKey {
-        case getGet = "get"
-    }
-}
-
-// MARK: Get convenience initializers and mutators
-
-extension Get {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Get.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(
-        getGet: Int? = nil
-    ) -> Get {
-        return Get(
-            getGet: getGet ?? self.getGet
-        )
-    }
-
-    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: - FalseClass
 struct FalseClass: Codable {
     let falseFalse: Int
@@ -6313,6 +6313,9 @@ extension FalseClass {
 // MARK: - Obj3
 struct Obj3: Codable {
     let dummy: Int
+    let global: Global
+    let go: Go
+    let goto: Goto
     let hasOwnProperty: HasOwnProperty
     let hashCode: HashCode
     let hashable: HashableClass
@@ -6324,6 +6327,7 @@ struct Obj3: Codable {
     let inline: Inline
     let instanceof: Instanceof
     let int: IntClass
+    let intNode: IntNode
     let interface: Interface
     let isoDateTimeOffsetConverter: ISODateTimeOffsetConverter
     let iterable: Iterable
@@ -6350,17 +6354,14 @@ struct Obj3: Codable {
     let locale: LocaleClass
     let lock: Lock
     let long: Long
+    let longNode: LongNode
     let map: Map
     let mapEntry: MapEntry
     let metadataPropertyHandling: MetadataPropertyHandling
     let module: Module
     let mutable: Mutable
     let namespace: Namespace
-    let native: Native
-    let new: New
-    let newtonsoft: Newtonsoft
-    let no: No
-    let noexcept: Noexcept
+    let obj3Get: Get
     let obj3Guard: Guard
     let obj3If: If
     let obj3Import: Import
@@ -6376,10 +6377,12 @@ struct Obj3: Codable {
     let obj3Left: Left
     let obj3Let: Let
     let obj3Mutating: Mutating
-    let obj3Nil: Nil
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
+        case global = "global"
+        case go = "go"
+        case goto = "goto"
         case hasOwnProperty = "hasOwnProperty"
         case hashCode = "hashCode"
         case hashable = "Hashable"
@@ -6391,6 +6394,7 @@ struct Obj3: Codable {
         case inline = "inline"
         case instanceof = "instanceof"
         case int = "int"
+        case intNode = "IntNode"
         case interface = "interface"
         case isoDateTimeOffsetConverter = "IsoDateTimeOffsetConverter"
         case iterable = "iterable"
@@ -6417,17 +6421,14 @@ struct Obj3: Codable {
         case locale = "Locale"
         case lock = "lock"
         case long = "long"
+        case longNode = "LongNode"
         case map = "map"
         case mapEntry = "MapEntry"
         case metadataPropertyHandling = "metadata_property_handling"
         case module = "module"
         case mutable = "mutable"
         case namespace = "namespace"
-        case native = "native"
-        case new = "new"
-        case newtonsoft = "newtonsoft"
-        case no = "NO"
-        case noexcept = "noexcept"
+        case obj3Get = "get"
         case obj3Guard = "guard"
         case obj3If = "if"
         case obj3Import = "import"
@@ -6443,7 +6444,6 @@ struct Obj3: Codable {
         case obj3Left = "left"
         case obj3Let = "let"
         case obj3Mutating = "mutating"
-        case obj3Nil = "nil"
     }
 }
 
@@ -6467,6 +6467,9 @@ extension Obj3 {
 
     func with(
         dummy: Int? = nil,
+        global: Global? = nil,
+        go: Go? = nil,
+        goto: Goto? = nil,
         hasOwnProperty: HasOwnProperty? = nil,
         hashCode: HashCode? = nil,
         hashable: HashableClass? = nil,
@@ -6478,6 +6481,7 @@ extension Obj3 {
         inline: Inline? = nil,
         instanceof: Instanceof? = nil,
         int: IntClass? = nil,
+        intNode: IntNode? = nil,
         interface: Interface? = nil,
         isoDateTimeOffsetConverter: ISODateTimeOffsetConverter? = nil,
         iterable: Iterable? = nil,
@@ -6504,17 +6508,14 @@ extension Obj3 {
         locale: LocaleClass? = nil,
         lock: Lock? = nil,
         long: Long? = nil,
+        longNode: LongNode? = nil,
         map: Map? = nil,
         mapEntry: MapEntry? = nil,
         metadataPropertyHandling: MetadataPropertyHandling? = nil,
         module: Module? = nil,
         mutable: Mutable? = nil,
         namespace: Namespace? = nil,
-        native: Native? = nil,
-        new: New? = nil,
-        newtonsoft: Newtonsoft? = nil,
-        no: No? = nil,
-        noexcept: Noexcept? = nil,
+        obj3Get: Get? = nil,
         obj3Guard: Guard? = nil,
         obj3If: If? = nil,
         obj3Import: Import? = nil,
@@ -6529,11 +6530,13 @@ extension Obj3 {
         obj3Lazy: Lazy? = nil,
         obj3Left: Left? = nil,
         obj3Let: Let? = nil,
-        obj3Mutating: Mutating? = nil,
-        obj3Nil: Nil? = nil
+        obj3Mutating: Mutating? = nil
     ) -> Obj3 {
         return Obj3(
             dummy: dummy ?? self.dummy,
+            global: global ?? self.global,
+            go: go ?? self.go,
+            goto: goto ?? self.goto,
             hasOwnProperty: hasOwnProperty ?? self.hasOwnProperty,
             hashCode: hashCode ?? self.hashCode,
             hashable: hashable ?? self.hashable,
@@ -6545,6 +6548,7 @@ extension Obj3 {
             inline: inline ?? self.inline,
             instanceof: instanceof ?? self.instanceof,
             int: int ?? self.int,
+            intNode: intNode ?? self.intNode,
             interface: interface ?? self.interface,
             isoDateTimeOffsetConverter: isoDateTimeOffsetConverter ?? self.isoDateTimeOffsetConverter,
             iterable: iterable ?? self.iterable,
@@ -6571,17 +6575,14 @@ extension Obj3 {
             locale: locale ?? self.locale,
             lock: lock ?? self.lock,
             long: long ?? self.long,
+            longNode: longNode ?? self.longNode,
             map: map ?? self.map,
             mapEntry: mapEntry ?? self.mapEntry,
             metadataPropertyHandling: metadataPropertyHandling ?? self.metadataPropertyHandling,
             module: module ?? self.module,
             mutable: mutable ?? self.mutable,
             namespace: namespace ?? self.namespace,
-            native: native ?? self.native,
-            new: new ?? self.new,
-            newtonsoft: newtonsoft ?? self.newtonsoft,
-            no: no ?? self.no,
-            noexcept: noexcept ?? self.noexcept,
+            obj3Get: obj3Get ?? self.obj3Get,
             obj3Guard: obj3Guard ?? self.obj3Guard,
             obj3If: obj3If ?? self.obj3If,
             obj3Import: obj3Import ?? self.obj3Import,
@@ -6596,8 +6597,7 @@ extension Obj3 {
             obj3Lazy: obj3Lazy ?? self.obj3Lazy,
             obj3Left: obj3Left ?? self.obj3Left,
             obj3Let: obj3Let ?? self.obj3Let,
-            obj3Mutating: obj3Mutating ?? self.obj3Mutating,
-            obj3Nil: obj3Nil ?? self.obj3Nil
+            obj3Mutating: obj3Mutating ?? self.obj3Mutating
         )
     }
 
@@ -6610,20 +6610,20 @@ extension Obj3 {
     }
 }
 
-// MARK: - HasOwnProperty
-struct HasOwnProperty: Codable {
-    let hasOwnProperty: Int
+// MARK: - Global
+struct Global: Codable {
+    let global: Int
 
     enum CodingKeys: String, CodingKey {
-        case hasOwnProperty = "hasOwnProperty"
+        case global = "global"
     }
 }
 
-// MARK: HasOwnProperty convenience initializers and mutators
+// MARK: Global convenience initializers and mutators
 
-extension HasOwnProperty {
+extension Global {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(HasOwnProperty.self, from: data)
+        self = try newJSONDecoder().decode(Global.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -6638,10 +6638,10 @@ extension HasOwnProperty {
     }
 
     func with(
-        hasOwnProperty: Int? = nil
-    ) -> HasOwnProperty {
-        return HasOwnProperty(
-            hasOwnProperty: hasOwnProperty ?? self.hasOwnProperty
+        global: Int? = nil
+    ) -> Global {
+        return Global(
+            global: global ?? self.global
         )
     }
 
@@ -6654,20 +6654,20 @@ extension HasOwnProperty {
     }
 }
 
-// MARK: - HashCode
-struct HashCode: Codable {
-    let hashCode: Int
+// MARK: - Go
+struct Go: Codable {
+    let go: Int
 
     enum CodingKeys: String, CodingKey {
-        case hashCode = "hashCode"
+        case go = "go"
     }
 }
 
-// MARK: HashCode convenience initializers and mutators
+// MARK: Go convenience initializers and mutators
 
-extension HashCode {
+extension Go {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(HashCode.self, from: data)
+        self = try newJSONDecoder().decode(Go.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -6682,10 +6682,10 @@ extension HashCode {
     }
 
     func with(
-        hashCode: Int? = nil
-    ) -> HashCode {
-        return HashCode(
-            hashCode: hashCode ?? self.hashCode
+        go: Int? = nil
+    ) -> Go {
+        return Go(
+            go: go ?? self.go
         )
     }
 
@@ -6698,10 +6698,142 @@ extension HashCode {
     }
 }
 
-// MARK: - HashableClass
-struct HashableClass: Codable {
-    let hashable: Int
-
+// MARK: - Goto
+struct Goto: Codable {
+    let goto: Int
+
+    enum CodingKeys: String, CodingKey {
+        case goto = "goto"
+    }
+}
+
+// MARK: Goto convenience initializers and mutators
+
+extension Goto {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Goto.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(
+        goto: Int? = nil
+    ) -> Goto {
+        return Goto(
+            goto: goto ?? self.goto
+        )
+    }
+
+    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: - HasOwnProperty
+struct HasOwnProperty: Codable {
+    let hasOwnProperty: Int
+
+    enum CodingKeys: String, CodingKey {
+        case hasOwnProperty = "hasOwnProperty"
+    }
+}
+
+// MARK: HasOwnProperty convenience initializers and mutators
+
+extension HasOwnProperty {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(HasOwnProperty.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(
+        hasOwnProperty: Int? = nil
+    ) -> HasOwnProperty {
+        return HasOwnProperty(
+            hasOwnProperty: hasOwnProperty ?? self.hasOwnProperty
+        )
+    }
+
+    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: - HashCode
+struct HashCode: Codable {
+    let hashCode: Int
+
+    enum CodingKeys: String, CodingKey {
+        case hashCode = "hashCode"
+    }
+}
+
+// MARK: HashCode convenience initializers and mutators
+
+extension HashCode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(HashCode.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(
+        hashCode: Int? = nil
+    ) -> HashCode {
+        return HashCode(
+            hashCode: hashCode ?? self.hashCode
+        )
+    }
+
+    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: - HashableClass
+struct HashableClass: Codable {
+    let hashable: Int
+
     enum CodingKeys: String, CodingKey {
         case hashable = "Hashable"
     }
@@ -7094,6 +7226,50 @@ extension IntClass {
     }
 }
 
+// MARK: - IntNode
+struct IntNode: Codable {
+    let intNode: Int
+
+    enum CodingKeys: String, CodingKey {
+        case intNode = "IntNode"
+    }
+}
+
+// MARK: IntNode convenience initializers and mutators
+
+extension IntNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(IntNode.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(
+        intNode: Int? = nil
+    ) -> IntNode {
+        return IntNode(
+            intNode: intNode ?? self.intNode
+        )
+    }
+
+    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: - Interface
 struct Interface: Codable {
     let interface: Int
@@ -8238,6 +8414,50 @@ extension Long {
     }
 }
 
+// MARK: - LongNode
+struct LongNode: Codable {
+    let longNode: Int
+
+    enum CodingKeys: String, CodingKey {
+        case longNode = "LongNode"
+    }
+}
+
+// MARK: LongNode convenience initializers and mutators
+
+extension LongNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(LongNode.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(
+        longNode: Int? = nil
+    ) -> LongNode {
+        return LongNode(
+            longNode: longNode ?? self.longNode
+        )
+    }
+
+    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: - Map
 struct Map: Codable {
     let map: Int
@@ -8502,20 +8722,20 @@ extension Namespace {
     }
 }
 
-// MARK: - Native
-struct Native: Codable {
-    let native: Int
+// MARK: - Get
+struct Get: Codable {
+    let getGet: Int
 
     enum CodingKeys: String, CodingKey {
-        case native = "native"
+        case getGet = "get"
     }
 }
 
-// MARK: Native convenience initializers and mutators
+// MARK: Get convenience initializers and mutators
 
-extension Native {
+extension Get {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Native.self, from: data)
+        self = try newJSONDecoder().decode(Get.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -8530,10 +8750,10 @@ extension Native {
     }
 
     func with(
-        native: Int? = nil
-    ) -> Native {
-        return Native(
-            native: native ?? self.native
+        getGet: Int? = nil
+    ) -> Get {
+        return Get(
+            getGet: getGet ?? self.getGet
         )
     }
 
@@ -8546,20 +8766,20 @@ extension Native {
     }
 }
 
-// MARK: - New
-struct New: Codable {
-    let new: Int
+// MARK: - Guard
+struct Guard: Codable {
+    let guardGuard: Int
 
     enum CodingKeys: String, CodingKey {
-        case new = "new"
+        case guardGuard = "guard"
     }
 }
 
-// MARK: New convenience initializers and mutators
+// MARK: Guard convenience initializers and mutators
 
-extension New {
+extension Guard {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(New.self, from: data)
+        self = try newJSONDecoder().decode(Guard.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -8574,10 +8794,10 @@ extension New {
     }
 
     func with(
-        new: Int? = nil
-    ) -> New {
-        return New(
-            new: new ?? self.new
+        guardGuard: Int? = nil
+    ) -> Guard {
+        return Guard(
+            guardGuard: guardGuard ?? self.guardGuard
         )
     }
 
@@ -8590,192 +8810,16 @@ extension New {
     }
 }
 
-// MARK: - Newtonsoft
-struct Newtonsoft: Codable {
-    let newtonsoft: Int
+// MARK: - If
+struct If: Codable {
+    let ifIf: Int
 
     enum CodingKeys: String, CodingKey {
-        case newtonsoft = "newtonsoft"
+        case ifIf = "if"
     }
 }
 
-// MARK: Newtonsoft convenience initializers and mutators
-
-extension Newtonsoft {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Newtonsoft.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(
-        newtonsoft: Int? = nil
-    ) -> Newtonsoft {
-        return Newtonsoft(
-            newtonsoft: newtonsoft ?? self.newtonsoft
-        )
-    }
-
-    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: - No
-struct No: Codable {
-    let no: Int
-
-    enum CodingKeys: String, CodingKey {
-        case no = "NO"
-    }
-}
-
-// MARK: No convenience initializers and mutators
-
-extension No {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(No.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(
-        no: Int? = nil
-    ) -> No {
-        return No(
-            no: no ?? self.no
-        )
-    }
-
-    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: - Noexcept
-struct Noexcept: Codable {
-    let noexcept: Int
-
-    enum CodingKeys: String, CodingKey {
-        case noexcept = "noexcept"
-    }
-}
-
-// MARK: Noexcept convenience initializers and mutators
-
-extension Noexcept {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Noexcept.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(
-        noexcept: Int? = nil
-    ) -> Noexcept {
-        return Noexcept(
-            noexcept: noexcept ?? self.noexcept
-        )
-    }
-
-    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: - Guard
-struct Guard: Codable {
-    let guardGuard: Int
-
-    enum CodingKeys: String, CodingKey {
-        case guardGuard = "guard"
-    }
-}
-
-// MARK: Guard convenience initializers and mutators
-
-extension Guard {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Guard.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(
-        guardGuard: Int? = nil
-    ) -> Guard {
-        return Guard(
-            guardGuard: guardGuard ?? self.guardGuard
-        )
-    }
-
-    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: - If
-struct If: Codable {
-    let ifIf: Int
-
-    enum CodingKeys: String, CodingKey {
-        case ifIf = "if"
-    }
-}
-
-// MARK: If convenience initializers and mutators
+// MARK: If convenience initializers and mutators
 
 extension If {
     init(data: Data) throws {
@@ -9382,54 +9426,15 @@ extension Mutating {
     }
 }
 
-// MARK: - Nil
-struct Nil: Codable {
-    let nilNil: Int
-
-    enum CodingKeys: String, CodingKey {
-        case nilNil = "nil"
-    }
-}
-
-// MARK: Nil convenience initializers and mutators
-
-extension Nil {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Nil.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(
-        nilNil: Int? = nil
-    ) -> Nil {
-        return Nil(
-            nilNil: nilNil ?? self.nilNil
-        )
-    }
-
-    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: - Obj4
 struct Obj4: Codable {
     let dummy: Int
+    let native: Native
+    let new: New
+    let newtonsoft: Newtonsoft
+    let no: No
     let noSuchMethod: NoSuchMethod
+    let noexcept: Noexcept
     let nonatomic: Nonatomic
     let none: None
     let nonlocal: Nonlocal
@@ -9439,8 +9444,10 @@ struct Obj4: Codable {
     let nsObject: NSObject
     let nsString: NSString
     let null: Null
+    let nullNode: NullNode
     let nullptr: Nullptr
     let number: Number
+    let obj4Nil: Nil
     let obj4None: NoneClass
     let obj4Nonmutating: Nonmutating
     let obj4Null: NullClass
@@ -9457,10 +9464,9 @@ struct Obj4: Codable {
     let obj4Repeat: Repeat
     let obj4Required: Required
     let obj4Rethrows: Rethrows
-    let obj4Return: Return
-    let obj4Right: Right
     let object: Object
     let objectMapper: ObjectMapper
+    let objectNode: ObjectNode
     let of: Of
     let oneway: Oneway
     let or: Or
@@ -9487,16 +9493,15 @@ struct Obj4: Codable {
     let requires: Requires
     let restrict: Restrict
     let retain: Retain
-    let runtimeType: RuntimeType
-    let s: S
-    let sbyte: Sbyte
-    let sealed: Sealed
-    let sel: Sel
-    let select: Select
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
+        case native = "native"
+        case new = "new"
+        case newtonsoft = "newtonsoft"
+        case no = "NO"
         case noSuchMethod = "noSuchMethod"
+        case noexcept = "noexcept"
         case nonatomic = "nonatomic"
         case none = "None"
         case nonlocal = "nonlocal"
@@ -9506,8 +9511,10 @@ struct Obj4: Codable {
         case nsObject = "NSObject"
         case nsString = "NSString"
         case null = "NULL"
+        case nullNode = "NullNode"
         case nullptr = "nullptr"
         case number = "number"
+        case obj4Nil = "nil"
         case obj4None = "none"
         case obj4Nonmutating = "nonmutating"
         case obj4Null = "null"
@@ -9524,10 +9531,9 @@ struct Obj4: Codable {
         case obj4Repeat = "repeat"
         case obj4Required = "required"
         case obj4Rethrows = "rethrows"
-        case obj4Return = "return"
-        case obj4Right = "right"
         case object = "object"
         case objectMapper = "ObjectMapper"
+        case objectNode = "ObjectNode"
         case of = "of"
         case oneway = "oneway"
         case or = "or"
@@ -9554,12 +9560,6 @@ struct Obj4: Codable {
         case requires = "requires"
         case restrict = "restrict"
         case retain = "retain"
-        case runtimeType = "runtimeType"
-        case s = "s"
-        case sbyte = "sbyte"
-        case sealed = "sealed"
-        case sel = "SEL"
-        case select = "select"
     }
 }
 
@@ -9583,7 +9583,12 @@ extension Obj4 {
 
     func with(
         dummy: Int? = nil,
+        native: Native? = nil,
+        new: New? = nil,
+        newtonsoft: Newtonsoft? = nil,
+        no: No? = nil,
         noSuchMethod: NoSuchMethod? = nil,
+        noexcept: Noexcept? = nil,
         nonatomic: Nonatomic? = nil,
         none: None? = nil,
         nonlocal: Nonlocal? = nil,
@@ -9593,8 +9598,10 @@ extension Obj4 {
         nsObject: NSObject? = nil,
         nsString: NSString? = nil,
         null: Null? = nil,
+        nullNode: NullNode? = nil,
         nullptr: Nullptr? = nil,
         number: Number? = nil,
+        obj4Nil: Nil? = nil,
         obj4None: NoneClass? = nil,
         obj4Nonmutating: Nonmutating? = nil,
         obj4Null: NullClass? = nil,
@@ -9611,10 +9618,9 @@ extension Obj4 {
         obj4Repeat: Repeat? = nil,
         obj4Required: Required? = nil,
         obj4Rethrows: Rethrows? = nil,
-        obj4Return: Return? = nil,
-        obj4Right: Right? = nil,
         object: Object? = nil,
         objectMapper: ObjectMapper? = nil,
+        objectNode: ObjectNode? = nil,
         of: Of? = nil,
         oneway: Oneway? = nil,
         or: Or? = nil,
@@ -9640,17 +9646,16 @@ extension Obj4 {
         require: Require? = nil,
         requires: Requires? = nil,
         restrict: Restrict? = nil,
-        retain: Retain? = nil,
-        runtimeType: RuntimeType? = nil,
-        s: S? = nil,
-        sbyte: Sbyte? = nil,
-        sealed: Sealed? = nil,
-        sel: Sel? = nil,
-        select: Select? = nil
+        retain: Retain? = nil
     ) -> Obj4 {
         return Obj4(
             dummy: dummy ?? self.dummy,
+            native: native ?? self.native,
+            new: new ?? self.new,
+            newtonsoft: newtonsoft ?? self.newtonsoft,
+            no: no ?? self.no,
             noSuchMethod: noSuchMethod ?? self.noSuchMethod,
+            noexcept: noexcept ?? self.noexcept,
             nonatomic: nonatomic ?? self.nonatomic,
             none: none ?? self.none,
             nonlocal: nonlocal ?? self.nonlocal,
@@ -9660,8 +9665,10 @@ extension Obj4 {
             nsObject: nsObject ?? self.nsObject,
             nsString: nsString ?? self.nsString,
             null: null ?? self.null,
+            nullNode: nullNode ?? self.nullNode,
             nullptr: nullptr ?? self.nullptr,
             number: number ?? self.number,
+            obj4Nil: obj4Nil ?? self.obj4Nil,
             obj4None: obj4None ?? self.obj4None,
             obj4Nonmutating: obj4Nonmutating ?? self.obj4Nonmutating,
             obj4Null: obj4Null ?? self.obj4Null,
@@ -9678,10 +9685,9 @@ extension Obj4 {
             obj4Repeat: obj4Repeat ?? self.obj4Repeat,
             obj4Required: obj4Required ?? self.obj4Required,
             obj4Rethrows: obj4Rethrows ?? self.obj4Rethrows,
-            obj4Return: obj4Return ?? self.obj4Return,
-            obj4Right: obj4Right ?? self.obj4Right,
             object: object ?? self.object,
             objectMapper: objectMapper ?? self.objectMapper,
+            objectNode: objectNode ?? self.objectNode,
             of: of ?? self.of,
             oneway: oneway ?? self.oneway,
             or: or ?? self.or,
@@ -9707,13 +9713,183 @@ extension Obj4 {
             require: require ?? self.require,
             requires: requires ?? self.requires,
             restrict: restrict ?? self.restrict,
-            retain: retain ?? self.retain,
-            runtimeType: runtimeType ?? self.runtimeType,
-            s: s ?? self.s,
-            sbyte: sbyte ?? self.sbyte,
-            sealed: sealed ?? self.sealed,
-            sel: sel ?? self.sel,
-            select: select ?? self.select
+            retain: retain ?? self.retain
+        )
+    }
+
+    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: - Native
+struct Native: Codable {
+    let native: Int
+
+    enum CodingKeys: String, CodingKey {
+        case native = "native"
+    }
+}
+
+// MARK: Native convenience initializers and mutators
+
+extension Native {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Native.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(
+        native: Int? = nil
+    ) -> Native {
+        return Native(
+            native: native ?? self.native
+        )
+    }
+
+    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: - New
+struct New: Codable {
+    let new: Int
+
+    enum CodingKeys: String, CodingKey {
+        case new = "new"
+    }
+}
+
+// MARK: New convenience initializers and mutators
+
+extension New {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(New.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(
+        new: Int? = nil
+    ) -> New {
+        return New(
+            new: new ?? self.new
+        )
+    }
+
+    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: - Newtonsoft
+struct Newtonsoft: Codable {
+    let newtonsoft: Int
+
+    enum CodingKeys: String, CodingKey {
+        case newtonsoft = "newtonsoft"
+    }
+}
+
+// MARK: Newtonsoft convenience initializers and mutators
+
+extension Newtonsoft {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Newtonsoft.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(
+        newtonsoft: Int? = nil
+    ) -> Newtonsoft {
+        return Newtonsoft(
+            newtonsoft: newtonsoft ?? self.newtonsoft
+        )
+    }
+
+    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: - No
+struct No: Codable {
+    let no: Int
+
+    enum CodingKeys: String, CodingKey {
+        case no = "NO"
+    }
+}
+
+// MARK: No convenience initializers and mutators
+
+extension No {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(No.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(
+        no: Int? = nil
+    ) -> No {
+        return No(
+            no: no ?? self.no
         )
     }
 
@@ -9770,6 +9946,50 @@ extension NoSuchMethod {
     }
 }
 
+// MARK: - Noexcept
+struct Noexcept: Codable {
+    let noexcept: Int
+
+    enum CodingKeys: String, CodingKey {
+        case noexcept = "noexcept"
+    }
+}
+
+// MARK: Noexcept convenience initializers and mutators
+
+extension Noexcept {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Noexcept.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(
+        noexcept: Int? = nil
+    ) -> Noexcept {
+        return Noexcept(
+            noexcept: noexcept ?? self.noexcept
+        )
+    }
+
+    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: - Nonatomic
 struct Nonatomic: Codable {
     let nonatomic: Int
@@ -10166,20 +10386,20 @@ extension Null {
     }
 }
 
-// MARK: - Nullptr
-struct Nullptr: Codable {
-    let nullptr: Int
+// MARK: - NullNode
+struct NullNode: Codable {
+    let nullNode: Int
 
     enum CodingKeys: String, CodingKey {
-        case nullptr = "nullptr"
+        case nullNode = "NullNode"
     }
 }
 
-// MARK: Nullptr convenience initializers and mutators
+// MARK: NullNode convenience initializers and mutators
 
-extension Nullptr {
+extension NullNode {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Nullptr.self, from: data)
+        self = try newJSONDecoder().decode(NullNode.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -10194,10 +10414,10 @@ extension Nullptr {
     }
 
     func with(
-        nullptr: Int? = nil
-    ) -> Nullptr {
-        return Nullptr(
-            nullptr: nullptr ?? self.nullptr
+        nullNode: Int? = nil
+    ) -> NullNode {
+        return NullNode(
+            nullNode: nullNode ?? self.nullNode
         )
     }
 
@@ -10210,20 +10430,20 @@ extension Nullptr {
     }
 }
 
-// MARK: - Number
-struct Number: Codable {
-    let number: Int
+// MARK: - Nullptr
+struct Nullptr: Codable {
+    let nullptr: Int
 
     enum CodingKeys: String, CodingKey {
-        case number = "number"
+        case nullptr = "nullptr"
     }
 }
 
-// MARK: Number convenience initializers and mutators
+// MARK: Nullptr convenience initializers and mutators
 
-extension Number {
+extension Nullptr {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Number.self, from: data)
+        self = try newJSONDecoder().decode(Nullptr.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -10238,9 +10458,53 @@ extension Number {
     }
 
     func with(
-        number: Int? = nil
-    ) -> Number {
-        return Number(
+        nullptr: Int? = nil
+    ) -> Nullptr {
+        return Nullptr(
+            nullptr: nullptr ?? self.nullptr
+        )
+    }
+
+    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: - Number
+struct Number: Codable {
+    let number: Int
+
+    enum CodingKeys: String, CodingKey {
+        case number = "number"
+    }
+}
+
+// MARK: Number convenience initializers and mutators
+
+extension Number {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Number.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(
+        number: Int? = nil
+    ) -> Number {
+        return Number(
             number: number ?? self.number
         )
     }
@@ -10254,6 +10518,50 @@ extension Number {
     }
 }
 
+// MARK: - Nil
+struct Nil: Codable {
+    let nilNil: Int
+
+    enum CodingKeys: String, CodingKey {
+        case nilNil = "nil"
+    }
+}
+
+// MARK: Nil convenience initializers and mutators
+
+extension Nil {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Nil.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(
+        nilNil: Int? = nil
+    ) -> Nil {
+        return Nil(
+            nilNil: nilNil ?? self.nilNil
+        )
+    }
+
+    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: - NoneClass
 struct NoneClass: Codable {
     let none: Int
@@ -10958,64 +11266,20 @@ extension Rethrows {
     }
 }
 
-// MARK: - Return
-struct Return: Codable {
-    let returnReturn: Int
-
-    enum CodingKeys: String, CodingKey {
-        case returnReturn = "return"
-    }
-}
-
-// MARK: Return convenience initializers and mutators
-
-extension Return {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Return.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(
-        returnReturn: Int? = nil
-    ) -> Return {
-        return Return(
-            returnReturn: returnReturn ?? self.returnReturn
-        )
-    }
-
-    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: - Right
-struct Right: Codable {
-    let rightRight: Int
+// MARK: - Object
+struct Object: Codable {
+    let object: Int
 
     enum CodingKeys: String, CodingKey {
-        case rightRight = "right"
+        case object = "object"
     }
 }
 
-// MARK: Right convenience initializers and mutators
+// MARK: Object convenience initializers and mutators
 
-extension Right {
+extension Object {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Right.self, from: data)
+        self = try newJSONDecoder().decode(Object.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11030,10 +11294,10 @@ extension Right {
     }
 
     func with(
-        rightRight: Int? = nil
-    ) -> Right {
-        return Right(
-            rightRight: rightRight ?? self.rightRight
+        object: Int? = nil
+    ) -> Object {
+        return Object(
+            object: object ?? self.object
         )
     }
 
@@ -11046,20 +11310,20 @@ extension Right {
     }
 }
 
-// MARK: - Object
-struct Object: Codable {
-    let object: Int
+// MARK: - ObjectMapper
+struct ObjectMapper: Codable {
+    let objectMapper: Int
 
     enum CodingKeys: String, CodingKey {
-        case object = "object"
+        case objectMapper = "ObjectMapper"
     }
 }
 
-// MARK: Object convenience initializers and mutators
+// MARK: ObjectMapper convenience initializers and mutators
 
-extension Object {
+extension ObjectMapper {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Object.self, from: data)
+        self = try newJSONDecoder().decode(ObjectMapper.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11074,10 +11338,10 @@ extension Object {
     }
 
     func with(
-        object: Int? = nil
-    ) -> Object {
-        return Object(
-            object: object ?? self.object
+        objectMapper: Int? = nil
+    ) -> ObjectMapper {
+        return ObjectMapper(
+            objectMapper: objectMapper ?? self.objectMapper
         )
     }
 
@@ -11090,20 +11354,20 @@ extension Object {
     }
 }
 
-// MARK: - ObjectMapper
-struct ObjectMapper: Codable {
-    let objectMapper: Int
+// MARK: - ObjectNode
+struct ObjectNode: Codable {
+    let objectNode: Int
 
     enum CodingKeys: String, CodingKey {
-        case objectMapper = "ObjectMapper"
+        case objectNode = "ObjectNode"
     }
 }
 
-// MARK: ObjectMapper convenience initializers and mutators
+// MARK: ObjectNode convenience initializers and mutators
 
-extension ObjectMapper {
+extension ObjectNode {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(ObjectMapper.self, from: data)
+        self = try newJSONDecoder().decode(ObjectNode.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11118,10 +11382,10 @@ extension ObjectMapper {
     }
 
     func with(
-        objectMapper: Int? = nil
-    ) -> ObjectMapper {
-        return ObjectMapper(
-            objectMapper: objectMapper ?? self.objectMapper
+        objectNode: Int? = nil
+    ) -> ObjectNode {
+        return ObjectNode(
+            objectNode: objectNode ?? self.objectNode
         )
     }
 
@@ -12278,340 +12542,78 @@ extension Retain {
     }
 }
 
-// MARK: - RuntimeType
-struct RuntimeType: Codable {
-    let runtimeType: Int
-
-    enum CodingKeys: String, CodingKey {
-        case runtimeType = "runtimeType"
-    }
-}
-
-// MARK: RuntimeType convenience initializers and mutators
-
-extension RuntimeType {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(RuntimeType.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(
-        runtimeType: Int? = nil
-    ) -> RuntimeType {
-        return RuntimeType(
-            runtimeType: runtimeType ?? self.runtimeType
-        )
-    }
-
-    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: - S
-struct S: Codable {
-    let s: Int
-
-    enum CodingKeys: String, CodingKey {
-        case s = "s"
-    }
-}
-
-// MARK: S convenience initializers and mutators
-
-extension S {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(S.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(
-        s: Int? = nil
-    ) -> S {
-        return S(
-            s: s ?? self.s
-        )
-    }
-
-    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: - Sbyte
-struct Sbyte: Codable {
-    let sbyte: Int
-
-    enum CodingKeys: String, CodingKey {
-        case sbyte = "sbyte"
-    }
-}
-
-// MARK: Sbyte convenience initializers and mutators
-
-extension Sbyte {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Sbyte.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(
-        sbyte: Int? = nil
-    ) -> Sbyte {
-        return Sbyte(
-            sbyte: sbyte ?? self.sbyte
-        )
-    }
-
-    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: - Sealed
-struct Sealed: Codable {
-    let sealed: Int
-
-    enum CodingKeys: String, CodingKey {
-        case sealed = "sealed"
-    }
-}
-
-// MARK: Sealed convenience initializers and mutators
-
-extension Sealed {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Sealed.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(
-        sealed: Int? = nil
-    ) -> Sealed {
-        return Sealed(
-            sealed: sealed ?? self.sealed
-        )
-    }
-
-    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: - Sel
-struct Sel: Codable {
-    let sel: Int
-
-    enum CodingKeys: String, CodingKey {
-        case sel = "SEL"
-    }
-}
-
-// MARK: Sel convenience initializers and mutators
-
-extension Sel {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Sel.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(
-        sel: Int? = nil
-    ) -> Sel {
-        return Sel(
-            sel: sel ?? self.sel
-        )
-    }
-
-    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: - Select
-struct Select: Codable {
-    let select: Int
-
-    enum CodingKeys: String, CodingKey {
-        case select = "select"
-    }
-}
-
-// MARK: Select convenience initializers and mutators
-
-extension Select {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Select.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(
-        select: Int? = nil
-    ) -> Select {
-        return Select(
-            select: select ?? self.select
-        )
-    }
-
-    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: - Obj5
-struct Obj5: Codable {
-    let dummy: Int
-    let obj5Self: SelfClass
-    let obj5Set: Set
-    let obj5Static: Static
-    let obj5Struct: Struct
-    let obj5Subscript: Subscript
-    let obj5Super: Super
-    let obj5Switch: Switch
-    let obj5Throw: Throw
-    let obj5Throws: Throws
-    let obj5True: True
-    let obj5Try: Try
-    let obj5Type: Obj5Type
-    let obj5Typealias: Typealias
-    let obj5Unowned: Unowned
-    let obj5Var: Var
-    let purpleSelf: Obj5Self
-    let purpleTrue: TrueClass
-    let sendable: Sendable
-    let serialize: Serialize
-    let serializerProvider: SerializerProvider
-    let short: Short
-    let signed: Signed
-    let simpleModule: SimpleModule
-    let sizeof: Sizeof
-    let stackalloc: Stackalloc
-    let standards: Standards
-    let staticAssert: StaticAssert
-    let staticCast: StaticCast
-    let stdDeserializer: StdDeserializer
-    let stdSerializer: StdSerializer
-    let strictfp: Strictfp
-    let string: StringClass
-    let symbol: Symbol
-    let synchronized: Synchronized
-    let system: System
-    let template: Template
-    let then: Then
-    let this: This
-    let threadLocal: ThreadLocal
-    let timeOnly: TimeOnly
-    let timeOnlyConverter: TimeOnlyConverter
-    let timeZone: TimeZoneClass
-    let toJSON: ToJSON
-    let toString: ToString
-    let topLevel: TopLevelClass
-    let transient: Transient
-    let type: TypeClass
-    let typedef: Typedef
-    let typeid: Typeid
-    let typename: Typename
-    let typeof: Typeof
-    let uint: Uint
-    let ulong: Ulong
-    let unchecked: Unchecked
-    let undefined: Undefined
-    let union: Union
-    let unsafe: Unsafe
-    let unsigned: Unsigned
-    let ushort: Ushort
-    let using: Using
-    let utf8JSONReader: Utf8JSONReader
-    let utf8JSONWriter: Utf8JSONWriter
-    let uuid: UUIDClass
-    let virtual: Virtual
+// MARK: - Obj5
+struct Obj5: Codable {
+    let dummy: Int
+    let obj5Return: Return
+    let obj5Right: Right
+    let obj5Self: SelfClass
+    let obj5Set: Set
+    let obj5Static: Static
+    let obj5Struct: Struct
+    let obj5Subscript: Subscript
+    let obj5Super: Super
+    let obj5Switch: Switch
+    let obj5Throw: Throw
+    let obj5Throws: Throws
+    let obj5True: True
+    let obj5Try: Try
+    let obj5Type: Obj5Type
+    let obj5Typealias: Typealias
+    let purpleSelf: Obj5Self
+    let purpleTrue: TrueClass
+    let runtimeType: RuntimeType
+    let s: S
+    let sbyte: Sbyte
+    let sealed: Sealed
+    let sel: Sel
+    let select: Select
+    let sendable: Sendable
+    let serializationFeature: SerializationFeature
+    let serialize: Serialize
+    let serializerProvider: SerializerProvider
+    let short: Short
+    let signed: Signed
+    let simpleModule: SimpleModule
+    let sizeof: Sizeof
+    let stackalloc: Stackalloc
+    let standards: Standards
+    let staticAssert: StaticAssert
+    let staticCast: StaticCast
+    let stdDeserializer: StdDeserializer
+    let stdSerializer: StdSerializer
+    let strictfp: Strictfp
+    let string: StringClass
+    let symbol: Symbol
+    let synchronized: Synchronized
+    let system: System
+    let template: Template
+    let textNode: TextNode
+    let then: Then
+    let this: This
+    let threadLocal: ThreadLocal
+    let timeOnly: TimeOnly
+    let timeOnlyConverter: TimeOnlyConverter
+    let timeZone: TimeZoneClass
+    let toJSON: ToJSON
+    let toString: ToString
+    let topLevel: TopLevelClass
+    let transient: Transient
+    let type: TypeClass
+    let typedef: Typedef
+    let typeid: Typeid
+    let typename: Typename
+    let typeof: Typeof
+    let uint: Uint
+    let ulong: Ulong
+    let unchecked: Unchecked
+    let undefined: Undefined
+    let union: Union
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
+        case obj5Return = "return"
+        case obj5Right = "right"
         case obj5Self = "Self"
         case obj5Set = "set"
         case obj5Static = "static"
@@ -12625,11 +12627,16 @@ struct Obj5: Codable {
         case obj5Try = "try"
         case obj5Type = "type"
         case obj5Typealias = "typealias"
-        case obj5Unowned = "unowned"
-        case obj5Var = "var"
         case purpleSelf = "self"
         case purpleTrue = "true"
+        case runtimeType = "runtimeType"
+        case s = "s"
+        case sbyte = "sbyte"
+        case sealed = "sealed"
+        case sel = "SEL"
+        case select = "select"
         case sendable = "Sendable"
+        case serializationFeature = "SerializationFeature"
         case serialize = "serialize"
         case serializerProvider = "SerializerProvider"
         case short = "short"
@@ -12648,6 +12655,7 @@ struct Obj5: Codable {
         case synchronized = "synchronized"
         case system = "system"
         case template = "template"
+        case textNode = "TextNode"
         case then = "then"
         case this = "this"
         case threadLocal = "thread_local"
@@ -12668,14 +12676,6 @@ struct Obj5: Codable {
         case unchecked = "unchecked"
         case undefined = "undefined"
         case union = "union"
-        case unsafe = "unsafe"
-        case unsigned = "unsigned"
-        case ushort = "ushort"
-        case using = "using"
-        case utf8JSONReader = "Utf8JsonReader"
-        case utf8JSONWriter = "Utf8JsonWriter"
-        case uuid = "UUID"
-        case virtual = "virtual"
     }
 }
 
@@ -12699,6 +12699,8 @@ extension Obj5 {
 
     func with(
         dummy: Int? = nil,
+        obj5Return: Return? = nil,
+        obj5Right: Right? = nil,
         obj5Self: SelfClass? = nil,
         obj5Set: Set? = nil,
         obj5Static: Static? = nil,
@@ -12712,11 +12714,16 @@ extension Obj5 {
         obj5Try: Try? = nil,
         obj5Type: Obj5Type? = nil,
         obj5Typealias: Typealias? = nil,
-        obj5Unowned: Unowned? = nil,
-        obj5Var: Var? = nil,
         purpleSelf: Obj5Self? = nil,
         purpleTrue: TrueClass? = nil,
+        runtimeType: RuntimeType? = nil,
+        s: S? = nil,
+        sbyte: Sbyte? = nil,
+        sealed: Sealed? = nil,
+        sel: Sel? = nil,
+        select: Select? = nil,
         sendable: Sendable? = nil,
+        serializationFeature: SerializationFeature? = nil,
         serialize: Serialize? = nil,
         serializerProvider: SerializerProvider? = nil,
         short: Short? = nil,
@@ -12735,6 +12742,7 @@ extension Obj5 {
         synchronized: Synchronized? = nil,
         system: System? = nil,
         template: Template? = nil,
+        textNode: TextNode? = nil,
         then: Then? = nil,
         this: This? = nil,
         threadLocal: ThreadLocal? = nil,
@@ -12754,18 +12762,12 @@ extension Obj5 {
         ulong: Ulong? = nil,
         unchecked: Unchecked? = nil,
         undefined: Undefined? = nil,
-        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
+        union: Union? = nil
     ) -> Obj5 {
         return Obj5(
             dummy: dummy ?? self.dummy,
+            obj5Return: obj5Return ?? self.obj5Return,
+            obj5Right: obj5Right ?? self.obj5Right,
             obj5Self: obj5Self ?? self.obj5Self,
             obj5Set: obj5Set ?? self.obj5Set,
             obj5Static: obj5Static ?? self.obj5Static,
@@ -12779,11 +12781,16 @@ extension Obj5 {
             obj5Try: obj5Try ?? self.obj5Try,
             obj5Type: obj5Type ?? self.obj5Type,
             obj5Typealias: obj5Typealias ?? self.obj5Typealias,
-            obj5Unowned: obj5Unowned ?? self.obj5Unowned,
-            obj5Var: obj5Var ?? self.obj5Var,
             purpleSelf: purpleSelf ?? self.purpleSelf,
             purpleTrue: purpleTrue ?? self.purpleTrue,
+            runtimeType: runtimeType ?? self.runtimeType,
+            s: s ?? self.s,
+            sbyte: sbyte ?? self.sbyte,
+            sealed: sealed ?? self.sealed,
+            sel: sel ?? self.sel,
+            select: select ?? self.select,
             sendable: sendable ?? self.sendable,
+            serializationFeature: serializationFeature ?? self.serializationFeature,
             serialize: serialize ?? self.serialize,
             serializerProvider: serializerProvider ?? self.serializerProvider,
             short: short ?? self.short,
@@ -12802,6 +12809,7 @@ extension Obj5 {
             synchronized: synchronized ?? self.synchronized,
             system: system ?? self.system,
             template: template ?? self.template,
+            textNode: textNode ?? self.textNode,
             then: then ?? self.then,
             this: this ?? self.this,
             threadLocal: threadLocal ?? self.threadLocal,
@@ -12821,15 +12829,95 @@ extension Obj5 {
             ulong: ulong ?? self.ulong,
             unchecked: unchecked ?? self.unchecked,
             undefined: undefined ?? self.undefined,
-            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
+            union: union ?? self.union
+        )
+    }
+
+    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: - Return
+struct Return: Codable {
+    let returnReturn: Int
+
+    enum CodingKeys: String, CodingKey {
+        case returnReturn = "return"
+    }
+}
+
+// MARK: Return convenience initializers and mutators
+
+extension Return {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Return.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(
+        returnReturn: Int? = nil
+    ) -> Return {
+        return Return(
+            returnReturn: returnReturn ?? self.returnReturn
+        )
+    }
+
+    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: - Right
+struct Right: Codable {
+    let rightRight: Int
+
+    enum CodingKeys: String, CodingKey {
+        case rightRight = "right"
+    }
+}
+
+// MARK: Right convenience initializers and mutators
+
+extension Right {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Right.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(
+        rightRight: Int? = nil
+    ) -> Right {
+        return Right(
+            rightRight: rightRight ?? self.rightRight
         )
     }
 
@@ -13161,9 +13249,229 @@ struct Throw: Codable {
 
 // MARK: Throw convenience initializers and mutators
 
-extension Throw {
+extension Throw {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Throw.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(
+        throwThrow: Int? = nil
+    ) -> Throw {
+        return Throw(
+            throwThrow: throwThrow ?? self.throwThrow
+        )
+    }
+
+    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: - Throws
+struct Throws: Codable {
+    let throwsThrows: Int
+
+    enum CodingKeys: String, CodingKey {
+        case throwsThrows = "throws"
+    }
+}
+
+// MARK: Throws convenience initializers and mutators
+
+extension Throws {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Throws.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(
+        throwsThrows: Int? = nil
+    ) -> Throws {
+        return Throws(
+            throwsThrows: throwsThrows ?? self.throwsThrows
+        )
+    }
+
+    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: - True
+struct True: Codable {
+    let trueTrue: Int
+
+    enum CodingKeys: String, CodingKey {
+        case trueTrue = "True"
+    }
+}
+
+// MARK: True convenience initializers and mutators
+
+extension True {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(True.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(
+        trueTrue: Int? = nil
+    ) -> True {
+        return True(
+            trueTrue: trueTrue ?? self.trueTrue
+        )
+    }
+
+    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: - Try
+struct Try: Codable {
+    let tryTry: Int
+
+    enum CodingKeys: String, CodingKey {
+        case tryTry = "try"
+    }
+}
+
+// MARK: Try convenience initializers and mutators
+
+extension Try {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Try.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(
+        tryTry: Int? = nil
+    ) -> Try {
+        return Try(
+            tryTry: tryTry ?? self.tryTry
+        )
+    }
+
+    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: - Obj5Type
+struct Obj5Type: Codable {
+    let type: Int
+
+    enum CodingKeys: String, CodingKey {
+        case type = "type"
+    }
+}
+
+// MARK: Obj5Type convenience initializers and mutators
+
+extension Obj5Type {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Obj5Type.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(
+        type: Int? = nil
+    ) -> Obj5Type {
+        return Obj5Type(
+            type: type ?? self.type
+        )
+    }
+
+    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: - Typealias
+struct Typealias: Codable {
+    let typealiasTypealias: Int
+
+    enum CodingKeys: String, CodingKey {
+        case typealiasTypealias = "typealias"
+    }
+}
+
+// MARK: Typealias convenience initializers and mutators
+
+extension Typealias {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Throw.self, from: data)
+        self = try newJSONDecoder().decode(Typealias.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13178,10 +13486,10 @@ extension Throw {
     }
 
     func with(
-        throwThrow: Int? = nil
-    ) -> Throw {
-        return Throw(
-            throwThrow: throwThrow ?? self.throwThrow
+        typealiasTypealias: Int? = nil
+    ) -> Typealias {
+        return Typealias(
+            typealiasTypealias: typealiasTypealias ?? self.typealiasTypealias
         )
     }
 
@@ -13194,20 +13502,20 @@ extension Throw {
     }
 }
 
-// MARK: - Throws
-struct Throws: Codable {
-    let throwsThrows: Int
+// MARK: - Obj5Self
+struct Obj5Self: Codable {
+    let selfSelf: Int
 
     enum CodingKeys: String, CodingKey {
-        case throwsThrows = "throws"
+        case selfSelf = "self"
     }
 }
 
-// MARK: Throws convenience initializers and mutators
+// MARK: Obj5Self convenience initializers and mutators
 
-extension Throws {
+extension Obj5Self {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Throws.self, from: data)
+        self = try newJSONDecoder().decode(Obj5Self.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13222,10 +13530,10 @@ extension Throws {
     }
 
     func with(
-        throwsThrows: Int? = nil
-    ) -> Throws {
-        return Throws(
-            throwsThrows: throwsThrows ?? self.throwsThrows
+        selfSelf: Int? = nil
+    ) -> Obj5Self {
+        return Obj5Self(
+            selfSelf: selfSelf ?? self.selfSelf
         )
     }
 
@@ -13238,20 +13546,20 @@ extension Throws {
     }
 }
 
-// MARK: - True
-struct True: Codable {
+// MARK: - TrueClass
+struct TrueClass: Codable {
     let trueTrue: Int
 
     enum CodingKeys: String, CodingKey {
-        case trueTrue = "True"
+        case trueTrue = "true"
     }
 }
 
-// MARK: True convenience initializers and mutators
+// MARK: TrueClass convenience initializers and mutators
 
-extension True {
+extension TrueClass {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(True.self, from: data)
+        self = try newJSONDecoder().decode(TrueClass.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13267,8 +13575,8 @@ extension True {
 
     func with(
         trueTrue: Int? = nil
-    ) -> True {
-        return True(
+    ) -> TrueClass {
+        return TrueClass(
             trueTrue: trueTrue ?? self.trueTrue
         )
     }
@@ -13282,20 +13590,20 @@ extension True {
     }
 }
 
-// MARK: - Try
-struct Try: Codable {
-    let tryTry: Int
+// MARK: - RuntimeType
+struct RuntimeType: Codable {
+    let runtimeType: Int
 
     enum CodingKeys: String, CodingKey {
-        case tryTry = "try"
+        case runtimeType = "runtimeType"
     }
 }
 
-// MARK: Try convenience initializers and mutators
+// MARK: RuntimeType convenience initializers and mutators
 
-extension Try {
+extension RuntimeType {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Try.self, from: data)
+        self = try newJSONDecoder().decode(RuntimeType.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13310,10 +13618,10 @@ extension Try {
     }
 
     func with(
-        tryTry: Int? = nil
-    ) -> Try {
-        return Try(
-            tryTry: tryTry ?? self.tryTry
+        runtimeType: Int? = nil
+    ) -> RuntimeType {
+        return RuntimeType(
+            runtimeType: runtimeType ?? self.runtimeType
         )
     }
 
@@ -13326,20 +13634,20 @@ extension Try {
     }
 }
 
-// MARK: - Obj5Type
-struct Obj5Type: Codable {
-    let type: Int
+// MARK: - S
+struct S: Codable {
+    let s: Int
 
     enum CodingKeys: String, CodingKey {
-        case type = "type"
+        case s = "s"
     }
 }
 
-// MARK: Obj5Type convenience initializers and mutators
+// MARK: S convenience initializers and mutators
 
-extension Obj5Type {
+extension S {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Obj5Type.self, from: data)
+        self = try newJSONDecoder().decode(S.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13354,10 +13662,10 @@ extension Obj5Type {
     }
 
     func with(
-        type: Int? = nil
-    ) -> Obj5Type {
-        return Obj5Type(
-            type: type ?? self.type
+        s: Int? = nil
+    ) -> S {
+        return S(
+            s: s ?? self.s
         )
     }
 
@@ -13370,20 +13678,20 @@ extension Obj5Type {
     }
 }
 
-// MARK: - Typealias
-struct Typealias: Codable {
-    let typealiasTypealias: Int
+// MARK: - Sbyte
+struct Sbyte: Codable {
+    let sbyte: Int
 
     enum CodingKeys: String, CodingKey {
-        case typealiasTypealias = "typealias"
+        case sbyte = "sbyte"
     }
 }
 
-// MARK: Typealias convenience initializers and mutators
+// MARK: Sbyte convenience initializers and mutators
 
-extension Typealias {
+extension Sbyte {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Typealias.self, from: data)
+        self = try newJSONDecoder().decode(Sbyte.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13398,10 +13706,10 @@ extension Typealias {
     }
 
     func with(
-        typealiasTypealias: Int? = nil
-    ) -> Typealias {
-        return Typealias(
-            typealiasTypealias: typealiasTypealias ?? self.typealiasTypealias
+        sbyte: Int? = nil
+    ) -> Sbyte {
+        return Sbyte(
+            sbyte: sbyte ?? self.sbyte
         )
     }
 
@@ -13414,20 +13722,20 @@ extension Typealias {
     }
 }
 
-// MARK: - Unowned
-struct Unowned: Codable {
-    let unownedUnowned: Int
+// MARK: - Sealed
+struct Sealed: Codable {
+    let sealed: Int
 
     enum CodingKeys: String, CodingKey {
-        case unownedUnowned = "unowned"
+        case sealed = "sealed"
     }
 }
 
-// MARK: Unowned convenience initializers and mutators
+// MARK: Sealed convenience initializers and mutators
 
-extension Unowned {
+extension Sealed {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Unowned.self, from: data)
+        self = try newJSONDecoder().decode(Sealed.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13442,10 +13750,10 @@ extension Unowned {
     }
 
     func with(
-        unownedUnowned: Int? = nil
-    ) -> Unowned {
-        return Unowned(
-            unownedUnowned: unownedUnowned ?? self.unownedUnowned
+        sealed: Int? = nil
+    ) -> Sealed {
+        return Sealed(
+            sealed: sealed ?? self.sealed
         )
     }
 
@@ -13458,20 +13766,20 @@ extension Unowned {
     }
 }
 
-// MARK: - Var
-struct Var: Codable {
-    let varVar: Int
+// MARK: - Sel
+struct Sel: Codable {
+    let sel: Int
 
     enum CodingKeys: String, CodingKey {
-        case varVar = "var"
+        case sel = "SEL"
     }
 }
 
-// MARK: Var convenience initializers and mutators
+// MARK: Sel convenience initializers and mutators
 
-extension Var {
+extension Sel {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Var.self, from: data)
+        self = try newJSONDecoder().decode(Sel.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13486,10 +13794,10 @@ extension Var {
     }
 
     func with(
-        varVar: Int? = nil
-    ) -> Var {
-        return Var(
-            varVar: varVar ?? self.varVar
+        sel: Int? = nil
+    ) -> Sel {
+        return Sel(
+            sel: sel ?? self.sel
         )
     }
 
@@ -13502,20 +13810,20 @@ extension Var {
     }
 }
 
-// MARK: - Obj5Self
-struct Obj5Self: Codable {
-    let selfSelf: Int
+// MARK: - Select
+struct Select: Codable {
+    let select: Int
 
     enum CodingKeys: String, CodingKey {
-        case selfSelf = "self"
+        case select = "select"
     }
 }
 
-// MARK: Obj5Self convenience initializers and mutators
+// MARK: Select convenience initializers and mutators
 
-extension Obj5Self {
+extension Select {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Obj5Self.self, from: data)
+        self = try newJSONDecoder().decode(Select.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13530,10 +13838,10 @@ extension Obj5Self {
     }
 
     func with(
-        selfSelf: Int? = nil
-    ) -> Obj5Self {
-        return Obj5Self(
-            selfSelf: selfSelf ?? self.selfSelf
+        select: Int? = nil
+    ) -> Select {
+        return Select(
+            select: select ?? self.select
         )
     }
 
@@ -13546,20 +13854,20 @@ extension Obj5Self {
     }
 }
 
-// MARK: - TrueClass
-struct TrueClass: Codable {
-    let trueTrue: Int
+// MARK: - Sendable
+struct Sendable: Codable {
+    let sendable: Int
 
     enum CodingKeys: String, CodingKey {
-        case trueTrue = "true"
+        case sendable = "Sendable"
     }
 }
 
-// MARK: TrueClass convenience initializers and mutators
+// MARK: Sendable convenience initializers and mutators
 
-extension TrueClass {
+extension Sendable {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(TrueClass.self, from: data)
+        self = try newJSONDecoder().decode(Sendable.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13574,10 +13882,10 @@ extension TrueClass {
     }
 
     func with(
-        trueTrue: Int? = nil
-    ) -> TrueClass {
-        return TrueClass(
-            trueTrue: trueTrue ?? self.trueTrue
+        sendable: Int? = nil
+    ) -> Sendable {
+        return Sendable(
+            sendable: sendable ?? self.sendable
         )
     }
 
@@ -13590,20 +13898,20 @@ extension TrueClass {
     }
 }
 
-// MARK: - Sendable
-struct Sendable: Codable {
-    let sendable: Int
+// MARK: - SerializationFeature
+struct SerializationFeature: Codable {
+    let serializationFeature: Int
 
     enum CodingKeys: String, CodingKey {
-        case sendable = "Sendable"
+        case serializationFeature = "SerializationFeature"
     }
 }
 
-// MARK: Sendable convenience initializers and mutators
+// MARK: SerializationFeature convenience initializers and mutators
 
-extension Sendable {
+extension SerializationFeature {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Sendable.self, from: data)
+        self = try newJSONDecoder().decode(SerializationFeature.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13618,10 +13926,10 @@ extension Sendable {
     }
 
     func with(
-        sendable: Int? = nil
-    ) -> Sendable {
-        return Sendable(
-            sendable: sendable ?? self.sendable
+        serializationFeature: Int? = nil
+    ) -> SerializationFeature {
+        return SerializationFeature(
+            serializationFeature: serializationFeature ?? self.serializationFeature
         )
     }
 
@@ -14382,20 +14690,64 @@ extension System {
     }
 }
 
-// MARK: - Template
-struct Template: Codable {
-    let template: Int
+// MARK: - Template
+struct Template: Codable {
+    let template: Int
+
+    enum CodingKeys: String, CodingKey {
+        case template = "template"
+    }
+}
+
+// MARK: Template convenience initializers and mutators
+
+extension Template {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Template.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(
+        template: Int? = nil
+    ) -> Template {
+        return Template(
+            template: template ?? self.template
+        )
+    }
+
+    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: - TextNode
+struct TextNode: Codable {
+    let textNode: Int
 
     enum CodingKeys: String, CodingKey {
-        case template = "template"
+        case textNode = "TextNode"
     }
 }
 
-// MARK: Template convenience initializers and mutators
+// MARK: TextNode convenience initializers and mutators
 
-extension Template {
+extension TextNode {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Template.self, from: data)
+        self = try newJSONDecoder().decode(TextNode.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -14410,10 +14762,10 @@ extension Template {
     }
 
     func with(
-        template: Int? = nil
-    ) -> Template {
-        return Template(
-            template: template ?? self.template
+        textNode: Int? = nil
+    ) -> TextNode {
+        return TextNode(
+            textNode: textNode ?? self.textNode
         )
     }
 
@@ -15306,20 +15658,64 @@ extension Union {
     }
 }
 
-// MARK: - Unsafe
-struct Unsafe: Codable {
-    let unsafe: Int
+// MARK: - Obj6
+struct Obj6: Codable {
+    let dummy: Int
+    let obj6Unowned: Unowned
+    let obj6Var: Var
+    let obj6Weak: Weak
+    let obj6Where: Where
+    let obj6While: While
+    let obj6WillSet: WillSet
+    let unsafe: Unsafe
+    let unsigned: Unsigned
+    let ushort: Ushort
+    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 obj6Unowned = "unowned"
+        case obj6Var = "var"
+        case obj6Weak = "weak"
+        case obj6Where = "where"
+        case obj6While = "while"
+        case obj6WillSet = "willSet"
         case unsafe = "unsafe"
+        case unsigned = "unsigned"
+        case ushort = "ushort"
+        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: Unsafe convenience initializers and mutators
+// MARK: Obj6 convenience initializers and mutators
 
-extension Unsafe {
+extension Obj6 {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Unsafe.self, from: data)
+        self = try newJSONDecoder().decode(Obj6.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15334,10 +15730,54 @@ extension Unsafe {
     }
 
     func with(
-        unsafe: Int? = nil
-    ) -> Unsafe {
-        return Unsafe(
-            unsafe: unsafe ?? self.unsafe
+        dummy: Int? = nil,
+        obj6Unowned: Unowned? = nil,
+        obj6Var: Var? = nil,
+        obj6Weak: Weak? = nil,
+        obj6Where: Where? = nil,
+        obj6While: While? = nil,
+        obj6WillSet: WillSet? = 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,
+        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,
+            obj6Unowned: obj6Unowned ?? self.obj6Unowned,
+            obj6Var: obj6Var ?? self.obj6Var,
+            obj6Weak: obj6Weak ?? self.obj6Weak,
+            obj6Where: obj6Where ?? self.obj6Where,
+            obj6While: obj6While ?? self.obj6While,
+            obj6WillSet: obj6WillSet ?? self.obj6WillSet,
+            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,
+            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
         )
     }
 
@@ -15350,20 +15790,20 @@ extension Unsafe {
     }
 }
 
-// MARK: - Unsigned
-struct Unsigned: Codable {
-    let unsigned: Int
+// MARK: - Unowned
+struct Unowned: Codable {
+    let unownedUnowned: Int
 
     enum CodingKeys: String, CodingKey {
-        case unsigned = "unsigned"
+        case unownedUnowned = "unowned"
     }
 }
 
-// MARK: Unsigned convenience initializers and mutators
+// MARK: Unowned convenience initializers and mutators
 
-extension Unsigned {
+extension Unowned {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Unsigned.self, from: data)
+        self = try newJSONDecoder().decode(Unowned.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15378,10 +15818,10 @@ extension Unsigned {
     }
 
     func with(
-        unsigned: Int? = nil
-    ) -> Unsigned {
-        return Unsigned(
-            unsigned: unsigned ?? self.unsigned
+        unownedUnowned: Int? = nil
+    ) -> Unowned {
+        return Unowned(
+            unownedUnowned: unownedUnowned ?? self.unownedUnowned
         )
     }
 
@@ -15394,20 +15834,20 @@ extension Unsigned {
     }
 }
 
-// MARK: - Ushort
-struct Ushort: Codable {
-    let ushort: Int
+// MARK: - Var
+struct Var: Codable {
+    let varVar: Int
 
     enum CodingKeys: String, CodingKey {
-        case ushort = "ushort"
+        case varVar = "var"
     }
 }
 
-// MARK: Ushort convenience initializers and mutators
+// MARK: Var convenience initializers and mutators
 
-extension Ushort {
+extension Var {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Ushort.self, from: data)
+        self = try newJSONDecoder().decode(Var.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15422,10 +15862,10 @@ extension Ushort {
     }
 
     func with(
-        ushort: Int? = nil
-    ) -> Ushort {
-        return Ushort(
-            ushort: ushort ?? self.ushort
+        varVar: Int? = nil
+    ) -> Var {
+        return Var(
+            varVar: varVar ?? self.varVar
         )
     }
 
@@ -15438,20 +15878,108 @@ extension Ushort {
     }
 }
 
-// MARK: - Using
-struct Using: Codable {
-    let using: Int
+// MARK: - Weak
+struct Weak: Codable {
+    let weakWeak: Int
 
     enum CodingKeys: String, CodingKey {
-        case using = "using"
+        case weakWeak = "weak"
     }
 }
 
-// MARK: Using convenience initializers and mutators
+// MARK: Weak convenience initializers and mutators
 
-extension Using {
+extension Weak {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Weak.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(
+        weakWeak: Int? = nil
+    ) -> Weak {
+        return Weak(
+            weakWeak: weakWeak ?? self.weakWeak
+        )
+    }
+
+    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: - Where
+struct Where: Codable {
+    let whereWhere: Int
+
+    enum CodingKeys: String, CodingKey {
+        case whereWhere = "where"
+    }
+}
+
+// MARK: Where convenience initializers and mutators
+
+extension Where {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Where.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(
+        whereWhere: Int? = nil
+    ) -> Where {
+        return Where(
+            whereWhere: whereWhere ?? self.whereWhere
+        )
+    }
+
+    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: - While
+struct While: Codable {
+    let whileWhile: Int
+
+    enum CodingKeys: String, CodingKey {
+        case whileWhile = "while"
+    }
+}
+
+// MARK: While convenience initializers and mutators
+
+extension While {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Using.self, from: data)
+        self = try newJSONDecoder().decode(While.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15466,10 +15994,10 @@ extension Using {
     }
 
     func with(
-        using: Int? = nil
-    ) -> Using {
-        return Using(
-            using: using ?? self.using
+        whileWhile: Int? = nil
+    ) -> While {
+        return While(
+            whileWhile: whileWhile ?? self.whileWhile
         )
     }
 
@@ -15482,20 +16010,20 @@ extension Using {
     }
 }
 
-// MARK: - Utf8JSONReader
-struct Utf8JSONReader: Codable {
-    let utf8JSONReader: Int
+// MARK: - WillSet
+struct WillSet: Codable {
+    let willSetWillSet: Int
 
     enum CodingKeys: String, CodingKey {
-        case utf8JSONReader = "Utf8JsonReader"
+        case willSetWillSet = "willSet"
     }
 }
 
-// MARK: Utf8JSONReader convenience initializers and mutators
+// MARK: WillSet convenience initializers and mutators
 
-extension Utf8JSONReader {
+extension WillSet {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Utf8JSONReader.self, from: data)
+        self = try newJSONDecoder().decode(WillSet.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15510,10 +16038,10 @@ extension Utf8JSONReader {
     }
 
     func with(
-        utf8JSONReader: Int? = nil
-    ) -> Utf8JSONReader {
-        return Utf8JSONReader(
-            utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader
+        willSetWillSet: Int? = nil
+    ) -> WillSet {
+        return WillSet(
+            willSetWillSet: willSetWillSet ?? self.willSetWillSet
         )
     }
 
@@ -15526,20 +16054,20 @@ extension Utf8JSONReader {
     }
 }
 
-// MARK: - Utf8JSONWriter
-struct Utf8JSONWriter: Codable {
-    let utf8JSONWriter: Int
+// MARK: - Unsafe
+struct Unsafe: Codable {
+    let unsafe: Int
 
     enum CodingKeys: String, CodingKey {
-        case utf8JSONWriter = "Utf8JsonWriter"
+        case unsafe = "unsafe"
     }
 }
 
-// MARK: Utf8JSONWriter convenience initializers and mutators
+// MARK: Unsafe convenience initializers and mutators
 
-extension Utf8JSONWriter {
+extension Unsafe {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Utf8JSONWriter.self, from: data)
+        self = try newJSONDecoder().decode(Unsafe.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15554,10 +16082,10 @@ extension Utf8JSONWriter {
     }
 
     func with(
-        utf8JSONWriter: Int? = nil
-    ) -> Utf8JSONWriter {
-        return Utf8JSONWriter(
-            utf8JSONWriter: utf8JSONWriter ?? self.utf8JSONWriter
+        unsafe: Int? = nil
+    ) -> Unsafe {
+        return Unsafe(
+            unsafe: unsafe ?? self.unsafe
         )
     }
 
@@ -15570,20 +16098,20 @@ extension Utf8JSONWriter {
     }
 }
 
-// MARK: - UUIDClass
-struct UUIDClass: Codable {
-    let uuid: Int
+// MARK: - Unsigned
+struct Unsigned: Codable {
+    let unsigned: Int
 
     enum CodingKeys: String, CodingKey {
-        case uuid = "UUID"
+        case unsigned = "unsigned"
     }
 }
 
-// MARK: UUIDClass convenience initializers and mutators
+// MARK: Unsigned convenience initializers and mutators
 
-extension UUIDClass {
+extension Unsigned {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(UUIDClass.self, from: data)
+        self = try newJSONDecoder().decode(Unsigned.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15598,10 +16126,10 @@ extension UUIDClass {
     }
 
     func with(
-        uuid: Int? = nil
-    ) -> UUIDClass {
-        return UUIDClass(
-            uuid: uuid ?? self.uuid
+        unsigned: Int? = nil
+    ) -> Unsigned {
+        return Unsigned(
+            unsigned: unsigned ?? self.unsigned
         )
     }
 
@@ -15614,20 +16142,20 @@ extension UUIDClass {
     }
 }
 
-// MARK: - Virtual
-struct Virtual: Codable {
-    let virtual: Int
+// MARK: - Ushort
+struct Ushort: Codable {
+    let ushort: Int
 
     enum CodingKeys: String, CodingKey {
-        case virtual = "virtual"
+        case ushort = "ushort"
     }
 }
 
-// MARK: Virtual convenience initializers and mutators
+// MARK: Ushort convenience initializers and mutators
 
-extension Virtual {
+extension Ushort {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Virtual.self, from: data)
+        self = try newJSONDecoder().decode(Ushort.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15642,10 +16170,10 @@ extension Virtual {
     }
 
     func with(
-        virtual: Int? = nil
-    ) -> Virtual {
-        return Virtual(
-            virtual: virtual ?? self.virtual
+        ushort: Int? = nil
+    ) -> Ushort {
+        return Ushort(
+            ushort: ushort ?? self.ushort
         )
     }
 
@@ -15658,44 +16186,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: - Using
+struct Using: Codable {
+    let using: 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 using = "using"
     }
 }
 
-// MARK: Obj6 convenience initializers and mutators
+// MARK: Using convenience initializers and mutators
 
-extension Obj6 {
+extension Using {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Obj6.self, from: data)
+        self = try newJSONDecoder().decode(Using.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15710,34 +16214,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
+        using: Int? = nil
+    ) -> Using {
+        return Using(
+            using: using ?? self.using
         )
     }
 
@@ -15750,20 +16230,20 @@ extension Obj6 {
     }
 }
 
-// MARK: - Weak
-struct Weak: Codable {
-    let weakWeak: Int
+// MARK: - Utf8JSONReader
+struct Utf8JSONReader: Codable {
+    let utf8JSONReader: Int
 
     enum CodingKeys: String, CodingKey {
-        case weakWeak = "weak"
+        case utf8JSONReader = "Utf8JsonReader"
     }
 }
 
-// MARK: Weak convenience initializers and mutators
+// MARK: Utf8JSONReader convenience initializers and mutators
 
-extension Weak {
+extension Utf8JSONReader {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Weak.self, from: data)
+        self = try newJSONDecoder().decode(Utf8JSONReader.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15778,10 +16258,10 @@ extension Weak {
     }
 
     func with(
-        weakWeak: Int? = nil
-    ) -> Weak {
-        return Weak(
-            weakWeak: weakWeak ?? self.weakWeak
+        utf8JSONReader: Int? = nil
+    ) -> Utf8JSONReader {
+        return Utf8JSONReader(
+            utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader
         )
     }
 
@@ -15794,20 +16274,20 @@ extension Weak {
     }
 }
 
-// MARK: - Where
-struct Where: Codable {
-    let whereWhere: Int
+// MARK: - Utf8JSONWriter
+struct Utf8JSONWriter: Codable {
+    let utf8JSONWriter: Int
 
     enum CodingKeys: String, CodingKey {
-        case whereWhere = "where"
+        case utf8JSONWriter = "Utf8JsonWriter"
     }
 }
 
-// MARK: Where convenience initializers and mutators
+// MARK: Utf8JSONWriter convenience initializers and mutators
 
-extension Where {
+extension Utf8JSONWriter {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Where.self, from: data)
+        self = try newJSONDecoder().decode(Utf8JSONWriter.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15822,10 +16302,10 @@ extension Where {
     }
 
     func with(
-        whereWhere: Int? = nil
-    ) -> Where {
-        return Where(
-            whereWhere: whereWhere ?? self.whereWhere
+        utf8JSONWriter: Int? = nil
+    ) -> Utf8JSONWriter {
+        return Utf8JSONWriter(
+            utf8JSONWriter: utf8JSONWriter ?? self.utf8JSONWriter
         )
     }
 
@@ -15838,20 +16318,20 @@ extension Where {
     }
 }
 
-// MARK: - While
-struct While: Codable {
-    let whileWhile: Int
+// MARK: - UUIDClass
+struct UUIDClass: Codable {
+    let uuid: Int
 
     enum CodingKeys: String, CodingKey {
-        case whileWhile = "while"
+        case uuid = "UUID"
     }
 }
 
-// MARK: While convenience initializers and mutators
+// MARK: UUIDClass convenience initializers and mutators
 
-extension While {
+extension UUIDClass {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(While.self, from: data)
+        self = try newJSONDecoder().decode(UUIDClass.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15866,10 +16346,10 @@ extension While {
     }
 
     func with(
-        whileWhile: Int? = nil
-    ) -> While {
-        return While(
-            whileWhile: whileWhile ?? self.whileWhile
+        uuid: Int? = nil
+    ) -> UUIDClass {
+        return UUIDClass(
+            uuid: uuid ?? self.uuid
         )
     }
 
@@ -15882,20 +16362,20 @@ extension While {
     }
 }
 
-// MARK: - WillSet
-struct WillSet: Codable {
-    let willSetWillSet: Int
+// MARK: - Virtual
+struct Virtual: Codable {
+    let virtual: Int
 
     enum CodingKeys: String, CodingKey {
-        case willSetWillSet = "willSet"
+        case virtual = "virtual"
     }
 }
 
-// MARK: WillSet convenience initializers and mutators
+// MARK: Virtual convenience initializers and mutators
 
-extension WillSet {
+extension Virtual {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(WillSet.self, from: data)
+        self = try newJSONDecoder().decode(Virtual.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15910,10 +16390,10 @@ extension WillSet {
     }
 
     func with(
-        willSetWillSet: Int? = nil
-    ) -> WillSet {
-        return WillSet(
-            willSetWillSet: willSetWillSet ?? self.willSetWillSet
+        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..1ff03fe 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
@@ -93,6 +93,7 @@ extension TopLevel {
     let andEq: AndEq
     let any: AnyClass
     let array: Array
+    let arrayNode: ArrayNode
     let asm: ASM
     let assert: Assert
     let async: Async
@@ -106,6 +107,7 @@ extension TopLevel {
     let bitor: Bitor
     let bool: BOOLClass
     let boolean: Boolean
+    let booleanNode: BooleanNode
     let bycopy: Bycopy
     let byref: Byref
     let byte: Byte
@@ -132,8 +134,6 @@ extension TopLevel {
     let constructor: Constructor
     let convert: Convert
     let converter: Converter
-    let cultureInfo: CultureInfo
-    let date: DateClass
     let dummy: Int
     let empty: Empty
     let imaginery: Imaginery
@@ -160,6 +160,7 @@ extension TopLevel {
         case andEq = "and_eq"
         case any = "Any"
         case array = "array"
+        case arrayNode = "ArrayNode"
         case asm = "asm"
         case assert = "assert"
         case async = "async"
@@ -173,6 +174,7 @@ extension TopLevel {
         case bitor = "bitor"
         case bool = "BOOL"
         case boolean = "boolean"
+        case booleanNode = "BooleanNode"
         case bycopy = "bycopy"
         case byref = "byref"
         case byte = "byte"
@@ -199,8 +201,6 @@ extension TopLevel {
         case constructor = "constructor"
         case convert = "convert"
         case converter = "converter"
-        case cultureInfo = "CultureInfo"
-        case date = "date"
         case dummy = "dummy"
         case empty = "_"
         case imaginery = "_Imaginery"
@@ -220,7 +220,7 @@ extension TopLevel {
         case purpleClass = "class"
     }
 
-    init(abstract: Abstract, alignas: Alignas, alignof: Alignof, and: And, andEq: AndEq, any: AnyClass, array: Array, asm: ASM, assert: Assert, async: Async, atomic: Atomic, atomicCancel: AtomicCancel, atomicCommit: AtomicCommit, atomicNoexcept: AtomicNoexcept, auto: Auto, base: Base, bitand: Bitand, bitor: Bitor, bool: BOOLClass, boolean: Boolean, bycopy: Bycopy, byref: Byref, byte: Byte, calendar: CalendarClass, chan: Chan, char: Char, char16T: Char16T, char32T: Char32T, checked: Checked, clone: Clone, coAwait: CoAwait, coReturn: CoReturn, coYield: CoYield, codable: CodableClass, codingKey: CodingKeyClass, codingKeys: CodingKeysClass, compl: Compl, complex: Complex, concept: Concept, console: Console, const: Const, constCast: ConstCast, constexpr: Constexpr, constructor: Constructor, convert: Convert, converter: Converter, cultureInfo: CultureInfo, date: DateClass, dummy: Int, empty: Empty, imaginery: Imaginery, obj1Any: Obj1Any, obj1As: As, obj1Associatedtype: Associatedtype, obj1Associativity: Associativity, obj1Await: Await, obj1Bool: BoolClass, obj1Break: Break, obj1Case: Case, obj1Catch: Catch, obj1Class: Class, obj1Continue: Continue, obj1Convenience: Convenience, purpleBool: Obj1Bool, purpleClass: ClassClass) {
+    init(abstract: Abstract, alignas: Alignas, alignof: Alignof, and: And, andEq: AndEq, any: AnyClass, array: Array, arrayNode: ArrayNode, asm: ASM, assert: Assert, async: Async, atomic: Atomic, atomicCancel: AtomicCancel, atomicCommit: AtomicCommit, atomicNoexcept: AtomicNoexcept, auto: Auto, base: Base, bitand: Bitand, bitor: Bitor, bool: BOOLClass, boolean: Boolean, booleanNode: BooleanNode, bycopy: Bycopy, byref: Byref, byte: Byte, calendar: CalendarClass, chan: Chan, char: Char, char16T: Char16T, char32T: Char32T, checked: Checked, clone: Clone, coAwait: CoAwait, coReturn: CoReturn, coYield: CoYield, codable: CodableClass, codingKey: CodingKeyClass, codingKeys: CodingKeysClass, compl: Compl, complex: Complex, concept: Concept, console: Console, const: Const, constCast: ConstCast, constexpr: Constexpr, constructor: Constructor, convert: Convert, converter: Converter, dummy: Int, empty: Empty, imaginery: Imaginery, obj1Any: Obj1Any, obj1As: As, obj1Associatedtype: Associatedtype, obj1Associativity: Associativity, obj1Await: Await, obj1Bool: BoolClass, obj1Break: Break, obj1Case: Case, obj1Catch: Catch, obj1Class: Class, obj1Continue: Continue, obj1Convenience: Convenience, purpleBool: Obj1Bool, purpleClass: ClassClass) {
         self.abstract = abstract
         self.alignas = alignas
         self.alignof = alignof
@@ -228,6 +228,7 @@ extension TopLevel {
         self.andEq = andEq
         self.any = any
         self.array = array
+        self.arrayNode = arrayNode
         self.asm = asm
         self.assert = assert
         self.async = async
@@ -241,6 +242,7 @@ extension TopLevel {
         self.bitor = bitor
         self.bool = bool
         self.boolean = boolean
+        self.booleanNode = booleanNode
         self.bycopy = bycopy
         self.byref = byref
         self.byte = byte
@@ -267,8 +269,6 @@ extension TopLevel {
         self.constructor = constructor
         self.convert = convert
         self.converter = converter
-        self.cultureInfo = cultureInfo
-        self.date = date
         self.dummy = dummy
         self.empty = empty
         self.imaginery = imaginery
@@ -294,7 +294,7 @@ extension TopLevel {
 extension Obj1 {
     convenience init(data: Data) throws {
         let me = try newJSONDecoder().decode(Obj1.self, from: data)
-        self.init(abstract: me.abstract, alignas: me.alignas, alignof: me.alignof, and: me.and, andEq: me.andEq, any: me.any, array: me.array, asm: me.asm, assert: me.assert, async: me.async, atomic: me.atomic, atomicCancel: me.atomicCancel, atomicCommit: me.atomicCommit, atomicNoexcept: me.atomicNoexcept, auto: me.auto, base: me.base, bitand: me.bitand, bitor: me.bitor, bool: me.bool, boolean: me.boolean, bycopy: me.bycopy, byref: me.byref, byte: me.byte, calendar: me.calendar, chan: me.chan, char: me.char, char16T: me.char16T, char32T: me.char32T, checked: me.checked, clone: me.clone, coAwait: me.coAwait, coReturn: me.coReturn, coYield: me.coYield, codable: me.codable, codingKey: me.codingKey, codingKeys: me.codingKeys, compl: me.compl, complex: me.complex, concept: me.concept, console: me.console, const: me.const, constCast: me.constCast, constexpr: me.constexpr, constructor: me.constructor, convert: me.convert, converter: me.converter, cultureInfo: me.cultureInfo, date: me.date, dummy: me.dummy, empty: me.empty, imaginery: me.imaginery, obj1Any: me.obj1Any, obj1As: me.obj1As, obj1Associatedtype: me.obj1Associatedtype, obj1Associativity: me.obj1Associativity, obj1Await: me.obj1Await, obj1Bool: me.obj1Bool, obj1Break: me.obj1Break, obj1Case: me.obj1Case, obj1Catch: me.obj1Catch, obj1Class: me.obj1Class, obj1Continue: me.obj1Continue, obj1Convenience: me.obj1Convenience, purpleBool: me.purpleBool, purpleClass: me.purpleClass)
+        self.init(abstract: me.abstract, alignas: me.alignas, alignof: me.alignof, and: me.and, andEq: me.andEq, any: me.any, array: me.array, arrayNode: me.arrayNode, asm: me.asm, assert: me.assert, async: me.async, atomic: me.atomic, atomicCancel: me.atomicCancel, atomicCommit: me.atomicCommit, atomicNoexcept: me.atomicNoexcept, auto: me.auto, base: me.base, bitand: me.bitand, bitor: me.bitor, bool: me.bool, boolean: me.boolean, booleanNode: me.booleanNode, bycopy: me.bycopy, byref: me.byref, byte: me.byte, calendar: me.calendar, chan: me.chan, char: me.char, char16T: me.char16T, char32T: me.char32T, checked: me.checked, clone: me.clone, coAwait: me.coAwait, coReturn: me.coReturn, coYield: me.coYield, codable: me.codable, codingKey: me.codingKey, codingKeys: me.codingKeys, compl: me.compl, complex: me.complex, concept: me.concept, console: me.console, const: me.const, constCast: me.constCast, constexpr: me.constexpr, constructor: me.constructor, convert: me.convert, converter: me.converter, dummy: me.dummy, empty: me.empty, imaginery: me.imaginery, obj1Any: me.obj1Any, obj1As: me.obj1As, obj1Associatedtype: me.obj1Associatedtype, obj1Associativity: me.obj1Associativity, obj1Await: me.obj1Await, obj1Bool: me.obj1Bool, obj1Break: me.obj1Break, obj1Case: me.obj1Case, obj1Catch: me.obj1Catch, obj1Class: me.obj1Class, obj1Continue: me.obj1Continue, obj1Convenience: me.obj1Convenience, purpleBool: me.purpleBool, purpleClass: me.purpleClass)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -316,6 +316,7 @@ extension Obj1 {
         andEq: AndEq? = nil,
         any: AnyClass? = nil,
         array: Array? = nil,
+        arrayNode: ArrayNode? = nil,
         asm: ASM? = nil,
         assert: Assert? = nil,
         async: Async? = nil,
@@ -329,6 +330,7 @@ extension Obj1 {
         bitor: Bitor? = nil,
         bool: BOOLClass? = nil,
         boolean: Boolean? = nil,
+        booleanNode: BooleanNode? = nil,
         bycopy: Bycopy? = nil,
         byref: Byref? = nil,
         byte: Byte? = nil,
@@ -355,8 +357,6 @@ extension Obj1 {
         constructor: Constructor? = nil,
         convert: Convert? = nil,
         converter: Converter? = nil,
-        cultureInfo: CultureInfo? = nil,
-        date: DateClass? = nil,
         dummy: Int? = nil,
         empty: Empty? = nil,
         imaginery: Imaginery? = nil,
@@ -383,6 +383,7 @@ extension Obj1 {
             andEq: andEq ?? self.andEq,
             any: any ?? self.any,
             array: array ?? self.array,
+            arrayNode: arrayNode ?? self.arrayNode,
             asm: asm ?? self.asm,
             assert: assert ?? self.assert,
             async: async ?? self.async,
@@ -396,6 +397,7 @@ extension Obj1 {
             bitor: bitor ?? self.bitor,
             bool: bool ?? self.bool,
             boolean: boolean ?? self.boolean,
+            booleanNode: booleanNode ?? self.booleanNode,
             bycopy: bycopy ?? self.bycopy,
             byref: byref ?? self.byref,
             byte: byte ?? self.byte,
@@ -422,8 +424,6 @@ extension Obj1 {
             constructor: constructor ?? self.constructor,
             convert: convert ?? self.convert,
             converter: converter ?? self.converter,
-            cultureInfo: cultureInfo ?? self.cultureInfo,
-            date: date ?? self.date,
             dummy: dummy ?? self.dummy,
             empty: empty ?? self.empty,
             imaginery: imaginery ?? self.imaginery,
@@ -796,6 +796,55 @@ extension Array {
     }
 }
 
+// MARK: - ArrayNode
+@objcMembers class ArrayNode: NSObject, Codable {
+    let arrayNode: Int
+
+    enum CodingKeys: String, CodingKey {
+        case arrayNode = "ArrayNode"
+    }
+
+    init(arrayNode: Int) {
+        self.arrayNode = arrayNode
+    }
+}
+
+// MARK: ArrayNode convenience initializers and mutators
+
+extension ArrayNode {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(ArrayNode.self, from: data)
+        self.init(arrayNode: me.arrayNode)
+    }
+
+    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(
+        arrayNode: Int? = nil
+    ) -> ArrayNode {
+        return ArrayNode(
+            arrayNode: arrayNode ?? self.arrayNode
+        )
+    }
+
+    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: - ASM
 @objcMembers class ASM: NSObject, Codable {
     let asm: Int
@@ -1433,6 +1482,55 @@ extension Boolean {
     }
 }
 
+// MARK: - BooleanNode
+@objcMembers class BooleanNode: NSObject, Codable {
+    let booleanNode: Int
+
+    enum CodingKeys: String, CodingKey {
+        case booleanNode = "BooleanNode"
+    }
+
+    init(booleanNode: Int) {
+        self.booleanNode = booleanNode
+    }
+}
+
+// MARK: BooleanNode convenience initializers and mutators
+
+extension BooleanNode {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(BooleanNode.self, from: data)
+        self.init(booleanNode: me.booleanNode)
+    }
+
+    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(
+        booleanNode: Int? = nil
+    ) -> BooleanNode {
+        return BooleanNode(
+            booleanNode: booleanNode ?? self.booleanNode
+        )
+    }
+
+    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: - Bycopy
 @objcMembers class Bycopy: NSObject, Codable {
     let bycopy: Int
@@ -2707,104 +2805,6 @@ extension Converter {
     }
 }
 
-// MARK: - CultureInfo
-@objcMembers class CultureInfo: NSObject, Codable {
-    let cultureInfo: Int
-
-    enum CodingKeys: String, CodingKey {
-        case cultureInfo = "CultureInfo"
-    }
-
-    init(cultureInfo: Int) {
-        self.cultureInfo = cultureInfo
-    }
-}
-
-// MARK: CultureInfo convenience initializers and mutators
-
-extension CultureInfo {
-    convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(CultureInfo.self, from: data)
-        self.init(cultureInfo: me.cultureInfo)
-    }
-
-    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(
-        cultureInfo: Int? = nil
-    ) -> CultureInfo {
-        return CultureInfo(
-            cultureInfo: cultureInfo ?? self.cultureInfo
-        )
-    }
-
-    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: - DateClass
-@objcMembers class DateClass: NSObject, Codable {
-    let date: Int
-
-    enum CodingKeys: String, CodingKey {
-        case date = "date"
-    }
-
-    init(date: Int) {
-        self.date = date
-    }
-}
-
-// MARK: DateClass convenience initializers and mutators
-
-extension DateClass {
-    convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(DateClass.self, from: data)
-        self.init(date: me.date)
-    }
-
-    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(
-        date: Int? = nil
-    ) -> DateClass {
-        return DateClass(
-            date: date ?? self.date
-        )
-    }
-
-    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: - Empty
 @objcMembers class Empty: NSObject, Codable {
     let empty: Int
@@ -3591,6 +3591,8 @@ extension ClassClass {
 
 // MARK: - Obj2
 @objcMembers class Obj2: NSObject, Codable {
+    let cultureInfo: CultureInfo
+    let date: DateClass
     let dateFormatter: DateFormatterClass
     let dateOnly: DateOnly
     let dateOnlyConverter: DateOnlyConverter
@@ -3608,9 +3610,11 @@ extension ClassClass {
     let del: Del
     let delegate: Delegate
     let delete: Delete
+    let deserializationFeature: DeserializationFeature
     let dict: Dict
     let dictionary: Dictionary
     let double: DoubleClass
+    let doubleNode: DoubleNode
     let dummy: Int
     let dynamicCast: DynamicCast
     let elif: Elif
@@ -3636,9 +3640,6 @@ extension ClassClass {
     let from: From
     let fromJSON: FromJSON
     let function: Function
-    let global: Global
-    let go: Go
-    let goto: Goto
     let obj2Default: Default
     let obj2Defer: Defer
     let obj2Deinit: Deinit
@@ -3654,10 +3655,11 @@ extension ClassClass {
     let obj2Final: Final
     let obj2For: For
     let obj2Func: Func
-    let obj2Get: Get
     let purpleFalse: FalseClass
 
     enum CodingKeys: String, CodingKey {
+        case cultureInfo = "CultureInfo"
+        case date = "date"
         case dateFormatter = "DateFormatter"
         case dateOnly = "DateOnly"
         case dateOnlyConverter = "DateOnlyConverter"
@@ -3675,9 +3677,11 @@ extension ClassClass {
         case del = "del"
         case delegate = "delegate"
         case delete = "delete"
+        case deserializationFeature = "DeserializationFeature"
         case dict = "dict"
         case dictionary = "dictionary"
         case double = "double"
+        case doubleNode = "DoubleNode"
         case dummy = "dummy"
         case dynamicCast = "dynamic_cast"
         case elif = "elif"
@@ -3703,9 +3707,6 @@ extension ClassClass {
         case from = "from"
         case fromJSON = "from_json"
         case function = "function"
-        case global = "global"
-        case go = "go"
-        case goto = "goto"
         case obj2Default = "default"
         case obj2Defer = "defer"
         case obj2Deinit = "deinit"
@@ -3721,11 +3722,12 @@ extension ClassClass {
         case obj2Final = "final"
         case obj2For = "for"
         case obj2Func = "func"
-        case obj2Get = "get"
         case purpleFalse = "false"
     }
 
-    init(dateFormatter: DateFormatterClass, dateOnly: DateOnly, dateOnlyConverter: DateOnlyConverter, dateParseHandling: DateParseHandling, dateTime: DateTime, dateTimeStyles: DateTimeStyles, debugger: Debugger, decimal: Decimal, declare: Declare, decltype: Decltype, decodeString: DecodeString, decoder: DecoderClass, decodingError: DecodingErrorClass, def: Def, del: Del, delegate: Delegate, delete: Delete, dict: Dict, dictionary: Dictionary, double: DoubleClass, dummy: Int, dynamicCast: DynamicCast, elif: Elif, encodeQuickType: EncodeQuickType, encoder: EncoderClass, enumValues: EnumValues, equalityContract: EqualityContract, equatable: Equatable, event: Event, except: Except, exception: Exception, explicit: Explicit, export: Export, exposing: Exposing, extends: Extends, extern: Extern, finally: Finally, fixed: Fixed, float: Float, foreach: Foreach, formatException: FormatException, friend: Friend, from: From, fromJSON: FromJSON, function: Function, global: Global, go: Go, goto: Goto, obj2Default: Default, obj2Defer: Defer, obj2Deinit: Deinit, obj2DidSet: DidSet, obj2Do: Do, obj2Dynamic: Dynamic, obj2Else: Else, obj2Enum: Enum, obj2Extension: Extension, obj2Fallthrough: Fallthrough, obj2False: False, obj2Fileprivate: Fileprivate, obj2Final: Final, obj2For: For, obj2Func: Func, obj2Get: Get, purpleFalse: FalseClass) {
+    init(cultureInfo: CultureInfo, date: DateClass, dateFormatter: DateFormatterClass, dateOnly: DateOnly, dateOnlyConverter: DateOnlyConverter, dateParseHandling: DateParseHandling, dateTime: DateTime, dateTimeStyles: DateTimeStyles, debugger: Debugger, decimal: Decimal, declare: Declare, decltype: Decltype, decodeString: DecodeString, decoder: DecoderClass, decodingError: DecodingErrorClass, def: Def, del: Del, delegate: Delegate, delete: Delete, deserializationFeature: DeserializationFeature, dict: Dict, dictionary: Dictionary, double: DoubleClass, doubleNode: DoubleNode, dummy: Int, dynamicCast: DynamicCast, elif: Elif, encodeQuickType: EncodeQuickType, encoder: EncoderClass, enumValues: EnumValues, equalityContract: EqualityContract, equatable: Equatable, event: Event, except: Except, exception: Exception, explicit: Explicit, export: Export, exposing: Exposing, extends: Extends, extern: Extern, finally: Finally, fixed: Fixed, float: Float, foreach: Foreach, formatException: FormatException, friend: Friend, from: From, fromJSON: FromJSON, function: Function, obj2Default: Default, obj2Defer: Defer, obj2Deinit: Deinit, obj2DidSet: DidSet, obj2Do: Do, obj2Dynamic: Dynamic, obj2Else: Else, obj2Enum: Enum, obj2Extension: Extension, obj2Fallthrough: Fallthrough, obj2False: False, obj2Fileprivate: Fileprivate, obj2Final: Final, obj2For: For, obj2Func: Func, purpleFalse: FalseClass) {
+        self.cultureInfo = cultureInfo
+        self.date = date
         self.dateFormatter = dateFormatter
         self.dateOnly = dateOnly
         self.dateOnlyConverter = dateOnlyConverter
@@ -3743,9 +3745,11 @@ extension ClassClass {
         self.del = del
         self.delegate = delegate
         self.delete = delete
+        self.deserializationFeature = deserializationFeature
         self.dict = dict
         self.dictionary = dictionary
         self.double = double
+        self.doubleNode = doubleNode
         self.dummy = dummy
         self.dynamicCast = dynamicCast
         self.elif = elif
@@ -3771,9 +3775,6 @@ extension ClassClass {
         self.from = from
         self.fromJSON = fromJSON
         self.function = function
-        self.global = global
-        self.go = go
-        self.goto = goto
         self.obj2Default = obj2Default
         self.obj2Defer = obj2Defer
         self.obj2Deinit = obj2Deinit
@@ -3789,7 +3790,6 @@ extension ClassClass {
         self.obj2Final = obj2Final
         self.obj2For = obj2For
         self.obj2Func = obj2Func
-        self.obj2Get = obj2Get
         self.purpleFalse = purpleFalse
     }
 }
@@ -3799,7 +3799,7 @@ extension ClassClass {
 extension Obj2 {
     convenience init(data: Data) throws {
         let me = try newJSONDecoder().decode(Obj2.self, from: data)
-        self.init(dateFormatter: me.dateFormatter, dateOnly: me.dateOnly, dateOnlyConverter: me.dateOnlyConverter, dateParseHandling: me.dateParseHandling, dateTime: me.dateTime, dateTimeStyles: me.dateTimeStyles, debugger: me.debugger, decimal: me.decimal, declare: me.declare, decltype: me.decltype, decodeString: me.decodeString, decoder: me.decoder, decodingError: me.decodingError, def: me.def, del: me.del, delegate: me.delegate, delete: me.delete, dict: me.dict, dictionary: me.dictionary, double: me.double, dummy: me.dummy, dynamicCast: me.dynamicCast, elif: me.elif, encodeQuickType: me.encodeQuickType, encoder: me.encoder, enumValues: me.enumValues, equalityContract: me.equalityContract, equatable: me.equatable, event: me.event, except: me.except, exception: me.exception, explicit: me.explicit, export: me.export, exposing: me.exposing, extends: me.extends, extern: me.extern, finally: me.finally, fixed: me.fixed, float: me.float, foreach: me.foreach, formatException: me.formatException, friend: me.friend, from: me.from, fromJSON: me.fromJSON, function: me.function, global: me.global, go: me.go, goto: me.goto, obj2Default: me.obj2Default, obj2Defer: me.obj2Defer, obj2Deinit: me.obj2Deinit, obj2DidSet: me.obj2DidSet, obj2Do: me.obj2Do, obj2Dynamic: me.obj2Dynamic, obj2Else: me.obj2Else, obj2Enum: me.obj2Enum, obj2Extension: me.obj2Extension, obj2Fallthrough: me.obj2Fallthrough, obj2False: me.obj2False, obj2Fileprivate: me.obj2Fileprivate, obj2Final: me.obj2Final, obj2For: me.obj2For, obj2Func: me.obj2Func, obj2Get: me.obj2Get, purpleFalse: me.purpleFalse)
+        self.init(cultureInfo: me.cultureInfo, date: me.date, dateFormatter: me.dateFormatter, dateOnly: me.dateOnly, dateOnlyConverter: me.dateOnlyConverter, dateParseHandling: me.dateParseHandling, dateTime: me.dateTime, dateTimeStyles: me.dateTimeStyles, debugger: me.debugger, decimal: me.decimal, declare: me.declare, decltype: me.decltype, decodeString: me.decodeString, decoder: me.decoder, decodingError: me.decodingError, def: me.def, del: me.del, delegate: me.delegate, delete: me.delete, deserializationFeature: me.deserializationFeature, dict: me.dict, dictionary: me.dictionary, double: me.double, doubleNode: me.doubleNode, dummy: me.dummy, dynamicCast: me.dynamicCast, elif: me.elif, encodeQuickType: me.encodeQuickType, encoder: me.encoder, enumValues: me.enumValues, equalityContract: me.equalityContract, equatable: me.equatable, event: me.event, except: me.except, exception: me.exception, explicit: me.explicit, export: me.export, exposing: me.exposing, extends: me.extends, extern: me.extern, finally: me.finally, fixed: me.fixed, float: me.float, foreach: me.foreach, formatException: me.formatException, friend: me.friend, from: me.from, fromJSON: me.fromJSON, function: me.function, obj2Default: me.obj2Default, obj2Defer: me.obj2Defer, obj2Deinit: me.obj2Deinit, obj2DidSet: me.obj2DidSet, obj2Do: me.obj2Do, obj2Dynamic: me.obj2Dynamic, obj2Else: me.obj2Else, obj2Enum: me.obj2Enum, obj2Extension: me.obj2Extension, obj2Fallthrough: me.obj2Fallthrough, obj2False: me.obj2False, obj2Fileprivate: me.obj2Fileprivate, obj2Final: me.obj2Final, obj2For: me.obj2For, obj2Func: me.obj2Func, purpleFalse: me.purpleFalse)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -3814,6 +3814,8 @@ extension Obj2 {
     }
 
     func with(
+        cultureInfo: CultureInfo? = nil,
+        date: DateClass? = nil,
         dateFormatter: DateFormatterClass? = nil,
         dateOnly: DateOnly? = nil,
         dateOnlyConverter: DateOnlyConverter? = nil,
@@ -3831,9 +3833,11 @@ extension Obj2 {
         del: Del? = nil,
         delegate: Delegate? = nil,
         delete: Delete? = nil,
+        deserializationFeature: DeserializationFeature? = nil,
         dict: Dict? = nil,
         dictionary: Dictionary? = nil,
         double: DoubleClass? = nil,
+        doubleNode: DoubleNode? = nil,
         dummy: Int? = nil,
         dynamicCast: DynamicCast? = nil,
         elif: Elif? = nil,
@@ -3859,9 +3863,6 @@ extension Obj2 {
         from: From? = nil,
         fromJSON: FromJSON? = nil,
         function: Function? = nil,
-        global: Global? = nil,
-        go: Go? = nil,
-        goto: Goto? = nil,
         obj2Default: Default? = nil,
         obj2Defer: Defer? = nil,
         obj2Deinit: Deinit? = nil,
@@ -3877,10 +3878,11 @@ extension Obj2 {
         obj2Final: Final? = nil,
         obj2For: For? = nil,
         obj2Func: Func? = nil,
-        obj2Get: Get? = nil,
         purpleFalse: FalseClass? = nil
     ) -> Obj2 {
         return Obj2(
+            cultureInfo: cultureInfo ?? self.cultureInfo,
+            date: date ?? self.date,
             dateFormatter: dateFormatter ?? self.dateFormatter,
             dateOnly: dateOnly ?? self.dateOnly,
             dateOnlyConverter: dateOnlyConverter ?? self.dateOnlyConverter,
@@ -3898,9 +3900,11 @@ extension Obj2 {
             del: del ?? self.del,
             delegate: delegate ?? self.delegate,
             delete: delete ?? self.delete,
+            deserializationFeature: deserializationFeature ?? self.deserializationFeature,
             dict: dict ?? self.dict,
             dictionary: dictionary ?? self.dictionary,
             double: double ?? self.double,
+            doubleNode: doubleNode ?? self.doubleNode,
             dummy: dummy ?? self.dummy,
             dynamicCast: dynamicCast ?? self.dynamicCast,
             elif: elif ?? self.elif,
@@ -3926,9 +3930,6 @@ extension Obj2 {
             from: from ?? self.from,
             fromJSON: fromJSON ?? self.fromJSON,
             function: function ?? self.function,
-            global: global ?? self.global,
-            go: go ?? self.go,
-            goto: goto ?? self.goto,
             obj2Default: obj2Default ?? self.obj2Default,
             obj2Defer: obj2Defer ?? self.obj2Defer,
             obj2Deinit: obj2Deinit ?? self.obj2Deinit,
@@ -3944,7 +3945,6 @@ extension Obj2 {
             obj2Final: obj2Final ?? self.obj2Final,
             obj2For: obj2For ?? self.obj2For,
             obj2Func: obj2Func ?? self.obj2Func,
-            obj2Get: obj2Get ?? self.obj2Get,
             purpleFalse: purpleFalse ?? self.purpleFalse
         )
     }
@@ -3958,25 +3958,25 @@ extension Obj2 {
     }
 }
 
-// MARK: - DateFormatterClass
-@objcMembers class DateFormatterClass: NSObject, Codable {
-    let dateFormatter: Int
+// MARK: - CultureInfo
+@objcMembers class CultureInfo: NSObject, Codable {
+    let cultureInfo: Int
 
     enum CodingKeys: String, CodingKey {
-        case dateFormatter = "DateFormatter"
+        case cultureInfo = "CultureInfo"
     }
 
-    init(dateFormatter: Int) {
-        self.dateFormatter = dateFormatter
+    init(cultureInfo: Int) {
+        self.cultureInfo = cultureInfo
     }
 }
 
-// MARK: DateFormatterClass convenience initializers and mutators
+// MARK: CultureInfo convenience initializers and mutators
 
-extension DateFormatterClass {
+extension CultureInfo {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(DateFormatterClass.self, from: data)
-        self.init(dateFormatter: me.dateFormatter)
+        let me = try newJSONDecoder().decode(CultureInfo.self, from: data)
+        self.init(cultureInfo: me.cultureInfo)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -3991,10 +3991,10 @@ extension DateFormatterClass {
     }
 
     func with(
-        dateFormatter: Int? = nil
-    ) -> DateFormatterClass {
-        return DateFormatterClass(
-            dateFormatter: dateFormatter ?? self.dateFormatter
+        cultureInfo: Int? = nil
+    ) -> CultureInfo {
+        return CultureInfo(
+            cultureInfo: cultureInfo ?? self.cultureInfo
         )
     }
 
@@ -4007,25 +4007,25 @@ extension DateFormatterClass {
     }
 }
 
-// MARK: - DateOnly
-@objcMembers class DateOnly: NSObject, Codable {
-    let dateOnly: Int
+// MARK: - DateClass
+@objcMembers class DateClass: NSObject, Codable {
+    let date: Int
 
     enum CodingKeys: String, CodingKey {
-        case dateOnly = "DateOnly"
+        case date = "date"
     }
 
-    init(dateOnly: Int) {
-        self.dateOnly = dateOnly
+    init(date: Int) {
+        self.date = date
     }
 }
 
-// MARK: DateOnly convenience initializers and mutators
+// MARK: DateClass convenience initializers and mutators
 
-extension DateOnly {
+extension DateClass {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(DateOnly.self, from: data)
-        self.init(dateOnly: me.dateOnly)
+        let me = try newJSONDecoder().decode(DateClass.self, from: data)
+        self.init(date: me.date)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -4040,11 +4040,109 @@ extension DateOnly {
     }
 
     func with(
-        dateOnly: Int? = nil
-    ) -> DateOnly {
-        return DateOnly(
-            dateOnly: dateOnly ?? self.dateOnly
-        )
+        date: Int? = nil
+    ) -> DateClass {
+        return DateClass(
+            date: date ?? self.date
+        )
+    }
+
+    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: - DateFormatterClass
+@objcMembers class DateFormatterClass: NSObject, Codable {
+    let dateFormatter: Int
+
+    enum CodingKeys: String, CodingKey {
+        case dateFormatter = "DateFormatter"
+    }
+
+    init(dateFormatter: Int) {
+        self.dateFormatter = dateFormatter
+    }
+}
+
+// MARK: DateFormatterClass convenience initializers and mutators
+
+extension DateFormatterClass {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(DateFormatterClass.self, from: data)
+        self.init(dateFormatter: me.dateFormatter)
+    }
+
+    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(
+        dateFormatter: Int? = nil
+    ) -> DateFormatterClass {
+        return DateFormatterClass(
+            dateFormatter: dateFormatter ?? self.dateFormatter
+        )
+    }
+
+    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: - DateOnly
+@objcMembers class DateOnly: NSObject, Codable {
+    let dateOnly: Int
+
+    enum CodingKeys: String, CodingKey {
+        case dateOnly = "DateOnly"
+    }
+
+    init(dateOnly: Int) {
+        self.dateOnly = dateOnly
+    }
+}
+
+// MARK: DateOnly convenience initializers and mutators
+
+extension DateOnly {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(DateOnly.self, from: data)
+        self.init(dateOnly: me.dateOnly)
+    }
+
+    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(
+        dateOnly: Int? = nil
+    ) -> DateOnly {
+        return DateOnly(
+            dateOnly: dateOnly ?? self.dateOnly
+        )
     }
 
     func jsonData() throws -> Data {
@@ -4791,6 +4889,55 @@ extension Delete {
     }
 }
 
+// MARK: - DeserializationFeature
+@objcMembers class DeserializationFeature: NSObject, Codable {
+    let deserializationFeature: Int
+
+    enum CodingKeys: String, CodingKey {
+        case deserializationFeature = "DeserializationFeature"
+    }
+
+    init(deserializationFeature: Int) {
+        self.deserializationFeature = deserializationFeature
+    }
+}
+
+// MARK: DeserializationFeature convenience initializers and mutators
+
+extension DeserializationFeature {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(DeserializationFeature.self, from: data)
+        self.init(deserializationFeature: me.deserializationFeature)
+    }
+
+    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(
+        deserializationFeature: Int? = nil
+    ) -> DeserializationFeature {
+        return DeserializationFeature(
+            deserializationFeature: deserializationFeature ?? self.deserializationFeature
+        )
+    }
+
+    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: - Dict
 @objcMembers class Dict: NSObject, Codable {
     let dict: Int
@@ -4938,6 +5085,55 @@ extension DoubleClass {
     }
 }
 
+// MARK: - DoubleNode
+@objcMembers class DoubleNode: NSObject, Codable {
+    let doubleNode: Int
+
+    enum CodingKeys: String, CodingKey {
+        case doubleNode = "DoubleNode"
+    }
+
+    init(doubleNode: Int) {
+        self.doubleNode = doubleNode
+    }
+}
+
+// MARK: DoubleNode convenience initializers and mutators
+
+extension DoubleNode {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(DoubleNode.self, from: data)
+        self.init(doubleNode: me.doubleNode)
+    }
+
+    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(
+        doubleNode: Int? = nil
+    ) -> DoubleNode {
+        return DoubleNode(
+            doubleNode: doubleNode ?? self.doubleNode
+        )
+    }
+
+    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: - DynamicCast
 @objcMembers class DynamicCast: NSObject, Codable {
     let dynamicCast: Int
@@ -6119,25 +6315,25 @@ extension Function {
     }
 }
 
-// MARK: - Global
-@objcMembers class Global: NSObject, Codable {
-    let global: Int
+// MARK: - Default
+@objcMembers class Default: NSObject, Codable {
+    let defaultDefault: Int
 
     enum CodingKeys: String, CodingKey {
-        case global = "global"
+        case defaultDefault = "default"
     }
 
-    init(global: Int) {
-        self.global = global
+    init(defaultDefault: Int) {
+        self.defaultDefault = defaultDefault
     }
 }
 
-// MARK: Global convenience initializers and mutators
+// MARK: Default convenience initializers and mutators
 
-extension Global {
+extension Default {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Global.self, from: data)
-        self.init(global: me.global)
+        let me = try newJSONDecoder().decode(Default.self, from: data)
+        self.init(defaultDefault: me.defaultDefault)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -6152,10 +6348,10 @@ extension Global {
     }
 
     func with(
-        global: Int? = nil
-    ) -> Global {
-        return Global(
-            global: global ?? self.global
+        defaultDefault: Int? = nil
+    ) -> Default {
+        return Default(
+            defaultDefault: defaultDefault ?? self.defaultDefault
         )
     }
 
@@ -6168,25 +6364,25 @@ extension Global {
     }
 }
 
-// MARK: - Go
-@objcMembers class Go: NSObject, Codable {
-    let go: Int
+// MARK: - Defer
+@objcMembers class Defer: NSObject, Codable {
+    let deferDefer: Int
 
     enum CodingKeys: String, CodingKey {
-        case go = "go"
+        case deferDefer = "defer"
     }
 
-    init(go: Int) {
-        self.go = go
+    init(deferDefer: Int) {
+        self.deferDefer = deferDefer
     }
 }
 
-// MARK: Go convenience initializers and mutators
+// MARK: Defer convenience initializers and mutators
 
-extension Go {
+extension Defer {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Go.self, from: data)
-        self.init(go: me.go)
+        let me = try newJSONDecoder().decode(Defer.self, from: data)
+        self.init(deferDefer: me.deferDefer)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -6201,10 +6397,10 @@ extension Go {
     }
 
     func with(
-        go: Int? = nil
-    ) -> Go {
-        return Go(
-            go: go ?? self.go
+        deferDefer: Int? = nil
+    ) -> Defer {
+        return Defer(
+            deferDefer: deferDefer ?? self.deferDefer
         )
     }
 
@@ -6217,172 +6413,25 @@ extension Go {
     }
 }
 
-// MARK: - Goto
-@objcMembers class Goto: NSObject, Codable {
-    let goto: Int
+// MARK: - Deinit
+@objcMembers class Deinit: NSObject, Codable {
+    let deinitDeinit: Int
 
     enum CodingKeys: String, CodingKey {
-        case goto = "goto"
+        case deinitDeinit = "deinit"
     }
 
-    init(goto: Int) {
-        self.goto = goto
+    init(deinitDeinit: Int) {
+        self.deinitDeinit = deinitDeinit
     }
 }
 
-// MARK: Goto convenience initializers and mutators
+// MARK: Deinit convenience initializers and mutators
 
-extension Goto {
+extension Deinit {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Goto.self, from: data)
-        self.init(goto: me.goto)
-    }
-
-    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(
-        goto: Int? = nil
-    ) -> Goto {
-        return Goto(
-            goto: goto ?? self.goto
-        )
-    }
-
-    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: - Default
-@objcMembers class Default: NSObject, Codable {
-    let defaultDefault: Int
-
-    enum CodingKeys: String, CodingKey {
-        case defaultDefault = "default"
-    }
-
-    init(defaultDefault: Int) {
-        self.defaultDefault = defaultDefault
-    }
-}
-
-// MARK: Default convenience initializers and mutators
-
-extension Default {
-    convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Default.self, from: data)
-        self.init(defaultDefault: me.defaultDefault)
-    }
-
-    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(
-        defaultDefault: Int? = nil
-    ) -> Default {
-        return Default(
-            defaultDefault: defaultDefault ?? self.defaultDefault
-        )
-    }
-
-    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: - Defer
-@objcMembers class Defer: NSObject, Codable {
-    let deferDefer: Int
-
-    enum CodingKeys: String, CodingKey {
-        case deferDefer = "defer"
-    }
-
-    init(deferDefer: Int) {
-        self.deferDefer = deferDefer
-    }
-}
-
-// MARK: Defer convenience initializers and mutators
-
-extension Defer {
-    convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Defer.self, from: data)
-        self.init(deferDefer: me.deferDefer)
-    }
-
-    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(
-        deferDefer: Int? = nil
-    ) -> Defer {
-        return Defer(
-            deferDefer: deferDefer ?? self.deferDefer
-        )
-    }
-
-    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: - Deinit
-@objcMembers class Deinit: NSObject, Codable {
-    let deinitDeinit: Int
-
-    enum CodingKeys: String, CodingKey {
-        case deinitDeinit = "deinit"
-    }
-
-    init(deinitDeinit: Int) {
-        self.deinitDeinit = deinitDeinit
-    }
-}
-
-// MARK: Deinit convenience initializers and mutators
-
-extension Deinit {
-    convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Deinit.self, from: data)
-        self.init(deinitDeinit: me.deinitDeinit)
+        let me = try newJSONDecoder().decode(Deinit.self, from: data)
+        self.init(deinitDeinit: me.deinitDeinit)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -7001,55 +7050,6 @@ extension Func {
     }
 }
 
-// MARK: - Get
-@objcMembers class Get: NSObject, Codable {
-    let getGet: Int
-
-    enum CodingKeys: String, CodingKey {
-        case getGet = "get"
-    }
-
-    init(getGet: Int) {
-        self.getGet = getGet
-    }
-}
-
-// MARK: Get convenience initializers and mutators
-
-extension Get {
-    convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Get.self, from: data)
-        self.init(getGet: me.getGet)
-    }
-
-    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(
-        getGet: Int? = nil
-    ) -> Get {
-        return Get(
-            getGet: getGet ?? self.getGet
-        )
-    }
-
-    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: - FalseClass
 @objcMembers class FalseClass: NSObject, Codable {
     let falseFalse: Int
@@ -7102,6 +7102,9 @@ extension FalseClass {
 // MARK: - Obj3
 @objcMembers class Obj3: NSObject, Codable {
     let dummy: Int
+    let global: Global
+    let go: Go
+    let goto: Goto
     let hasOwnProperty: HasOwnProperty
     let hashCode: HashCode
     let hashable: HashableClass
@@ -7113,6 +7116,7 @@ extension FalseClass {
     let inline: Inline
     let instanceof: Instanceof
     let int: IntClass
+    let intNode: IntNode
     let interface: Interface
     let isoDateTimeOffsetConverter: ISODateTimeOffsetConverter
     let iterable: Iterable
@@ -7139,17 +7143,14 @@ extension FalseClass {
     let locale: LocaleClass
     let lock: Lock
     let long: Long
+    let longNode: LongNode
     let map: Map
     let mapEntry: MapEntry
     let metadataPropertyHandling: MetadataPropertyHandling
     let module: Module
     let mutable: Mutable
     let namespace: Namespace
-    let native: Native
-    let new: New
-    let newtonsoft: Newtonsoft
-    let no: No
-    let noexcept: Noexcept
+    let obj3Get: Get
     let obj3Guard: Guard
     let obj3If: If
     let obj3Import: Import
@@ -7165,10 +7166,12 @@ extension FalseClass {
     let obj3Left: Left
     let obj3Let: Let
     let obj3Mutating: Mutating
-    let obj3Nil: Nil
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
+        case global = "global"
+        case go = "go"
+        case goto = "goto"
         case hasOwnProperty = "hasOwnProperty"
         case hashCode = "hashCode"
         case hashable = "Hashable"
@@ -7180,6 +7183,7 @@ extension FalseClass {
         case inline = "inline"
         case instanceof = "instanceof"
         case int = "int"
+        case intNode = "IntNode"
         case interface = "interface"
         case isoDateTimeOffsetConverter = "IsoDateTimeOffsetConverter"
         case iterable = "iterable"
@@ -7206,17 +7210,14 @@ extension FalseClass {
         case locale = "Locale"
         case lock = "lock"
         case long = "long"
+        case longNode = "LongNode"
         case map = "map"
         case mapEntry = "MapEntry"
         case metadataPropertyHandling = "metadata_property_handling"
         case module = "module"
         case mutable = "mutable"
         case namespace = "namespace"
-        case native = "native"
-        case new = "new"
-        case newtonsoft = "newtonsoft"
-        case no = "NO"
-        case noexcept = "noexcept"
+        case obj3Get = "get"
         case obj3Guard = "guard"
         case obj3If = "if"
         case obj3Import = "import"
@@ -7232,11 +7233,13 @@ extension FalseClass {
         case obj3Left = "left"
         case obj3Let = "let"
         case obj3Mutating = "mutating"
-        case obj3Nil = "nil"
     }
 
-    init(dummy: Int, hasOwnProperty: HasOwnProperty, hashCode: HashCode, hashable: HashableClass, hasher: HasherClass, id: ID, imp: Imp, implements: Implements, implicit: Implicit, inline: Inline, instanceof: Instanceof, int: IntClass, interface: Interface, isoDateTimeOffsetConverter: ISODateTimeOffsetConverter, iterable: Iterable, jdec: Jdec, jenc: Jenc, jpipe: Jpipe, jsonAny: JSONAnyClass, jsonCodingKey: JSONCodingKeyClass, jsonConverter: JSONConverter, jsonDecoder: JSONDecoderClass, jsonEncoder: JSONEncoderClass, jsonException: JSONException, jsonGenerator: JSONGenerator, jsonNode: JSONNode, jsonNull: JSONNullClass, jsonParser: JSONParser, jsonReader: JSONReader, jsonSerializer: JSONSerializer, jsonToken: JSONToken, jsonTokenType: JSONTokenType, jsonWriter: JSONWriter, lambda: Lambda, list: List, locale: LocaleClass, lock: Lock, long: Long, map: Map, mapEntry: MapEntry, metadataPropertyHandling: MetadataPropertyHandling, module: Module, mutable: Mutable, namespace: Namespace, native: Native, new: New, newtonsoft: Newtonsoft, no: No, noexcept: Noexcept, obj3Guard: Guard, obj3If: If, obj3Import: Import, obj3In: In, obj3Indirect: Indirect, obj3Infix: Infix, obj3Init: Init, obj3Inout: Inout, obj3Internal: Internal, obj3Is: Is, obj3JSON: JSON, obj3Lazy: Lazy, obj3Left: Left, obj3Let: Let, obj3Mutating: Mutating, obj3Nil: Nil) {
+    init(dummy: Int, global: Global, go: Go, goto: Goto, hasOwnProperty: HasOwnProperty, hashCode: HashCode, hashable: HashableClass, hasher: HasherClass, id: ID, imp: Imp, implements: Implements, implicit: Implicit, inline: Inline, instanceof: Instanceof, int: IntClass, intNode: IntNode, interface: Interface, isoDateTimeOffsetConverter: ISODateTimeOffsetConverter, iterable: Iterable, jdec: Jdec, jenc: Jenc, jpipe: Jpipe, jsonAny: JSONAnyClass, jsonCodingKey: JSONCodingKeyClass, jsonConverter: JSONConverter, jsonDecoder: JSONDecoderClass, jsonEncoder: JSONEncoderClass, jsonException: JSONException, jsonGenerator: JSONGenerator, jsonNode: JSONNode, jsonNull: JSONNullClass, jsonParser: JSONParser, jsonReader: JSONReader, jsonSerializer: JSONSerializer, jsonToken: JSONToken, jsonTokenType: JSONTokenType, jsonWriter: JSONWriter, lambda: Lambda, list: List, locale: LocaleClass, lock: Lock, long: Long, longNode: LongNode, map: Map, mapEntry: MapEntry, metadataPropertyHandling: MetadataPropertyHandling, module: Module, mutable: Mutable, namespace: Namespace, obj3Get: Get, obj3Guard: Guard, obj3If: If, obj3Import: Import, obj3In: In, obj3Indirect: Indirect, obj3Infix: Infix, obj3Init: Init, obj3Inout: Inout, obj3Internal: Internal, obj3Is: Is, obj3JSON: JSON, obj3Lazy: Lazy, obj3Left: Left, obj3Let: Let, obj3Mutating: Mutating) {
         self.dummy = dummy
+        self.global = global
+        self.go = go
+        self.goto = goto
         self.hasOwnProperty = hasOwnProperty
         self.hashCode = hashCode
         self.hashable = hashable
@@ -7248,6 +7251,7 @@ extension FalseClass {
         self.inline = inline
         self.instanceof = instanceof
         self.int = int
+        self.intNode = intNode
         self.interface = interface
         self.isoDateTimeOffsetConverter = isoDateTimeOffsetConverter
         self.iterable = iterable
@@ -7274,17 +7278,14 @@ extension FalseClass {
         self.locale = locale
         self.lock = lock
         self.long = long
+        self.longNode = longNode
         self.map = map
         self.mapEntry = mapEntry
         self.metadataPropertyHandling = metadataPropertyHandling
         self.module = module
         self.mutable = mutable
         self.namespace = namespace
-        self.native = native
-        self.new = new
-        self.newtonsoft = newtonsoft
-        self.no = no
-        self.noexcept = noexcept
+        self.obj3Get = obj3Get
         self.obj3Guard = obj3Guard
         self.obj3If = obj3If
         self.obj3Import = obj3Import
@@ -7300,7 +7301,6 @@ extension FalseClass {
         self.obj3Left = obj3Left
         self.obj3Let = obj3Let
         self.obj3Mutating = obj3Mutating
-        self.obj3Nil = obj3Nil
     }
 }
 
@@ -7309,7 +7309,7 @@ extension FalseClass {
 extension Obj3 {
     convenience init(data: Data) throws {
         let me = try newJSONDecoder().decode(Obj3.self, from: data)
-        self.init(dummy: me.dummy, hasOwnProperty: me.hasOwnProperty, hashCode: me.hashCode, hashable: me.hashable, hasher: me.hasher, id: me.id, imp: me.imp, implements: me.implements, implicit: me.implicit, inline: me.inline, instanceof: me.instanceof, int: me.int, interface: me.interface, isoDateTimeOffsetConverter: me.isoDateTimeOffsetConverter, iterable: me.iterable, jdec: me.jdec, jenc: me.jenc, jpipe: me.jpipe, jsonAny: me.jsonAny, jsonCodingKey: me.jsonCodingKey, jsonConverter: me.jsonConverter, jsonDecoder: me.jsonDecoder, jsonEncoder: me.jsonEncoder, jsonException: me.jsonException, jsonGenerator: me.jsonGenerator, jsonNode: me.jsonNode, jsonNull: me.jsonNull, jsonParser: me.jsonParser, jsonReader: me.jsonReader, jsonSerializer: me.jsonSerializer, jsonToken: me.jsonToken, jsonTokenType: me.jsonTokenType, jsonWriter: me.jsonWriter, lambda: me.lambda, list: me.list, locale: me.locale, lock: me.lock, long: me.long, map: me.map, mapEntry: me.mapEntry, metadataPropertyHandling: me.metadataPropertyHandling, module: me.module, mutable: me.mutable, namespace: me.namespace, native: me.native, new: me.new, newtonsoft: me.newtonsoft, no: me.no, noexcept: me.noexcept, obj3Guard: me.obj3Guard, obj3If: me.obj3If, obj3Import: me.obj3Import, obj3In: me.obj3In, obj3Indirect: me.obj3Indirect, obj3Infix: me.obj3Infix, obj3Init: me.obj3Init, obj3Inout: me.obj3Inout, obj3Internal: me.obj3Internal, obj3Is: me.obj3Is, obj3JSON: me.obj3JSON, obj3Lazy: me.obj3Lazy, obj3Left: me.obj3Left, obj3Let: me.obj3Let, obj3Mutating: me.obj3Mutating, obj3Nil: me.obj3Nil)
+        self.init(dummy: me.dummy, global: me.global, go: me.go, goto: me.goto, hasOwnProperty: me.hasOwnProperty, hashCode: me.hashCode, hashable: me.hashable, hasher: me.hasher, id: me.id, imp: me.imp, implements: me.implements, implicit: me.implicit, inline: me.inline, instanceof: me.instanceof, int: me.int, intNode: me.intNode, interface: me.interface, isoDateTimeOffsetConverter: me.isoDateTimeOffsetConverter, iterable: me.iterable, jdec: me.jdec, jenc: me.jenc, jpipe: me.jpipe, jsonAny: me.jsonAny, jsonCodingKey: me.jsonCodingKey, jsonConverter: me.jsonConverter, jsonDecoder: me.jsonDecoder, jsonEncoder: me.jsonEncoder, jsonException: me.jsonException, jsonGenerator: me.jsonGenerator, jsonNode: me.jsonNode, jsonNull: me.jsonNull, jsonParser: me.jsonParser, jsonReader: me.jsonReader, jsonSerializer: me.jsonSerializer, jsonToken: me.jsonToken, jsonTokenType: me.jsonTokenType, jsonWriter: me.jsonWriter, lambda: me.lambda, list: me.list, locale: me.locale, lock: me.lock, long: me.long, longNode: me.longNode, map: me.map, mapEntry: me.mapEntry, metadataPropertyHandling: me.metadataPropertyHandling, module: me.module, mutable: me.mutable, namespace: me.namespace, obj3Get: me.obj3Get, obj3Guard: me.obj3Guard, obj3If: me.obj3If, obj3Import: me.obj3Import, obj3In: me.obj3In, obj3Indirect: me.obj3Indirect, obj3Infix: me.obj3Infix, obj3Init: me.obj3Init, obj3Inout: me.obj3Inout, obj3Internal: me.obj3Internal, obj3Is: me.obj3Is, obj3JSON: me.obj3JSON, obj3Lazy: me.obj3Lazy, obj3Left: me.obj3Left, obj3Let: me.obj3Let, obj3Mutating: me.obj3Mutating)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -7325,6 +7325,9 @@ extension Obj3 {
 
     func with(
         dummy: Int? = nil,
+        global: Global? = nil,
+        go: Go? = nil,
+        goto: Goto? = nil,
         hasOwnProperty: HasOwnProperty? = nil,
         hashCode: HashCode? = nil,
         hashable: HashableClass? = nil,
@@ -7336,6 +7339,7 @@ extension Obj3 {
         inline: Inline? = nil,
         instanceof: Instanceof? = nil,
         int: IntClass? = nil,
+        intNode: IntNode? = nil,
         interface: Interface? = nil,
         isoDateTimeOffsetConverter: ISODateTimeOffsetConverter? = nil,
         iterable: Iterable? = nil,
@@ -7362,17 +7366,14 @@ extension Obj3 {
         locale: LocaleClass? = nil,
         lock: Lock? = nil,
         long: Long? = nil,
+        longNode: LongNode? = nil,
         map: Map? = nil,
         mapEntry: MapEntry? = nil,
         metadataPropertyHandling: MetadataPropertyHandling? = nil,
         module: Module? = nil,
         mutable: Mutable? = nil,
         namespace: Namespace? = nil,
-        native: Native? = nil,
-        new: New? = nil,
-        newtonsoft: Newtonsoft? = nil,
-        no: No? = nil,
-        noexcept: Noexcept? = nil,
+        obj3Get: Get? = nil,
         obj3Guard: Guard? = nil,
         obj3If: If? = nil,
         obj3Import: Import? = nil,
@@ -7387,11 +7388,13 @@ extension Obj3 {
         obj3Lazy: Lazy? = nil,
         obj3Left: Left? = nil,
         obj3Let: Let? = nil,
-        obj3Mutating: Mutating? = nil,
-        obj3Nil: Nil? = nil
+        obj3Mutating: Mutating? = nil
     ) -> Obj3 {
         return Obj3(
             dummy: dummy ?? self.dummy,
+            global: global ?? self.global,
+            go: go ?? self.go,
+            goto: goto ?? self.goto,
             hasOwnProperty: hasOwnProperty ?? self.hasOwnProperty,
             hashCode: hashCode ?? self.hashCode,
             hashable: hashable ?? self.hashable,
@@ -7403,6 +7406,7 @@ extension Obj3 {
             inline: inline ?? self.inline,
             instanceof: instanceof ?? self.instanceof,
             int: int ?? self.int,
+            intNode: intNode ?? self.intNode,
             interface: interface ?? self.interface,
             isoDateTimeOffsetConverter: isoDateTimeOffsetConverter ?? self.isoDateTimeOffsetConverter,
             iterable: iterable ?? self.iterable,
@@ -7429,17 +7433,14 @@ extension Obj3 {
             locale: locale ?? self.locale,
             lock: lock ?? self.lock,
             long: long ?? self.long,
+            longNode: longNode ?? self.longNode,
             map: map ?? self.map,
             mapEntry: mapEntry ?? self.mapEntry,
             metadataPropertyHandling: metadataPropertyHandling ?? self.metadataPropertyHandling,
             module: module ?? self.module,
             mutable: mutable ?? self.mutable,
             namespace: namespace ?? self.namespace,
-            native: native ?? self.native,
-            new: new ?? self.new,
-            newtonsoft: newtonsoft ?? self.newtonsoft,
-            no: no ?? self.no,
-            noexcept: noexcept ?? self.noexcept,
+            obj3Get: obj3Get ?? self.obj3Get,
             obj3Guard: obj3Guard ?? self.obj3Guard,
             obj3If: obj3If ?? self.obj3If,
             obj3Import: obj3Import ?? self.obj3Import,
@@ -7454,8 +7455,7 @@ extension Obj3 {
             obj3Lazy: obj3Lazy ?? self.obj3Lazy,
             obj3Left: obj3Left ?? self.obj3Left,
             obj3Let: obj3Let ?? self.obj3Let,
-            obj3Mutating: obj3Mutating ?? self.obj3Mutating,
-            obj3Nil: obj3Nil ?? self.obj3Nil
+            obj3Mutating: obj3Mutating ?? self.obj3Mutating
         )
     }
 
@@ -7468,25 +7468,25 @@ extension Obj3 {
     }
 }
 
-// MARK: - HasOwnProperty
-@objcMembers class HasOwnProperty: NSObject, Codable {
-    let hasOwnProperty: Int
+// MARK: - Global
+@objcMembers class Global: NSObject, Codable {
+    let global: Int
 
     enum CodingKeys: String, CodingKey {
-        case hasOwnProperty = "hasOwnProperty"
+        case global = "global"
     }
 
-    init(hasOwnProperty: Int) {
-        self.hasOwnProperty = hasOwnProperty
+    init(global: Int) {
+        self.global = global
     }
 }
 
-// MARK: HasOwnProperty convenience initializers and mutators
+// MARK: Global convenience initializers and mutators
 
-extension HasOwnProperty {
+extension Global {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(HasOwnProperty.self, from: data)
-        self.init(hasOwnProperty: me.hasOwnProperty)
+        let me = try newJSONDecoder().decode(Global.self, from: data)
+        self.init(global: me.global)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -7501,13 +7501,160 @@ extension HasOwnProperty {
     }
 
     func with(
-        hasOwnProperty: Int? = nil
-    ) -> HasOwnProperty {
-        return HasOwnProperty(
-            hasOwnProperty: hasOwnProperty ?? self.hasOwnProperty
-        )
-    }
-
+        global: Int? = nil
+    ) -> Global {
+        return Global(
+            global: global ?? self.global
+        )
+    }
+
+    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: - Go
+@objcMembers class Go: NSObject, Codable {
+    let go: Int
+
+    enum CodingKeys: String, CodingKey {
+        case go = "go"
+    }
+
+    init(go: Int) {
+        self.go = go
+    }
+}
+
+// MARK: Go convenience initializers and mutators
+
+extension Go {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(Go.self, from: data)
+        self.init(go: me.go)
+    }
+
+    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(
+        go: Int? = nil
+    ) -> Go {
+        return Go(
+            go: go ?? self.go
+        )
+    }
+
+    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: - Goto
+@objcMembers class Goto: NSObject, Codable {
+    let goto: Int
+
+    enum CodingKeys: String, CodingKey {
+        case goto = "goto"
+    }
+
+    init(goto: Int) {
+        self.goto = goto
+    }
+}
+
+// MARK: Goto convenience initializers and mutators
+
+extension Goto {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(Goto.self, from: data)
+        self.init(goto: me.goto)
+    }
+
+    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(
+        goto: Int? = nil
+    ) -> Goto {
+        return Goto(
+            goto: goto ?? self.goto
+        )
+    }
+
+    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: - HasOwnProperty
+@objcMembers class HasOwnProperty: NSObject, Codable {
+    let hasOwnProperty: Int
+
+    enum CodingKeys: String, CodingKey {
+        case hasOwnProperty = "hasOwnProperty"
+    }
+
+    init(hasOwnProperty: Int) {
+        self.hasOwnProperty = hasOwnProperty
+    }
+}
+
+// MARK: HasOwnProperty convenience initializers and mutators
+
+extension HasOwnProperty {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(HasOwnProperty.self, from: data)
+        self.init(hasOwnProperty: me.hasOwnProperty)
+    }
+
+    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(
+        hasOwnProperty: Int? = nil
+    ) -> HasOwnProperty {
+        return HasOwnProperty(
+            hasOwnProperty: hasOwnProperty ?? self.hasOwnProperty
+        )
+    }
+
     func jsonData() throws -> Data {
         return try newJSONEncoder().encode(self)
     }
@@ -8007,6 +8154,55 @@ extension IntClass {
     }
 }
 
+// MARK: - IntNode
+@objcMembers class IntNode: NSObject, Codable {
+    let intNode: Int
+
+    enum CodingKeys: String, CodingKey {
+        case intNode = "IntNode"
+    }
+
+    init(intNode: Int) {
+        self.intNode = intNode
+    }
+}
+
+// MARK: IntNode convenience initializers and mutators
+
+extension IntNode {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(IntNode.self, from: data)
+        self.init(intNode: me.intNode)
+    }
+
+    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(
+        intNode: Int? = nil
+    ) -> IntNode {
+        return IntNode(
+            intNode: intNode ?? self.intNode
+        )
+    }
+
+    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: - Interface
 @objcMembers class Interface: NSObject, Codable {
     let interface: Int
@@ -9281,6 +9477,55 @@ extension Long {
     }
 }
 
+// MARK: - LongNode
+@objcMembers class LongNode: NSObject, Codable {
+    let longNode: Int
+
+    enum CodingKeys: String, CodingKey {
+        case longNode = "LongNode"
+    }
+
+    init(longNode: Int) {
+        self.longNode = longNode
+    }
+}
+
+// MARK: LongNode convenience initializers and mutators
+
+extension LongNode {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(LongNode.self, from: data)
+        self.init(longNode: me.longNode)
+    }
+
+    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(
+        longNode: Int? = nil
+    ) -> LongNode {
+        return LongNode(
+            longNode: longNode ?? self.longNode
+        )
+    }
+
+    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: - Map
 @objcMembers class Map: NSObject, Codable {
     let map: Int
@@ -9575,25 +9820,25 @@ extension Namespace {
     }
 }
 
-// MARK: - Native
-@objcMembers class Native: NSObject, Codable {
-    let native: Int
+// MARK: - Get
+@objcMembers class Get: NSObject, Codable {
+    let getGet: Int
 
     enum CodingKeys: String, CodingKey {
-        case native = "native"
+        case getGet = "get"
     }
 
-    init(native: Int) {
-        self.native = native
+    init(getGet: Int) {
+        self.getGet = getGet
     }
 }
 
-// MARK: Native convenience initializers and mutators
+// MARK: Get convenience initializers and mutators
 
-extension Native {
+extension Get {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Native.self, from: data)
-        self.init(native: me.native)
+        let me = try newJSONDecoder().decode(Get.self, from: data)
+        self.init(getGet: me.getGet)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -9608,206 +9853,10 @@ extension Native {
     }
 
     func with(
-        native: Int? = nil
-    ) -> Native {
-        return Native(
-            native: native ?? self.native
-        )
-    }
-
-    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: - New
-@objcMembers class New: NSObject, Codable {
-    let new: Int
-
-    enum CodingKeys: String, CodingKey {
-        case new = "new"
-    }
-
-    init(new: Int) {
-        self.new = new
-    }
-}
-
-// MARK: New convenience initializers and mutators
-
-extension New {
-    convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(New.self, from: data)
-        self.init(new: me.new)
-    }
-
-    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(
-        new: Int? = nil
-    ) -> New {
-        return New(
-            new: new ?? self.new
-        )
-    }
-
-    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: - Newtonsoft
-@objcMembers class Newtonsoft: NSObject, Codable {
-    let newtonsoft: Int
-
-    enum CodingKeys: String, CodingKey {
-        case newtonsoft = "newtonsoft"
-    }
-
-    init(newtonsoft: Int) {
-        self.newtonsoft = newtonsoft
-    }
-}
-
-// MARK: Newtonsoft convenience initializers and mutators
-
-extension Newtonsoft {
-    convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Newtonsoft.self, from: data)
-        self.init(newtonsoft: me.newtonsoft)
-    }
-
-    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(
-        newtonsoft: Int? = nil
-    ) -> Newtonsoft {
-        return Newtonsoft(
-            newtonsoft: newtonsoft ?? self.newtonsoft
-        )
-    }
-
-    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: - No
-@objcMembers class No: NSObject, Codable {
-    let no: Int
-
-    enum CodingKeys: String, CodingKey {
-        case no = "NO"
-    }
-
-    init(no: Int) {
-        self.no = no
-    }
-}
-
-// MARK: No convenience initializers and mutators
-
-extension No {
-    convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(No.self, from: data)
-        self.init(no: me.no)
-    }
-
-    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(
-        no: Int? = nil
-    ) -> No {
-        return No(
-            no: no ?? self.no
-        )
-    }
-
-    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: - Noexcept
-@objcMembers class Noexcept: NSObject, Codable {
-    let noexcept: Int
-
-    enum CodingKeys: String, CodingKey {
-        case noexcept = "noexcept"
-    }
-
-    init(noexcept: Int) {
-        self.noexcept = noexcept
-    }
-}
-
-// MARK: Noexcept convenience initializers and mutators
-
-extension Noexcept {
-    convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Noexcept.self, from: data)
-        self.init(noexcept: me.noexcept)
-    }
-
-    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(
-        noexcept: Int? = nil
-    ) -> Noexcept {
-        return Noexcept(
-            noexcept: noexcept ?? self.noexcept
+        getGet: Int? = nil
+    ) -> Get {
+        return Get(
+            getGet: getGet ?? self.getGet
         )
     }
 
@@ -10555,59 +10604,15 @@ extension Mutating {
     }
 }
 
-// MARK: - Nil
-@objcMembers class Nil: NSObject, Codable {
-    let nilNil: Int
-
-    enum CodingKeys: String, CodingKey {
-        case nilNil = "nil"
-    }
-
-    init(nilNil: Int) {
-        self.nilNil = nilNil
-    }
-}
-
-// MARK: Nil convenience initializers and mutators
-
-extension Nil {
-    convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Nil.self, from: data)
-        self.init(nilNil: me.nilNil)
-    }
-
-    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(
-        nilNil: Int? = nil
-    ) -> Nil {
-        return Nil(
-            nilNil: nilNil ?? self.nilNil
-        )
-    }
-
-    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: - Obj4
 @objcMembers class Obj4: NSObject, Codable {
     let dummy: Int
+    let native: Native
+    let new: New
+    let newtonsoft: Newtonsoft
+    let no: No
     let noSuchMethod: NoSuchMethod
+    let noexcept: Noexcept
     let nonatomic: Nonatomic
     let none: None
     let nonlocal: Nonlocal
@@ -10617,8 +10622,10 @@ extension Nil {
     let nsObject: NSObjectClass
     let nsString: NSString
     let null: Null
+    let nullNode: NullNode
     let nullptr: Nullptr
     let number: Number
+    let obj4Nil: Nil
     let obj4None: NoneClass
     let obj4Nonmutating: Nonmutating
     let obj4Null: NullClass
@@ -10636,10 +10643,9 @@ extension Nil {
     let obj4Required: Required
     let obj4Retain: Retain
     let obj4Rethrows: Rethrows
-    let obj4Return: Return
-    let obj4Right: Right
     let object: Object
     let objectMapper: ObjectMapper
+    let objectNode: ObjectNode
     let of: Of
     let oneway: Oneway
     let or: Or
@@ -10665,16 +10671,15 @@ extension Nil {
     let require: Require
     let requires: Requires
     let restrict: Restrict
-    let runtimeType: RuntimeType
-    let s: S
-    let sbyte: Sbyte
-    let sealed: Sealed
-    let sel: Sel
-    let select: Select
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
+        case native = "native"
+        case new = "new"
+        case newtonsoft = "newtonsoft"
+        case no = "NO"
         case noSuchMethod = "noSuchMethod"
+        case noexcept = "noexcept"
         case nonatomic = "nonatomic"
         case none = "None"
         case nonlocal = "nonlocal"
@@ -10684,8 +10689,10 @@ extension Nil {
         case nsObject = "NSObject"
         case nsString = "NSString"
         case null = "NULL"
+        case nullNode = "NullNode"
         case nullptr = "nullptr"
         case number = "number"
+        case obj4Nil = "nil"
         case obj4None = "none"
         case obj4Nonmutating = "nonmutating"
         case obj4Null = "null"
@@ -10703,10 +10710,9 @@ extension Nil {
         case obj4Required = "required"
         case obj4Retain = "retain"
         case obj4Rethrows = "rethrows"
-        case obj4Return = "return"
-        case obj4Right = "right"
         case object = "object"
         case objectMapper = "ObjectMapper"
+        case objectNode = "ObjectNode"
         case of = "of"
         case oneway = "oneway"
         case or = "or"
@@ -10732,17 +10738,16 @@ extension Nil {
         case require = "require"
         case requires = "requires"
         case restrict = "restrict"
-        case runtimeType = "runtimeType"
-        case s = "s"
-        case sbyte = "sbyte"
-        case sealed = "sealed"
-        case sel = "SEL"
-        case select = "select"
     }
 
-    init(dummy: Int, noSuchMethod: NoSuchMethod, nonatomic: Nonatomic, none: None, nonlocal: Nonlocal, not: Not, notEq: NotEq, nsError: NSErrorClass, nsObject: NSObjectClass, nsString: NSString, null: Null, nullptr: Nullptr, number: Number, obj4None: NoneClass, obj4Nonmutating: Nonmutating, obj4Null: NullClass, obj4Open: Open, obj4Operator: Operator, obj4Optional: Optional, obj4Override: Override, obj4Postfix: Postfix, obj4Precedence: Precedence, obj4Prefix: Prefix, obj4Private: Private, obj4Protocol: ProtocolClass, obj4Public: Public, obj4Repeat: Repeat, obj4Required: Required, obj4Retain: Retain, obj4Rethrows: Rethrows, obj4Return: Return, obj4Right: Right, object: Object, objectMapper: ObjectMapper, of: Of, oneway: Oneway, or: Or, orEq: OrEq, out: Out, package: Package, params: Params, pass: Pass, port: Port, print: Print, printMembers: PrintMembers, printf: Printf, protected: Protected, purpleProtocol: Obj4Protocol, quicktype: Quicktype, raise: Raise, range: Range, readonly: Readonly, ref: Ref, regExp: RegExp, register: Register, reinterpretCast: ReinterpretCast, require: Require, requires: Requires, restrict: Restrict, runtimeType: RuntimeType, s: S, sbyte: Sbyte, sealed: Sealed, sel: Sel, select: Select) {
+    init(dummy: Int, native: Native, new: New, newtonsoft: Newtonsoft, no: No, noSuchMethod: NoSuchMethod, noexcept: Noexcept, nonatomic: Nonatomic, none: None, nonlocal: Nonlocal, not: Not, notEq: NotEq, nsError: NSErrorClass, nsObject: NSObjectClass, nsString: NSString, null: Null, nullNode: NullNode, nullptr: Nullptr, number: Number, obj4Nil: Nil, obj4None: NoneClass, obj4Nonmutating: Nonmutating, obj4Null: NullClass, obj4Open: Open, obj4Operator: Operator, obj4Optional: Optional, obj4Override: Override, obj4Postfix: Postfix, obj4Precedence: Precedence, obj4Prefix: Prefix, obj4Private: Private, obj4Protocol: ProtocolClass, obj4Public: Public, obj4Repeat: Repeat, obj4Required: Required, obj4Retain: Retain, obj4Rethrows: Rethrows, object: Object, objectMapper: ObjectMapper, objectNode: ObjectNode, of: Of, oneway: Oneway, or: Or, orEq: OrEq, out: Out, package: Package, params: Params, pass: Pass, port: Port, print: Print, printMembers: PrintMembers, printf: Printf, protected: Protected, purpleProtocol: Obj4Protocol, quicktype: Quicktype, raise: Raise, range: Range, readonly: Readonly, ref: Ref, regExp: RegExp, register: Register, reinterpretCast: ReinterpretCast, require: Require, requires: Requires, restrict: Restrict) {
         self.dummy = dummy
+        self.native = native
+        self.new = new
+        self.newtonsoft = newtonsoft
+        self.no = no
         self.noSuchMethod = noSuchMethod
+        self.noexcept = noexcept
         self.nonatomic = nonatomic
         self.none = none
         self.nonlocal = nonlocal
@@ -10752,8 +10757,10 @@ extension Nil {
         self.nsObject = nsObject
         self.nsString = nsString
         self.null = null
+        self.nullNode = nullNode
         self.nullptr = nullptr
         self.number = number
+        self.obj4Nil = obj4Nil
         self.obj4None = obj4None
         self.obj4Nonmutating = obj4Nonmutating
         self.obj4Null = obj4Null
@@ -10771,10 +10778,9 @@ extension Nil {
         self.obj4Required = obj4Required
         self.obj4Retain = obj4Retain
         self.obj4Rethrows = obj4Rethrows
-        self.obj4Return = obj4Return
-        self.obj4Right = obj4Right
         self.object = object
         self.objectMapper = objectMapper
+        self.objectNode = objectNode
         self.of = of
         self.oneway = oneway
         self.or = or
@@ -10800,12 +10806,6 @@ extension Nil {
         self.require = require
         self.requires = requires
         self.restrict = restrict
-        self.runtimeType = runtimeType
-        self.s = s
-        self.sbyte = sbyte
-        self.sealed = sealed
-        self.sel = sel
-        self.select = select
     }
 }
 
@@ -10814,7 +10814,7 @@ extension Nil {
 extension Obj4 {
     convenience init(data: Data) throws {
         let me = try newJSONDecoder().decode(Obj4.self, from: data)
-        self.init(dummy: me.dummy, noSuchMethod: me.noSuchMethod, nonatomic: me.nonatomic, none: me.none, nonlocal: me.nonlocal, not: me.not, notEq: me.notEq, nsError: me.nsError, nsObject: me.nsObject, nsString: me.nsString, null: me.null, nullptr: me.nullptr, number: me.number, obj4None: me.obj4None, obj4Nonmutating: me.obj4Nonmutating, obj4Null: me.obj4Null, obj4Open: me.obj4Open, obj4Operator: me.obj4Operator, obj4Optional: me.obj4Optional, obj4Override: me.obj4Override, obj4Postfix: me.obj4Postfix, obj4Precedence: me.obj4Precedence, obj4Prefix: me.obj4Prefix, obj4Private: me.obj4Private, obj4Protocol: me.obj4Protocol, obj4Public: me.obj4Public, obj4Repeat: me.obj4Repeat, obj4Required: me.obj4Required, obj4Retain: me.obj4Retain, obj4Rethrows: me.obj4Rethrows, obj4Return: me.obj4Return, obj4Right: me.obj4Right, object: me.object, objectMapper: me.objectMapper, of: me.of, oneway: me.oneway, or: me.or, orEq: me.orEq, out: me.out, package: me.package, params: me.params, pass: me.pass, port: me.port, print: me.print, printMembers: me.printMembers, printf: me.printf, protected: me.protected, purpleProtocol: me.purpleProtocol, quicktype: me.quicktype, raise: me.raise, range: me.range, readonly: me.readonly, ref: me.ref, regExp: me.regExp, register: me.register, reinterpretCast: me.reinterpretCast, require: me.require, requires: me.requires, restrict: me.restrict, runtimeType: me.runtimeType, s: me.s, sbyte: me.sbyte, sealed: me.sealed, sel: me.sel, select: me.select)
+        self.init(dummy: me.dummy, native: me.native, new: me.new, newtonsoft: me.newtonsoft, no: me.no, noSuchMethod: me.noSuchMethod, noexcept: me.noexcept, nonatomic: me.nonatomic, none: me.none, nonlocal: me.nonlocal, not: me.not, notEq: me.notEq, nsError: me.nsError, nsObject: me.nsObject, nsString: me.nsString, null: me.null, nullNode: me.nullNode, nullptr: me.nullptr, number: me.number, obj4Nil: me.obj4Nil, obj4None: me.obj4None, obj4Nonmutating: me.obj4Nonmutating, obj4Null: me.obj4Null, obj4Open: me.obj4Open, obj4Operator: me.obj4Operator, obj4Optional: me.obj4Optional, obj4Override: me.obj4Override, obj4Postfix: me.obj4Postfix, obj4Precedence: me.obj4Precedence, obj4Prefix: me.obj4Prefix, obj4Private: me.obj4Private, obj4Protocol: me.obj4Protocol, obj4Public: me.obj4Public, obj4Repeat: me.obj4Repeat, obj4Required: me.obj4Required, obj4Retain: me.obj4Retain, obj4Rethrows: me.obj4Rethrows, object: me.object, objectMapper: me.objectMapper, objectNode: me.objectNode, of: me.of, oneway: me.oneway, or: me.or, orEq: me.orEq, out: me.out, package: me.package, params: me.params, pass: me.pass, port: me.port, print: me.print, printMembers: me.printMembers, printf: me.printf, protected: me.protected, purpleProtocol: me.purpleProtocol, quicktype: me.quicktype, raise: me.raise, range: me.range, readonly: me.readonly, ref: me.ref, regExp: me.regExp, register: me.register, reinterpretCast: me.reinterpretCast, require: me.require, requires: me.requires, restrict: me.restrict)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -10830,7 +10830,12 @@ extension Obj4 {
 
     func with(
         dummy: Int? = nil,
+        native: Native? = nil,
+        new: New? = nil,
+        newtonsoft: Newtonsoft? = nil,
+        no: No? = nil,
         noSuchMethod: NoSuchMethod? = nil,
+        noexcept: Noexcept? = nil,
         nonatomic: Nonatomic? = nil,
         none: None? = nil,
         nonlocal: Nonlocal? = nil,
@@ -10840,8 +10845,10 @@ extension Obj4 {
         nsObject: NSObjectClass? = nil,
         nsString: NSString? = nil,
         null: Null? = nil,
+        nullNode: NullNode? = nil,
         nullptr: Nullptr? = nil,
         number: Number? = nil,
+        obj4Nil: Nil? = nil,
         obj4None: NoneClass? = nil,
         obj4Nonmutating: Nonmutating? = nil,
         obj4Null: NullClass? = nil,
@@ -10859,10 +10866,9 @@ extension Obj4 {
         obj4Required: Required? = nil,
         obj4Retain: Retain? = nil,
         obj4Rethrows: Rethrows? = nil,
-        obj4Return: Return? = nil,
-        obj4Right: Right? = nil,
         object: Object? = nil,
         objectMapper: ObjectMapper? = nil,
+        objectNode: ObjectNode? = nil,
         of: Of? = nil,
         oneway: Oneway? = nil,
         or: Or? = nil,
@@ -10887,17 +10893,16 @@ extension Obj4 {
         reinterpretCast: ReinterpretCast? = nil,
         require: Require? = nil,
         requires: Requires? = nil,
-        restrict: Restrict? = nil,
-        runtimeType: RuntimeType? = nil,
-        s: S? = nil,
-        sbyte: Sbyte? = nil,
-        sealed: Sealed? = nil,
-        sel: Sel? = nil,
-        select: Select? = nil
+        restrict: Restrict? = nil
     ) -> Obj4 {
         return Obj4(
             dummy: dummy ?? self.dummy,
+            native: native ?? self.native,
+            new: new ?? self.new,
+            newtonsoft: newtonsoft ?? self.newtonsoft,
+            no: no ?? self.no,
             noSuchMethod: noSuchMethod ?? self.noSuchMethod,
+            noexcept: noexcept ?? self.noexcept,
             nonatomic: nonatomic ?? self.nonatomic,
             none: none ?? self.none,
             nonlocal: nonlocal ?? self.nonlocal,
@@ -10907,8 +10912,10 @@ extension Obj4 {
             nsObject: nsObject ?? self.nsObject,
             nsString: nsString ?? self.nsString,
             null: null ?? self.null,
+            nullNode: nullNode ?? self.nullNode,
             nullptr: nullptr ?? self.nullptr,
             number: number ?? self.number,
+            obj4Nil: obj4Nil ?? self.obj4Nil,
             obj4None: obj4None ?? self.obj4None,
             obj4Nonmutating: obj4Nonmutating ?? self.obj4Nonmutating,
             obj4Null: obj4Null ?? self.obj4Null,
@@ -10926,10 +10933,9 @@ extension Obj4 {
             obj4Required: obj4Required ?? self.obj4Required,
             obj4Retain: obj4Retain ?? self.obj4Retain,
             obj4Rethrows: obj4Rethrows ?? self.obj4Rethrows,
-            obj4Return: obj4Return ?? self.obj4Return,
-            obj4Right: obj4Right ?? self.obj4Right,
             object: object ?? self.object,
             objectMapper: objectMapper ?? self.objectMapper,
+            objectNode: objectNode ?? self.objectNode,
             of: of ?? self.of,
             oneway: oneway ?? self.oneway,
             or: or ?? self.or,
@@ -10954,13 +10960,7 @@ extension Obj4 {
             reinterpretCast: reinterpretCast ?? self.reinterpretCast,
             require: require ?? self.require,
             requires: requires ?? self.requires,
-            restrict: restrict ?? self.restrict,
-            runtimeType: runtimeType ?? self.runtimeType,
-            s: s ?? self.s,
-            sbyte: sbyte ?? self.sbyte,
-            sealed: sealed ?? self.sealed,
-            sel: sel ?? self.sel,
-            select: select ?? self.select
+            restrict: restrict ?? self.restrict
         )
     }
 
@@ -10973,25 +10973,25 @@ extension Obj4 {
     }
 }
 
-// MARK: - NoSuchMethod
-@objcMembers class NoSuchMethod: NSObject, Codable {
-    let noSuchMethod: Int
+// MARK: - Native
+@objcMembers class Native: NSObject, Codable {
+    let native: Int
 
     enum CodingKeys: String, CodingKey {
-        case noSuchMethod = "noSuchMethod"
+        case native = "native"
     }
 
-    init(noSuchMethod: Int) {
-        self.noSuchMethod = noSuchMethod
+    init(native: Int) {
+        self.native = native
     }
 }
 
-// MARK: NoSuchMethod convenience initializers and mutators
+// MARK: Native convenience initializers and mutators
 
-extension NoSuchMethod {
+extension Native {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(NoSuchMethod.self, from: data)
-        self.init(noSuchMethod: me.noSuchMethod)
+        let me = try newJSONDecoder().decode(Native.self, from: data)
+        self.init(native: me.native)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11006,10 +11006,10 @@ extension NoSuchMethod {
     }
 
     func with(
-        noSuchMethod: Int? = nil
-    ) -> NoSuchMethod {
-        return NoSuchMethod(
-            noSuchMethod: noSuchMethod ?? self.noSuchMethod
+        native: Int? = nil
+    ) -> Native {
+        return Native(
+            native: native ?? self.native
         )
     }
 
@@ -11022,25 +11022,25 @@ extension NoSuchMethod {
     }
 }
 
-// MARK: - Nonatomic
-@objcMembers class Nonatomic: NSObject, Codable {
-    let nonatomic: Int
+// MARK: - New
+@objcMembers class New: NSObject, Codable {
+    let new: Int
 
     enum CodingKeys: String, CodingKey {
-        case nonatomic = "nonatomic"
+        case new = "new"
     }
 
-    init(nonatomic: Int) {
-        self.nonatomic = nonatomic
+    init(new: Int) {
+        self.new = new
     }
 }
 
-// MARK: Nonatomic convenience initializers and mutators
+// MARK: New convenience initializers and mutators
 
-extension Nonatomic {
+extension New {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Nonatomic.self, from: data)
-        self.init(nonatomic: me.nonatomic)
+        let me = try newJSONDecoder().decode(New.self, from: data)
+        self.init(new: me.new)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11055,10 +11055,10 @@ extension Nonatomic {
     }
 
     func with(
-        nonatomic: Int? = nil
-    ) -> Nonatomic {
-        return Nonatomic(
-            nonatomic: nonatomic ?? self.nonatomic
+        new: Int? = nil
+    ) -> New {
+        return New(
+            new: new ?? self.new
         )
     }
 
@@ -11071,25 +11071,25 @@ extension Nonatomic {
     }
 }
 
-// MARK: - None
-@objcMembers class None: NSObject, Codable {
-    let none: Int
+// MARK: - Newtonsoft
+@objcMembers class Newtonsoft: NSObject, Codable {
+    let newtonsoft: Int
 
     enum CodingKeys: String, CodingKey {
-        case none = "None"
+        case newtonsoft = "newtonsoft"
     }
 
-    init(none: Int) {
-        self.none = none
+    init(newtonsoft: Int) {
+        self.newtonsoft = newtonsoft
     }
 }
 
-// MARK: None convenience initializers and mutators
+// MARK: Newtonsoft convenience initializers and mutators
 
-extension None {
+extension Newtonsoft {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(None.self, from: data)
-        self.init(none: me.none)
+        let me = try newJSONDecoder().decode(Newtonsoft.self, from: data)
+        self.init(newtonsoft: me.newtonsoft)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11104,10 +11104,10 @@ extension None {
     }
 
     func with(
-        none: Int? = nil
-    ) -> None {
-        return None(
-            none: none ?? self.none
+        newtonsoft: Int? = nil
+    ) -> Newtonsoft {
+        return Newtonsoft(
+            newtonsoft: newtonsoft ?? self.newtonsoft
         )
     }
 
@@ -11120,25 +11120,25 @@ extension None {
     }
 }
 
-// MARK: - Nonlocal
-@objcMembers class Nonlocal: NSObject, Codable {
-    let nonlocal: Int
+// MARK: - No
+@objcMembers class No: NSObject, Codable {
+    let no: Int
 
     enum CodingKeys: String, CodingKey {
-        case nonlocal = "nonlocal"
+        case no = "NO"
     }
 
-    init(nonlocal: Int) {
-        self.nonlocal = nonlocal
+    init(no: Int) {
+        self.no = no
     }
 }
 
-// MARK: Nonlocal convenience initializers and mutators
+// MARK: No convenience initializers and mutators
 
-extension Nonlocal {
+extension No {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Nonlocal.self, from: data)
-        self.init(nonlocal: me.nonlocal)
+        let me = try newJSONDecoder().decode(No.self, from: data)
+        self.init(no: me.no)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11153,10 +11153,10 @@ extension Nonlocal {
     }
 
     func with(
-        nonlocal: Int? = nil
-    ) -> Nonlocal {
-        return Nonlocal(
-            nonlocal: nonlocal ?? self.nonlocal
+        no: Int? = nil
+    ) -> No {
+        return No(
+            no: no ?? self.no
         )
     }
 
@@ -11169,25 +11169,25 @@ extension Nonlocal {
     }
 }
 
-// MARK: - Not
-@objcMembers class Not: NSObject, Codable {
-    let not: Int
+// MARK: - NoSuchMethod
+@objcMembers class NoSuchMethod: NSObject, Codable {
+    let noSuchMethod: Int
 
     enum CodingKeys: String, CodingKey {
-        case not = "not"
+        case noSuchMethod = "noSuchMethod"
     }
 
-    init(not: Int) {
-        self.not = not
+    init(noSuchMethod: Int) {
+        self.noSuchMethod = noSuchMethod
     }
 }
 
-// MARK: Not convenience initializers and mutators
+// MARK: NoSuchMethod convenience initializers and mutators
 
-extension Not {
+extension NoSuchMethod {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Not.self, from: data)
-        self.init(not: me.not)
+        let me = try newJSONDecoder().decode(NoSuchMethod.self, from: data)
+        self.init(noSuchMethod: me.noSuchMethod)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11202,10 +11202,10 @@ extension Not {
     }
 
     func with(
-        not: Int? = nil
-    ) -> Not {
-        return Not(
-            not: not ?? self.not
+        noSuchMethod: Int? = nil
+    ) -> NoSuchMethod {
+        return NoSuchMethod(
+            noSuchMethod: noSuchMethod ?? self.noSuchMethod
         )
     }
 
@@ -11218,25 +11218,25 @@ extension Not {
     }
 }
 
-// MARK: - NotEq
-@objcMembers class NotEq: NSObject, Codable {
-    let notEq: Int
+// MARK: - Noexcept
+@objcMembers class Noexcept: NSObject, Codable {
+    let noexcept: Int
 
     enum CodingKeys: String, CodingKey {
-        case notEq = "not_eq"
+        case noexcept = "noexcept"
     }
 
-    init(notEq: Int) {
-        self.notEq = notEq
+    init(noexcept: Int) {
+        self.noexcept = noexcept
     }
 }
 
-// MARK: NotEq convenience initializers and mutators
+// MARK: Noexcept convenience initializers and mutators
 
-extension NotEq {
+extension Noexcept {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(NotEq.self, from: data)
-        self.init(notEq: me.notEq)
+        let me = try newJSONDecoder().decode(Noexcept.self, from: data)
+        self.init(noexcept: me.noexcept)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11251,10 +11251,10 @@ extension NotEq {
     }
 
     func with(
-        notEq: Int? = nil
-    ) -> NotEq {
-        return NotEq(
-            notEq: notEq ?? self.notEq
+        noexcept: Int? = nil
+    ) -> Noexcept {
+        return Noexcept(
+            noexcept: noexcept ?? self.noexcept
         )
     }
 
@@ -11267,25 +11267,25 @@ extension NotEq {
     }
 }
 
-// MARK: - NSErrorClass
-@objcMembers class NSErrorClass: NSObject, Codable {
-    let nsError: Int
+// MARK: - Nonatomic
+@objcMembers class Nonatomic: NSObject, Codable {
+    let nonatomic: Int
 
     enum CodingKeys: String, CodingKey {
-        case nsError = "NSError"
+        case nonatomic = "nonatomic"
     }
 
-    init(nsError: Int) {
-        self.nsError = nsError
+    init(nonatomic: Int) {
+        self.nonatomic = nonatomic
     }
 }
 
-// MARK: NSErrorClass convenience initializers and mutators
+// MARK: Nonatomic convenience initializers and mutators
 
-extension NSErrorClass {
+extension Nonatomic {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(NSErrorClass.self, from: data)
-        self.init(nsError: me.nsError)
+        let me = try newJSONDecoder().decode(Nonatomic.self, from: data)
+        self.init(nonatomic: me.nonatomic)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11300,10 +11300,10 @@ extension NSErrorClass {
     }
 
     func with(
-        nsError: Int? = nil
-    ) -> NSErrorClass {
-        return NSErrorClass(
-            nsError: nsError ?? self.nsError
+        nonatomic: Int? = nil
+    ) -> Nonatomic {
+        return Nonatomic(
+            nonatomic: nonatomic ?? self.nonatomic
         )
     }
 
@@ -11316,25 +11316,25 @@ extension NSErrorClass {
     }
 }
 
-// MARK: - NSObjectClass
-@objcMembers class NSObjectClass: NSObject, Codable {
-    let nsObject: Int
+// MARK: - None
+@objcMembers class None: NSObject, Codable {
+    let none: Int
 
     enum CodingKeys: String, CodingKey {
-        case nsObject = "NSObject"
+        case none = "None"
     }
 
-    init(nsObject: Int) {
-        self.nsObject = nsObject
+    init(none: Int) {
+        self.none = none
     }
 }
 
-// MARK: NSObjectClass convenience initializers and mutators
+// MARK: None convenience initializers and mutators
 
-extension NSObjectClass {
+extension None {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(NSObjectClass.self, from: data)
-        self.init(nsObject: me.nsObject)
+        let me = try newJSONDecoder().decode(None.self, from: data)
+        self.init(none: me.none)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11349,10 +11349,10 @@ extension NSObjectClass {
     }
 
     func with(
-        nsObject: Int? = nil
-    ) -> NSObjectClass {
-        return NSObjectClass(
-            nsObject: nsObject ?? self.nsObject
+        none: Int? = nil
+    ) -> None {
+        return None(
+            none: none ?? self.none
         )
     }
 
@@ -11365,25 +11365,25 @@ extension NSObjectClass {
     }
 }
 
-// MARK: - NSString
-@objcMembers class NSString: NSObject, Codable {
-    let nsString: Int
+// MARK: - Nonlocal
+@objcMembers class Nonlocal: NSObject, Codable {
+    let nonlocal: Int
 
     enum CodingKeys: String, CodingKey {
-        case nsString = "NSString"
+        case nonlocal = "nonlocal"
     }
 
-    init(nsString: Int) {
-        self.nsString = nsString
+    init(nonlocal: Int) {
+        self.nonlocal = nonlocal
     }
 }
 
-// MARK: NSString convenience initializers and mutators
+// MARK: Nonlocal convenience initializers and mutators
 
-extension NSString {
+extension Nonlocal {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(NSString.self, from: data)
-        self.init(nsString: me.nsString)
+        let me = try newJSONDecoder().decode(Nonlocal.self, from: data)
+        self.init(nonlocal: me.nonlocal)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11398,10 +11398,10 @@ extension NSString {
     }
 
     func with(
-        nsString: Int? = nil
-    ) -> NSString {
-        return NSString(
-            nsString: nsString ?? self.nsString
+        nonlocal: Int? = nil
+    ) -> Nonlocal {
+        return Nonlocal(
+            nonlocal: nonlocal ?? self.nonlocal
         )
     }
 
@@ -11414,25 +11414,25 @@ extension NSString {
     }
 }
 
-// MARK: - Null
-@objcMembers class Null: NSObject, Codable {
-    let null: Int
+// MARK: - Not
+@objcMembers class Not: NSObject, Codable {
+    let not: Int
 
     enum CodingKeys: String, CodingKey {
-        case null = "NULL"
+        case not = "not"
     }
 
-    init(null: Int) {
-        self.null = null
+    init(not: Int) {
+        self.not = not
     }
 }
 
-// MARK: Null convenience initializers and mutators
+// MARK: Not convenience initializers and mutators
 
-extension Null {
+extension Not {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Null.self, from: data)
-        self.init(null: me.null)
+        let me = try newJSONDecoder().decode(Not.self, from: data)
+        self.init(not: me.not)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11447,10 +11447,10 @@ extension Null {
     }
 
     func with(
-        null: Int? = nil
-    ) -> Null {
-        return Null(
-            null: null ?? self.null
+        not: Int? = nil
+    ) -> Not {
+        return Not(
+            not: not ?? self.not
         )
     }
 
@@ -11463,25 +11463,25 @@ extension Null {
     }
 }
 
-// MARK: - Nullptr
-@objcMembers class Nullptr: NSObject, Codable {
-    let nullptr: Int
+// MARK: - NotEq
+@objcMembers class NotEq: NSObject, Codable {
+    let notEq: Int
 
     enum CodingKeys: String, CodingKey {
-        case nullptr = "nullptr"
+        case notEq = "not_eq"
     }
 
-    init(nullptr: Int) {
-        self.nullptr = nullptr
+    init(notEq: Int) {
+        self.notEq = notEq
     }
 }
 
-// MARK: Nullptr convenience initializers and mutators
+// MARK: NotEq convenience initializers and mutators
 
-extension Nullptr {
+extension NotEq {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Nullptr.self, from: data)
-        self.init(nullptr: me.nullptr)
+        let me = try newJSONDecoder().decode(NotEq.self, from: data)
+        self.init(notEq: me.notEq)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11496,10 +11496,10 @@ extension Nullptr {
     }
 
     func with(
-        nullptr: Int? = nil
-    ) -> Nullptr {
-        return Nullptr(
-            nullptr: nullptr ?? self.nullptr
+        notEq: Int? = nil
+    ) -> NotEq {
+        return NotEq(
+            notEq: notEq ?? self.notEq
         )
     }
 
@@ -11512,25 +11512,25 @@ extension Nullptr {
     }
 }
 
-// MARK: - Number
-@objcMembers class Number: NSObject, Codable {
-    let number: Int
+// MARK: - NSErrorClass
+@objcMembers class NSErrorClass: NSObject, Codable {
+    let nsError: Int
 
     enum CodingKeys: String, CodingKey {
-        case number = "number"
+        case nsError = "NSError"
     }
 
-    init(number: Int) {
-        self.number = number
+    init(nsError: Int) {
+        self.nsError = nsError
     }
 }
 
-// MARK: Number convenience initializers and mutators
+// MARK: NSErrorClass convenience initializers and mutators
 
-extension Number {
+extension NSErrorClass {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Number.self, from: data)
-        self.init(number: me.number)
+        let me = try newJSONDecoder().decode(NSErrorClass.self, from: data)
+        self.init(nsError: me.nsError)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11545,10 +11545,10 @@ extension Number {
     }
 
     func with(
-        number: Int? = nil
-    ) -> Number {
-        return Number(
-            number: number ?? self.number
+        nsError: Int? = nil
+    ) -> NSErrorClass {
+        return NSErrorClass(
+            nsError: nsError ?? self.nsError
         )
     }
 
@@ -11561,25 +11561,25 @@ extension Number {
     }
 }
 
-// MARK: - NoneClass
-@objcMembers class NoneClass: NSObject, Codable {
-    let none: Int
+// MARK: - NSObjectClass
+@objcMembers class NSObjectClass: NSObject, Codable {
+    let nsObject: Int
 
     enum CodingKeys: String, CodingKey {
-        case none = "none"
+        case nsObject = "NSObject"
     }
 
-    init(none: Int) {
-        self.none = none
+    init(nsObject: Int) {
+        self.nsObject = nsObject
     }
 }
 
-// MARK: NoneClass convenience initializers and mutators
+// MARK: NSObjectClass convenience initializers and mutators
 
-extension NoneClass {
+extension NSObjectClass {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(NoneClass.self, from: data)
-        self.init(none: me.none)
+        let me = try newJSONDecoder().decode(NSObjectClass.self, from: data)
+        self.init(nsObject: me.nsObject)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11594,10 +11594,10 @@ extension NoneClass {
     }
 
     func with(
-        none: Int? = nil
-    ) -> NoneClass {
-        return NoneClass(
-            none: none ?? self.none
+        nsObject: Int? = nil
+    ) -> NSObjectClass {
+        return NSObjectClass(
+            nsObject: nsObject ?? self.nsObject
         )
     }
 
@@ -11610,25 +11610,25 @@ extension NoneClass {
     }
 }
 
-// MARK: - Nonmutating
-@objcMembers class Nonmutating: NSObject, Codable {
-    let nonmutatingNonmutating: Int
+// MARK: - NSString
+@objcMembers class NSString: NSObject, Codable {
+    let nsString: Int
 
     enum CodingKeys: String, CodingKey {
-        case nonmutatingNonmutating = "nonmutating"
+        case nsString = "NSString"
     }
 
-    init(nonmutatingNonmutating: Int) {
-        self.nonmutatingNonmutating = nonmutatingNonmutating
+    init(nsString: Int) {
+        self.nsString = nsString
     }
 }
 
-// MARK: Nonmutating convenience initializers and mutators
+// MARK: NSString convenience initializers and mutators
 
-extension Nonmutating {
+extension NSString {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Nonmutating.self, from: data)
-        self.init(nonmutatingNonmutating: me.nonmutatingNonmutating)
+        let me = try newJSONDecoder().decode(NSString.self, from: data)
+        self.init(nsString: me.nsString)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11643,10 +11643,10 @@ extension Nonmutating {
     }
 
     func with(
-        nonmutatingNonmutating: Int? = nil
-    ) -> Nonmutating {
-        return Nonmutating(
-            nonmutatingNonmutating: nonmutatingNonmutating ?? self.nonmutatingNonmutating
+        nsString: Int? = nil
+    ) -> NSString {
+        return NSString(
+            nsString: nsString ?? self.nsString
         )
     }
 
@@ -11659,12 +11659,12 @@ extension Nonmutating {
     }
 }
 
-// MARK: - NullClass
-@objcMembers class NullClass: NSObject, Codable {
+// MARK: - Null
+@objcMembers class Null: NSObject, Codable {
     let null: Int
 
     enum CodingKeys: String, CodingKey {
-        case null = "null"
+        case null = "NULL"
     }
 
     init(null: Int) {
@@ -11672,11 +11672,11 @@ extension Nonmutating {
     }
 }
 
-// MARK: NullClass convenience initializers and mutators
+// MARK: Null convenience initializers and mutators
 
-extension NullClass {
+extension Null {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(NullClass.self, from: data)
+        let me = try newJSONDecoder().decode(Null.self, from: data)
         self.init(null: me.null)
     }
 
@@ -11693,8 +11693,8 @@ extension NullClass {
 
     func with(
         null: Int? = nil
-    ) -> NullClass {
-        return NullClass(
+    ) -> Null {
+        return Null(
             null: null ?? self.null
         )
     }
@@ -11708,25 +11708,25 @@ extension NullClass {
     }
 }
 
-// MARK: - Open
-@objcMembers class Open: NSObject, Codable {
-    let openOpen: Int
+// MARK: - NullNode
+@objcMembers class NullNode: NSObject, Codable {
+    let nullNode: Int
 
     enum CodingKeys: String, CodingKey {
-        case openOpen = "open"
+        case nullNode = "NullNode"
     }
 
-    init(openOpen: Int) {
-        self.openOpen = openOpen
+    init(nullNode: Int) {
+        self.nullNode = nullNode
     }
 }
 
-// MARK: Open convenience initializers and mutators
+// MARK: NullNode convenience initializers and mutators
 
-extension Open {
+extension NullNode {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Open.self, from: data)
-        self.init(openOpen: me.openOpen)
+        let me = try newJSONDecoder().decode(NullNode.self, from: data)
+        self.init(nullNode: me.nullNode)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11741,10 +11741,10 @@ extension Open {
     }
 
     func with(
-        openOpen: Int? = nil
-    ) -> Open {
-        return Open(
-            openOpen: openOpen ?? self.openOpen
+        nullNode: Int? = nil
+    ) -> NullNode {
+        return NullNode(
+            nullNode: nullNode ?? self.nullNode
         )
     }
 
@@ -11757,25 +11757,25 @@ extension Open {
     }
 }
 
-// MARK: - Operator
-@objcMembers class Operator: NSObject, Codable {
-    let operatorOperator: Int
+// MARK: - Nullptr
+@objcMembers class Nullptr: NSObject, Codable {
+    let nullptr: Int
 
     enum CodingKeys: String, CodingKey {
-        case operatorOperator = "operator"
+        case nullptr = "nullptr"
     }
 
-    init(operatorOperator: Int) {
-        self.operatorOperator = operatorOperator
+    init(nullptr: Int) {
+        self.nullptr = nullptr
     }
 }
 
-// MARK: Operator convenience initializers and mutators
+// MARK: Nullptr convenience initializers and mutators
 
-extension Operator {
+extension Nullptr {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Operator.self, from: data)
-        self.init(operatorOperator: me.operatorOperator)
+        let me = try newJSONDecoder().decode(Nullptr.self, from: data)
+        self.init(nullptr: me.nullptr)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11790,10 +11790,10 @@ extension Operator {
     }
 
     func with(
-        operatorOperator: Int? = nil
-    ) -> Operator {
-        return Operator(
-            operatorOperator: operatorOperator ?? self.operatorOperator
+        nullptr: Int? = nil
+    ) -> Nullptr {
+        return Nullptr(
+            nullptr: nullptr ?? self.nullptr
         )
     }
 
@@ -11806,25 +11806,25 @@ extension Operator {
     }
 }
 
-// MARK: - Optional
-@objcMembers class Optional: NSObject, Codable {
-    let optionalOptional: Int
+// MARK: - Number
+@objcMembers class Number: NSObject, Codable {
+    let number: Int
 
     enum CodingKeys: String, CodingKey {
-        case optionalOptional = "optional"
+        case number = "number"
     }
 
-    init(optionalOptional: Int) {
-        self.optionalOptional = optionalOptional
+    init(number: Int) {
+        self.number = number
     }
 }
 
-// MARK: Optional convenience initializers and mutators
+// MARK: Number convenience initializers and mutators
 
-extension Optional {
+extension Number {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Optional.self, from: data)
-        self.init(optionalOptional: me.optionalOptional)
+        let me = try newJSONDecoder().decode(Number.self, from: data)
+        self.init(number: me.number)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11839,10 +11839,10 @@ extension Optional {
     }
 
     func with(
-        optionalOptional: Int? = nil
-    ) -> Optional {
-        return Optional(
-            optionalOptional: optionalOptional ?? self.optionalOptional
+        number: Int? = nil
+    ) -> Number {
+        return Number(
+            number: number ?? self.number
         )
     }
 
@@ -11855,25 +11855,25 @@ extension Optional {
     }
 }
 
-// MARK: - Override
-@objcMembers class Override: NSObject, Codable {
-    let overrideOverride: Int
+// MARK: - Nil
+@objcMembers class Nil: NSObject, Codable {
+    let nilNil: Int
 
     enum CodingKeys: String, CodingKey {
-        case overrideOverride = "override"
+        case nilNil = "nil"
     }
 
-    init(overrideOverride: Int) {
-        self.overrideOverride = overrideOverride
+    init(nilNil: Int) {
+        self.nilNil = nilNil
     }
 }
 
-// MARK: Override convenience initializers and mutators
+// MARK: Nil convenience initializers and mutators
 
-extension Override {
+extension Nil {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Override.self, from: data)
-        self.init(overrideOverride: me.overrideOverride)
+        let me = try newJSONDecoder().decode(Nil.self, from: data)
+        self.init(nilNil: me.nilNil)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11888,10 +11888,10 @@ extension Override {
     }
 
     func with(
-        overrideOverride: Int? = nil
-    ) -> Override {
-        return Override(
-            overrideOverride: overrideOverride ?? self.overrideOverride
+        nilNil: Int? = nil
+    ) -> Nil {
+        return Nil(
+            nilNil: nilNil ?? self.nilNil
         )
     }
 
@@ -11904,25 +11904,25 @@ extension Override {
     }
 }
 
-// MARK: - Postfix
-@objcMembers class Postfix: NSObject, Codable {
-    let postfixPostfix: Int
+// MARK: - NoneClass
+@objcMembers class NoneClass: NSObject, Codable {
+    let none: Int
 
     enum CodingKeys: String, CodingKey {
-        case postfixPostfix = "postfix"
+        case none = "none"
     }
 
-    init(postfixPostfix: Int) {
-        self.postfixPostfix = postfixPostfix
+    init(none: Int) {
+        self.none = none
     }
 }
 
-// MARK: Postfix convenience initializers and mutators
+// MARK: NoneClass convenience initializers and mutators
 
-extension Postfix {
+extension NoneClass {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Postfix.self, from: data)
-        self.init(postfixPostfix: me.postfixPostfix)
+        let me = try newJSONDecoder().decode(NoneClass.self, from: data)
+        self.init(none: me.none)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11937,10 +11937,10 @@ extension Postfix {
     }
 
     func with(
-        postfixPostfix: Int? = nil
-    ) -> Postfix {
-        return Postfix(
-            postfixPostfix: postfixPostfix ?? self.postfixPostfix
+        none: Int? = nil
+    ) -> NoneClass {
+        return NoneClass(
+            none: none ?? self.none
         )
     }
 
@@ -11953,25 +11953,25 @@ extension Postfix {
     }
 }
 
-// MARK: - Precedence
-@objcMembers class Precedence: NSObject, Codable {
-    let precedencePrecedence: Int
+// MARK: - Nonmutating
+@objcMembers class Nonmutating: NSObject, Codable {
+    let nonmutatingNonmutating: Int
 
     enum CodingKeys: String, CodingKey {
-        case precedencePrecedence = "precedence"
+        case nonmutatingNonmutating = "nonmutating"
     }
 
-    init(precedencePrecedence: Int) {
-        self.precedencePrecedence = precedencePrecedence
+    init(nonmutatingNonmutating: Int) {
+        self.nonmutatingNonmutating = nonmutatingNonmutating
     }
 }
 
-// MARK: Precedence convenience initializers and mutators
+// MARK: Nonmutating convenience initializers and mutators
 
-extension Precedence {
+extension Nonmutating {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Precedence.self, from: data)
-        self.init(precedencePrecedence: me.precedencePrecedence)
+        let me = try newJSONDecoder().decode(Nonmutating.self, from: data)
+        self.init(nonmutatingNonmutating: me.nonmutatingNonmutating)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11986,10 +11986,10 @@ extension Precedence {
     }
 
     func with(
-        precedencePrecedence: Int? = nil
-    ) -> Precedence {
-        return Precedence(
-            precedencePrecedence: precedencePrecedence ?? self.precedencePrecedence
+        nonmutatingNonmutating: Int? = nil
+    ) -> Nonmutating {
+        return Nonmutating(
+            nonmutatingNonmutating: nonmutatingNonmutating ?? self.nonmutatingNonmutating
         )
     }
 
@@ -12002,25 +12002,25 @@ extension Precedence {
     }
 }
 
-// MARK: - Prefix
-@objcMembers class Prefix: NSObject, Codable {
-    let prefixPrefix: Int
+// MARK: - NullClass
+@objcMembers class NullClass: NSObject, Codable {
+    let null: Int
 
     enum CodingKeys: String, CodingKey {
-        case prefixPrefix = "prefix"
+        case null = "null"
     }
 
-    init(prefixPrefix: Int) {
-        self.prefixPrefix = prefixPrefix
+    init(null: Int) {
+        self.null = null
     }
 }
 
-// MARK: Prefix convenience initializers and mutators
+// MARK: NullClass convenience initializers and mutators
 
-extension Prefix {
+extension NullClass {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Prefix.self, from: data)
-        self.init(prefixPrefix: me.prefixPrefix)
+        let me = try newJSONDecoder().decode(NullClass.self, from: data)
+        self.init(null: me.null)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12035,10 +12035,10 @@ extension Prefix {
     }
 
     func with(
-        prefixPrefix: Int? = nil
-    ) -> Prefix {
-        return Prefix(
-            prefixPrefix: prefixPrefix ?? self.prefixPrefix
+        null: Int? = nil
+    ) -> NullClass {
+        return NullClass(
+            null: null ?? self.null
         )
     }
 
@@ -12051,25 +12051,25 @@ extension Prefix {
     }
 }
 
-// MARK: - Private
-@objcMembers class Private: NSObject, Codable {
-    let privatePrivate: Int
+// MARK: - Open
+@objcMembers class Open: NSObject, Codable {
+    let openOpen: Int
 
     enum CodingKeys: String, CodingKey {
-        case privatePrivate = "private"
+        case openOpen = "open"
     }
 
-    init(privatePrivate: Int) {
-        self.privatePrivate = privatePrivate
+    init(openOpen: Int) {
+        self.openOpen = openOpen
     }
 }
 
-// MARK: Private convenience initializers and mutators
+// MARK: Open convenience initializers and mutators
 
-extension Private {
+extension Open {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Private.self, from: data)
-        self.init(privatePrivate: me.privatePrivate)
+        let me = try newJSONDecoder().decode(Open.self, from: data)
+        self.init(openOpen: me.openOpen)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12084,10 +12084,10 @@ extension Private {
     }
 
     func with(
-        privatePrivate: Int? = nil
-    ) -> Private {
-        return Private(
-            privatePrivate: privatePrivate ?? self.privatePrivate
+        openOpen: Int? = nil
+    ) -> Open {
+        return Open(
+            openOpen: openOpen ?? self.openOpen
         )
     }
 
@@ -12100,25 +12100,25 @@ extension Private {
     }
 }
 
-// MARK: - ProtocolClass
-@objcMembers class ProtocolClass: NSObject, Codable {
-    let protocolProtocol: Int
+// MARK: - Operator
+@objcMembers class Operator: NSObject, Codable {
+    let operatorOperator: Int
 
     enum CodingKeys: String, CodingKey {
-        case protocolProtocol = "Protocol"
+        case operatorOperator = "operator"
     }
 
-    init(protocolProtocol: Int) {
-        self.protocolProtocol = protocolProtocol
+    init(operatorOperator: Int) {
+        self.operatorOperator = operatorOperator
     }
 }
 
-// MARK: ProtocolClass convenience initializers and mutators
+// MARK: Operator convenience initializers and mutators
 
-extension ProtocolClass {
+extension Operator {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(ProtocolClass.self, from: data)
-        self.init(protocolProtocol: me.protocolProtocol)
+        let me = try newJSONDecoder().decode(Operator.self, from: data)
+        self.init(operatorOperator: me.operatorOperator)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12133,10 +12133,10 @@ extension ProtocolClass {
     }
 
     func with(
-        protocolProtocol: Int? = nil
-    ) -> ProtocolClass {
-        return ProtocolClass(
-            protocolProtocol: protocolProtocol ?? self.protocolProtocol
+        operatorOperator: Int? = nil
+    ) -> Operator {
+        return Operator(
+            operatorOperator: operatorOperator ?? self.operatorOperator
         )
     }
 
@@ -12149,25 +12149,25 @@ extension ProtocolClass {
     }
 }
 
-// MARK: - Public
-@objcMembers class Public: NSObject, Codable {
-    let publicPublic: Int
+// MARK: - Optional
+@objcMembers class Optional: NSObject, Codable {
+    let optionalOptional: Int
 
     enum CodingKeys: String, CodingKey {
-        case publicPublic = "public"
+        case optionalOptional = "optional"
     }
 
-    init(publicPublic: Int) {
-        self.publicPublic = publicPublic
+    init(optionalOptional: Int) {
+        self.optionalOptional = optionalOptional
     }
 }
 
-// MARK: Public convenience initializers and mutators
+// MARK: Optional convenience initializers and mutators
 
-extension Public {
+extension Optional {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Public.self, from: data)
-        self.init(publicPublic: me.publicPublic)
+        let me = try newJSONDecoder().decode(Optional.self, from: data)
+        self.init(optionalOptional: me.optionalOptional)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12182,10 +12182,10 @@ extension Public {
     }
 
     func with(
-        publicPublic: Int? = nil
-    ) -> Public {
-        return Public(
-            publicPublic: publicPublic ?? self.publicPublic
+        optionalOptional: Int? = nil
+    ) -> Optional {
+        return Optional(
+            optionalOptional: optionalOptional ?? self.optionalOptional
         )
     }
 
@@ -12198,25 +12198,25 @@ extension Public {
     }
 }
 
-// MARK: - Repeat
-@objcMembers class Repeat: NSObject, Codable {
-    let repeatRepeat: Int
+// MARK: - Override
+@objcMembers class Override: NSObject, Codable {
+    let overrideOverride: Int
 
     enum CodingKeys: String, CodingKey {
-        case repeatRepeat = "repeat"
+        case overrideOverride = "override"
     }
 
-    init(repeatRepeat: Int) {
-        self.repeatRepeat = repeatRepeat
+    init(overrideOverride: Int) {
+        self.overrideOverride = overrideOverride
     }
 }
 
-// MARK: Repeat convenience initializers and mutators
+// MARK: Override convenience initializers and mutators
 
-extension Repeat {
+extension Override {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Repeat.self, from: data)
-        self.init(repeatRepeat: me.repeatRepeat)
+        let me = try newJSONDecoder().decode(Override.self, from: data)
+        self.init(overrideOverride: me.overrideOverride)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12231,10 +12231,10 @@ extension Repeat {
     }
 
     func with(
-        repeatRepeat: Int? = nil
-    ) -> Repeat {
-        return Repeat(
-            repeatRepeat: repeatRepeat ?? self.repeatRepeat
+        overrideOverride: Int? = nil
+    ) -> Override {
+        return Override(
+            overrideOverride: overrideOverride ?? self.overrideOverride
         )
     }
 
@@ -12247,25 +12247,25 @@ extension Repeat {
     }
 }
 
-// MARK: - Required
-@objcMembers class Required: NSObject, Codable {
-    let requiredRequired: Int
+// MARK: - Postfix
+@objcMembers class Postfix: NSObject, Codable {
+    let postfixPostfix: Int
 
     enum CodingKeys: String, CodingKey {
-        case requiredRequired = "required"
+        case postfixPostfix = "postfix"
     }
 
-    init(requiredRequired: Int) {
-        self.requiredRequired = requiredRequired
+    init(postfixPostfix: Int) {
+        self.postfixPostfix = postfixPostfix
     }
 }
 
-// MARK: Required convenience initializers and mutators
+// MARK: Postfix convenience initializers and mutators
 
-extension Required {
+extension Postfix {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Required.self, from: data)
-        self.init(requiredRequired: me.requiredRequired)
+        let me = try newJSONDecoder().decode(Postfix.self, from: data)
+        self.init(postfixPostfix: me.postfixPostfix)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12280,12 +12280,12 @@ extension Required {
     }
 
     func with(
-        requiredRequired: Int? = nil
-    ) -> Required {
-        return Required(
-            requiredRequired: requiredRequired ?? self.requiredRequired
-        )
-    }
+        postfixPostfix: Int? = nil
+    ) -> Postfix {
+        return Postfix(
+            postfixPostfix: postfixPostfix ?? self.postfixPostfix
+        )
+    }
 
     func jsonData() throws -> Data {
         return try newJSONEncoder().encode(self)
@@ -12296,25 +12296,25 @@ extension Required {
     }
 }
 
-// MARK: - Retain
-@objcMembers class Retain: NSObject, Codable {
-    let retainRetain: Int
+// MARK: - Precedence
+@objcMembers class Precedence: NSObject, Codable {
+    let precedencePrecedence: Int
 
     enum CodingKeys: String, CodingKey {
-        case retainRetain = "retain"
+        case precedencePrecedence = "precedence"
     }
 
-    init(retainRetain: Int) {
-        self.retainRetain = retainRetain
+    init(precedencePrecedence: Int) {
+        self.precedencePrecedence = precedencePrecedence
     }
 }
 
-// MARK: Retain convenience initializers and mutators
+// MARK: Precedence convenience initializers and mutators
 
-extension Retain {
+extension Precedence {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Retain.self, from: data)
-        self.init(retainRetain: me.retainRetain)
+        let me = try newJSONDecoder().decode(Precedence.self, from: data)
+        self.init(precedencePrecedence: me.precedencePrecedence)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12329,10 +12329,10 @@ extension Retain {
     }
 
     func with(
-        retainRetain: Int? = nil
-    ) -> Retain {
-        return Retain(
-            retainRetain: retainRetain ?? self.retainRetain
+        precedencePrecedence: Int? = nil
+    ) -> Precedence {
+        return Precedence(
+            precedencePrecedence: precedencePrecedence ?? self.precedencePrecedence
         )
     }
 
@@ -12345,25 +12345,25 @@ extension Retain {
     }
 }
 
-// MARK: - Rethrows
-@objcMembers class Rethrows: NSObject, Codable {
-    let rethrowsRethrows: Int
+// MARK: - Prefix
+@objcMembers class Prefix: NSObject, Codable {
+    let prefixPrefix: Int
 
     enum CodingKeys: String, CodingKey {
-        case rethrowsRethrows = "rethrows"
+        case prefixPrefix = "prefix"
     }
 
-    init(rethrowsRethrows: Int) {
-        self.rethrowsRethrows = rethrowsRethrows
+    init(prefixPrefix: Int) {
+        self.prefixPrefix = prefixPrefix
     }
 }
 
-// MARK: Rethrows convenience initializers and mutators
+// MARK: Prefix convenience initializers and mutators
 
-extension Rethrows {
+extension Prefix {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Rethrows.self, from: data)
-        self.init(rethrowsRethrows: me.rethrowsRethrows)
+        let me = try newJSONDecoder().decode(Prefix.self, from: data)
+        self.init(prefixPrefix: me.prefixPrefix)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12378,10 +12378,10 @@ extension Rethrows {
     }
 
     func with(
-        rethrowsRethrows: Int? = nil
-    ) -> Rethrows {
-        return Rethrows(
-            rethrowsRethrows: rethrowsRethrows ?? self.rethrowsRethrows
+        prefixPrefix: Int? = nil
+    ) -> Prefix {
+        return Prefix(
+            prefixPrefix: prefixPrefix ?? self.prefixPrefix
         )
     }
 
@@ -12394,25 +12394,25 @@ extension Rethrows {
     }
 }
 
-// MARK: - Return
-@objcMembers class Return: NSObject, Codable {
-    let returnReturn: Int
+// MARK: - Private
+@objcMembers class Private: NSObject, Codable {
+    let privatePrivate: Int
 
     enum CodingKeys: String, CodingKey {
-        case returnReturn = "return"
+        case privatePrivate = "private"
     }
 
-    init(returnReturn: Int) {
-        self.returnReturn = returnReturn
+    init(privatePrivate: Int) {
+        self.privatePrivate = privatePrivate
     }
 }
 
-// MARK: Return convenience initializers and mutators
+// MARK: Private convenience initializers and mutators
 
-extension Return {
+extension Private {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Return.self, from: data)
-        self.init(returnReturn: me.returnReturn)
+        let me = try newJSONDecoder().decode(Private.self, from: data)
+        self.init(privatePrivate: me.privatePrivate)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12427,10 +12427,10 @@ extension Return {
     }
 
     func with(
-        returnReturn: Int? = nil
-    ) -> Return {
-        return Return(
-            returnReturn: returnReturn ?? self.returnReturn
+        privatePrivate: Int? = nil
+    ) -> Private {
+        return Private(
+            privatePrivate: privatePrivate ?? self.privatePrivate
         )
     }
 
@@ -12443,25 +12443,25 @@ extension Return {
     }
 }
 
-// MARK: - Right
-@objcMembers class Right: NSObject, Codable {
-    let rightRight: Int
+// MARK: - ProtocolClass
+@objcMembers class ProtocolClass: NSObject, Codable {
+    let protocolProtocol: Int
 
     enum CodingKeys: String, CodingKey {
-        case rightRight = "right"
+        case protocolProtocol = "Protocol"
     }
 
-    init(rightRight: Int) {
-        self.rightRight = rightRight
+    init(protocolProtocol: Int) {
+        self.protocolProtocol = protocolProtocol
     }
 }
 
-// MARK: Right convenience initializers and mutators
+// MARK: ProtocolClass convenience initializers and mutators
 
-extension Right {
+extension ProtocolClass {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Right.self, from: data)
-        self.init(rightRight: me.rightRight)
+        let me = try newJSONDecoder().decode(ProtocolClass.self, from: data)
+        self.init(protocolProtocol: me.protocolProtocol)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12476,10 +12476,10 @@ extension Right {
     }
 
     func with(
-        rightRight: Int? = nil
-    ) -> Right {
-        return Right(
-            rightRight: rightRight ?? self.rightRight
+        protocolProtocol: Int? = nil
+    ) -> ProtocolClass {
+        return ProtocolClass(
+            protocolProtocol: protocolProtocol ?? self.protocolProtocol
         )
     }
 
@@ -12492,25 +12492,25 @@ extension Right {
     }
 }
 
-// MARK: - Object
-@objcMembers class Object: NSObject, Codable {
-    let object: Int
+// MARK: - Public
+@objcMembers class Public: NSObject, Codable {
+    let publicPublic: Int
 
     enum CodingKeys: String, CodingKey {
-        case object = "object"
+        case publicPublic = "public"
     }
 
-    init(object: Int) {
-        self.object = object
+    init(publicPublic: Int) {
+        self.publicPublic = publicPublic
     }
 }
 
-// MARK: Object convenience initializers and mutators
+// MARK: Public convenience initializers and mutators
 
-extension Object {
+extension Public {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Object.self, from: data)
-        self.init(object: me.object)
+        let me = try newJSONDecoder().decode(Public.self, from: data)
+        self.init(publicPublic: me.publicPublic)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12525,10 +12525,10 @@ extension Object {
     }
 
     func with(
-        object: Int? = nil
-    ) -> Object {
-        return Object(
-            object: object ?? self.object
+        publicPublic: Int? = nil
+    ) -> Public {
+        return Public(
+            publicPublic: publicPublic ?? self.publicPublic
         )
     }
 
@@ -12541,25 +12541,25 @@ extension Object {
     }
 }
 
-// MARK: - ObjectMapper
-@objcMembers class ObjectMapper: NSObject, Codable {
-    let objectMapper: Int
+// MARK: - Repeat
+@objcMembers class Repeat: NSObject, Codable {
+    let repeatRepeat: Int
 
     enum CodingKeys: String, CodingKey {
-        case objectMapper = "ObjectMapper"
+        case repeatRepeat = "repeat"
     }
 
-    init(objectMapper: Int) {
-        self.objectMapper = objectMapper
+    init(repeatRepeat: Int) {
+        self.repeatRepeat = repeatRepeat
     }
 }
 
-// MARK: ObjectMapper convenience initializers and mutators
+// MARK: Repeat convenience initializers and mutators
 
-extension ObjectMapper {
+extension Repeat {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(ObjectMapper.self, from: data)
-        self.init(objectMapper: me.objectMapper)
+        let me = try newJSONDecoder().decode(Repeat.self, from: data)
+        self.init(repeatRepeat: me.repeatRepeat)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12574,10 +12574,10 @@ extension ObjectMapper {
     }
 
     func with(
-        objectMapper: Int? = nil
-    ) -> ObjectMapper {
-        return ObjectMapper(
-            objectMapper: objectMapper ?? self.objectMapper
+        repeatRepeat: Int? = nil
+    ) -> Repeat {
+        return Repeat(
+            repeatRepeat: repeatRepeat ?? self.repeatRepeat
         )
     }
 
@@ -12590,25 +12590,25 @@ extension ObjectMapper {
     }
 }
 
-// MARK: - Of
-@objcMembers class Of: NSObject, Codable {
-    let of: Int
+// MARK: - Required
+@objcMembers class Required: NSObject, Codable {
+    let requiredRequired: Int
 
     enum CodingKeys: String, CodingKey {
-        case of = "of"
+        case requiredRequired = "required"
     }
 
-    init(of: Int) {
-        self.of = of
+    init(requiredRequired: Int) {
+        self.requiredRequired = requiredRequired
     }
 }
 
-// MARK: Of convenience initializers and mutators
+// MARK: Required convenience initializers and mutators
 
-extension Of {
+extension Required {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Of.self, from: data)
-        self.init(of: me.of)
+        let me = try newJSONDecoder().decode(Required.self, from: data)
+        self.init(requiredRequired: me.requiredRequired)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12623,10 +12623,10 @@ extension Of {
     }
 
     func with(
-        of: Int? = nil
-    ) -> Of {
-        return Of(
-            of: of ?? self.of
+        requiredRequired: Int? = nil
+    ) -> Required {
+        return Required(
+            requiredRequired: requiredRequired ?? self.requiredRequired
         )
     }
 
@@ -12639,25 +12639,25 @@ extension Of {
     }
 }
 
-// MARK: - Oneway
-@objcMembers class Oneway: NSObject, Codable {
-    let oneway: Int
+// MARK: - Retain
+@objcMembers class Retain: NSObject, Codable {
+    let retainRetain: Int
 
     enum CodingKeys: String, CodingKey {
-        case oneway = "oneway"
+        case retainRetain = "retain"
     }
 
-    init(oneway: Int) {
-        self.oneway = oneway
+    init(retainRetain: Int) {
+        self.retainRetain = retainRetain
     }
 }
 
-// MARK: Oneway convenience initializers and mutators
+// MARK: Retain convenience initializers and mutators
 
-extension Oneway {
+extension Retain {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Oneway.self, from: data)
-        self.init(oneway: me.oneway)
+        let me = try newJSONDecoder().decode(Retain.self, from: data)
+        self.init(retainRetain: me.retainRetain)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12672,10 +12672,10 @@ extension Oneway {
     }
 
     func with(
-        oneway: Int? = nil
-    ) -> Oneway {
-        return Oneway(
-            oneway: oneway ?? self.oneway
+        retainRetain: Int? = nil
+    ) -> Retain {
+        return Retain(
+            retainRetain: retainRetain ?? self.retainRetain
         )
     }
 
@@ -12688,25 +12688,25 @@ extension Oneway {
     }
 }
 
-// MARK: - Or
-@objcMembers class Or: NSObject, Codable {
-    let or: Int
+// MARK: - Rethrows
+@objcMembers class Rethrows: NSObject, Codable {
+    let rethrowsRethrows: Int
 
     enum CodingKeys: String, CodingKey {
-        case or = "or"
+        case rethrowsRethrows = "rethrows"
     }
 
-    init(or: Int) {
-        self.or = or
+    init(rethrowsRethrows: Int) {
+        self.rethrowsRethrows = rethrowsRethrows
     }
 }
 
-// MARK: Or convenience initializers and mutators
+// MARK: Rethrows convenience initializers and mutators
 
-extension Or {
+extension Rethrows {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Or.self, from: data)
-        self.init(or: me.or)
+        let me = try newJSONDecoder().decode(Rethrows.self, from: data)
+        self.init(rethrowsRethrows: me.rethrowsRethrows)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12721,12 +12721,12 @@ extension Or {
     }
 
     func with(
-        or: Int? = nil
-    ) -> Or {
-        return Or(
-            or: or ?? self.or
-        )
-    }
+        rethrowsRethrows: Int? = nil
+    ) -> Rethrows {
+        return Rethrows(
+            rethrowsRethrows: rethrowsRethrows ?? self.rethrowsRethrows
+        )
+    }
 
     func jsonData() throws -> Data {
         return try newJSONEncoder().encode(self)
@@ -12737,25 +12737,25 @@ extension Or {
     }
 }
 
-// MARK: - OrEq
-@objcMembers class OrEq: NSObject, Codable {
-    let orEq: Int
+// MARK: - Object
+@objcMembers class Object: NSObject, Codable {
+    let object: Int
 
     enum CodingKeys: String, CodingKey {
-        case orEq = "or_eq"
+        case object = "object"
     }
 
-    init(orEq: Int) {
-        self.orEq = orEq
+    init(object: Int) {
+        self.object = object
     }
 }
 
-// MARK: OrEq convenience initializers and mutators
+// MARK: Object convenience initializers and mutators
 
-extension OrEq {
+extension Object {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(OrEq.self, from: data)
-        self.init(orEq: me.orEq)
+        let me = try newJSONDecoder().decode(Object.self, from: data)
+        self.init(object: me.object)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12770,10 +12770,10 @@ extension OrEq {
     }
 
     func with(
-        orEq: Int? = nil
-    ) -> OrEq {
-        return OrEq(
-            orEq: orEq ?? self.orEq
+        object: Int? = nil
+    ) -> Object {
+        return Object(
+            object: object ?? self.object
         )
     }
 
@@ -12786,25 +12786,25 @@ extension OrEq {
     }
 }
 
-// MARK: - Out
-@objcMembers class Out: NSObject, Codable {
-    let out: Int
+// MARK: - ObjectMapper
+@objcMembers class ObjectMapper: NSObject, Codable {
+    let objectMapper: Int
 
     enum CodingKeys: String, CodingKey {
-        case out = "out"
+        case objectMapper = "ObjectMapper"
     }
 
-    init(out: Int) {
-        self.out = out
+    init(objectMapper: Int) {
+        self.objectMapper = objectMapper
     }
 }
 
-// MARK: Out convenience initializers and mutators
+// MARK: ObjectMapper convenience initializers and mutators
 
-extension Out {
+extension ObjectMapper {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Out.self, from: data)
-        self.init(out: me.out)
+        let me = try newJSONDecoder().decode(ObjectMapper.self, from: data)
+        self.init(objectMapper: me.objectMapper)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12819,10 +12819,10 @@ extension Out {
     }
 
     func with(
-        out: Int? = nil
-    ) -> Out {
-        return Out(
-            out: out ?? self.out
+        objectMapper: Int? = nil
+    ) -> ObjectMapper {
+        return ObjectMapper(
+            objectMapper: objectMapper ?? self.objectMapper
         )
     }
 
@@ -12835,25 +12835,25 @@ extension Out {
     }
 }
 
-// MARK: - Package
-@objcMembers class Package: NSObject, Codable {
-    let package: Int
+// MARK: - ObjectNode
+@objcMembers class ObjectNode: NSObject, Codable {
+    let objectNode: Int
 
     enum CodingKeys: String, CodingKey {
-        case package = "package"
+        case objectNode = "ObjectNode"
     }
 
-    init(package: Int) {
-        self.package = package
+    init(objectNode: Int) {
+        self.objectNode = objectNode
     }
 }
 
-// MARK: Package convenience initializers and mutators
+// MARK: ObjectNode convenience initializers and mutators
 
-extension Package {
+extension ObjectNode {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Package.self, from: data)
-        self.init(package: me.package)
+        let me = try newJSONDecoder().decode(ObjectNode.self, from: data)
+        self.init(objectNode: me.objectNode)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12868,10 +12868,10 @@ extension Package {
     }
 
     func with(
-        package: Int? = nil
-    ) -> Package {
-        return Package(
-            package: package ?? self.package
+        objectNode: Int? = nil
+    ) -> ObjectNode {
+        return ObjectNode(
+            objectNode: objectNode ?? self.objectNode
         )
     }
 
@@ -12884,25 +12884,25 @@ extension Package {
     }
 }
 
-// MARK: - Params
-@objcMembers class Params: NSObject, Codable {
-    let params: Int
+// MARK: - Of
+@objcMembers class Of: NSObject, Codable {
+    let of: Int
 
     enum CodingKeys: String, CodingKey {
-        case params = "params"
+        case of = "of"
     }
 
-    init(params: Int) {
-        self.params = params
+    init(of: Int) {
+        self.of = of
     }
 }
 
-// MARK: Params convenience initializers and mutators
+// MARK: Of convenience initializers and mutators
 
-extension Params {
+extension Of {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Params.self, from: data)
-        self.init(params: me.params)
+        let me = try newJSONDecoder().decode(Of.self, from: data)
+        self.init(of: me.of)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12917,10 +12917,10 @@ extension Params {
     }
 
     func with(
-        params: Int? = nil
-    ) -> Params {
-        return Params(
-            params: params ?? self.params
+        of: Int? = nil
+    ) -> Of {
+        return Of(
+            of: of ?? self.of
         )
     }
 
@@ -12933,25 +12933,25 @@ extension Params {
     }
 }
 
-// MARK: - Pass
-@objcMembers class Pass: NSObject, Codable {
-    let pass: Int
+// MARK: - Oneway
+@objcMembers class Oneway: NSObject, Codable {
+    let oneway: Int
 
     enum CodingKeys: String, CodingKey {
-        case pass = "pass"
+        case oneway = "oneway"
     }
 
-    init(pass: Int) {
-        self.pass = pass
+    init(oneway: Int) {
+        self.oneway = oneway
     }
 }
 
-// MARK: Pass convenience initializers and mutators
+// MARK: Oneway convenience initializers and mutators
 
-extension Pass {
+extension Oneway {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Pass.self, from: data)
-        self.init(pass: me.pass)
+        let me = try newJSONDecoder().decode(Oneway.self, from: data)
+        self.init(oneway: me.oneway)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12966,10 +12966,10 @@ extension Pass {
     }
 
     func with(
-        pass: Int? = nil
-    ) -> Pass {
-        return Pass(
-            pass: pass ?? self.pass
+        oneway: Int? = nil
+    ) -> Oneway {
+        return Oneway(
+            oneway: oneway ?? self.oneway
         )
     }
 
@@ -12982,25 +12982,25 @@ extension Pass {
     }
 }
 
-// MARK: - Port
-@objcMembers class Port: NSObject, Codable {
-    let port: Int
+// MARK: - Or
+@objcMembers class Or: NSObject, Codable {
+    let or: Int
 
     enum CodingKeys: String, CodingKey {
-        case port = "port"
+        case or = "or"
     }
 
-    init(port: Int) {
-        self.port = port
+    init(or: Int) {
+        self.or = or
     }
 }
 
-// MARK: Port convenience initializers and mutators
+// MARK: Or convenience initializers and mutators
 
-extension Port {
+extension Or {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Port.self, from: data)
-        self.init(port: me.port)
+        let me = try newJSONDecoder().decode(Or.self, from: data)
+        self.init(or: me.or)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13015,10 +13015,10 @@ extension Port {
     }
 
     func with(
-        port: Int? = nil
-    ) -> Port {
-        return Port(
-            port: port ?? self.port
+        or: Int? = nil
+    ) -> Or {
+        return Or(
+            or: or ?? self.or
         )
     }
 
@@ -13031,25 +13031,25 @@ extension Port {
     }
 }
 
-// MARK: - Print
-@objcMembers class Print: NSObject, Codable {
-    let print: Int
+// MARK: - OrEq
+@objcMembers class OrEq: NSObject, Codable {
+    let orEq: Int
 
     enum CodingKeys: String, CodingKey {
-        case print = "print"
+        case orEq = "or_eq"
     }
 
-    init(print: Int) {
-        self.print = print
+    init(orEq: Int) {
+        self.orEq = orEq
     }
 }
 
-// MARK: Print convenience initializers and mutators
+// MARK: OrEq convenience initializers and mutators
 
-extension Print {
+extension OrEq {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Print.self, from: data)
-        self.init(print: me.print)
+        let me = try newJSONDecoder().decode(OrEq.self, from: data)
+        self.init(orEq: me.orEq)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13064,10 +13064,10 @@ extension Print {
     }
 
     func with(
-        print: Int? = nil
-    ) -> Print {
-        return Print(
-            print: print ?? self.print
+        orEq: Int? = nil
+    ) -> OrEq {
+        return OrEq(
+            orEq: orEq ?? self.orEq
         )
     }
 
@@ -13080,25 +13080,25 @@ extension Print {
     }
 }
 
-// MARK: - PrintMembers
-@objcMembers class PrintMembers: NSObject, Codable {
-    let printMembers: Int
+// MARK: - Out
+@objcMembers class Out: NSObject, Codable {
+    let out: Int
 
     enum CodingKeys: String, CodingKey {
-        case printMembers = "printMembers"
+        case out = "out"
     }
 
-    init(printMembers: Int) {
-        self.printMembers = printMembers
+    init(out: Int) {
+        self.out = out
     }
 }
 
-// MARK: PrintMembers convenience initializers and mutators
+// MARK: Out convenience initializers and mutators
 
-extension PrintMembers {
+extension Out {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(PrintMembers.self, from: data)
-        self.init(printMembers: me.printMembers)
+        let me = try newJSONDecoder().decode(Out.self, from: data)
+        self.init(out: me.out)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13113,10 +13113,10 @@ extension PrintMembers {
     }
 
     func with(
-        printMembers: Int? = nil
-    ) -> PrintMembers {
-        return PrintMembers(
-            printMembers: printMembers ?? self.printMembers
+        out: Int? = nil
+    ) -> Out {
+        return Out(
+            out: out ?? self.out
         )
     }
 
@@ -13129,25 +13129,25 @@ extension PrintMembers {
     }
 }
 
-// MARK: - Printf
-@objcMembers class Printf: NSObject, Codable {
-    let printf: Int
+// MARK: - Package
+@objcMembers class Package: NSObject, Codable {
+    let package: Int
 
     enum CodingKeys: String, CodingKey {
-        case printf = "printf"
+        case package = "package"
     }
 
-    init(printf: Int) {
-        self.printf = printf
+    init(package: Int) {
+        self.package = package
     }
 }
 
-// MARK: Printf convenience initializers and mutators
+// MARK: Package convenience initializers and mutators
 
-extension Printf {
+extension Package {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Printf.self, from: data)
-        self.init(printf: me.printf)
+        let me = try newJSONDecoder().decode(Package.self, from: data)
+        self.init(package: me.package)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13162,10 +13162,10 @@ extension Printf {
     }
 
     func with(
-        printf: Int? = nil
-    ) -> Printf {
-        return Printf(
-            printf: printf ?? self.printf
+        package: Int? = nil
+    ) -> Package {
+        return Package(
+            package: package ?? self.package
         )
     }
 
@@ -13178,25 +13178,25 @@ extension Printf {
     }
 }
 
-// MARK: - Protected
-@objcMembers class Protected: NSObject, Codable {
-    let protected: Int
+// MARK: - Params
+@objcMembers class Params: NSObject, Codable {
+    let params: Int
 
     enum CodingKeys: String, CodingKey {
-        case protected = "protected"
+        case params = "params"
     }
 
-    init(protected: Int) {
-        self.protected = protected
+    init(params: Int) {
+        self.params = params
     }
 }
 
-// MARK: Protected convenience initializers and mutators
+// MARK: Params convenience initializers and mutators
 
-extension Protected {
+extension Params {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Protected.self, from: data)
-        self.init(protected: me.protected)
+        let me = try newJSONDecoder().decode(Params.self, from: data)
+        self.init(params: me.params)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13211,10 +13211,10 @@ extension Protected {
     }
 
     func with(
-        protected: Int? = nil
-    ) -> Protected {
-        return Protected(
-            protected: protected ?? self.protected
+        params: Int? = nil
+    ) -> Params {
+        return Params(
+            params: params ?? self.params
         )
     }
 
@@ -13227,25 +13227,25 @@ extension Protected {
     }
 }
 
-// MARK: - Obj4Protocol
-@objcMembers class Obj4Protocol: NSObject, Codable {
-    let protocolProtocol: Int
+// MARK: - Pass
+@objcMembers class Pass: NSObject, Codable {
+    let pass: Int
 
     enum CodingKeys: String, CodingKey {
-        case protocolProtocol = "protocol"
+        case pass = "pass"
     }
 
-    init(protocolProtocol: Int) {
-        self.protocolProtocol = protocolProtocol
+    init(pass: Int) {
+        self.pass = pass
     }
 }
 
-// MARK: Obj4Protocol convenience initializers and mutators
+// MARK: Pass convenience initializers and mutators
 
-extension Obj4Protocol {
+extension Pass {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Obj4Protocol.self, from: data)
-        self.init(protocolProtocol: me.protocolProtocol)
+        let me = try newJSONDecoder().decode(Pass.self, from: data)
+        self.init(pass: me.pass)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13260,10 +13260,10 @@ extension Obj4Protocol {
     }
 
     func with(
-        protocolProtocol: Int? = nil
-    ) -> Obj4Protocol {
-        return Obj4Protocol(
-            protocolProtocol: protocolProtocol ?? self.protocolProtocol
+        pass: Int? = nil
+    ) -> Pass {
+        return Pass(
+            pass: pass ?? self.pass
         )
     }
 
@@ -13276,25 +13276,25 @@ extension Obj4Protocol {
     }
 }
 
-// MARK: - Quicktype
-@objcMembers class Quicktype: NSObject, Codable {
-    let quicktype: Int
+// MARK: - Port
+@objcMembers class Port: NSObject, Codable {
+    let port: Int
 
     enum CodingKeys: String, CodingKey {
-        case quicktype = "quicktype"
+        case port = "port"
     }
 
-    init(quicktype: Int) {
-        self.quicktype = quicktype
+    init(port: Int) {
+        self.port = port
     }
 }
 
-// MARK: Quicktype convenience initializers and mutators
+// MARK: Port convenience initializers and mutators
 
-extension Quicktype {
+extension Port {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Quicktype.self, from: data)
-        self.init(quicktype: me.quicktype)
+        let me = try newJSONDecoder().decode(Port.self, from: data)
+        self.init(port: me.port)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13309,10 +13309,10 @@ extension Quicktype {
     }
 
     func with(
-        quicktype: Int? = nil
-    ) -> Quicktype {
-        return Quicktype(
-            quicktype: quicktype ?? self.quicktype
+        port: Int? = nil
+    ) -> Port {
+        return Port(
+            port: port ?? self.port
         )
     }
 
@@ -13325,25 +13325,25 @@ extension Quicktype {
     }
 }
 
-// MARK: - Raise
-@objcMembers class Raise: NSObject, Codable {
-    let raise: Int
+// MARK: - Print
+@objcMembers class Print: NSObject, Codable {
+    let print: Int
 
     enum CodingKeys: String, CodingKey {
-        case raise = "raise"
+        case print = "print"
     }
 
-    init(raise: Int) {
-        self.raise = raise
+    init(print: Int) {
+        self.print = print
     }
 }
 
-// MARK: Raise convenience initializers and mutators
+// MARK: Print convenience initializers and mutators
 
-extension Raise {
+extension Print {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Raise.self, from: data)
-        self.init(raise: me.raise)
+        let me = try newJSONDecoder().decode(Print.self, from: data)
+        self.init(print: me.print)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13358,10 +13358,10 @@ extension Raise {
     }
 
     func with(
-        raise: Int? = nil
-    ) -> Raise {
-        return Raise(
-            raise: raise ?? self.raise
+        print: Int? = nil
+    ) -> Print {
+        return Print(
+            print: print ?? self.print
         )
     }
 
@@ -13374,25 +13374,25 @@ extension Raise {
     }
 }
 
-// MARK: - Range
-@objcMembers class Range: NSObject, Codable {
-    let range: Int
+// MARK: - PrintMembers
+@objcMembers class PrintMembers: NSObject, Codable {
+    let printMembers: Int
 
     enum CodingKeys: String, CodingKey {
-        case range = "range"
+        case printMembers = "printMembers"
     }
 
-    init(range: Int) {
-        self.range = range
+    init(printMembers: Int) {
+        self.printMembers = printMembers
     }
 }
 
-// MARK: Range convenience initializers and mutators
+// MARK: PrintMembers convenience initializers and mutators
 
-extension Range {
+extension PrintMembers {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Range.self, from: data)
-        self.init(range: me.range)
+        let me = try newJSONDecoder().decode(PrintMembers.self, from: data)
+        self.init(printMembers: me.printMembers)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13407,10 +13407,10 @@ extension Range {
     }
 
     func with(
-        range: Int? = nil
-    ) -> Range {
-        return Range(
-            range: range ?? self.range
+        printMembers: Int? = nil
+    ) -> PrintMembers {
+        return PrintMembers(
+            printMembers: printMembers ?? self.printMembers
         )
     }
 
@@ -13423,25 +13423,25 @@ extension Range {
     }
 }
 
-// MARK: - Readonly
-@objcMembers class Readonly: NSObject, Codable {
-    let readonly: Int
+// MARK: - Printf
+@objcMembers class Printf: NSObject, Codable {
+    let printf: Int
 
     enum CodingKeys: String, CodingKey {
-        case readonly = "readonly"
+        case printf = "printf"
     }
 
-    init(readonly: Int) {
-        self.readonly = readonly
+    init(printf: Int) {
+        self.printf = printf
     }
 }
 
-// MARK: Readonly convenience initializers and mutators
+// MARK: Printf convenience initializers and mutators
 
-extension Readonly {
+extension Printf {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Readonly.self, from: data)
-        self.init(readonly: me.readonly)
+        let me = try newJSONDecoder().decode(Printf.self, from: data)
+        self.init(printf: me.printf)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13456,10 +13456,10 @@ extension Readonly {
     }
 
     func with(
-        readonly: Int? = nil
-    ) -> Readonly {
-        return Readonly(
-            readonly: readonly ?? self.readonly
+        printf: Int? = nil
+    ) -> Printf {
+        return Printf(
+            printf: printf ?? self.printf
         )
     }
 
@@ -13472,25 +13472,25 @@ extension Readonly {
     }
 }
 
-// MARK: - Ref
-@objcMembers class Ref: NSObject, Codable {
-    let ref: Int
+// MARK: - Protected
+@objcMembers class Protected: NSObject, Codable {
+    let protected: Int
 
     enum CodingKeys: String, CodingKey {
-        case ref = "ref"
+        case protected = "protected"
     }
 
-    init(ref: Int) {
-        self.ref = ref
+    init(protected: Int) {
+        self.protected = protected
     }
 }
 
-// MARK: Ref convenience initializers and mutators
+// MARK: Protected convenience initializers and mutators
 
-extension Ref {
+extension Protected {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Ref.self, from: data)
-        self.init(ref: me.ref)
+        let me = try newJSONDecoder().decode(Protected.self, from: data)
+        self.init(protected: me.protected)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13505,10 +13505,10 @@ extension Ref {
     }
 
     func with(
-        ref: Int? = nil
-    ) -> Ref {
-        return Ref(
-            ref: ref ?? self.ref
+        protected: Int? = nil
+    ) -> Protected {
+        return Protected(
+            protected: protected ?? self.protected
         )
     }
 
@@ -13521,25 +13521,25 @@ extension Ref {
     }
 }
 
-// MARK: - RegExp
-@objcMembers class RegExp: NSObject, Codable {
-    let regExp: UUID
+// MARK: - Obj4Protocol
+@objcMembers class Obj4Protocol: NSObject, Codable {
+    let protocolProtocol: Int
 
     enum CodingKeys: String, CodingKey {
-        case regExp = "RegExp"
+        case protocolProtocol = "protocol"
     }
 
-    init(regExp: UUID) {
-        self.regExp = regExp
+    init(protocolProtocol: Int) {
+        self.protocolProtocol = protocolProtocol
     }
 }
 
-// MARK: RegExp convenience initializers and mutators
+// MARK: Obj4Protocol convenience initializers and mutators
 
-extension RegExp {
+extension Obj4Protocol {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(RegExp.self, from: data)
-        self.init(regExp: me.regExp)
+        let me = try newJSONDecoder().decode(Obj4Protocol.self, from: data)
+        self.init(protocolProtocol: me.protocolProtocol)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13554,10 +13554,10 @@ extension RegExp {
     }
 
     func with(
-        regExp: UUID? = nil
-    ) -> RegExp {
-        return RegExp(
-            regExp: regExp ?? self.regExp
+        protocolProtocol: Int? = nil
+    ) -> Obj4Protocol {
+        return Obj4Protocol(
+            protocolProtocol: protocolProtocol ?? self.protocolProtocol
         )
     }
 
@@ -13570,25 +13570,25 @@ extension RegExp {
     }
 }
 
-// MARK: - Register
-@objcMembers class Register: NSObject, Codable {
-    let register: Int
+// MARK: - Quicktype
+@objcMembers class Quicktype: NSObject, Codable {
+    let quicktype: Int
 
     enum CodingKeys: String, CodingKey {
-        case register = "register"
+        case quicktype = "quicktype"
     }
 
-    init(register: Int) {
-        self.register = register
+    init(quicktype: Int) {
+        self.quicktype = quicktype
     }
 }
 
-// MARK: Register convenience initializers and mutators
+// MARK: Quicktype convenience initializers and mutators
 
-extension Register {
+extension Quicktype {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Register.self, from: data)
-        self.init(register: me.register)
+        let me = try newJSONDecoder().decode(Quicktype.self, from: data)
+        self.init(quicktype: me.quicktype)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13603,10 +13603,10 @@ extension Register {
     }
 
     func with(
-        register: Int? = nil
-    ) -> Register {
-        return Register(
-            register: register ?? self.register
+        quicktype: Int? = nil
+    ) -> Quicktype {
+        return Quicktype(
+            quicktype: quicktype ?? self.quicktype
         )
     }
 
@@ -13619,25 +13619,25 @@ extension Register {
     }
 }
 
-// MARK: - ReinterpretCast
-@objcMembers class ReinterpretCast: NSObject, Codable {
-    let reinterpretCast: Int
+// MARK: - Raise
+@objcMembers class Raise: NSObject, Codable {
+    let raise: Int
 
     enum CodingKeys: String, CodingKey {
-        case reinterpretCast = "reinterpret_cast"
+        case raise = "raise"
     }
 
-    init(reinterpretCast: Int) {
-        self.reinterpretCast = reinterpretCast
+    init(raise: Int) {
+        self.raise = raise
     }
 }
 
-// MARK: ReinterpretCast convenience initializers and mutators
+// MARK: Raise convenience initializers and mutators
 
-extension ReinterpretCast {
+extension Raise {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(ReinterpretCast.self, from: data)
-        self.init(reinterpretCast: me.reinterpretCast)
+        let me = try newJSONDecoder().decode(Raise.self, from: data)
+        self.init(raise: me.raise)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13652,10 +13652,10 @@ extension ReinterpretCast {
     }
 
     func with(
-        reinterpretCast: Int? = nil
-    ) -> ReinterpretCast {
-        return ReinterpretCast(
-            reinterpretCast: reinterpretCast ?? self.reinterpretCast
+        raise: Int? = nil
+    ) -> Raise {
+        return Raise(
+            raise: raise ?? self.raise
         )
     }
 
@@ -13668,25 +13668,25 @@ extension ReinterpretCast {
     }
 }
 
-// MARK: - Require
-@objcMembers class Require: NSObject, Codable {
-    let require: Int
+// MARK: - Range
+@objcMembers class Range: NSObject, Codable {
+    let range: Int
 
     enum CodingKeys: String, CodingKey {
-        case require = "require"
+        case range = "range"
     }
 
-    init(require: Int) {
-        self.require = require
+    init(range: Int) {
+        self.range = range
     }
 }
 
-// MARK: Require convenience initializers and mutators
+// MARK: Range convenience initializers and mutators
 
-extension Require {
+extension Range {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Require.self, from: data)
-        self.init(require: me.require)
+        let me = try newJSONDecoder().decode(Range.self, from: data)
+        self.init(range: me.range)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13701,10 +13701,10 @@ extension Require {
     }
 
     func with(
-        require: Int? = nil
-    ) -> Require {
-        return Require(
-            require: require ?? self.require
+        range: Int? = nil
+    ) -> Range {
+        return Range(
+            range: range ?? self.range
         )
     }
 
@@ -13717,25 +13717,25 @@ extension Require {
     }
 }
 
-// MARK: - Requires
-@objcMembers class Requires: NSObject, Codable {
-    let requires: Int
+// MARK: - Readonly
+@objcMembers class Readonly: NSObject, Codable {
+    let readonly: Int
 
     enum CodingKeys: String, CodingKey {
-        case requires = "requires"
+        case readonly = "readonly"
     }
 
-    init(requires: Int) {
-        self.requires = requires
+    init(readonly: Int) {
+        self.readonly = readonly
     }
 }
 
-// MARK: Requires convenience initializers and mutators
+// MARK: Readonly convenience initializers and mutators
 
-extension Requires {
+extension Readonly {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Requires.self, from: data)
-        self.init(requires: me.requires)
+        let me = try newJSONDecoder().decode(Readonly.self, from: data)
+        self.init(readonly: me.readonly)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13750,10 +13750,10 @@ extension Requires {
     }
 
     func with(
-        requires: Int? = nil
-    ) -> Requires {
-        return Requires(
-            requires: requires ?? self.requires
+        readonly: Int? = nil
+    ) -> Readonly {
+        return Readonly(
+            readonly: readonly ?? self.readonly
         )
     }
 
@@ -13766,25 +13766,25 @@ extension Requires {
     }
 }
 
-// MARK: - Restrict
-@objcMembers class Restrict: NSObject, Codable {
-    let restrict: Int
+// MARK: - Ref
+@objcMembers class Ref: NSObject, Codable {
+    let ref: Int
 
     enum CodingKeys: String, CodingKey {
-        case restrict = "restrict"
+        case ref = "ref"
     }
 
-    init(restrict: Int) {
-        self.restrict = restrict
+    init(ref: Int) {
+        self.ref = ref
     }
 }
 
-// MARK: Restrict convenience initializers and mutators
+// MARK: Ref convenience initializers and mutators
 
-extension Restrict {
+extension Ref {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Restrict.self, from: data)
-        self.init(restrict: me.restrict)
+        let me = try newJSONDecoder().decode(Ref.self, from: data)
+        self.init(ref: me.ref)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13799,10 +13799,10 @@ extension Restrict {
     }
 
     func with(
-        restrict: Int? = nil
-    ) -> Restrict {
-        return Restrict(
-            restrict: restrict ?? self.restrict
+        ref: Int? = nil
+    ) -> Ref {
+        return Ref(
+            ref: ref ?? self.ref
         )
     }
 
@@ -13815,25 +13815,25 @@ extension Restrict {
     }
 }
 
-// MARK: - RuntimeType
-@objcMembers class RuntimeType: NSObject, Codable {
-    let runtimeType: Int
+// MARK: - RegExp
+@objcMembers class RegExp: NSObject, Codable {
+    let regExp: UUID
 
     enum CodingKeys: String, CodingKey {
-        case runtimeType = "runtimeType"
+        case regExp = "RegExp"
     }
 
-    init(runtimeType: Int) {
-        self.runtimeType = runtimeType
+    init(regExp: UUID) {
+        self.regExp = regExp
     }
 }
 
-// MARK: RuntimeType convenience initializers and mutators
+// MARK: RegExp convenience initializers and mutators
 
-extension RuntimeType {
+extension RegExp {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(RuntimeType.self, from: data)
-        self.init(runtimeType: me.runtimeType)
+        let me = try newJSONDecoder().decode(RegExp.self, from: data)
+        self.init(regExp: me.regExp)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13848,10 +13848,10 @@ extension RuntimeType {
     }
 
     func with(
-        runtimeType: Int? = nil
-    ) -> RuntimeType {
-        return RuntimeType(
-            runtimeType: runtimeType ?? self.runtimeType
+        regExp: UUID? = nil
+    ) -> RegExp {
+        return RegExp(
+            regExp: regExp ?? self.regExp
         )
     }
 
@@ -13864,25 +13864,25 @@ extension RuntimeType {
     }
 }
 
-// MARK: - S
-@objcMembers class S: NSObject, Codable {
-    let s: Int
+// MARK: - Register
+@objcMembers class Register: NSObject, Codable {
+    let register: Int
 
     enum CodingKeys: String, CodingKey {
-        case s = "s"
+        case register = "register"
     }
 
-    init(s: Int) {
-        self.s = s
+    init(register: Int) {
+        self.register = register
     }
 }
 
-// MARK: S convenience initializers and mutators
+// MARK: Register convenience initializers and mutators
 
-extension S {
+extension Register {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(S.self, from: data)
-        self.init(s: me.s)
+        let me = try newJSONDecoder().decode(Register.self, from: data)
+        self.init(register: me.register)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13897,10 +13897,10 @@ extension S {
     }
 
     func with(
-        s: Int? = nil
-    ) -> S {
-        return S(
-            s: s ?? self.s
+        register: Int? = nil
+    ) -> Register {
+        return Register(
+            register: register ?? self.register
         )
     }
 
@@ -13913,25 +13913,25 @@ extension S {
     }
 }
 
-// MARK: - Sbyte
-@objcMembers class Sbyte: NSObject, Codable {
-    let sbyte: Int
+// MARK: - ReinterpretCast
+@objcMembers class ReinterpretCast: NSObject, Codable {
+    let reinterpretCast: Int
 
     enum CodingKeys: String, CodingKey {
-        case sbyte = "sbyte"
+        case reinterpretCast = "reinterpret_cast"
     }
 
-    init(sbyte: Int) {
-        self.sbyte = sbyte
+    init(reinterpretCast: Int) {
+        self.reinterpretCast = reinterpretCast
     }
 }
 
-// MARK: Sbyte convenience initializers and mutators
+// MARK: ReinterpretCast convenience initializers and mutators
 
-extension Sbyte {
+extension ReinterpretCast {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Sbyte.self, from: data)
-        self.init(sbyte: me.sbyte)
+        let me = try newJSONDecoder().decode(ReinterpretCast.self, from: data)
+        self.init(reinterpretCast: me.reinterpretCast)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13946,10 +13946,10 @@ extension Sbyte {
     }
 
     func with(
-        sbyte: Int? = nil
-    ) -> Sbyte {
-        return Sbyte(
-            sbyte: sbyte ?? self.sbyte
+        reinterpretCast: Int? = nil
+    ) -> ReinterpretCast {
+        return ReinterpretCast(
+            reinterpretCast: reinterpretCast ?? self.reinterpretCast
         )
     }
 
@@ -13962,25 +13962,25 @@ extension Sbyte {
     }
 }
 
-// MARK: - Sealed
-@objcMembers class Sealed: NSObject, Codable {
-    let sealed: Int
+// MARK: - Require
+@objcMembers class Require: NSObject, Codable {
+    let require: Int
 
     enum CodingKeys: String, CodingKey {
-        case sealed = "sealed"
+        case require = "require"
     }
 
-    init(sealed: Int) {
-        self.sealed = sealed
+    init(require: Int) {
+        self.require = require
     }
 }
 
-// MARK: Sealed convenience initializers and mutators
+// MARK: Require convenience initializers and mutators
 
-extension Sealed {
+extension Require {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Sealed.self, from: data)
-        self.init(sealed: me.sealed)
+        let me = try newJSONDecoder().decode(Require.self, from: data)
+        self.init(require: me.require)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13995,10 +13995,10 @@ extension Sealed {
     }
 
     func with(
-        sealed: Int? = nil
-    ) -> Sealed {
-        return Sealed(
-            sealed: sealed ?? self.sealed
+        require: Int? = nil
+    ) -> Require {
+        return Require(
+            require: require ?? self.require
         )
     }
 
@@ -14011,25 +14011,25 @@ extension Sealed {
     }
 }
 
-// MARK: - Sel
-@objcMembers class Sel: NSObject, Codable {
-    let sel: Int
+// MARK: - Requires
+@objcMembers class Requires: NSObject, Codable {
+    let requires: Int
 
     enum CodingKeys: String, CodingKey {
-        case sel = "SEL"
+        case requires = "requires"
     }
 
-    init(sel: Int) {
-        self.sel = sel
+    init(requires: Int) {
+        self.requires = requires
     }
 }
 
-// MARK: Sel convenience initializers and mutators
+// MARK: Requires convenience initializers and mutators
 
-extension Sel {
+extension Requires {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Sel.self, from: data)
-        self.init(sel: me.sel)
+        let me = try newJSONDecoder().decode(Requires.self, from: data)
+        self.init(requires: me.requires)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -14044,10 +14044,10 @@ extension Sel {
     }
 
     func with(
-        sel: Int? = nil
-    ) -> Sel {
-        return Sel(
-            sel: sel ?? self.sel
+        requires: Int? = nil
+    ) -> Requires {
+        return Requires(
+            requires: requires ?? self.requires
         )
     }
 
@@ -14060,25 +14060,25 @@ extension Sel {
     }
 }
 
-// MARK: - Select
-@objcMembers class Select: NSObject, Codable {
-    let select: Int
+// MARK: - Restrict
+@objcMembers class Restrict: NSObject, Codable {
+    let restrict: Int
 
     enum CodingKeys: String, CodingKey {
-        case select = "select"
+        case restrict = "restrict"
     }
 
-    init(select: Int) {
-        self.select = select
+    init(restrict: Int) {
+        self.restrict = restrict
     }
 }
 
-// MARK: Select convenience initializers and mutators
+// MARK: Restrict convenience initializers and mutators
 
-extension Select {
+extension Restrict {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Select.self, from: data)
-        self.init(select: me.select)
+        let me = try newJSONDecoder().decode(Restrict.self, from: data)
+        self.init(restrict: me.restrict)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -14093,10 +14093,10 @@ extension Select {
     }
 
     func with(
-        select: Int? = nil
-    ) -> Select {
-        return Select(
-            select: select ?? self.select
+        restrict: Int? = nil
+    ) -> Restrict {
+        return Restrict(
+            restrict: restrict ?? self.restrict
         )
     }
 
@@ -14112,6 +14112,8 @@ extension Select {
 // MARK: - Obj5
 @objcMembers class Obj5: NSObject, Codable {
     let dummy: Int
+    let obj5Return: Return
+    let obj5Right: Right
     let obj5Self: SelfClass
     let obj5Set: Set
     let obj5Static: Static
@@ -14125,11 +14127,16 @@ extension Select {
     let obj5Try: Try
     let obj5Type: Obj5Type
     let obj5Typealias: Typealias
-    let obj5Unowned: Unowned
-    let obj5Var: Var
     let purpleSelf: Obj5Self
     let purpleTrue: TrueClass
+    let runtimeType: RuntimeType
+    let s: S
+    let sbyte: Sbyte
+    let sealed: Sealed
+    let sel: Sel
+    let select: Select
     let sendable: Sendable
+    let serializationFeature: SerializationFeature
     let serialize: Serialize
     let serializerProvider: SerializerProvider
     let short: Short
@@ -14148,6 +14155,7 @@ extension Select {
     let synchronized: Synchronized
     let system: System
     let template: Template
+    let textNode: TextNode
     let then: Then
     let this: This
     let threadLocal: ThreadLocal
@@ -14168,17 +14176,11 @@ extension Select {
     let unchecked: Unchecked
     let undefined: Undefined
     let union: Union
-    let unsafe: Unsafe
-    let unsigned: Unsigned
-    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 obj5Return = "return"
+        case obj5Right = "right"
         case obj5Self = "Self"
         case obj5Set = "set"
         case obj5Static = "static"
@@ -14192,11 +14194,16 @@ extension Select {
         case obj5Try = "try"
         case obj5Type = "type"
         case obj5Typealias = "typealias"
-        case obj5Unowned = "unowned"
-        case obj5Var = "var"
         case purpleSelf = "self"
         case purpleTrue = "true"
+        case runtimeType = "runtimeType"
+        case s = "s"
+        case sbyte = "sbyte"
+        case sealed = "sealed"
+        case sel = "SEL"
+        case select = "select"
         case sendable = "Sendable"
+        case serializationFeature = "SerializationFeature"
         case serialize = "serialize"
         case serializerProvider = "SerializerProvider"
         case short = "short"
@@ -14215,6 +14222,7 @@ extension Select {
         case synchronized = "synchronized"
         case system = "system"
         case template = "template"
+        case textNode = "TextNode"
         case then = "then"
         case this = "this"
         case threadLocal = "thread_local"
@@ -14235,18 +14243,12 @@ extension Select {
         case unchecked = "unchecked"
         case undefined = "undefined"
         case union = "union"
-        case unsafe = "unsafe"
-        case unsigned = "unsigned"
-        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, obj5Return: Return, obj5Right: Right, 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, purpleSelf: Obj5Self, purpleTrue: TrueClass, runtimeType: RuntimeType, s: S, sbyte: Sbyte, sealed: Sealed, sel: Sel, select: Select, sendable: Sendable, serializationFeature: SerializationFeature, 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, textNode: TextNode, 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) {
         self.dummy = dummy
+        self.obj5Return = obj5Return
+        self.obj5Right = obj5Right
         self.obj5Self = obj5Self
         self.obj5Set = obj5Set
         self.obj5Static = obj5Static
@@ -14260,11 +14262,16 @@ extension Select {
         self.obj5Try = obj5Try
         self.obj5Type = obj5Type
         self.obj5Typealias = obj5Typealias
-        self.obj5Unowned = obj5Unowned
-        self.obj5Var = obj5Var
         self.purpleSelf = purpleSelf
         self.purpleTrue = purpleTrue
+        self.runtimeType = runtimeType
+        self.s = s
+        self.sbyte = sbyte
+        self.sealed = sealed
+        self.sel = sel
+        self.select = select
         self.sendable = sendable
+        self.serializationFeature = serializationFeature
         self.serialize = serialize
         self.serializerProvider = serializerProvider
         self.short = short
@@ -14283,6 +14290,7 @@ extension Select {
         self.synchronized = synchronized
         self.system = system
         self.template = template
+        self.textNode = textNode
         self.then = then
         self.this = this
         self.threadLocal = threadLocal
@@ -14303,14 +14311,6 @@ extension Select {
         self.unchecked = unchecked
         self.undefined = undefined
         self.union = union
-        self.unsafe = unsafe
-        self.unsigned = unsigned
-        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, obj5Return: me.obj5Return, obj5Right: me.obj5Right, 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, purpleSelf: me.purpleSelf, purpleTrue: me.purpleTrue, runtimeType: me.runtimeType, s: me.s, sbyte: me.sbyte, sealed: me.sealed, sel: me.sel, select: me.select, sendable: me.sendable, serializationFeature: me.serializationFeature, 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, textNode: me.textNode, 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)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -14335,6 +14335,8 @@ extension Obj5 {
 
     func with(
         dummy: Int? = nil,
+        obj5Return: Return? = nil,
+        obj5Right: Right? = nil,
         obj5Self: SelfClass? = nil,
         obj5Set: Set? = nil,
         obj5Static: Static? = nil,
@@ -14348,11 +14350,16 @@ extension Obj5 {
         obj5Try: Try? = nil,
         obj5Type: Obj5Type? = nil,
         obj5Typealias: Typealias? = nil,
-        obj5Unowned: Unowned? = nil,
-        obj5Var: Var? = nil,
         purpleSelf: Obj5Self? = nil,
         purpleTrue: TrueClass? = nil,
+        runtimeType: RuntimeType? = nil,
+        s: S? = nil,
+        sbyte: Sbyte? = nil,
+        sealed: Sealed? = nil,
+        sel: Sel? = nil,
+        select: Select? = nil,
         sendable: Sendable? = nil,
+        serializationFeature: SerializationFeature? = nil,
         serialize: Serialize? = nil,
         serializerProvider: SerializerProvider? = nil,
         short: Short? = nil,
@@ -14371,6 +14378,7 @@ extension Obj5 {
         synchronized: Synchronized? = nil,
         system: System? = nil,
         template: Template? = nil,
+        textNode: TextNode? = nil,
         then: Then? = nil,
         this: This? = nil,
         threadLocal: ThreadLocal? = nil,
@@ -14390,18 +14398,12 @@ extension Obj5 {
         ulong: Ulong? = nil,
         unchecked: Unchecked? = nil,
         undefined: Undefined? = nil,
-        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
+        union: Union? = nil
     ) -> Obj5 {
         return Obj5(
             dummy: dummy ?? self.dummy,
+            obj5Return: obj5Return ?? self.obj5Return,
+            obj5Right: obj5Right ?? self.obj5Right,
             obj5Self: obj5Self ?? self.obj5Self,
             obj5Set: obj5Set ?? self.obj5Set,
             obj5Static: obj5Static ?? self.obj5Static,
@@ -14415,11 +14417,16 @@ extension Obj5 {
             obj5Try: obj5Try ?? self.obj5Try,
             obj5Type: obj5Type ?? self.obj5Type,
             obj5Typealias: obj5Typealias ?? self.obj5Typealias,
-            obj5Unowned: obj5Unowned ?? self.obj5Unowned,
-            obj5Var: obj5Var ?? self.obj5Var,
             purpleSelf: purpleSelf ?? self.purpleSelf,
             purpleTrue: purpleTrue ?? self.purpleTrue,
+            runtimeType: runtimeType ?? self.runtimeType,
+            s: s ?? self.s,
+            sbyte: sbyte ?? self.sbyte,
+            sealed: sealed ?? self.sealed,
+            sel: sel ?? self.sel,
+            select: select ?? self.select,
             sendable: sendable ?? self.sendable,
+            serializationFeature: serializationFeature ?? self.serializationFeature,
             serialize: serialize ?? self.serialize,
             serializerProvider: serializerProvider ?? self.serializerProvider,
             short: short ?? self.short,
@@ -14438,6 +14445,7 @@ extension Obj5 {
             synchronized: synchronized ?? self.synchronized,
             system: system ?? self.system,
             template: template ?? self.template,
+            textNode: textNode ?? self.textNode,
             then: then ?? self.then,
             this: this ?? self.this,
             threadLocal: threadLocal ?? self.threadLocal,
@@ -14457,15 +14465,105 @@ extension Obj5 {
             ulong: ulong ?? self.ulong,
             unchecked: unchecked ?? self.unchecked,
             undefined: undefined ?? self.undefined,
-            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
+            union: union ?? self.union
+        )
+    }
+
+    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: - Return
+@objcMembers class Return: NSObject, Codable {
+    let returnReturn: Int
+
+    enum CodingKeys: String, CodingKey {
+        case returnReturn = "return"
+    }
+
+    init(returnReturn: Int) {
+        self.returnReturn = returnReturn
+    }
+}
+
+// MARK: Return convenience initializers and mutators
+
+extension Return {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(Return.self, from: data)
+        self.init(returnReturn: me.returnReturn)
+    }
+
+    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(
+        returnReturn: Int? = nil
+    ) -> Return {
+        return Return(
+            returnReturn: returnReturn ?? self.returnReturn
+        )
+    }
+
+    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: - Right
+@objcMembers class Right: NSObject, Codable {
+    let rightRight: Int
+
+    enum CodingKeys: String, CodingKey {
+        case rightRight = "right"
+    }
+
+    init(rightRight: Int) {
+        self.rightRight = rightRight
+    }
+}
+
+// MARK: Right convenience initializers and mutators
+
+extension Right {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(Right.self, from: data)
+        self.init(rightRight: me.rightRight)
+    }
+
+    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(
+        rightRight: Int? = nil
+    ) -> Right {
+        return Right(
+            rightRight: rightRight ?? self.rightRight
         )
     }
 
@@ -15115,25 +15213,25 @@ extension Typealias {
     }
 }
 
-// MARK: - Unowned
-@objcMembers class Unowned: NSObject, Codable {
-    let unownedUnowned: Int
+// MARK: - Obj5Self
+@objcMembers class Obj5Self: NSObject, Codable {
+    let selfSelf: Int
 
     enum CodingKeys: String, CodingKey {
-        case unownedUnowned = "unowned"
+        case selfSelf = "self"
     }
 
-    init(unownedUnowned: Int) {
-        self.unownedUnowned = unownedUnowned
+    init(selfSelf: Int) {
+        self.selfSelf = selfSelf
     }
 }
 
-// MARK: Unowned convenience initializers and mutators
+// MARK: Obj5Self convenience initializers and mutators
 
-extension Unowned {
+extension Obj5Self {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Unowned.self, from: data)
-        self.init(unownedUnowned: me.unownedUnowned)
+        let me = try newJSONDecoder().decode(Obj5Self.self, from: data)
+        self.init(selfSelf: me.selfSelf)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15148,10 +15246,10 @@ extension Unowned {
     }
 
     func with(
-        unownedUnowned: Int? = nil
-    ) -> Unowned {
-        return Unowned(
-            unownedUnowned: unownedUnowned ?? self.unownedUnowned
+        selfSelf: Int? = nil
+    ) -> Obj5Self {
+        return Obj5Self(
+            selfSelf: selfSelf ?? self.selfSelf
         )
     }
 
@@ -15164,25 +15262,25 @@ extension Unowned {
     }
 }
 
-// MARK: - Var
-@objcMembers class Var: NSObject, Codable {
-    let varVar: Int
+// MARK: - TrueClass
+@objcMembers class TrueClass: NSObject, Codable {
+    let trueTrue: Int
 
     enum CodingKeys: String, CodingKey {
-        case varVar = "var"
+        case trueTrue = "true"
     }
 
-    init(varVar: Int) {
-        self.varVar = varVar
+    init(trueTrue: Int) {
+        self.trueTrue = trueTrue
     }
 }
 
-// MARK: Var convenience initializers and mutators
+// MARK: TrueClass convenience initializers and mutators
 
-extension Var {
+extension TrueClass {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Var.self, from: data)
-        self.init(varVar: me.varVar)
+        let me = try newJSONDecoder().decode(TrueClass.self, from: data)
+        self.init(trueTrue: me.trueTrue)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15197,10 +15295,10 @@ extension Var {
     }
 
     func with(
-        varVar: Int? = nil
-    ) -> Var {
-        return Var(
-            varVar: varVar ?? self.varVar
+        trueTrue: Int? = nil
+    ) -> TrueClass {
+        return TrueClass(
+            trueTrue: trueTrue ?? self.trueTrue
         )
     }
 
@@ -15213,25 +15311,25 @@ extension Var {
     }
 }
 
-// MARK: - Obj5Self
-@objcMembers class Obj5Self: NSObject, Codable {
-    let selfSelf: Int
+// MARK: - RuntimeType
+@objcMembers class RuntimeType: NSObject, Codable {
+    let runtimeType: Int
 
     enum CodingKeys: String, CodingKey {
-        case selfSelf = "self"
+        case runtimeType = "runtimeType"
     }
 
-    init(selfSelf: Int) {
-        self.selfSelf = selfSelf
+    init(runtimeType: Int) {
+        self.runtimeType = runtimeType
     }
 }
 
-// MARK: Obj5Self convenience initializers and mutators
+// MARK: RuntimeType convenience initializers and mutators
 
-extension Obj5Self {
+extension RuntimeType {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Obj5Self.self, from: data)
-        self.init(selfSelf: me.selfSelf)
+        let me = try newJSONDecoder().decode(RuntimeType.self, from: data)
+        self.init(runtimeType: me.runtimeType)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15246,12 +15344,12 @@ extension Obj5Self {
     }
 
     func with(
-        selfSelf: Int? = nil
-    ) -> Obj5Self {
-        return Obj5Self(
-            selfSelf: selfSelf ?? self.selfSelf
-        )
-    }
+        runtimeType: Int? = nil
+    ) -> RuntimeType {
+        return RuntimeType(
+            runtimeType: runtimeType ?? self.runtimeType
+        )
+    }
 
     func jsonData() throws -> Data {
         return try newJSONEncoder().encode(self)
@@ -15262,25 +15360,25 @@ extension Obj5Self {
     }
 }
 
-// MARK: - TrueClass
-@objcMembers class TrueClass: NSObject, Codable {
-    let trueTrue: Int
+// MARK: - S
+@objcMembers class S: NSObject, Codable {
+    let s: Int
 
     enum CodingKeys: String, CodingKey {
-        case trueTrue = "true"
+        case s = "s"
     }
 
-    init(trueTrue: Int) {
-        self.trueTrue = trueTrue
+    init(s: Int) {
+        self.s = s
     }
 }
 
-// MARK: TrueClass convenience initializers and mutators
+// MARK: S convenience initializers and mutators
 
-extension TrueClass {
+extension S {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(TrueClass.self, from: data)
-        self.init(trueTrue: me.trueTrue)
+        let me = try newJSONDecoder().decode(S.self, from: data)
+        self.init(s: me.s)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15295,10 +15393,10 @@ extension TrueClass {
     }
 
     func with(
-        trueTrue: Int? = nil
-    ) -> TrueClass {
-        return TrueClass(
-            trueTrue: trueTrue ?? self.trueTrue
+        s: Int? = nil
+    ) -> S {
+        return S(
+            s: s ?? self.s
         )
     }
 
@@ -15311,25 +15409,25 @@ extension TrueClass {
     }
 }
 
-// MARK: - Sendable
-@objcMembers class Sendable: NSObject, Codable {
-    let sendable: Int
+// MARK: - Sbyte
+@objcMembers class Sbyte: NSObject, Codable {
+    let sbyte: Int
 
     enum CodingKeys: String, CodingKey {
-        case sendable = "Sendable"
+        case sbyte = "sbyte"
     }
 
-    init(sendable: Int) {
-        self.sendable = sendable
+    init(sbyte: Int) {
+        self.sbyte = sbyte
     }
 }
 
-// MARK: Sendable convenience initializers and mutators
+// MARK: Sbyte convenience initializers and mutators
 
-extension Sendable {
+extension Sbyte {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Sendable.self, from: data)
-        self.init(sendable: me.sendable)
+        let me = try newJSONDecoder().decode(Sbyte.self, from: data)
+        self.init(sbyte: me.sbyte)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15344,10 +15442,10 @@ extension Sendable {
     }
 
     func with(
-        sendable: Int? = nil
-    ) -> Sendable {
-        return Sendable(
-            sendable: sendable ?? self.sendable
+        sbyte: Int? = nil
+    ) -> Sbyte {
+        return Sbyte(
+            sbyte: sbyte ?? self.sbyte
         )
     }
 
@@ -15360,25 +15458,25 @@ extension Sendable {
     }
 }
 
-// MARK: - Serialize
-@objcMembers class Serialize: NSObject, Codable {
-    let serialize: Int
+// MARK: - Sealed
+@objcMembers class Sealed: NSObject, Codable {
+    let sealed: Int
 
     enum CodingKeys: String, CodingKey {
-        case serialize = "serialize"
+        case sealed = "sealed"
     }
 
-    init(serialize: Int) {
-        self.serialize = serialize
+    init(sealed: Int) {
+        self.sealed = sealed
     }
 }
 
-// MARK: Serialize convenience initializers and mutators
+// MARK: Sealed convenience initializers and mutators
 
-extension Serialize {
+extension Sealed {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Serialize.self, from: data)
-        self.init(serialize: me.serialize)
+        let me = try newJSONDecoder().decode(Sealed.self, from: data)
+        self.init(sealed: me.sealed)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15393,10 +15491,10 @@ extension Serialize {
     }
 
     func with(
-        serialize: Int? = nil
-    ) -> Serialize {
-        return Serialize(
-            serialize: serialize ?? self.serialize
+        sealed: Int? = nil
+    ) -> Sealed {
+        return Sealed(
+            sealed: sealed ?? self.sealed
         )
     }
 
@@ -15409,25 +15507,25 @@ extension Serialize {
     }
 }
 
-// MARK: - SerializerProvider
-@objcMembers class SerializerProvider: NSObject, Codable {
-    let serializerProvider: Int
+// MARK: - Sel
+@objcMembers class Sel: NSObject, Codable {
+    let sel: Int
 
     enum CodingKeys: String, CodingKey {
-        case serializerProvider = "SerializerProvider"
+        case sel = "SEL"
     }
 
-    init(serializerProvider: Int) {
-        self.serializerProvider = serializerProvider
+    init(sel: Int) {
+        self.sel = sel
     }
 }
 
-// MARK: SerializerProvider convenience initializers and mutators
+// MARK: Sel convenience initializers and mutators
 
-extension SerializerProvider {
+extension Sel {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(SerializerProvider.self, from: data)
-        self.init(serializerProvider: me.serializerProvider)
+        let me = try newJSONDecoder().decode(Sel.self, from: data)
+        self.init(sel: me.sel)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15442,10 +15540,10 @@ extension SerializerProvider {
     }
 
     func with(
-        serializerProvider: Int? = nil
-    ) -> SerializerProvider {
-        return SerializerProvider(
-            serializerProvider: serializerProvider ?? self.serializerProvider
+        sel: Int? = nil
+    ) -> Sel {
+        return Sel(
+            sel: sel ?? self.sel
         )
     }
 
@@ -15458,25 +15556,25 @@ extension SerializerProvider {
     }
 }
 
-// MARK: - Short
-@objcMembers class Short: NSObject, Codable {
-    let short: Int
+// MARK: - Select
+@objcMembers class Select: NSObject, Codable {
+    let select: Int
 
     enum CodingKeys: String, CodingKey {
-        case short = "short"
+        case select = "select"
     }
 
-    init(short: Int) {
-        self.short = short
+    init(select: Int) {
+        self.select = select
     }
 }
 
-// MARK: Short convenience initializers and mutators
+// MARK: Select convenience initializers and mutators
 
-extension Short {
+extension Select {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Short.self, from: data)
-        self.init(short: me.short)
+        let me = try newJSONDecoder().decode(Select.self, from: data)
+        self.init(select: me.select)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15491,10 +15589,10 @@ extension Short {
     }
 
     func with(
-        short: Int? = nil
-    ) -> Short {
-        return Short(
-            short: short ?? self.short
+        select: Int? = nil
+    ) -> Select {
+        return Select(
+            select: select ?? self.select
         )
     }
 
@@ -15507,25 +15605,25 @@ extension Short {
     }
 }
 
-// MARK: - Signed
-@objcMembers class Signed: NSObject, Codable {
-    let signed: Int
+// MARK: - Sendable
+@objcMembers class Sendable: NSObject, Codable {
+    let sendable: Int
 
     enum CodingKeys: String, CodingKey {
-        case signed = "signed"
+        case sendable = "Sendable"
     }
 
-    init(signed: Int) {
-        self.signed = signed
+    init(sendable: Int) {
+        self.sendable = sendable
     }
 }
 
-// MARK: Signed convenience initializers and mutators
+// MARK: Sendable convenience initializers and mutators
 
-extension Signed {
+extension Sendable {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Signed.self, from: data)
-        self.init(signed: me.signed)
+        let me = try newJSONDecoder().decode(Sendable.self, from: data)
+        self.init(sendable: me.sendable)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15540,10 +15638,10 @@ extension Signed {
     }
 
     func with(
-        signed: Int? = nil
-    ) -> Signed {
-        return Signed(
-            signed: signed ?? self.signed
+        sendable: Int? = nil
+    ) -> Sendable {
+        return Sendable(
+            sendable: sendable ?? self.sendable
         )
     }
 
@@ -15556,25 +15654,25 @@ extension Signed {
     }
 }
 
-// MARK: - SimpleModule
-@objcMembers class SimpleModule: NSObject, Codable {
-    let simpleModule: Int
+// MARK: - SerializationFeature
+@objcMembers class SerializationFeature: NSObject, Codable {
+    let serializationFeature: Int
 
     enum CodingKeys: String, CodingKey {
-        case simpleModule = "SimpleModule"
+        case serializationFeature = "SerializationFeature"
     }
 
-    init(simpleModule: Int) {
-        self.simpleModule = simpleModule
+    init(serializationFeature: Int) {
+        self.serializationFeature = serializationFeature
     }
 }
 
-// MARK: SimpleModule convenience initializers and mutators
+// MARK: SerializationFeature convenience initializers and mutators
 
-extension SimpleModule {
+extension SerializationFeature {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(SimpleModule.self, from: data)
-        self.init(simpleModule: me.simpleModule)
+        let me = try newJSONDecoder().decode(SerializationFeature.self, from: data)
+        self.init(serializationFeature: me.serializationFeature)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15589,10 +15687,10 @@ extension SimpleModule {
     }
 
     func with(
-        simpleModule: Int? = nil
-    ) -> SimpleModule {
-        return SimpleModule(
-            simpleModule: simpleModule ?? self.simpleModule
+        serializationFeature: Int? = nil
+    ) -> SerializationFeature {
+        return SerializationFeature(
+            serializationFeature: serializationFeature ?? self.serializationFeature
         )
     }
 
@@ -15605,25 +15703,25 @@ extension SimpleModule {
     }
 }
 
-// MARK: - Sizeof
-@objcMembers class Sizeof: NSObject, Codable {
-    let sizeof: Int
+// MARK: - Serialize
+@objcMembers class Serialize: NSObject, Codable {
+    let serialize: Int
 
     enum CodingKeys: String, CodingKey {
-        case sizeof = "sizeof"
+        case serialize = "serialize"
     }
 
-    init(sizeof: Int) {
-        self.sizeof = sizeof
+    init(serialize: Int) {
+        self.serialize = serialize
     }
 }
 
-// MARK: Sizeof convenience initializers and mutators
+// MARK: Serialize convenience initializers and mutators
 
-extension Sizeof {
+extension Serialize {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Sizeof.self, from: data)
-        self.init(sizeof: me.sizeof)
+        let me = try newJSONDecoder().decode(Serialize.self, from: data)
+        self.init(serialize: me.serialize)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15638,10 +15736,10 @@ extension Sizeof {
     }
 
     func with(
-        sizeof: Int? = nil
-    ) -> Sizeof {
-        return Sizeof(
-            sizeof: sizeof ?? self.sizeof
+        serialize: Int? = nil
+    ) -> Serialize {
+        return Serialize(
+            serialize: serialize ?? self.serialize
         )
     }
 
@@ -15654,25 +15752,25 @@ extension Sizeof {
     }
 }
 
-// MARK: - Stackalloc
-@objcMembers class Stackalloc: NSObject, Codable {
-    let stackalloc: Int
+// MARK: - SerializerProvider
+@objcMembers class SerializerProvider: NSObject, Codable {
+    let serializerProvider: Int
 
     enum CodingKeys: String, CodingKey {
-        case stackalloc = "stackalloc"
+        case serializerProvider = "SerializerProvider"
     }
 
-    init(stackalloc: Int) {
-        self.stackalloc = stackalloc
+    init(serializerProvider: Int) {
+        self.serializerProvider = serializerProvider
     }
 }
 
-// MARK: Stackalloc convenience initializers and mutators
+// MARK: SerializerProvider convenience initializers and mutators
 
-extension Stackalloc {
+extension SerializerProvider {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Stackalloc.self, from: data)
-        self.init(stackalloc: me.stackalloc)
+        let me = try newJSONDecoder().decode(SerializerProvider.self, from: data)
+        self.init(serializerProvider: me.serializerProvider)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15687,10 +15785,10 @@ extension Stackalloc {
     }
 
     func with(
-        stackalloc: Int? = nil
-    ) -> Stackalloc {
-        return Stackalloc(
-            stackalloc: stackalloc ?? self.stackalloc
+        serializerProvider: Int? = nil
+    ) -> SerializerProvider {
+        return SerializerProvider(
+            serializerProvider: serializerProvider ?? self.serializerProvider
         )
     }
 
@@ -15703,16 +15801,261 @@ extension Stackalloc {
     }
 }
 
-// MARK: - Standards
-@objcMembers class Standards: NSObject, Codable {
-    let standards: Int
+// MARK: - Short
+@objcMembers class Short: NSObject, Codable {
+    let short: Int
 
     enum CodingKeys: String, CodingKey {
-        case standards = "Standards"
+        case short = "short"
     }
 
-    init(standards: Int) {
-        self.standards = standards
+    init(short: Int) {
+        self.short = short
+    }
+}
+
+// MARK: Short convenience initializers and mutators
+
+extension Short {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(Short.self, from: data)
+        self.init(short: me.short)
+    }
+
+    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(
+        short: Int? = nil
+    ) -> Short {
+        return Short(
+            short: short ?? self.short
+        )
+    }
+
+    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: - Signed
+@objcMembers class Signed: NSObject, Codable {
+    let signed: Int
+
+    enum CodingKeys: String, CodingKey {
+        case signed = "signed"
+    }
+
+    init(signed: Int) {
+        self.signed = signed
+    }
+}
+
+// MARK: Signed convenience initializers and mutators
+
+extension Signed {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(Signed.self, from: data)
+        self.init(signed: me.signed)
+    }
+
+    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(
+        signed: Int? = nil
+    ) -> Signed {
+        return Signed(
+            signed: signed ?? self.signed
+        )
+    }
+
+    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: - SimpleModule
+@objcMembers class SimpleModule: NSObject, Codable {
+    let simpleModule: Int
+
+    enum CodingKeys: String, CodingKey {
+        case simpleModule = "SimpleModule"
+    }
+
+    init(simpleModule: Int) {
+        self.simpleModule = simpleModule
+    }
+}
+
+// MARK: SimpleModule convenience initializers and mutators
+
+extension SimpleModule {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(SimpleModule.self, from: data)
+        self.init(simpleModule: me.simpleModule)
+    }
+
+    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(
+        simpleModule: Int? = nil
+    ) -> SimpleModule {
+        return SimpleModule(
+            simpleModule: simpleModule ?? self.simpleModule
+        )
+    }
+
+    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: - Sizeof
+@objcMembers class Sizeof: NSObject, Codable {
+    let sizeof: Int
+
+    enum CodingKeys: String, CodingKey {
+        case sizeof = "sizeof"
+    }
+
+    init(sizeof: Int) {
+        self.sizeof = sizeof
+    }
+}
+
+// MARK: Sizeof convenience initializers and mutators
+
+extension Sizeof {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(Sizeof.self, from: data)
+        self.init(sizeof: me.sizeof)
+    }
+
+    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(
+        sizeof: Int? = nil
+    ) -> Sizeof {
+        return Sizeof(
+            sizeof: sizeof ?? self.sizeof
+        )
+    }
+
+    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: - Stackalloc
+@objcMembers class Stackalloc: NSObject, Codable {
+    let stackalloc: Int
+
+    enum CodingKeys: String, CodingKey {
+        case stackalloc = "stackalloc"
+    }
+
+    init(stackalloc: Int) {
+        self.stackalloc = stackalloc
+    }
+}
+
+// MARK: Stackalloc convenience initializers and mutators
+
+extension Stackalloc {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(Stackalloc.self, from: data)
+        self.init(stackalloc: me.stackalloc)
+    }
+
+    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(
+        stackalloc: Int? = nil
+    ) -> Stackalloc {
+        return Stackalloc(
+            stackalloc: stackalloc ?? self.stackalloc
+        )
+    }
+
+    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: - Standards
+@objcMembers class Standards: NSObject, Codable {
+    let standards: Int
+
+    enum CodingKeys: String, CodingKey {
+        case standards = "Standards"
+    }
+
+    init(standards: Int) {
+        self.standards = standards
     }
 }
 
@@ -16242,25 +16585,25 @@ extension Template {
     }
 }
 
-// MARK: - Then
-@objcMembers class Then: NSObject, Codable {
-    let then: Int
+// MARK: - TextNode
+@objcMembers class TextNode: NSObject, Codable {
+    let textNode: Int
 
     enum CodingKeys: String, CodingKey {
-        case then = "then"
+        case textNode = "TextNode"
     }
 
-    init(then: Int) {
-        self.then = then
+    init(textNode: Int) {
+        self.textNode = textNode
     }
 }
 
-// MARK: Then convenience initializers and mutators
+// MARK: TextNode convenience initializers and mutators
 
-extension Then {
+extension TextNode {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Then.self, from: data)
-        self.init(then: me.then)
+        let me = try newJSONDecoder().decode(TextNode.self, from: data)
+        self.init(textNode: me.textNode)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -16275,7 +16618,56 @@ extension Then {
     }
 
     func with(
-        then: Int? = nil
+        textNode: Int? = nil
+    ) -> TextNode {
+        return TextNode(
+            textNode: textNode ?? self.textNode
+        )
+    }
+
+    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: - Then
+@objcMembers class Then: NSObject, Codable {
+    let then: Int
+
+    enum CodingKeys: String, CodingKey {
+        case then = "then"
+    }
+
+    init(then: Int) {
+        self.then = then
+    }
+}
+
+// MARK: Then convenience initializers and mutators
+
+extension Then {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(Then.self, from: data)
+        self.init(then: me.then)
+    }
+
+    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(
+        then: Int? = nil
     ) -> Then {
         return Then(
             then: then ?? self.then
@@ -17222,25 +17614,91 @@ extension Union {
     }
 }
 
-// MARK: - Unsafe
-@objcMembers class Unsafe: NSObject, Codable {
-    let unsafe: Int
+// MARK: - Obj6
+@objcMembers class Obj6: NSObject, Codable {
+    let dummy: Int
+    let obj6Unowned: Unowned
+    let obj6Var: Var
+    let obj6Weak: Weak
+    let obj6Where: Where
+    let obj6While: While
+    let obj6WillSet: WillSet
+    let unsafe: Unsafe
+    let unsigned: Unsigned
+    let ushort: Ushort
+    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 obj6Unowned = "unowned"
+        case obj6Var = "var"
+        case obj6Weak = "weak"
+        case obj6Where = "where"
+        case obj6While = "while"
+        case obj6WillSet = "willSet"
         case unsafe = "unsafe"
+        case unsigned = "unsigned"
+        case ushort = "ushort"
+        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"
     }
 
-    init(unsafe: Int) {
+    init(dummy: Int, obj6Unowned: Unowned, obj6Var: Var, obj6Weak: Weak, obj6Where: Where, obj6While: While, obj6WillSet: WillSet, unsafe: Unsafe, unsigned: Unsigned, ushort: Ushort, 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.obj6Unowned = obj6Unowned
+        self.obj6Var = obj6Var
+        self.obj6Weak = obj6Weak
+        self.obj6Where = obj6Where
+        self.obj6While = obj6While
+        self.obj6WillSet = obj6WillSet
         self.unsafe = unsafe
+        self.unsigned = unsigned
+        self.ushort = ushort
+        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
     }
 }
 
-// MARK: Unsafe convenience initializers and mutators
+// MARK: Obj6 convenience initializers and mutators
 
-extension Unsafe {
+extension Obj6 {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Unsafe.self, from: data)
-        self.init(unsafe: me.unsafe)
+        let me = try newJSONDecoder().decode(Obj6.self, from: data)
+        self.init(dummy: me.dummy, obj6Unowned: me.obj6Unowned, obj6Var: me.obj6Var, obj6Weak: me.obj6Weak, obj6Where: me.obj6Where, obj6While: me.obj6While, obj6WillSet: me.obj6WillSet, unsafe: me.unsafe, unsigned: me.unsigned, ushort: me.ushort, 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 {
@@ -17255,10 +17713,54 @@ extension Unsafe {
     }
 
     func with(
-        unsafe: Int? = nil
-    ) -> Unsafe {
-        return Unsafe(
-            unsafe: unsafe ?? self.unsafe
+        dummy: Int? = nil,
+        obj6Unowned: Unowned? = nil,
+        obj6Var: Var? = nil,
+        obj6Weak: Weak? = nil,
+        obj6Where: Where? = nil,
+        obj6While: While? = nil,
+        obj6WillSet: WillSet? = 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,
+        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,
+            obj6Unowned: obj6Unowned ?? self.obj6Unowned,
+            obj6Var: obj6Var ?? self.obj6Var,
+            obj6Weak: obj6Weak ?? self.obj6Weak,
+            obj6Where: obj6Where ?? self.obj6Where,
+            obj6While: obj6While ?? self.obj6While,
+            obj6WillSet: obj6WillSet ?? self.obj6WillSet,
+            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,
+            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
         )
     }
 
@@ -17271,25 +17773,25 @@ extension Unsafe {
     }
 }
 
-// MARK: - Unsigned
-@objcMembers class Unsigned: NSObject, Codable {
-    let unsigned: Int
+// MARK: - Unowned
+@objcMembers class Unowned: NSObject, Codable {
+    let unownedUnowned: Int
 
     enum CodingKeys: String, CodingKey {
-        case unsigned = "unsigned"
+        case unownedUnowned = "unowned"
     }
 
-    init(unsigned: Int) {
-        self.unsigned = unsigned
+    init(unownedUnowned: Int) {
+        self.unownedUnowned = unownedUnowned
     }
 }
 
-// MARK: Unsigned convenience initializers and mutators
+// MARK: Unowned convenience initializers and mutators
 
-extension Unsigned {
+extension Unowned {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Unsigned.self, from: data)
-        self.init(unsigned: me.unsigned)
+        let me = try newJSONDecoder().decode(Unowned.self, from: data)
+        self.init(unownedUnowned: me.unownedUnowned)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17304,10 +17806,10 @@ extension Unsigned {
     }
 
     func with(
-        unsigned: Int? = nil
-    ) -> Unsigned {
-        return Unsigned(
-            unsigned: unsigned ?? self.unsigned
+        unownedUnowned: Int? = nil
+    ) -> Unowned {
+        return Unowned(
+            unownedUnowned: unownedUnowned ?? self.unownedUnowned
         )
     }
 
@@ -17320,25 +17822,25 @@ extension Unsigned {
     }
 }
 
-// MARK: - Ushort
-@objcMembers class Ushort: NSObject, Codable {
-    let ushort: Int
+// MARK: - Var
+@objcMembers class Var: NSObject, Codable {
+    let varVar: Int
 
     enum CodingKeys: String, CodingKey {
-        case ushort = "ushort"
+        case varVar = "var"
     }
 
-    init(ushort: Int) {
-        self.ushort = ushort
+    init(varVar: Int) {
+        self.varVar = varVar
     }
 }
 
-// MARK: Ushort convenience initializers and mutators
+// MARK: Var convenience initializers and mutators
 
-extension Ushort {
+extension Var {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Ushort.self, from: data)
-        self.init(ushort: me.ushort)
+        let me = try newJSONDecoder().decode(Var.self, from: data)
+        self.init(varVar: me.varVar)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17353,10 +17855,10 @@ extension Ushort {
     }
 
     func with(
-        ushort: Int? = nil
-    ) -> Ushort {
-        return Ushort(
-            ushort: ushort ?? self.ushort
+        varVar: Int? = nil
+    ) -> Var {
+        return Var(
+            varVar: varVar ?? self.varVar
         )
     }
 
@@ -17369,25 +17871,25 @@ extension Ushort {
     }
 }
 
-// MARK: - Using
-@objcMembers class Using: NSObject, Codable {
-    let using: Int
+// MARK: - Weak
+@objcMembers class Weak: NSObject, Codable {
+    let weakWeak: Int
 
     enum CodingKeys: String, CodingKey {
-        case using = "using"
+        case weakWeak = "weak"
     }
 
-    init(using: Int) {
-        self.using = using
+    init(weakWeak: Int) {
+        self.weakWeak = weakWeak
     }
 }
 
-// MARK: Using convenience initializers and mutators
+// MARK: Weak convenience initializers and mutators
 
-extension Using {
+extension Weak {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Using.self, from: data)
-        self.init(using: me.using)
+        let me = try newJSONDecoder().decode(Weak.self, from: data)
+        self.init(weakWeak: me.weakWeak)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17402,10 +17904,10 @@ extension Using {
     }
 
     func with(
-        using: Int? = nil
-    ) -> Using {
-        return Using(
-            using: using ?? self.using
+        weakWeak: Int? = nil
+    ) -> Weak {
+        return Weak(
+            weakWeak: weakWeak ?? self.weakWeak
         )
     }
 
@@ -17418,25 +17920,25 @@ extension Using {
     }
 }
 
-// MARK: - Utf8JSONReader
-@objcMembers class Utf8JSONReader: NSObject, Codable {
-    let utf8JSONReader: Int
+// MARK: - Where
+@objcMembers class Where: NSObject, Codable {
+    let whereWhere: Int
 
     enum CodingKeys: String, CodingKey {
-        case utf8JSONReader = "Utf8JsonReader"
+        case whereWhere = "where"
     }
 
-    init(utf8JSONReader: Int) {
-        self.utf8JSONReader = utf8JSONReader
+    init(whereWhere: Int) {
+        self.whereWhere = whereWhere
     }
 }
 
-// MARK: Utf8JSONReader convenience initializers and mutators
+// MARK: Where convenience initializers and mutators
 
-extension Utf8JSONReader {
+extension Where {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Utf8JSONReader.self, from: data)
-        self.init(utf8JSONReader: me.utf8JSONReader)
+        let me = try newJSONDecoder().decode(Where.self, from: data)
+        self.init(whereWhere: me.whereWhere)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17451,10 +17953,10 @@ extension Utf8JSONReader {
     }
 
     func with(
-        utf8JSONReader: Int? = nil
-    ) -> Utf8JSONReader {
-        return Utf8JSONReader(
-            utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader
+        whereWhere: Int? = nil
+    ) -> Where {
+        return Where(
+            whereWhere: whereWhere ?? self.whereWhere
         )
     }
 
@@ -17467,25 +17969,25 @@ extension Utf8JSONReader {
     }
 }
 
-// MARK: - Utf8JSONWriter
-@objcMembers class Utf8JSONWriter: NSObject, Codable {
-    let utf8JSONWriter: Int
+// MARK: - While
+@objcMembers class While: NSObject, Codable {
+    let whileWhile: Int
 
     enum CodingKeys: String, CodingKey {
-        case utf8JSONWriter = "Utf8JsonWriter"
+        case whileWhile = "while"
     }
 
-    init(utf8JSONWriter: Int) {
-        self.utf8JSONWriter = utf8JSONWriter
+    init(whileWhile: Int) {
+        self.whileWhile = whileWhile
     }
 }
 
-// MARK: Utf8JSONWriter convenience initializers and mutators
+// MARK: While convenience initializers and mutators
 
-extension Utf8JSONWriter {
+extension While {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Utf8JSONWriter.self, from: data)
-        self.init(utf8JSONWriter: me.utf8JSONWriter)
+        let me = try newJSONDecoder().decode(While.self, from: data)
+        self.init(whileWhile: me.whileWhile)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17500,10 +18002,10 @@ extension Utf8JSONWriter {
     }
 
     func with(
-        utf8JSONWriter: Int? = nil
-    ) -> Utf8JSONWriter {
-        return Utf8JSONWriter(
-            utf8JSONWriter: utf8JSONWriter ?? self.utf8JSONWriter
+        whileWhile: Int? = nil
+    ) -> While {
+        return While(
+            whileWhile: whileWhile ?? self.whileWhile
         )
     }
 
@@ -17516,25 +18018,25 @@ extension Utf8JSONWriter {
     }
 }
 
-// MARK: - UUIDClass
-@objcMembers class UUIDClass: NSObject, Codable {
-    let uuid: Int
+// MARK: - WillSet
+@objcMembers class WillSet: NSObject, Codable {
+    let willSetWillSet: Int
 
     enum CodingKeys: String, CodingKey {
-        case uuid = "UUID"
+        case willSetWillSet = "willSet"
     }
 
-    init(uuid: Int) {
-        self.uuid = uuid
+    init(willSetWillSet: Int) {
+        self.willSetWillSet = willSetWillSet
     }
 }
 
-// MARK: UUIDClass convenience initializers and mutators
+// MARK: WillSet convenience initializers and mutators
 
-extension UUIDClass {
+extension WillSet {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(UUIDClass.self, from: data)
-        self.init(uuid: me.uuid)
+        let me = try newJSONDecoder().decode(WillSet.self, from: data)
+        self.init(willSetWillSet: me.willSetWillSet)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17549,10 +18051,10 @@ extension UUIDClass {
     }
 
     func with(
-        uuid: Int? = nil
-    ) -> UUIDClass {
-        return UUIDClass(
-            uuid: uuid ?? self.uuid
+        willSetWillSet: Int? = nil
+    ) -> WillSet {
+        return WillSet(
+            willSetWillSet: willSetWillSet ?? self.willSetWillSet
         )
     }
 
@@ -17565,25 +18067,25 @@ extension UUIDClass {
     }
 }
 
-// MARK: - Virtual
-@objcMembers class Virtual: NSObject, Codable {
-    let virtual: Int
+// MARK: - Unsafe
+@objcMembers class Unsafe: NSObject, Codable {
+    let unsafe: Int
 
     enum CodingKeys: String, CodingKey {
-        case virtual = "virtual"
+        case unsafe = "unsafe"
     }
 
-    init(virtual: Int) {
-        self.virtual = virtual
+    init(unsafe: Int) {
+        self.unsafe = unsafe
     }
 }
 
-// MARK: Virtual convenience initializers and mutators
+// MARK: Unsafe convenience initializers and mutators
 
-extension Virtual {
+extension Unsafe {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Virtual.self, from: data)
-        self.init(virtual: me.virtual)
+        let me = try newJSONDecoder().decode(Unsafe.self, from: data)
+        self.init(unsafe: me.unsafe)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17598,10 +18100,10 @@ extension Virtual {
     }
 
     func with(
-        virtual: Int? = nil
-    ) -> Virtual {
-        return Virtual(
-            virtual: virtual ?? self.virtual
+        unsafe: Int? = nil
+    ) -> Unsafe {
+        return Unsafe(
+            unsafe: unsafe ?? self.unsafe
         )
     }
 
@@ -17614,61 +18116,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: - Unsigned
+@objcMembers class Unsigned: NSObject, Codable {
+    let unsigned: 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 unsigned = "unsigned"
     }
 
-    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(unsigned: Int) {
+        self.unsigned = unsigned
     }
 }
 
-// MARK: Obj6 convenience initializers and mutators
+// MARK: Unsigned convenience initializers and mutators
 
-extension Obj6 {
+extension Unsigned {
     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(Unsigned.self, from: data)
+        self.init(unsigned: me.unsigned)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17683,34 +18149,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
+        unsigned: Int? = nil
+    ) -> Unsigned {
+        return Unsigned(
+            unsigned: unsigned ?? self.unsigned
         )
     }
 
@@ -17723,25 +18165,25 @@ extension Obj6 {
     }
 }
 
-// MARK: - Weak
-@objcMembers class Weak: NSObject, Codable {
-    let weakWeak: Int
+// MARK: - Ushort
+@objcMembers class Ushort: NSObject, Codable {
+    let ushort: Int
 
     enum CodingKeys: String, CodingKey {
-        case weakWeak = "weak"
+        case ushort = "ushort"
     }
 
-    init(weakWeak: Int) {
-        self.weakWeak = weakWeak
+    init(ushort: Int) {
+        self.ushort = ushort
     }
 }
 
-// MARK: Weak convenience initializers and mutators
+// MARK: Ushort convenience initializers and mutators
 
-extension Weak {
+extension Ushort {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Weak.self, from: data)
-        self.init(weakWeak: me.weakWeak)
+        let me = try newJSONDecoder().decode(Ushort.self, from: data)
+        self.init(ushort: me.ushort)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17756,10 +18198,10 @@ extension Weak {
     }
 
     func with(
-        weakWeak: Int? = nil
-    ) -> Weak {
-        return Weak(
-            weakWeak: weakWeak ?? self.weakWeak
+        ushort: Int? = nil
+    ) -> Ushort {
+        return Ushort(
+            ushort: ushort ?? self.ushort
         )
     }
 
@@ -17772,25 +18214,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 +18247,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 +18263,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 +18296,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 +18312,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 +18345,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..24858a9 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
@@ -94,6 +94,7 @@ struct Obj1: Codable, Equatable {
     let andEq: AndEq
     let any: AnyClass
     let array: Array
+    let arrayNode: ArrayNode
     let asm: ASM
     let assert: Assert
     let async: Async
@@ -107,6 +108,7 @@ struct Obj1: Codable, Equatable {
     let bitor: Bitor
     let bool: BOOLClass
     let boolean: Boolean
+    let booleanNode: BooleanNode
     let bycopy: Bycopy
     let byref: Byref
     let byte: Byte
@@ -133,8 +135,6 @@ struct Obj1: Codable, Equatable {
     let constructor: Constructor
     let convert: Convert
     let converter: Converter
-    let cultureInfo: CultureInfo
-    let date: DateClass
     let dummy: Int
     let empty: Empty
     let imaginery: Imaginery
@@ -161,6 +161,7 @@ struct Obj1: Codable, Equatable {
         case andEq = "and_eq"
         case any = "Any"
         case array = "array"
+        case arrayNode = "ArrayNode"
         case asm = "asm"
         case assert = "assert"
         case async = "async"
@@ -174,6 +175,7 @@ struct Obj1: Codable, Equatable {
         case bitor = "bitor"
         case bool = "BOOL"
         case boolean = "boolean"
+        case booleanNode = "BooleanNode"
         case bycopy = "bycopy"
         case byref = "byref"
         case byte = "byte"
@@ -200,8 +202,6 @@ struct Obj1: Codable, Equatable {
         case constructor = "constructor"
         case convert = "convert"
         case converter = "converter"
-        case cultureInfo = "CultureInfo"
-        case date = "date"
         case dummy = "dummy"
         case empty = "_"
         case imaginery = "_Imaginery"
@@ -248,6 +248,7 @@ extension Obj1 {
         andEq: AndEq? = nil,
         any: AnyClass? = nil,
         array: Array? = nil,
+        arrayNode: ArrayNode? = nil,
         asm: ASM? = nil,
         assert: Assert? = nil,
         async: Async? = nil,
@@ -261,6 +262,7 @@ extension Obj1 {
         bitor: Bitor? = nil,
         bool: BOOLClass? = nil,
         boolean: Boolean? = nil,
+        booleanNode: BooleanNode? = nil,
         bycopy: Bycopy? = nil,
         byref: Byref? = nil,
         byte: Byte? = nil,
@@ -287,8 +289,6 @@ extension Obj1 {
         constructor: Constructor? = nil,
         convert: Convert? = nil,
         converter: Converter? = nil,
-        cultureInfo: CultureInfo? = nil,
-        date: DateClass? = nil,
         dummy: Int? = nil,
         empty: Empty? = nil,
         imaginery: Imaginery? = nil,
@@ -315,6 +315,7 @@ extension Obj1 {
             andEq: andEq ?? self.andEq,
             any: any ?? self.any,
             array: array ?? self.array,
+            arrayNode: arrayNode ?? self.arrayNode,
             asm: asm ?? self.asm,
             assert: assert ?? self.assert,
             async: async ?? self.async,
@@ -328,6 +329,7 @@ extension Obj1 {
             bitor: bitor ?? self.bitor,
             bool: bool ?? self.bool,
             boolean: boolean ?? self.boolean,
+            booleanNode: booleanNode ?? self.booleanNode,
             bycopy: bycopy ?? self.bycopy,
             byref: byref ?? self.byref,
             byte: byte ?? self.byte,
@@ -354,8 +356,6 @@ extension Obj1 {
             constructor: constructor ?? self.constructor,
             convert: convert ?? self.convert,
             converter: converter ?? self.converter,
-            cultureInfo: cultureInfo ?? self.cultureInfo,
-            date: date ?? self.date,
             dummy: dummy ?? self.dummy,
             empty: empty ?? self.empty,
             imaginery: imaginery ?? self.imaginery,
@@ -741,6 +741,56 @@ extension Array {
 // 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: - ArrayNode
+struct ArrayNode: Codable, Equatable {
+    let arrayNode: Int
+
+    enum CodingKeys: String, CodingKey {
+        case arrayNode = "ArrayNode"
+    }
+}
+
+// MARK: ArrayNode convenience initializers and mutators
+
+extension ArrayNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(ArrayNode.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(
+        arrayNode: Int? = nil
+    ) -> ArrayNode {
+        return ArrayNode(
+            arrayNode: arrayNode ?? self.arrayNode
+        )
+    }
+
+    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: - ASM
 struct ASM: Codable, Equatable {
     let asm: Int
@@ -1391,6 +1441,56 @@ extension Boolean {
 // 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: - BooleanNode
+struct BooleanNode: Codable, Equatable {
+    let booleanNode: Int
+
+    enum CodingKeys: String, CodingKey {
+        case booleanNode = "BooleanNode"
+    }
+}
+
+// MARK: BooleanNode convenience initializers and mutators
+
+extension BooleanNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(BooleanNode.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(
+        booleanNode: Int? = nil
+    ) -> BooleanNode {
+        return BooleanNode(
+            booleanNode: booleanNode ?? self.booleanNode
+        )
+    }
+
+    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: - Bycopy
 struct Bycopy: Codable, Equatable {
     let bycopy: Int
@@ -2691,106 +2791,6 @@ extension Converter {
 // 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: - CultureInfo
-struct CultureInfo: Codable, Equatable {
-    let cultureInfo: Int
-
-    enum CodingKeys: String, CodingKey {
-        case cultureInfo = "CultureInfo"
-    }
-}
-
-// MARK: CultureInfo convenience initializers and mutators
-
-extension CultureInfo {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(CultureInfo.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(
-        cultureInfo: Int? = nil
-    ) -> CultureInfo {
-        return CultureInfo(
-            cultureInfo: cultureInfo ?? self.cultureInfo
-        )
-    }
-
-    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: - DateClass
-struct DateClass: Codable, Equatable {
-    let date: Int
-
-    enum CodingKeys: String, CodingKey {
-        case date = "date"
-    }
-}
-
-// MARK: DateClass convenience initializers and mutators
-
-extension DateClass {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(DateClass.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(
-        date: Int? = nil
-    ) -> DateClass {
-        return DateClass(
-            date: date ?? self.date
-        )
-    }
-
-    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: - Empty
 struct Empty: Codable, Equatable {
     let empty: Int
@@ -3593,6 +3593,8 @@ extension ClassClass {
 
 // MARK: - Obj2
 struct Obj2: Codable, Equatable {
+    let cultureInfo: CultureInfo
+    let date: DateClass
     let dateFormatter: DateFormatterClass
     let dateOnly: DateOnly
     let dateOnlyConverter: DateOnlyConverter
@@ -3610,9 +3612,11 @@ struct Obj2: Codable, Equatable {
     let del: Del
     let delegate: Delegate
     let delete: Delete
+    let deserializationFeature: DeserializationFeature
     let dict: Dict
     let dictionary: Dictionary
     let double: DoubleClass
+    let doubleNode: DoubleNode
     let dummy: Int
     let dynamicCast: DynamicCast
     let elif: Elif
@@ -3638,9 +3642,6 @@ struct Obj2: Codable, Equatable {
     let from: From
     let fromJSON: FromJSON
     let function: Function
-    let global: Global
-    let go: Go
-    let goto: Goto
     let obj2Default: Default
     let obj2Defer: Defer
     let obj2Deinit: Deinit
@@ -3656,10 +3657,11 @@ struct Obj2: Codable, Equatable {
     let obj2Final: Final
     let obj2For: For
     let obj2Func: Func
-    let obj2Get: Get
     let purpleFalse: FalseClass
 
     enum CodingKeys: String, CodingKey {
+        case cultureInfo = "CultureInfo"
+        case date = "date"
         case dateFormatter = "DateFormatter"
         case dateOnly = "DateOnly"
         case dateOnlyConverter = "DateOnlyConverter"
@@ -3677,9 +3679,11 @@ struct Obj2: Codable, Equatable {
         case del = "del"
         case delegate = "delegate"
         case delete = "delete"
+        case deserializationFeature = "DeserializationFeature"
         case dict = "dict"
         case dictionary = "dictionary"
         case double = "double"
+        case doubleNode = "DoubleNode"
         case dummy = "dummy"
         case dynamicCast = "dynamic_cast"
         case elif = "elif"
@@ -3705,9 +3709,6 @@ struct Obj2: Codable, Equatable {
         case from = "from"
         case fromJSON = "from_json"
         case function = "function"
-        case global = "global"
-        case go = "go"
-        case goto = "goto"
         case obj2Default = "default"
         case obj2Defer = "defer"
         case obj2Deinit = "deinit"
@@ -3723,7 +3724,6 @@ struct Obj2: Codable, Equatable {
         case obj2Final = "final"
         case obj2For = "for"
         case obj2Func = "func"
-        case obj2Get = "get"
         case purpleFalse = "false"
     }
 }
@@ -3747,6 +3747,8 @@ extension Obj2 {
     }
 
     func with(
+        cultureInfo: CultureInfo? = nil,
+        date: DateClass? = nil,
         dateFormatter: DateFormatterClass? = nil,
         dateOnly: DateOnly? = nil,
         dateOnlyConverter: DateOnlyConverter? = nil,
@@ -3764,9 +3766,11 @@ extension Obj2 {
         del: Del? = nil,
         delegate: Delegate? = nil,
         delete: Delete? = nil,
+        deserializationFeature: DeserializationFeature? = nil,
         dict: Dict? = nil,
         dictionary: Dictionary? = nil,
         double: DoubleClass? = nil,
+        doubleNode: DoubleNode? = nil,
         dummy: Int? = nil,
         dynamicCast: DynamicCast? = nil,
         elif: Elif? = nil,
@@ -3792,9 +3796,6 @@ extension Obj2 {
         from: From? = nil,
         fromJSON: FromJSON? = nil,
         function: Function? = nil,
-        global: Global? = nil,
-        go: Go? = nil,
-        goto: Goto? = nil,
         obj2Default: Default? = nil,
         obj2Defer: Defer? = nil,
         obj2Deinit: Deinit? = nil,
@@ -3810,10 +3811,11 @@ extension Obj2 {
         obj2Final: Final? = nil,
         obj2For: For? = nil,
         obj2Func: Func? = nil,
-        obj2Get: Get? = nil,
         purpleFalse: FalseClass? = nil
     ) -> Obj2 {
         return Obj2(
+            cultureInfo: cultureInfo ?? self.cultureInfo,
+            date: date ?? self.date,
             dateFormatter: dateFormatter ?? self.dateFormatter,
             dateOnly: dateOnly ?? self.dateOnly,
             dateOnlyConverter: dateOnlyConverter ?? self.dateOnlyConverter,
@@ -3831,9 +3833,11 @@ extension Obj2 {
             del: del ?? self.del,
             delegate: delegate ?? self.delegate,
             delete: delete ?? self.delete,
+            deserializationFeature: deserializationFeature ?? self.deserializationFeature,
             dict: dict ?? self.dict,
             dictionary: dictionary ?? self.dictionary,
             double: double ?? self.double,
+            doubleNode: doubleNode ?? self.doubleNode,
             dummy: dummy ?? self.dummy,
             dynamicCast: dynamicCast ?? self.dynamicCast,
             elif: elif ?? self.elif,
@@ -3859,9 +3863,6 @@ extension Obj2 {
             from: from ?? self.from,
             fromJSON: fromJSON ?? self.fromJSON,
             function: function ?? self.function,
-            global: global ?? self.global,
-            go: go ?? self.go,
-            goto: goto ?? self.goto,
             obj2Default: obj2Default ?? self.obj2Default,
             obj2Defer: obj2Defer ?? self.obj2Defer,
             obj2Deinit: obj2Deinit ?? self.obj2Deinit,
@@ -3877,7 +3878,6 @@ extension Obj2 {
             obj2Final: obj2Final ?? self.obj2Final,
             obj2For: obj2For ?? self.obj2For,
             obj2Func: obj2Func ?? self.obj2Func,
-            obj2Get: obj2Get ?? self.obj2Get,
             purpleFalse: purpleFalse ?? self.purpleFalse
         )
     }
@@ -3897,20 +3897,20 @@ extension Obj2 {
 // 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: - DateFormatterClass
-struct DateFormatterClass: Codable, Equatable {
-    let dateFormatter: Int
+// MARK: - CultureInfo
+struct CultureInfo: Codable, Equatable {
+    let cultureInfo: Int
 
     enum CodingKeys: String, CodingKey {
-        case dateFormatter = "DateFormatter"
+        case cultureInfo = "CultureInfo"
     }
 }
 
-// MARK: DateFormatterClass convenience initializers and mutators
+// MARK: CultureInfo convenience initializers and mutators
 
-extension DateFormatterClass {
+extension CultureInfo {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(DateFormatterClass.self, from: data)
+        self = try newJSONDecoder().decode(CultureInfo.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -3925,10 +3925,10 @@ extension DateFormatterClass {
     }
 
     func with(
-        dateFormatter: Int? = nil
-    ) -> DateFormatterClass {
-        return DateFormatterClass(
-            dateFormatter: dateFormatter ?? self.dateFormatter
+        cultureInfo: Int? = nil
+    ) -> CultureInfo {
+        return CultureInfo(
+            cultureInfo: cultureInfo ?? self.cultureInfo
         )
     }
 
@@ -3947,20 +3947,20 @@ extension DateFormatterClass {
 // 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: - DateOnly
-struct DateOnly: Codable, Equatable {
-    let dateOnly: Int
+// MARK: - DateClass
+struct DateClass: Codable, Equatable {
+    let date: Int
 
     enum CodingKeys: String, CodingKey {
-        case dateOnly = "DateOnly"
+        case date = "date"
     }
 }
 
-// MARK: DateOnly convenience initializers and mutators
+// MARK: DateClass convenience initializers and mutators
 
-extension DateOnly {
+extension DateClass {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(DateOnly.self, from: data)
+        self = try newJSONDecoder().decode(DateClass.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -3975,10 +3975,10 @@ extension DateOnly {
     }
 
     func with(
-        dateOnly: Int? = nil
-    ) -> DateOnly {
-        return DateOnly(
-            dateOnly: dateOnly ?? self.dateOnly
+        date: Int? = nil
+    ) -> DateClass {
+        return DateClass(
+            date: date ?? self.date
         )
     }
 
@@ -3997,9 +3997,109 @@ extension DateOnly {
 // 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: - DateOnlyConverter
-struct DateOnlyConverter: Codable, Equatable {
-    let dateOnlyConverter: Int
+// MARK: - DateFormatterClass
+struct DateFormatterClass: Codable, Equatable {
+    let dateFormatter: Int
+
+    enum CodingKeys: String, CodingKey {
+        case dateFormatter = "DateFormatter"
+    }
+}
+
+// MARK: DateFormatterClass convenience initializers and mutators
+
+extension DateFormatterClass {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(DateFormatterClass.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(
+        dateFormatter: Int? = nil
+    ) -> DateFormatterClass {
+        return DateFormatterClass(
+            dateFormatter: dateFormatter ?? self.dateFormatter
+        )
+    }
+
+    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: - DateOnly
+struct DateOnly: Codable, Equatable {
+    let dateOnly: Int
+
+    enum CodingKeys: String, CodingKey {
+        case dateOnly = "DateOnly"
+    }
+}
+
+// MARK: DateOnly convenience initializers and mutators
+
+extension DateOnly {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(DateOnly.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(
+        dateOnly: Int? = nil
+    ) -> DateOnly {
+        return DateOnly(
+            dateOnly: dateOnly ?? self.dateOnly
+        )
+    }
+
+    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: - DateOnlyConverter
+struct DateOnlyConverter: Codable, Equatable {
+    let dateOnlyConverter: Int
 
     enum CodingKeys: String, CodingKey {
         case dateOnlyConverter = "DateOnlyConverter"
@@ -4747,6 +4847,56 @@ extension Delete {
 // 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: - DeserializationFeature
+struct DeserializationFeature: Codable, Equatable {
+    let deserializationFeature: Int
+
+    enum CodingKeys: String, CodingKey {
+        case deserializationFeature = "DeserializationFeature"
+    }
+}
+
+// MARK: DeserializationFeature convenience initializers and mutators
+
+extension DeserializationFeature {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(DeserializationFeature.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(
+        deserializationFeature: Int? = nil
+    ) -> DeserializationFeature {
+        return DeserializationFeature(
+            deserializationFeature: deserializationFeature ?? self.deserializationFeature
+        )
+    }
+
+    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: - Dict
 struct Dict: Codable, Equatable {
     let dict: Int
@@ -4897,6 +5047,56 @@ extension DoubleClass {
 // 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: - DoubleNode
+struct DoubleNode: Codable, Equatable {
+    let doubleNode: Int
+
+    enum CodingKeys: String, CodingKey {
+        case doubleNode = "DoubleNode"
+    }
+}
+
+// MARK: DoubleNode convenience initializers and mutators
+
+extension DoubleNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(DoubleNode.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(
+        doubleNode: Int? = nil
+    ) -> DoubleNode {
+        return DoubleNode(
+            doubleNode: doubleNode ?? self.doubleNode
+        )
+    }
+
+    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: - DynamicCast
 struct DynamicCast: Codable, Equatable {
     let dynamicCast: Int
@@ -6102,20 +6302,20 @@ extension Function {
 // 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: - Global
-struct Global: Codable, Equatable {
-    let global: Int
+// MARK: - Default
+struct Default: Codable, Equatable {
+    let defaultDefault: Int
 
     enum CodingKeys: String, CodingKey {
-        case global = "global"
+        case defaultDefault = "default"
     }
 }
 
-// MARK: Global convenience initializers and mutators
+// MARK: Default convenience initializers and mutators
 
-extension Global {
+extension Default {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Global.self, from: data)
+        self = try newJSONDecoder().decode(Default.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -6130,10 +6330,10 @@ extension Global {
     }
 
     func with(
-        global: Int? = nil
-    ) -> Global {
-        return Global(
-            global: global ?? self.global
+        defaultDefault: Int? = nil
+    ) -> Default {
+        return Default(
+            defaultDefault: defaultDefault ?? self.defaultDefault
         )
     }
 
@@ -6152,20 +6352,20 @@ extension Global {
 // 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: - Go
-struct Go: Codable, Equatable {
-    let go: Int
+// MARK: - Defer
+struct Defer: Codable, Equatable {
+    let deferDefer: Int
 
     enum CodingKeys: String, CodingKey {
-        case go = "go"
+        case deferDefer = "defer"
     }
 }
 
-// MARK: Go convenience initializers and mutators
+// MARK: Defer convenience initializers and mutators
 
-extension Go {
+extension Defer {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Go.self, from: data)
+        self = try newJSONDecoder().decode(Defer.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -6180,10 +6380,10 @@ extension Go {
     }
 
     func with(
-        go: Int? = nil
-    ) -> Go {
-        return Go(
-            go: go ?? self.go
+        deferDefer: Int? = nil
+    ) -> Defer {
+        return Defer(
+            deferDefer: deferDefer ?? self.deferDefer
         )
     }
 
@@ -6202,20 +6402,20 @@ extension Go {
 // 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: - Goto
-struct Goto: Codable, Equatable {
-    let goto: Int
+// MARK: - Deinit
+struct Deinit: Codable, Equatable {
+    let deinitDeinit: Int
 
     enum CodingKeys: String, CodingKey {
-        case goto = "goto"
+        case deinitDeinit = "deinit"
     }
 }
 
-// MARK: Goto convenience initializers and mutators
+// MARK: Deinit convenience initializers and mutators
 
-extension Goto {
+extension Deinit {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Goto.self, from: data)
+        self = try newJSONDecoder().decode(Deinit.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -6230,10 +6430,10 @@ extension Goto {
     }
 
     func with(
-        goto: Int? = nil
-    ) -> Goto {
-        return Goto(
-            goto: goto ?? self.goto
+        deinitDeinit: Int? = nil
+    ) -> Deinit {
+        return Deinit(
+            deinitDeinit: deinitDeinit ?? self.deinitDeinit
         )
     }
 
@@ -6252,168 +6452,18 @@ extension Goto {
 // 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: - Default
-struct Default: Codable, Equatable {
-    let defaultDefault: Int
+// MARK: - DidSet
+struct DidSet: Codable, Equatable {
+    let didSetDidSet: Int
 
     enum CodingKeys: String, CodingKey {
-        case defaultDefault = "default"
+        case didSetDidSet = "didSet"
     }
 }
 
-// MARK: Default convenience initializers and mutators
+// MARK: DidSet convenience initializers and mutators
 
-extension Default {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Default.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(
-        defaultDefault: Int? = nil
-    ) -> Default {
-        return Default(
-            defaultDefault: defaultDefault ?? self.defaultDefault
-        )
-    }
-
-    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: - Defer
-struct Defer: Codable, Equatable {
-    let deferDefer: Int
-
-    enum CodingKeys: String, CodingKey {
-        case deferDefer = "defer"
-    }
-}
-
-// MARK: Defer convenience initializers and mutators
-
-extension Defer {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Defer.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(
-        deferDefer: Int? = nil
-    ) -> Defer {
-        return Defer(
-            deferDefer: deferDefer ?? self.deferDefer
-        )
-    }
-
-    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: - Deinit
-struct Deinit: Codable, Equatable {
-    let deinitDeinit: Int
-
-    enum CodingKeys: String, CodingKey {
-        case deinitDeinit = "deinit"
-    }
-}
-
-// MARK: Deinit convenience initializers and mutators
-
-extension Deinit {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Deinit.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(
-        deinitDeinit: Int? = nil
-    ) -> Deinit {
-        return Deinit(
-            deinitDeinit: deinitDeinit ?? self.deinitDeinit
-        )
-    }
-
-    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: - DidSet
-struct DidSet: Codable, Equatable {
-    let didSetDidSet: Int
-
-    enum CodingKeys: String, CodingKey {
-        case didSetDidSet = "didSet"
-    }
-}
-
-// MARK: DidSet convenience initializers and mutators
-
-extension DidSet {
+extension DidSet {
     init(data: Data) throws {
         self = try newJSONDecoder().decode(DidSet.self, from: data)
     }
@@ -7002,56 +7052,6 @@ extension Func {
 // 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: - Get
-struct Get: Codable, Equatable {
-    let getGet: Int
-
-    enum CodingKeys: String, CodingKey {
-        case getGet = "get"
-    }
-}
-
-// MARK: Get convenience initializers and mutators
-
-extension Get {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Get.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(
-        getGet: Int? = nil
-    ) -> Get {
-        return Get(
-            getGet: getGet ?? self.getGet
-        )
-    }
-
-    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: - FalseClass
 struct FalseClass: Codable, Equatable {
     let falseFalse: Int
@@ -7105,6 +7105,9 @@ extension FalseClass {
 // MARK: - Obj3
 struct Obj3: Codable, Equatable {
     let dummy: Int
+    let global: Global
+    let go: Go
+    let goto: Goto
     let hasOwnProperty: HasOwnProperty
     let hashCode: HashCode
     let hashable: HashableClass
@@ -7116,6 +7119,7 @@ struct Obj3: Codable, Equatable {
     let inline: Inline
     let instanceof: Instanceof
     let int: IntClass
+    let intNode: IntNode
     let interface: Interface
     let isoDateTimeOffsetConverter: ISODateTimeOffsetConverter
     let iterable: Iterable
@@ -7142,17 +7146,14 @@ struct Obj3: Codable, Equatable {
     let locale: LocaleClass
     let lock: Lock
     let long: Long
+    let longNode: LongNode
     let map: Map
     let mapEntry: MapEntry
     let metadataPropertyHandling: MetadataPropertyHandling
     let module: Module
     let mutable: Mutable
     let namespace: Namespace
-    let native: Native
-    let new: New
-    let newtonsoft: Newtonsoft
-    let no: No
-    let noexcept: Noexcept
+    let obj3Get: Get
     let obj3Guard: Guard
     let obj3If: If
     let obj3Import: Import
@@ -7168,10 +7169,12 @@ struct Obj3: Codable, Equatable {
     let obj3Left: Left
     let obj3Let: Let
     let obj3Mutating: Mutating
-    let obj3Nil: Nil
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
+        case global = "global"
+        case go = "go"
+        case goto = "goto"
         case hasOwnProperty = "hasOwnProperty"
         case hashCode = "hashCode"
         case hashable = "Hashable"
@@ -7183,6 +7186,7 @@ struct Obj3: Codable, Equatable {
         case inline = "inline"
         case instanceof = "instanceof"
         case int = "int"
+        case intNode = "IntNode"
         case interface = "interface"
         case isoDateTimeOffsetConverter = "IsoDateTimeOffsetConverter"
         case iterable = "iterable"
@@ -7209,17 +7213,14 @@ struct Obj3: Codable, Equatable {
         case locale = "Locale"
         case lock = "lock"
         case long = "long"
+        case longNode = "LongNode"
         case map = "map"
         case mapEntry = "MapEntry"
         case metadataPropertyHandling = "metadata_property_handling"
         case module = "module"
         case mutable = "mutable"
         case namespace = "namespace"
-        case native = "native"
-        case new = "new"
-        case newtonsoft = "newtonsoft"
-        case no = "NO"
-        case noexcept = "noexcept"
+        case obj3Get = "get"
         case obj3Guard = "guard"
         case obj3If = "if"
         case obj3Import = "import"
@@ -7235,7 +7236,6 @@ struct Obj3: Codable, Equatable {
         case obj3Left = "left"
         case obj3Let = "let"
         case obj3Mutating = "mutating"
-        case obj3Nil = "nil"
     }
 }
 
@@ -7259,6 +7259,9 @@ extension Obj3 {
 
     func with(
         dummy: Int? = nil,
+        global: Global? = nil,
+        go: Go? = nil,
+        goto: Goto? = nil,
         hasOwnProperty: HasOwnProperty? = nil,
         hashCode: HashCode? = nil,
         hashable: HashableClass? = nil,
@@ -7270,6 +7273,7 @@ extension Obj3 {
         inline: Inline? = nil,
         instanceof: Instanceof? = nil,
         int: IntClass? = nil,
+        intNode: IntNode? = nil,
         interface: Interface? = nil,
         isoDateTimeOffsetConverter: ISODateTimeOffsetConverter? = nil,
         iterable: Iterable? = nil,
@@ -7296,17 +7300,14 @@ extension Obj3 {
         locale: LocaleClass? = nil,
         lock: Lock? = nil,
         long: Long? = nil,
+        longNode: LongNode? = nil,
         map: Map? = nil,
         mapEntry: MapEntry? = nil,
         metadataPropertyHandling: MetadataPropertyHandling? = nil,
         module: Module? = nil,
         mutable: Mutable? = nil,
         namespace: Namespace? = nil,
-        native: Native? = nil,
-        new: New? = nil,
-        newtonsoft: Newtonsoft? = nil,
-        no: No? = nil,
-        noexcept: Noexcept? = nil,
+        obj3Get: Get? = nil,
         obj3Guard: Guard? = nil,
         obj3If: If? = nil,
         obj3Import: Import? = nil,
@@ -7321,11 +7322,13 @@ extension Obj3 {
         obj3Lazy: Lazy? = nil,
         obj3Left: Left? = nil,
         obj3Let: Let? = nil,
-        obj3Mutating: Mutating? = nil,
-        obj3Nil: Nil? = nil
+        obj3Mutating: Mutating? = nil
     ) -> Obj3 {
         return Obj3(
             dummy: dummy ?? self.dummy,
+            global: global ?? self.global,
+            go: go ?? self.go,
+            goto: goto ?? self.goto,
             hasOwnProperty: hasOwnProperty ?? self.hasOwnProperty,
             hashCode: hashCode ?? self.hashCode,
             hashable: hashable ?? self.hashable,
@@ -7337,6 +7340,7 @@ extension Obj3 {
             inline: inline ?? self.inline,
             instanceof: instanceof ?? self.instanceof,
             int: int ?? self.int,
+            intNode: intNode ?? self.intNode,
             interface: interface ?? self.interface,
             isoDateTimeOffsetConverter: isoDateTimeOffsetConverter ?? self.isoDateTimeOffsetConverter,
             iterable: iterable ?? self.iterable,
@@ -7363,17 +7367,14 @@ extension Obj3 {
             locale: locale ?? self.locale,
             lock: lock ?? self.lock,
             long: long ?? self.long,
+            longNode: longNode ?? self.longNode,
             map: map ?? self.map,
             mapEntry: mapEntry ?? self.mapEntry,
             metadataPropertyHandling: metadataPropertyHandling ?? self.metadataPropertyHandling,
             module: module ?? self.module,
             mutable: mutable ?? self.mutable,
             namespace: namespace ?? self.namespace,
-            native: native ?? self.native,
-            new: new ?? self.new,
-            newtonsoft: newtonsoft ?? self.newtonsoft,
-            no: no ?? self.no,
-            noexcept: noexcept ?? self.noexcept,
+            obj3Get: obj3Get ?? self.obj3Get,
             obj3Guard: obj3Guard ?? self.obj3Guard,
             obj3If: obj3If ?? self.obj3If,
             obj3Import: obj3Import ?? self.obj3Import,
@@ -7388,8 +7389,7 @@ extension Obj3 {
             obj3Lazy: obj3Lazy ?? self.obj3Lazy,
             obj3Left: obj3Left ?? self.obj3Left,
             obj3Let: obj3Let ?? self.obj3Let,
-            obj3Mutating: obj3Mutating ?? self.obj3Mutating,
-            obj3Nil: obj3Nil ?? self.obj3Nil
+            obj3Mutating: obj3Mutating ?? self.obj3Mutating
         )
     }
 
@@ -7408,20 +7408,20 @@ extension Obj3 {
 // 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: - HasOwnProperty
-struct HasOwnProperty: Codable, Equatable {
-    let hasOwnProperty: Int
+// MARK: - Global
+struct Global: Codable, Equatable {
+    let global: Int
 
     enum CodingKeys: String, CodingKey {
-        case hasOwnProperty = "hasOwnProperty"
+        case global = "global"
     }
 }
 
-// MARK: HasOwnProperty convenience initializers and mutators
+// MARK: Global convenience initializers and mutators
 
-extension HasOwnProperty {
+extension Global {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(HasOwnProperty.self, from: data)
+        self = try newJSONDecoder().decode(Global.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -7436,10 +7436,10 @@ extension HasOwnProperty {
     }
 
     func with(
-        hasOwnProperty: Int? = nil
-    ) -> HasOwnProperty {
-        return HasOwnProperty(
-            hasOwnProperty: hasOwnProperty ?? self.hasOwnProperty
+        global: Int? = nil
+    ) -> Global {
+        return Global(
+            global: global ?? self.global
         )
     }
 
@@ -7458,8 +7458,158 @@ extension HasOwnProperty {
 // 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: - HashCode
-struct HashCode: Codable, Equatable {
+// MARK: - Go
+struct Go: Codable, Equatable {
+    let go: Int
+
+    enum CodingKeys: String, CodingKey {
+        case go = "go"
+    }
+}
+
+// MARK: Go convenience initializers and mutators
+
+extension Go {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Go.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(
+        go: Int? = nil
+    ) -> Go {
+        return Go(
+            go: go ?? self.go
+        )
+    }
+
+    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: - Goto
+struct Goto: Codable, Equatable {
+    let goto: Int
+
+    enum CodingKeys: String, CodingKey {
+        case goto = "goto"
+    }
+}
+
+// MARK: Goto convenience initializers and mutators
+
+extension Goto {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Goto.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(
+        goto: Int? = nil
+    ) -> Goto {
+        return Goto(
+            goto: goto ?? self.goto
+        )
+    }
+
+    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: - HasOwnProperty
+struct HasOwnProperty: Codable, Equatable {
+    let hasOwnProperty: Int
+
+    enum CodingKeys: String, CodingKey {
+        case hasOwnProperty = "hasOwnProperty"
+    }
+}
+
+// MARK: HasOwnProperty convenience initializers and mutators
+
+extension HasOwnProperty {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(HasOwnProperty.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(
+        hasOwnProperty: Int? = nil
+    ) -> HasOwnProperty {
+        return HasOwnProperty(
+            hasOwnProperty: hasOwnProperty ?? self.hasOwnProperty
+        )
+    }
+
+    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: - HashCode
+struct HashCode: Codable, Equatable {
     let hashCode: Int
 
     enum CodingKeys: String, CodingKey {
@@ -7958,6 +8108,56 @@ extension IntClass {
 // 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: - IntNode
+struct IntNode: Codable, Equatable {
+    let intNode: Int
+
+    enum CodingKeys: String, CodingKey {
+        case intNode = "IntNode"
+    }
+}
+
+// MARK: IntNode convenience initializers and mutators
+
+extension IntNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(IntNode.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(
+        intNode: Int? = nil
+    ) -> IntNode {
+        return IntNode(
+            intNode: intNode ?? self.intNode
+        )
+    }
+
+    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: - Interface
 struct Interface: Codable, Equatable {
     let interface: Int
@@ -9258,6 +9458,56 @@ extension Long {
 // 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: - LongNode
+struct LongNode: Codable, Equatable {
+    let longNode: Int
+
+    enum CodingKeys: String, CodingKey {
+        case longNode = "LongNode"
+    }
+}
+
+// MARK: LongNode convenience initializers and mutators
+
+extension LongNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(LongNode.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(
+        longNode: Int? = nil
+    ) -> LongNode {
+        return LongNode(
+            longNode: longNode ?? self.longNode
+        )
+    }
+
+    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: - Map
 struct Map: Codable, Equatable {
     let map: Int
@@ -9558,20 +9808,20 @@ extension Namespace {
 // 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: - Native
-struct Native: Codable, Equatable {
-    let native: Int
+// MARK: - Get
+struct Get: Codable, Equatable {
+    let getGet: Int
 
     enum CodingKeys: String, CodingKey {
-        case native = "native"
+        case getGet = "get"
     }
 }
 
-// MARK: Native convenience initializers and mutators
+// MARK: Get convenience initializers and mutators
 
-extension Native {
+extension Get {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Native.self, from: data)
+        self = try newJSONDecoder().decode(Get.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -9586,210 +9836,10 @@ extension Native {
     }
 
     func with(
-        native: Int? = nil
-    ) -> Native {
-        return Native(
-            native: native ?? self.native
-        )
-    }
-
-    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: - New
-struct New: Codable, Equatable {
-    let new: Int
-
-    enum CodingKeys: String, CodingKey {
-        case new = "new"
-    }
-}
-
-// MARK: New convenience initializers and mutators
-
-extension New {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(New.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(
-        new: Int? = nil
-    ) -> New {
-        return New(
-            new: new ?? self.new
-        )
-    }
-
-    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: - Newtonsoft
-struct Newtonsoft: Codable, Equatable {
-    let newtonsoft: Int
-
-    enum CodingKeys: String, CodingKey {
-        case newtonsoft = "newtonsoft"
-    }
-}
-
-// MARK: Newtonsoft convenience initializers and mutators
-
-extension Newtonsoft {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Newtonsoft.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(
-        newtonsoft: Int? = nil
-    ) -> Newtonsoft {
-        return Newtonsoft(
-            newtonsoft: newtonsoft ?? self.newtonsoft
-        )
-    }
-
-    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: - No
-struct No: Codable, Equatable {
-    let no: Int
-
-    enum CodingKeys: String, CodingKey {
-        case no = "NO"
-    }
-}
-
-// MARK: No convenience initializers and mutators
-
-extension No {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(No.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(
-        no: Int? = nil
-    ) -> No {
-        return No(
-            no: no ?? self.no
-        )
-    }
-
-    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: - Noexcept
-struct Noexcept: Codable, Equatable {
-    let noexcept: Int
-
-    enum CodingKeys: String, CodingKey {
-        case noexcept = "noexcept"
-    }
-}
-
-// MARK: Noexcept convenience initializers and mutators
-
-extension Noexcept {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Noexcept.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(
-        noexcept: Int? = nil
-    ) -> Noexcept {
-        return Noexcept(
-            noexcept: noexcept ?? self.noexcept
+        getGet: Int? = nil
+    ) -> Get {
+        return Get(
+            getGet: getGet ?? self.getGet
         )
     }
 
@@ -10558,60 +10608,15 @@ extension Mutating {
 // 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: - Nil
-struct Nil: Codable, Equatable {
-    let nilNil: Int
-
-    enum CodingKeys: String, CodingKey {
-        case nilNil = "nil"
-    }
-}
-
-// MARK: Nil convenience initializers and mutators
-
-extension Nil {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Nil.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(
-        nilNil: Int? = nil
-    ) -> Nil {
-        return Nil(
-            nilNil: nilNil ?? self.nilNil
-        )
-    }
-
-    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: - Obj4
 struct Obj4: Codable, Equatable {
     let dummy: Int
+    let native: Native
+    let new: New
+    let newtonsoft: Newtonsoft
+    let no: No
     let noSuchMethod: NoSuchMethod
+    let noexcept: Noexcept
     let nonatomic: Nonatomic
     let none: None
     let nonlocal: Nonlocal
@@ -10621,8 +10626,10 @@ struct Obj4: Codable, Equatable {
     let nsObject: NSObject
     let nsString: NSString
     let null: Null
+    let nullNode: NullNode
     let nullptr: Nullptr
     let number: Number
+    let obj4Nil: Nil
     let obj4None: NoneClass
     let obj4Nonmutating: Nonmutating
     let obj4Null: NullClass
@@ -10639,10 +10646,9 @@ struct Obj4: Codable, Equatable {
     let obj4Repeat: Repeat
     let obj4Required: Required
     let obj4Rethrows: Rethrows
-    let obj4Return: Return
-    let obj4Right: Right
     let object: Object
     let objectMapper: ObjectMapper
+    let objectNode: ObjectNode
     let of: Of
     let oneway: Oneway
     let or: Or
@@ -10669,16 +10675,15 @@ struct Obj4: Codable, Equatable {
     let requires: Requires
     let restrict: Restrict
     let retain: Retain
-    let runtimeType: RuntimeType
-    let s: S
-    let sbyte: Sbyte
-    let sealed: Sealed
-    let sel: Sel
-    let select: Select
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
+        case native = "native"
+        case new = "new"
+        case newtonsoft = "newtonsoft"
+        case no = "NO"
         case noSuchMethod = "noSuchMethod"
+        case noexcept = "noexcept"
         case nonatomic = "nonatomic"
         case none = "None"
         case nonlocal = "nonlocal"
@@ -10688,8 +10693,10 @@ struct Obj4: Codable, Equatable {
         case nsObject = "NSObject"
         case nsString = "NSString"
         case null = "NULL"
+        case nullNode = "NullNode"
         case nullptr = "nullptr"
         case number = "number"
+        case obj4Nil = "nil"
         case obj4None = "none"
         case obj4Nonmutating = "nonmutating"
         case obj4Null = "null"
@@ -10706,10 +10713,9 @@ struct Obj4: Codable, Equatable {
         case obj4Repeat = "repeat"
         case obj4Required = "required"
         case obj4Rethrows = "rethrows"
-        case obj4Return = "return"
-        case obj4Right = "right"
         case object = "object"
         case objectMapper = "ObjectMapper"
+        case objectNode = "ObjectNode"
         case of = "of"
         case oneway = "oneway"
         case or = "or"
@@ -10736,12 +10742,6 @@ struct Obj4: Codable, Equatable {
         case requires = "requires"
         case restrict = "restrict"
         case retain = "retain"
-        case runtimeType = "runtimeType"
-        case s = "s"
-        case sbyte = "sbyte"
-        case sealed = "sealed"
-        case sel = "SEL"
-        case select = "select"
     }
 }
 
@@ -10765,7 +10765,12 @@ extension Obj4 {
 
     func with(
         dummy: Int? = nil,
+        native: Native? = nil,
+        new: New? = nil,
+        newtonsoft: Newtonsoft? = nil,
+        no: No? = nil,
         noSuchMethod: NoSuchMethod? = nil,
+        noexcept: Noexcept? = nil,
         nonatomic: Nonatomic? = nil,
         none: None? = nil,
         nonlocal: Nonlocal? = nil,
@@ -10775,8 +10780,10 @@ extension Obj4 {
         nsObject: NSObject? = nil,
         nsString: NSString? = nil,
         null: Null? = nil,
+        nullNode: NullNode? = nil,
         nullptr: Nullptr? = nil,
         number: Number? = nil,
+        obj4Nil: Nil? = nil,
         obj4None: NoneClass? = nil,
         obj4Nonmutating: Nonmutating? = nil,
         obj4Null: NullClass? = nil,
@@ -10793,10 +10800,9 @@ extension Obj4 {
         obj4Repeat: Repeat? = nil,
         obj4Required: Required? = nil,
         obj4Rethrows: Rethrows? = nil,
-        obj4Return: Return? = nil,
-        obj4Right: Right? = nil,
         object: Object? = nil,
         objectMapper: ObjectMapper? = nil,
+        objectNode: ObjectNode? = nil,
         of: Of? = nil,
         oneway: Oneway? = nil,
         or: Or? = nil,
@@ -10822,17 +10828,16 @@ extension Obj4 {
         require: Require? = nil,
         requires: Requires? = nil,
         restrict: Restrict? = nil,
-        retain: Retain? = nil,
-        runtimeType: RuntimeType? = nil,
-        s: S? = nil,
-        sbyte: Sbyte? = nil,
-        sealed: Sealed? = nil,
-        sel: Sel? = nil,
-        select: Select? = nil
+        retain: Retain? = nil
     ) -> Obj4 {
         return Obj4(
             dummy: dummy ?? self.dummy,
+            native: native ?? self.native,
+            new: new ?? self.new,
+            newtonsoft: newtonsoft ?? self.newtonsoft,
+            no: no ?? self.no,
             noSuchMethod: noSuchMethod ?? self.noSuchMethod,
+            noexcept: noexcept ?? self.noexcept,
             nonatomic: nonatomic ?? self.nonatomic,
             none: none ?? self.none,
             nonlocal: nonlocal ?? self.nonlocal,
@@ -10842,8 +10847,10 @@ extension Obj4 {
             nsObject: nsObject ?? self.nsObject,
             nsString: nsString ?? self.nsString,
             null: null ?? self.null,
+            nullNode: nullNode ?? self.nullNode,
             nullptr: nullptr ?? self.nullptr,
             number: number ?? self.number,
+            obj4Nil: obj4Nil ?? self.obj4Nil,
             obj4None: obj4None ?? self.obj4None,
             obj4Nonmutating: obj4Nonmutating ?? self.obj4Nonmutating,
             obj4Null: obj4Null ?? self.obj4Null,
@@ -10860,10 +10867,9 @@ extension Obj4 {
             obj4Repeat: obj4Repeat ?? self.obj4Repeat,
             obj4Required: obj4Required ?? self.obj4Required,
             obj4Rethrows: obj4Rethrows ?? self.obj4Rethrows,
-            obj4Return: obj4Return ?? self.obj4Return,
-            obj4Right: obj4Right ?? self.obj4Right,
             object: object ?? self.object,
             objectMapper: objectMapper ?? self.objectMapper,
+            objectNode: objectNode ?? self.objectNode,
             of: of ?? self.of,
             oneway: oneway ?? self.oneway,
             or: or ?? self.or,
@@ -10889,13 +10895,7 @@ extension Obj4 {
             require: require ?? self.require,
             requires: requires ?? self.requires,
             restrict: restrict ?? self.restrict,
-            retain: retain ?? self.retain,
-            runtimeType: runtimeType ?? self.runtimeType,
-            s: s ?? self.s,
-            sbyte: sbyte ?? self.sbyte,
-            sealed: sealed ?? self.sealed,
-            sel: sel ?? self.sel,
-            select: select ?? self.select
+            retain: retain ?? self.retain
         )
     }
 
@@ -10914,20 +10914,20 @@ extension Obj4 {
 // 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: - NoSuchMethod
-struct NoSuchMethod: Codable, Equatable {
-    let noSuchMethod: Int
+// MARK: - Native
+struct Native: Codable, Equatable {
+    let native: Int
 
     enum CodingKeys: String, CodingKey {
-        case noSuchMethod = "noSuchMethod"
+        case native = "native"
     }
 }
 
-// MARK: NoSuchMethod convenience initializers and mutators
+// MARK: Native convenience initializers and mutators
 
-extension NoSuchMethod {
+extension Native {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(NoSuchMethod.self, from: data)
+        self = try newJSONDecoder().decode(Native.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -10942,10 +10942,10 @@ extension NoSuchMethod {
     }
 
     func with(
-        noSuchMethod: Int? = nil
-    ) -> NoSuchMethod {
-        return NoSuchMethod(
-            noSuchMethod: noSuchMethod ?? self.noSuchMethod
+        native: Int? = nil
+    ) -> Native {
+        return Native(
+            native: native ?? self.native
         )
     }
 
@@ -10964,20 +10964,20 @@ extension NoSuchMethod {
 // 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: - Nonatomic
-struct Nonatomic: Codable, Equatable {
-    let nonatomic: Int
+// MARK: - New
+struct New: Codable, Equatable {
+    let new: Int
 
     enum CodingKeys: String, CodingKey {
-        case nonatomic = "nonatomic"
+        case new = "new"
     }
 }
 
-// MARK: Nonatomic convenience initializers and mutators
+// MARK: New convenience initializers and mutators
 
-extension Nonatomic {
+extension New {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Nonatomic.self, from: data)
+        self = try newJSONDecoder().decode(New.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -10992,10 +10992,10 @@ extension Nonatomic {
     }
 
     func with(
-        nonatomic: Int? = nil
-    ) -> Nonatomic {
-        return Nonatomic(
-            nonatomic: nonatomic ?? self.nonatomic
+        new: Int? = nil
+    ) -> New {
+        return New(
+            new: new ?? self.new
         )
     }
 
@@ -11014,20 +11014,20 @@ extension Nonatomic {
 // 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: - None
-struct None: Codable, Equatable {
-    let none: Int
+// MARK: - Newtonsoft
+struct Newtonsoft: Codable, Equatable {
+    let newtonsoft: Int
 
     enum CodingKeys: String, CodingKey {
-        case none = "None"
+        case newtonsoft = "newtonsoft"
     }
 }
 
-// MARK: None convenience initializers and mutators
+// MARK: Newtonsoft convenience initializers and mutators
 
-extension None {
+extension Newtonsoft {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(None.self, from: data)
+        self = try newJSONDecoder().decode(Newtonsoft.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11042,10 +11042,10 @@ extension None {
     }
 
     func with(
-        none: Int? = nil
-    ) -> None {
-        return None(
-            none: none ?? self.none
+        newtonsoft: Int? = nil
+    ) -> Newtonsoft {
+        return Newtonsoft(
+            newtonsoft: newtonsoft ?? self.newtonsoft
         )
     }
 
@@ -11064,20 +11064,20 @@ extension None {
 // 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: - Nonlocal
-struct Nonlocal: Codable, Equatable {
-    let nonlocal: Int
+// MARK: - No
+struct No: Codable, Equatable {
+    let no: Int
 
     enum CodingKeys: String, CodingKey {
-        case nonlocal = "nonlocal"
+        case no = "NO"
     }
 }
 
-// MARK: Nonlocal convenience initializers and mutators
+// MARK: No convenience initializers and mutators
 
-extension Nonlocal {
+extension No {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Nonlocal.self, from: data)
+        self = try newJSONDecoder().decode(No.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11092,10 +11092,10 @@ extension Nonlocal {
     }
 
     func with(
-        nonlocal: Int? = nil
-    ) -> Nonlocal {
-        return Nonlocal(
-            nonlocal: nonlocal ?? self.nonlocal
+        no: Int? = nil
+    ) -> No {
+        return No(
+            no: no ?? self.no
         )
     }
 
@@ -11114,20 +11114,20 @@ extension Nonlocal {
 // 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: - Not
-struct Not: Codable, Equatable {
-    let not: Int
+// MARK: - NoSuchMethod
+struct NoSuchMethod: Codable, Equatable {
+    let noSuchMethod: Int
 
     enum CodingKeys: String, CodingKey {
-        case not = "not"
+        case noSuchMethod = "noSuchMethod"
     }
 }
 
-// MARK: Not convenience initializers and mutators
+// MARK: NoSuchMethod convenience initializers and mutators
 
-extension Not {
+extension NoSuchMethod {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Not.self, from: data)
+        self = try newJSONDecoder().decode(NoSuchMethod.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11142,10 +11142,10 @@ extension Not {
     }
 
     func with(
-        not: Int? = nil
-    ) -> Not {
-        return Not(
-            not: not ?? self.not
+        noSuchMethod: Int? = nil
+    ) -> NoSuchMethod {
+        return NoSuchMethod(
+            noSuchMethod: noSuchMethod ?? self.noSuchMethod
         )
     }
 
@@ -11164,20 +11164,20 @@ extension Not {
 // 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: - NotEq
-struct NotEq: Codable, Equatable {
-    let notEq: Int
+// MARK: - Noexcept
+struct Noexcept: Codable, Equatable {
+    let noexcept: Int
 
     enum CodingKeys: String, CodingKey {
-        case notEq = "not_eq"
+        case noexcept = "noexcept"
     }
 }
 
-// MARK: NotEq convenience initializers and mutators
+// MARK: Noexcept convenience initializers and mutators
 
-extension NotEq {
+extension Noexcept {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(NotEq.self, from: data)
+        self = try newJSONDecoder().decode(Noexcept.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11192,10 +11192,10 @@ extension NotEq {
     }
 
     func with(
-        notEq: Int? = nil
-    ) -> NotEq {
-        return NotEq(
-            notEq: notEq ?? self.notEq
+        noexcept: Int? = nil
+    ) -> Noexcept {
+        return Noexcept(
+            noexcept: noexcept ?? self.noexcept
         )
     }
 
@@ -11214,20 +11214,20 @@ extension NotEq {
 // 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: - NSErrorClass
-struct NSErrorClass: Codable, Equatable {
-    let nsError: Int
+// MARK: - Nonatomic
+struct Nonatomic: Codable, Equatable {
+    let nonatomic: Int
 
     enum CodingKeys: String, CodingKey {
-        case nsError = "NSError"
+        case nonatomic = "nonatomic"
     }
 }
 
-// MARK: NSErrorClass convenience initializers and mutators
+// MARK: Nonatomic convenience initializers and mutators
 
-extension NSErrorClass {
+extension Nonatomic {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(NSErrorClass.self, from: data)
+        self = try newJSONDecoder().decode(Nonatomic.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11242,10 +11242,10 @@ extension NSErrorClass {
     }
 
     func with(
-        nsError: Int? = nil
-    ) -> NSErrorClass {
-        return NSErrorClass(
-            nsError: nsError ?? self.nsError
+        nonatomic: Int? = nil
+    ) -> Nonatomic {
+        return Nonatomic(
+            nonatomic: nonatomic ?? self.nonatomic
         )
     }
 
@@ -11264,20 +11264,20 @@ extension NSErrorClass {
 // 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: - NSObject
-struct NSObject: Codable, Equatable {
-    let nsObject: Int
+// MARK: - None
+struct None: Codable, Equatable {
+    let none: Int
 
     enum CodingKeys: String, CodingKey {
-        case nsObject = "NSObject"
+        case none = "None"
     }
 }
 
-// MARK: NSObject convenience initializers and mutators
+// MARK: None convenience initializers and mutators
 
-extension NSObject {
+extension None {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(NSObject.self, from: data)
+        self = try newJSONDecoder().decode(None.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11292,10 +11292,10 @@ extension NSObject {
     }
 
     func with(
-        nsObject: Int? = nil
-    ) -> NSObject {
-        return NSObject(
-            nsObject: nsObject ?? self.nsObject
+        none: Int? = nil
+    ) -> None {
+        return None(
+            none: none ?? self.none
         )
     }
 
@@ -11314,20 +11314,20 @@ extension NSObject {
 // 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: - NSString
-struct NSString: Codable, Equatable {
-    let nsString: Int
+// MARK: - Nonlocal
+struct Nonlocal: Codable, Equatable {
+    let nonlocal: Int
 
     enum CodingKeys: String, CodingKey {
-        case nsString = "NSString"
+        case nonlocal = "nonlocal"
     }
 }
 
-// MARK: NSString convenience initializers and mutators
+// MARK: Nonlocal convenience initializers and mutators
 
-extension NSString {
+extension Nonlocal {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(NSString.self, from: data)
+        self = try newJSONDecoder().decode(Nonlocal.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11342,10 +11342,10 @@ extension NSString {
     }
 
     func with(
-        nsString: Int? = nil
-    ) -> NSString {
-        return NSString(
-            nsString: nsString ?? self.nsString
+        nonlocal: Int? = nil
+    ) -> Nonlocal {
+        return Nonlocal(
+            nonlocal: nonlocal ?? self.nonlocal
         )
     }
 
@@ -11364,20 +11364,20 @@ extension NSString {
 // 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: - Null
-struct Null: Codable, Equatable {
-    let null: Int
+// MARK: - Not
+struct Not: Codable, Equatable {
+    let not: Int
 
     enum CodingKeys: String, CodingKey {
-        case null = "NULL"
+        case not = "not"
     }
 }
 
-// MARK: Null convenience initializers and mutators
+// MARK: Not convenience initializers and mutators
 
-extension Null {
+extension Not {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Null.self, from: data)
+        self = try newJSONDecoder().decode(Not.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11392,10 +11392,10 @@ extension Null {
     }
 
     func with(
-        null: Int? = nil
-    ) -> Null {
-        return Null(
-            null: null ?? self.null
+        not: Int? = nil
+    ) -> Not {
+        return Not(
+            not: not ?? self.not
         )
     }
 
@@ -11414,20 +11414,20 @@ extension Null {
 // 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: - Nullptr
-struct Nullptr: Codable, Equatable {
-    let nullptr: Int
+// MARK: - NotEq
+struct NotEq: Codable, Equatable {
+    let notEq: Int
 
     enum CodingKeys: String, CodingKey {
-        case nullptr = "nullptr"
+        case notEq = "not_eq"
     }
 }
 
-// MARK: Nullptr convenience initializers and mutators
+// MARK: NotEq convenience initializers and mutators
 
-extension Nullptr {
+extension NotEq {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Nullptr.self, from: data)
+        self = try newJSONDecoder().decode(NotEq.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11442,10 +11442,10 @@ extension Nullptr {
     }
 
     func with(
-        nullptr: Int? = nil
-    ) -> Nullptr {
-        return Nullptr(
-            nullptr: nullptr ?? self.nullptr
+        notEq: Int? = nil
+    ) -> NotEq {
+        return NotEq(
+            notEq: notEq ?? self.notEq
         )
     }
 
@@ -11464,20 +11464,20 @@ extension Nullptr {
 // 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: - Number
-struct Number: Codable, Equatable {
-    let number: Int
+// MARK: - NSErrorClass
+struct NSErrorClass: Codable, Equatable {
+    let nsError: Int
 
     enum CodingKeys: String, CodingKey {
-        case number = "number"
+        case nsError = "NSError"
     }
 }
 
-// MARK: Number convenience initializers and mutators
+// MARK: NSErrorClass convenience initializers and mutators
 
-extension Number {
+extension NSErrorClass {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Number.self, from: data)
+        self = try newJSONDecoder().decode(NSErrorClass.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11492,10 +11492,10 @@ extension Number {
     }
 
     func with(
-        number: Int? = nil
-    ) -> Number {
-        return Number(
-            number: number ?? self.number
+        nsError: Int? = nil
+    ) -> NSErrorClass {
+        return NSErrorClass(
+            nsError: nsError ?? self.nsError
         )
     }
 
@@ -11514,20 +11514,20 @@ extension Number {
 // 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: - NoneClass
-struct NoneClass: Codable, Equatable {
-    let none: Int
+// MARK: - NSObject
+struct NSObject: Codable, Equatable {
+    let nsObject: Int
 
     enum CodingKeys: String, CodingKey {
-        case none = "none"
+        case nsObject = "NSObject"
     }
 }
 
-// MARK: NoneClass convenience initializers and mutators
+// MARK: NSObject convenience initializers and mutators
 
-extension NoneClass {
+extension NSObject {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(NoneClass.self, from: data)
+        self = try newJSONDecoder().decode(NSObject.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11542,10 +11542,10 @@ extension NoneClass {
     }
 
     func with(
-        none: Int? = nil
-    ) -> NoneClass {
-        return NoneClass(
-            none: none ?? self.none
+        nsObject: Int? = nil
+    ) -> NSObject {
+        return NSObject(
+            nsObject: nsObject ?? self.nsObject
         )
     }
 
@@ -11564,20 +11564,20 @@ extension NoneClass {
 // 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: - Nonmutating
-struct Nonmutating: Codable, Equatable {
-    let nonmutatingNonmutating: Int
+// MARK: - NSString
+struct NSString: Codable, Equatable {
+    let nsString: Int
 
     enum CodingKeys: String, CodingKey {
-        case nonmutatingNonmutating = "nonmutating"
+        case nsString = "NSString"
     }
 }
 
-// MARK: Nonmutating convenience initializers and mutators
+// MARK: NSString convenience initializers and mutators
 
-extension Nonmutating {
+extension NSString {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Nonmutating.self, from: data)
+        self = try newJSONDecoder().decode(NSString.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11592,10 +11592,10 @@ extension Nonmutating {
     }
 
     func with(
-        nonmutatingNonmutating: Int? = nil
-    ) -> Nonmutating {
-        return Nonmutating(
-            nonmutatingNonmutating: nonmutatingNonmutating ?? self.nonmutatingNonmutating
+        nsString: Int? = nil
+    ) -> NSString {
+        return NSString(
+            nsString: nsString ?? self.nsString
         )
     }
 
@@ -11614,20 +11614,20 @@ extension Nonmutating {
 // 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: - NullClass
-struct NullClass: Codable, Equatable {
+// MARK: - Null
+struct Null: Codable, Equatable {
     let null: Int
 
     enum CodingKeys: String, CodingKey {
-        case null = "null"
+        case null = "NULL"
     }
 }
 
-// MARK: NullClass convenience initializers and mutators
+// MARK: Null convenience initializers and mutators
 
-extension NullClass {
+extension Null {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(NullClass.self, from: data)
+        self = try newJSONDecoder().decode(Null.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11643,8 +11643,8 @@ extension NullClass {
 
     func with(
         null: Int? = nil
-    ) -> NullClass {
-        return NullClass(
+    ) -> Null {
+        return Null(
             null: null ?? self.null
         )
     }
@@ -11664,20 +11664,20 @@ extension NullClass {
 // 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: - Open
-struct Open: Codable, Equatable {
-    let openOpen: Int
+// MARK: - NullNode
+struct NullNode: Codable, Equatable {
+    let nullNode: Int
 
     enum CodingKeys: String, CodingKey {
-        case openOpen = "open"
+        case nullNode = "NullNode"
     }
 }
 
-// MARK: Open convenience initializers and mutators
+// MARK: NullNode convenience initializers and mutators
 
-extension Open {
+extension NullNode {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Open.self, from: data)
+        self = try newJSONDecoder().decode(NullNode.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11692,10 +11692,10 @@ extension Open {
     }
 
     func with(
-        openOpen: Int? = nil
-    ) -> Open {
-        return Open(
-            openOpen: openOpen ?? self.openOpen
+        nullNode: Int? = nil
+    ) -> NullNode {
+        return NullNode(
+            nullNode: nullNode ?? self.nullNode
         )
     }
 
@@ -11714,20 +11714,20 @@ extension Open {
 // 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: - Operator
-struct Operator: Codable, Equatable {
-    let operatorOperator: Int
+// MARK: - Nullptr
+struct Nullptr: Codable, Equatable {
+    let nullptr: Int
 
     enum CodingKeys: String, CodingKey {
-        case operatorOperator = "operator"
+        case nullptr = "nullptr"
     }
 }
 
-// MARK: Operator convenience initializers and mutators
+// MARK: Nullptr convenience initializers and mutators
 
-extension Operator {
+extension Nullptr {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Operator.self, from: data)
+        self = try newJSONDecoder().decode(Nullptr.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11742,10 +11742,10 @@ extension Operator {
     }
 
     func with(
-        operatorOperator: Int? = nil
-    ) -> Operator {
-        return Operator(
-            operatorOperator: operatorOperator ?? self.operatorOperator
+        nullptr: Int? = nil
+    ) -> Nullptr {
+        return Nullptr(
+            nullptr: nullptr ?? self.nullptr
         )
     }
 
@@ -11764,20 +11764,20 @@ extension Operator {
 // 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: - Optional
-struct Optional: Codable, Equatable {
-    let optionalOptional: Int
+// MARK: - Number
+struct Number: Codable, Equatable {
+    let number: Int
 
     enum CodingKeys: String, CodingKey {
-        case optionalOptional = "optional"
+        case number = "number"
     }
 }
 
-// MARK: Optional convenience initializers and mutators
+// MARK: Number convenience initializers and mutators
 
-extension Optional {
+extension Number {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Optional.self, from: data)
+        self = try newJSONDecoder().decode(Number.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11792,10 +11792,10 @@ extension Optional {
     }
 
     func with(
-        optionalOptional: Int? = nil
-    ) -> Optional {
-        return Optional(
-            optionalOptional: optionalOptional ?? self.optionalOptional
+        number: Int? = nil
+    ) -> Number {
+        return Number(
+            number: number ?? self.number
         )
     }
 
@@ -11814,20 +11814,20 @@ extension Optional {
 // 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: - Override
-struct Override: Codable, Equatable {
-    let overrideOverride: Int
+// MARK: - Nil
+struct Nil: Codable, Equatable {
+    let nilNil: Int
 
     enum CodingKeys: String, CodingKey {
-        case overrideOverride = "override"
+        case nilNil = "nil"
     }
 }
 
-// MARK: Override convenience initializers and mutators
+// MARK: Nil convenience initializers and mutators
 
-extension Override {
+extension Nil {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Override.self, from: data)
+        self = try newJSONDecoder().decode(Nil.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11842,10 +11842,10 @@ extension Override {
     }
 
     func with(
-        overrideOverride: Int? = nil
-    ) -> Override {
-        return Override(
-            overrideOverride: overrideOverride ?? self.overrideOverride
+        nilNil: Int? = nil
+    ) -> Nil {
+        return Nil(
+            nilNil: nilNil ?? self.nilNil
         )
     }
 
@@ -11864,20 +11864,20 @@ extension Override {
 // 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: - Postfix
-struct Postfix: Codable, Equatable {
-    let postfixPostfix: Int
+// MARK: - NoneClass
+struct NoneClass: Codable, Equatable {
+    let none: Int
 
     enum CodingKeys: String, CodingKey {
-        case postfixPostfix = "postfix"
+        case none = "none"
     }
 }
 
-// MARK: Postfix convenience initializers and mutators
+// MARK: NoneClass convenience initializers and mutators
 
-extension Postfix {
+extension NoneClass {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Postfix.self, from: data)
+        self = try newJSONDecoder().decode(NoneClass.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11892,10 +11892,10 @@ extension Postfix {
     }
 
     func with(
-        postfixPostfix: Int? = nil
-    ) -> Postfix {
-        return Postfix(
-            postfixPostfix: postfixPostfix ?? self.postfixPostfix
+        none: Int? = nil
+    ) -> NoneClass {
+        return NoneClass(
+            none: none ?? self.none
         )
     }
 
@@ -11914,20 +11914,20 @@ extension Postfix {
 // 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: - Precedence
-struct Precedence: Codable, Equatable {
-    let precedencePrecedence: Int
+// MARK: - Nonmutating
+struct Nonmutating: Codable, Equatable {
+    let nonmutatingNonmutating: Int
 
     enum CodingKeys: String, CodingKey {
-        case precedencePrecedence = "precedence"
+        case nonmutatingNonmutating = "nonmutating"
     }
 }
 
-// MARK: Precedence convenience initializers and mutators
+// MARK: Nonmutating convenience initializers and mutators
 
-extension Precedence {
+extension Nonmutating {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Precedence.self, from: data)
+        self = try newJSONDecoder().decode(Nonmutating.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11942,10 +11942,10 @@ extension Precedence {
     }
 
     func with(
-        precedencePrecedence: Int? = nil
-    ) -> Precedence {
-        return Precedence(
-            precedencePrecedence: precedencePrecedence ?? self.precedencePrecedence
+        nonmutatingNonmutating: Int? = nil
+    ) -> Nonmutating {
+        return Nonmutating(
+            nonmutatingNonmutating: nonmutatingNonmutating ?? self.nonmutatingNonmutating
         )
     }
 
@@ -11964,20 +11964,20 @@ extension Precedence {
 // 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: - Prefix
-struct Prefix: Codable, Equatable {
-    let prefixPrefix: Int
+// MARK: - NullClass
+struct NullClass: Codable, Equatable {
+    let null: Int
 
     enum CodingKeys: String, CodingKey {
-        case prefixPrefix = "prefix"
+        case null = "null"
     }
 }
 
-// MARK: Prefix convenience initializers and mutators
+// MARK: NullClass convenience initializers and mutators
 
-extension Prefix {
+extension NullClass {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Prefix.self, from: data)
+        self = try newJSONDecoder().decode(NullClass.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11992,10 +11992,10 @@ extension Prefix {
     }
 
     func with(
-        prefixPrefix: Int? = nil
-    ) -> Prefix {
-        return Prefix(
-            prefixPrefix: prefixPrefix ?? self.prefixPrefix
+        null: Int? = nil
+    ) -> NullClass {
+        return NullClass(
+            null: null ?? self.null
         )
     }
 
@@ -12014,20 +12014,20 @@ extension Prefix {
 // 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: - Private
-struct Private: Codable, Equatable {
-    let privatePrivate: Int
+// MARK: - Open
+struct Open: Codable, Equatable {
+    let openOpen: Int
 
     enum CodingKeys: String, CodingKey {
-        case privatePrivate = "private"
+        case openOpen = "open"
     }
 }
 
-// MARK: Private convenience initializers and mutators
+// MARK: Open convenience initializers and mutators
 
-extension Private {
+extension Open {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Private.self, from: data)
+        self = try newJSONDecoder().decode(Open.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12042,10 +12042,10 @@ extension Private {
     }
 
     func with(
-        privatePrivate: Int? = nil
-    ) -> Private {
-        return Private(
-            privatePrivate: privatePrivate ?? self.privatePrivate
+        openOpen: Int? = nil
+    ) -> Open {
+        return Open(
+            openOpen: openOpen ?? self.openOpen
         )
     }
 
@@ -12064,20 +12064,20 @@ extension Private {
 // 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: - ProtocolClass
-struct ProtocolClass: Codable, Equatable {
-    let protocolProtocol: Int
+// MARK: - Operator
+struct Operator: Codable, Equatable {
+    let operatorOperator: Int
 
     enum CodingKeys: String, CodingKey {
-        case protocolProtocol = "Protocol"
+        case operatorOperator = "operator"
     }
 }
 
-// MARK: ProtocolClass convenience initializers and mutators
+// MARK: Operator convenience initializers and mutators
 
-extension ProtocolClass {
+extension Operator {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(ProtocolClass.self, from: data)
+        self = try newJSONDecoder().decode(Operator.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12092,10 +12092,10 @@ extension ProtocolClass {
     }
 
     func with(
-        protocolProtocol: Int? = nil
-    ) -> ProtocolClass {
-        return ProtocolClass(
-            protocolProtocol: protocolProtocol ?? self.protocolProtocol
+        operatorOperator: Int? = nil
+    ) -> Operator {
+        return Operator(
+            operatorOperator: operatorOperator ?? self.operatorOperator
         )
     }
 
@@ -12114,20 +12114,20 @@ extension ProtocolClass {
 // 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: - Public
-struct Public: Codable, Equatable {
-    let publicPublic: Int
+// MARK: - Optional
+struct Optional: Codable, Equatable {
+    let optionalOptional: Int
 
     enum CodingKeys: String, CodingKey {
-        case publicPublic = "public"
+        case optionalOptional = "optional"
     }
 }
 
-// MARK: Public convenience initializers and mutators
+// MARK: Optional convenience initializers and mutators
 
-extension Public {
+extension Optional {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Public.self, from: data)
+        self = try newJSONDecoder().decode(Optional.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12142,10 +12142,10 @@ extension Public {
     }
 
     func with(
-        publicPublic: Int? = nil
-    ) -> Public {
-        return Public(
-            publicPublic: publicPublic ?? self.publicPublic
+        optionalOptional: Int? = nil
+    ) -> Optional {
+        return Optional(
+            optionalOptional: optionalOptional ?? self.optionalOptional
         )
     }
 
@@ -12164,20 +12164,20 @@ extension Public {
 // 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: - Repeat
-struct Repeat: Codable, Equatable {
-    let repeatRepeat: Int
+// MARK: - Override
+struct Override: Codable, Equatable {
+    let overrideOverride: Int
 
     enum CodingKeys: String, CodingKey {
-        case repeatRepeat = "repeat"
+        case overrideOverride = "override"
     }
 }
 
-// MARK: Repeat convenience initializers and mutators
+// MARK: Override convenience initializers and mutators
 
-extension Repeat {
+extension Override {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Repeat.self, from: data)
+        self = try newJSONDecoder().decode(Override.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12192,10 +12192,10 @@ extension Repeat {
     }
 
     func with(
-        repeatRepeat: Int? = nil
-    ) -> Repeat {
-        return Repeat(
-            repeatRepeat: repeatRepeat ?? self.repeatRepeat
+        overrideOverride: Int? = nil
+    ) -> Override {
+        return Override(
+            overrideOverride: overrideOverride ?? self.overrideOverride
         )
     }
 
@@ -12214,20 +12214,20 @@ extension Repeat {
 // 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: - Required
-struct Required: Codable, Equatable {
-    let requiredRequired: Int
+// MARK: - Postfix
+struct Postfix: Codable, Equatable {
+    let postfixPostfix: Int
 
     enum CodingKeys: String, CodingKey {
-        case requiredRequired = "required"
+        case postfixPostfix = "postfix"
     }
 }
 
-// MARK: Required convenience initializers and mutators
+// MARK: Postfix convenience initializers and mutators
 
-extension Required {
+extension Postfix {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Required.self, from: data)
+        self = try newJSONDecoder().decode(Postfix.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12242,10 +12242,10 @@ extension Required {
     }
 
     func with(
-        requiredRequired: Int? = nil
-    ) -> Required {
-        return Required(
-            requiredRequired: requiredRequired ?? self.requiredRequired
+        postfixPostfix: Int? = nil
+    ) -> Postfix {
+        return Postfix(
+            postfixPostfix: postfixPostfix ?? self.postfixPostfix
         )
     }
 
@@ -12264,20 +12264,20 @@ extension Required {
 // 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: - Rethrows
-struct Rethrows: Codable, Equatable {
-    let rethrowsRethrows: Int
+// MARK: - Precedence
+struct Precedence: Codable, Equatable {
+    let precedencePrecedence: Int
 
     enum CodingKeys: String, CodingKey {
-        case rethrowsRethrows = "rethrows"
+        case precedencePrecedence = "precedence"
     }
 }
 
-// MARK: Rethrows convenience initializers and mutators
+// MARK: Precedence convenience initializers and mutators
 
-extension Rethrows {
+extension Precedence {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Rethrows.self, from: data)
+        self = try newJSONDecoder().decode(Precedence.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12292,10 +12292,10 @@ extension Rethrows {
     }
 
     func with(
-        rethrowsRethrows: Int? = nil
-    ) -> Rethrows {
-        return Rethrows(
-            rethrowsRethrows: rethrowsRethrows ?? self.rethrowsRethrows
+        precedencePrecedence: Int? = nil
+    ) -> Precedence {
+        return Precedence(
+            precedencePrecedence: precedencePrecedence ?? self.precedencePrecedence
         )
     }
 
@@ -12314,20 +12314,20 @@ extension Rethrows {
 // 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: - Return
-struct Return: Codable, Equatable {
-    let returnReturn: Int
+// MARK: - Prefix
+struct Prefix: Codable, Equatable {
+    let prefixPrefix: Int
 
     enum CodingKeys: String, CodingKey {
-        case returnReturn = "return"
+        case prefixPrefix = "prefix"
     }
 }
 
-// MARK: Return convenience initializers and mutators
+// MARK: Prefix convenience initializers and mutators
 
-extension Return {
+extension Prefix {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Return.self, from: data)
+        self = try newJSONDecoder().decode(Prefix.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12342,10 +12342,10 @@ extension Return {
     }
 
     func with(
-        returnReturn: Int? = nil
-    ) -> Return {
-        return Return(
-            returnReturn: returnReturn ?? self.returnReturn
+        prefixPrefix: Int? = nil
+    ) -> Prefix {
+        return Prefix(
+            prefixPrefix: prefixPrefix ?? self.prefixPrefix
         )
     }
 
@@ -12364,20 +12364,20 @@ extension Return {
 // 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: - Right
-struct Right: Codable, Equatable {
-    let rightRight: Int
+// MARK: - Private
+struct Private: Codable, Equatable {
+    let privatePrivate: Int
 
     enum CodingKeys: String, CodingKey {
-        case rightRight = "right"
+        case privatePrivate = "private"
     }
 }
 
-// MARK: Right convenience initializers and mutators
+// MARK: Private convenience initializers and mutators
 
-extension Right {
+extension Private {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Right.self, from: data)
+        self = try newJSONDecoder().decode(Private.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12392,10 +12392,10 @@ extension Right {
     }
 
     func with(
-        rightRight: Int? = nil
-    ) -> Right {
-        return Right(
-            rightRight: rightRight ?? self.rightRight
+        privatePrivate: Int? = nil
+    ) -> Private {
+        return Private(
+            privatePrivate: privatePrivate ?? self.privatePrivate
         )
     }
 
@@ -12414,20 +12414,20 @@ extension Right {
 // 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: - Object
-struct Object: Codable, Equatable {
-    let object: Int
+// MARK: - ProtocolClass
+struct ProtocolClass: Codable, Equatable {
+    let protocolProtocol: Int
 
     enum CodingKeys: String, CodingKey {
-        case object = "object"
+        case protocolProtocol = "Protocol"
     }
 }
 
-// MARK: Object convenience initializers and mutators
+// MARK: ProtocolClass convenience initializers and mutators
 
-extension Object {
+extension ProtocolClass {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Object.self, from: data)
+        self = try newJSONDecoder().decode(ProtocolClass.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12442,10 +12442,10 @@ extension Object {
     }
 
     func with(
-        object: Int? = nil
-    ) -> Object {
-        return Object(
-            object: object ?? self.object
+        protocolProtocol: Int? = nil
+    ) -> ProtocolClass {
+        return ProtocolClass(
+            protocolProtocol: protocolProtocol ?? self.protocolProtocol
         )
     }
 
@@ -12464,20 +12464,20 @@ extension Object {
 // 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: - ObjectMapper
-struct ObjectMapper: Codable, Equatable {
-    let objectMapper: Int
+// MARK: - Public
+struct Public: Codable, Equatable {
+    let publicPublic: Int
 
     enum CodingKeys: String, CodingKey {
-        case objectMapper = "ObjectMapper"
+        case publicPublic = "public"
     }
 }
 
-// MARK: ObjectMapper convenience initializers and mutators
+// MARK: Public convenience initializers and mutators
 
-extension ObjectMapper {
+extension Public {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(ObjectMapper.self, from: data)
+        self = try newJSONDecoder().decode(Public.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12492,10 +12492,10 @@ extension ObjectMapper {
     }
 
     func with(
-        objectMapper: Int? = nil
-    ) -> ObjectMapper {
-        return ObjectMapper(
-            objectMapper: objectMapper ?? self.objectMapper
+        publicPublic: Int? = nil
+    ) -> Public {
+        return Public(
+            publicPublic: publicPublic ?? self.publicPublic
         )
     }
 
@@ -12514,20 +12514,20 @@ extension ObjectMapper {
 // 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: - Of
-struct Of: Codable, Equatable {
-    let of: Int
+// MARK: - Repeat
+struct Repeat: Codable, Equatable {
+    let repeatRepeat: Int
 
     enum CodingKeys: String, CodingKey {
-        case of = "of"
+        case repeatRepeat = "repeat"
     }
 }
 
-// MARK: Of convenience initializers and mutators
+// MARK: Repeat convenience initializers and mutators
 
-extension Of {
+extension Repeat {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Of.self, from: data)
+        self = try newJSONDecoder().decode(Repeat.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12542,10 +12542,10 @@ extension Of {
     }
 
     func with(
-        of: Int? = nil
-    ) -> Of {
-        return Of(
-            of: of ?? self.of
+        repeatRepeat: Int? = nil
+    ) -> Repeat {
+        return Repeat(
+            repeatRepeat: repeatRepeat ?? self.repeatRepeat
         )
     }
 
@@ -12564,20 +12564,20 @@ extension Of {
 // 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: - Oneway
-struct Oneway: Codable, Equatable {
-    let oneway: Int
+// MARK: - Required
+struct Required: Codable, Equatable {
+    let requiredRequired: Int
 
     enum CodingKeys: String, CodingKey {
-        case oneway = "oneway"
+        case requiredRequired = "required"
     }
 }
 
-// MARK: Oneway convenience initializers and mutators
+// MARK: Required convenience initializers and mutators
 
-extension Oneway {
+extension Required {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Oneway.self, from: data)
+        self = try newJSONDecoder().decode(Required.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12592,10 +12592,10 @@ extension Oneway {
     }
 
     func with(
-        oneway: Int? = nil
-    ) -> Oneway {
-        return Oneway(
-            oneway: oneway ?? self.oneway
+        requiredRequired: Int? = nil
+    ) -> Required {
+        return Required(
+            requiredRequired: requiredRequired ?? self.requiredRequired
         )
     }
 
@@ -12614,20 +12614,20 @@ extension Oneway {
 // 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: - Or
-struct Or: Codable, Equatable {
-    let or: Int
+// MARK: - Rethrows
+struct Rethrows: Codable, Equatable {
+    let rethrowsRethrows: Int
 
     enum CodingKeys: String, CodingKey {
-        case or = "or"
+        case rethrowsRethrows = "rethrows"
     }
 }
 
-// MARK: Or convenience initializers and mutators
+// MARK: Rethrows convenience initializers and mutators
 
-extension Or {
+extension Rethrows {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Or.self, from: data)
+        self = try newJSONDecoder().decode(Rethrows.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12642,10 +12642,10 @@ extension Or {
     }
 
     func with(
-        or: Int? = nil
-    ) -> Or {
-        return Or(
-            or: or ?? self.or
+        rethrowsRethrows: Int? = nil
+    ) -> Rethrows {
+        return Rethrows(
+            rethrowsRethrows: rethrowsRethrows ?? self.rethrowsRethrows
         )
     }
 
@@ -12664,20 +12664,20 @@ extension Or {
 // 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: - OrEq
-struct OrEq: Codable, Equatable {
-    let orEq: Int
+// MARK: - Object
+struct Object: Codable, Equatable {
+    let object: Int
 
     enum CodingKeys: String, CodingKey {
-        case orEq = "or_eq"
+        case object = "object"
     }
 }
 
-// MARK: OrEq convenience initializers and mutators
+// MARK: Object convenience initializers and mutators
 
-extension OrEq {
+extension Object {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(OrEq.self, from: data)
+        self = try newJSONDecoder().decode(Object.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12692,10 +12692,10 @@ extension OrEq {
     }
 
     func with(
-        orEq: Int? = nil
-    ) -> OrEq {
-        return OrEq(
-            orEq: orEq ?? self.orEq
+        object: Int? = nil
+    ) -> Object {
+        return Object(
+            object: object ?? self.object
         )
     }
 
@@ -12714,20 +12714,20 @@ extension OrEq {
 // 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: - Out
-struct Out: Codable, Equatable {
-    let out: Int
+// MARK: - ObjectMapper
+struct ObjectMapper: Codable, Equatable {
+    let objectMapper: Int
 
     enum CodingKeys: String, CodingKey {
-        case out = "out"
+        case objectMapper = "ObjectMapper"
     }
 }
 
-// MARK: Out convenience initializers and mutators
+// MARK: ObjectMapper convenience initializers and mutators
 
-extension Out {
+extension ObjectMapper {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Out.self, from: data)
+        self = try newJSONDecoder().decode(ObjectMapper.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12742,10 +12742,10 @@ extension Out {
     }
 
     func with(
-        out: Int? = nil
-    ) -> Out {
-        return Out(
-            out: out ?? self.out
+        objectMapper: Int? = nil
+    ) -> ObjectMapper {
+        return ObjectMapper(
+            objectMapper: objectMapper ?? self.objectMapper
         )
     }
 
@@ -12764,20 +12764,20 @@ extension Out {
 // 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: - Package
-struct Package: Codable, Equatable {
-    let package: Int
+// MARK: - ObjectNode
+struct ObjectNode: Codable, Equatable {
+    let objectNode: Int
 
     enum CodingKeys: String, CodingKey {
-        case package = "package"
+        case objectNode = "ObjectNode"
     }
 }
 
-// MARK: Package convenience initializers and mutators
+// MARK: ObjectNode convenience initializers and mutators
 
-extension Package {
+extension ObjectNode {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Package.self, from: data)
+        self = try newJSONDecoder().decode(ObjectNode.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12792,10 +12792,10 @@ extension Package {
     }
 
     func with(
-        package: Int? = nil
-    ) -> Package {
-        return Package(
-            package: package ?? self.package
+        objectNode: Int? = nil
+    ) -> ObjectNode {
+        return ObjectNode(
+            objectNode: objectNode ?? self.objectNode
         )
     }
 
@@ -12814,20 +12814,20 @@ extension Package {
 // 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: - Params
-struct Params: Codable, Equatable {
-    let params: Int
+// MARK: - Of
+struct Of: Codable, Equatable {
+    let of: Int
 
     enum CodingKeys: String, CodingKey {
-        case params = "params"
+        case of = "of"
     }
 }
 
-// MARK: Params convenience initializers and mutators
+// MARK: Of convenience initializers and mutators
 
-extension Params {
+extension Of {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Params.self, from: data)
+        self = try newJSONDecoder().decode(Of.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12842,10 +12842,10 @@ extension Params {
     }
 
     func with(
-        params: Int? = nil
-    ) -> Params {
-        return Params(
-            params: params ?? self.params
+        of: Int? = nil
+    ) -> Of {
+        return Of(
+            of: of ?? self.of
         )
     }
 
@@ -12864,20 +12864,20 @@ extension Params {
 // 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: - Pass
-struct Pass: Codable, Equatable {
-    let pass: Int
+// MARK: - Oneway
+struct Oneway: Codable, Equatable {
+    let oneway: Int
 
     enum CodingKeys: String, CodingKey {
-        case pass = "pass"
+        case oneway = "oneway"
     }
 }
 
-// MARK: Pass convenience initializers and mutators
+// MARK: Oneway convenience initializers and mutators
 
-extension Pass {
+extension Oneway {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Pass.self, from: data)
+        self = try newJSONDecoder().decode(Oneway.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12892,10 +12892,10 @@ extension Pass {
     }
 
     func with(
-        pass: Int? = nil
-    ) -> Pass {
-        return Pass(
-            pass: pass ?? self.pass
+        oneway: Int? = nil
+    ) -> Oneway {
+        return Oneway(
+            oneway: oneway ?? self.oneway
         )
     }
 
@@ -12914,20 +12914,20 @@ extension Pass {
 // 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: - Port
-struct Port: Codable, Equatable {
-    let port: Int
+// MARK: - Or
+struct Or: Codable, Equatable {
+    let or: Int
 
     enum CodingKeys: String, CodingKey {
-        case port = "port"
+        case or = "or"
     }
 }
 
-// MARK: Port convenience initializers and mutators
+// MARK: Or convenience initializers and mutators
 
-extension Port {
+extension Or {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Port.self, from: data)
+        self = try newJSONDecoder().decode(Or.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12942,10 +12942,10 @@ extension Port {
     }
 
     func with(
-        port: Int? = nil
-    ) -> Port {
-        return Port(
-            port: port ?? self.port
+        or: Int? = nil
+    ) -> Or {
+        return Or(
+            or: or ?? self.or
         )
     }
 
@@ -12964,20 +12964,20 @@ extension Port {
 // 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: - Print
-struct Print: Codable, Equatable {
-    let print: Int
+// MARK: - OrEq
+struct OrEq: Codable, Equatable {
+    let orEq: Int
 
     enum CodingKeys: String, CodingKey {
-        case print = "print"
+        case orEq = "or_eq"
     }
 }
 
-// MARK: Print convenience initializers and mutators
+// MARK: OrEq convenience initializers and mutators
 
-extension Print {
+extension OrEq {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Print.self, from: data)
+        self = try newJSONDecoder().decode(OrEq.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -12992,10 +12992,10 @@ extension Print {
     }
 
     func with(
-        print: Int? = nil
-    ) -> Print {
-        return Print(
-            print: print ?? self.print
+        orEq: Int? = nil
+    ) -> OrEq {
+        return OrEq(
+            orEq: orEq ?? self.orEq
         )
     }
 
@@ -13014,20 +13014,20 @@ extension Print {
 // 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: - PrintMembers
-struct PrintMembers: Codable, Equatable {
-    let printMembers: Int
+// MARK: - Out
+struct Out: Codable, Equatable {
+    let out: Int
 
     enum CodingKeys: String, CodingKey {
-        case printMembers = "printMembers"
+        case out = "out"
     }
 }
 
-// MARK: PrintMembers convenience initializers and mutators
+// MARK: Out convenience initializers and mutators
 
-extension PrintMembers {
+extension Out {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(PrintMembers.self, from: data)
+        self = try newJSONDecoder().decode(Out.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13042,10 +13042,10 @@ extension PrintMembers {
     }
 
     func with(
-        printMembers: Int? = nil
-    ) -> PrintMembers {
-        return PrintMembers(
-            printMembers: printMembers ?? self.printMembers
+        out: Int? = nil
+    ) -> Out {
+        return Out(
+            out: out ?? self.out
         )
     }
 
@@ -13064,20 +13064,20 @@ extension PrintMembers {
 // 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: - Printf
-struct Printf: Codable, Equatable {
-    let printf: Int
+// MARK: - Package
+struct Package: Codable, Equatable {
+    let package: Int
 
     enum CodingKeys: String, CodingKey {
-        case printf = "printf"
+        case package = "package"
     }
 }
 
-// MARK: Printf convenience initializers and mutators
+// MARK: Package convenience initializers and mutators
 
-extension Printf {
+extension Package {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Printf.self, from: data)
+        self = try newJSONDecoder().decode(Package.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13092,10 +13092,10 @@ extension Printf {
     }
 
     func with(
-        printf: Int? = nil
-    ) -> Printf {
-        return Printf(
-            printf: printf ?? self.printf
+        package: Int? = nil
+    ) -> Package {
+        return Package(
+            package: package ?? self.package
         )
     }
 
@@ -13114,20 +13114,20 @@ extension Printf {
 // 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: - Protected
-struct Protected: Codable, Equatable {
-    let protected: Int
+// MARK: - Params
+struct Params: Codable, Equatable {
+    let params: Int
 
     enum CodingKeys: String, CodingKey {
-        case protected = "protected"
+        case params = "params"
     }
 }
 
-// MARK: Protected convenience initializers and mutators
+// MARK: Params convenience initializers and mutators
 
-extension Protected {
+extension Params {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Protected.self, from: data)
+        self = try newJSONDecoder().decode(Params.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13142,10 +13142,10 @@ extension Protected {
     }
 
     func with(
-        protected: Int? = nil
-    ) -> Protected {
-        return Protected(
-            protected: protected ?? self.protected
+        params: Int? = nil
+    ) -> Params {
+        return Params(
+            params: params ?? self.params
         )
     }
 
@@ -13164,20 +13164,20 @@ extension Protected {
 // 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: - Obj4Protocol
-struct Obj4Protocol: Codable, Equatable {
-    let protocolProtocol: Int
+// MARK: - Pass
+struct Pass: Codable, Equatable {
+    let pass: Int
 
     enum CodingKeys: String, CodingKey {
-        case protocolProtocol = "protocol"
+        case pass = "pass"
     }
 }
 
-// MARK: Obj4Protocol convenience initializers and mutators
+// MARK: Pass convenience initializers and mutators
 
-extension Obj4Protocol {
+extension Pass {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Obj4Protocol.self, from: data)
+        self = try newJSONDecoder().decode(Pass.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13192,10 +13192,10 @@ extension Obj4Protocol {
     }
 
     func with(
-        protocolProtocol: Int? = nil
-    ) -> Obj4Protocol {
-        return Obj4Protocol(
-            protocolProtocol: protocolProtocol ?? self.protocolProtocol
+        pass: Int? = nil
+    ) -> Pass {
+        return Pass(
+            pass: pass ?? self.pass
         )
     }
 
@@ -13214,20 +13214,20 @@ extension Obj4Protocol {
 // 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: - Quicktype
-struct Quicktype: Codable, Equatable {
-    let quicktype: Int
+// MARK: - Port
+struct Port: Codable, Equatable {
+    let port: Int
 
     enum CodingKeys: String, CodingKey {
-        case quicktype = "quicktype"
+        case port = "port"
     }
 }
 
-// MARK: Quicktype convenience initializers and mutators
+// MARK: Port convenience initializers and mutators
 
-extension Quicktype {
+extension Port {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Quicktype.self, from: data)
+        self = try newJSONDecoder().decode(Port.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13242,10 +13242,10 @@ extension Quicktype {
     }
 
     func with(
-        quicktype: Int? = nil
-    ) -> Quicktype {
-        return Quicktype(
-            quicktype: quicktype ?? self.quicktype
+        port: Int? = nil
+    ) -> Port {
+        return Port(
+            port: port ?? self.port
         )
     }
 
@@ -13264,20 +13264,20 @@ extension Quicktype {
 // 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: - Raise
-struct Raise: Codable, Equatable {
-    let raise: Int
+// MARK: - Print
+struct Print: Codable, Equatable {
+    let print: Int
 
     enum CodingKeys: String, CodingKey {
-        case raise = "raise"
+        case print = "print"
     }
 }
 
-// MARK: Raise convenience initializers and mutators
+// MARK: Print convenience initializers and mutators
 
-extension Raise {
+extension Print {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Raise.self, from: data)
+        self = try newJSONDecoder().decode(Print.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13292,10 +13292,10 @@ extension Raise {
     }
 
     func with(
-        raise: Int? = nil
-    ) -> Raise {
-        return Raise(
-            raise: raise ?? self.raise
+        print: Int? = nil
+    ) -> Print {
+        return Print(
+            print: print ?? self.print
         )
     }
 
@@ -13314,20 +13314,20 @@ extension Raise {
 // 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: - Range
-struct Range: Codable, Equatable {
-    let range: Int
+// MARK: - PrintMembers
+struct PrintMembers: Codable, Equatable {
+    let printMembers: Int
 
     enum CodingKeys: String, CodingKey {
-        case range = "range"
+        case printMembers = "printMembers"
     }
 }
 
-// MARK: Range convenience initializers and mutators
+// MARK: PrintMembers convenience initializers and mutators
 
-extension Range {
+extension PrintMembers {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Range.self, from: data)
+        self = try newJSONDecoder().decode(PrintMembers.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13342,10 +13342,10 @@ extension Range {
     }
 
     func with(
-        range: Int? = nil
-    ) -> Range {
-        return Range(
-            range: range ?? self.range
+        printMembers: Int? = nil
+    ) -> PrintMembers {
+        return PrintMembers(
+            printMembers: printMembers ?? self.printMembers
         )
     }
 
@@ -13364,20 +13364,20 @@ extension Range {
 // 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: - Readonly
-struct Readonly: Codable, Equatable {
-    let readonly: Int
+// MARK: - Printf
+struct Printf: Codable, Equatable {
+    let printf: Int
 
     enum CodingKeys: String, CodingKey {
-        case readonly = "readonly"
+        case printf = "printf"
     }
 }
 
-// MARK: Readonly convenience initializers and mutators
+// MARK: Printf convenience initializers and mutators
 
-extension Readonly {
+extension Printf {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Readonly.self, from: data)
+        self = try newJSONDecoder().decode(Printf.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13392,10 +13392,10 @@ extension Readonly {
     }
 
     func with(
-        readonly: Int? = nil
-    ) -> Readonly {
-        return Readonly(
-            readonly: readonly ?? self.readonly
+        printf: Int? = nil
+    ) -> Printf {
+        return Printf(
+            printf: printf ?? self.printf
         )
     }
 
@@ -13414,20 +13414,20 @@ extension Readonly {
 // 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: - Ref
-struct Ref: Codable, Equatable {
-    let ref: Int
+// MARK: - Protected
+struct Protected: Codable, Equatable {
+    let protected: Int
 
     enum CodingKeys: String, CodingKey {
-        case ref = "ref"
+        case protected = "protected"
     }
 }
 
-// MARK: Ref convenience initializers and mutators
+// MARK: Protected convenience initializers and mutators
 
-extension Ref {
+extension Protected {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Ref.self, from: data)
+        self = try newJSONDecoder().decode(Protected.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13442,10 +13442,10 @@ extension Ref {
     }
 
     func with(
-        ref: Int? = nil
-    ) -> Ref {
-        return Ref(
-            ref: ref ?? self.ref
+        protected: Int? = nil
+    ) -> Protected {
+        return Protected(
+            protected: protected ?? self.protected
         )
     }
 
@@ -13464,20 +13464,20 @@ extension Ref {
 // 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: - RegExp
-struct RegExp: Codable, Equatable {
-    let regExp: UUID
+// MARK: - Obj4Protocol
+struct Obj4Protocol: Codable, Equatable {
+    let protocolProtocol: Int
 
     enum CodingKeys: String, CodingKey {
-        case regExp = "RegExp"
+        case protocolProtocol = "protocol"
     }
 }
 
-// MARK: RegExp convenience initializers and mutators
+// MARK: Obj4Protocol convenience initializers and mutators
 
-extension RegExp {
+extension Obj4Protocol {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(RegExp.self, from: data)
+        self = try newJSONDecoder().decode(Obj4Protocol.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13492,10 +13492,10 @@ extension RegExp {
     }
 
     func with(
-        regExp: UUID? = nil
-    ) -> RegExp {
-        return RegExp(
-            regExp: regExp ?? self.regExp
+        protocolProtocol: Int? = nil
+    ) -> Obj4Protocol {
+        return Obj4Protocol(
+            protocolProtocol: protocolProtocol ?? self.protocolProtocol
         )
     }
 
@@ -13514,20 +13514,20 @@ extension RegExp {
 // 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: - Register
-struct Register: Codable, Equatable {
-    let register: Int
+// MARK: - Quicktype
+struct Quicktype: Codable, Equatable {
+    let quicktype: Int
 
     enum CodingKeys: String, CodingKey {
-        case register = "register"
+        case quicktype = "quicktype"
     }
 }
 
-// MARK: Register convenience initializers and mutators
+// MARK: Quicktype convenience initializers and mutators
 
-extension Register {
+extension Quicktype {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Register.self, from: data)
+        self = try newJSONDecoder().decode(Quicktype.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13542,10 +13542,10 @@ extension Register {
     }
 
     func with(
-        register: Int? = nil
-    ) -> Register {
-        return Register(
-            register: register ?? self.register
+        quicktype: Int? = nil
+    ) -> Quicktype {
+        return Quicktype(
+            quicktype: quicktype ?? self.quicktype
         )
     }
 
@@ -13564,20 +13564,20 @@ extension Register {
 // 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: - ReinterpretCast
-struct ReinterpretCast: Codable, Equatable {
-    let reinterpretCast: Int
+// MARK: - Raise
+struct Raise: Codable, Equatable {
+    let raise: Int
 
     enum CodingKeys: String, CodingKey {
-        case reinterpretCast = "reinterpret_cast"
+        case raise = "raise"
     }
 }
 
-// MARK: ReinterpretCast convenience initializers and mutators
+// MARK: Raise convenience initializers and mutators
 
-extension ReinterpretCast {
+extension Raise {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(ReinterpretCast.self, from: data)
+        self = try newJSONDecoder().decode(Raise.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13592,10 +13592,10 @@ extension ReinterpretCast {
     }
 
     func with(
-        reinterpretCast: Int? = nil
-    ) -> ReinterpretCast {
-        return ReinterpretCast(
-            reinterpretCast: reinterpretCast ?? self.reinterpretCast
+        raise: Int? = nil
+    ) -> Raise {
+        return Raise(
+            raise: raise ?? self.raise
         )
     }
 
@@ -13614,20 +13614,20 @@ extension ReinterpretCast {
 // 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: - Require
-struct Require: Codable, Equatable {
-    let require: Int
+// MARK: - Range
+struct Range: Codable, Equatable {
+    let range: Int
 
     enum CodingKeys: String, CodingKey {
-        case require = "require"
+        case range = "range"
     }
 }
 
-// MARK: Require convenience initializers and mutators
+// MARK: Range convenience initializers and mutators
 
-extension Require {
+extension Range {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Require.self, from: data)
+        self = try newJSONDecoder().decode(Range.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13642,10 +13642,10 @@ extension Require {
     }
 
     func with(
-        require: Int? = nil
-    ) -> Require {
-        return Require(
-            require: require ?? self.require
+        range: Int? = nil
+    ) -> Range {
+        return Range(
+            range: range ?? self.range
         )
     }
 
@@ -13664,20 +13664,20 @@ extension Require {
 // 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: - Requires
-struct Requires: Codable, Equatable {
-    let requires: Int
+// MARK: - Readonly
+struct Readonly: Codable, Equatable {
+    let readonly: Int
 
     enum CodingKeys: String, CodingKey {
-        case requires = "requires"
+        case readonly = "readonly"
     }
 }
 
-// MARK: Requires convenience initializers and mutators
+// MARK: Readonly convenience initializers and mutators
 
-extension Requires {
+extension Readonly {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Requires.self, from: data)
+        self = try newJSONDecoder().decode(Readonly.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13692,10 +13692,10 @@ extension Requires {
     }
 
     func with(
-        requires: Int? = nil
-    ) -> Requires {
-        return Requires(
-            requires: requires ?? self.requires
+        readonly: Int? = nil
+    ) -> Readonly {
+        return Readonly(
+            readonly: readonly ?? self.readonly
         )
     }
 
@@ -13714,20 +13714,20 @@ extension Requires {
 // 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: - Restrict
-struct Restrict: Codable, Equatable {
-    let restrict: Int
+// MARK: - Ref
+struct Ref: Codable, Equatable {
+    let ref: Int
 
     enum CodingKeys: String, CodingKey {
-        case restrict = "restrict"
+        case ref = "ref"
     }
 }
 
-// MARK: Restrict convenience initializers and mutators
+// MARK: Ref convenience initializers and mutators
 
-extension Restrict {
+extension Ref {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Restrict.self, from: data)
+        self = try newJSONDecoder().decode(Ref.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13742,10 +13742,10 @@ extension Restrict {
     }
 
     func with(
-        restrict: Int? = nil
-    ) -> Restrict {
-        return Restrict(
-            restrict: restrict ?? self.restrict
+        ref: Int? = nil
+    ) -> Ref {
+        return Ref(
+            ref: ref ?? self.ref
         )
     }
 
@@ -13764,20 +13764,20 @@ extension Restrict {
 // 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: - Retain
-struct Retain: Codable, Equatable {
-    let retain: Int
+// MARK: - RegExp
+struct RegExp: Codable, Equatable {
+    let regExp: UUID
 
     enum CodingKeys: String, CodingKey {
-        case retain = "retain"
+        case regExp = "RegExp"
     }
 }
 
-// MARK: Retain convenience initializers and mutators
+// MARK: RegExp convenience initializers and mutators
 
-extension Retain {
+extension RegExp {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Retain.self, from: data)
+        self = try newJSONDecoder().decode(RegExp.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13792,12 +13792,12 @@ extension Retain {
     }
 
     func with(
-        retain: Int? = nil
-    ) -> Retain {
-        return Retain(
-            retain: retain ?? self.retain
-        )
-    }
+        regExp: UUID? = nil
+    ) -> RegExp {
+        return RegExp(
+            regExp: regExp ?? self.regExp
+        )
+    }
 
     func jsonData() throws -> Data {
         return try newJSONEncoder().encode(self)
@@ -13814,20 +13814,20 @@ extension Retain {
 // 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: - RuntimeType
-struct RuntimeType: Codable, Equatable {
-    let runtimeType: Int
+// MARK: - Register
+struct Register: Codable, Equatable {
+    let register: Int
 
     enum CodingKeys: String, CodingKey {
-        case runtimeType = "runtimeType"
+        case register = "register"
     }
 }
 
-// MARK: RuntimeType convenience initializers and mutators
+// MARK: Register convenience initializers and mutators
 
-extension RuntimeType {
+extension Register {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(RuntimeType.self, from: data)
+        self = try newJSONDecoder().decode(Register.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13842,10 +13842,10 @@ extension RuntimeType {
     }
 
     func with(
-        runtimeType: Int? = nil
-    ) -> RuntimeType {
-        return RuntimeType(
-            runtimeType: runtimeType ?? self.runtimeType
+        register: Int? = nil
+    ) -> Register {
+        return Register(
+            register: register ?? self.register
         )
     }
 
@@ -13864,20 +13864,20 @@ extension RuntimeType {
 // 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: - S
-struct S: Codable, Equatable {
-    let s: Int
+// MARK: - ReinterpretCast
+struct ReinterpretCast: Codable, Equatable {
+    let reinterpretCast: Int
 
     enum CodingKeys: String, CodingKey {
-        case s = "s"
+        case reinterpretCast = "reinterpret_cast"
     }
 }
 
-// MARK: S convenience initializers and mutators
+// MARK: ReinterpretCast convenience initializers and mutators
 
-extension S {
+extension ReinterpretCast {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(S.self, from: data)
+        self = try newJSONDecoder().decode(ReinterpretCast.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13892,10 +13892,10 @@ extension S {
     }
 
     func with(
-        s: Int? = nil
-    ) -> S {
-        return S(
-            s: s ?? self.s
+        reinterpretCast: Int? = nil
+    ) -> ReinterpretCast {
+        return ReinterpretCast(
+            reinterpretCast: reinterpretCast ?? self.reinterpretCast
         )
     }
 
@@ -13914,20 +13914,20 @@ extension S {
 // 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: - Sbyte
-struct Sbyte: Codable, Equatable {
-    let sbyte: Int
+// MARK: - Require
+struct Require: Codable, Equatable {
+    let require: Int
 
     enum CodingKeys: String, CodingKey {
-        case sbyte = "sbyte"
+        case require = "require"
     }
 }
 
-// MARK: Sbyte convenience initializers and mutators
+// MARK: Require convenience initializers and mutators
 
-extension Sbyte {
+extension Require {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Sbyte.self, from: data)
+        self = try newJSONDecoder().decode(Require.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13942,10 +13942,10 @@ extension Sbyte {
     }
 
     func with(
-        sbyte: Int? = nil
-    ) -> Sbyte {
-        return Sbyte(
-            sbyte: sbyte ?? self.sbyte
+        require: Int? = nil
+    ) -> Require {
+        return Require(
+            require: require ?? self.require
         )
     }
 
@@ -13964,20 +13964,20 @@ extension Sbyte {
 // 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: - Sealed
-struct Sealed: Codable, Equatable {
-    let sealed: Int
+// MARK: - Requires
+struct Requires: Codable, Equatable {
+    let requires: Int
 
     enum CodingKeys: String, CodingKey {
-        case sealed = "sealed"
+        case requires = "requires"
     }
 }
 
-// MARK: Sealed convenience initializers and mutators
+// MARK: Requires convenience initializers and mutators
 
-extension Sealed {
+extension Requires {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Sealed.self, from: data)
+        self = try newJSONDecoder().decode(Requires.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13992,10 +13992,10 @@ extension Sealed {
     }
 
     func with(
-        sealed: Int? = nil
-    ) -> Sealed {
-        return Sealed(
-            sealed: sealed ?? self.sealed
+        requires: Int? = nil
+    ) -> Requires {
+        return Requires(
+            requires: requires ?? self.requires
         )
     }
 
@@ -14014,20 +14014,20 @@ extension Sealed {
 // 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: - Sel
-struct Sel: Codable, Equatable {
-    let sel: Int
+// MARK: - Restrict
+struct Restrict: Codable, Equatable {
+    let restrict: Int
 
     enum CodingKeys: String, CodingKey {
-        case sel = "SEL"
+        case restrict = "restrict"
     }
 }
 
-// MARK: Sel convenience initializers and mutators
+// MARK: Restrict convenience initializers and mutators
 
-extension Sel {
+extension Restrict {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Sel.self, from: data)
+        self = try newJSONDecoder().decode(Restrict.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -14042,10 +14042,10 @@ extension Sel {
     }
 
     func with(
-        sel: Int? = nil
-    ) -> Sel {
-        return Sel(
-            sel: sel ?? self.sel
+        restrict: Int? = nil
+    ) -> Restrict {
+        return Restrict(
+            restrict: restrict ?? self.restrict
         )
     }
 
@@ -14064,20 +14064,20 @@ extension Sel {
 // 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: - Select
-struct Select: Codable, Equatable {
-    let select: Int
+// MARK: - Retain
+struct Retain: Codable, Equatable {
+    let retain: Int
 
     enum CodingKeys: String, CodingKey {
-        case select = "select"
+        case retain = "retain"
     }
 }
 
-// MARK: Select convenience initializers and mutators
+// MARK: Retain convenience initializers and mutators
 
-extension Select {
+extension Retain {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Select.self, from: data)
+        self = try newJSONDecoder().decode(Retain.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -14092,10 +14092,10 @@ extension Select {
     }
 
     func with(
-        select: Int? = nil
-    ) -> Select {
-        return Select(
-            select: select ?? self.select
+        retain: Int? = nil
+    ) -> Retain {
+        return Retain(
+            retain: retain ?? self.retain
         )
     }
 
@@ -14117,6 +14117,8 @@ extension Select {
 // MARK: - Obj5
 struct Obj5: Codable, Equatable {
     let dummy: Int
+    let obj5Return: Return
+    let obj5Right: Right
     let obj5Self: SelfClass
     let obj5Set: Set
     let obj5Static: Static
@@ -14130,11 +14132,16 @@ struct Obj5: Codable, Equatable {
     let obj5Try: Try
     let obj5Type: Obj5Type
     let obj5Typealias: Typealias
-    let obj5Unowned: Unowned
-    let obj5Var: Var
     let purpleSelf: Obj5Self
     let purpleTrue: TrueClass
+    let runtimeType: RuntimeType
+    let s: S
+    let sbyte: Sbyte
+    let sealed: Sealed
+    let sel: Sel
+    let select: Select
     let sendable: Sendable
+    let serializationFeature: SerializationFeature
     let serialize: Serialize
     let serializerProvider: SerializerProvider
     let short: Short
@@ -14153,6 +14160,7 @@ struct Obj5: Codable, Equatable {
     let synchronized: Synchronized
     let system: System
     let template: Template
+    let textNode: TextNode
     let then: Then
     let this: This
     let threadLocal: ThreadLocal
@@ -14173,17 +14181,11 @@ struct Obj5: Codable, Equatable {
     let unchecked: Unchecked
     let undefined: Undefined
     let union: Union
-    let unsafe: Unsafe
-    let unsigned: Unsigned
-    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 obj5Return = "return"
+        case obj5Right = "right"
         case obj5Self = "Self"
         case obj5Set = "set"
         case obj5Static = "static"
@@ -14197,11 +14199,16 @@ struct Obj5: Codable, Equatable {
         case obj5Try = "try"
         case obj5Type = "type"
         case obj5Typealias = "typealias"
-        case obj5Unowned = "unowned"
-        case obj5Var = "var"
         case purpleSelf = "self"
         case purpleTrue = "true"
+        case runtimeType = "runtimeType"
+        case s = "s"
+        case sbyte = "sbyte"
+        case sealed = "sealed"
+        case sel = "SEL"
+        case select = "select"
         case sendable = "Sendable"
+        case serializationFeature = "SerializationFeature"
         case serialize = "serialize"
         case serializerProvider = "SerializerProvider"
         case short = "short"
@@ -14220,6 +14227,7 @@ struct Obj5: Codable, Equatable {
         case synchronized = "synchronized"
         case system = "system"
         case template = "template"
+        case textNode = "TextNode"
         case then = "then"
         case this = "this"
         case threadLocal = "thread_local"
@@ -14240,14 +14248,6 @@ struct Obj5: Codable, Equatable {
         case unchecked = "unchecked"
         case undefined = "undefined"
         case union = "union"
-        case unsafe = "unsafe"
-        case unsigned = "unsigned"
-        case ushort = "ushort"
-        case using = "using"
-        case utf8JSONReader = "Utf8JsonReader"
-        case utf8JSONWriter = "Utf8JsonWriter"
-        case uuid = "UUID"
-        case virtual = "virtual"
     }
 }
 
@@ -14271,6 +14271,8 @@ extension Obj5 {
 
     func with(
         dummy: Int? = nil,
+        obj5Return: Return? = nil,
+        obj5Right: Right? = nil,
         obj5Self: SelfClass? = nil,
         obj5Set: Set? = nil,
         obj5Static: Static? = nil,
@@ -14284,11 +14286,16 @@ extension Obj5 {
         obj5Try: Try? = nil,
         obj5Type: Obj5Type? = nil,
         obj5Typealias: Typealias? = nil,
-        obj5Unowned: Unowned? = nil,
-        obj5Var: Var? = nil,
         purpleSelf: Obj5Self? = nil,
         purpleTrue: TrueClass? = nil,
+        runtimeType: RuntimeType? = nil,
+        s: S? = nil,
+        sbyte: Sbyte? = nil,
+        sealed: Sealed? = nil,
+        sel: Sel? = nil,
+        select: Select? = nil,
         sendable: Sendable? = nil,
+        serializationFeature: SerializationFeature? = nil,
         serialize: Serialize? = nil,
         serializerProvider: SerializerProvider? = nil,
         short: Short? = nil,
@@ -14307,6 +14314,7 @@ extension Obj5 {
         synchronized: Synchronized? = nil,
         system: System? = nil,
         template: Template? = nil,
+        textNode: TextNode? = nil,
         then: Then? = nil,
         this: This? = nil,
         threadLocal: ThreadLocal? = nil,
@@ -14326,18 +14334,12 @@ extension Obj5 {
         ulong: Ulong? = nil,
         unchecked: Unchecked? = nil,
         undefined: Undefined? = nil,
-        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
+        union: Union? = nil
     ) -> Obj5 {
         return Obj5(
             dummy: dummy ?? self.dummy,
+            obj5Return: obj5Return ?? self.obj5Return,
+            obj5Right: obj5Right ?? self.obj5Right,
             obj5Self: obj5Self ?? self.obj5Self,
             obj5Set: obj5Set ?? self.obj5Set,
             obj5Static: obj5Static ?? self.obj5Static,
@@ -14351,11 +14353,16 @@ extension Obj5 {
             obj5Try: obj5Try ?? self.obj5Try,
             obj5Type: obj5Type ?? self.obj5Type,
             obj5Typealias: obj5Typealias ?? self.obj5Typealias,
-            obj5Unowned: obj5Unowned ?? self.obj5Unowned,
-            obj5Var: obj5Var ?? self.obj5Var,
             purpleSelf: purpleSelf ?? self.purpleSelf,
             purpleTrue: purpleTrue ?? self.purpleTrue,
+            runtimeType: runtimeType ?? self.runtimeType,
+            s: s ?? self.s,
+            sbyte: sbyte ?? self.sbyte,
+            sealed: sealed ?? self.sealed,
+            sel: sel ?? self.sel,
+            select: select ?? self.select,
             sendable: sendable ?? self.sendable,
+            serializationFeature: serializationFeature ?? self.serializationFeature,
             serialize: serialize ?? self.serialize,
             serializerProvider: serializerProvider ?? self.serializerProvider,
             short: short ?? self.short,
@@ -14374,6 +14381,7 @@ extension Obj5 {
             synchronized: synchronized ?? self.synchronized,
             system: system ?? self.system,
             template: template ?? self.template,
+            textNode: textNode ?? self.textNode,
             then: then ?? self.then,
             this: this ?? self.this,
             threadLocal: threadLocal ?? self.threadLocal,
@@ -14393,15 +14401,7 @@ extension Obj5 {
             ulong: ulong ?? self.ulong,
             unchecked: unchecked ?? self.unchecked,
             undefined: undefined ?? self.undefined,
-            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
+            union: union ?? self.union
         )
     }
 
@@ -14420,20 +14420,20 @@ extension Obj5 {
 // 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: - SelfClass
-struct SelfClass: Codable, Equatable {
-    let selfSelf: Int
+// MARK: - Return
+struct Return: Codable, Equatable {
+    let returnReturn: Int
 
     enum CodingKeys: String, CodingKey {
-        case selfSelf = "Self"
+        case returnReturn = "return"
     }
 }
 
-// MARK: SelfClass convenience initializers and mutators
+// MARK: Return convenience initializers and mutators
 
-extension SelfClass {
+extension Return {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(SelfClass.self, from: data)
+        self = try newJSONDecoder().decode(Return.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -14448,10 +14448,10 @@ extension SelfClass {
     }
 
     func with(
-        selfSelf: Int? = nil
-    ) -> SelfClass {
-        return SelfClass(
-            selfSelf: selfSelf ?? self.selfSelf
+        returnReturn: Int? = nil
+    ) -> Return {
+        return Return(
+            returnReturn: returnReturn ?? self.returnReturn
         )
     }
 
@@ -14470,20 +14470,20 @@ extension SelfClass {
 // 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: - Set
-struct Set: Codable, Equatable {
-    let setSet: Int
+// MARK: - Right
+struct Right: Codable, Equatable {
+    let rightRight: Int
 
     enum CodingKeys: String, CodingKey {
-        case setSet = "set"
+        case rightRight = "right"
     }
 }
 
-// MARK: Set convenience initializers and mutators
+// MARK: Right convenience initializers and mutators
 
-extension Set {
+extension Right {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Set.self, from: data)
+        self = try newJSONDecoder().decode(Right.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -14498,10 +14498,10 @@ extension Set {
     }
 
     func with(
-        setSet: Int? = nil
-    ) -> Set {
-        return Set(
-            setSet: setSet ?? self.setSet
+        rightRight: Int? = nil
+    ) -> Right {
+        return Right(
+            rightRight: rightRight ?? self.rightRight
         )
     }
 
@@ -14520,20 +14520,20 @@ extension Set {
 // 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: - Static
-struct Static: Codable, Equatable {
-    let staticStatic: Int
+// MARK: - SelfClass
+struct SelfClass: Codable, Equatable {
+    let selfSelf: Int
 
     enum CodingKeys: String, CodingKey {
-        case staticStatic = "static"
+        case selfSelf = "Self"
     }
 }
 
-// MARK: Static convenience initializers and mutators
+// MARK: SelfClass convenience initializers and mutators
 
-extension Static {
+extension SelfClass {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Static.self, from: data)
+        self = try newJSONDecoder().decode(SelfClass.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -14548,12 +14548,112 @@ extension Static {
     }
 
     func with(
-        staticStatic: Int? = nil
-    ) -> Static {
-        return Static(
-            staticStatic: staticStatic ?? self.staticStatic
-        )
-    }
+        selfSelf: Int? = nil
+    ) -> SelfClass {
+        return SelfClass(
+            selfSelf: selfSelf ?? self.selfSelf
+        )
+    }
+
+    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: - Set
+struct Set: Codable, Equatable {
+    let setSet: Int
+
+    enum CodingKeys: String, CodingKey {
+        case setSet = "set"
+    }
+}
+
+// MARK: Set convenience initializers and mutators
+
+extension Set {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Set.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(
+        setSet: Int? = nil
+    ) -> Set {
+        return Set(
+            setSet: setSet ?? self.setSet
+        )
+    }
+
+    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: - Static
+struct Static: Codable, Equatable {
+    let staticStatic: Int
+
+    enum CodingKeys: String, CodingKey {
+        case staticStatic = "static"
+    }
+}
+
+// MARK: Static convenience initializers and mutators
+
+extension Static {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Static.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(
+        staticStatic: Int? = nil
+    ) -> Static {
+        return Static(
+            staticStatic: staticStatic ?? self.staticStatic
+        )
+    }
 
     func jsonData() throws -> Data {
         return try newJSONEncoder().encode(self)
@@ -15070,20 +15170,20 @@ extension Typealias {
 // 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: - Unowned
-struct Unowned: Codable, Equatable {
-    let unownedUnowned: Int
+// MARK: - Obj5Self
+struct Obj5Self: Codable, Equatable {
+    let selfSelf: Int
 
     enum CodingKeys: String, CodingKey {
-        case unownedUnowned = "unowned"
+        case selfSelf = "self"
     }
 }
 
-// MARK: Unowned convenience initializers and mutators
+// MARK: Obj5Self convenience initializers and mutators
 
-extension Unowned {
+extension Obj5Self {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Unowned.self, from: data)
+        self = try newJSONDecoder().decode(Obj5Self.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15098,10 +15198,10 @@ extension Unowned {
     }
 
     func with(
-        unownedUnowned: Int? = nil
-    ) -> Unowned {
-        return Unowned(
-            unownedUnowned: unownedUnowned ?? self.unownedUnowned
+        selfSelf: Int? = nil
+    ) -> Obj5Self {
+        return Obj5Self(
+            selfSelf: selfSelf ?? self.selfSelf
         )
     }
 
@@ -15120,20 +15220,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: - TrueClass
+struct TrueClass: Codable, Equatable {
+    let trueTrue: Int
 
     enum CodingKeys: String, CodingKey {
-        case varVar = "var"
+        case trueTrue = "true"
     }
 }
 
-// MARK: Var convenience initializers and mutators
+// MARK: TrueClass convenience initializers and mutators
 
-extension Var {
+extension TrueClass {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Var.self, from: data)
+        self = try newJSONDecoder().decode(TrueClass.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15148,10 +15248,10 @@ extension Var {
     }
 
     func with(
-        varVar: Int? = nil
-    ) -> Var {
-        return Var(
-            varVar: varVar ?? self.varVar
+        trueTrue: Int? = nil
+    ) -> TrueClass {
+        return TrueClass(
+            trueTrue: trueTrue ?? self.trueTrue
         )
     }
 
@@ -15170,20 +15270,20 @@ extension Var {
 // 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: - Obj5Self
-struct Obj5Self: Codable, Equatable {
-    let selfSelf: Int
+// MARK: - RuntimeType
+struct RuntimeType: Codable, Equatable {
+    let runtimeType: Int
 
     enum CodingKeys: String, CodingKey {
-        case selfSelf = "self"
+        case runtimeType = "runtimeType"
     }
 }
 
-// MARK: Obj5Self convenience initializers and mutators
+// MARK: RuntimeType convenience initializers and mutators
 
-extension Obj5Self {
+extension RuntimeType {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Obj5Self.self, from: data)
+        self = try newJSONDecoder().decode(RuntimeType.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15198,10 +15298,10 @@ extension Obj5Self {
     }
 
     func with(
-        selfSelf: Int? = nil
-    ) -> Obj5Self {
-        return Obj5Self(
-            selfSelf: selfSelf ?? self.selfSelf
+        runtimeType: Int? = nil
+    ) -> RuntimeType {
+        return RuntimeType(
+            runtimeType: runtimeType ?? self.runtimeType
         )
     }
 
@@ -15220,20 +15320,20 @@ extension Obj5Self {
 // 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: - TrueClass
-struct TrueClass: Codable, Equatable {
-    let trueTrue: Int
+// MARK: - S
+struct S: Codable, Equatable {
+    let s: Int
 
     enum CodingKeys: String, CodingKey {
-        case trueTrue = "true"
+        case s = "s"
     }
 }
 
-// MARK: TrueClass convenience initializers and mutators
+// MARK: S convenience initializers and mutators
 
-extension TrueClass {
+extension S {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(TrueClass.self, from: data)
+        self = try newJSONDecoder().decode(S.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15248,10 +15348,10 @@ extension TrueClass {
     }
 
     func with(
-        trueTrue: Int? = nil
-    ) -> TrueClass {
-        return TrueClass(
-            trueTrue: trueTrue ?? self.trueTrue
+        s: Int? = nil
+    ) -> S {
+        return S(
+            s: s ?? self.s
         )
     }
 
@@ -15270,20 +15370,20 @@ extension TrueClass {
 // 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: - Sendable
-struct Sendable: Codable, Equatable {
-    let sendable: Int
+// MARK: - Sbyte
+struct Sbyte: Codable, Equatable {
+    let sbyte: Int
 
     enum CodingKeys: String, CodingKey {
-        case sendable = "Sendable"
+        case sbyte = "sbyte"
     }
 }
 
-// MARK: Sendable convenience initializers and mutators
+// MARK: Sbyte convenience initializers and mutators
 
-extension Sendable {
+extension Sbyte {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Sendable.self, from: data)
+        self = try newJSONDecoder().decode(Sbyte.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15298,10 +15398,10 @@ extension Sendable {
     }
 
     func with(
-        sendable: Int? = nil
-    ) -> Sendable {
-        return Sendable(
-            sendable: sendable ?? self.sendable
+        sbyte: Int? = nil
+    ) -> Sbyte {
+        return Sbyte(
+            sbyte: sbyte ?? self.sbyte
         )
     }
 
@@ -15320,20 +15420,20 @@ 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: - Serialize
-struct Serialize: Codable, Equatable {
-    let serialize: Int
+// MARK: - Sealed
+struct Sealed: Codable, Equatable {
+    let sealed: Int
 
     enum CodingKeys: String, CodingKey {
-        case serialize = "serialize"
+        case sealed = "sealed"
     }
 }
 
-// MARK: Serialize convenience initializers and mutators
+// MARK: Sealed convenience initializers and mutators
 
-extension Serialize {
+extension Sealed {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Serialize.self, from: data)
+        self = try newJSONDecoder().decode(Sealed.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15348,10 +15448,10 @@ extension Serialize {
     }
 
     func with(
-        serialize: Int? = nil
-    ) -> Serialize {
-        return Serialize(
-            serialize: serialize ?? self.serialize
+        sealed: Int? = nil
+    ) -> Sealed {
+        return Sealed(
+            sealed: sealed ?? self.sealed
         )
     }
 
@@ -15370,20 +15470,20 @@ extension Serialize {
 // 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: - SerializerProvider
-struct SerializerProvider: Codable, Equatable {
-    let serializerProvider: Int
+// MARK: - Sel
+struct Sel: Codable, Equatable {
+    let sel: Int
 
     enum CodingKeys: String, CodingKey {
-        case serializerProvider = "SerializerProvider"
+        case sel = "SEL"
     }
 }
 
-// MARK: SerializerProvider convenience initializers and mutators
+// MARK: Sel convenience initializers and mutators
 
-extension SerializerProvider {
+extension Sel {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(SerializerProvider.self, from: data)
+        self = try newJSONDecoder().decode(Sel.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15398,10 +15498,260 @@ extension SerializerProvider {
     }
 
     func with(
-        serializerProvider: Int? = nil
-    ) -> SerializerProvider {
-        return SerializerProvider(
-            serializerProvider: serializerProvider ?? self.serializerProvider
+        sel: Int? = nil
+    ) -> Sel {
+        return Sel(
+            sel: sel ?? self.sel
+        )
+    }
+
+    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: - Select
+struct Select: Codable, Equatable {
+    let select: Int
+
+    enum CodingKeys: String, CodingKey {
+        case select = "select"
+    }
+}
+
+// MARK: Select convenience initializers and mutators
+
+extension Select {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Select.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(
+        select: Int? = nil
+    ) -> Select {
+        return Select(
+            select: select ?? self.select
+        )
+    }
+
+    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: - Sendable
+struct Sendable: Codable, Equatable {
+    let sendable: Int
+
+    enum CodingKeys: String, CodingKey {
+        case sendable = "Sendable"
+    }
+}
+
+// MARK: Sendable convenience initializers and mutators
+
+extension Sendable {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Sendable.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(
+        sendable: Int? = nil
+    ) -> Sendable {
+        return Sendable(
+            sendable: sendable ?? self.sendable
+        )
+    }
+
+    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: - SerializationFeature
+struct SerializationFeature: Codable, Equatable {
+    let serializationFeature: Int
+
+    enum CodingKeys: String, CodingKey {
+        case serializationFeature = "SerializationFeature"
+    }
+}
+
+// MARK: SerializationFeature convenience initializers and mutators
+
+extension SerializationFeature {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(SerializationFeature.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(
+        serializationFeature: Int? = nil
+    ) -> SerializationFeature {
+        return SerializationFeature(
+            serializationFeature: serializationFeature ?? self.serializationFeature
+        )
+    }
+
+    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
+
+    enum CodingKeys: String, CodingKey {
+        case serialize = "serialize"
+    }
+}
+
+// MARK: Serialize convenience initializers and mutators
+
+extension Serialize {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Serialize.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(
+        serialize: Int? = nil
+    ) -> Serialize {
+        return Serialize(
+            serialize: serialize ?? self.serialize
+        )
+    }
+
+    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: - SerializerProvider
+struct SerializerProvider: Codable, Equatable {
+    let serializerProvider: Int
+
+    enum CodingKeys: String, CodingKey {
+        case serializerProvider = "SerializerProvider"
+    }
+}
+
+// MARK: SerializerProvider convenience initializers and mutators
+
+extension SerializerProvider {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(SerializerProvider.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(
+        serializerProvider: Int? = nil
+    ) -> SerializerProvider {
+        return SerializerProvider(
+            serializerProvider: serializerProvider ?? self.serializerProvider
         )
     }
 
@@ -16220,20 +16570,20 @@ extension Template {
 // 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: - Then
-struct Then: Codable, Equatable {
-    let then: Int
+// MARK: - TextNode
+struct TextNode: Codable, Equatable {
+    let textNode: Int
 
     enum CodingKeys: String, CodingKey {
-        case then = "then"
+        case textNode = "TextNode"
     }
 }
 
-// MARK: Then convenience initializers and mutators
+// MARK: TextNode convenience initializers and mutators
 
-extension Then {
+extension TextNode {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Then.self, from: data)
+        self = try newJSONDecoder().decode(TextNode.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -16248,10 +16598,10 @@ extension Then {
     }
 
     func with(
-        then: Int? = nil
-    ) -> Then {
-        return Then(
-            then: then ?? self.then
+        textNode: Int? = nil
+    ) -> TextNode {
+        return TextNode(
+            textNode: textNode ?? self.textNode
         )
     }
 
@@ -16270,8 +16620,58 @@ extension Then {
 // 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: - This
-struct This: Codable, Equatable {
+// MARK: - Then
+struct Then: Codable, Equatable {
+    let then: Int
+
+    enum CodingKeys: String, CodingKey {
+        case then = "then"
+    }
+}
+
+// MARK: Then convenience initializers and mutators
+
+extension Then {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Then.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(
+        then: Int? = nil
+    ) -> Then {
+        return Then(
+            then: then ?? self.then
+        )
+    }
+
+    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: - This
+struct This: Codable, Equatable {
     let this: Int
 
     enum CodingKeys: String, CodingKey {
@@ -17220,20 +17620,64 @@ extension Union {
 // 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: - Unsafe
-struct Unsafe: Codable, Equatable {
-    let unsafe: Int
+// MARK: - Obj6
+struct Obj6: Codable, Equatable {
+    let dummy: Int
+    let obj6Unowned: Unowned
+    let obj6Var: Var
+    let obj6Weak: Weak
+    let obj6Where: Where
+    let obj6While: While
+    let obj6WillSet: WillSet
+    let unsafe: Unsafe
+    let unsigned: Unsigned
+    let ushort: Ushort
+    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 obj6Unowned = "unowned"
+        case obj6Var = "var"
+        case obj6Weak = "weak"
+        case obj6Where = "where"
+        case obj6While = "while"
+        case obj6WillSet = "willSet"
         case unsafe = "unsafe"
+        case unsigned = "unsigned"
+        case ushort = "ushort"
+        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: Unsafe convenience initializers and mutators
+// MARK: Obj6 convenience initializers and mutators
 
-extension Unsafe {
+extension Obj6 {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Unsafe.self, from: data)
+        self = try newJSONDecoder().decode(Obj6.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17248,10 +17692,54 @@ extension Unsafe {
     }
 
     func with(
-        unsafe: Int? = nil
-    ) -> Unsafe {
-        return Unsafe(
-            unsafe: unsafe ?? self.unsafe
+        dummy: Int? = nil,
+        obj6Unowned: Unowned? = nil,
+        obj6Var: Var? = nil,
+        obj6Weak: Weak? = nil,
+        obj6Where: Where? = nil,
+        obj6While: While? = nil,
+        obj6WillSet: WillSet? = 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,
+        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,
+            obj6Unowned: obj6Unowned ?? self.obj6Unowned,
+            obj6Var: obj6Var ?? self.obj6Var,
+            obj6Weak: obj6Weak ?? self.obj6Weak,
+            obj6Where: obj6Where ?? self.obj6Where,
+            obj6While: obj6While ?? self.obj6While,
+            obj6WillSet: obj6WillSet ?? self.obj6WillSet,
+            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,
+            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
         )
     }
 
@@ -17270,20 +17758,20 @@ extension Unsafe {
 // 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: - Unsigned
-struct Unsigned: Codable, Equatable {
-    let unsigned: Int
+// MARK: - Unowned
+struct Unowned: Codable, Equatable {
+    let unownedUnowned: Int
 
     enum CodingKeys: String, CodingKey {
-        case unsigned = "unsigned"
+        case unownedUnowned = "unowned"
     }
 }
 
-// MARK: Unsigned convenience initializers and mutators
+// MARK: Unowned convenience initializers and mutators
 
-extension Unsigned {
+extension Unowned {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Unsigned.self, from: data)
+        self = try newJSONDecoder().decode(Unowned.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17298,10 +17786,10 @@ extension Unsigned {
     }
 
     func with(
-        unsigned: Int? = nil
-    ) -> Unsigned {
-        return Unsigned(
-            unsigned: unsigned ?? self.unsigned
+        unownedUnowned: Int? = nil
+    ) -> Unowned {
+        return Unowned(
+            unownedUnowned: unownedUnowned ?? self.unownedUnowned
         )
     }
 
@@ -17320,20 +17808,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: - Var
+struct Var: Codable, Equatable {
+    let varVar: Int
 
     enum CodingKeys: String, CodingKey {
-        case ushort = "ushort"
+        case varVar = "var"
     }
 }
 
-// MARK: Ushort convenience initializers and mutators
+// MARK: Var convenience initializers and mutators
 
-extension Ushort {
+extension Var {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Ushort.self, from: data)
+        self = try newJSONDecoder().decode(Var.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17348,10 +17836,10 @@ extension Ushort {
     }
 
     func with(
-        ushort: Int? = nil
-    ) -> Ushort {
-        return Ushort(
-            ushort: ushort ?? self.ushort
+        varVar: Int? = nil
+    ) -> Var {
+        return Var(
+            varVar: varVar ?? self.varVar
         )
     }
 
@@ -17370,20 +17858,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: - Weak
+struct Weak: Codable, Equatable {
+    let weakWeak: Int
 
     enum CodingKeys: String, CodingKey {
-        case using = "using"
+        case weakWeak = "weak"
     }
 }
 
-// MARK: Using convenience initializers and mutators
+// MARK: Weak convenience initializers and mutators
 
-extension Using {
+extension Weak {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Using.self, from: data)
+        self = try newJSONDecoder().decode(Weak.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17398,10 +17886,10 @@ extension Using {
     }
 
     func with(
-        using: Int? = nil
-    ) -> Using {
-        return Using(
-            using: using ?? self.using
+        weakWeak: Int? = nil
+    ) -> Weak {
+        return Weak(
+            weakWeak: weakWeak ?? self.weakWeak
         )
     }
 
@@ -17420,20 +17908,20 @@ 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: - Where
+struct Where: Codable, Equatable {
+    let whereWhere: Int
 
     enum CodingKeys: String, CodingKey {
-        case utf8JSONReader = "Utf8JsonReader"
+        case whereWhere = "where"
     }
 }
 
-// MARK: Utf8JSONReader convenience initializers and mutators
+// MARK: Where convenience initializers and mutators
 
-extension Utf8JSONReader {
+extension Where {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Utf8JSONReader.self, from: data)
+        self = try newJSONDecoder().decode(Where.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17448,10 +17936,10 @@ extension Utf8JSONReader {
     }
 
     func with(
-        utf8JSONReader: Int? = nil
-    ) -> Utf8JSONReader {
-        return Utf8JSONReader(
-            utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader
+        whereWhere: Int? = nil
+    ) -> Where {
+        return Where(
+            whereWhere: whereWhere ?? self.whereWhere
         )
     }
 
@@ -17470,20 +17958,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: - While
+struct While: Codable, Equatable {
+    let whileWhile: Int
 
     enum CodingKeys: String, CodingKey {
-        case utf8JSONWriter = "Utf8JsonWriter"
+        case whileWhile = "while"
     }
 }
 
-// MARK: Utf8JSONWriter convenience initializers and mutators
+// MARK: While convenience initializers and mutators
 
-extension Utf8JSONWriter {
+extension While {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Utf8JSONWriter.self, from: data)
+        self = try newJSONDecoder().decode(While.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17498,10 +17986,10 @@ extension Utf8JSONWriter {
     }
 
     func with(
-        utf8JSONWriter: Int? = nil
-    ) -> Utf8JSONWriter {
-        return Utf8JSONWriter(
-            utf8JSONWriter: utf8JSONWriter ?? self.utf8JSONWriter
+        whileWhile: Int? = nil
+    ) -> While {
+        return While(
+            whileWhile: whileWhile ?? self.whileWhile
         )
     }
 
@@ -17520,20 +18008,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: - WillSet
+struct WillSet: Codable, Equatable {
+    let willSetWillSet: Int
 
     enum CodingKeys: String, CodingKey {
-        case uuid = "UUID"
+        case willSetWillSet = "willSet"
     }
 }
 
-// MARK: UUIDClass convenience initializers and mutators
+// MARK: WillSet convenience initializers and mutators
 
-extension UUIDClass {
+extension WillSet {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(UUIDClass.self, from: data)
+        self = try newJSONDecoder().decode(WillSet.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17548,10 +18036,10 @@ extension UUIDClass {
     }
 
     func with(
-        uuid: Int? = nil
-    ) -> UUIDClass {
-        return UUIDClass(
-            uuid: uuid ?? self.uuid
+        willSetWillSet: Int? = nil
+    ) -> WillSet {
+        return WillSet(
+            willSetWillSet: willSetWillSet ?? self.willSetWillSet
         )
     }
 
@@ -17570,20 +18058,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: - Unsafe
+struct Unsafe: Codable, Equatable {
+    let unsafe: Int
 
     enum CodingKeys: String, CodingKey {
-        case virtual = "virtual"
+        case unsafe = "unsafe"
     }
 }
 
-// MARK: Virtual convenience initializers and mutators
+// MARK: Unsafe convenience initializers and mutators
 
-extension Virtual {
+extension Unsafe {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Virtual.self, from: data)
+        self = try newJSONDecoder().decode(Unsafe.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17598,10 +18086,10 @@ extension Virtual {
     }
 
     func with(
-        virtual: Int? = nil
-    ) -> Virtual {
-        return Virtual(
-            virtual: virtual ?? self.virtual
+        unsafe: Int? = nil
+    ) -> Unsafe {
+        return Unsafe(
+            unsafe: unsafe ?? self.unsafe
         )
     }
 
@@ -17620,44 +18108,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: - Unsigned
+struct Unsigned: Codable, Equatable {
+    let unsigned: 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 unsigned = "unsigned"
     }
 }
 
-// MARK: Obj6 convenience initializers and mutators
+// MARK: Unsigned convenience initializers and mutators
 
-extension Obj6 {
+extension Unsigned {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Obj6.self, from: data)
+        self = try newJSONDecoder().decode(Unsigned.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17672,34 +18136,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
+        unsigned: Int? = nil
+    ) -> Unsigned {
+        return Unsigned(
+            unsigned: unsigned ?? self.unsigned
         )
     }
 
@@ -17718,20 +18158,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: - Ushort
+struct Ushort: Codable, Equatable {
+    let ushort: Int
 
     enum CodingKeys: String, CodingKey {
-        case weakWeak = "weak"
+        case ushort = "ushort"
     }
 }
 
-// MARK: Weak convenience initializers and mutators
+// MARK: Ushort convenience initializers and mutators
 
-extension Weak {
+extension Ushort {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Weak.self, from: data)
+        self = try newJSONDecoder().decode(Ushort.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -17746,10 +18186,10 @@ extension Weak {
     }
 
     func with(
-        weakWeak: Int? = nil
-    ) -> Weak {
-        return Weak(
-            weakWeak: weakWeak ?? self.weakWeak
+        ushort: Int? = nil
+    ) -> Ushort {
+        return Ushort(
+            ushort: ushort ?? self.ushort
         )
     }
 
@@ -17768,20 +18208,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 +18236,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 +18258,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 +18286,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 +18308,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 +18336,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..54458a8 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
@@ -82,6 +82,7 @@ struct Obj1: Codable, Sendable {
     let andEq: AndEq
     let any: AnyClass
     let array: Array
+    let arrayNode: ArrayNode
     let asm: ASM
     let assert: Assert
     let async: Async
@@ -95,6 +96,7 @@ struct Obj1: Codable, Sendable {
     let bitor: Bitor
     let bool: BOOLClass
     let boolean: Boolean
+    let booleanNode: BooleanNode
     let bycopy: Bycopy
     let byref: Byref
     let byte: Byte
@@ -121,8 +123,6 @@ struct Obj1: Codable, Sendable {
     let constructor: Constructor
     let convert: Convert
     let converter: Converter
-    let cultureInfo: CultureInfo
-    let date: DateClass
     let dummy: Int
     let empty: Empty
     let imaginery: Imaginery
@@ -149,6 +149,7 @@ struct Obj1: Codable, Sendable {
         case andEq = "and_eq"
         case any = "Any"
         case array = "array"
+        case arrayNode = "ArrayNode"
         case asm = "asm"
         case assert = "assert"
         case async = "async"
@@ -162,6 +163,7 @@ struct Obj1: Codable, Sendable {
         case bitor = "bitor"
         case bool = "BOOL"
         case boolean = "boolean"
+        case booleanNode = "BooleanNode"
         case bycopy = "bycopy"
         case byref = "byref"
         case byte = "byte"
@@ -188,8 +190,6 @@ struct Obj1: Codable, Sendable {
         case constructor = "constructor"
         case convert = "convert"
         case converter = "converter"
-        case cultureInfo = "CultureInfo"
-        case date = "date"
         case dummy = "dummy"
         case empty = "_"
         case imaginery = "_Imaginery"
@@ -236,6 +236,7 @@ extension Obj1 {
         andEq: AndEq? = nil,
         any: AnyClass? = nil,
         array: Array? = nil,
+        arrayNode: ArrayNode? = nil,
         asm: ASM? = nil,
         assert: Assert? = nil,
         async: Async? = nil,
@@ -249,6 +250,7 @@ extension Obj1 {
         bitor: Bitor? = nil,
         bool: BOOLClass? = nil,
         boolean: Boolean? = nil,
+        booleanNode: BooleanNode? = nil,
         bycopy: Bycopy? = nil,
         byref: Byref? = nil,
         byte: Byte? = nil,
@@ -275,8 +277,6 @@ extension Obj1 {
         constructor: Constructor? = nil,
         convert: Convert? = nil,
         converter: Converter? = nil,
-        cultureInfo: CultureInfo? = nil,
-        date: DateClass? = nil,
         dummy: Int? = nil,
         empty: Empty? = nil,
         imaginery: Imaginery? = nil,
@@ -303,6 +303,7 @@ extension Obj1 {
             andEq: andEq ?? self.andEq,
             any: any ?? self.any,
             array: array ?? self.array,
+            arrayNode: arrayNode ?? self.arrayNode,
             asm: asm ?? self.asm,
             assert: assert ?? self.assert,
             async: async ?? self.async,
@@ -316,6 +317,7 @@ extension Obj1 {
             bitor: bitor ?? self.bitor,
             bool: bool ?? self.bool,
             boolean: boolean ?? self.boolean,
+            booleanNode: booleanNode ?? self.booleanNode,
             bycopy: bycopy ?? self.bycopy,
             byref: byref ?? self.byref,
             byte: byte ?? self.byte,
@@ -342,8 +344,6 @@ extension Obj1 {
             constructor: constructor ?? self.constructor,
             convert: convert ?? self.convert,
             converter: converter ?? self.converter,
-            cultureInfo: cultureInfo ?? self.cultureInfo,
-            date: date ?? self.date,
             dummy: dummy ?? self.dummy,
             empty: empty ?? self.empty,
             imaginery: imaginery ?? self.imaginery,
@@ -681,6 +681,50 @@ extension Array {
     }
 }
 
+// MARK: - ArrayNode
+struct ArrayNode: Codable, Sendable {
+    let arrayNode: Int
+
+    enum CodingKeys: String, CodingKey {
+        case arrayNode = "ArrayNode"
+    }
+}
+
+// MARK: ArrayNode convenience initializers and mutators
+
+extension ArrayNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(ArrayNode.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(
+        arrayNode: Int? = nil
+    ) -> ArrayNode {
+        return ArrayNode(
+            arrayNode: arrayNode ?? self.arrayNode
+        )
+    }
+
+    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: - ASM
 struct ASM: Codable, Sendable {
     let asm: Int
@@ -1253,6 +1297,50 @@ extension Boolean {
     }
 }
 
+// MARK: - BooleanNode
+struct BooleanNode: Codable, Sendable {
+    let booleanNode: Int
+
+    enum CodingKeys: String, CodingKey {
+        case booleanNode = "BooleanNode"
+    }
+}
+
+// MARK: BooleanNode convenience initializers and mutators
+
+extension BooleanNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(BooleanNode.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(
+        booleanNode: Int? = nil
+    ) -> BooleanNode {
+        return BooleanNode(
+            booleanNode: booleanNode ?? self.booleanNode
+        )
+    }
+
+    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: - Bycopy
 struct Bycopy: Codable, Sendable {
     let bycopy: Int
@@ -2397,94 +2485,6 @@ extension Converter {
     }
 }
 
-// MARK: - CultureInfo
-struct CultureInfo: Codable, Sendable {
-    let cultureInfo: Int
-
-    enum CodingKeys: String, CodingKey {
-        case cultureInfo = "CultureInfo"
-    }
-}
-
-// MARK: CultureInfo convenience initializers and mutators
-
-extension CultureInfo {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(CultureInfo.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(
-        cultureInfo: Int? = nil
-    ) -> CultureInfo {
-        return CultureInfo(
-            cultureInfo: cultureInfo ?? self.cultureInfo
-        )
-    }
-
-    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: - DateClass
-struct DateClass: Codable, Sendable {
-    let date: Int
-
-    enum CodingKeys: String, CodingKey {
-        case date = "date"
-    }
-}
-
-// MARK: DateClass convenience initializers and mutators
-
-extension DateClass {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(DateClass.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(
-        date: Int? = nil
-    ) -> DateClass {
-        return DateClass(
-            date: date ?? self.date
-        )
-    }
-
-    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: - Empty
 struct Empty: Codable, Sendable {
     let empty: Int
@@ -3191,6 +3191,8 @@ extension ClassClass {
 
 // MARK: - Obj2
 struct Obj2: Codable, Sendable {
+    let cultureInfo: CultureInfo
+    let date: DateClass
     let dateFormatter: DateFormatterClass
     let dateOnly: DateOnly
     let dateOnlyConverter: DateOnlyConverter
@@ -3208,9 +3210,11 @@ struct Obj2: Codable, Sendable {
     let del: Del
     let delegate: Delegate
     let delete: Delete
+    let deserializationFeature: DeserializationFeature
     let dict: Dict
     let dictionary: Dictionary
     let double: DoubleClass
+    let doubleNode: DoubleNode
     let dummy: Int
     let dynamicCast: DynamicCast
     let elif: Elif
@@ -3236,9 +3240,6 @@ struct Obj2: Codable, Sendable {
     let from: From
     let fromJSON: FromJSON
     let function: Function
-    let global: Global
-    let go: Go
-    let goto: Goto
     let obj2Default: Default
     let obj2Defer: Defer
     let obj2Deinit: Deinit
@@ -3254,10 +3255,11 @@ struct Obj2: Codable, Sendable {
     let obj2Final: Final
     let obj2For: For
     let obj2Func: Func
-    let obj2Get: Get
     let purpleFalse: FalseClass
 
     enum CodingKeys: String, CodingKey {
+        case cultureInfo = "CultureInfo"
+        case date = "date"
         case dateFormatter = "DateFormatter"
         case dateOnly = "DateOnly"
         case dateOnlyConverter = "DateOnlyConverter"
@@ -3275,9 +3277,11 @@ struct Obj2: Codable, Sendable {
         case del = "del"
         case delegate = "delegate"
         case delete = "delete"
+        case deserializationFeature = "DeserializationFeature"
         case dict = "dict"
         case dictionary = "dictionary"
         case double = "double"
+        case doubleNode = "DoubleNode"
         case dummy = "dummy"
         case dynamicCast = "dynamic_cast"
         case elif = "elif"
@@ -3303,9 +3307,6 @@ struct Obj2: Codable, Sendable {
         case from = "from"
         case fromJSON = "from_json"
         case function = "function"
-        case global = "global"
-        case go = "go"
-        case goto = "goto"
         case obj2Default = "default"
         case obj2Defer = "defer"
         case obj2Deinit = "deinit"
@@ -3321,7 +3322,6 @@ struct Obj2: Codable, Sendable {
         case obj2Final = "final"
         case obj2For = "for"
         case obj2Func = "func"
-        case obj2Get = "get"
         case purpleFalse = "false"
     }
 }
@@ -3345,6 +3345,8 @@ extension Obj2 {
     }
 
     func with(
+        cultureInfo: CultureInfo? = nil,
+        date: DateClass? = nil,
         dateFormatter: DateFormatterClass? = nil,
         dateOnly: DateOnly? = nil,
         dateOnlyConverter: DateOnlyConverter? = nil,
@@ -3362,9 +3364,11 @@ extension Obj2 {
         del: Del? = nil,
         delegate: Delegate? = nil,
         delete: Delete? = nil,
+        deserializationFeature: DeserializationFeature? = nil,
         dict: Dict? = nil,
         dictionary: Dictionary? = nil,
         double: DoubleClass? = nil,
+        doubleNode: DoubleNode? = nil,
         dummy: Int? = nil,
         dynamicCast: DynamicCast? = nil,
         elif: Elif? = nil,
@@ -3390,9 +3394,6 @@ extension Obj2 {
         from: From? = nil,
         fromJSON: FromJSON? = nil,
         function: Function? = nil,
-        global: Global? = nil,
-        go: Go? = nil,
-        goto: Goto? = nil,
         obj2Default: Default? = nil,
         obj2Defer: Defer? = nil,
         obj2Deinit: Deinit? = nil,
@@ -3408,10 +3409,11 @@ extension Obj2 {
         obj2Final: Final? = nil,
         obj2For: For? = nil,
         obj2Func: Func? = nil,
-        obj2Get: Get? = nil,
         purpleFalse: FalseClass? = nil
     ) -> Obj2 {
         return Obj2(
+            cultureInfo: cultureInfo ?? self.cultureInfo,
+            date: date ?? self.date,
             dateFormatter: dateFormatter ?? self.dateFormatter,
             dateOnly: dateOnly ?? self.dateOnly,
             dateOnlyConverter: dateOnlyConverter ?? self.dateOnlyConverter,
@@ -3429,9 +3431,11 @@ extension Obj2 {
             del: del ?? self.del,
             delegate: delegate ?? self.delegate,
             delete: delete ?? self.delete,
+            deserializationFeature: deserializationFeature ?? self.deserializationFeature,
             dict: dict ?? self.dict,
             dictionary: dictionary ?? self.dictionary,
             double: double ?? self.double,
+            doubleNode: doubleNode ?? self.doubleNode,
             dummy: dummy ?? self.dummy,
             dynamicCast: dynamicCast ?? self.dynamicCast,
             elif: elif ?? self.elif,
@@ -3457,9 +3461,6 @@ extension Obj2 {
             from: from ?? self.from,
             fromJSON: fromJSON ?? self.fromJSON,
             function: function ?? self.function,
-            global: global ?? self.global,
-            go: go ?? self.go,
-            goto: goto ?? self.goto,
             obj2Default: obj2Default ?? self.obj2Default,
             obj2Defer: obj2Defer ?? self.obj2Defer,
             obj2Deinit: obj2Deinit ?? self.obj2Deinit,
@@ -3475,7 +3476,6 @@ extension Obj2 {
             obj2Final: obj2Final ?? self.obj2Final,
             obj2For: obj2For ?? self.obj2For,
             obj2Func: obj2Func ?? self.obj2Func,
-            obj2Get: obj2Get ?? self.obj2Get,
             purpleFalse: purpleFalse ?? self.purpleFalse
         )
     }
@@ -3489,20 +3489,20 @@ extension Obj2 {
     }
 }
 
-// MARK: - DateFormatterClass
-struct DateFormatterClass: Codable, Sendable {
-    let dateFormatter: Int
+// MARK: - CultureInfo
+struct CultureInfo: Codable, Sendable {
+    let cultureInfo: Int
 
     enum CodingKeys: String, CodingKey {
-        case dateFormatter = "DateFormatter"
+        case cultureInfo = "CultureInfo"
     }
 }
 
-// MARK: DateFormatterClass convenience initializers and mutators
+// MARK: CultureInfo convenience initializers and mutators
 
-extension DateFormatterClass {
+extension CultureInfo {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(DateFormatterClass.self, from: data)
+        self = try newJSONDecoder().decode(CultureInfo.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -3517,10 +3517,10 @@ extension DateFormatterClass {
     }
 
     func with(
-        dateFormatter: Int? = nil
-    ) -> DateFormatterClass {
-        return DateFormatterClass(
-            dateFormatter: dateFormatter ?? self.dateFormatter
+        cultureInfo: Int? = nil
+    ) -> CultureInfo {
+        return CultureInfo(
+            cultureInfo: cultureInfo ?? self.cultureInfo
         )
     }
 
@@ -3533,20 +3533,20 @@ extension DateFormatterClass {
     }
 }
 
-// MARK: - DateOnly
-struct DateOnly: Codable, Sendable {
-    let dateOnly: Int
+// MARK: - DateClass
+struct DateClass: Codable, Sendable {
+    let date: Int
 
     enum CodingKeys: String, CodingKey {
-        case dateOnly = "DateOnly"
+        case date = "date"
     }
 }
 
-// MARK: DateOnly convenience initializers and mutators
+// MARK: DateClass convenience initializers and mutators
 
-extension DateOnly {
+extension DateClass {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(DateOnly.self, from: data)
+        self = try newJSONDecoder().decode(DateClass.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -3561,10 +3561,10 @@ extension DateOnly {
     }
 
     func with(
-        dateOnly: Int? = nil
-    ) -> DateOnly {
-        return DateOnly(
-            dateOnly: dateOnly ?? self.dateOnly
+        date: Int? = nil
+    ) -> DateClass {
+        return DateClass(
+            date: date ?? self.date
         )
     }
 
@@ -3577,20 +3577,20 @@ extension DateOnly {
     }
 }
 
-// MARK: - DateOnlyConverter
-struct DateOnlyConverter: Codable, Sendable {
-    let dateOnlyConverter: Int
+// MARK: - DateFormatterClass
+struct DateFormatterClass: Codable, Sendable {
+    let dateFormatter: Int
 
     enum CodingKeys: String, CodingKey {
-        case dateOnlyConverter = "DateOnlyConverter"
+        case dateFormatter = "DateFormatter"
     }
 }
 
-// MARK: DateOnlyConverter convenience initializers and mutators
+// MARK: DateFormatterClass convenience initializers and mutators
 
-extension DateOnlyConverter {
+extension DateFormatterClass {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(DateOnlyConverter.self, from: data)
+        self = try newJSONDecoder().decode(DateFormatterClass.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -3605,10 +3605,10 @@ extension DateOnlyConverter {
     }
 
     func with(
-        dateOnlyConverter: Int? = nil
-    ) -> DateOnlyConverter {
-        return DateOnlyConverter(
-            dateOnlyConverter: dateOnlyConverter ?? self.dateOnlyConverter
+        dateFormatter: Int? = nil
+    ) -> DateFormatterClass {
+        return DateFormatterClass(
+            dateFormatter: dateFormatter ?? self.dateFormatter
         )
     }
 
@@ -3621,12 +3621,100 @@ extension DateOnlyConverter {
     }
 }
 
-// MARK: - DateParseHandling
-struct DateParseHandling: Codable, Sendable {
-    let dateParseHandling: Int
+// MARK: - DateOnly
+struct DateOnly: Codable, Sendable {
+    let dateOnly: Int
 
     enum CodingKeys: String, CodingKey {
-        case dateParseHandling = "date_parse_handling"
+        case dateOnly = "DateOnly"
+    }
+}
+
+// MARK: DateOnly convenience initializers and mutators
+
+extension DateOnly {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(DateOnly.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(
+        dateOnly: Int? = nil
+    ) -> DateOnly {
+        return DateOnly(
+            dateOnly: dateOnly ?? self.dateOnly
+        )
+    }
+
+    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: - DateOnlyConverter
+struct DateOnlyConverter: Codable, Sendable {
+    let dateOnlyConverter: Int
+
+    enum CodingKeys: String, CodingKey {
+        case dateOnlyConverter = "DateOnlyConverter"
+    }
+}
+
+// MARK: DateOnlyConverter convenience initializers and mutators
+
+extension DateOnlyConverter {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(DateOnlyConverter.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(
+        dateOnlyConverter: Int? = nil
+    ) -> DateOnlyConverter {
+        return DateOnlyConverter(
+            dateOnlyConverter: dateOnlyConverter ?? self.dateOnlyConverter
+        )
+    }
+
+    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: - DateParseHandling
+struct DateParseHandling: Codable, Sendable {
+    let dateParseHandling: Int
+
+    enum CodingKeys: String, CodingKey {
+        case dateParseHandling = "date_parse_handling"
     }
 }
 
@@ -4237,6 +4325,50 @@ extension Delete {
     }
 }
 
+// MARK: - DeserializationFeature
+struct DeserializationFeature: Codable, Sendable {
+    let deserializationFeature: Int
+
+    enum CodingKeys: String, CodingKey {
+        case deserializationFeature = "DeserializationFeature"
+    }
+}
+
+// MARK: DeserializationFeature convenience initializers and mutators
+
+extension DeserializationFeature {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(DeserializationFeature.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(
+        deserializationFeature: Int? = nil
+    ) -> DeserializationFeature {
+        return DeserializationFeature(
+            deserializationFeature: deserializationFeature ?? self.deserializationFeature
+        )
+    }
+
+    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: - Dict
 struct Dict: Codable, Sendable {
     let dict: Int
@@ -4369,6 +4501,50 @@ extension DoubleClass {
     }
 }
 
+// MARK: - DoubleNode
+struct DoubleNode: Codable, Sendable {
+    let doubleNode: Int
+
+    enum CodingKeys: String, CodingKey {
+        case doubleNode = "DoubleNode"
+    }
+}
+
+// MARK: DoubleNode convenience initializers and mutators
+
+extension DoubleNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(DoubleNode.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(
+        doubleNode: Int? = nil
+    ) -> DoubleNode {
+        return DoubleNode(
+            doubleNode: doubleNode ?? self.doubleNode
+        )
+    }
+
+    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: - DynamicCast
 struct DynamicCast: Codable, Sendable {
     let dynamicCast: Int
@@ -5430,20 +5606,20 @@ extension Function {
     }
 }
 
-// MARK: - Global
-struct Global: Codable, Sendable {
-    let global: Int
+// MARK: - Default
+struct Default: Codable, Sendable {
+    let defaultDefault: Int
 
     enum CodingKeys: String, CodingKey {
-        case global = "global"
+        case defaultDefault = "default"
     }
 }
 
-// MARK: Global convenience initializers and mutators
+// MARK: Default convenience initializers and mutators
 
-extension Global {
+extension Default {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Global.self, from: data)
+        self = try newJSONDecoder().decode(Default.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -5458,10 +5634,10 @@ extension Global {
     }
 
     func with(
-        global: Int? = nil
-    ) -> Global {
-        return Global(
-            global: global ?? self.global
+        defaultDefault: Int? = nil
+    ) -> Default {
+        return Default(
+            defaultDefault: defaultDefault ?? self.defaultDefault
         )
     }
 
@@ -5474,20 +5650,20 @@ extension Global {
     }
 }
 
-// MARK: - Go
-struct Go: Codable, Sendable {
-    let go: Int
+// MARK: - Defer
+struct Defer: Codable, Sendable {
+    let deferDefer: Int
 
     enum CodingKeys: String, CodingKey {
-        case go = "go"
+        case deferDefer = "defer"
     }
 }
 
-// MARK: Go convenience initializers and mutators
+// MARK: Defer convenience initializers and mutators
 
-extension Go {
+extension Defer {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Go.self, from: data)
+        self = try newJSONDecoder().decode(Defer.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -5502,10 +5678,10 @@ extension Go {
     }
 
     func with(
-        go: Int? = nil
-    ) -> Go {
-        return Go(
-            go: go ?? self.go
+        deferDefer: Int? = nil
+    ) -> Defer {
+        return Defer(
+            deferDefer: deferDefer ?? self.deferDefer
         )
     }
 
@@ -5518,20 +5694,20 @@ extension Go {
     }
 }
 
-// MARK: - Goto
-struct Goto: Codable, Sendable {
-    let goto: Int
+// MARK: - Deinit
+struct Deinit: Codable, Sendable {
+    let deinitDeinit: Int
 
     enum CodingKeys: String, CodingKey {
-        case goto = "goto"
+        case deinitDeinit = "deinit"
     }
 }
 
-// MARK: Goto convenience initializers and mutators
+// MARK: Deinit convenience initializers and mutators
 
-extension Goto {
+extension Deinit {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Goto.self, from: data)
+        self = try newJSONDecoder().decode(Deinit.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -5546,10 +5722,10 @@ extension Goto {
     }
 
     func with(
-        goto: Int? = nil
-    ) -> Goto {
-        return Goto(
-            goto: goto ?? self.goto
+        deinitDeinit: Int? = nil
+    ) -> Deinit {
+        return Deinit(
+            deinitDeinit: deinitDeinit ?? self.deinitDeinit
         )
     }
 
@@ -5562,20 +5738,20 @@ extension Goto {
     }
 }
 
-// MARK: - Default
-struct Default: Codable, Sendable {
-    let defaultDefault: Int
+// MARK: - DidSet
+struct DidSet: Codable, Sendable {
+    let didSetDidSet: Int
 
     enum CodingKeys: String, CodingKey {
-        case defaultDefault = "default"
+        case didSetDidSet = "didSet"
     }
 }
 
-// MARK: Default convenience initializers and mutators
+// MARK: DidSet convenience initializers and mutators
 
-extension Default {
+extension DidSet {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Default.self, from: data)
+        self = try newJSONDecoder().decode(DidSet.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -5590,10 +5766,10 @@ extension Default {
     }
 
     func with(
-        defaultDefault: Int? = nil
-    ) -> Default {
-        return Default(
-            defaultDefault: defaultDefault ?? self.defaultDefault
+        didSetDidSet: Int? = nil
+    ) -> DidSet {
+        return DidSet(
+            didSetDidSet: didSetDidSet ?? self.didSetDidSet
         )
     }
 
@@ -5606,152 +5782,20 @@ extension Default {
     }
 }
 
-// MARK: - Defer
-struct Defer: Codable, Sendable {
-    let deferDefer: Int
+// MARK: - Do
+struct Do: Codable, Sendable {
+    let doDo: Int
 
     enum CodingKeys: String, CodingKey {
-        case deferDefer = "defer"
+        case doDo = "do"
     }
 }
 
-// MARK: Defer convenience initializers and mutators
+// MARK: Do convenience initializers and mutators
 
-extension Defer {
+extension Do {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Defer.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(
-        deferDefer: Int? = nil
-    ) -> Defer {
-        return Defer(
-            deferDefer: deferDefer ?? self.deferDefer
-        )
-    }
-
-    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: - Deinit
-struct Deinit: Codable, Sendable {
-    let deinitDeinit: Int
-
-    enum CodingKeys: String, CodingKey {
-        case deinitDeinit = "deinit"
-    }
-}
-
-// MARK: Deinit convenience initializers and mutators
-
-extension Deinit {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Deinit.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(
-        deinitDeinit: Int? = nil
-    ) -> Deinit {
-        return Deinit(
-            deinitDeinit: deinitDeinit ?? self.deinitDeinit
-        )
-    }
-
-    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: - DidSet
-struct DidSet: Codable, Sendable {
-    let didSetDidSet: Int
-
-    enum CodingKeys: String, CodingKey {
-        case didSetDidSet = "didSet"
-    }
-}
-
-// MARK: DidSet convenience initializers and mutators
-
-extension DidSet {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(DidSet.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(
-        didSetDidSet: Int? = nil
-    ) -> DidSet {
-        return DidSet(
-            didSetDidSet: didSetDidSet ?? self.didSetDidSet
-        )
-    }
-
-    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: - Do
-struct Do: Codable, Sendable {
-    let doDo: Int
-
-    enum CodingKeys: String, CodingKey {
-        case doDo = "do"
-    }
-}
-
-// MARK: Do convenience initializers and mutators
-
-extension Do {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Do.self, from: data)
+        self = try newJSONDecoder().decode(Do.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -6222,50 +6266,6 @@ extension Func {
     }
 }
 
-// MARK: - Get
-struct Get: Codable, Sendable {
-    let getGet: Int
-
-    enum CodingKeys: String, CodingKey {
-        case getGet = "get"
-    }
-}
-
-// MARK: Get convenience initializers and mutators
-
-extension Get {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Get.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(
-        getGet: Int? = nil
-    ) -> Get {
-        return Get(
-            getGet: getGet ?? self.getGet
-        )
-    }
-
-    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: - FalseClass
 struct FalseClass: Codable, Sendable {
     let falseFalse: Int
@@ -6313,6 +6313,9 @@ extension FalseClass {
 // MARK: - Obj3
 struct Obj3: Codable, Sendable {
     let dummy: Int
+    let global: Global
+    let go: Go
+    let goto: Goto
     let hasOwnProperty: HasOwnProperty
     let hashCode: HashCode
     let hashable: HashableClass
@@ -6324,6 +6327,7 @@ struct Obj3: Codable, Sendable {
     let inline: Inline
     let instanceof: Instanceof
     let int: IntClass
+    let intNode: IntNode
     let interface: Interface
     let isoDateTimeOffsetConverter: ISODateTimeOffsetConverter
     let iterable: Iterable
@@ -6350,17 +6354,14 @@ struct Obj3: Codable, Sendable {
     let locale: LocaleClass
     let lock: Lock
     let long: Long
+    let longNode: LongNode
     let map: Map
     let mapEntry: MapEntry
     let metadataPropertyHandling: MetadataPropertyHandling
     let module: Module
     let mutable: Mutable
     let namespace: Namespace
-    let native: Native
-    let new: New
-    let newtonsoft: Newtonsoft
-    let no: No
-    let noexcept: Noexcept
+    let obj3Get: Get
     let obj3Guard: Guard
     let obj3If: If
     let obj3Import: Import
@@ -6376,10 +6377,12 @@ struct Obj3: Codable, Sendable {
     let obj3Left: Left
     let obj3Let: Let
     let obj3Mutating: Mutating
-    let obj3Nil: Nil
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
+        case global = "global"
+        case go = "go"
+        case goto = "goto"
         case hasOwnProperty = "hasOwnProperty"
         case hashCode = "hashCode"
         case hashable = "Hashable"
@@ -6391,6 +6394,7 @@ struct Obj3: Codable, Sendable {
         case inline = "inline"
         case instanceof = "instanceof"
         case int = "int"
+        case intNode = "IntNode"
         case interface = "interface"
         case isoDateTimeOffsetConverter = "IsoDateTimeOffsetConverter"
         case iterable = "iterable"
@@ -6417,17 +6421,14 @@ struct Obj3: Codable, Sendable {
         case locale = "Locale"
         case lock = "lock"
         case long = "long"
+        case longNode = "LongNode"
         case map = "map"
         case mapEntry = "MapEntry"
         case metadataPropertyHandling = "metadata_property_handling"
         case module = "module"
         case mutable = "mutable"
         case namespace = "namespace"
-        case native = "native"
-        case new = "new"
-        case newtonsoft = "newtonsoft"
-        case no = "NO"
-        case noexcept = "noexcept"
+        case obj3Get = "get"
         case obj3Guard = "guard"
         case obj3If = "if"
         case obj3Import = "import"
@@ -6443,7 +6444,6 @@ struct Obj3: Codable, Sendable {
         case obj3Left = "left"
         case obj3Let = "let"
         case obj3Mutating = "mutating"
-        case obj3Nil = "nil"
     }
 }
 
@@ -6467,6 +6467,9 @@ extension Obj3 {
 
     func with(
         dummy: Int? = nil,
+        global: Global? = nil,
+        go: Go? = nil,
+        goto: Goto? = nil,
         hasOwnProperty: HasOwnProperty? = nil,
         hashCode: HashCode? = nil,
         hashable: HashableClass? = nil,
@@ -6478,6 +6481,7 @@ extension Obj3 {
         inline: Inline? = nil,
         instanceof: Instanceof? = nil,
         int: IntClass? = nil,
+        intNode: IntNode? = nil,
         interface: Interface? = nil,
         isoDateTimeOffsetConverter: ISODateTimeOffsetConverter? = nil,
         iterable: Iterable? = nil,
@@ -6504,17 +6508,14 @@ extension Obj3 {
         locale: LocaleClass? = nil,
         lock: Lock? = nil,
         long: Long? = nil,
+        longNode: LongNode? = nil,
         map: Map? = nil,
         mapEntry: MapEntry? = nil,
         metadataPropertyHandling: MetadataPropertyHandling? = nil,
         module: Module? = nil,
         mutable: Mutable? = nil,
         namespace: Namespace? = nil,
-        native: Native? = nil,
-        new: New? = nil,
-        newtonsoft: Newtonsoft? = nil,
-        no: No? = nil,
-        noexcept: Noexcept? = nil,
+        obj3Get: Get? = nil,
         obj3Guard: Guard? = nil,
         obj3If: If? = nil,
         obj3Import: Import? = nil,
@@ -6529,11 +6530,13 @@ extension Obj3 {
         obj3Lazy: Lazy? = nil,
         obj3Left: Left? = nil,
         obj3Let: Let? = nil,
-        obj3Mutating: Mutating? = nil,
-        obj3Nil: Nil? = nil
+        obj3Mutating: Mutating? = nil
     ) -> Obj3 {
         return Obj3(
             dummy: dummy ?? self.dummy,
+            global: global ?? self.global,
+            go: go ?? self.go,
+            goto: goto ?? self.goto,
             hasOwnProperty: hasOwnProperty ?? self.hasOwnProperty,
             hashCode: hashCode ?? self.hashCode,
             hashable: hashable ?? self.hashable,
@@ -6545,6 +6548,7 @@ extension Obj3 {
             inline: inline ?? self.inline,
             instanceof: instanceof ?? self.instanceof,
             int: int ?? self.int,
+            intNode: intNode ?? self.intNode,
             interface: interface ?? self.interface,
             isoDateTimeOffsetConverter: isoDateTimeOffsetConverter ?? self.isoDateTimeOffsetConverter,
             iterable: iterable ?? self.iterable,
@@ -6571,17 +6575,14 @@ extension Obj3 {
             locale: locale ?? self.locale,
             lock: lock ?? self.lock,
             long: long ?? self.long,
+            longNode: longNode ?? self.longNode,
             map: map ?? self.map,
             mapEntry: mapEntry ?? self.mapEntry,
             metadataPropertyHandling: metadataPropertyHandling ?? self.metadataPropertyHandling,
             module: module ?? self.module,
             mutable: mutable ?? self.mutable,
             namespace: namespace ?? self.namespace,
-            native: native ?? self.native,
-            new: new ?? self.new,
-            newtonsoft: newtonsoft ?? self.newtonsoft,
-            no: no ?? self.no,
-            noexcept: noexcept ?? self.noexcept,
+            obj3Get: obj3Get ?? self.obj3Get,
             obj3Guard: obj3Guard ?? self.obj3Guard,
             obj3If: obj3If ?? self.obj3If,
             obj3Import: obj3Import ?? self.obj3Import,
@@ -6596,8 +6597,7 @@ extension Obj3 {
             obj3Lazy: obj3Lazy ?? self.obj3Lazy,
             obj3Left: obj3Left ?? self.obj3Left,
             obj3Let: obj3Let ?? self.obj3Let,
-            obj3Mutating: obj3Mutating ?? self.obj3Mutating,
-            obj3Nil: obj3Nil ?? self.obj3Nil
+            obj3Mutating: obj3Mutating ?? self.obj3Mutating
         )
     }
 
@@ -6610,20 +6610,20 @@ extension Obj3 {
     }
 }
 
-// MARK: - HasOwnProperty
-struct HasOwnProperty: Codable, Sendable {
-    let hasOwnProperty: Int
+// MARK: - Global
+struct Global: Codable, Sendable {
+    let global: Int
 
     enum CodingKeys: String, CodingKey {
-        case hasOwnProperty = "hasOwnProperty"
+        case global = "global"
     }
 }
 
-// MARK: HasOwnProperty convenience initializers and mutators
+// MARK: Global convenience initializers and mutators
 
-extension HasOwnProperty {
+extension Global {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(HasOwnProperty.self, from: data)
+        self = try newJSONDecoder().decode(Global.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -6638,10 +6638,10 @@ extension HasOwnProperty {
     }
 
     func with(
-        hasOwnProperty: Int? = nil
-    ) -> HasOwnProperty {
-        return HasOwnProperty(
-            hasOwnProperty: hasOwnProperty ?? self.hasOwnProperty
+        global: Int? = nil
+    ) -> Global {
+        return Global(
+            global: global ?? self.global
         )
     }
 
@@ -6654,20 +6654,20 @@ extension HasOwnProperty {
     }
 }
 
-// MARK: - HashCode
-struct HashCode: Codable, Sendable {
-    let hashCode: Int
+// MARK: - Go
+struct Go: Codable, Sendable {
+    let go: Int
 
     enum CodingKeys: String, CodingKey {
-        case hashCode = "hashCode"
+        case go = "go"
     }
 }
 
-// MARK: HashCode convenience initializers and mutators
+// MARK: Go convenience initializers and mutators
 
-extension HashCode {
+extension Go {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(HashCode.self, from: data)
+        self = try newJSONDecoder().decode(Go.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -6682,10 +6682,10 @@ extension HashCode {
     }
 
     func with(
-        hashCode: Int? = nil
-    ) -> HashCode {
-        return HashCode(
-            hashCode: hashCode ?? self.hashCode
+        go: Int? = nil
+    ) -> Go {
+        return Go(
+            go: go ?? self.go
         )
     }
 
@@ -6698,10 +6698,142 @@ extension HashCode {
     }
 }
 
-// MARK: - HashableClass
-struct HashableClass: Codable, Sendable {
-    let hashable: Int
-
+// MARK: - Goto
+struct Goto: Codable, Sendable {
+    let goto: Int
+
+    enum CodingKeys: String, CodingKey {
+        case goto = "goto"
+    }
+}
+
+// MARK: Goto convenience initializers and mutators
+
+extension Goto {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Goto.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(
+        goto: Int? = nil
+    ) -> Goto {
+        return Goto(
+            goto: goto ?? self.goto
+        )
+    }
+
+    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: - HasOwnProperty
+struct HasOwnProperty: Codable, Sendable {
+    let hasOwnProperty: Int
+
+    enum CodingKeys: String, CodingKey {
+        case hasOwnProperty = "hasOwnProperty"
+    }
+}
+
+// MARK: HasOwnProperty convenience initializers and mutators
+
+extension HasOwnProperty {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(HasOwnProperty.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(
+        hasOwnProperty: Int? = nil
+    ) -> HasOwnProperty {
+        return HasOwnProperty(
+            hasOwnProperty: hasOwnProperty ?? self.hasOwnProperty
+        )
+    }
+
+    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: - HashCode
+struct HashCode: Codable, Sendable {
+    let hashCode: Int
+
+    enum CodingKeys: String, CodingKey {
+        case hashCode = "hashCode"
+    }
+}
+
+// MARK: HashCode convenience initializers and mutators
+
+extension HashCode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(HashCode.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(
+        hashCode: Int? = nil
+    ) -> HashCode {
+        return HashCode(
+            hashCode: hashCode ?? self.hashCode
+        )
+    }
+
+    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: - HashableClass
+struct HashableClass: Codable, Sendable {
+    let hashable: Int
+
     enum CodingKeys: String, CodingKey {
         case hashable = "Hashable"
     }
@@ -7094,6 +7226,50 @@ extension IntClass {
     }
 }
 
+// MARK: - IntNode
+struct IntNode: Codable, Sendable {
+    let intNode: Int
+
+    enum CodingKeys: String, CodingKey {
+        case intNode = "IntNode"
+    }
+}
+
+// MARK: IntNode convenience initializers and mutators
+
+extension IntNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(IntNode.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(
+        intNode: Int? = nil
+    ) -> IntNode {
+        return IntNode(
+            intNode: intNode ?? self.intNode
+        )
+    }
+
+    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: - Interface
 struct Interface: Codable, Sendable {
     let interface: Int
@@ -8238,6 +8414,50 @@ extension Long {
     }
 }
 
+// MARK: - LongNode
+struct LongNode: Codable, Sendable {
+    let longNode: Int
+
+    enum CodingKeys: String, CodingKey {
+        case longNode = "LongNode"
+    }
+}
+
+// MARK: LongNode convenience initializers and mutators
+
+extension LongNode {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(LongNode.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(
+        longNode: Int? = nil
+    ) -> LongNode {
+        return LongNode(
+            longNode: longNode ?? self.longNode
+        )
+    }
+
+    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: - Map
 struct Map: Codable, Sendable {
     let map: Int
@@ -8502,20 +8722,20 @@ extension Namespace {
     }
 }
 
-// MARK: - Native
-struct Native: Codable, Sendable {
-    let native: Int
+// MARK: - Get
+struct Get: Codable, Sendable {
+    let getGet: Int
 
     enum CodingKeys: String, CodingKey {
-        case native = "native"
+        case getGet = "get"
     }
 }
 
-// MARK: Native convenience initializers and mutators
+// MARK: Get convenience initializers and mutators
 
-extension Native {
+extension Get {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Native.self, from: data)
+        self = try newJSONDecoder().decode(Get.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -8530,10 +8750,10 @@ extension Native {
     }
 
     func with(
-        native: Int? = nil
-    ) -> Native {
-        return Native(
-            native: native ?? self.native
+        getGet: Int? = nil
+    ) -> Get {
+        return Get(
+            getGet: getGet ?? self.getGet
         )
     }
 
@@ -8546,20 +8766,20 @@ extension Native {
     }
 }
 
-// MARK: - New
-struct New: Codable, Sendable {
-    let new: Int
+// MARK: - Guard
+struct Guard: Codable, Sendable {
+    let guardGuard: Int
 
     enum CodingKeys: String, CodingKey {
-        case new = "new"
+        case guardGuard = "guard"
     }
 }
 
-// MARK: New convenience initializers and mutators
+// MARK: Guard convenience initializers and mutators
 
-extension New {
+extension Guard {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(New.self, from: data)
+        self = try newJSONDecoder().decode(Guard.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -8574,10 +8794,10 @@ extension New {
     }
 
     func with(
-        new: Int? = nil
-    ) -> New {
-        return New(
-            new: new ?? self.new
+        guardGuard: Int? = nil
+    ) -> Guard {
+        return Guard(
+            guardGuard: guardGuard ?? self.guardGuard
         )
     }
 
@@ -8590,192 +8810,16 @@ extension New {
     }
 }
 
-// MARK: - Newtonsoft
-struct Newtonsoft: Codable, Sendable {
-    let newtonsoft: Int
+// MARK: - If
+struct If: Codable, Sendable {
+    let ifIf: Int
 
     enum CodingKeys: String, CodingKey {
-        case newtonsoft = "newtonsoft"
+        case ifIf = "if"
     }
 }
 
-// MARK: Newtonsoft convenience initializers and mutators
-
-extension Newtonsoft {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Newtonsoft.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(
-        newtonsoft: Int? = nil
-    ) -> Newtonsoft {
-        return Newtonsoft(
-            newtonsoft: newtonsoft ?? self.newtonsoft
-        )
-    }
-
-    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: - No
-struct No: Codable, Sendable {
-    let no: Int
-
-    enum CodingKeys: String, CodingKey {
-        case no = "NO"
-    }
-}
-
-// MARK: No convenience initializers and mutators
-
-extension No {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(No.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(
-        no: Int? = nil
-    ) -> No {
-        return No(
-            no: no ?? self.no
-        )
-    }
-
-    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: - Noexcept
-struct Noexcept: Codable, Sendable {
-    let noexcept: Int
-
-    enum CodingKeys: String, CodingKey {
-        case noexcept = "noexcept"
-    }
-}
-
-// MARK: Noexcept convenience initializers and mutators
-
-extension Noexcept {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Noexcept.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(
-        noexcept: Int? = nil
-    ) -> Noexcept {
-        return Noexcept(
-            noexcept: noexcept ?? self.noexcept
-        )
-    }
-
-    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: - Guard
-struct Guard: Codable, Sendable {
-    let guardGuard: Int
-
-    enum CodingKeys: String, CodingKey {
-        case guardGuard = "guard"
-    }
-}
-
-// MARK: Guard convenience initializers and mutators
-
-extension Guard {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Guard.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(
-        guardGuard: Int? = nil
-    ) -> Guard {
-        return Guard(
-            guardGuard: guardGuard ?? self.guardGuard
-        )
-    }
-
-    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: - If
-struct If: Codable, Sendable {
-    let ifIf: Int
-
-    enum CodingKeys: String, CodingKey {
-        case ifIf = "if"
-    }
-}
-
-// MARK: If convenience initializers and mutators
+// MARK: If convenience initializers and mutators
 
 extension If {
     init(data: Data) throws {
@@ -9382,54 +9426,15 @@ extension Mutating {
     }
 }
 
-// MARK: - Nil
-struct Nil: Codable, Sendable {
-    let nilNil: Int
-
-    enum CodingKeys: String, CodingKey {
-        case nilNil = "nil"
-    }
-}
-
-// MARK: Nil convenience initializers and mutators
-
-extension Nil {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Nil.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(
-        nilNil: Int? = nil
-    ) -> Nil {
-        return Nil(
-            nilNil: nilNil ?? self.nilNil
-        )
-    }
-
-    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: - Obj4
 struct Obj4: Codable, Sendable {
     let dummy: Int
+    let native: Native
+    let new: New
+    let newtonsoft: Newtonsoft
+    let no: No
     let noSuchMethod: NoSuchMethod
+    let noexcept: Noexcept
     let nonatomic: Nonatomic
     let none: None
     let nonlocal: Nonlocal
@@ -9439,8 +9444,10 @@ struct Obj4: Codable, Sendable {
     let nsObject: NSObject
     let nsString: NSString
     let null: Null
+    let nullNode: NullNode
     let nullptr: Nullptr
     let number: Number
+    let obj4Nil: Nil
     let obj4None: NoneClass
     let obj4Nonmutating: Nonmutating
     let obj4Null: NullClass
@@ -9457,10 +9464,9 @@ struct Obj4: Codable, Sendable {
     let obj4Repeat: Repeat
     let obj4Required: Required
     let obj4Rethrows: Rethrows
-    let obj4Return: Return
-    let obj4Right: Right
     let object: Object
     let objectMapper: ObjectMapper
+    let objectNode: ObjectNode
     let of: Of
     let oneway: Oneway
     let or: Or
@@ -9487,16 +9493,15 @@ struct Obj4: Codable, Sendable {
     let requires: Requires
     let restrict: Restrict
     let retain: Retain
-    let runtimeType: RuntimeType
-    let s: S
-    let sbyte: Sbyte
-    let sealed: Sealed
-    let sel: Sel
-    let select: Select
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
+        case native = "native"
+        case new = "new"
+        case newtonsoft = "newtonsoft"
+        case no = "NO"
         case noSuchMethod = "noSuchMethod"
+        case noexcept = "noexcept"
         case nonatomic = "nonatomic"
         case none = "None"
         case nonlocal = "nonlocal"
@@ -9506,8 +9511,10 @@ struct Obj4: Codable, Sendable {
         case nsObject = "NSObject"
         case nsString = "NSString"
         case null = "NULL"
+        case nullNode = "NullNode"
         case nullptr = "nullptr"
         case number = "number"
+        case obj4Nil = "nil"
         case obj4None = "none"
         case obj4Nonmutating = "nonmutating"
         case obj4Null = "null"
@@ -9524,10 +9531,9 @@ struct Obj4: Codable, Sendable {
         case obj4Repeat = "repeat"
         case obj4Required = "required"
         case obj4Rethrows = "rethrows"
-        case obj4Return = "return"
-        case obj4Right = "right"
         case object = "object"
         case objectMapper = "ObjectMapper"
+        case objectNode = "ObjectNode"
         case of = "of"
         case oneway = "oneway"
         case or = "or"
@@ -9554,12 +9560,6 @@ struct Obj4: Codable, Sendable {
         case requires = "requires"
         case restrict = "restrict"
         case retain = "retain"
-        case runtimeType = "runtimeType"
-        case s = "s"
-        case sbyte = "sbyte"
-        case sealed = "sealed"
-        case sel = "SEL"
-        case select = "select"
     }
 }
 
@@ -9583,7 +9583,12 @@ extension Obj4 {
 
     func with(
         dummy: Int? = nil,
+        native: Native? = nil,
+        new: New? = nil,
+        newtonsoft: Newtonsoft? = nil,
+        no: No? = nil,
         noSuchMethod: NoSuchMethod? = nil,
+        noexcept: Noexcept? = nil,
         nonatomic: Nonatomic? = nil,
         none: None? = nil,
         nonlocal: Nonlocal? = nil,
@@ -9593,8 +9598,10 @@ extension Obj4 {
         nsObject: NSObject? = nil,
         nsString: NSString? = nil,
         null: Null? = nil,
+        nullNode: NullNode? = nil,
         nullptr: Nullptr? = nil,
         number: Number? = nil,
+        obj4Nil: Nil? = nil,
         obj4None: NoneClass? = nil,
         obj4Nonmutating: Nonmutating? = nil,
         obj4Null: NullClass? = nil,
@@ -9611,10 +9618,9 @@ extension Obj4 {
         obj4Repeat: Repeat? = nil,
         obj4Required: Required? = nil,
         obj4Rethrows: Rethrows? = nil,
-        obj4Return: Return? = nil,
-        obj4Right: Right? = nil,
         object: Object? = nil,
         objectMapper: ObjectMapper? = nil,
+        objectNode: ObjectNode? = nil,
         of: Of? = nil,
         oneway: Oneway? = nil,
         or: Or? = nil,
@@ -9640,17 +9646,16 @@ extension Obj4 {
         require: Require? = nil,
         requires: Requires? = nil,
         restrict: Restrict? = nil,
-        retain: Retain? = nil,
-        runtimeType: RuntimeType? = nil,
-        s: S? = nil,
-        sbyte: Sbyte? = nil,
-        sealed: Sealed? = nil,
-        sel: Sel? = nil,
-        select: Select? = nil
+        retain: Retain? = nil
     ) -> Obj4 {
         return Obj4(
             dummy: dummy ?? self.dummy,
+            native: native ?? self.native,
+            new: new ?? self.new,
+            newtonsoft: newtonsoft ?? self.newtonsoft,
+            no: no ?? self.no,
             noSuchMethod: noSuchMethod ?? self.noSuchMethod,
+            noexcept: noexcept ?? self.noexcept,
             nonatomic: nonatomic ?? self.nonatomic,
             none: none ?? self.none,
             nonlocal: nonlocal ?? self.nonlocal,
@@ -9660,8 +9665,10 @@ extension Obj4 {
             nsObject: nsObject ?? self.nsObject,
             nsString: nsString ?? self.nsString,
             null: null ?? self.null,
+            nullNode: nullNode ?? self.nullNode,
             nullptr: nullptr ?? self.nullptr,
             number: number ?? self.number,
+            obj4Nil: obj4Nil ?? self.obj4Nil,
             obj4None: obj4None ?? self.obj4None,
             obj4Nonmutating: obj4Nonmutating ?? self.obj4Nonmutating,
             obj4Null: obj4Null ?? self.obj4Null,
@@ -9678,10 +9685,9 @@ extension Obj4 {
             obj4Repeat: obj4Repeat ?? self.obj4Repeat,
             obj4Required: obj4Required ?? self.obj4Required,
             obj4Rethrows: obj4Rethrows ?? self.obj4Rethrows,
-            obj4Return: obj4Return ?? self.obj4Return,
-            obj4Right: obj4Right ?? self.obj4Right,
             object: object ?? self.object,
             objectMapper: objectMapper ?? self.objectMapper,
+            objectNode: objectNode ?? self.objectNode,
             of: of ?? self.of,
             oneway: oneway ?? self.oneway,
             or: or ?? self.or,
@@ -9707,13 +9713,183 @@ extension Obj4 {
             require: require ?? self.require,
             requires: requires ?? self.requires,
             restrict: restrict ?? self.restrict,
-            retain: retain ?? self.retain,
-            runtimeType: runtimeType ?? self.runtimeType,
-            s: s ?? self.s,
-            sbyte: sbyte ?? self.sbyte,
-            sealed: sealed ?? self.sealed,
-            sel: sel ?? self.sel,
-            select: select ?? self.select
+            retain: retain ?? self.retain
+        )
+    }
+
+    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: - Native
+struct Native: Codable, Sendable {
+    let native: Int
+
+    enum CodingKeys: String, CodingKey {
+        case native = "native"
+    }
+}
+
+// MARK: Native convenience initializers and mutators
+
+extension Native {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Native.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(
+        native: Int? = nil
+    ) -> Native {
+        return Native(
+            native: native ?? self.native
+        )
+    }
+
+    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: - New
+struct New: Codable, Sendable {
+    let new: Int
+
+    enum CodingKeys: String, CodingKey {
+        case new = "new"
+    }
+}
+
+// MARK: New convenience initializers and mutators
+
+extension New {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(New.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(
+        new: Int? = nil
+    ) -> New {
+        return New(
+            new: new ?? self.new
+        )
+    }
+
+    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: - Newtonsoft
+struct Newtonsoft: Codable, Sendable {
+    let newtonsoft: Int
+
+    enum CodingKeys: String, CodingKey {
+        case newtonsoft = "newtonsoft"
+    }
+}
+
+// MARK: Newtonsoft convenience initializers and mutators
+
+extension Newtonsoft {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Newtonsoft.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(
+        newtonsoft: Int? = nil
+    ) -> Newtonsoft {
+        return Newtonsoft(
+            newtonsoft: newtonsoft ?? self.newtonsoft
+        )
+    }
+
+    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: - No
+struct No: Codable, Sendable {
+    let no: Int
+
+    enum CodingKeys: String, CodingKey {
+        case no = "NO"
+    }
+}
+
+// MARK: No convenience initializers and mutators
+
+extension No {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(No.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(
+        no: Int? = nil
+    ) -> No {
+        return No(
+            no: no ?? self.no
         )
     }
 
@@ -9770,6 +9946,50 @@ extension NoSuchMethod {
     }
 }
 
+// MARK: - Noexcept
+struct Noexcept: Codable, Sendable {
+    let noexcept: Int
+
+    enum CodingKeys: String, CodingKey {
+        case noexcept = "noexcept"
+    }
+}
+
+// MARK: Noexcept convenience initializers and mutators
+
+extension Noexcept {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Noexcept.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(
+        noexcept: Int? = nil
+    ) -> Noexcept {
+        return Noexcept(
+            noexcept: noexcept ?? self.noexcept
+        )
+    }
+
+    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: - Nonatomic
 struct Nonatomic: Codable, Sendable {
     let nonatomic: Int
@@ -10166,20 +10386,20 @@ extension Null {
     }
 }
 
-// MARK: - Nullptr
-struct Nullptr: Codable, Sendable {
-    let nullptr: Int
+// MARK: - NullNode
+struct NullNode: Codable, Sendable {
+    let nullNode: Int
 
     enum CodingKeys: String, CodingKey {
-        case nullptr = "nullptr"
+        case nullNode = "NullNode"
     }
 }
 
-// MARK: Nullptr convenience initializers and mutators
+// MARK: NullNode convenience initializers and mutators
 
-extension Nullptr {
+extension NullNode {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Nullptr.self, from: data)
+        self = try newJSONDecoder().decode(NullNode.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -10194,10 +10414,10 @@ extension Nullptr {
     }
 
     func with(
-        nullptr: Int? = nil
-    ) -> Nullptr {
-        return Nullptr(
-            nullptr: nullptr ?? self.nullptr
+        nullNode: Int? = nil
+    ) -> NullNode {
+        return NullNode(
+            nullNode: nullNode ?? self.nullNode
         )
     }
 
@@ -10210,20 +10430,20 @@ extension Nullptr {
     }
 }
 
-// MARK: - Number
-struct Number: Codable, Sendable {
-    let number: Int
+// MARK: - Nullptr
+struct Nullptr: Codable, Sendable {
+    let nullptr: Int
 
     enum CodingKeys: String, CodingKey {
-        case number = "number"
+        case nullptr = "nullptr"
     }
 }
 
-// MARK: Number convenience initializers and mutators
+// MARK: Nullptr convenience initializers and mutators
 
-extension Number {
+extension Nullptr {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Number.self, from: data)
+        self = try newJSONDecoder().decode(Nullptr.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -10238,9 +10458,53 @@ extension Number {
     }
 
     func with(
-        number: Int? = nil
-    ) -> Number {
-        return Number(
+        nullptr: Int? = nil
+    ) -> Nullptr {
+        return Nullptr(
+            nullptr: nullptr ?? self.nullptr
+        )
+    }
+
+    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: - Number
+struct Number: Codable, Sendable {
+    let number: Int
+
+    enum CodingKeys: String, CodingKey {
+        case number = "number"
+    }
+}
+
+// MARK: Number convenience initializers and mutators
+
+extension Number {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Number.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(
+        number: Int? = nil
+    ) -> Number {
+        return Number(
             number: number ?? self.number
         )
     }
@@ -10254,6 +10518,50 @@ extension Number {
     }
 }
 
+// MARK: - Nil
+struct Nil: Codable, Sendable {
+    let nilNil: Int
+
+    enum CodingKeys: String, CodingKey {
+        case nilNil = "nil"
+    }
+}
+
+// MARK: Nil convenience initializers and mutators
+
+extension Nil {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Nil.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(
+        nilNil: Int? = nil
+    ) -> Nil {
+        return Nil(
+            nilNil: nilNil ?? self.nilNil
+        )
+    }
+
+    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: - NoneClass
 struct NoneClass: Codable, Sendable {
     let none: Int
@@ -10958,64 +11266,20 @@ extension Rethrows {
     }
 }
 
-// MARK: - Return
-struct Return: Codable, Sendable {
-    let returnReturn: Int
-
-    enum CodingKeys: String, CodingKey {
-        case returnReturn = "return"
-    }
-}
-
-// MARK: Return convenience initializers and mutators
-
-extension Return {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Return.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(
-        returnReturn: Int? = nil
-    ) -> Return {
-        return Return(
-            returnReturn: returnReturn ?? self.returnReturn
-        )
-    }
-
-    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: - Right
-struct Right: Codable, Sendable {
-    let rightRight: Int
+// MARK: - Object
+struct Object: Codable, Sendable {
+    let object: Int
 
     enum CodingKeys: String, CodingKey {
-        case rightRight = "right"
+        case object = "object"
     }
 }
 
-// MARK: Right convenience initializers and mutators
+// MARK: Object convenience initializers and mutators
 
-extension Right {
+extension Object {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Right.self, from: data)
+        self = try newJSONDecoder().decode(Object.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11030,10 +11294,10 @@ extension Right {
     }
 
     func with(
-        rightRight: Int? = nil
-    ) -> Right {
-        return Right(
-            rightRight: rightRight ?? self.rightRight
+        object: Int? = nil
+    ) -> Object {
+        return Object(
+            object: object ?? self.object
         )
     }
 
@@ -11046,20 +11310,20 @@ extension Right {
     }
 }
 
-// MARK: - Object
-struct Object: Codable, Sendable {
-    let object: Int
+// MARK: - ObjectMapper
+struct ObjectMapper: Codable, Sendable {
+    let objectMapper: Int
 
     enum CodingKeys: String, CodingKey {
-        case object = "object"
+        case objectMapper = "ObjectMapper"
     }
 }
 
-// MARK: Object convenience initializers and mutators
+// MARK: ObjectMapper convenience initializers and mutators
 
-extension Object {
+extension ObjectMapper {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Object.self, from: data)
+        self = try newJSONDecoder().decode(ObjectMapper.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11074,10 +11338,10 @@ extension Object {
     }
 
     func with(
-        object: Int? = nil
-    ) -> Object {
-        return Object(
-            object: object ?? self.object
+        objectMapper: Int? = nil
+    ) -> ObjectMapper {
+        return ObjectMapper(
+            objectMapper: objectMapper ?? self.objectMapper
         )
     }
 
@@ -11090,20 +11354,20 @@ extension Object {
     }
 }
 
-// MARK: - ObjectMapper
-struct ObjectMapper: Codable, Sendable {
-    let objectMapper: Int
+// MARK: - ObjectNode
+struct ObjectNode: Codable, Sendable {
+    let objectNode: Int
 
     enum CodingKeys: String, CodingKey {
-        case objectMapper = "ObjectMapper"
+        case objectNode = "ObjectNode"
     }
 }
 
-// MARK: ObjectMapper convenience initializers and mutators
+// MARK: ObjectNode convenience initializers and mutators
 
-extension ObjectMapper {
+extension ObjectNode {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(ObjectMapper.self, from: data)
+        self = try newJSONDecoder().decode(ObjectNode.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -11118,10 +11382,10 @@ extension ObjectMapper {
     }
 
     func with(
-        objectMapper: Int? = nil
-    ) -> ObjectMapper {
-        return ObjectMapper(
-            objectMapper: objectMapper ?? self.objectMapper
+        objectNode: Int? = nil
+    ) -> ObjectNode {
+        return ObjectNode(
+            objectNode: objectNode ?? self.objectNode
         )
     }
 
@@ -12278,340 +12542,78 @@ extension Retain {
     }
 }
 
-// MARK: - RuntimeType
-struct RuntimeType: Codable, Sendable {
-    let runtimeType: Int
-
-    enum CodingKeys: String, CodingKey {
-        case runtimeType = "runtimeType"
-    }
-}
-
-// MARK: RuntimeType convenience initializers and mutators
-
-extension RuntimeType {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(RuntimeType.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(
-        runtimeType: Int? = nil
-    ) -> RuntimeType {
-        return RuntimeType(
-            runtimeType: runtimeType ?? self.runtimeType
-        )
-    }
-
-    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: - S
-struct S: Codable, Sendable {
-    let s: Int
-
-    enum CodingKeys: String, CodingKey {
-        case s = "s"
-    }
-}
-
-// MARK: S convenience initializers and mutators
-
-extension S {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(S.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(
-        s: Int? = nil
-    ) -> S {
-        return S(
-            s: s ?? self.s
-        )
-    }
-
-    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: - Sbyte
-struct Sbyte: Codable, Sendable {
-    let sbyte: Int
-
-    enum CodingKeys: String, CodingKey {
-        case sbyte = "sbyte"
-    }
-}
-
-// MARK: Sbyte convenience initializers and mutators
-
-extension Sbyte {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Sbyte.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(
-        sbyte: Int? = nil
-    ) -> Sbyte {
-        return Sbyte(
-            sbyte: sbyte ?? self.sbyte
-        )
-    }
-
-    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: - Sealed
-struct Sealed: Codable, Sendable {
-    let sealed: Int
-
-    enum CodingKeys: String, CodingKey {
-        case sealed = "sealed"
-    }
-}
-
-// MARK: Sealed convenience initializers and mutators
-
-extension Sealed {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Sealed.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(
-        sealed: Int? = nil
-    ) -> Sealed {
-        return Sealed(
-            sealed: sealed ?? self.sealed
-        )
-    }
-
-    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: - Sel
-struct Sel: Codable, Sendable {
-    let sel: Int
-
-    enum CodingKeys: String, CodingKey {
-        case sel = "SEL"
-    }
-}
-
-// MARK: Sel convenience initializers and mutators
-
-extension Sel {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Sel.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(
-        sel: Int? = nil
-    ) -> Sel {
-        return Sel(
-            sel: sel ?? self.sel
-        )
-    }
-
-    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: - Select
-struct Select: Codable, Sendable {
-    let select: Int
-
-    enum CodingKeys: String, CodingKey {
-        case select = "select"
-    }
-}
-
-// MARK: Select convenience initializers and mutators
-
-extension Select {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Select.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(
-        select: Int? = nil
-    ) -> Select {
-        return Select(
-            select: select ?? self.select
-        )
-    }
-
-    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: - Obj5
-struct Obj5: Codable, Sendable {
-    let dummy: Int
-    let obj5Self: SelfClass
-    let obj5Set: Set
-    let obj5Static: Static
-    let obj5Struct: Struct
-    let obj5Subscript: Subscript
-    let obj5Super: Super
-    let obj5Switch: Switch
-    let obj5Throw: Throw
-    let obj5Throws: Throws
-    let obj5True: True
-    let obj5Try: Try
-    let obj5Type: Obj5Type
-    let obj5Typealias: Typealias
-    let obj5Unowned: Unowned
-    let obj5Var: Var
-    let purpleSelf: Obj5Self
-    let purpleTrue: TrueClass
-    let sendable: SendableClass
-    let serialize: Serialize
-    let serializerProvider: SerializerProvider
-    let short: Short
-    let signed: Signed
-    let simpleModule: SimpleModule
-    let sizeof: Sizeof
-    let stackalloc: Stackalloc
-    let standards: Standards
-    let staticAssert: StaticAssert
-    let staticCast: StaticCast
-    let stdDeserializer: StdDeserializer
-    let stdSerializer: StdSerializer
-    let strictfp: Strictfp
-    let string: StringClass
-    let symbol: Symbol
-    let synchronized: Synchronized
-    let system: System
-    let template: Template
-    let then: Then
-    let this: This
-    let threadLocal: ThreadLocal
-    let timeOnly: TimeOnly
-    let timeOnlyConverter: TimeOnlyConverter
-    let timeZone: TimeZoneClass
-    let toJSON: ToJSON
-    let toString: ToString
-    let topLevel: TopLevelClass
-    let transient: Transient
-    let type: TypeClass
-    let typedef: Typedef
-    let typeid: Typeid
-    let typename: Typename
-    let typeof: Typeof
-    let uint: Uint
-    let ulong: Ulong
-    let unchecked: Unchecked
-    let undefined: Undefined
-    let union: Union
-    let unsafe: Unsafe
-    let unsigned: Unsigned
-    let ushort: Ushort
-    let using: Using
-    let utf8JSONReader: Utf8JSONReader
-    let utf8JSONWriter: Utf8JSONWriter
-    let uuid: UUIDClass
-    let virtual: Virtual
+// MARK: - Obj5
+struct Obj5: Codable, Sendable {
+    let dummy: Int
+    let obj5Return: Return
+    let obj5Right: Right
+    let obj5Self: SelfClass
+    let obj5Set: Set
+    let obj5Static: Static
+    let obj5Struct: Struct
+    let obj5Subscript: Subscript
+    let obj5Super: Super
+    let obj5Switch: Switch
+    let obj5Throw: Throw
+    let obj5Throws: Throws
+    let obj5True: True
+    let obj5Try: Try
+    let obj5Type: Obj5Type
+    let obj5Typealias: Typealias
+    let purpleSelf: Obj5Self
+    let purpleTrue: TrueClass
+    let runtimeType: RuntimeType
+    let s: S
+    let sbyte: Sbyte
+    let sealed: Sealed
+    let sel: Sel
+    let select: Select
+    let sendable: SendableClass
+    let serializationFeature: SerializationFeature
+    let serialize: Serialize
+    let serializerProvider: SerializerProvider
+    let short: Short
+    let signed: Signed
+    let simpleModule: SimpleModule
+    let sizeof: Sizeof
+    let stackalloc: Stackalloc
+    let standards: Standards
+    let staticAssert: StaticAssert
+    let staticCast: StaticCast
+    let stdDeserializer: StdDeserializer
+    let stdSerializer: StdSerializer
+    let strictfp: Strictfp
+    let string: StringClass
+    let symbol: Symbol
+    let synchronized: Synchronized
+    let system: System
+    let template: Template
+    let textNode: TextNode
+    let then: Then
+    let this: This
+    let threadLocal: ThreadLocal
+    let timeOnly: TimeOnly
+    let timeOnlyConverter: TimeOnlyConverter
+    let timeZone: TimeZoneClass
+    let toJSON: ToJSON
+    let toString: ToString
+    let topLevel: TopLevelClass
+    let transient: Transient
+    let type: TypeClass
+    let typedef: Typedef
+    let typeid: Typeid
+    let typename: Typename
+    let typeof: Typeof
+    let uint: Uint
+    let ulong: Ulong
+    let unchecked: Unchecked
+    let undefined: Undefined
+    let union: Union
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
+        case obj5Return = "return"
+        case obj5Right = "right"
         case obj5Self = "Self"
         case obj5Set = "set"
         case obj5Static = "static"
@@ -12625,11 +12627,16 @@ struct Obj5: Codable, Sendable {
         case obj5Try = "try"
         case obj5Type = "type"
         case obj5Typealias = "typealias"
-        case obj5Unowned = "unowned"
-        case obj5Var = "var"
         case purpleSelf = "self"
         case purpleTrue = "true"
+        case runtimeType = "runtimeType"
+        case s = "s"
+        case sbyte = "sbyte"
+        case sealed = "sealed"
+        case sel = "SEL"
+        case select = "select"
         case sendable = "Sendable"
+        case serializationFeature = "SerializationFeature"
         case serialize = "serialize"
         case serializerProvider = "SerializerProvider"
         case short = "short"
@@ -12648,6 +12655,7 @@ struct Obj5: Codable, Sendable {
         case synchronized = "synchronized"
         case system = "system"
         case template = "template"
+        case textNode = "TextNode"
         case then = "then"
         case this = "this"
         case threadLocal = "thread_local"
@@ -12668,14 +12676,6 @@ struct Obj5: Codable, Sendable {
         case unchecked = "unchecked"
         case undefined = "undefined"
         case union = "union"
-        case unsafe = "unsafe"
-        case unsigned = "unsigned"
-        case ushort = "ushort"
-        case using = "using"
-        case utf8JSONReader = "Utf8JsonReader"
-        case utf8JSONWriter = "Utf8JsonWriter"
-        case uuid = "UUID"
-        case virtual = "virtual"
     }
 }
 
@@ -12699,6 +12699,8 @@ extension Obj5 {
 
     func with(
         dummy: Int? = nil,
+        obj5Return: Return? = nil,
+        obj5Right: Right? = nil,
         obj5Self: SelfClass? = nil,
         obj5Set: Set? = nil,
         obj5Static: Static? = nil,
@@ -12712,11 +12714,16 @@ extension Obj5 {
         obj5Try: Try? = nil,
         obj5Type: Obj5Type? = nil,
         obj5Typealias: Typealias? = nil,
-        obj5Unowned: Unowned? = nil,
-        obj5Var: Var? = nil,
         purpleSelf: Obj5Self? = nil,
         purpleTrue: TrueClass? = nil,
+        runtimeType: RuntimeType? = nil,
+        s: S? = nil,
+        sbyte: Sbyte? = nil,
+        sealed: Sealed? = nil,
+        sel: Sel? = nil,
+        select: Select? = nil,
         sendable: SendableClass? = nil,
+        serializationFeature: SerializationFeature? = nil,
         serialize: Serialize? = nil,
         serializerProvider: SerializerProvider? = nil,
         short: Short? = nil,
@@ -12735,6 +12742,7 @@ extension Obj5 {
         synchronized: Synchronized? = nil,
         system: System? = nil,
         template: Template? = nil,
+        textNode: TextNode? = nil,
         then: Then? = nil,
         this: This? = nil,
         threadLocal: ThreadLocal? = nil,
@@ -12754,18 +12762,12 @@ extension Obj5 {
         ulong: Ulong? = nil,
         unchecked: Unchecked? = nil,
         undefined: Undefined? = nil,
-        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
+        union: Union? = nil
     ) -> Obj5 {
         return Obj5(
             dummy: dummy ?? self.dummy,
+            obj5Return: obj5Return ?? self.obj5Return,
+            obj5Right: obj5Right ?? self.obj5Right,
             obj5Self: obj5Self ?? self.obj5Self,
             obj5Set: obj5Set ?? self.obj5Set,
             obj5Static: obj5Static ?? self.obj5Static,
@@ -12779,11 +12781,16 @@ extension Obj5 {
             obj5Try: obj5Try ?? self.obj5Try,
             obj5Type: obj5Type ?? self.obj5Type,
             obj5Typealias: obj5Typealias ?? self.obj5Typealias,
-            obj5Unowned: obj5Unowned ?? self.obj5Unowned,
-            obj5Var: obj5Var ?? self.obj5Var,
             purpleSelf: purpleSelf ?? self.purpleSelf,
             purpleTrue: purpleTrue ?? self.purpleTrue,
+            runtimeType: runtimeType ?? self.runtimeType,
+            s: s ?? self.s,
+            sbyte: sbyte ?? self.sbyte,
+            sealed: sealed ?? self.sealed,
+            sel: sel ?? self.sel,
+            select: select ?? self.select,
             sendable: sendable ?? self.sendable,
+            serializationFeature: serializationFeature ?? self.serializationFeature,
             serialize: serialize ?? self.serialize,
             serializerProvider: serializerProvider ?? self.serializerProvider,
             short: short ?? self.short,
@@ -12802,6 +12809,7 @@ extension Obj5 {
             synchronized: synchronized ?? self.synchronized,
             system: system ?? self.system,
             template: template ?? self.template,
+            textNode: textNode ?? self.textNode,
             then: then ?? self.then,
             this: this ?? self.this,
             threadLocal: threadLocal ?? self.threadLocal,
@@ -12821,15 +12829,95 @@ extension Obj5 {
             ulong: ulong ?? self.ulong,
             unchecked: unchecked ?? self.unchecked,
             undefined: undefined ?? self.undefined,
-            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
+            union: union ?? self.union
+        )
+    }
+
+    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: - Return
+struct Return: Codable, Sendable {
+    let returnReturn: Int
+
+    enum CodingKeys: String, CodingKey {
+        case returnReturn = "return"
+    }
+}
+
+// MARK: Return convenience initializers and mutators
+
+extension Return {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Return.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(
+        returnReturn: Int? = nil
+    ) -> Return {
+        return Return(
+            returnReturn: returnReturn ?? self.returnReturn
+        )
+    }
+
+    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: - Right
+struct Right: Codable, Sendable {
+    let rightRight: Int
+
+    enum CodingKeys: String, CodingKey {
+        case rightRight = "right"
+    }
+}
+
+// MARK: Right convenience initializers and mutators
+
+extension Right {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Right.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(
+        rightRight: Int? = nil
+    ) -> Right {
+        return Right(
+            rightRight: rightRight ?? self.rightRight
         )
     }
 
@@ -13161,9 +13249,229 @@ struct Throw: Codable, Sendable {
 
 // MARK: Throw convenience initializers and mutators
 
-extension Throw {
+extension Throw {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Throw.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(
+        throwThrow: Int? = nil
+    ) -> Throw {
+        return Throw(
+            throwThrow: throwThrow ?? self.throwThrow
+        )
+    }
+
+    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: - Throws
+struct Throws: Codable, Sendable {
+    let throwsThrows: Int
+
+    enum CodingKeys: String, CodingKey {
+        case throwsThrows = "throws"
+    }
+}
+
+// MARK: Throws convenience initializers and mutators
+
+extension Throws {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Throws.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(
+        throwsThrows: Int? = nil
+    ) -> Throws {
+        return Throws(
+            throwsThrows: throwsThrows ?? self.throwsThrows
+        )
+    }
+
+    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: - True
+struct True: Codable, Sendable {
+    let trueTrue: Int
+
+    enum CodingKeys: String, CodingKey {
+        case trueTrue = "True"
+    }
+}
+
+// MARK: True convenience initializers and mutators
+
+extension True {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(True.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(
+        trueTrue: Int? = nil
+    ) -> True {
+        return True(
+            trueTrue: trueTrue ?? self.trueTrue
+        )
+    }
+
+    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: - Try
+struct Try: Codable, Sendable {
+    let tryTry: Int
+
+    enum CodingKeys: String, CodingKey {
+        case tryTry = "try"
+    }
+}
+
+// MARK: Try convenience initializers and mutators
+
+extension Try {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Try.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(
+        tryTry: Int? = nil
+    ) -> Try {
+        return Try(
+            tryTry: tryTry ?? self.tryTry
+        )
+    }
+
+    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: - Obj5Type
+struct Obj5Type: Codable, Sendable {
+    let type: Int
+
+    enum CodingKeys: String, CodingKey {
+        case type = "type"
+    }
+}
+
+// MARK: Obj5Type convenience initializers and mutators
+
+extension Obj5Type {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Obj5Type.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(
+        type: Int? = nil
+    ) -> Obj5Type {
+        return Obj5Type(
+            type: type ?? self.type
+        )
+    }
+
+    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: - Typealias
+struct Typealias: Codable, Sendable {
+    let typealiasTypealias: Int
+
+    enum CodingKeys: String, CodingKey {
+        case typealiasTypealias = "typealias"
+    }
+}
+
+// MARK: Typealias convenience initializers and mutators
+
+extension Typealias {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Throw.self, from: data)
+        self = try newJSONDecoder().decode(Typealias.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13178,10 +13486,10 @@ extension Throw {
     }
 
     func with(
-        throwThrow: Int? = nil
-    ) -> Throw {
-        return Throw(
-            throwThrow: throwThrow ?? self.throwThrow
+        typealiasTypealias: Int? = nil
+    ) -> Typealias {
+        return Typealias(
+            typealiasTypealias: typealiasTypealias ?? self.typealiasTypealias
         )
     }
 
@@ -13194,20 +13502,20 @@ extension Throw {
     }
 }
 
-// MARK: - Throws
-struct Throws: Codable, Sendable {
-    let throwsThrows: Int
+// MARK: - Obj5Self
+struct Obj5Self: Codable, Sendable {
+    let selfSelf: Int
 
     enum CodingKeys: String, CodingKey {
-        case throwsThrows = "throws"
+        case selfSelf = "self"
     }
 }
 
-// MARK: Throws convenience initializers and mutators
+// MARK: Obj5Self convenience initializers and mutators
 
-extension Throws {
+extension Obj5Self {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Throws.self, from: data)
+        self = try newJSONDecoder().decode(Obj5Self.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13222,10 +13530,10 @@ extension Throws {
     }
 
     func with(
-        throwsThrows: Int? = nil
-    ) -> Throws {
-        return Throws(
-            throwsThrows: throwsThrows ?? self.throwsThrows
+        selfSelf: Int? = nil
+    ) -> Obj5Self {
+        return Obj5Self(
+            selfSelf: selfSelf ?? self.selfSelf
         )
     }
 
@@ -13238,20 +13546,20 @@ extension Throws {
     }
 }
 
-// MARK: - True
-struct True: Codable, Sendable {
+// MARK: - TrueClass
+struct TrueClass: Codable, Sendable {
     let trueTrue: Int
 
     enum CodingKeys: String, CodingKey {
-        case trueTrue = "True"
+        case trueTrue = "true"
     }
 }
 
-// MARK: True convenience initializers and mutators
+// MARK: TrueClass convenience initializers and mutators
 
-extension True {
+extension TrueClass {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(True.self, from: data)
+        self = try newJSONDecoder().decode(TrueClass.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13267,8 +13575,8 @@ extension True {
 
     func with(
         trueTrue: Int? = nil
-    ) -> True {
-        return True(
+    ) -> TrueClass {
+        return TrueClass(
             trueTrue: trueTrue ?? self.trueTrue
         )
     }
@@ -13282,20 +13590,20 @@ extension True {
     }
 }
 
-// MARK: - Try
-struct Try: Codable, Sendable {
-    let tryTry: Int
+// MARK: - RuntimeType
+struct RuntimeType: Codable, Sendable {
+    let runtimeType: Int
 
     enum CodingKeys: String, CodingKey {
-        case tryTry = "try"
+        case runtimeType = "runtimeType"
     }
 }
 
-// MARK: Try convenience initializers and mutators
+// MARK: RuntimeType convenience initializers and mutators
 
-extension Try {
+extension RuntimeType {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Try.self, from: data)
+        self = try newJSONDecoder().decode(RuntimeType.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13310,10 +13618,10 @@ extension Try {
     }
 
     func with(
-        tryTry: Int? = nil
-    ) -> Try {
-        return Try(
-            tryTry: tryTry ?? self.tryTry
+        runtimeType: Int? = nil
+    ) -> RuntimeType {
+        return RuntimeType(
+            runtimeType: runtimeType ?? self.runtimeType
         )
     }
 
@@ -13326,20 +13634,20 @@ extension Try {
     }
 }
 
-// MARK: - Obj5Type
-struct Obj5Type: Codable, Sendable {
-    let type: Int
+// MARK: - S
+struct S: Codable, Sendable {
+    let s: Int
 
     enum CodingKeys: String, CodingKey {
-        case type = "type"
+        case s = "s"
     }
 }
 
-// MARK: Obj5Type convenience initializers and mutators
+// MARK: S convenience initializers and mutators
 
-extension Obj5Type {
+extension S {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Obj5Type.self, from: data)
+        self = try newJSONDecoder().decode(S.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13354,10 +13662,10 @@ extension Obj5Type {
     }
 
     func with(
-        type: Int? = nil
-    ) -> Obj5Type {
-        return Obj5Type(
-            type: type ?? self.type
+        s: Int? = nil
+    ) -> S {
+        return S(
+            s: s ?? self.s
         )
     }
 
@@ -13370,20 +13678,20 @@ extension Obj5Type {
     }
 }
 
-// MARK: - Typealias
-struct Typealias: Codable, Sendable {
-    let typealiasTypealias: Int
+// MARK: - Sbyte
+struct Sbyte: Codable, Sendable {
+    let sbyte: Int
 
     enum CodingKeys: String, CodingKey {
-        case typealiasTypealias = "typealias"
+        case sbyte = "sbyte"
     }
 }
 
-// MARK: Typealias convenience initializers and mutators
+// MARK: Sbyte convenience initializers and mutators
 
-extension Typealias {
+extension Sbyte {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Typealias.self, from: data)
+        self = try newJSONDecoder().decode(Sbyte.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13398,10 +13706,10 @@ extension Typealias {
     }
 
     func with(
-        typealiasTypealias: Int? = nil
-    ) -> Typealias {
-        return Typealias(
-            typealiasTypealias: typealiasTypealias ?? self.typealiasTypealias
+        sbyte: Int? = nil
+    ) -> Sbyte {
+        return Sbyte(
+            sbyte: sbyte ?? self.sbyte
         )
     }
 
@@ -13414,20 +13722,20 @@ extension Typealias {
     }
 }
 
-// MARK: - Unowned
-struct Unowned: Codable, Sendable {
-    let unownedUnowned: Int
+// MARK: - Sealed
+struct Sealed: Codable, Sendable {
+    let sealed: Int
 
     enum CodingKeys: String, CodingKey {
-        case unownedUnowned = "unowned"
+        case sealed = "sealed"
     }
 }
 
-// MARK: Unowned convenience initializers and mutators
+// MARK: Sealed convenience initializers and mutators
 
-extension Unowned {
+extension Sealed {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Unowned.self, from: data)
+        self = try newJSONDecoder().decode(Sealed.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13442,10 +13750,10 @@ extension Unowned {
     }
 
     func with(
-        unownedUnowned: Int? = nil
-    ) -> Unowned {
-        return Unowned(
-            unownedUnowned: unownedUnowned ?? self.unownedUnowned
+        sealed: Int? = nil
+    ) -> Sealed {
+        return Sealed(
+            sealed: sealed ?? self.sealed
         )
     }
 
@@ -13458,20 +13766,20 @@ extension Unowned {
     }
 }
 
-// MARK: - Var
-struct Var: Codable, Sendable {
-    let varVar: Int
+// MARK: - Sel
+struct Sel: Codable, Sendable {
+    let sel: Int
 
     enum CodingKeys: String, CodingKey {
-        case varVar = "var"
+        case sel = "SEL"
     }
 }
 
-// MARK: Var convenience initializers and mutators
+// MARK: Sel convenience initializers and mutators
 
-extension Var {
+extension Sel {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Var.self, from: data)
+        self = try newJSONDecoder().decode(Sel.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13486,10 +13794,10 @@ extension Var {
     }
 
     func with(
-        varVar: Int? = nil
-    ) -> Var {
-        return Var(
-            varVar: varVar ?? self.varVar
+        sel: Int? = nil
+    ) -> Sel {
+        return Sel(
+            sel: sel ?? self.sel
         )
     }
 
@@ -13502,20 +13810,20 @@ extension Var {
     }
 }
 
-// MARK: - Obj5Self
-struct Obj5Self: Codable, Sendable {
-    let selfSelf: Int
+// MARK: - Select
+struct Select: Codable, Sendable {
+    let select: Int
 
     enum CodingKeys: String, CodingKey {
-        case selfSelf = "self"
+        case select = "select"
     }
 }
 
-// MARK: Obj5Self convenience initializers and mutators
+// MARK: Select convenience initializers and mutators
 
-extension Obj5Self {
+extension Select {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Obj5Self.self, from: data)
+        self = try newJSONDecoder().decode(Select.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13530,10 +13838,10 @@ extension Obj5Self {
     }
 
     func with(
-        selfSelf: Int? = nil
-    ) -> Obj5Self {
-        return Obj5Self(
-            selfSelf: selfSelf ?? self.selfSelf
+        select: Int? = nil
+    ) -> Select {
+        return Select(
+            select: select ?? self.select
         )
     }
 
@@ -13546,20 +13854,20 @@ extension Obj5Self {
     }
 }
 
-// MARK: - TrueClass
-struct TrueClass: Codable, Sendable {
-    let trueTrue: Int
+// MARK: - SendableClass
+struct SendableClass: Codable, Sendable {
+    let sendable: Int
 
     enum CodingKeys: String, CodingKey {
-        case trueTrue = "true"
+        case sendable = "Sendable"
     }
 }
 
-// MARK: TrueClass convenience initializers and mutators
+// MARK: SendableClass convenience initializers and mutators
 
-extension TrueClass {
+extension SendableClass {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(TrueClass.self, from: data)
+        self = try newJSONDecoder().decode(SendableClass.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13574,10 +13882,10 @@ extension TrueClass {
     }
 
     func with(
-        trueTrue: Int? = nil
-    ) -> TrueClass {
-        return TrueClass(
-            trueTrue: trueTrue ?? self.trueTrue
+        sendable: Int? = nil
+    ) -> SendableClass {
+        return SendableClass(
+            sendable: sendable ?? self.sendable
         )
     }
 
@@ -13590,20 +13898,20 @@ extension TrueClass {
     }
 }
 
-// MARK: - SendableClass
-struct SendableClass: Codable, Sendable {
-    let sendable: Int
+// MARK: - SerializationFeature
+struct SerializationFeature: Codable, Sendable {
+    let serializationFeature: Int
 
     enum CodingKeys: String, CodingKey {
-        case sendable = "Sendable"
+        case serializationFeature = "SerializationFeature"
     }
 }
 
-// MARK: SendableClass convenience initializers and mutators
+// MARK: SerializationFeature convenience initializers and mutators
 
-extension SendableClass {
+extension SerializationFeature {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(SendableClass.self, from: data)
+        self = try newJSONDecoder().decode(SerializationFeature.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -13618,10 +13926,10 @@ extension SendableClass {
     }
 
     func with(
-        sendable: Int? = nil
-    ) -> SendableClass {
-        return SendableClass(
-            sendable: sendable ?? self.sendable
+        serializationFeature: Int? = nil
+    ) -> SerializationFeature {
+        return SerializationFeature(
+            serializationFeature: serializationFeature ?? self.serializationFeature
         )
     }
 
@@ -14382,20 +14690,64 @@ extension System {
     }
 }
 
-// MARK: - Template
-struct Template: Codable, Sendable {
-    let template: Int
+// MARK: - Template
+struct Template: Codable, Sendable {
+    let template: Int
+
+    enum CodingKeys: String, CodingKey {
+        case template = "template"
+    }
+}
+
+// MARK: Template convenience initializers and mutators
+
+extension Template {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Template.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(
+        template: Int? = nil
+    ) -> Template {
+        return Template(
+            template: template ?? self.template
+        )
+    }
+
+    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: - TextNode
+struct TextNode: Codable, Sendable {
+    let textNode: Int
 
     enum CodingKeys: String, CodingKey {
-        case template = "template"
+        case textNode = "TextNode"
     }
 }
 
-// MARK: Template convenience initializers and mutators
+// MARK: TextNode convenience initializers and mutators
 
-extension Template {
+extension TextNode {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Template.self, from: data)
+        self = try newJSONDecoder().decode(TextNode.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -14410,10 +14762,10 @@ extension Template {
     }
 
     func with(
-        template: Int? = nil
-    ) -> Template {
-        return Template(
-            template: template ?? self.template
+        textNode: Int? = nil
+    ) -> TextNode {
+        return TextNode(
+            textNode: textNode ?? self.textNode
         )
     }
 
@@ -15306,20 +15658,64 @@ extension Union {
     }
 }
 
-// MARK: - Unsafe
-struct Unsafe: Codable, Sendable {
-    let unsafe: Int
+// MARK: - Obj6
+struct Obj6: Codable, Sendable {
+    let dummy: Int
+    let obj6Unowned: Unowned
+    let obj6Var: Var
+    let obj6Weak: Weak
+    let obj6Where: Where
+    let obj6While: While
+    let obj6WillSet: WillSet
+    let unsafe: Unsafe
+    let unsigned: Unsigned
+    let ushort: Ushort
+    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 obj6Unowned = "unowned"
+        case obj6Var = "var"
+        case obj6Weak = "weak"
+        case obj6Where = "where"
+        case obj6While = "while"
+        case obj6WillSet = "willSet"
         case unsafe = "unsafe"
+        case unsigned = "unsigned"
+        case ushort = "ushort"
+        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: Unsafe convenience initializers and mutators
+// MARK: Obj6 convenience initializers and mutators
 
-extension Unsafe {
+extension Obj6 {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Unsafe.self, from: data)
+        self = try newJSONDecoder().decode(Obj6.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15334,10 +15730,54 @@ extension Unsafe {
     }
 
     func with(
-        unsafe: Int? = nil
-    ) -> Unsafe {
-        return Unsafe(
-            unsafe: unsafe ?? self.unsafe
+        dummy: Int? = nil,
+        obj6Unowned: Unowned? = nil,
+        obj6Var: Var? = nil,
+        obj6Weak: Weak? = nil,
+        obj6Where: Where? = nil,
+        obj6While: While? = nil,
+        obj6WillSet: WillSet? = 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,
+        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,
+            obj6Unowned: obj6Unowned ?? self.obj6Unowned,
+            obj6Var: obj6Var ?? self.obj6Var,
+            obj6Weak: obj6Weak ?? self.obj6Weak,
+            obj6Where: obj6Where ?? self.obj6Where,
+            obj6While: obj6While ?? self.obj6While,
+            obj6WillSet: obj6WillSet ?? self.obj6WillSet,
+            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,
+            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
         )
     }
 
@@ -15350,20 +15790,20 @@ extension Unsafe {
     }
 }
 
-// MARK: - Unsigned
-struct Unsigned: Codable, Sendable {
-    let unsigned: Int
+// MARK: - Unowned
+struct Unowned: Codable, Sendable {
+    let unownedUnowned: Int
 
     enum CodingKeys: String, CodingKey {
-        case unsigned = "unsigned"
+        case unownedUnowned = "unowned"
     }
 }
 
-// MARK: Unsigned convenience initializers and mutators
+// MARK: Unowned convenience initializers and mutators
 
-extension Unsigned {
+extension Unowned {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Unsigned.self, from: data)
+        self = try newJSONDecoder().decode(Unowned.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15378,10 +15818,10 @@ extension Unsigned {
     }
 
     func with(
-        unsigned: Int? = nil
-    ) -> Unsigned {
-        return Unsigned(
-            unsigned: unsigned ?? self.unsigned
+        unownedUnowned: Int? = nil
+    ) -> Unowned {
+        return Unowned(
+            unownedUnowned: unownedUnowned ?? self.unownedUnowned
         )
     }
 
@@ -15394,20 +15834,20 @@ extension Unsigned {
     }
 }
 
-// MARK: - Ushort
-struct Ushort: Codable, Sendable {
-    let ushort: Int
+// MARK: - Var
+struct Var: Codable, Sendable {
+    let varVar: Int
 
     enum CodingKeys: String, CodingKey {
-        case ushort = "ushort"
+        case varVar = "var"
     }
 }
 
-// MARK: Ushort convenience initializers and mutators
+// MARK: Var convenience initializers and mutators
 
-extension Ushort {
+extension Var {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Ushort.self, from: data)
+        self = try newJSONDecoder().decode(Var.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15422,10 +15862,10 @@ extension Ushort {
     }
 
     func with(
-        ushort: Int? = nil
-    ) -> Ushort {
-        return Ushort(
-            ushort: ushort ?? self.ushort
+        varVar: Int? = nil
+    ) -> Var {
+        return Var(
+            varVar: varVar ?? self.varVar
         )
     }
 
@@ -15438,20 +15878,108 @@ extension Ushort {
     }
 }
 
-// MARK: - Using
-struct Using: Codable, Sendable {
-    let using: Int
+// MARK: - Weak
+struct Weak: Codable, Sendable {
+    let weakWeak: Int
 
     enum CodingKeys: String, CodingKey {
-        case using = "using"
+        case weakWeak = "weak"
     }
 }
 
-// MARK: Using convenience initializers and mutators
+// MARK: Weak convenience initializers and mutators
 
-extension Using {
+extension Weak {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Weak.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(
+        weakWeak: Int? = nil
+    ) -> Weak {
+        return Weak(
+            weakWeak: weakWeak ?? self.weakWeak
+        )
+    }
+
+    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: - Where
+struct Where: Codable, Sendable {
+    let whereWhere: Int
+
+    enum CodingKeys: String, CodingKey {
+        case whereWhere = "where"
+    }
+}
+
+// MARK: Where convenience initializers and mutators
+
+extension Where {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Where.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(
+        whereWhere: Int? = nil
+    ) -> Where {
+        return Where(
+            whereWhere: whereWhere ?? self.whereWhere
+        )
+    }
+
+    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: - While
+struct While: Codable, Sendable {
+    let whileWhile: Int
+
+    enum CodingKeys: String, CodingKey {
+        case whileWhile = "while"
+    }
+}
+
+// MARK: While convenience initializers and mutators
+
+extension While {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Using.self, from: data)
+        self = try newJSONDecoder().decode(While.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15466,10 +15994,10 @@ extension Using {
     }
 
     func with(
-        using: Int? = nil
-    ) -> Using {
-        return Using(
-            using: using ?? self.using
+        whileWhile: Int? = nil
+    ) -> While {
+        return While(
+            whileWhile: whileWhile ?? self.whileWhile
         )
     }
 
@@ -15482,20 +16010,20 @@ extension Using {
     }
 }
 
-// MARK: - Utf8JSONReader
-struct Utf8JSONReader: Codable, Sendable {
-    let utf8JSONReader: Int
+// MARK: - WillSet
+struct WillSet: Codable, Sendable {
+    let willSetWillSet: Int
 
     enum CodingKeys: String, CodingKey {
-        case utf8JSONReader = "Utf8JsonReader"
+        case willSetWillSet = "willSet"
     }
 }
 
-// MARK: Utf8JSONReader convenience initializers and mutators
+// MARK: WillSet convenience initializers and mutators
 
-extension Utf8JSONReader {
+extension WillSet {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Utf8JSONReader.self, from: data)
+        self = try newJSONDecoder().decode(WillSet.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15510,10 +16038,10 @@ extension Utf8JSONReader {
     }
 
     func with(
-        utf8JSONReader: Int? = nil
-    ) -> Utf8JSONReader {
-        return Utf8JSONReader(
-            utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader
+        willSetWillSet: Int? = nil
+    ) -> WillSet {
+        return WillSet(
+            willSetWillSet: willSetWillSet ?? self.willSetWillSet
         )
     }
 
@@ -15526,20 +16054,20 @@ extension Utf8JSONReader {
     }
 }
 
-// MARK: - Utf8JSONWriter
-struct Utf8JSONWriter: Codable, Sendable {
-    let utf8JSONWriter: Int
+// MARK: - Unsafe
+struct Unsafe: Codable, Sendable {
+    let unsafe: Int
 
     enum CodingKeys: String, CodingKey {
-        case utf8JSONWriter = "Utf8JsonWriter"
+        case unsafe = "unsafe"
     }
 }
 
-// MARK: Utf8JSONWriter convenience initializers and mutators
+// MARK: Unsafe convenience initializers and mutators
 
-extension Utf8JSONWriter {
+extension Unsafe {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Utf8JSONWriter.self, from: data)
+        self = try newJSONDecoder().decode(Unsafe.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15554,10 +16082,10 @@ extension Utf8JSONWriter {
     }
 
     func with(
-        utf8JSONWriter: Int? = nil
-    ) -> Utf8JSONWriter {
-        return Utf8JSONWriter(
-            utf8JSONWriter: utf8JSONWriter ?? self.utf8JSONWriter
+        unsafe: Int? = nil
+    ) -> Unsafe {
+        return Unsafe(
+            unsafe: unsafe ?? self.unsafe
         )
     }
 
@@ -15570,20 +16098,20 @@ extension Utf8JSONWriter {
     }
 }
 
-// MARK: - UUIDClass
-struct UUIDClass: Codable, Sendable {
-    let uuid: Int
+// MARK: - Unsigned
+struct Unsigned: Codable, Sendable {
+    let unsigned: Int
 
     enum CodingKeys: String, CodingKey {
-        case uuid = "UUID"
+        case unsigned = "unsigned"
     }
 }
 
-// MARK: UUIDClass convenience initializers and mutators
+// MARK: Unsigned convenience initializers and mutators
 
-extension UUIDClass {
+extension Unsigned {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(UUIDClass.self, from: data)
+        self = try newJSONDecoder().decode(Unsigned.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15598,10 +16126,10 @@ extension UUIDClass {
     }
 
     func with(
-        uuid: Int? = nil
-    ) -> UUIDClass {
-        return UUIDClass(
-            uuid: uuid ?? self.uuid
+        unsigned: Int? = nil
+    ) -> Unsigned {
+        return Unsigned(
+            unsigned: unsigned ?? self.unsigned
         )
     }
 
@@ -15614,20 +16142,20 @@ extension UUIDClass {
     }
 }
 
-// MARK: - Virtual
-struct Virtual: Codable, Sendable {
-    let virtual: Int
+// MARK: - Ushort
+struct Ushort: Codable, Sendable {
+    let ushort: Int
 
     enum CodingKeys: String, CodingKey {
-        case virtual = "virtual"
+        case ushort = "ushort"
     }
 }
 
-// MARK: Virtual convenience initializers and mutators
+// MARK: Ushort convenience initializers and mutators
 
-extension Virtual {
+extension Ushort {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Virtual.self, from: data)
+        self = try newJSONDecoder().decode(Ushort.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15642,10 +16170,10 @@ extension Virtual {
     }
 
     func with(
-        virtual: Int? = nil
-    ) -> Virtual {
-        return Virtual(
-            virtual: virtual ?? self.virtual
+        ushort: Int? = nil
+    ) -> Ushort {
+        return Ushort(
+            ushort: ushort ?? self.ushort
         )
     }
 
@@ -15658,44 +16186,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: - Using
+struct Using: Codable, Sendable {
+    let using: 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 using = "using"
     }
 }
 
-// MARK: Obj6 convenience initializers and mutators
+// MARK: Using convenience initializers and mutators
 
-extension Obj6 {
+extension Using {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Obj6.self, from: data)
+        self = try newJSONDecoder().decode(Using.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15710,34 +16214,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
+        using: Int? = nil
+    ) -> Using {
+        return Using(
+            using: using ?? self.using
         )
     }
 
@@ -15750,20 +16230,20 @@ extension Obj6 {
     }
 }
 
-// MARK: - Weak
-struct Weak: Codable, Sendable {
-    let weakWeak: Int
+// MARK: - Utf8JSONReader
+struct Utf8JSONReader: Codable, Sendable {
+    let utf8JSONReader: Int
 
     enum CodingKeys: String, CodingKey {
-        case weakWeak = "weak"
+        case utf8JSONReader = "Utf8JsonReader"
     }
 }
 
-// MARK: Weak convenience initializers and mutators
+// MARK: Utf8JSONReader convenience initializers and mutators
 
-extension Weak {
+extension Utf8JSONReader {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Weak.self, from: data)
+        self = try newJSONDecoder().decode(Utf8JSONReader.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15778,10 +16258,10 @@ extension Weak {
     }
 
     func with(
-        weakWeak: Int? = nil
-    ) -> Weak {
-        return Weak(
-            weakWeak: weakWeak ?? self.weakWeak
+        utf8JSONReader: Int? = nil
+    ) -> Utf8JSONReader {
+        return Utf8JSONReader(
+            utf8JSONReader: utf8JSONReader ?? self.utf8JSONReader
         )
     }
 
@@ -15794,20 +16274,20 @@ extension Weak {
     }
 }
 
-// MARK: - Where
-struct Where: Codable, Sendable {
-    let whereWhere: Int
+// MARK: - Utf8JSONWriter
+struct Utf8JSONWriter: Codable, Sendable {
+    let utf8JSONWriter: Int
 
     enum CodingKeys: String, CodingKey {
-        case whereWhere = "where"
+        case utf8JSONWriter = "Utf8JsonWriter"
     }
 }
 
-// MARK: Where convenience initializers and mutators
+// MARK: Utf8JSONWriter convenience initializers and mutators
 
-extension Where {
+extension Utf8JSONWriter {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Where.self, from: data)
+        self = try newJSONDecoder().decode(Utf8JSONWriter.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15822,10 +16302,10 @@ extension Where {
     }
 
     func with(
-        whereWhere: Int? = nil
-    ) -> Where {
-        return Where(
-            whereWhere: whereWhere ?? self.whereWhere
+        utf8JSONWriter: Int? = nil
+    ) -> Utf8JSONWriter {
+        return Utf8JSONWriter(
+            utf8JSONWriter: utf8JSONWriter ?? self.utf8JSONWriter
         )
     }
 
@@ -15838,20 +16318,20 @@ extension Where {
     }
 }
 
-// MARK: - While
-struct While: Codable, Sendable {
-    let whileWhile: Int
+// MARK: - UUIDClass
+struct UUIDClass: Codable, Sendable {
+    let uuid: Int
 
     enum CodingKeys: String, CodingKey {
-        case whileWhile = "while"
+        case uuid = "UUID"
     }
 }
 
-// MARK: While convenience initializers and mutators
+// MARK: UUIDClass convenience initializers and mutators
 
-extension While {
+extension UUIDClass {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(While.self, from: data)
+        self = try newJSONDecoder().decode(UUIDClass.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15866,10 +16346,10 @@ extension While {
     }
 
     func with(
-        whileWhile: Int? = nil
-    ) -> While {
-        return While(
-            whileWhile: whileWhile ?? self.whileWhile
+        uuid: Int? = nil
+    ) -> UUIDClass {
+        return UUIDClass(
+            uuid: uuid ?? self.uuid
         )
     }
 
@@ -15882,20 +16362,20 @@ extension While {
     }
 }
 
-// MARK: - WillSet
-struct WillSet: Codable, Sendable {
-    let willSetWillSet: Int
+// MARK: - Virtual
+struct Virtual: Codable, Sendable {
+    let virtual: Int
 
     enum CodingKeys: String, CodingKey {
-        case willSetWillSet = "willSet"
+        case virtual = "virtual"
     }
 }
 
-// MARK: WillSet convenience initializers and mutators
+// MARK: Virtual convenience initializers and mutators
 
-extension WillSet {
+extension Virtual {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(WillSet.self, from: data)
+        self = try newJSONDecoder().decode(Virtual.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15910,10 +16390,10 @@ extension WillSet {
     }
 
     func with(
-        willSetWillSet: Int? = nil
-    ) -> WillSet {
-        return WillSet(
-            willSetWillSet: willSetWillSet ?? self.willSetWillSet
+        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..92fe6b0 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
@@ -19,13 +19,14 @@ export interface TopLevel {
 
 export interface Obj1 {
     Any:             Any;
+    ArrayNode:       ArrayNode;
     BOOL:            Bool;
+    BooleanNode:     BooleanNode;
     Calendar:        Calendar;
     Class:           Class;
     Codable:         Codable;
     CodingKey:       CodingKey;
     CodingKeys:      CodingKeys;
-    CultureInfo:     CultureInfo;
     _:               Empty;
     _Bool:           BoolClass;
     _Complex:        Complex;
@@ -81,7 +82,6 @@ export interface Obj1 {
     convenience:     Convenience;
     convert:         ConvertClass;
     converter:       Converter;
-    date:            DateClass;
     dummy:           number;
 }
 
@@ -89,10 +89,18 @@ export interface Any {
     Any: number;
 }
 
+export interface ArrayNode {
+    ArrayNode: number;
+}
+
 export interface Bool {
     BOOL: number;
 }
 
+export interface BooleanNode {
+    BooleanNode: number;
+}
+
 export interface Calendar {
     Calendar: number;
 }
@@ -113,10 +121,6 @@ export interface CodingKeys {
     CodingKeys: number;
 }
 
-export interface CultureInfo {
-    CultureInfo: number;
-}
-
 export interface Empty {
     _: number;
 }
@@ -337,76 +341,76 @@ export interface Converter {
     converter: number;
 }
 
-export interface DateClass {
-    date: number;
+export interface Obj2 {
+    CultureInfo:            CultureInfo;
+    DateFormatter:          DateFormatter;
+    DateOnly:               DateOnly;
+    DateOnlyConverter:      DateOnlyConverter;
+    DateTime:               DateTime;
+    DateTimeStyles:         DateTimeStyles;
+    Decoder:                Decoder;
+    DecodingError:          DecodingError;
+    DeserializationFeature: DeserializationFeature;
+    DoubleNode:             DoubleNode;
+    Encoder:                Encoder;
+    EnumValues:             EnumValues;
+    Equatable:              Equatable;
+    False:                  False;
+    FormatException:        FormatException;
+    date:                   DateClass;
+    date_parse_handling:    DateParseHandling;
+    debugger:               Debugger;
+    decimal:                Decimal;
+    declare:                Declare;
+    decltype:               Decltype;
+    decode_string:          DecodeString;
+    def:                    Def;
+    default:                Default;
+    defer:                  Defer;
+    deinit:                 Deinit;
+    del:                    Del;
+    delegate:               Delegate;
+    delete:                 Delete;
+    dict:                   Dict;
+    dictionary:             Dictionary;
+    didSet:                 DidSet;
+    do:                     Do;
+    double:                 Double;
+    dummy:                  number;
+    dynamic:                Dynamic;
+    dynamic_cast:           DynamicCast;
+    elif:                   Elif;
+    else:                   Else;
+    encode_quick_type:      EncodeQuickType;
+    enum:                   Enum;
+    equalityContract:       EqualityContract;
+    event:                  Event;
+    except:                 Except;
+    exception:              Exception;
+    explicit:               Explicit;
+    export:                 Export;
+    exposing:               Exposing;
+    extends:                Extends;
+    extension:              Extension;
+    extern:                 Extern;
+    fallthrough:            Fallthrough;
+    false:                  FalseClass;
+    fileprivate:            Fileprivate;
+    final:                  Final;
+    finally:                Finally;
+    fixed:                  Fixed;
+    float:                  Float;
+    for:                    For;
+    foreach:                Foreach;
+    friend:                 Friend;
+    from:                   From;
+    from_json:              FromJSON;
+    func:                   Func;
+    function:               Function;
 }
 
-export interface Obj2 {
-    DateFormatter:       DateFormatter;
-    DateOnly:            DateOnly;
-    DateOnlyConverter:   DateOnlyConverter;
-    DateTime:            DateTime;
-    DateTimeStyles:      DateTimeStyles;
-    Decoder:             Decoder;
-    DecodingError:       DecodingError;
-    Encoder:             Encoder;
-    EnumValues:          EnumValues;
-    Equatable:           Equatable;
-    False:               False;
-    FormatException:     FormatException;
-    date_parse_handling: DateParseHandling;
-    debugger:            Debugger;
-    decimal:             Decimal;
-    declare:             Declare;
-    decltype:            Decltype;
-    decode_string:       DecodeString;
-    def:                 Def;
-    default:             Default;
-    defer:               Defer;
-    deinit:              Deinit;
-    del:                 Del;
-    delegate:            Delegate;
-    delete:              Delete;
-    dict:                Dict;
-    dictionary:          Dictionary;
-    didSet:              DidSet;
-    do:                  Do;
-    double:              Double;
-    dummy:               number;
-    dynamic:             Dynamic;
-    dynamic_cast:        DynamicCast;
-    elif:                Elif;
-    else:                Else;
-    encode_quick_type:   EncodeQuickType;
-    enum:                Enum;
-    equalityContract:    EqualityContract;
-    event:               Event;
-    except:              Except;
-    exception:           Exception;
-    explicit:            Explicit;
-    export:              Export;
-    exposing:            Exposing;
-    extends:             Extends;
-    extension:           Extension;
-    extern:              Extern;
-    fallthrough:         Fallthrough;
-    false:               FalseClass;
-    fileprivate:         Fileprivate;
-    final:               Final;
-    finally:             Finally;
-    fixed:               Fixed;
-    float:               Float;
-    for:                 For;
-    foreach:             Foreach;
-    friend:              Friend;
-    from:                From;
-    from_json:           FromJSON;
-    func:                Func;
-    function:            Function;
-    get:                 Get;
-    global:              Global;
-    go:                  Go;
-    goto:                Goto;
+export interface CultureInfo {
+    CultureInfo: number;
 }
 
 export interface DateFormatter {
@@ -437,6 +441,14 @@ export interface DecodingError {
     DecodingError: number;
 }
 
+export interface DeserializationFeature {
+    DeserializationFeature: number;
+}
+
+export interface DoubleNode {
+    DoubleNode: number;
+}
+
 export interface Encoder {
     Encoder: number;
 }
@@ -459,6 +471,10 @@ export interface FormatException {
     FormatException: number;
 }
 
+export interface DateClass {
+    date: number;
+}
+
 export interface DateParseHandling {
     date_parse_handling: number;
 }
@@ -651,26 +667,11 @@ export interface Function {
     function: number;
 }
 
-export interface Get {
-    get: number;
-}
-
-export interface Global {
-    global: number;
-}
-
-export interface Go {
-    go: number;
-}
-
-export interface Goto {
-    goto: number;
-}
-
 export interface Obj3 {
     Hashable:                   Hashable;
     Hasher:                     Hasher;
     IMP:                        Imp;
+    IntNode:                    IntNode;
     IsoDateTimeOffsetConverter: ISODateTimeOffsetConverter;
     JSONAny:                    JSONAny;
     JSONCodingKey:              JSONCodingKey;
@@ -684,9 +685,13 @@ export interface Obj3 {
     JsonReader:                 JSONReader;
     JsonTokenType:              JSONTokenType;
     Locale:                     Locale;
+    LongNode:                   LongNode;
     MapEntry:                   MapEntry;
-    NO:                         No;
     dummy:                      number;
+    get:                        Get;
+    global:                     Global;
+    go:                         Go;
+    goto:                       Goto;
     guard:                      Guard;
     hasOwnProperty:             HasOwnProperty;
     hashCode:                   HashCode;
@@ -728,11 +733,6 @@ export interface Obj3 {
     mutable:                    Mutable;
     mutating:                   Mutating;
     namespace:                  Namespace;
-    native:                     Native;
-    new:                        New;
-    newtonsoft:                 Newtonsoft;
-    nil:                        Nil;
-    noexcept:                   Noexcept;
 }
 
 export interface Hashable {
@@ -747,6 +747,10 @@ export interface Imp {
     IMP: number;
 }
 
+export interface IntNode {
+    IntNode: number;
+}
+
 export interface ISODateTimeOffsetConverter {
     IsoDateTimeOffsetConverter: number;
 }
@@ -799,12 +803,28 @@ export interface Locale {
     Locale: number;
 }
 
+export interface LongNode {
+    LongNode: number;
+}
+
 export interface MapEntry {
     MapEntry: number;
 }
 
-export interface No {
-    NO: number;
+export interface Get {
+    get: number;
+}
+
+export interface Global {
+    global: number;
+}
+
+export interface Go {
+    go: number;
+}
+
+export interface Goto {
+    goto: number;
 }
 
 export interface Guard {
@@ -971,38 +991,25 @@ export interface Namespace {
     namespace: number;
 }
 
-export interface Native {
-    native: number;
-}
-
-export interface New {
-    new: number;
-}
-
-export interface Newtonsoft {
-    newtonsoft: number;
-}
-
-export interface Nil {
-    nil: number;
-}
-
-export interface Noexcept {
-    noexcept: number;
-}
-
 export interface Obj4 {
+    NO:               No;
     NSError:          NSError;
     NSObject:         NSObject;
     NSString:         NSString;
     NULL:             Null;
     None:             None;
+    NullNode:         NullNode;
     ObjectMapper:     ObjectMapper;
+    ObjectNode:       ObjectNode;
     Protocol:         Protocol;
     RegExp:           RegExp;
-    SEL:              Sel;
     dummy:            number;
+    native:           Native;
+    new:              New;
+    newtonsoft:       Newtonsoft;
+    nil:              Nil;
     noSuchMethod:     NoSuchMethod;
+    noexcept:         Noexcept;
     nonatomic:        Nonatomic;
     none:             NoneClass;
     nonlocal:         Nonlocal;
@@ -1050,13 +1057,10 @@ export interface Obj4 {
     restrict:         Restrict;
     retain:           Retain;
     rethrows:         Rethrows;
-    return:           Return;
-    right:            Right;
-    runtimeType:      RuntimeType;
-    s:                S;
-    sbyte:            Sbyte;
-    sealed:           Sealed;
-    select:           Select;
+}
+
+export interface No {
+    NO: number;
 }
 
 export interface NSError {
@@ -1079,10 +1083,18 @@ export interface None {
     None: number;
 }
 
+export interface NullNode {
+    NullNode: number;
+}
+
 export interface ObjectMapper {
     ObjectMapper: number;
 }
 
+export interface ObjectNode {
+    ObjectNode: number;
+}
+
 export interface Protocol {
     Protocol: number;
 }
@@ -1091,14 +1103,30 @@ export interface RegExp {
     RegExp: string;
 }
 
-export interface Sel {
-    SEL: number;
+export interface Native {
+    native: number;
+}
+
+export interface New {
+    new: number;
+}
+
+export interface Newtonsoft {
+    newtonsoft: number;
+}
+
+export interface Nil {
+    nil: number;
 }
 
 export interface NoSuchMethod {
     noSuchMethod: number;
 }
 
+export interface Noexcept {
+    noexcept: number;
+}
+
 export interface Nonatomic {
     nonatomic: number;
 }
@@ -1287,100 +1315,76 @@ export interface Rethrows {
     rethrows: number;
 }
 
-export interface Return {
-    return: number;
-}
-
-export interface Right {
-    right: number;
-}
-
-export interface RuntimeType {
-    runtimeType: number;
-}
-
-export interface S {
-    s: number;
-}
-
-export interface Sbyte {
-    sbyte: number;
-}
-
-export interface Sealed {
-    sealed: number;
-}
-
-export interface Select {
-    select: number;
+export interface Obj5 {
+    SEL:                  Sel;
+    Self:                 Self;
+    Sendable:             Sendable;
+    SerializationFeature: SerializationFeature;
+    SerializerProvider:   SerializerProvider;
+    SimpleModule:         SimpleModule;
+    Standards:            Standards;
+    StdDeserializer:      StdDeserializer;
+    StdSerializer:        StdSerializer;
+    TextNode:             TextNode;
+    TimeOnly:             TimeOnly;
+    TimeOnlyConverter:    TimeOnlyConverter;
+    TimeZone:             TimeZone;
+    True:                 True;
+    Type:                 Type;
+    dummy:                number;
+    return:               Return;
+    right:                Right;
+    runtimeType:          RuntimeType;
+    s:                    S;
+    sbyte:                Sbyte;
+    sealed:               Sealed;
+    select:               Select;
+    self:                 SelfClass;
+    serialize:            Serialize;
+    set:                  Set;
+    short:                Short;
+    signed:               Signed;
+    sizeof:               Sizeof;
+    stackalloc:           Stackalloc;
+    static:               Static;
+    static_assert:        StaticAssert;
+    static_cast:          StaticCast;
+    strictfp:             Strictfp;
+    string:               String;
+    struct:               Struct;
+    subscript:            Subscript;
+    super:                Super;
+    switch:               Switch;
+    symbol:               Symbol;
+    synchronized:         Synchronized;
+    system:               System;
+    template:             Template;
+    then:                 Then;
+    this:                 This;
+    thread_local:         ThreadLocal;
+    throw:                Throw;
+    throws:               Throws;
+    toString:             ToString;
+    to_json:              ToJSON;
+    top_level:            TopLevelClass;
+    transient:            Transient;
+    true:                 TrueClass;
+    try:                  Try;
+    type:                 TypeClass;
+    typealias:            Typealias;
+    typedef:              Typedef;
+    typeid:               Typeid;
+    typename:             Typename;
+    typeof:               Typeof;
+    uint:                 Uint;
+    ulong:                Ulong;
+    unchecked:            Unchecked;
+    undefined:            Undefined;
+    union:                Union;
 }
 
-export interface Obj5 {
-    Self:               Self;
-    Sendable:           Sendable;
-    SerializerProvider: SerializerProvider;
-    SimpleModule:       SimpleModule;
-    Standards:          Standards;
-    StdDeserializer:    StdDeserializer;
-    StdSerializer:      StdSerializer;
-    TimeOnly:           TimeOnly;
-    TimeOnlyConverter:  TimeOnlyConverter;
-    TimeZone:           TimeZone;
-    True:               True;
-    Type:               Type;
-    UUID:               UUID;
-    Utf8JsonReader:     Utf8JSONReader;
-    Utf8JsonWriter:     Utf8JSONWriter;
-    dummy:              number;
-    self:               SelfClass;
-    serialize:          Serialize;
-    set:                Set;
-    short:              Short;
-    signed:             Signed;
-    sizeof:             Sizeof;
-    stackalloc:         Stackalloc;
-    static:             Static;
-    static_assert:      StaticAssert;
-    static_cast:        StaticCast;
-    strictfp:           Strictfp;
-    string:             String;
-    struct:             Struct;
-    subscript:          Subscript;
-    super:              Super;
-    switch:             Switch;
-    symbol:             Symbol;
-    synchronized:       Synchronized;
-    system:             System;
-    template:           Template;
-    then:               Then;
-    this:               This;
-    thread_local:       ThreadLocal;
-    throw:              Throw;
-    throws:             Throws;
-    toString:           ToString;
-    to_json:            ToJSON;
-    top_level:          TopLevelClass;
-    transient:          Transient;
-    true:               TrueClass;
-    try:                Try;
-    type:               TypeClass;
-    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;
-    var:                Var;
-    virtual:            Virtual;
+export interface Sel {
+    SEL: number;
 }
 
 export interface Self {
@@ -1391,6 +1395,10 @@ export interface Sendable {
     Sendable: number;
 }
 
+export interface SerializationFeature {
+    SerializationFeature: number;
+}
+
 export interface SerializerProvider {
     SerializerProvider: number;
 }
@@ -1411,6 +1419,10 @@ export interface StdSerializer {
     StdSerializer: number;
 }
 
+export interface TextNode {
+    TextNode: number;
+}
+
 export interface TimeOnly {
     TimeOnly: number;
 }
@@ -1431,16 +1443,32 @@ export interface Type {
     Type: number;
 }
 
-export interface UUID {
-    UUID: number;
+export interface Return {
+    return: number;
 }
 
-export interface Utf8JSONReader {
-    Utf8JsonReader: number;
+export interface Right {
+    right: number;
 }
 
-export interface Utf8JSONWriter {
-    Utf8JsonWriter: number;
+export interface RuntimeType {
+    runtimeType: number;
+}
+
+export interface S {
+    s: number;
+}
+
+export interface Sbyte {
+    sbyte: number;
+}
+
+export interface Sealed {
+    sealed: number;
+}
+
+export interface Select {
+    select: number;
 }
 
 export interface SelfClass {
@@ -1611,6 +1639,48 @@ export interface Union {
     union: number;
 }
 
+export interface Obj6 {
+    UUID:           UUID;
+    Utf8JsonReader: Utf8JSONReader;
+    Utf8JsonWriter: Utf8JSONWriter;
+    YES:            Yes;
+    dummy:          number;
+    unowned:        Unowned;
+    unsafe:         Unsafe;
+    unsigned:       Unsigned;
+    ushort:         Ushort;
+    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 UUID {
+    UUID: number;
+}
+
+export interface Utf8JSONReader {
+    Utf8JsonReader: number;
+}
+
+export interface Utf8JSONWriter {
+    Utf8JsonWriter: number;
+}
+
+export interface Yes {
+    YES: number;
+}
+
 export interface Unowned {
     unowned: number;
 }
@@ -1639,26 +1709,6 @@ export interface Virtual {
     virtual: 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 Yes {
-    YES: number;
-}
-
 export interface Void {
     void: number;
 }
@@ -1902,13 +1952,14 @@ const typeMap: any = {
     ], false),
     "Obj1": o([
         { json: "Any", js: "Any", typ: r("Any") },
+        { json: "ArrayNode", js: "ArrayNode", typ: r("ArrayNode") },
         { json: "BOOL", js: "BOOL", typ: r("Bool") },
+        { json: "BooleanNode", js: "BooleanNode", typ: r("BooleanNode") },
         { json: "Calendar", js: "Calendar", typ: r("Calendar") },
         { json: "Class", js: "Class", typ: r("Class") },
         { json: "Codable", js: "Codable", typ: r("Codable") },
         { json: "CodingKey", js: "CodingKey", typ: r("CodingKey") },
         { json: "CodingKeys", js: "CodingKeys", typ: r("CodingKeys") },
-        { json: "CultureInfo", js: "CultureInfo", typ: r("CultureInfo") },
         { json: "_", js: "_", typ: r("Empty") },
         { json: "_Bool", js: "_Bool", typ: r("BoolClass") },
         { json: "_Complex", js: "_Complex", typ: r("Complex") },
@@ -1964,15 +2015,20 @@ const typeMap: any = {
         { json: "convenience", js: "convenience", typ: r("Convenience") },
         { json: "convert", js: "convert", typ: r("ConvertClass") },
         { json: "converter", js: "converter", typ: r("Converter") },
-        { json: "date", js: "date", typ: r("DateClass") },
         { json: "dummy", js: "dummy", typ: i(0) },
     ], false),
     "Any": o([
         { json: "Any", js: "Any", typ: i(0) },
     ], false),
+    "ArrayNode": o([
+        { json: "ArrayNode", js: "ArrayNode", typ: i(0) },
+    ], false),
     "Bool": o([
         { json: "BOOL", js: "BOOL", typ: i(0) },
     ], false),
+    "BooleanNode": o([
+        { json: "BooleanNode", js: "BooleanNode", typ: i(0) },
+    ], false),
     "Calendar": o([
         { json: "Calendar", js: "Calendar", typ: i(0) },
     ], false),
@@ -1988,9 +2044,6 @@ const typeMap: any = {
     "CodingKeys": o([
         { json: "CodingKeys", js: "CodingKeys", typ: i(0) },
     ], false),
-    "CultureInfo": o([
-        { json: "CultureInfo", js: "CultureInfo", typ: i(0) },
-    ], false),
     "Empty": o([
         { json: "_", js: "_", typ: i(0) },
     ], false),
@@ -2156,10 +2209,8 @@ const typeMap: any = {
     "Converter": o([
         { json: "converter", js: "converter", typ: i(0) },
     ], false),
-    "DateClass": o([
-        { json: "date", js: "date", typ: i(0) },
-    ], false),
     "Obj2": o([
+        { json: "CultureInfo", js: "CultureInfo", typ: r("CultureInfo") },
         { json: "DateFormatter", js: "DateFormatter", typ: r("DateFormatter") },
         { json: "DateOnly", js: "DateOnly", typ: r("DateOnly") },
         { json: "DateOnlyConverter", js: "DateOnlyConverter", typ: r("DateOnlyConverter") },
@@ -2167,11 +2218,14 @@ const typeMap: any = {
         { json: "DateTimeStyles", js: "DateTimeStyles", typ: r("DateTimeStyles") },
         { json: "Decoder", js: "Decoder", typ: r("Decoder") },
         { json: "DecodingError", js: "DecodingError", typ: r("DecodingError") },
+        { json: "DeserializationFeature", js: "DeserializationFeature", typ: r("DeserializationFeature") },
+        { json: "DoubleNode", js: "DoubleNode", typ: r("DoubleNode") },
         { json: "Encoder", js: "Encoder", typ: r("Encoder") },
         { json: "EnumValues", js: "EnumValues", typ: r("EnumValues") },
         { json: "Equatable", js: "Equatable", typ: r("Equatable") },
         { json: "False", js: "False", typ: r("False") },
         { json: "FormatException", js: "FormatException", typ: r("FormatException") },
+        { json: "date", js: "date", typ: r("DateClass") },
         { json: "date_parse_handling", js: "date_parse_handling", typ: r("DateParseHandling") },
         { json: "debugger", js: "debugger", typ: r("Debugger") },
         { json: "decimal", js: "decimal", typ: r("Decimal") },
@@ -2221,10 +2275,9 @@ const typeMap: any = {
         { json: "from_json", js: "from_json", typ: r("FromJSON") },
         { json: "func", js: "func", typ: r("Func") },
         { json: "function", js: "function", typ: r("Function") },
-        { json: "get", js: "get", typ: r("Get") },
-        { json: "global", js: "global", typ: r("Global") },
-        { json: "go", js: "go", typ: r("Go") },
-        { json: "goto", js: "goto", typ: r("Goto") },
+    ], false),
+    "CultureInfo": o([
+        { json: "CultureInfo", js: "CultureInfo", typ: i(0) },
     ], false),
     "DateFormatter": o([
         { json: "DateFormatter", js: "DateFormatter", typ: i(0) },
@@ -2247,6 +2300,12 @@ const typeMap: any = {
     "DecodingError": o([
         { json: "DecodingError", js: "DecodingError", typ: i(0) },
     ], false),
+    "DeserializationFeature": o([
+        { json: "DeserializationFeature", js: "DeserializationFeature", typ: i(0) },
+    ], false),
+    "DoubleNode": o([
+        { json: "DoubleNode", js: "DoubleNode", typ: i(0) },
+    ], false),
     "Encoder": o([
         { json: "Encoder", js: "Encoder", typ: i(0) },
     ], false),
@@ -2262,6 +2321,9 @@ const typeMap: any = {
     "FormatException": o([
         { json: "FormatException", js: "FormatException", typ: i(0) },
     ], false),
+    "DateClass": o([
+        { json: "date", js: "date", typ: i(0) },
+    ], false),
     "DateParseHandling": o([
         { json: "date_parse_handling", js: "date_parse_handling", typ: i(0) },
     ], false),
@@ -2406,22 +2468,11 @@ const typeMap: any = {
     "Function": o([
         { json: "function", js: "function", typ: i(0) },
     ], false),
-    "Get": o([
-        { json: "get", js: "get", typ: i(0) },
-    ], false),
-    "Global": o([
-        { json: "global", js: "global", typ: i(0) },
-    ], false),
-    "Go": o([
-        { json: "go", js: "go", typ: i(0) },
-    ], false),
-    "Goto": o([
-        { json: "goto", js: "goto", typ: i(0) },
-    ], false),
     "Obj3": o([
         { json: "Hashable", js: "Hashable", typ: r("Hashable") },
         { json: "Hasher", js: "Hasher", typ: r("Hasher") },
         { json: "IMP", js: "IMP", typ: r("Imp") },
+        { json: "IntNode", js: "IntNode", typ: r("IntNode") },
         { json: "IsoDateTimeOffsetConverter", js: "IsoDateTimeOffsetConverter", typ: r("ISODateTimeOffsetConverter") },
         { json: "JSONAny", js: "JSONAny", typ: r("JSONAny") },
         { json: "JSONCodingKey", js: "JSONCodingKey", typ: r("JSONCodingKey") },
@@ -2435,9 +2486,13 @@ const typeMap: any = {
         { json: "JsonReader", js: "JsonReader", typ: r("JSONReader") },
         { json: "JsonTokenType", js: "JsonTokenType", typ: r("JSONTokenType") },
         { json: "Locale", js: "Locale", typ: r("Locale") },
+        { json: "LongNode", js: "LongNode", typ: r("LongNode") },
         { json: "MapEntry", js: "MapEntry", typ: r("MapEntry") },
-        { json: "NO", js: "NO", typ: r("No") },
         { json: "dummy", js: "dummy", typ: i(0) },
+        { json: "get", js: "get", typ: r("Get") },
+        { json: "global", js: "global", typ: r("Global") },
+        { json: "go", js: "go", typ: r("Go") },
+        { json: "goto", js: "goto", typ: r("Goto") },
         { json: "guard", js: "guard", typ: r("Guard") },
         { json: "hasOwnProperty", js: "hasOwnProperty", typ: r("HasOwnProperty") },
         { json: "hashCode", js: "hashCode", typ: r("HashCode") },
@@ -2479,11 +2534,6 @@ const typeMap: any = {
         { json: "mutable", js: "mutable", typ: r("Mutable") },
         { json: "mutating", js: "mutating", typ: r("Mutating") },
         { json: "namespace", js: "namespace", typ: r("Namespace") },
-        { json: "native", js: "native", typ: r("Native") },
-        { json: "new", js: "new", typ: r("New") },
-        { json: "newtonsoft", js: "newtonsoft", typ: r("Newtonsoft") },
-        { json: "nil", js: "nil", typ: r("Nil") },
-        { json: "noexcept", js: "noexcept", typ: r("Noexcept") },
     ], false),
     "Hashable": o([
         { json: "Hashable", js: "Hashable", typ: i(0) },
@@ -2494,6 +2544,9 @@ const typeMap: any = {
     "Imp": o([
         { json: "IMP", js: "IMP", typ: i(0) },
     ], false),
+    "IntNode": o([
+        { json: "IntNode", js: "IntNode", typ: i(0) },
+    ], false),
     "ISODateTimeOffsetConverter": o([
         { json: "IsoDateTimeOffsetConverter", js: "IsoDateTimeOffsetConverter", typ: i(0) },
     ], false),
@@ -2533,11 +2586,23 @@ const typeMap: any = {
     "Locale": o([
         { json: "Locale", js: "Locale", typ: i(0) },
     ], false),
+    "LongNode": o([
+        { json: "LongNode", js: "LongNode", typ: i(0) },
+    ], false),
     "MapEntry": o([
         { json: "MapEntry", js: "MapEntry", typ: i(0) },
     ], false),
-    "No": o([
-        { json: "NO", js: "NO", typ: i(0) },
+    "Get": o([
+        { json: "get", js: "get", typ: i(0) },
+    ], false),
+    "Global": o([
+        { json: "global", js: "global", typ: i(0) },
+    ], false),
+    "Go": o([
+        { json: "go", js: "go", typ: i(0) },
+    ], false),
+    "Goto": o([
+        { json: "goto", js: "goto", typ: i(0) },
     ], false),
     "Guard": o([
         { json: "guard", js: "guard", typ: i(0) },
@@ -2662,33 +2727,25 @@ const typeMap: any = {
     "Namespace": o([
         { json: "namespace", js: "namespace", typ: i(0) },
     ], false),
-    "Native": o([
-        { json: "native", js: "native", typ: i(0) },
-    ], false),
-    "New": o([
-        { json: "new", js: "new", typ: i(0) },
-    ], false),
-    "Newtonsoft": o([
-        { json: "newtonsoft", js: "newtonsoft", typ: i(0) },
-    ], false),
-    "Nil": o([
-        { json: "nil", js: "nil", typ: i(0) },
-    ], false),
-    "Noexcept": o([
-        { json: "noexcept", js: "noexcept", typ: i(0) },
-    ], false),
     "Obj4": o([
+        { json: "NO", js: "NO", typ: r("No") },
         { json: "NSError", js: "NSError", typ: r("NSError") },
         { json: "NSObject", js: "NSObject", typ: r("NSObject") },
         { json: "NSString", js: "NSString", typ: r("NSString") },
         { json: "NULL", js: "NULL", typ: r("Null") },
         { json: "None", js: "None", typ: r("None") },
+        { json: "NullNode", js: "NullNode", typ: r("NullNode") },
         { json: "ObjectMapper", js: "ObjectMapper", typ: r("ObjectMapper") },
+        { json: "ObjectNode", js: "ObjectNode", typ: r("ObjectNode") },
         { json: "Protocol", js: "Protocol", typ: r("Protocol") },
         { json: "RegExp", js: "RegExp", typ: r("RegExp") },
-        { json: "SEL", js: "SEL", typ: r("Sel") },
         { json: "dummy", js: "dummy", typ: i(0) },
+        { json: "native", js: "native", typ: r("Native") },
+        { json: "new", js: "new", typ: r("New") },
+        { json: "newtonsoft", js: "newtonsoft", typ: r("Newtonsoft") },
+        { json: "nil", js: "nil", typ: r("Nil") },
         { json: "noSuchMethod", js: "noSuchMethod", typ: r("NoSuchMethod") },
+        { json: "noexcept", js: "noexcept", typ: r("Noexcept") },
         { json: "nonatomic", js: "nonatomic", typ: r("Nonatomic") },
         { json: "none", js: "none", typ: r("NoneClass") },
         { json: "nonlocal", js: "nonlocal", typ: r("Nonlocal") },
@@ -2736,13 +2793,9 @@ const typeMap: any = {
         { json: "restrict", js: "restrict", typ: r("Restrict") },
         { json: "retain", js: "retain", typ: r("Retain") },
         { json: "rethrows", js: "rethrows", typ: r("Rethrows") },
-        { json: "return", js: "return", typ: r("Return") },
-        { json: "right", js: "right", typ: r("Right") },
-        { json: "runtimeType", js: "runtimeType", typ: r("RuntimeType") },
-        { json: "s", js: "s", typ: r("S") },
-        { json: "sbyte", js: "sbyte", typ: r("Sbyte") },
-        { json: "sealed", js: "sealed", typ: r("Sealed") },
-        { json: "select", js: "select", typ: r("Select") },
+    ], false),
+    "No": o([
+        { json: "NO", js: "NO", typ: i(0) },
     ], false),
     "NSError": o([
         { json: "NSError", js: "NSError", typ: i(0) },
@@ -2759,21 +2812,39 @@ const typeMap: any = {
     "None": o([
         { json: "None", js: "None", typ: i(0) },
     ], false),
+    "NullNode": o([
+        { json: "NullNode", js: "NullNode", typ: i(0) },
+    ], false),
     "ObjectMapper": o([
         { json: "ObjectMapper", js: "ObjectMapper", typ: i(0) },
     ], false),
+    "ObjectNode": o([
+        { json: "ObjectNode", js: "ObjectNode", typ: i(0) },
+    ], false),
     "Protocol": o([
         { json: "Protocol", js: "Protocol", typ: i(0) },
     ], false),
     "RegExp": o([
         { json: "RegExp", js: "RegExp", typ: { uuid: "" } },
     ], false),
-    "Sel": o([
-        { json: "SEL", js: "SEL", typ: i(0) },
+    "Native": o([
+        { json: "native", js: "native", typ: i(0) },
+    ], false),
+    "New": o([
+        { json: "new", js: "new", typ: i(0) },
+    ], false),
+    "Newtonsoft": o([
+        { json: "newtonsoft", js: "newtonsoft", typ: i(0) },
+    ], false),
+    "Nil": o([
+        { json: "nil", js: "nil", typ: i(0) },
     ], false),
     "NoSuchMethod": o([
         { json: "noSuchMethod", js: "noSuchMethod", typ: i(0) },
     ], false),
+    "Noexcept": o([
+        { json: "noexcept", js: "noexcept", typ: i(0) },
+    ], false),
     "Nonatomic": o([
         { json: "nonatomic", js: "nonatomic", typ: i(0) },
     ], false),
@@ -2915,44 +2986,30 @@ const typeMap: any = {
     "Rethrows": o([
         { json: "rethrows", js: "rethrows", typ: i(0) },
     ], false),
-    "Return": o([
-        { json: "return", js: "return", typ: i(0) },
-    ], false),
-    "Right": o([
-        { json: "right", js: "right", typ: i(0) },
-    ], false),
-    "RuntimeType": o([
-        { json: "runtimeType", js: "runtimeType", typ: i(0) },
-    ], false),
-    "S": o([
-        { json: "s", js: "s", typ: i(0) },
-    ], false),
-    "Sbyte": o([
-        { json: "sbyte", js: "sbyte", typ: i(0) },
-    ], false),
-    "Sealed": o([
-        { json: "sealed", js: "sealed", typ: i(0) },
-    ], false),
-    "Select": o([
-        { json: "select", js: "select", typ: i(0) },
-    ], false),
     "Obj5": o([
+        { json: "SEL", js: "SEL", typ: r("Sel") },
         { json: "Self", js: "Self", typ: r("Self") },
         { json: "Sendable", js: "Sendable", typ: r("Sendable") },
+        { json: "SerializationFeature", js: "SerializationFeature", typ: r("SerializationFeature") },
         { json: "SerializerProvider", js: "SerializerProvider", typ: r("SerializerProvider") },
         { json: "SimpleModule", js: "SimpleModule", typ: r("SimpleModule") },
         { json: "Standards", js: "Standards", typ: r("Standards") },
         { json: "StdDeserializer", js: "StdDeserializer", typ: r("StdDeserializer") },
         { json: "StdSerializer", js: "StdSerializer", typ: r("StdSerializer") },
+        { json: "TextNode", js: "TextNode", typ: r("TextNode") },
         { json: "TimeOnly", js: "TimeOnly", typ: r("TimeOnly") },
         { json: "TimeOnlyConverter", js: "TimeOnlyConverter", typ: r("TimeOnlyConverter") },
         { 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: "dummy", js: "dummy", typ: i(0) },
+        { json: "return", js: "return", typ: r("Return") },
+        { json: "right", js: "right", typ: r("Right") },
+        { json: "runtimeType", js: "runtimeType", typ: r("RuntimeType") },
+        { json: "s", js: "s", typ: r("S") },
+        { json: "sbyte", js: "sbyte", typ: r("Sbyte") },
+        { json: "sealed", js: "sealed", typ: r("Sealed") },
+        { json: "select", js: "select", typ: r("Select") },
         { json: "self", js: "self", typ: r("SelfClass") },
         { json: "serialize", js: "serialize", typ: r("Serialize") },
         { json: "set", js: "set", typ: r("Set") },
@@ -2995,13 +3052,9 @@ const typeMap: any = {
         { json: "unchecked", js: "unchecked", typ: r("Unchecked") },
         { json: "undefined", js: "undefined", typ: r("Undefined") },
         { json: "union", js: "union", typ: r("Union") },
-        { json: "unowned", js: "unowned", typ: r("Unowned") },
-        { 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),
+    "Sel": o([
+        { json: "SEL", js: "SEL", typ: i(0) },
     ], false),
     "Self": o([
         { json: "Self", js: "Self", typ: i(0) },
@@ -3009,6 +3062,9 @@ const typeMap: any = {
     "Sendable": o([
         { json: "Sendable", js: "Sendable", typ: i(0) },
     ], false),
+    "SerializationFeature": o([
+        { json: "SerializationFeature", js: "SerializationFeature", typ: i(0) },
+    ], false),
     "SerializerProvider": o([
         { json: "SerializerProvider", js: "SerializerProvider", typ: i(0) },
     ], false),
@@ -3024,6 +3080,9 @@ const typeMap: any = {
     "StdSerializer": o([
         { json: "StdSerializer", js: "StdSerializer", typ: i(0) },
     ], false),
+    "TextNode": o([
+        { json: "TextNode", js: "TextNode", typ: i(0) },
+    ], false),
     "TimeOnly": o([
         { json: "TimeOnly", js: "TimeOnly", typ: i(0) },
     ], false),
@@ -3039,14 +3098,26 @@ const typeMap: any = {
     "Type": o([
         { json: "Type", js: "Type", typ: i(0) },
     ], false),
-    "UUID": o([
-        { json: "UUID", js: "UUID", typ: i(0) },
+    "Return": o([
+        { json: "return", js: "return", typ: i(0) },
     ], false),
-    "Utf8JSONReader": o([
-        { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: i(0) },
+    "Right": o([
+        { json: "right", js: "right", typ: i(0) },
     ], false),
-    "Utf8JSONWriter": o([
-        { json: "Utf8JsonWriter", js: "Utf8JsonWriter", typ: i(0) },
+    "RuntimeType": o([
+        { json: "runtimeType", js: "runtimeType", typ: i(0) },
+    ], false),
+    "S": o([
+        { json: "s", js: "s", typ: i(0) },
+    ], false),
+    "Sbyte": o([
+        { json: "sbyte", js: "sbyte", typ: i(0) },
+    ], false),
+    "Sealed": o([
+        { json: "sealed", js: "sealed", typ: i(0) },
+    ], false),
+    "Select": o([
+        { json: "select", js: "select", typ: i(0) },
     ], false),
     "SelfClass": o([
         { json: "self", js: "self", typ: i(0) },
@@ -3174,6 +3245,43 @@ const typeMap: any = {
     "Union": o([
         { json: "union", js: "union", 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: "unowned", js: "unowned", typ: r("Unowned") },
+        { 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") },
+        { json: "void", js: "void", typ: r("Void") },
+        { json: "volatile", js: "volatile", typ: r("Volatile") },
+        { json: "wchar_t", js: "wchar_t", typ: r("WcharT") },
+        { json: "weak", js: "weak", typ: r("Weak") },
+        { json: "where", js: "where", typ: r("Where") },
+        { json: "while", js: "while", typ: r("While") },
+        { json: "willSet", js: "willSet", typ: r("WillSet") },
+        { json: "with", js: "with", typ: r("With") },
+        { json: "xor", js: "xor", typ: r("Xor") },
+        { 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),
     "Unowned": o([
         { json: "unowned", js: "unowned", typ: i(0) },
     ], false),
@@ -3195,24 +3303,6 @@ const typeMap: any = {
     "Virtual": o([
         { json: "virtual", js: "virtual", typ: i(0) },
     ], false),
-    "Obj6": o([
-        { json: "YES", js: "YES", typ: r("Yes") },
-        { json: "dummy", js: "dummy", typ: i(0) },
-        { json: "void", js: "void", typ: r("Void") },
-        { json: "volatile", js: "volatile", typ: r("Volatile") },
-        { json: "wchar_t", js: "wchar_t", typ: r("WcharT") },
-        { json: "weak", js: "weak", typ: r("Weak") },
-        { json: "where", js: "where", typ: r("Where") },
-        { json: "while", js: "while", typ: r("While") },
-        { json: "willSet", js: "willSet", typ: r("WillSet") },
-        { json: "with", js: "with", typ: r("With") },
-        { json: "xor", js: "xor", typ: r("Xor") },
-        { json: "xor_eq", js: "xor_eq", typ: r("XorEq") },
-        { json: "yield", js: "yield", typ: r("Yield") },
-    ], false),
-    "Yes": o([
-        { json: "YES", js: "YES", 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..36a764a 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
@@ -19,13 +19,14 @@ export type TopLevel = {
 
 export type Obj1 = {
     Any:             Any;
+    ArrayNode:       ArrayNode;
     BOOL:            Bool;
+    BooleanNode:     BooleanNode;
     Calendar:        Calendar;
     Class:           Class;
     Codable:         Codable;
     CodingKey:       CodingKey;
     CodingKeys:      CodingKeys;
-    CultureInfo:     CultureInfo;
     _:               Empty;
     _Bool:           BoolClass;
     _Complex:        Complex;
@@ -81,7 +82,6 @@ export type Obj1 = {
     convenience:     Convenience;
     convert:         ConvertClass;
     converter:       Converter;
-    date:            DateClass;
     dummy:           number;
 }
 
@@ -89,10 +89,18 @@ export type Any = {
     Any: number;
 }
 
+export type ArrayNode = {
+    ArrayNode: number;
+}
+
 export type Bool = {
     BOOL: number;
 }
 
+export type BooleanNode = {
+    BooleanNode: number;
+}
+
 export type Calendar = {
     Calendar: number;
 }
@@ -113,10 +121,6 @@ export type CodingKeys = {
     CodingKeys: number;
 }
 
-export type CultureInfo = {
-    CultureInfo: number;
-}
-
 export type Empty = {
     _: number;
 }
@@ -337,76 +341,76 @@ export type Converter = {
     converter: number;
 }
 
-export type DateClass = {
-    date: number;
+export type Obj2 = {
+    CultureInfo:            CultureInfo;
+    DateFormatter:          DateFormatter;
+    DateOnly:               DateOnly;
+    DateOnlyConverter:      DateOnlyConverter;
+    DateTime:               DateTime;
+    DateTimeStyles:         DateTimeStyles;
+    Decoder:                Decoder;
+    DecodingError:          DecodingError;
+    DeserializationFeature: DeserializationFeature;
+    DoubleNode:             DoubleNode;
+    Encoder:                Encoder;
+    EnumValues:             EnumValues;
+    Equatable:              Equatable;
+    False:                  False;
+    FormatException:        FormatException;
+    date:                   DateClass;
+    date_parse_handling:    DateParseHandling;
+    debugger:               Debugger;
+    decimal:                Decimal;
+    declare:                Declare;
+    decltype:               Decltype;
+    decode_string:          DecodeString;
+    def:                    Def;
+    default:                Default;
+    defer:                  Defer;
+    deinit:                 Deinit;
+    del:                    Del;
+    delegate:               Delegate;
+    delete:                 Delete;
+    dict:                   Dict;
+    dictionary:             Dictionary;
+    didSet:                 DidSet;
+    do:                     Do;
+    double:                 Double;
+    dummy:                  number;
+    dynamic:                Dynamic;
+    dynamic_cast:           DynamicCast;
+    elif:                   Elif;
+    else:                   Else;
+    encode_quick_type:      EncodeQuickType;
+    enum:                   Enum;
+    equalityContract:       EqualityContract;
+    event:                  Event;
+    except:                 Except;
+    exception:              Exception;
+    explicit:               Explicit;
+    export:                 Export;
+    exposing:               Exposing;
+    extends:                Extends;
+    extension:              Extension;
+    extern:                 Extern;
+    fallthrough:            Fallthrough;
+    false:                  FalseClass;
+    fileprivate:            Fileprivate;
+    final:                  Final;
+    finally:                Finally;
+    fixed:                  Fixed;
+    float:                  Float;
+    for:                    For;
+    foreach:                Foreach;
+    friend:                 Friend;
+    from:                   From;
+    from_json:              FromJSON;
+    func:                   Func;
+    function:               Function;
 }
 
-export type Obj2 = {
-    DateFormatter:       DateFormatter;
-    DateOnly:            DateOnly;
-    DateOnlyConverter:   DateOnlyConverter;
-    DateTime:            DateTime;
-    DateTimeStyles:      DateTimeStyles;
-    Decoder:             Decoder;
-    DecodingError:       DecodingError;
-    Encoder:             Encoder;
-    EnumValues:          EnumValues;
-    Equatable:           Equatable;
-    False:               False;
-    FormatException:     FormatException;
-    date_parse_handling: DateParseHandling;
-    debugger:            Debugger;
-    decimal:             Decimal;
-    declare:             Declare;
-    decltype:            Decltype;
-    decode_string:       DecodeString;
-    def:                 Def;
-    default:             Default;
-    defer:               Defer;
-    deinit:              Deinit;
-    del:                 Del;
-    delegate:            Delegate;
-    delete:              Delete;
-    dict:                Dict;
-    dictionary:          Dictionary;
-    didSet:              DidSet;
-    do:                  Do;
-    double:              Double;
-    dummy:               number;
-    dynamic:             Dynamic;
-    dynamic_cast:        DynamicCast;
-    elif:                Elif;
-    else:                Else;
-    encode_quick_type:   EncodeQuickType;
-    enum:                Enum;
-    equalityContract:    EqualityContract;
-    event:               Event;
-    except:              Except;
-    exception:           Exception;
-    explicit:            Explicit;
-    export:              Export;
-    exposing:            Exposing;
-    extends:             Extends;
-    extension:           Extension;
-    extern:              Extern;
-    fallthrough:         Fallthrough;
-    false:               FalseClass;
-    fileprivate:         Fileprivate;
-    final:               Final;
-    finally:             Finally;
-    fixed:               Fixed;
-    float:               Float;
-    for:                 For;
-    foreach:             Foreach;
-    friend:              Friend;
-    from:                From;
-    from_json:           FromJSON;
-    func:                Func;
-    function:            Function;
-    get:                 Get;
-    global:              Global;
-    go:                  Go;
-    goto:                Goto;
+export type CultureInfo = {
+    CultureInfo: number;
 }
 
 export type DateFormatter = {
@@ -437,6 +441,14 @@ export type DecodingError = {
     DecodingError: number;
 }
 
+export type DeserializationFeature = {
+    DeserializationFeature: number;
+}
+
+export type DoubleNode = {
+    DoubleNode: number;
+}
+
 export type Encoder = {
     Encoder: number;
 }
@@ -459,6 +471,10 @@ export type FormatException = {
     FormatException: number;
 }
 
+export type DateClass = {
+    date: number;
+}
+
 export type DateParseHandling = {
     date_parse_handling: number;
 }
@@ -651,26 +667,11 @@ export type Function = {
     function: number;
 }
 
-export type Get = {
-    get: number;
-}
-
-export type Global = {
-    global: number;
-}
-
-export type Go = {
-    go: number;
-}
-
-export type Goto = {
-    goto: number;
-}
-
 export type Obj3 = {
     Hashable:                   Hashable;
     Hasher:                     Hasher;
     IMP:                        Imp;
+    IntNode:                    IntNode;
     IsoDateTimeOffsetConverter: ISODateTimeOffsetConverter;
     JSONAny:                    JSONAny;
     JSONCodingKey:              JSONCodingKey;
@@ -684,9 +685,13 @@ export type Obj3 = {
     JsonReader:                 JSONReader;
     JsonTokenType:              JSONTokenType;
     Locale:                     Locale;
+    LongNode:                   LongNode;
     MapEntry:                   MapEntry;
-    NO:                         No;
     dummy:                      number;
+    get:                        Get;
+    global:                     Global;
+    go:                         Go;
+    goto:                       Goto;
     guard:                      Guard;
     hasOwnProperty:             HasOwnProperty;
     hashCode:                   HashCode;
@@ -728,11 +733,6 @@ export type Obj3 = {
     mutable:                    Mutable;
     mutating:                   Mutating;
     namespace:                  Namespace;
-    native:                     Native;
-    new:                        New;
-    newtonsoft:                 Newtonsoft;
-    nil:                        Nil;
-    noexcept:                   Noexcept;
 }
 
 export type Hashable = {
@@ -747,6 +747,10 @@ export type Imp = {
     IMP: number;
 }
 
+export type IntNode = {
+    IntNode: number;
+}
+
 export type ISODateTimeOffsetConverter = {
     IsoDateTimeOffsetConverter: number;
 }
@@ -799,12 +803,28 @@ export type Locale = {
     Locale: number;
 }
 
+export type LongNode = {
+    LongNode: number;
+}
+
 export type MapEntry = {
     MapEntry: number;
 }
 
-export type No = {
-    NO: number;
+export type Get = {
+    get: number;
+}
+
+export type Global = {
+    global: number;
+}
+
+export type Go = {
+    go: number;
+}
+
+export type Goto = {
+    goto: number;
 }
 
 export type Guard = {
@@ -971,38 +991,25 @@ export type Namespace = {
     namespace: number;
 }
 
-export type Native = {
-    native: number;
-}
-
-export type New = {
-    new: number;
-}
-
-export type Newtonsoft = {
-    newtonsoft: number;
-}
-
-export type Nil = {
-    nil: number;
-}
-
-export type Noexcept = {
-    noexcept: number;
-}
-
 export type Obj4 = {
+    NO:               No;
     NSError:          NSError;
     NSObject:         NSObject;
     NSString:         NSString;
     NULL:             Null;
     None:             None;
+    NullNode:         NullNode;
     ObjectMapper:     ObjectMapper;
+    ObjectNode:       ObjectNode;
     Protocol:         Protocol;
     RegExp:           RegExp;
-    SEL:              Sel;
     dummy:            number;
+    native:           Native;
+    new:              New;
+    newtonsoft:       Newtonsoft;
+    nil:              Nil;
     noSuchMethod:     NoSuchMethod;
+    noexcept:         Noexcept;
     nonatomic:        Nonatomic;
     none:             NoneClass;
     nonlocal:         Nonlocal;
@@ -1050,13 +1057,10 @@ export type Obj4 = {
     restrict:         Restrict;
     retain:           Retain;
     rethrows:         Rethrows;
-    return:           Return;
-    right:            Right;
-    runtimeType:      RuntimeType;
-    s:                S;
-    sbyte:            Sbyte;
-    sealed:           Sealed;
-    select:           Select;
+}
+
+export type No = {
+    NO: number;
 }
 
 export type NSError = {
@@ -1079,10 +1083,18 @@ export type None = {
     None: number;
 }
 
+export type NullNode = {
+    NullNode: number;
+}
+
 export type ObjectMapper = {
     ObjectMapper: number;
 }
 
+export type ObjectNode = {
+    ObjectNode: number;
+}
+
 export type Protocol = {
     Protocol: number;
 }
@@ -1091,14 +1103,30 @@ export type RegExp = {
     RegExp: string;
 }
 
-export type Sel = {
-    SEL: number;
+export type Native = {
+    native: number;
+}
+
+export type New = {
+    new: number;
+}
+
+export type Newtonsoft = {
+    newtonsoft: number;
+}
+
+export type Nil = {
+    nil: number;
 }
 
 export type NoSuchMethod = {
     noSuchMethod: number;
 }
 
+export type Noexcept = {
+    noexcept: number;
+}
+
 export type Nonatomic = {
     nonatomic: number;
 }
@@ -1287,100 +1315,76 @@ export type Rethrows = {
     rethrows: number;
 }
 
-export type Return = {
-    return: number;
-}
-
-export type Right = {
-    right: number;
-}
-
-export type RuntimeType = {
-    runtimeType: number;
-}
-
-export type S = {
-    s: number;
-}
-
-export type Sbyte = {
-    sbyte: number;
-}
-
-export type Sealed = {
-    sealed: number;
-}
-
-export type Select = {
-    select: number;
+export type Obj5 = {
+    SEL:                  Sel;
+    Self:                 Self;
+    Sendable:             Sendable;
+    SerializationFeature: SerializationFeature;
+    SerializerProvider:   SerializerProvider;
+    SimpleModule:         SimpleModule;
+    Standards:            Standards;
+    StdDeserializer:      StdDeserializer;
+    StdSerializer:        StdSerializer;
+    TextNode:             TextNode;
+    TimeOnly:             TimeOnly;
+    TimeOnlyConverter:    TimeOnlyConverter;
+    TimeZone:             TimeZone;
+    True:                 True;
+    Type:                 Type;
+    dummy:                number;
+    return:               Return;
+    right:                Right;
+    runtimeType:          RuntimeType;
+    s:                    S;
+    sbyte:                Sbyte;
+    sealed:               Sealed;
+    select:               Select;
+    self:                 SelfClass;
+    serialize:            Serialize;
+    set:                  Set;
+    short:                Short;
+    signed:               Signed;
+    sizeof:               Sizeof;
+    stackalloc:           Stackalloc;
+    static:               Static;
+    static_assert:        StaticAssert;
+    static_cast:          StaticCast;
+    strictfp:             Strictfp;
+    string:               String;
+    struct:               Struct;
+    subscript:            Subscript;
+    super:                Super;
+    switch:               Switch;
+    symbol:               Symbol;
+    synchronized:         Synchronized;
+    system:               System;
+    template:             Template;
+    then:                 Then;
+    this:                 This;
+    thread_local:         ThreadLocal;
+    throw:                Throw;
+    throws:               Throws;
+    toString:             ToString;
+    to_json:              ToJSON;
+    top_level:            TopLevelClass;
+    transient:            Transient;
+    true:                 TrueClass;
+    try:                  Try;
+    type:                 TypeClass;
+    typealias:            Typealias;
+    typedef:              Typedef;
+    typeid:               Typeid;
+    typename:             Typename;
+    typeof:               Typeof;
+    uint:                 Uint;
+    ulong:                Ulong;
+    unchecked:            Unchecked;
+    undefined:            Undefined;
+    union:                Union;
 }
 
-export type Obj5 = {
-    Self:               Self;
-    Sendable:           Sendable;
-    SerializerProvider: SerializerProvider;
-    SimpleModule:       SimpleModule;
-    Standards:          Standards;
-    StdDeserializer:    StdDeserializer;
-    StdSerializer:      StdSerializer;
-    TimeOnly:           TimeOnly;
-    TimeOnlyConverter:  TimeOnlyConverter;
-    TimeZone:           TimeZone;
-    True:               True;
-    Type:               Type;
-    UUID:               UUID;
-    Utf8JsonReader:     Utf8JSONReader;
-    Utf8JsonWriter:     Utf8JSONWriter;
-    dummy:              number;
-    self:               SelfClass;
-    serialize:          Serialize;
-    set:                Set;
-    short:              Short;
-    signed:             Signed;
-    sizeof:             Sizeof;
-    stackalloc:         Stackalloc;
-    static:             Static;
-    static_assert:      StaticAssert;
-    static_cast:        StaticCast;
-    strictfp:           Strictfp;
-    string:             String;
-    struct:             Struct;
-    subscript:          Subscript;
-    super:              Super;
-    switch:             Switch;
-    symbol:             Symbol;
-    synchronized:       Synchronized;
-    system:             System;
-    template:           Template;
-    then:               Then;
-    this:               This;
-    thread_local:       ThreadLocal;
-    throw:              Throw;
-    throws:             Throws;
-    toString:           ToString;
-    to_json:            ToJSON;
-    top_level:          TopLevelClass;
-    transient:          Transient;
-    true:               TrueClass;
-    try:                Try;
-    type:               TypeClass;
-    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;
-    var:                Var;
-    virtual:            Virtual;
+export type Sel = {
+    SEL: number;
 }
 
 export type Self = {
@@ -1391,6 +1395,10 @@ export type Sendable = {
     Sendable: number;
 }
 
+export type SerializationFeature = {
+    SerializationFeature: number;
+}
+
 export type SerializerProvider = {
     SerializerProvider: number;
 }
@@ -1411,6 +1419,10 @@ export type StdSerializer = {
     StdSerializer: number;
 }
 
+export type TextNode = {
+    TextNode: number;
+}
+
 export type TimeOnly = {
     TimeOnly: number;
 }
@@ -1431,16 +1443,32 @@ export type Type = {
     Type: number;
 }
 
-export type UUID = {
-    UUID: number;
+export type Return = {
+    return: number;
 }
 
-export type Utf8JSONReader = {
-    Utf8JsonReader: number;
+export type Right = {
+    right: number;
 }
 
-export type Utf8JSONWriter = {
-    Utf8JsonWriter: number;
+export type RuntimeType = {
+    runtimeType: number;
+}
+
+export type S = {
+    s: number;
+}
+
+export type Sbyte = {
+    sbyte: number;
+}
+
+export type Sealed = {
+    sealed: number;
+}
+
+export type Select = {
+    select: number;
 }
 
 export type SelfClass = {
@@ -1611,6 +1639,48 @@ export type Union = {
     union: number;
 }
 
+export type Obj6 = {
+    UUID:           UUID;
+    Utf8JsonReader: Utf8JSONReader;
+    Utf8JsonWriter: Utf8JSONWriter;
+    YES:            Yes;
+    dummy:          number;
+    unowned:        Unowned;
+    unsafe:         Unsafe;
+    unsigned:       Unsigned;
+    ushort:         Ushort;
+    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 UUID = {
+    UUID: number;
+}
+
+export type Utf8JSONReader = {
+    Utf8JsonReader: number;
+}
+
+export type Utf8JSONWriter = {
+    Utf8JsonWriter: number;
+}
+
+export type Yes = {
+    YES: number;
+}
+
 export type Unowned = {
     unowned: number;
 }
@@ -1639,26 +1709,6 @@ export type Virtual = {
     virtual: 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 Yes = {
-    YES: number;
-}
-
 export type Void = {
     void: number;
 }
@@ -1902,13 +1952,14 @@ const typeMap: any = {
     ], false),
     "Obj1": o([
         { json: "Any", js: "Any", typ: r("Any") },
+        { json: "ArrayNode", js: "ArrayNode", typ: r("ArrayNode") },
         { json: "BOOL", js: "BOOL", typ: r("Bool") },
+        { json: "BooleanNode", js: "BooleanNode", typ: r("BooleanNode") },
         { json: "Calendar", js: "Calendar", typ: r("Calendar") },
         { json: "Class", js: "Class", typ: r("Class") },
         { json: "Codable", js: "Codable", typ: r("Codable") },
         { json: "CodingKey", js: "CodingKey", typ: r("CodingKey") },
         { json: "CodingKeys", js: "CodingKeys", typ: r("CodingKeys") },
-        { json: "CultureInfo", js: "CultureInfo", typ: r("CultureInfo") },
         { json: "_", js: "_", typ: r("Empty") },
         { json: "_Bool", js: "_Bool", typ: r("BoolClass") },
         { json: "_Complex", js: "_Complex", typ: r("Complex") },
@@ -1964,15 +2015,20 @@ const typeMap: any = {
         { json: "convenience", js: "convenience", typ: r("Convenience") },
         { json: "convert", js: "convert", typ: r("ConvertClass") },
         { json: "converter", js: "converter", typ: r("Converter") },
-        { json: "date", js: "date", typ: r("DateClass") },
         { json: "dummy", js: "dummy", typ: i(0) },
     ], false),
     "Any": o([
         { json: "Any", js: "Any", typ: i(0) },
     ], false),
+    "ArrayNode": o([
+        { json: "ArrayNode", js: "ArrayNode", typ: i(0) },
+    ], false),
     "Bool": o([
         { json: "BOOL", js: "BOOL", typ: i(0) },
     ], false),
+    "BooleanNode": o([
+        { json: "BooleanNode", js: "BooleanNode", typ: i(0) },
+    ], false),
     "Calendar": o([
         { json: "Calendar", js: "Calendar", typ: i(0) },
     ], false),
@@ -1988,9 +2044,6 @@ const typeMap: any = {
     "CodingKeys": o([
         { json: "CodingKeys", js: "CodingKeys", typ: i(0) },
     ], false),
-    "CultureInfo": o([
-        { json: "CultureInfo", js: "CultureInfo", typ: i(0) },
-    ], false),
     "Empty": o([
         { json: "_", js: "_", typ: i(0) },
     ], false),
@@ -2156,10 +2209,8 @@ const typeMap: any = {
     "Converter": o([
         { json: "converter", js: "converter", typ: i(0) },
     ], false),
-    "DateClass": o([
-        { json: "date", js: "date", typ: i(0) },
-    ], false),
     "Obj2": o([
+        { json: "CultureInfo", js: "CultureInfo", typ: r("CultureInfo") },
         { json: "DateFormatter", js: "DateFormatter", typ: r("DateFormatter") },
         { json: "DateOnly", js: "DateOnly", typ: r("DateOnly") },
         { json: "DateOnlyConverter", js: "DateOnlyConverter", typ: r("DateOnlyConverter") },
@@ -2167,11 +2218,14 @@ const typeMap: any = {
         { json: "DateTimeStyles", js: "DateTimeStyles", typ: r("DateTimeStyles") },
         { json: "Decoder", js: "Decoder", typ: r("Decoder") },
         { json: "DecodingError", js: "DecodingError", typ: r("DecodingError") },
+        { json: "DeserializationFeature", js: "DeserializationFeature", typ: r("DeserializationFeature") },
+        { json: "DoubleNode", js: "DoubleNode", typ: r("DoubleNode") },
         { json: "Encoder", js: "Encoder", typ: r("Encoder") },
         { json: "EnumValues", js: "EnumValues", typ: r("EnumValues") },
         { json: "Equatable", js: "Equatable", typ: r("Equatable") },
         { json: "False", js: "False", typ: r("False") },
         { json: "FormatException", js: "FormatException", typ: r("FormatException") },
+        { json: "date", js: "date", typ: r("DateClass") },
         { json: "date_parse_handling", js: "date_parse_handling", typ: r("DateParseHandling") },
         { json: "debugger", js: "debugger", typ: r("Debugger") },
         { json: "decimal", js: "decimal", typ: r("Decimal") },
@@ -2221,10 +2275,9 @@ const typeMap: any = {
         { json: "from_json", js: "from_json", typ: r("FromJSON") },
         { json: "func", js: "func", typ: r("Func") },
         { json: "function", js: "function", typ: r("Function") },
-        { json: "get", js: "get", typ: r("Get") },
-        { json: "global", js: "global", typ: r("Global") },
-        { json: "go", js: "go", typ: r("Go") },
-        { json: "goto", js: "goto", typ: r("Goto") },
+    ], false),
+    "CultureInfo": o([
+        { json: "CultureInfo", js: "CultureInfo", typ: i(0) },
     ], false),
     "DateFormatter": o([
         { json: "DateFormatter", js: "DateFormatter", typ: i(0) },
@@ -2247,6 +2300,12 @@ const typeMap: any = {
     "DecodingError": o([
         { json: "DecodingError", js: "DecodingError", typ: i(0) },
     ], false),
+    "DeserializationFeature": o([
+        { json: "DeserializationFeature", js: "DeserializationFeature", typ: i(0) },
+    ], false),
+    "DoubleNode": o([
+        { json: "DoubleNode", js: "DoubleNode", typ: i(0) },
+    ], false),
     "Encoder": o([
         { json: "Encoder", js: "Encoder", typ: i(0) },
     ], false),
@@ -2262,6 +2321,9 @@ const typeMap: any = {
     "FormatException": o([
         { json: "FormatException", js: "FormatException", typ: i(0) },
     ], false),
+    "DateClass": o([
+        { json: "date", js: "date", typ: i(0) },
+    ], false),
     "DateParseHandling": o([
         { json: "date_parse_handling", js: "date_parse_handling", typ: i(0) },
     ], false),
@@ -2406,22 +2468,11 @@ const typeMap: any = {
     "Function": o([
         { json: "function", js: "function", typ: i(0) },
     ], false),
-    "Get": o([
-        { json: "get", js: "get", typ: i(0) },
-    ], false),
-    "Global": o([
-        { json: "global", js: "global", typ: i(0) },
-    ], false),
-    "Go": o([
-        { json: "go", js: "go", typ: i(0) },
-    ], false),
-    "Goto": o([
-        { json: "goto", js: "goto", typ: i(0) },
-    ], false),
     "Obj3": o([
         { json: "Hashable", js: "Hashable", typ: r("Hashable") },
         { json: "Hasher", js: "Hasher", typ: r("Hasher") },
         { json: "IMP", js: "IMP", typ: r("Imp") },
+        { json: "IntNode", js: "IntNode", typ: r("IntNode") },
         { json: "IsoDateTimeOffsetConverter", js: "IsoDateTimeOffsetConverter", typ: r("ISODateTimeOffsetConverter") },
         { json: "JSONAny", js: "JSONAny", typ: r("JSONAny") },
         { json: "JSONCodingKey", js: "JSONCodingKey", typ: r("JSONCodingKey") },
@@ -2435,9 +2486,13 @@ const typeMap: any = {
         { json: "JsonReader", js: "JsonReader", typ: r("JSONReader") },
         { json: "JsonTokenType", js: "JsonTokenType", typ: r("JSONTokenType") },
         { json: "Locale", js: "Locale", typ: r("Locale") },
+        { json: "LongNode", js: "LongNode", typ: r("LongNode") },
         { json: "MapEntry", js: "MapEntry", typ: r("MapEntry") },
-        { json: "NO", js: "NO", typ: r("No") },
         { json: "dummy", js: "dummy", typ: i(0) },
+        { json: "get", js: "get", typ: r("Get") },
+        { json: "global", js: "global", typ: r("Global") },
+        { json: "go", js: "go", typ: r("Go") },
+        { json: "goto", js: "goto", typ: r("Goto") },
         { json: "guard", js: "guard", typ: r("Guard") },
         { json: "hasOwnProperty", js: "hasOwnProperty", typ: r("HasOwnProperty") },
         { json: "hashCode", js: "hashCode", typ: r("HashCode") },
@@ -2479,11 +2534,6 @@ const typeMap: any = {
         { json: "mutable", js: "mutable", typ: r("Mutable") },
         { json: "mutating", js: "mutating", typ: r("Mutating") },
         { json: "namespace", js: "namespace", typ: r("Namespace") },
-        { json: "native", js: "native", typ: r("Native") },
-        { json: "new", js: "new", typ: r("New") },
-        { json: "newtonsoft", js: "newtonsoft", typ: r("Newtonsoft") },
-        { json: "nil", js: "nil", typ: r("Nil") },
-        { json: "noexcept", js: "noexcept", typ: r("Noexcept") },
     ], false),
     "Hashable": o([
         { json: "Hashable", js: "Hashable", typ: i(0) },
@@ -2494,6 +2544,9 @@ const typeMap: any = {
     "Imp": o([
         { json: "IMP", js: "IMP", typ: i(0) },
     ], false),
+    "IntNode": o([
+        { json: "IntNode", js: "IntNode", typ: i(0) },
+    ], false),
     "ISODateTimeOffsetConverter": o([
         { json: "IsoDateTimeOffsetConverter", js: "IsoDateTimeOffsetConverter", typ: i(0) },
     ], false),
@@ -2533,11 +2586,23 @@ const typeMap: any = {
     "Locale": o([
         { json: "Locale", js: "Locale", typ: i(0) },
     ], false),
+    "LongNode": o([
+        { json: "LongNode", js: "LongNode", typ: i(0) },
+    ], false),
     "MapEntry": o([
         { json: "MapEntry", js: "MapEntry", typ: i(0) },
     ], false),
-    "No": o([
-        { json: "NO", js: "NO", typ: i(0) },
+    "Get": o([
+        { json: "get", js: "get", typ: i(0) },
+    ], false),
+    "Global": o([
+        { json: "global", js: "global", typ: i(0) },
+    ], false),
+    "Go": o([
+        { json: "go", js: "go", typ: i(0) },
+    ], false),
+    "Goto": o([
+        { json: "goto", js: "goto", typ: i(0) },
     ], false),
     "Guard": o([
         { json: "guard", js: "guard", typ: i(0) },
@@ -2662,33 +2727,25 @@ const typeMap: any = {
     "Namespace": o([
         { json: "namespace", js: "namespace", typ: i(0) },
     ], false),
-    "Native": o([
-        { json: "native", js: "native", typ: i(0) },
-    ], false),
-    "New": o([
-        { json: "new", js: "new", typ: i(0) },
-    ], false),
-    "Newtonsoft": o([
-        { json: "newtonsoft", js: "newtonsoft", typ: i(0) },
-    ], false),
-    "Nil": o([
-        { json: "nil", js: "nil", typ: i(0) },
-    ], false),
-    "Noexcept": o([
-        { json: "noexcept", js: "noexcept", typ: i(0) },
-    ], false),
     "Obj4": o([
+        { json: "NO", js: "NO", typ: r("No") },
         { json: "NSError", js: "NSError", typ: r("NSError") },
         { json: "NSObject", js: "NSObject", typ: r("NSObject") },
         { json: "NSString", js: "NSString", typ: r("NSString") },
         { json: "NULL", js: "NULL", typ: r("Null") },
         { json: "None", js: "None", typ: r("None") },
+        { json: "NullNode", js: "NullNode", typ: r("NullNode") },
         { json: "ObjectMapper", js: "ObjectMapper", typ: r("ObjectMapper") },
+        { json: "ObjectNode", js: "ObjectNode", typ: r("ObjectNode") },
         { json: "Protocol", js: "Protocol", typ: r("Protocol") },
         { json: "RegExp", js: "RegExp", typ: r("RegExp") },
-        { json: "SEL", js: "SEL", typ: r("Sel") },
         { json: "dummy", js: "dummy", typ: i(0) },
+        { json: "native", js: "native", typ: r("Native") },
+        { json: "new", js: "new", typ: r("New") },
+        { json: "newtonsoft", js: "newtonsoft", typ: r("Newtonsoft") },
+        { json: "nil", js: "nil", typ: r("Nil") },
         { json: "noSuchMethod", js: "noSuchMethod", typ: r("NoSuchMethod") },
+        { json: "noexcept", js: "noexcept", typ: r("Noexcept") },
         { json: "nonatomic", js: "nonatomic", typ: r("Nonatomic") },
         { json: "none", js: "none", typ: r("NoneClass") },
         { json: "nonlocal", js: "nonlocal", typ: r("Nonlocal") },
@@ -2736,13 +2793,9 @@ const typeMap: any = {
         { json: "restrict", js: "restrict", typ: r("Restrict") },
         { json: "retain", js: "retain", typ: r("Retain") },
         { json: "rethrows", js: "rethrows", typ: r("Rethrows") },
-        { json: "return", js: "return", typ: r("Return") },
-        { json: "right", js: "right", typ: r("Right") },
-        { json: "runtimeType", js: "runtimeType", typ: r("RuntimeType") },
-        { json: "s", js: "s", typ: r("S") },
-        { json: "sbyte", js: "sbyte", typ: r("Sbyte") },
-        { json: "sealed", js: "sealed", typ: r("Sealed") },
-        { json: "select", js: "select", typ: r("Select") },
+    ], false),
+    "No": o([
+        { json: "NO", js: "NO", typ: i(0) },
     ], false),
     "NSError": o([
         { json: "NSError", js: "NSError", typ: i(0) },
@@ -2759,21 +2812,39 @@ const typeMap: any = {
     "None": o([
         { json: "None", js: "None", typ: i(0) },
     ], false),
+    "NullNode": o([
+        { json: "NullNode", js: "NullNode", typ: i(0) },
+    ], false),
     "ObjectMapper": o([
         { json: "ObjectMapper", js: "ObjectMapper", typ: i(0) },
     ], false),
+    "ObjectNode": o([
+        { json: "ObjectNode", js: "ObjectNode", typ: i(0) },
+    ], false),
     "Protocol": o([
         { json: "Protocol", js: "Protocol", typ: i(0) },
     ], false),
     "RegExp": o([
         { json: "RegExp", js: "RegExp", typ: { uuid: "" } },
     ], false),
-    "Sel": o([
-        { json: "SEL", js: "SEL", typ: i(0) },
+    "Native": o([
+        { json: "native", js: "native", typ: i(0) },
+    ], false),
+    "New": o([
+        { json: "new", js: "new", typ: i(0) },
+    ], false),
+    "Newtonsoft": o([
+        { json: "newtonsoft", js: "newtonsoft", typ: i(0) },
+    ], false),
+    "Nil": o([
+        { json: "nil", js: "nil", typ: i(0) },
     ], false),
     "NoSuchMethod": o([
         { json: "noSuchMethod", js: "noSuchMethod", typ: i(0) },
     ], false),
+    "Noexcept": o([
+        { json: "noexcept", js: "noexcept", typ: i(0) },
+    ], false),
     "Nonatomic": o([
         { json: "nonatomic", js: "nonatomic", typ: i(0) },
     ], false),
@@ -2915,44 +2986,30 @@ const typeMap: any = {
     "Rethrows": o([
         { json: "rethrows", js: "rethrows", typ: i(0) },
     ], false),
-    "Return": o([
-        { json: "return", js: "return", typ: i(0) },
-    ], false),
-    "Right": o([
-        { json: "right", js: "right", typ: i(0) },
-    ], false),
-    "RuntimeType": o([
-        { json: "runtimeType", js: "runtimeType", typ: i(0) },
-    ], false),
-    "S": o([
-        { json: "s", js: "s", typ: i(0) },
-    ], false),
-    "Sbyte": o([
-        { json: "sbyte", js: "sbyte", typ: i(0) },
-    ], false),
-    "Sealed": o([
-        { json: "sealed", js: "sealed", typ: i(0) },
-    ], false),
-    "Select": o([
-        { json: "select", js: "select", typ: i(0) },
-    ], false),
     "Obj5": o([
+        { json: "SEL", js: "SEL", typ: r("Sel") },
         { json: "Self", js: "Self", typ: r("Self") },
         { json: "Sendable", js: "Sendable", typ: r("Sendable") },
+        { json: "SerializationFeature", js: "SerializationFeature", typ: r("SerializationFeature") },
         { json: "SerializerProvider", js: "SerializerProvider", typ: r("SerializerProvider") },
         { json: "SimpleModule", js: "SimpleModule", typ: r("SimpleModule") },
         { json: "Standards", js: "Standards", typ: r("Standards") },
         { json: "StdDeserializer", js: "StdDeserializer", typ: r("StdDeserializer") },
         { json: "StdSerializer", js: "StdSerializer", typ: r("StdSerializer") },
+        { json: "TextNode", js: "TextNode", typ: r("TextNode") },
         { json: "TimeOnly", js: "TimeOnly", typ: r("TimeOnly") },
         { json: "TimeOnlyConverter", js: "TimeOnlyConverter", typ: r("TimeOnlyConverter") },
         { 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: "dummy", js: "dummy", typ: i(0) },
+        { json: "return", js: "return", typ: r("Return") },
+        { json: "right", js: "right", typ: r("Right") },
+        { json: "runtimeType", js: "runtimeType", typ: r("RuntimeType") },
+        { json: "s", js: "s", typ: r("S") },
+        { json: "sbyte", js: "sbyte", typ: r("Sbyte") },
+        { json: "sealed", js: "sealed", typ: r("Sealed") },
+        { json: "select", js: "select", typ: r("Select") },
         { json: "self", js: "self", typ: r("SelfClass") },
         { json: "serialize", js: "serialize", typ: r("Serialize") },
         { json: "set", js: "set", typ: r("Set") },
@@ -2995,13 +3052,9 @@ const typeMap: any = {
         { json: "unchecked", js: "unchecked", typ: r("Unchecked") },
         { json: "undefined", js: "undefined", typ: r("Undefined") },
         { json: "union", js: "union", typ: r("Union") },
-        { json: "unowned", js: "unowned", typ: r("Unowned") },
-        { 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),
+    "Sel": o([
+        { json: "SEL", js: "SEL", typ: i(0) },
     ], false),
     "Self": o([
         { json: "Self", js: "Self", typ: i(0) },
@@ -3009,6 +3062,9 @@ const typeMap: any = {
     "Sendable": o([
         { json: "Sendable", js: "Sendable", typ: i(0) },
     ], false),
+    "SerializationFeature": o([
+        { json: "SerializationFeature", js: "SerializationFeature", typ: i(0) },
+    ], false),
     "SerializerProvider": o([
         { json: "SerializerProvider", js: "SerializerProvider", typ: i(0) },
     ], false),
@@ -3024,6 +3080,9 @@ const typeMap: any = {
     "StdSerializer": o([
         { json: "StdSerializer", js: "StdSerializer", typ: i(0) },
     ], false),
+    "TextNode": o([
+        { json: "TextNode", js: "TextNode", typ: i(0) },
+    ], false),
     "TimeOnly": o([
         { json: "TimeOnly", js: "TimeOnly", typ: i(0) },
     ], false),
@@ -3039,14 +3098,26 @@ const typeMap: any = {
     "Type": o([
         { json: "Type", js: "Type", typ: i(0) },
     ], false),
-    "UUID": o([
-        { json: "UUID", js: "UUID", typ: i(0) },
+    "Return": o([
+        { json: "return", js: "return", typ: i(0) },
     ], false),
-    "Utf8JSONReader": o([
-        { json: "Utf8JsonReader", js: "Utf8JsonReader", typ: i(0) },
+    "Right": o([
+        { json: "right", js: "right", typ: i(0) },
     ], false),
-    "Utf8JSONWriter": o([
-        { json: "Utf8JsonWriter", js: "Utf8JsonWriter", typ: i(0) },
+    "RuntimeType": o([
+        { json: "runtimeType", js: "runtimeType", typ: i(0) },
+    ], false),
+    "S": o([
+        { json: "s", js: "s", typ: i(0) },
+    ], false),
+    "Sbyte": o([
+        { json: "sbyte", js: "sbyte", typ: i(0) },
+    ], false),
+    "Sealed": o([
+        { json: "sealed", js: "sealed", typ: i(0) },
+    ], false),
+    "Select": o([
+        { json: "select", js: "select", typ: i(0) },
     ], false),
     "SelfClass": o([
         { json: "self", js: "self", typ: i(0) },
@@ -3174,6 +3245,43 @@ const typeMap: any = {
     "Union": o([
         { json: "union", js: "union", 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: "unowned", js: "unowned", typ: r("Unowned") },
+        { 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") },
+        { json: "void", js: "void", typ: r("Void") },
+        { json: "volatile", js: "volatile", typ: r("Volatile") },
+        { json: "wchar_t", js: "wchar_t", typ: r("WcharT") },
+        { json: "weak", js: "weak", typ: r("Weak") },
+        { json: "where", js: "where", typ: r("Where") },
+        { json: "while", js: "while", typ: r("While") },
+        { json: "willSet", js: "willSet", typ: r("WillSet") },
+        { json: "with", js: "with", typ: r("With") },
+        { json: "xor", js: "xor", typ: r("Xor") },
+        { 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),
     "Unowned": o([
         { json: "unowned", js: "unowned", typ: i(0) },
     ], false),
@@ -3195,24 +3303,6 @@ const typeMap: any = {
     "Virtual": o([
         { json: "virtual", js: "virtual", typ: i(0) },
     ], false),
-    "Obj6": o([
-        { json: "YES", js: "YES", typ: r("Yes") },
-        { json: "dummy", js: "dummy", typ: i(0) },
-        { json: "void", js: "void", typ: r("Void") },
-        { json: "volatile", js: "volatile", typ: r("Volatile") },
-        { json: "wchar_t", js: "wchar_t", typ: r("WcharT") },
-        { json: "weak", js: "weak", typ: r("Weak") },
-        { json: "where", js: "where", typ: r("Where") },
-        { json: "while", js: "while", typ: r("While") },
-        { json: "willSet", js: "willSet", typ: r("WillSet") },
-        { json: "with", js: "with", typ: r("With") },
-        { json: "xor", js: "xor", typ: r("Xor") },
-        { json: "xor_eq", js: "xor_eq", typ: r("XorEq") },
-        { json: "yield", js: "yield", typ: r("Yield") },
-    ], false),
-    "Yes": o([
-        { json: "YES", js: "YES", 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..3c953a0 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,
 }) {}
@@ -111,6 +95,32 @@ export class Unowned extends S.Class<Unowned>("Unowned")({
     "unowned": S.Int,
 }) {}
 
+export class Obj6 extends S.Class<Obj6>("Obj6")({
+    "dummy": S.Int,
+    "unowned": Unowned,
+    "unsafe": Unsafe,
+    "unsigned": Unsigned,
+    "ushort": Ushort,
+    "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 Union extends S.Class<Union>("Union")({
     "union": S.Int,
 }) {}
@@ -212,6 +222,10 @@ export class Then extends S.Class<Then>("Then")({
     "then": S.Int,
 }) {}
 
+export class TextNode extends S.Class<TextNode>("TextNode")({
+    "TextNode": S.Int,
+}) {}
+
 export class Template extends S.Class<Template>("Template")({
     "template": S.Int,
 }) {}
@@ -308,6 +322,10 @@ export class Serialize extends S.Class<Serialize>("Serialize")({
     "serialize": S.Int,
 }) {}
 
+export class SerializationFeature extends S.Class<SerializationFeature>("SerializationFeature")({
+    "SerializationFeature": S.Int,
+}) {}
+
 export class Sendable extends S.Class<Sendable>("Sendable")({
     "Sendable": S.Int,
 }) {}
@@ -316,6 +334,38 @@ export class Self extends S.Class<Self>("Self")({
     "Self": S.Int,
 }) {}
 
+export class Select extends S.Class<Select>("Select")({
+    "select": S.Int,
+}) {}
+
+export class Sel extends S.Class<Sel>("Sel")({
+    "SEL": S.Int,
+}) {}
+
+export class Sealed extends S.Class<Sealed>("Sealed")({
+    "sealed": S.Int,
+}) {}
+
+export class Sbyte extends S.Class<Sbyte>("Sbyte")({
+    "sbyte": S.Int,
+}) {}
+
+export class SClass extends S.Class<SClass>("SClass")({
+    "s": S.Int,
+}) {}
+
+export class RuntimeType extends S.Class<RuntimeType>("RuntimeType")({
+    "runtimeType": S.Int,
+}) {}
+
+export class Right extends S.Class<Right>("Right")({
+    "right": S.Int,
+}) {}
+
+export class Return extends S.Class<Return>("Return")({
+    "return": S.Int,
+}) {}
+
 export class TypeClass extends S.Class<TypeClass>("TypeClass")({
     "type": S.Int,
 }) {}
@@ -333,8 +383,17 @@ export class Obj5 extends S.Class<Obj5>("Obj5")({
     "self": SelfClass,
     "true": TrueClass,
     "type": TypeClass,
+    "return": Return,
+    "right": Right,
+    "runtimeType": RuntimeType,
+    "s": SClass,
+    "sbyte": Sbyte,
+    "sealed": Sealed,
+    "SEL": Sel,
+    "select": Select,
     "Self": Self,
     "Sendable": Sendable,
+    "SerializationFeature": SerializationFeature,
     "serialize": Serialize,
     "SerializerProvider": SerializerProvider,
     "set": Set,
@@ -359,6 +418,7 @@ export class Obj5 extends S.Class<Obj5>("Obj5")({
     "synchronized": Synchronized,
     "system": System,
     "template": Template,
+    "TextNode": TextNode,
     "then": Then,
     "this": This,
     "thread_local": ThreadLocal,
@@ -384,51 +444,9 @@ export class Obj5 extends S.Class<Obj5>("Obj5")({
     "unchecked": Unchecked,
     "undefined": Undefined,
     "union": Union,
-    "unowned": Unowned,
-    "unsafe": Unsafe,
-    "unsigned": Unsigned,
-    "ushort": Ushort,
-    "using": Using,
-    "Utf8JsonReader": Utf8JsonReader,
-    "Utf8JsonWriter": Utf8JsonWriter,
-    "UUID": Uuid,
-    "var": Var,
-    "virtual": Virtual,
 }) {}
 Object.defineProperty(Obj5.prototype, "toString", { writable: true });
 
-export class Select extends S.Class<Select>("Select")({
-    "select": S.Int,
-}) {}
-
-export class Sel extends S.Class<Sel>("Sel")({
-    "SEL": S.Int,
-}) {}
-
-export class Sealed extends S.Class<Sealed>("Sealed")({
-    "sealed": S.Int,
-}) {}
-
-export class Sbyte extends S.Class<Sbyte>("Sbyte")({
-    "sbyte": S.Int,
-}) {}
-
-export class SClass extends S.Class<SClass>("SClass")({
-    "s": S.Int,
-}) {}
-
-export class RuntimeType extends S.Class<RuntimeType>("RuntimeType")({
-    "runtimeType": S.Int,
-}) {}
-
-export class Right extends S.Class<Right>("Right")({
-    "right": S.Int,
-}) {}
-
-export class Return extends S.Class<Return>("Return")({
-    "return": S.Int,
-}) {}
-
 export class Rethrows extends S.Class<Rethrows>("Rethrows")({
     "rethrows": S.Int,
 }) {}
@@ -581,6 +599,10 @@ export class Of extends S.Class<Of>("Of")({
     "of": S.Int,
 }) {}
 
+export class ObjectNode extends S.Class<ObjectNode>("ObjectNode")({
+    "ObjectNode": S.Int,
+}) {}
+
 export class ObjectMapper extends S.Class<ObjectMapper>("ObjectMapper")({
     "ObjectMapper": S.Int,
 }) {}
@@ -609,6 +631,10 @@ export class Nullptr extends S.Class<Nullptr>("Nullptr")({
     "nullptr": S.Int,
 }) {}
 
+export class NullNode extends S.Class<NullNode>("NullNode")({
+    "NullNode": S.Int,
+}) {}
+
 export class Null extends S.Class<Null>("Null")({
     "NULL": S.Int,
 }) {}
@@ -649,13 +675,43 @@ export class Nonatomic extends S.Class<Nonatomic>("Nonatomic")({
     "nonatomic": S.Int,
 }) {}
 
+export class Noexcept extends S.Class<Noexcept>("Noexcept")({
+    "noexcept": S.Int,
+}) {}
+
 export class NoSuchMethod extends S.Class<NoSuchMethod>("NoSuchMethod")({
     "noSuchMethod": S.Int,
 }) {}
 
+export class No extends S.Class<No>("No")({
+    "NO": S.Int,
+}) {}
+
+export class Nil extends S.Class<Nil>("Nil")({
+    "nil": S.Int,
+}) {}
+
+export class Newtonsoft extends S.Class<Newtonsoft>("Newtonsoft")({
+    "newtonsoft": S.Int,
+}) {}
+
+export class New extends S.Class<New>("New")({
+    "new": S.Int,
+}) {}
+
+export class Native extends S.Class<Native>("Native")({
+    "native": S.Int,
+}) {}
+
 export class Obj4 extends S.Class<Obj4>("Obj4")({
     "dummy": S.Int,
+    "native": Native,
+    "new": New,
+    "newtonsoft": Newtonsoft,
+    "nil": Nil,
+    "NO": No,
     "noSuchMethod": NoSuchMethod,
+    "noexcept": Noexcept,
     "nonatomic": Nonatomic,
     "None": None,
     "nonlocal": Nonlocal,
@@ -666,6 +722,7 @@ export class Obj4 extends S.Class<Obj4>("Obj4")({
     "NSObject": NsObject,
     "NSString": NsString,
     "NULL": Null,
+    "NullNode": NullNode,
     "nullptr": Nullptr,
     "number": Number,
     "none": NoneClass,
@@ -673,6 +730,7 @@ export class Obj4 extends S.Class<Obj4>("Obj4")({
     "protocol": ProtocolClass,
     "object": ObjectClass,
     "ObjectMapper": ObjectMapper,
+    "ObjectNode": ObjectNode,
     "of": Of,
     "oneway": Oneway,
     "open": Open,
@@ -711,38 +769,6 @@ export class Obj4 extends S.Class<Obj4>("Obj4")({
     "restrict": Restrict,
     "retain": Retain,
     "rethrows": Rethrows,
-    "return": Return,
-    "right": Right,
-    "runtimeType": RuntimeType,
-    "s": SClass,
-    "sbyte": Sbyte,
-    "sealed": Sealed,
-    "SEL": Sel,
-    "select": Select,
-}) {}
-
-export class Noexcept extends S.Class<Noexcept>("Noexcept")({
-    "noexcept": S.Int,
-}) {}
-
-export class No extends S.Class<No>("No")({
-    "NO": S.Int,
-}) {}
-
-export class Nil extends S.Class<Nil>("Nil")({
-    "nil": S.Int,
-}) {}
-
-export class Newtonsoft extends S.Class<Newtonsoft>("Newtonsoft")({
-    "newtonsoft": S.Int,
-}) {}
-
-export class New extends S.Class<New>("New")({
-    "new": S.Int,
-}) {}
-
-export class Native extends S.Class<Native>("Native")({
-    "native": S.Int,
 }) {}
 
 export class Namespace extends S.Class<Namespace>("Namespace")({
@@ -773,6 +799,10 @@ export class Map extends S.Class<Map>("Map")({
     "map": S.Int,
 }) {}
 
+export class LongNode extends S.Class<LongNode>("LongNode")({
+    "LongNode": S.Int,
+}) {}
+
 export class Long extends S.Class<Long>("Long")({
     "long": S.Int,
 }) {}
@@ -901,6 +931,10 @@ export class Interface extends S.Class<Interface>("Interface")({
     "interface": S.Int,
 }) {}
 
+export class IntNode extends S.Class<IntNode>("IntNode")({
+    "IntNode": S.Int,
+}) {}
+
 export class Int extends S.Class<Int>("Int")({
     "int": S.Int,
 }) {}
@@ -977,8 +1011,28 @@ export class Guard extends S.Class<Guard>("Guard")({
     "guard": S.Int,
 }) {}
 
+export class Goto extends S.Class<Goto>("Goto")({
+    "goto": S.Int,
+}) {}
+
+export class Go extends S.Class<Go>("Go")({
+    "go": S.Int,
+}) {}
+
+export class Global extends S.Class<Global>("Global")({
+    "global": S.Int,
+}) {}
+
+export class Get extends S.Class<Get>("Get")({
+    "get": S.Int,
+}) {}
+
 export class Obj3 extends S.Class<Obj3>("Obj3")({
     "dummy": S.Int,
+    "get": Get,
+    "global": Global,
+    "go": Go,
+    "goto": Goto,
     "guard": Guard,
     "hasOwnProperty": HasOwnProperty,
     "hashCode": HashCode,
@@ -998,6 +1052,7 @@ export class Obj3 extends S.Class<Obj3>("Obj3")({
     "inout": Inout,
     "instanceof": Instanceof,
     "int": Int,
+    "IntNode": IntNode,
     "interface": Interface,
     "internal": Internal,
     "is": Is,
@@ -1030,6 +1085,7 @@ export class Obj3 extends S.Class<Obj3>("Obj3")({
     "Locale": Locale,
     "lock": Lock,
     "long": Long,
+    "LongNode": LongNode,
     "map": Map,
     "MapEntry": MapEntry,
     "metadata_property_handling": MetadataPropertyHandling,
@@ -1037,34 +1093,12 @@ export class Obj3 extends S.Class<Obj3>("Obj3")({
     "mutable": Mutable,
     "mutating": Mutating,
     "namespace": Namespace,
-    "native": Native,
-    "new": New,
-    "newtonsoft": Newtonsoft,
-    "nil": Nil,
-    "NO": No,
-    "noexcept": Noexcept,
 }) {}
 
 export class FalseClass extends S.Class<FalseClass>("FalseClass")({
     "false": S.Int,
 }) {}
 
-export class Goto extends S.Class<Goto>("Goto")({
-    "goto": S.Int,
-}) {}
-
-export class Go extends S.Class<Go>("Go")({
-    "go": S.Int,
-}) {}
-
-export class Global extends S.Class<Global>("Global")({
-    "global": S.Int,
-}) {}
-
-export class Get extends S.Class<Get>("Get")({
-    "get": S.Int,
-}) {}
-
 export class Function extends S.Class<Function>("Function")({
     "function": S.Int,
 }) {}
@@ -1201,6 +1235,10 @@ export class Dynamic extends S.Class<Dynamic>("Dynamic")({
     "dynamic": S.Int,
 }) {}
 
+export class DoubleNode extends S.Class<DoubleNode>("DoubleNode")({
+    "DoubleNode": S.Int,
+}) {}
+
 export class Double extends S.Class<Double>("Double")({
     "double": S.Int,
 }) {}
@@ -1221,6 +1259,10 @@ export class Dict extends S.Class<Dict>("Dict")({
     "dict": S.Int,
 }) {}
 
+export class DeserializationFeature extends S.Class<DeserializationFeature>("DeserializationFeature")({
+    "DeserializationFeature": S.Int,
+}) {}
+
 export class Delete extends S.Class<Delete>("Delete")({
     "delete": S.Int,
 }) {}
@@ -1301,7 +1343,17 @@ export class DateFormatter extends S.Class<DateFormatter>("DateFormatter")({
     "DateFormatter": S.Int,
 }) {}
 
+export class DateClass extends S.Class<DateClass>("DateClass")({
+    "date": S.Int,
+}) {}
+
+export class CultureInfo extends S.Class<CultureInfo>("CultureInfo")({
+    "CultureInfo": S.Int,
+}) {}
+
 export class Obj2 extends S.Class<Obj2>("Obj2")({
+    "CultureInfo": CultureInfo,
+    "date": DateClass,
     "DateFormatter": DateFormatter,
     "DateOnly": DateOnly,
     "DateOnlyConverter": DateOnlyConverter,
@@ -1322,11 +1374,13 @@ export class Obj2 extends S.Class<Obj2>("Obj2")({
     "del": Del,
     "delegate": Delegate,
     "delete": Delete,
+    "DeserializationFeature": DeserializationFeature,
     "dict": Dict,
     "dictionary": Dictionary,
     "didSet": DidSet,
     "do": Do,
     "double": Double,
+    "DoubleNode": DoubleNode,
     "dummy": S.Int,
     "dynamic": Dynamic,
     "dynamic_cast": DynamicCast,
@@ -1362,10 +1416,6 @@ export class Obj2 extends S.Class<Obj2>("Obj2")({
     "from_json": FromJson,
     "func": Func,
     "function": Function,
-    "get": Get,
-    "global": Global,
-    "go": Go,
-    "goto": Goto,
     "false": FalseClass,
 }) {}
 
@@ -1393,14 +1443,6 @@ export class Empty extends S.Class<Empty>("Empty")({
     "_": S.Int,
 }) {}
 
-export class DateClass extends S.Class<DateClass>("DateClass")({
-    "date": S.Int,
-}) {}
-
-export class CultureInfo extends S.Class<CultureInfo>("CultureInfo")({
-    "CultureInfo": S.Int,
-}) {}
-
 export class Converter extends S.Class<Converter>("Converter")({
     "converter": S.Int,
 }) {}
@@ -1529,6 +1571,10 @@ export class Break extends S.Class<Break>("Break")({
     "break": S.Int,
 }) {}
 
+export class BooleanNode extends S.Class<BooleanNode>("BooleanNode")({
+    "BooleanNode": S.Int,
+}) {}
+
 export class Boolean extends S.Class<Boolean>("Boolean")({
     "boolean": S.Int,
 }) {}
@@ -1597,6 +1643,10 @@ export class As extends S.Class<As>("As")({
     "as": S.Int,
 }) {}
 
+export class ArrayNode extends S.Class<ArrayNode>("ArrayNode")({
+    "ArrayNode": S.Int,
+}) {}
+
 export class ArrayClass extends S.Class<ArrayClass>("ArrayClass")({
     "array": S.Int,
 }) {}
@@ -1633,6 +1683,7 @@ export class Obj1 extends S.Class<Obj1>("Obj1")({
     "and_eq": AndEq,
     "Any": Any,
     "array": ArrayClass,
+    "ArrayNode": ArrayNode,
     "as": As,
     "asm": Asm,
     "assert": Assert,
@@ -1650,6 +1701,7 @@ export class Obj1 extends S.Class<Obj1>("Obj1")({
     "bitor": Bitor,
     "BOOL": Bool,
     "boolean": Boolean,
+    "BooleanNode": BooleanNode,
     "break": Break,
     "bycopy": Bycopy,
     "byref": Byref,
@@ -1682,8 +1734,6 @@ export class Obj1 extends S.Class<Obj1>("Obj1")({
     "convenience": Convenience,
     "convert": Convert,
     "converter": Converter,
-    "CultureInfo": CultureInfo,
-    "date": DateClass,
     "dummy": S.Int,
     "_": Empty,
     "_Imaginery": Imaginery,
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..de0b831 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
@@ -42,6 +42,11 @@ export const ArrayClassSchema = z.object({
 });
 export type ArrayClass = z.infer<typeof ArrayClassSchema>;
 
+export const ArrayNodeSchema = z.object({
+    "ArrayNode": z.number().int(),
+});
+export type ArrayNode = z.infer<typeof ArrayNodeSchema>;
+
 export const AsSchema = z.object({
     "as": z.number().int(),
 });
@@ -127,6 +132,11 @@ export const BooleanSchema = z.object({
 });
 export type Boolean = z.infer<typeof BooleanSchema>;
 
+export const BooleanNodeSchema = z.object({
+    "BooleanNode": z.number().int(),
+});
+export type BooleanNode = z.infer<typeof BooleanNodeSchema>;
+
 export const BreakSchema = z.object({
     "break": z.number().int(),
 });
@@ -287,16 +297,6 @@ export const ConverterSchema = z.object({
 });
 export type Converter = z.infer<typeof ConverterSchema>;
 
-export const CultureInfoSchema = z.object({
-    "CultureInfo": z.number().int(),
-});
-export type CultureInfo = z.infer<typeof CultureInfoSchema>;
-
-export const DateClassSchema = z.object({
-    "date": z.number().int(),
-});
-export type DateClass = z.infer<typeof DateClassSchema>;
-
 export const EmptySchema = z.object({
     "_": z.number().int(),
 });
@@ -327,6 +327,16 @@ export const Obj1BoolSchema = z.object({
 });
 export type Obj1Bool = z.infer<typeof Obj1BoolSchema>;
 
+export const CultureInfoSchema = z.object({
+    "CultureInfo": z.number().int(),
+});
+export type CultureInfo = z.infer<typeof CultureInfoSchema>;
+
+export const DateClassSchema = z.object({
+    "date": z.number().int(),
+});
+export type DateClass = z.infer<typeof DateClassSchema>;
+
 export const DateFormatterSchema = z.object({
     "DateFormatter": z.number().int(),
 });
@@ -427,6 +437,11 @@ export const DeleteSchema = z.object({
 });
 export type Delete = z.infer<typeof DeleteSchema>;
 
+export const DeserializationFeatureSchema = z.object({
+    "DeserializationFeature": z.number().int(),
+});
+export type DeserializationFeature = z.infer<typeof DeserializationFeatureSchema>;
+
 export const DictSchema = z.object({
     "dict": z.number().int(),
 });
@@ -452,6 +467,11 @@ export const DoubleSchema = z.object({
 });
 export type Double = z.infer<typeof DoubleSchema>;
 
+export const DoubleNodeSchema = z.object({
+    "DoubleNode": z.number().int(),
+});
+export type DoubleNode = z.infer<typeof DoubleNodeSchema>;
+
 export const DynamicSchema = z.object({
     "dynamic": z.number().int(),
 });
@@ -622,6 +642,11 @@ export const FunctionSchema = z.object({
 });
 export type Function = z.infer<typeof FunctionSchema>;
 
+export const FalseClassSchema = z.object({
+    "false": z.number().int(),
+});
+export type FalseClass = z.infer<typeof FalseClassSchema>;
+
 export const GetSchema = z.object({
     "get": z.number().int(),
 });
@@ -642,11 +667,6 @@ export const GotoSchema = z.object({
 });
 export type Goto = z.infer<typeof GotoSchema>;
 
-export const FalseClassSchema = z.object({
-    "false": z.number().int(),
-});
-export type FalseClass = z.infer<typeof FalseClassSchema>;
-
 export const GuardSchema = z.object({
     "guard": z.number().int(),
 });
@@ -742,6 +762,11 @@ export const IntSchema = z.object({
 });
 export type Int = z.infer<typeof IntSchema>;
 
+export const IntNodeSchema = z.object({
+    "IntNode": z.number().int(),
+});
+export type IntNode = z.infer<typeof IntNodeSchema>;
+
 export const InterfaceSchema = z.object({
     "interface": z.number().int(),
 });
@@ -902,6 +927,11 @@ export const LongSchema = z.object({
 });
 export type Long = z.infer<typeof LongSchema>;
 
+export const LongNodeSchema = z.object({
+    "LongNode": z.number().int(),
+});
+export type LongNode = z.infer<typeof LongNodeSchema>;
+
 export const MapSchema = z.object({
     "map": z.number().int(),
 });
@@ -962,16 +992,16 @@ export const NoSchema = z.object({
 });
 export type No = z.infer<typeof NoSchema>;
 
-export const NoexceptSchema = z.object({
-    "noexcept": z.number().int(),
-});
-export type Noexcept = z.infer<typeof NoexceptSchema>;
-
 export const NoSuchMethodSchema = z.object({
     "noSuchMethod": z.number().int(),
 });
 export type NoSuchMethod = z.infer<typeof NoSuchMethodSchema>;
 
+export const NoexceptSchema = z.object({
+    "noexcept": z.number().int(),
+});
+export type Noexcept = z.infer<typeof NoexceptSchema>;
+
 export const NonatomicSchema = z.object({
     "nonatomic": z.number().int(),
 });
@@ -1022,6 +1052,11 @@ export const NullSchema = z.object({
 });
 export type Null = z.infer<typeof NullSchema>;
 
+export const NullNodeSchema = z.object({
+    "NullNode": z.number().int(),
+});
+export type NullNode = z.infer<typeof NullNodeSchema>;
+
 export const NullptrSchema = z.object({
     "nullptr": z.number().int(),
 });
@@ -1057,6 +1092,11 @@ export const ObjectMapperSchema = z.object({
 });
 export type ObjectMapper = z.infer<typeof ObjectMapperSchema>;
 
+export const ObjectNodeSchema = z.object({
+    "ObjectNode": z.number().int(),
+});
+export type ObjectNode = z.infer<typeof ObjectNodeSchema>;
+
 export const OfSchema = z.object({
     "of": z.number().int(),
 });
@@ -1247,6 +1287,21 @@ export const RethrowsSchema = z.object({
 });
 export type Rethrows = z.infer<typeof RethrowsSchema>;
 
+export const SelfClassSchema = z.object({
+    "self": z.number().int(),
+});
+export type SelfClass = z.infer<typeof SelfClassSchema>;
+
+export const TrueClassSchema = z.object({
+    "true": z.number().int(),
+});
+export type TrueClass = z.infer<typeof TrueClassSchema>;
+
+export const TypeClassSchema = z.object({
+    "type": z.number().int(),
+});
+export type TypeClass = z.infer<typeof TypeClassSchema>;
+
 export const ReturnSchema = z.object({
     "return": z.number().int(),
 });
@@ -1287,21 +1342,6 @@ export const SelectSchema = z.object({
 });
 export type Select = z.infer<typeof SelectSchema>;
 
-export const SelfClassSchema = z.object({
-    "self": z.number().int(),
-});
-export type SelfClass = z.infer<typeof SelfClassSchema>;
-
-export const TrueClassSchema = z.object({
-    "true": z.number().int(),
-});
-export type TrueClass = z.infer<typeof TrueClassSchema>;
-
-export const TypeClassSchema = z.object({
-    "type": z.number().int(),
-});
-export type TypeClass = z.infer<typeof TypeClassSchema>;
-
 export const SelfSchema = z.object({
     "Self": z.number().int(),
 });
@@ -1312,6 +1352,11 @@ export const SendableSchema = z.object({
 });
 export type Sendable = z.infer<typeof SendableSchema>;
 
+export const SerializationFeatureSchema = z.object({
+    "SerializationFeature": z.number().int(),
+});
+export type SerializationFeature = z.infer<typeof SerializationFeatureSchema>;
+
 export const SerializeSchema = z.object({
     "serialize": z.number().int(),
 });
@@ -1432,6 +1477,11 @@ export const TemplateSchema = z.object({
 });
 export type Template = z.infer<typeof TemplateSchema>;
 
+export const TextNodeSchema = z.object({
+    "TextNode": z.number().int(),
+});
+export type TextNode = z.infer<typeof TextNodeSchema>;
+
 export const ThenSchema = z.object({
     "then": z.number().int(),
 });
@@ -1675,6 +1725,7 @@ export const Obj1Schema = z.object({
     "and_eq": AndEqSchema,
     "Any": AnySchema,
     "array": ArrayClassSchema,
+    "ArrayNode": ArrayNodeSchema,
     "as": AsSchema,
     "asm": AsmSchema,
     "assert": AssertSchema,
@@ -1692,6 +1743,7 @@ export const Obj1Schema = z.object({
     "bitor": BitorSchema,
     "BOOL": BoolSchema,
     "boolean": BooleanSchema,
+    "BooleanNode": BooleanNodeSchema,
     "break": BreakSchema,
     "bycopy": BycopySchema,
     "byref": ByrefSchema,
@@ -1724,8 +1776,6 @@ export const Obj1Schema = z.object({
     "convenience": ConvenienceSchema,
     "convert": ConvertSchema,
     "converter": ConverterSchema,
-    "CultureInfo": CultureInfoSchema,
-    "date": DateClassSchema,
     "dummy": z.number().int(),
     "_": EmptySchema,
     "_Imaginery": ImaginerySchema,
@@ -1737,6 +1787,8 @@ export const Obj1Schema = z.object({
 export type Obj1 = z.infer<typeof Obj1Schema>;
 
 export const Obj2Schema = z.object({
+    "CultureInfo": CultureInfoSchema,
+    "date": DateClassSchema,
     "DateFormatter": DateFormatterSchema,
     "DateOnly": DateOnlySchema,
     "DateOnlyConverter": DateOnlyConverterSchema,
@@ -1757,11 +1809,13 @@ export const Obj2Schema = z.object({
     "del": DelSchema,
     "delegate": DelegateSchema,
     "delete": DeleteSchema,
+    "DeserializationFeature": DeserializationFeatureSchema,
     "dict": DictSchema,
     "dictionary": DictionarySchema,
     "didSet": DidSetSchema,
     "do": DoSchema,
     "double": DoubleSchema,
+    "DoubleNode": DoubleNodeSchema,
     "dummy": z.number().int(),
     "dynamic": DynamicSchema,
     "dynamic_cast": DynamicCastSchema,
@@ -1797,16 +1851,16 @@ export const Obj2Schema = z.object({
     "from_json": FromJsonSchema,
     "func": FuncSchema,
     "function": FunctionSchema,
-    "get": GetSchema,
-    "global": GlobalSchema,
-    "go": GoSchema,
-    "goto": GotoSchema,
     "false": FalseClassSchema,
 });
 export type Obj2 = z.infer<typeof Obj2Schema>;
 
 export const Obj3Schema = z.object({
     "dummy": z.number().int(),
+    "get": GetSchema,
+    "global": GlobalSchema,
+    "go": GoSchema,
+    "goto": GotoSchema,
     "guard": GuardSchema,
     "hasOwnProperty": HasOwnPropertySchema,
     "hashCode": HashCodeSchema,
@@ -1826,6 +1880,7 @@ export const Obj3Schema = z.object({
     "inout": InoutSchema,
     "instanceof": InstanceofSchema,
     "int": IntSchema,
+    "IntNode": IntNodeSchema,
     "interface": InterfaceSchema,
     "internal": InternalSchema,
     "is": IsSchema,
@@ -1858,6 +1913,7 @@ export const Obj3Schema = z.object({
     "Locale": LocaleSchema,
     "lock": LockSchema,
     "long": LongSchema,
+    "LongNode": LongNodeSchema,
     "map": MapSchema,
     "MapEntry": MapEntrySchema,
     "metadata_property_handling": MetadataPropertyHandlingSchema,
@@ -1865,18 +1921,18 @@ export const Obj3Schema = z.object({
     "mutable": MutableSchema,
     "mutating": MutatingSchema,
     "namespace": NamespaceSchema,
-    "native": NativeSchema,
-    "new": NewSchema,
-    "newtonsoft": NewtonsoftSchema,
-    "nil": NilSchema,
-    "NO": NoSchema,
-    "noexcept": NoexceptSchema,
 });
 export type Obj3 = z.infer<typeof Obj3Schema>;
 
 export const Obj4Schema = z.object({
     "dummy": z.number().int(),
+    "native": NativeSchema,
+    "new": NewSchema,
+    "newtonsoft": NewtonsoftSchema,
+    "nil": NilSchema,
+    "NO": NoSchema,
     "noSuchMethod": NoSuchMethodSchema,
+    "noexcept": NoexceptSchema,
     "nonatomic": NonatomicSchema,
     "None": NoneSchema,
     "nonlocal": NonlocalSchema,
@@ -1887,6 +1943,7 @@ export const Obj4Schema = z.object({
     "NSObject": NsObjectSchema,
     "NSString": NsStringSchema,
     "NULL": NullSchema,
+    "NullNode": NullNodeSchema,
     "nullptr": NullptrSchema,
     "number": NumberSchema,
     "none": NoneClassSchema,
@@ -1894,6 +1951,7 @@ export const Obj4Schema = z.object({
     "protocol": ProtocolClassSchema,
     "object": ObjectClassSchema,
     "ObjectMapper": ObjectMapperSchema,
+    "ObjectNode": ObjectNodeSchema,
     "of": OfSchema,
     "oneway": OnewaySchema,
     "open": OpenSchema,
@@ -1932,14 +1990,6 @@ export const Obj4Schema = z.object({
     "restrict": RestrictSchema,
     "retain": RetainSchema,
     "rethrows": RethrowsSchema,
-    "return": ReturnSchema,
-    "right": RightSchema,
-    "runtimeType": RuntimeTypeSchema,
-    "s": SSchema,
-    "sbyte": SbyteSchema,
-    "sealed": SealedSchema,
-    "SEL": SelSchema,
-    "select": SelectSchema,
 });
 export type Obj4 = z.infer<typeof Obj4Schema>;
 
@@ -1948,8 +1998,17 @@ export const Obj5Schema = z.object({
     "self": SelfClassSchema,
     "true": TrueClassSchema,
     "type": TypeClassSchema,
+    "return": ReturnSchema,
+    "right": RightSchema,
+    "runtimeType": RuntimeTypeSchema,
+    "s": SSchema,
+    "sbyte": SbyteSchema,
+    "sealed": SealedSchema,
+    "SEL": SelSchema,
+    "select": SelectSchema,
     "Self": SelfSchema,
     "Sendable": SendableSchema,
+    "SerializationFeature": SerializationFeatureSchema,
     "serialize": SerializeSchema,
     "SerializerProvider": SerializerProviderSchema,
     "set": SetSchema,
@@ -1974,6 +2033,7 @@ export const Obj5Schema = z.object({
     "synchronized": SynchronizedSchema,
     "system": SystemSchema,
     "template": TemplateSchema,
+    "TextNode": TextNodeSchema,
     "then": ThenSchema,
     "this": ThisSchema,
     "thread_local": ThreadLocalSchema,
@@ -1999,6 +2059,11 @@ export const Obj5Schema = z.object({
     "unchecked": UncheckedSchema,
     "undefined": UndefinedSchema,
     "union": UnionSchema,
+});
+export type Obj5 = z.infer<typeof Obj5Schema>;
+
+export const Obj6Schema = z.object({
+    "dummy": z.number().int(),
     "unowned": UnownedSchema,
     "unsafe": UnsafeSchema,
     "unsigned": UnsignedSchema,
@@ -2009,11 +2074,6 @@ export const Obj5Schema = z.object({
     "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,
