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 e3f4547..d05bda8 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
@@ -10921,6 +10921,61 @@ void cJSON_DeleteList(struct List * x) {
     }
 }
 
+struct LocalDate * cJSON_ParseLocalDate(const char * s) {
+    struct LocalDate * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetLocalDateValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct LocalDate * cJSON_GetLocalDateValue(const cJSON * j) {
+    struct LocalDate * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct LocalDate)))) {
+            memset(x, 0, sizeof(struct LocalDate));
+            if (!cJSON_HasObjectItem(j, "LocalDate")) { cJSON_DeleteLocalDate(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "LocalDate")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "LocalDate"))) { cJSON_DeleteLocalDate(x); return NULL; }
+                x->local_date = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "LocalDate"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateLocalDate(const struct LocalDate * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "LocalDate", x->local_date);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintLocalDate(const struct LocalDate * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateLocalDate(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteLocalDate(struct LocalDate * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Locale * cJSON_ParseLocale(const char * s) {
     struct Locale * x = NULL;
     if (NULL != s) {
@@ -11966,61 +12021,6 @@ void cJSON_DeleteNew(struct New * 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 Obj3 * cJSON_ParseObj3(const char * s) {
     struct Obj3 * x = NULL;
     if (NULL != s) {
@@ -12307,6 +12307,12 @@ struct Obj3 * cJSON_GetObj3Value(const cJSON * j) {
                 x->list = cJSON_GetListValue(cJSON_GetObjectItemCaseSensitive(j, "list"));
                 if (NULL == x->list) { cJSON_DeleteObj3(x); return NULL; }
             }
+            if (!cJSON_HasObjectItem(j, "LocalDate")) { cJSON_DeleteObj3(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "LocalDate")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "LocalDate"))) { cJSON_DeleteObj3(x); return NULL; }
+                x->local_date = cJSON_GetLocalDateValue(cJSON_GetObjectItemCaseSensitive(j, "LocalDate"));
+                if (NULL == x->local_date) { cJSON_DeleteObj3(x); return NULL; }
+            }
             if (!cJSON_HasObjectItem(j, "Locale")) { cJSON_DeleteObj3(x); return NULL; }
             if (cJSON_HasObjectItem(j, "Locale")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "Locale"))) { cJSON_DeleteObj3(x); return NULL; }
@@ -12421,12 +12427,6 @@ struct Obj3 * cJSON_GetObj3Value(const cJSON * j) {
                 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;
@@ -12481,6 +12481,7 @@ cJSON * cJSON_CreateObj3(const struct Obj3 * x) {
             cJSON_AddItemToObject(j, "left", cJSON_CreateLeft(x->left));
             cJSON_AddItemToObject(j, "let", cJSON_CreateLet(x->let));
             cJSON_AddItemToObject(j, "list", cJSON_CreateList(x->list));
+            cJSON_AddItemToObject(j, "LocalDate", cJSON_CreateLocalDate(x->local_date));
             cJSON_AddItemToObject(j, "Locale", cJSON_CreateLocale(x->locale));
             cJSON_AddItemToObject(j, "lock", cJSON_CreateLock(x->lock));
             cJSON_AddItemToObject(j, "map", cJSON_CreateMap(x->map));
@@ -12500,7 +12501,6 @@ cJSON * cJSON_CreateObj3(const struct Obj3 * x) {
             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;
@@ -12652,6 +12652,9 @@ void cJSON_DeleteObj3(struct Obj3 * x) {
         if (NULL != x->list) {
             cJSON_DeleteList(x->list);
         }
+        if (NULL != x->local_date) {
+            cJSON_DeleteLocalDate(x->local_date);
+        }
         if (NULL != x->locale) {
             cJSON_DeleteLocale(x->locale);
         }
@@ -12709,9 +12712,6 @@ void cJSON_DeleteObj3(struct Obj3 * x) {
         if (NULL != x->obj3_new) {
             cJSON_DeleteNew(x->obj3_new);
         }
-        if (NULL != x->obj3_noexcept) {
-            cJSON_DeleteNoexcept(x->obj3_noexcept);
-        }
         cJSON_free(x);
     }
 }
@@ -13266,6 +13266,61 @@ void cJSON_DeleteNumberClass(struct NumberClass * 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) {
@@ -14421,6 +14476,116 @@ void cJSON_DeleteOf(struct Of * x) {
     }
 }
 
+struct OffsetDateTime * cJSON_ParseOffsetDateTime(const char * s) {
+    struct OffsetDateTime * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetOffsetDateTimeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct OffsetDateTime * cJSON_GetOffsetDateTimeValue(const cJSON * j) {
+    struct OffsetDateTime * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct OffsetDateTime)))) {
+            memset(x, 0, sizeof(struct OffsetDateTime));
+            if (!cJSON_HasObjectItem(j, "OffsetDateTime")) { cJSON_DeleteOffsetDateTime(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "OffsetDateTime")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "OffsetDateTime"))) { cJSON_DeleteOffsetDateTime(x); return NULL; }
+                x->offset_date_time = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "OffsetDateTime"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateOffsetDateTime(const struct OffsetDateTime * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "OffsetDateTime", x->offset_date_time);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintOffsetDateTime(const struct OffsetDateTime * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateOffsetDateTime(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteOffsetDateTime(struct OffsetDateTime * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct OffsetTime * cJSON_ParseOffsetTime(const char * s) {
+    struct OffsetTime * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetOffsetTimeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct OffsetTime * cJSON_GetOffsetTimeValue(const cJSON * j) {
+    struct OffsetTime * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct OffsetTime)))) {
+            memset(x, 0, sizeof(struct OffsetTime));
+            if (!cJSON_HasObjectItem(j, "OffsetTime")) { cJSON_DeleteOffsetTime(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "OffsetTime")) {
+                if (!quicktype_cJSON_IsInteger(cJSON_GetObjectItemCaseSensitive(j, "OffsetTime"))) { cJSON_DeleteOffsetTime(x); return NULL; }
+                x->offset_time = cJSON_GetNumberValue(cJSON_GetObjectItemCaseSensitive(j, "OffsetTime"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateOffsetTime(const struct OffsetTime * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "OffsetTime", x->offset_time);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintOffsetTime(const struct OffsetTime * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateOffsetTime(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteOffsetTime(struct OffsetTime * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Oneway * cJSON_ParseOneway(const char * s) {
     struct Oneway * x = NULL;
     if (NULL != s) {
@@ -16084,192 +16249,27 @@ void cJSON_DeleteSbyte(struct Sbyte * x) {
     }
 }
 
-struct Sealed * cJSON_ParseSealed(const char * s) {
-    struct Sealed * 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_GetSealedValue(j);
+            x = cJSON_GetObj4Value(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Sealed * cJSON_GetSealedValue(const cJSON * j) {
-    struct Sealed * x = NULL;
+struct Obj4 * cJSON_GetObj4Value(const cJSON * j) {
+    struct Obj4 * 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 (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, "noSuchMethod")) { cJSON_DeleteObj4(x); return NULL; }
             if (cJSON_HasObjectItem(j, "noSuchMethod")) {
@@ -16331,6 +16331,12 @@ struct Obj4 * cJSON_GetObj4Value(const cJSON * j) {
                 x->number = cJSON_GetNumberClassValue(cJSON_GetObjectItemCaseSensitive(j, "number"));
                 if (NULL == x->number) { 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; }
@@ -16457,6 +16463,18 @@ struct Obj4 * cJSON_GetObj4Value(const cJSON * j) {
                 x->of = cJSON_GetOfValue(cJSON_GetObjectItemCaseSensitive(j, "of"));
                 if (NULL == x->of) { cJSON_DeleteObj4(x); return NULL; }
             }
+            if (!cJSON_HasObjectItem(j, "OffsetDateTime")) { cJSON_DeleteObj4(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "OffsetDateTime")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "OffsetDateTime"))) { cJSON_DeleteObj4(x); return NULL; }
+                x->offset_date_time = cJSON_GetOffsetDateTimeValue(cJSON_GetObjectItemCaseSensitive(j, "OffsetDateTime"));
+                if (NULL == x->offset_date_time) { cJSON_DeleteObj4(x); return NULL; }
+            }
+            if (!cJSON_HasObjectItem(j, "OffsetTime")) { cJSON_DeleteObj4(x); return NULL; }
+            if (cJSON_HasObjectItem(j, "OffsetTime")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "OffsetTime"))) { cJSON_DeleteObj4(x); return NULL; }
+                x->offset_time = cJSON_GetOffsetTimeValue(cJSON_GetObjectItemCaseSensitive(j, "OffsetTime"));
+                if (NULL == x->offset_time) { cJSON_DeleteObj4(x); return NULL; }
+            }
             if (!cJSON_HasObjectItem(j, "oneway")) { cJSON_DeleteObj4(x); return NULL; }
             if (cJSON_HasObjectItem(j, "oneway")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "oneway"))) { cJSON_DeleteObj4(x); return NULL; }
@@ -16637,24 +16655,6 @@ struct Obj4 * cJSON_GetObj4Value(const cJSON * j) {
                 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;
@@ -16675,6 +16675,7 @@ cJSON * cJSON_CreateObj4(const struct Obj4 * x) {
             cJSON_AddItemToObject(j, "NSString", cJSON_CreateNsString(x->ns_string));
             cJSON_AddItemToObject(j, "NULL", cJSON_CreateNullClass(x->null));
             cJSON_AddItemToObject(j, "number", cJSON_CreateNumberClass(x->number));
+            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));
@@ -16696,6 +16697,8 @@ cJSON * cJSON_CreateObj4(const struct Obj4 * x) {
             cJSON_AddItemToObject(j, "object", cJSON_CreateObjectClass(x->object));
             cJSON_AddItemToObject(j, "ObjectMapper", cJSON_CreateObjectMapper(x->object_mapper));
             cJSON_AddItemToObject(j, "of", cJSON_CreateOf(x->of));
+            cJSON_AddItemToObject(j, "OffsetDateTime", cJSON_CreateOffsetDateTime(x->offset_date_time));
+            cJSON_AddItemToObject(j, "OffsetTime", cJSON_CreateOffsetTime(x->offset_time));
             cJSON_AddItemToObject(j, "oneway", cJSON_CreateOneway(x->oneway));
             cJSON_AddItemToObject(j, "open", cJSON_CreateOpen(x->open));
             cJSON_AddItemToObject(j, "optional", cJSON_CreateOptional(x->optional));
@@ -16726,9 +16729,6 @@ cJSON * cJSON_CreateObj4(const struct Obj4 * x) {
             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;
@@ -16778,6 +16778,9 @@ void cJSON_DeleteObj4(struct Obj4 * x) {
         if (NULL != x->number) {
             cJSON_DeleteNumberClass(x->number);
         }
+        if (NULL != x->obj4_noexcept) {
+            cJSON_DeleteNoexcept(x->obj4_noexcept);
+        }
         if (NULL != x->obj4_none) {
             cJSON_DeleteNoneClass(x->obj4_none);
         }
@@ -16841,6 +16844,12 @@ void cJSON_DeleteObj4(struct Obj4 * x) {
         if (NULL != x->of) {
             cJSON_DeleteOf(x->of);
         }
+        if (NULL != x->offset_date_time) {
+            cJSON_DeleteOffsetDateTime(x->offset_date_time);
+        }
+        if (NULL != x->offset_time) {
+            cJSON_DeleteOffsetTime(x->offset_time);
+        }
         if (NULL != x->oneway) {
             cJSON_DeleteOneway(x->oneway);
         }
@@ -16931,15 +16940,6 @@ void cJSON_DeleteObj4(struct Obj4 * x) {
         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);
     }
 }
@@ -18209,61 +18209,6 @@ void cJSON_DeleteUnion(struct Union * 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 PrimitiveKind * cJSON_ParsePrimitiveKind(const char * s) {
     struct PrimitiveKind * x = NULL;
     if (NULL != s) {
@@ -18374,20 +18319,185 @@ void cJSON_DeleteObj5True(struct Obj5True * x) {
     }
 }
 
-struct Self * cJSON_ParseSelf(const char * s) {
-    struct Self * 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_GetSelfValue(j);
+            x = cJSON_GetSealedValue(j);
             cJSON_Delete(j);
         }
     }
     return x;
 }
 
-struct Self * cJSON_GetSelfValue(const cJSON * j) {
-    struct Self * x = NULL;
+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 Self * cJSON_ParseSelf(const char * s) {
+    struct Self * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetSelfValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct Self * cJSON_GetSelfValue(const cJSON * j) {
+    struct Self * x = NULL;
     if (NULL != j) {
         if (NULL != (x = cJSON_malloc(sizeof(struct Self)))) {
             memset(x, 0, sizeof(struct Self));
@@ -20299,61 +20409,6 @@ void cJSON_DeleteUnowned(struct Unowned * x) {
     }
 }
 
-struct Unsafe * cJSON_ParseUnsafe(const char * s) {
-    struct Unsafe * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetUnsafeValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct Unsafe * cJSON_GetUnsafeValue(const cJSON * j) {
-    struct Unsafe * 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"));
-            }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateUnsafe(const struct Unsafe * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "unsafe", x->unsafe);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintUnsafe(const struct Unsafe * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateUnsafe(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteUnsafe(struct Unsafe * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
 struct UseSerializers * cJSON_ParseUseSerializers(const char * s) {
     struct UseSerializers * x = NULL;
     if (NULL != s) {
@@ -20409,61 +20464,6 @@ void cJSON_DeleteUseSerializers(struct UseSerializers * x) {
     }
 }
 
-struct Ushort * cJSON_ParseUshort(const char * s) {
-    struct Ushort * x = NULL;
-    if (NULL != s) {
-        cJSON * j = cJSON_Parse(s);
-        if (NULL != j) {
-            x = cJSON_GetUshortValue(j);
-            cJSON_Delete(j);
-        }
-    }
-    return x;
-}
-
-struct Ushort * cJSON_GetUshortValue(const cJSON * j) {
-    struct Ushort * 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"));
-            }
-        }
-    }
-    return x;
-}
-
-cJSON * cJSON_CreateUshort(const struct Ushort * x) {
-    cJSON * j = NULL;
-    if (NULL != x) {
-        if (NULL != (j = cJSON_CreateObject())) {
-            cJSON_AddNumberToObject(j, "ushort", x->ushort);
-        }
-    }
-    return j;
-}
-
-char * cJSON_PrintUshort(const struct Ushort * x) {
-    char * s = NULL;
-    if (NULL != x) {
-        cJSON * j = cJSON_CreateUshort(x);
-        if (NULL != j) {
-            s = cJSON_Print(j);
-            cJSON_Delete(j);
-        }
-    }
-    return s;
-}
-
-void cJSON_DeleteUshort(struct Ushort * x) {
-    if (NULL != x) {
-        cJSON_free(x);
-    }
-}
-
 struct Obj5 * cJSON_ParseObj5(const char * s) {
     struct Obj5 * x = NULL;
     if (NULL != s) {
@@ -20624,12 +20624,6 @@ 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, "PrimitiveKind")) { cJSON_DeleteObj5(x); return NULL; }
             if (cJSON_HasObjectItem(j, "PrimitiveKind")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "PrimitiveKind"))) { cJSON_DeleteObj5(x); return NULL; }
@@ -20642,6 +20636,24 @@ struct Obj5 * cJSON_GetObj5Value(const cJSON * j) {
                 x->purple_true = cJSON_GetObj5TrueValue(cJSON_GetObjectItemCaseSensitive(j, "true"));
                 if (NULL == x->purple_true) { 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; }
@@ -20852,24 +20864,12 @@ struct Obj5 * cJSON_GetObj5Value(const cJSON * j) {
                 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, "UseSerializers")) { cJSON_DeleteObj5(x); return NULL; }
             if (cJSON_HasObjectItem(j, "UseSerializers")) {
                 if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "UseSerializers"))) { cJSON_DeleteObj5(x); return NULL; }
                 x->use_serializers = cJSON_GetUseSerializersValue(cJSON_GetObjectItemCaseSensitive(j, "UseSerializers"));
                 if (NULL == x->use_serializers) { cJSON_DeleteObj5(x); return NULL; }
             }
-            if (!cJSON_HasObjectItem(j, "ushort")) { cJSON_DeleteObj5(x); return NULL; }
-            if (cJSON_HasObjectItem(j, "ushort")) {
-                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "ushort"))) { cJSON_DeleteObj5(x); return NULL; }
-                x->ushort = cJSON_GetUshortValue(cJSON_GetObjectItemCaseSensitive(j, "ushort"));
-                if (NULL == x->ushort) { cJSON_DeleteObj5(x); return NULL; }
-            }
         }
     }
     return x;
@@ -20903,9 +20903,11 @@ 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, "PrimitiveKind", cJSON_CreatePrimitiveKind(x->primitive_kind));
             cJSON_AddItemToObject(j, "true", cJSON_CreateObj5True(x->purple_true));
+            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, "SerialDescriptor", cJSON_CreateSerialDescriptor(x->serial_descriptor));
@@ -20941,9 +20943,7 @@ cJSON * cJSON_CreateObj5(const struct Obj5 * x) {
             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, "UseSerializers", cJSON_CreateUseSerializers(x->use_serializers));
-            cJSON_AddItemToObject(j, "ushort", cJSON_CreateUshort(x->ushort));
         }
     }
     return j;
@@ -21032,15 +21032,21 @@ void cJSON_DeleteObj5(struct Obj5 * x) {
         if (NULL != x->obj5_union) {
             cJSON_DeleteUnion(x->obj5_union);
         }
-        if (NULL != x->obj5_unsigned) {
-            cJSON_DeleteUnsigned(x->obj5_unsigned);
-        }
         if (NULL != x->primitive_kind) {
             cJSON_DeletePrimitiveKind(x->primitive_kind);
         }
         if (NULL != x->purple_true) {
             cJSON_DeleteObj5True(x->purple_true);
         }
+        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);
         }
@@ -21146,15 +21152,64 @@ void cJSON_DeleteObj5(struct Obj5 * x) {
         if (NULL != x->unowned) {
             cJSON_DeleteUnowned(x->unowned);
         }
-        if (NULL != x->unsafe) {
-            cJSON_DeleteUnsafe(x->unsafe);
-        }
         if (NULL != x->use_serializers) {
             cJSON_DeleteUseSerializers(x->use_serializers);
         }
-        if (NULL != x->ushort) {
-            cJSON_DeleteUshort(x->ushort);
+        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);
     }
 }
@@ -21599,6 +21654,116 @@ void cJSON_DeleteXorEq(struct XorEq * x) {
     }
 }
 
+struct Unsafe * cJSON_ParseUnsafe(const char * s) {
+    struct Unsafe * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetUnsafeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct Unsafe * cJSON_GetUnsafeValue(const cJSON * j) {
+    struct Unsafe * 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"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateUnsafe(const struct Unsafe * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "unsafe", x->unsafe);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintUnsafe(const struct Unsafe * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateUnsafe(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteUnsafe(struct Unsafe * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct Ushort * cJSON_ParseUshort(const char * s) {
+    struct Ushort * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetUshortValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct Ushort * cJSON_GetUshortValue(const cJSON * j) {
+    struct Ushort * 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"));
+            }
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateUshort(const struct Ushort * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+            cJSON_AddNumberToObject(j, "ushort", x->ushort);
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintUshort(const struct Ushort * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateUshort(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteUshort(struct Ushort * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Utf8JsonReader * cJSON_ParseUtf8JsonReader(const char * s) {
     struct Utf8JsonReader * x = NULL;
     if (NULL != s) {
@@ -22171,6 +22336,12 @@ 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; }
@@ -22219,6 +22390,18 @@ 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, "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; }
@@ -22289,6 +22472,7 @@ 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));
@@ -22297,6 +22481,8 @@ cJSON * cJSON_CreateObj6(const struct Obj6 * x) {
             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, "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));
@@ -22326,6 +22512,9 @@ 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);
         }
@@ -22350,6 +22539,12 @@ void cJSON_DeleteObj6(struct Obj6 * x) {
         if (NULL != x->obj6_xor_eq) {
             cJSON_DeleteXorEq(x->obj6_xor_eq);
         }
+        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);
         }
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 ebd4174..e009037 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
@@ -877,6 +877,10 @@ struct List {
     int64_t list;
 };
 
+struct LocalDate {
+    int64_t local_date;
+};
+
 struct Locale {
     int64_t locale;
 };
@@ -953,10 +957,6 @@ struct New {
     int64_t new_new;
 };
 
-struct Noexcept {
-    int64_t noexcept_noexcept;
-};
-
 struct Obj3 {
     int64_t dummy;
     struct Guard * guard;
@@ -1003,6 +1003,7 @@ struct Obj3 {
     struct Left * left;
     struct Let * let;
     struct List * list;
+    struct LocalDate * local_date;
     struct Locale * locale;
     struct Lock * lock;
     struct Map * map;
@@ -1022,7 +1023,6 @@ struct Obj3 {
     struct Mutable * obj3_mutable;
     struct Namespace * obj3_namespace;
     struct New * obj3_new;
-    struct Noexcept * obj3_noexcept;
 };
 
 struct NoSuchMethod {
@@ -1065,6 +1065,10 @@ struct NumberClass {
     int64_t number;
 };
 
+struct Noexcept {
+    int64_t noexcept_noexcept;
+};
+
 struct NoneClass {
     int64_t none;
 };
@@ -1149,6 +1153,14 @@ struct Of {
     int64_t of;
 };
 
+struct OffsetDateTime {
+    int64_t offset_date_time;
+};
+
+struct OffsetTime {
+    int64_t offset_time;
+};
+
 struct Oneway {
     int64_t oneway;
 };
@@ -1269,18 +1281,6 @@ 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 NoSuchMethod * no_such_method;
@@ -1293,6 +1293,7 @@ struct Obj4 {
     struct NsString * ns_string;
     struct NullClass * null;
     struct NumberClass * number;
+    struct Noexcept * obj4_noexcept;
     struct NoneClass * obj4_none;
     struct Not * obj4_not;
     struct NotEq * obj4_not_eq;
@@ -1314,6 +1315,8 @@ struct Obj4 {
     struct ObjectClass * object;
     struct ObjectMapper * object_mapper;
     struct Of * of;
+    struct OffsetDateTime * offset_date_time;
+    struct OffsetTime * offset_time;
     struct Oneway * oneway;
     struct Open * open;
     struct Optional * optional;
@@ -1344,9 +1347,6 @@ struct Obj4 {
     struct RuntimeType * runtime_type;
     struct S * s;
     struct Sbyte * sbyte;
-    struct Sealed * sealed;
-    struct Sel * sel;
-    struct Select * select;
 };
 
 struct KSerializer {
@@ -1441,10 +1441,6 @@ struct Union {
     int64_t union_union;
 };
 
-struct Unsigned {
-    int64_t unsigned_unsigned;
-};
-
 struct PrimitiveKind {
     int64_t primitive_kind;
 };
@@ -1453,6 +1449,18 @@ struct Obj5True {
     int64_t true_true;
 };
 
+struct Sealed {
+    int64_t sealed;
+};
+
+struct Sel {
+    int64_t sel;
+};
+
+struct Select {
+    int64_t select;
+};
+
 struct Self {
     int64_t self;
 };
@@ -1593,18 +1601,10 @@ struct Unowned {
     int64_t unowned;
 };
 
-struct Unsafe {
-    int64_t unsafe;
-};
-
 struct UseSerializers {
     int64_t use_serializers;
 };
 
-struct Ushort {
-    int64_t ushort;
-};
-
 struct Obj5 {
     int64_t dummy;
     struct KSerializer * k_serializer;
@@ -1630,9 +1630,11 @@ struct Obj5 {
     struct Typename * obj5_typename;
     struct Typeof * obj5_typeof;
     struct Union * obj5_union;
-    struct Unsigned * obj5_unsigned;
     struct PrimitiveKind * primitive_kind;
     struct Obj5True * purple_true;
+    struct Sealed * sealed;
+    struct Sel * sel;
+    struct Select * select;
     struct Self * self;
     struct Sendable * sendable;
     struct SerialDescriptor * serial_descriptor;
@@ -1668,9 +1670,11 @@ struct Obj5 {
     struct Unchecked * unchecked;
     struct Undefined * undefined;
     struct Unowned * unowned;
-    struct Unsafe * unsafe;
     struct UseSerializers * use_serializers;
-    struct Ushort * ushort;
+};
+
+struct Unsigned {
+    int64_t unsigned_unsigned;
 };
 
 struct Using {
@@ -1705,6 +1709,14 @@ struct XorEq {
     int64_t xor_eq_xor_eq;
 };
 
+struct Unsafe {
+    int64_t unsafe;
+};
+
+struct Ushort {
+    int64_t ushort;
+};
+
 struct Utf8JsonReader {
     int64_t utf8_json_reader;
 };
@@ -1747,6 +1759,7 @@ struct Yield {
 
 struct Obj6 {
     int64_t dummy;
+    struct Unsigned * obj6_unsigned;
     struct Using * obj6_using;
     struct Virtual * obj6_virtual;
     struct Void * obj6_void;
@@ -1755,6 +1768,8 @@ struct Obj6 {
     struct While * obj6_while;
     struct Xor * obj6_xor;
     struct XorEq * obj6_xor_eq;
+    struct Unsafe * unsafe;
+    struct Ushort * ushort;
     struct Utf8JsonReader * utf8_json_reader;
     struct Utf8JsonWriter * utf8_json_writer;
     struct Uuid * uuid;
@@ -2824,6 +2839,12 @@ cJSON * cJSON_CreateList(const struct List * x);
 char * cJSON_PrintList(const struct List * x);
 void cJSON_DeleteList(struct List * x);
 
+struct LocalDate * cJSON_ParseLocalDate(const char * s);
+struct LocalDate * cJSON_GetLocalDateValue(const cJSON * j);
+cJSON * cJSON_CreateLocalDate(const struct LocalDate * x);
+char * cJSON_PrintLocalDate(const struct LocalDate * x);
+void cJSON_DeleteLocalDate(struct LocalDate * x);
+
 struct Locale * cJSON_ParseLocale(const char * s);
 struct Locale * cJSON_GetLocaleValue(const cJSON * j);
 cJSON * cJSON_CreateLocale(const struct Locale * x);
@@ -2938,12 +2959,6 @@ 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);
@@ -3010,6 +3025,12 @@ cJSON * cJSON_CreateNumberClass(const struct NumberClass * x);
 char * cJSON_PrintNumberClass(const struct NumberClass * x);
 void cJSON_DeleteNumberClass(struct NumberClass * 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);
@@ -3136,6 +3157,18 @@ cJSON * cJSON_CreateOf(const struct Of * x);
 char * cJSON_PrintOf(const struct Of * x);
 void cJSON_DeleteOf(struct Of * x);
 
+struct OffsetDateTime * cJSON_ParseOffsetDateTime(const char * s);
+struct OffsetDateTime * cJSON_GetOffsetDateTimeValue(const cJSON * j);
+cJSON * cJSON_CreateOffsetDateTime(const struct OffsetDateTime * x);
+char * cJSON_PrintOffsetDateTime(const struct OffsetDateTime * x);
+void cJSON_DeleteOffsetDateTime(struct OffsetDateTime * x);
+
+struct OffsetTime * cJSON_ParseOffsetTime(const char * s);
+struct OffsetTime * cJSON_GetOffsetTimeValue(const cJSON * j);
+cJSON * cJSON_CreateOffsetTime(const struct OffsetTime * x);
+char * cJSON_PrintOffsetTime(const struct OffsetTime * x);
+void cJSON_DeleteOffsetTime(struct OffsetTime * x);
+
 struct Oneway * cJSON_ParseOneway(const char * s);
 struct Oneway * cJSON_GetOnewayValue(const cJSON * j);
 cJSON * cJSON_CreateOneway(const struct Oneway * x);
@@ -3316,24 +3349,6 @@ 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);
@@ -3478,12 +3493,6 @@ 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 PrimitiveKind * cJSON_ParsePrimitiveKind(const char * s);
 struct PrimitiveKind * cJSON_GetPrimitiveKindValue(const cJSON * j);
 cJSON * cJSON_CreatePrimitiveKind(const struct PrimitiveKind * x);
@@ -3496,6 +3505,24 @@ cJSON * cJSON_CreateObj5True(const struct Obj5True * x);
 char * cJSON_PrintObj5True(const struct Obj5True * x);
 void cJSON_DeleteObj5True(struct Obj5True * 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);
@@ -3706,30 +3733,24 @@ 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 UseSerializers * cJSON_ParseUseSerializers(const char * s);
 struct UseSerializers * cJSON_GetUseSerializersValue(const cJSON * j);
 cJSON * cJSON_CreateUseSerializers(const struct UseSerializers * x);
 char * cJSON_PrintUseSerializers(const struct UseSerializers * x);
 void cJSON_DeleteUseSerializers(struct UseSerializers * x);
 
-struct Ushort * cJSON_ParseUshort(const char * s);
-struct Ushort * cJSON_GetUshortValue(const cJSON * j);
-cJSON * cJSON_CreateUshort(const struct Ushort * x);
-char * cJSON_PrintUshort(const struct Ushort * x);
-void cJSON_DeleteUshort(struct Ushort * x);
-
 struct 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);
@@ -3778,6 +3799,18 @@ cJSON * cJSON_CreateXorEq(const struct XorEq * x);
 char * cJSON_PrintXorEq(const struct XorEq * x);
 void cJSON_DeleteXorEq(struct XorEq * 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);
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 db67bbe..865cd1b 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
@@ -3109,6 +3109,20 @@ namespace quicktype {
         void set_list(const int64_t & value) { this->list = value; }
     };
 
+    class LocalDate {
+        public:
+        LocalDate() = default;
+        virtual ~LocalDate() = default;
+
+        private:
+        int64_t local_date;
+
+        public:
+        const int64_t & get_local_date() const { return local_date; }
+        int64_t & get_mutable_local_date() { return local_date; }
+        void set_local_date(const int64_t & value) { this->local_date = value; }
+    };
+
     class Locale {
         public:
         Locale() = default;
@@ -3375,20 +3389,6 @@ namespace quicktype {
         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;
@@ -3440,6 +3440,7 @@ namespace quicktype {
         Left left;
         Let let;
         List list;
+        LocalDate local_date;
         Locale locale;
         Lock lock;
         Map map;
@@ -3459,7 +3460,6 @@ namespace quicktype {
         Mutable obj3_mutable;
         Namespace obj3_namespace;
         New obj3_new;
-        Noexcept obj3_noexcept;
 
         public:
         const int64_t & get_dummy() const { return dummy; }
@@ -3642,6 +3642,10 @@ namespace quicktype {
         List & get_mutable_list() { return list; }
         void set_list(const List & value) { this->list = value; }
 
+        const LocalDate & get_local_date() const { return local_date; }
+        LocalDate & get_mutable_local_date() { return local_date; }
+        void set_local_date(const LocalDate & value) { this->local_date = value; }
+
         const Locale & get_locale() const { return locale; }
         Locale & get_mutable_locale() { return locale; }
         void set_locale(const Locale & value) { this->locale = value; }
@@ -3717,10 +3721,6 @@ namespace quicktype {
         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; }
-
-        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; }
     };
 
     class NoSuchMethod {
@@ -3863,6 +3863,20 @@ namespace quicktype {
         void set_number(const int64_t & value) { this->number = 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;
@@ -4143,6 +4157,34 @@ namespace quicktype {
         void set_of(const int64_t & value) { this->of = value; }
     };
 
+    class OffsetDateTime {
+        public:
+        OffsetDateTime() = default;
+        virtual ~OffsetDateTime() = default;
+
+        private:
+        int64_t offset_date_time;
+
+        public:
+        const int64_t & get_offset_date_time() const { return offset_date_time; }
+        int64_t & get_mutable_offset_date_time() { return offset_date_time; }
+        void set_offset_date_time(const int64_t & value) { this->offset_date_time = value; }
+    };
+
+    class OffsetTime {
+        public:
+        OffsetTime() = default;
+        virtual ~OffsetTime() = default;
+
+        private:
+        int64_t offset_time;
+
+        public:
+        const int64_t & get_offset_time() const { return offset_time; }
+        int64_t & get_mutable_offset_time() { return offset_time; }
+        void set_offset_time(const int64_t & value) { this->offset_time = value; }
+    };
+
     class Oneway {
         public:
         Oneway() = default;
@@ -4577,48 +4619,6 @@ namespace quicktype {
         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;
@@ -4636,6 +4636,7 @@ namespace quicktype {
         NsString ns_string;
         Null null;
         Number number;
+        Noexcept obj4_noexcept;
         NoneClass obj4_none;
         Not obj4_not;
         NotEq obj4_not_eq;
@@ -4656,6 +4657,8 @@ namespace quicktype {
         Object object;
         ObjectMapper object_mapper;
         Of of;
+        OffsetDateTime offset_date_time;
+        OffsetTime offset_time;
         Oneway oneway;
         Open open;
         Optional optional;
@@ -4687,9 +4690,6 @@ namespace quicktype {
         RuntimeType runtime_type;
         S s;
         Sbyte sbyte;
-        Sealed sealed;
-        Sel sel;
-        Select select;
 
         public:
         const int64_t & get_dummy() const { return dummy; }
@@ -4736,6 +4736,10 @@ namespace quicktype {
         Number & get_mutable_number() { return number; }
         void set_number(const Number & value) { this->number = 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; }
@@ -4816,6 +4820,14 @@ namespace quicktype {
         Of & get_mutable_of() { return of; }
         void set_of(const Of & value) { this->of = value; }
 
+        const OffsetDateTime & get_offset_date_time() const { return offset_date_time; }
+        OffsetDateTime & get_mutable_offset_date_time() { return offset_date_time; }
+        void set_offset_date_time(const OffsetDateTime & value) { this->offset_date_time = value; }
+
+        const OffsetTime & get_offset_time() const { return offset_time; }
+        OffsetTime & get_mutable_offset_time() { return offset_time; }
+        void set_offset_time(const OffsetTime & value) { this->offset_time = value; }
+
         const Oneway & get_oneway() const { return oneway; }
         Oneway & get_mutable_oneway() { return oneway; }
         void set_oneway(const Oneway & value) { this->oneway = value; }
@@ -4939,18 +4951,6 @@ namespace quicktype {
         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; }
     };
 
     class KSerializer {
@@ -5261,20 +5261,6 @@ namespace quicktype {
         void set_union_union(const int64_t & value) { this->union_union = value; }
     };
 
-    class Unsigned {
-        public:
-        Unsigned() = default;
-        virtual ~Unsigned() = default;
-
-        private:
-        int64_t unsigned_unsigned;
-
-        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; }
-    };
-
     class PrimitiveKind {
         public:
         PrimitiveKind() = default;
@@ -5303,6 +5289,48 @@ namespace quicktype {
         void set_true_true(const int64_t & value) { this->true_true = 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 {
         public:
         Self() = default;
@@ -5807,20 +5835,6 @@ namespace quicktype {
         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 UseSerializers {
         public:
         UseSerializers() = default;
@@ -5835,20 +5849,6 @@ namespace quicktype {
         void set_use_serializers(const int64_t & value) { this->use_serializers = 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 Obj5 {
         public:
         Obj5() = default;
@@ -5878,9 +5878,11 @@ namespace quicktype {
         Typeid obj5_typeid;
         Typename obj5_typename;
         Union obj5_union;
-        Unsigned obj5_unsigned;
         PrimitiveKind primitive_kind;
         TrueClass purple_true;
+        Sealed sealed;
+        Sel sel;
+        Select select;
         Self self;
         Sendable sendable;
         SerialDescriptor serial_descriptor;
@@ -5917,9 +5919,7 @@ namespace quicktype {
         Unchecked unchecked;
         Undefined undefined;
         Unowned unowned;
-        Unsafe unsafe;
         UseSerializers use_serializers;
-        Ushort ushort;
 
         public:
         const int64_t & get_dummy() const { return dummy; }
@@ -6014,10 +6014,6 @@ 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 PrimitiveKind & get_primitive_kind() const { return primitive_kind; }
         PrimitiveKind & get_mutable_primitive_kind() { return primitive_kind; }
         void set_primitive_kind(const PrimitiveKind & value) { this->primitive_kind = value; }
@@ -6026,6 +6022,18 @@ namespace quicktype {
         TrueClass & get_mutable_purple_true() { return purple_true; }
         void set_purple_true(const TrueClass & value) { this->purple_true = 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; }
@@ -6170,17 +6178,23 @@ namespace quicktype {
         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 UseSerializers & get_use_serializers() const { return use_serializers; }
         UseSerializers & get_mutable_use_serializers() { return use_serializers; }
         void set_use_serializers(const UseSerializers & value) { this->use_serializers = value; }
+    };
 
-        const Ushort & get_ushort() const { return ushort; }
-        Ushort & get_mutable_ushort() { return ushort; }
-        void set_ushort(const Ushort & value) { this->ushort = value; }
+    class Unsigned {
+        public:
+        Unsigned() = default;
+        virtual ~Unsigned() = default;
+
+        private:
+        int64_t unsigned_unsigned;
+
+        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; }
     };
 
     class Using {
@@ -6295,6 +6309,34 @@ namespace quicktype {
         void set_xor_eq_xor_eq(const int64_t & value) { this->xor_eq_xor_eq = 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;
@@ -6442,6 +6484,7 @@ namespace quicktype {
 
         private:
         int64_t dummy;
+        Unsigned obj6_unsigned;
         Using obj6_using;
         Virtual obj6_virtual;
         Void obj6_void;
@@ -6450,6 +6493,8 @@ namespace quicktype {
         While obj6_while;
         Xor obj6_xor;
         XorEq obj6_xor_eq;
+        Unsafe unsafe;
+        Ushort ushort;
         Utf8JsonReader utf8_json_reader;
         Utf8JsonWriter utf8_json_writer;
         Uuid uuid;
@@ -6466,6 +6511,10 @@ 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; }
@@ -6498,6 +6547,14 @@ 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 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; }
@@ -7107,6 +7164,9 @@ namespace quicktype {
     void from_json(const json & j, List & x);
     void to_json(json & j, const List & x);
 
+    void from_json(const json & j, LocalDate & x);
+    void to_json(json & j, const LocalDate & x);
+
     void from_json(const json & j, Locale & x);
     void to_json(json & j, const Locale & x);
 
@@ -7164,9 +7224,6 @@ namespace quicktype {
     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);
 
@@ -7200,6 +7257,9 @@ namespace quicktype {
     void from_json(const json & j, Number & x);
     void to_json(json & j, const Number & 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);
 
@@ -7260,6 +7320,12 @@ namespace quicktype {
     void from_json(const json & j, Of & x);
     void to_json(json & j, const Of & x);
 
+    void from_json(const json & j, OffsetDateTime & x);
+    void to_json(json & j, const OffsetDateTime & x);
+
+    void from_json(const json & j, OffsetTime & x);
+    void to_json(json & j, const OffsetTime & x);
+
     void from_json(const json & j, Oneway & x);
     void to_json(json & j, const Oneway & x);
 
@@ -7353,15 +7419,6 @@ namespace quicktype {
     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);
 
@@ -7431,15 +7488,21 @@ 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, PrimitiveKind & x);
     void to_json(json & j, const PrimitiveKind & x);
 
     void from_json(const json & j, TrueClass & x);
     void to_json(json & j, const TrueClass & x);
 
+    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);
 
@@ -7548,18 +7611,15 @@ namespace quicktype {
     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, UseSerializers & x);
     void to_json(json & j, const UseSerializers & x);
 
-    void from_json(const json & j, Ushort & x);
-    void to_json(json & j, const Ushort & x);
-
     void from_json(const json & j, Obj5 & x);
     void to_json(json & j, const Obj5 & x);
 
+    void from_json(const json & j, Unsigned & x);
+    void to_json(json & j, const Unsigned & x);
+
     void from_json(const json & j, Using & x);
     void to_json(json & j, const Using & x);
 
@@ -7584,6 +7644,12 @@ namespace quicktype {
     void from_json(const json & j, XorEq & x);
     void to_json(json & j, const XorEq & 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);
 
@@ -9791,6 +9857,17 @@ namespace quicktype {
         j["list"] = x.get_list();
     }
 
+    inline void from_json(const json & j, LocalDate& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("LocalDate") != j.end() && !j.at("LocalDate").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_local_date(j.at("LocalDate").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const LocalDate & x) {
+        j = json::object();
+        j["LocalDate"] = x.get_local_date();
+    }
+
     inline void from_json(const json & j, Locale& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("Locale") != j.end() && !j.at("Locale").is_number_integer()) throw std::runtime_error("Expected integer");
@@ -10000,17 +10077,6 @@ namespace quicktype {
         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");
@@ -10059,6 +10125,7 @@ namespace quicktype {
         x.set_left(j.at("left").get<Left>());
         x.set_let(j.at("let").get<Let>());
         x.set_list(j.at("list").get<List>());
+        x.set_local_date(j.at("LocalDate").get<LocalDate>());
         x.set_locale(j.at("Locale").get<Locale>());
         x.set_lock(j.at("lock").get<Lock>());
         x.set_map(j.at("map").get<Map>());
@@ -10078,7 +10145,6 @@ namespace quicktype {
         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) {
@@ -10128,6 +10194,7 @@ namespace quicktype {
         j["left"] = x.get_left();
         j["let"] = x.get_let();
         j["list"] = x.get_list();
+        j["LocalDate"] = x.get_local_date();
         j["Locale"] = x.get_locale();
         j["lock"] = x.get_lock();
         j["map"] = x.get_map();
@@ -10147,7 +10214,6 @@ namespace quicktype {
         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) {
@@ -10260,6 +10326,17 @@ namespace quicktype {
         j["number"] = x.get_number();
     }
 
+    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");
@@ -10480,6 +10557,28 @@ namespace quicktype {
         j["of"] = x.get_of();
     }
 
+    inline void from_json(const json & j, OffsetDateTime& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("OffsetDateTime") != j.end() && !j.at("OffsetDateTime").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_offset_date_time(j.at("OffsetDateTime").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const OffsetDateTime & x) {
+        j = json::object();
+        j["OffsetDateTime"] = x.get_offset_date_time();
+    }
+
+    inline void from_json(const json & j, OffsetTime& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        if (j.find("OffsetTime") != j.end() && !j.at("OffsetTime").is_number_integer()) throw std::runtime_error("Expected integer");
+        x.set_offset_time(j.at("OffsetTime").get<int64_t>());
+    }
+
+    inline void to_json(json & j, const OffsetTime & x) {
+        j = json::object();
+        j["OffsetTime"] = x.get_offset_time();
+    }
+
     inline void from_json(const json & j, Oneway& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("oneway") != j.end() && !j.at("oneway").is_number_integer()) throw std::runtime_error("Expected integer");
@@ -10821,39 +10920,6 @@ namespace quicktype {
         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");
@@ -10868,6 +10934,7 @@ namespace quicktype {
         x.set_ns_string(j.at("NSString").get<NsString>());
         x.set_null(j.at("NULL").get<Null>());
         x.set_number(j.at("number").get<Number>());
+        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>());
@@ -10888,6 +10955,8 @@ namespace quicktype {
         x.set_object(j.at("object").get<Object>());
         x.set_object_mapper(j.at("ObjectMapper").get<ObjectMapper>());
         x.set_of(j.at("of").get<Of>());
+        x.set_offset_date_time(j.at("OffsetDateTime").get<OffsetDateTime>());
+        x.set_offset_time(j.at("OffsetTime").get<OffsetTime>());
         x.set_oneway(j.at("oneway").get<Oneway>());
         x.set_open(j.at("open").get<Open>());
         x.set_optional(j.at("optional").get<Optional>());
@@ -10919,9 +10988,6 @@ namespace quicktype {
         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) {
@@ -10937,6 +11003,7 @@ namespace quicktype {
         j["NSString"] = x.get_ns_string();
         j["NULL"] = x.get_null();
         j["number"] = x.get_number();
+        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();
@@ -10957,6 +11024,8 @@ namespace quicktype {
         j["object"] = x.get_object();
         j["ObjectMapper"] = x.get_object_mapper();
         j["of"] = x.get_of();
+        j["OffsetDateTime"] = x.get_offset_date_time();
+        j["OffsetTime"] = x.get_offset_time();
         j["oneway"] = x.get_oneway();
         j["open"] = x.get_open();
         j["optional"] = x.get_optional();
@@ -10988,9 +11057,6 @@ namespace quicktype {
         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, KSerializer& x) {
@@ -11235,17 +11301,6 @@ namespace quicktype {
         j["union"] = x.get_union_union();
     }
 
-    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, PrimitiveKind& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("PrimitiveKind") != j.end() && !j.at("PrimitiveKind").is_number_integer()) throw std::runtime_error("Expected integer");
@@ -11268,6 +11323,39 @@ namespace quicktype {
         j["true"] = x.get_true_true();
     }
 
+    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, Self& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("Self") != j.end() && !j.at("Self").is_number_integer()) throw std::runtime_error("Expected integer");
@@ -11664,17 +11752,6 @@ namespace quicktype {
         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, UseSerializers& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         if (j.find("UseSerializers") != j.end() && !j.at("UseSerializers").is_number_integer()) throw std::runtime_error("Expected integer");
@@ -11686,17 +11763,6 @@ namespace quicktype {
         j["UseSerializers"] = x.get_use_serializers();
     }
 
-    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, 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");
@@ -11723,9 +11789,11 @@ 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_primitive_kind(j.at("PrimitiveKind").get<PrimitiveKind>());
         x.set_purple_true(j.at("true").get<TrueClass>());
+        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_serial_descriptor(j.at("SerialDescriptor").get<SerialDescriptor>());
@@ -11762,9 +11830,7 @@ namespace quicktype {
         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_use_serializers(j.at("UseSerializers").get<UseSerializers>());
-        x.set_ushort(j.at("ushort").get<Ushort>());
     }
 
     inline void to_json(json & j, const Obj5 & x) {
@@ -11792,9 +11858,11 @@ 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["PrimitiveKind"] = x.get_primitive_kind();
         j["true"] = x.get_purple_true();
+        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["SerialDescriptor"] = x.get_serial_descriptor();
@@ -11831,9 +11899,18 @@ namespace quicktype {
         j["unchecked"] = x.get_unchecked();
         j["undefined"] = x.get_undefined();
         j["unowned"] = x.get_unowned();
-        j["unsafe"] = x.get_unsafe();
         j["UseSerializers"] = x.get_use_serializers();
-        j["ushort"] = x.get_ushort();
+    }
+
+    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) {
@@ -11924,6 +12001,28 @@ namespace quicktype {
         j["xor_eq"] = x.get_xor_eq_xor_eq();
     }
 
+    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");
@@ -12038,6 +12137,7 @@ 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>());
@@ -12046,6 +12146,8 @@ namespace quicktype {
         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_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>());
@@ -12061,6 +12163,7 @@ 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();
@@ -12069,6 +12172,8 @@ namespace quicktype {
         j["while"] = x.get_obj6_while();
         j["xor"] = x.get_obj6_xor();
         j["xor_eq"] = x.get_obj6_xor_eq();
+        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();
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 642ea9f..2bbfa27 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
@@ -1246,6 +1246,9 @@ class Obj3
 
   property list : List
 
+  @[JSON::Field(key: "LocalDate")]
+  property local_date : LocalDate
+
   @[JSON::Field(key: "Locale")]
   property locale : Locale
 
@@ -1275,8 +1278,6 @@ class Obj3
   @[JSON::Field(key: "NO")]
   property no : No
 
-  property noexcept : Noexcept
-
   @[JSON::Field(key: "if")]
   property obj3_if : If
 
@@ -1583,6 +1584,13 @@ class List
   property list : Int64
 end
 
+class LocalDate
+  include JSON::Serializable
+
+  @[JSON::Field(key: "LocalDate")]
+  property local_date : Int64
+end
+
 class Locale
   include JSON::Serializable
 
@@ -1664,12 +1672,6 @@ class No
   property no : Int64
 end
 
-class Noexcept
-  include JSON::Serializable
-
-  property noexcept : Int64
-end
-
 class If
   include JSON::Serializable
 
@@ -1706,6 +1708,8 @@ class Obj4
   @[JSON::Field(key: "noSuchMethod")]
   property no_such_method : NoSuchMethod
 
+  property noexcept : Noexcept
+
   property nonatomic : Nonatomic
 
   @[JSON::Field(key: "None")]
@@ -1762,14 +1766,17 @@ class Obj4
   @[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: "OffsetDateTime")]
+  property offset_date_time : OffsetDateTime
+
+  @[JSON::Field(key: "OffsetTime")]
+  property offset_time : OffsetTime
+
   property oneway : Oneway
 
   property open : Open
@@ -1847,11 +1854,6 @@ class Obj4
   property s : S
 
   property sbyte : Sbyte
-
-  property sealed : Sealed
-
-  @[JSON::Field(key: "SEL")]
-  property sel : Sel
 end
 
 class NoSuchMethod
@@ -1861,6 +1863,12 @@ class NoSuchMethod
   property no_such_method : Int64
 end
 
+class Noexcept
+  include JSON::Serializable
+
+  property noexcept : Int64
+end
+
 class Nonatomic
   include JSON::Serializable
 
@@ -1998,13 +2006,6 @@ class 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 +2019,20 @@ class ObjectMapper
   property object_mapper : Int64
 end
 
+class OffsetDateTime
+  include JSON::Serializable
+
+  @[JSON::Field(key: "OffsetDateTime")]
+  property offset_date_time : Int64
+end
+
+class OffsetTime
+  include JSON::Serializable
+
+  @[JSON::Field(key: "OffsetTime")]
+  property offset_time : Int64
+end
+
 class Oneway
   include JSON::Serializable
 
@@ -2244,19 +2259,6 @@ class Sbyte
   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
 
@@ -2265,6 +2267,9 @@ class Obj5
   @[JSON::Field(key: "KSerializer")]
   property k_serializer : KSerializer
 
+  @[JSON::Field(key: "select")]
+  property obj5_select : Select
+
   @[JSON::Field(key: "Self")]
   property obj5_self : Self
 
@@ -2307,6 +2312,11 @@ class Obj5
   @[JSON::Field(key: "type")]
   property purple_type : TypeClass
 
+  property sealed : Sealed
+
+  @[JSON::Field(key: "SEL")]
+  property sel : Sel
+
   @[JSON::Field(key: "Sendable")]
   property sendable : Sendable
 
@@ -2410,14 +2420,8 @@ class Obj5
 
   property unowned : Unowned
 
-  property unsafe : Unsafe
-
-  property unsigned : Unsigned
-
   @[JSON::Field(key: "UseSerializers")]
   property use_serializers : UseSerializers
-
-  property ushort : Ushort
 end
 
 class KSerializer
@@ -2427,6 +2431,13 @@ class KSerializer
   property k_serializer : Int64
 end
 
+class Select
+  include JSON::Serializable
+
+  @[JSON::Field(key: "select")]
+  property select_select : Int64
+end
+
 class Self
   include JSON::Serializable
 
@@ -2525,6 +2536,19 @@ class TypeClass
   property type_type : 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
 
@@ -2808,18 +2832,6 @@ class Unowned
   property unowned : Int64
 end
 
-class Unsafe
-  include JSON::Serializable
-
-  property unsafe : Int64
-end
-
-class Unsigned
-  include JSON::Serializable
-
-  property unsigned : Int64
-end
-
 class UseSerializers
   include JSON::Serializable
 
@@ -2827,12 +2839,6 @@ class UseSerializers
   property use_serializers : Int64
 end
 
-class Ushort
-  include JSON::Serializable
-
-  property ushort : Int64
-end
-
 class Obj6
   include JSON::Serializable
 
@@ -2847,6 +2853,12 @@ class Obj6
   @[JSON::Field(key: "yield")]
   property obj6_yield : Yield
 
+  property unsafe : Unsafe
+
+  property unsigned : Unsigned
+
+  property ushort : Ushort
+
   property using : Using
 
   @[JSON::Field(key: "Utf8JsonReader")]
@@ -2904,6 +2916,24 @@ class Yield
   property yield_yield : Int64
 end
 
+class Unsafe
+  include JSON::Serializable
+
+  property unsafe : Int64
+end
+
+class Unsigned
+  include JSON::Serializable
+
+  property unsigned : Int64
+end
+
+class Ushort
+  include JSON::Serializable
+
+  property ushort : Int64
+end
+
 class Using
   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 fe61ba2..e76248c 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
@@ -1360,6 +1360,9 @@ namespace QuickType
         [JsonProperty("list", Required = Required.Always)]
         public List List { get; set; }
 
+        [JsonProperty("LocalDate", Required = Required.Always)]
+        public LocalDate LocalDate { get; set; }
+
         [JsonProperty("Locale", Required = Required.Always)]
         public Locale Locale { get; set; }
 
@@ -1404,9 +1407,6 @@ namespace QuickType
 
         [JsonProperty("NO", Required = Required.Always)]
         public No No { get; set; }
-
-        [JsonProperty("noexcept", Required = Required.Always)]
-        public Noexcept Noexcept { get; set; }
     }
 
     public partial class Guard
@@ -1697,6 +1697,12 @@ namespace QuickType
         public long ListList { get; set; }
     }
 
+    public partial class LocalDate
+    {
+        [JsonProperty("LocalDate", Required = Required.Always)]
+        public long LocalDateLocalDate { get; set; }
+    }
+
     public partial class Locale
     {
         [JsonProperty("Locale", Required = Required.Always)]
@@ -1787,12 +1793,6 @@ namespace QuickType
         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)]
@@ -1801,6 +1801,9 @@ namespace QuickType
         [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; }
 
@@ -1858,6 +1861,12 @@ namespace QuickType
         [JsonProperty("of", Required = Required.Always)]
         public Of Of { get; set; }
 
+        [JsonProperty("OffsetDateTime", Required = Required.Always)]
+        public OffsetDateTime OffsetDateTime { get; set; }
+
+        [JsonProperty("OffsetTime", Required = Required.Always)]
+        public OffsetTime OffsetTime { get; set; }
+
         [JsonProperty("oneway", Required = Required.Always)]
         public Oneway Oneway { get; set; }
 
@@ -1980,15 +1989,6 @@ namespace QuickType
 
         [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; }
     }
 
     public partial class NoSuchMethod
@@ -1997,6 +1997,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)]
@@ -2111,6 +2117,18 @@ namespace QuickType
         public long OfOf { get; set; }
     }
 
+    public partial class OffsetDateTime
+    {
+        [JsonProperty("OffsetDateTime", Required = Required.Always)]
+        public long OffsetDateTimeOffsetDateTime { get; set; }
+    }
+
+    public partial class OffsetTime
+    {
+        [JsonProperty("OffsetTime", Required = Required.Always)]
+        public long OffsetTimeOffsetTime { get; set; }
+    }
+
     public partial class Oneway
     {
         [JsonProperty("oneway", Required = Required.Always)]
@@ -2357,24 +2375,6 @@ namespace QuickType
         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)]
@@ -2401,6 +2401,15 @@ namespace QuickType
         [JsonProperty("PrimitiveKind", Required = Required.Always)]
         public PrimitiveKind PrimitiveKind { 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; }
 
@@ -2560,17 +2569,8 @@ namespace QuickType
         [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("UseSerializers", Required = Required.Always)]
         public UseSerializers UseSerializers { get; set; }
-
-        [JsonProperty("ushort", Required = Required.Always)]
-        public Ushort Ushort { get; set; }
     }
 
     public partial class KSerializer
@@ -2615,6 +2615,24 @@ namespace QuickType
         public long PrimitiveKindPrimitiveKind { 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)]
@@ -2933,35 +2951,26 @@ namespace QuickType
         public long UnownedUnowned { get; set; }
     }
 
-    public partial class Unsafe
-    {
-        [JsonProperty("unsafe", Required = Required.Always)]
-        public long UnsafeUnsafe { get; set; }
-    }
-
-    public partial class Unsigned
-    {
-        [JsonProperty("unsigned", Required = Required.Always)]
-        public long UnsignedUnsigned { get; set; }
-    }
-
     public partial class UseSerializers
     {
         [JsonProperty("UseSerializers", Required = Required.Always)]
         public long UseSerializersUseSerializers { get; set; }
     }
 
-    public partial class Ushort
-    {
-        [JsonProperty("ushort", Required = Required.Always)]
-        public long UshortUshort { get; set; }
-    }
-
     public partial class Obj6
     {
         [JsonProperty("dummy", Required = Required.Always)]
         public long Dummy { 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; }
 
@@ -3017,6 +3026,24 @@ namespace QuickType
         public Yield Yield { get; set; }
     }
 
+    public partial class Unsafe
+    {
+        [JsonProperty("unsafe", Required = Required.Always)]
+        public long UnsafeUnsafe { get; set; }
+    }
+
+    public partial class Unsigned
+    {
+        [JsonProperty("unsigned", Required = Required.Always)]
+        public long UnsignedUnsigned { get; set; }
+    }
+
+    public partial class Ushort
+    {
+        [JsonProperty("ushort", Required = Required.Always)]
+        public long UshortUshort { get; set; }
+    }
+
     public partial class Using
     {
         [JsonProperty("using", 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 a8d7a19..c63d22f 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
@@ -1671,6 +1671,10 @@ namespace QuickType
         [JsonPropertyName("list")]
         public List List { get; set; }
 
+        [JsonRequired]
+        [JsonPropertyName("LocalDate")]
+        public LocalDate LocalDate { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("Locale")]
         public Locale Locale { get; set; }
@@ -1730,10 +1734,6 @@ namespace QuickType
         [JsonRequired]
         [JsonPropertyName("NO")]
         public No No { get; set; }
-
-        [JsonRequired]
-        [JsonPropertyName("noexcept")]
-        public Noexcept Noexcept { get; set; }
     }
 
     public partial class Guard
@@ -2072,6 +2072,13 @@ namespace QuickType
         public long ListList { get; set; }
     }
 
+    public partial class LocalDate
+    {
+        [JsonRequired]
+        [JsonPropertyName("LocalDate")]
+        public long LocalDateLocalDate { get; set; }
+    }
+
     public partial class Locale
     {
         [JsonRequired]
@@ -2177,13 +2184,6 @@ namespace QuickType
         public long NoNo { get; set; }
     }
 
-    public partial class Noexcept
-    {
-        [JsonRequired]
-        [JsonPropertyName("noexcept")]
-        public long NoexceptNoexcept { get; set; }
-    }
-
     public partial class Obj4
     {
         [JsonRequired]
@@ -2194,6 +2194,10 @@ namespace QuickType
         [JsonPropertyName("noSuchMethod")]
         public NoSuchMethod NoSuchMethod { get; set; }
 
+        [JsonRequired]
+        [JsonPropertyName("noexcept")]
+        public Noexcept Noexcept { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("nonatomic")]
         public Nonatomic Nonatomic { get; set; }
@@ -2270,6 +2274,14 @@ namespace QuickType
         [JsonPropertyName("of")]
         public Of Of { get; set; }
 
+        [JsonRequired]
+        [JsonPropertyName("OffsetDateTime")]
+        public OffsetDateTime OffsetDateTime { get; set; }
+
+        [JsonRequired]
+        [JsonPropertyName("OffsetTime")]
+        public OffsetTime OffsetTime { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("oneway")]
         public Oneway Oneway { get; set; }
@@ -2433,18 +2445,6 @@ namespace QuickType
         [JsonRequired]
         [JsonPropertyName("sbyte")]
         public Sbyte Sbyte { get; set; }
-
-        [JsonRequired]
-        [JsonPropertyName("sealed")]
-        public Sealed Sealed { get; set; }
-
-        [JsonRequired]
-        [JsonPropertyName("SEL")]
-        public Sel Sel { get; set; }
-
-        [JsonRequired]
-        [JsonPropertyName("select")]
-        public Select Select { get; set; }
     }
 
     public partial class NoSuchMethod
@@ -2454,6 +2454,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]
@@ -2587,6 +2594,20 @@ namespace QuickType
         public long OfOf { get; set; }
     }
 
+    public partial class OffsetDateTime
+    {
+        [JsonRequired]
+        [JsonPropertyName("OffsetDateTime")]
+        public long OffsetDateTimeOffsetDateTime { get; set; }
+    }
+
+    public partial class OffsetTime
+    {
+        [JsonRequired]
+        [JsonPropertyName("OffsetTime")]
+        public long OffsetTimeOffsetTime { get; set; }
+    }
+
     public partial class Oneway
     {
         [JsonRequired]
@@ -2874,27 +2895,6 @@ namespace QuickType
         public long SbyteSbyte { get; set; }
     }
 
-    public partial class Sealed
-    {
-        [JsonRequired]
-        [JsonPropertyName("sealed")]
-        public long SealedSealed { get; set; }
-    }
-
-    public partial class Sel
-    {
-        [JsonRequired]
-        [JsonPropertyName("SEL")]
-        public long SelSel { get; set; }
-    }
-
-    public partial class Select
-    {
-        [JsonRequired]
-        [JsonPropertyName("select")]
-        public long SelectSelect { get; set; }
-    }
-
     public partial class Obj5
     {
         [JsonRequired]
@@ -2929,6 +2929,18 @@ namespace QuickType
         [JsonPropertyName("PrimitiveKind")]
         public PrimitiveKind PrimitiveKind { get; set; }
 
+        [JsonRequired]
+        [JsonPropertyName("sealed")]
+        public Sealed Sealed { get; set; }
+
+        [JsonRequired]
+        [JsonPropertyName("SEL")]
+        public Sel Sel { get; set; }
+
+        [JsonRequired]
+        [JsonPropertyName("select")]
+        public Select Select { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("Self")]
         public Self Self { get; set; }
@@ -3141,21 +3153,9 @@ namespace QuickType
         [JsonPropertyName("unowned")]
         public Unowned Unowned { get; set; }
 
-        [JsonRequired]
-        [JsonPropertyName("unsafe")]
-        public Unsafe Unsafe { get; set; }
-
-        [JsonRequired]
-        [JsonPropertyName("unsigned")]
-        public Unsigned Unsigned { get; set; }
-
         [JsonRequired]
         [JsonPropertyName("UseSerializers")]
         public UseSerializers UseSerializers { get; set; }
-
-        [JsonRequired]
-        [JsonPropertyName("ushort")]
-        public Ushort Ushort { get; set; }
     }
 
     public partial class KSerializer
@@ -3207,6 +3207,27 @@ namespace QuickType
         public long PrimitiveKindPrimitiveKind { get; set; }
     }
 
+    public partial class Sealed
+    {
+        [JsonRequired]
+        [JsonPropertyName("sealed")]
+        public long SealedSealed { get; set; }
+    }
+
+    public partial class Sel
+    {
+        [JsonRequired]
+        [JsonPropertyName("SEL")]
+        public long SelSel { get; set; }
+    }
+
+    public partial class Select
+    {
+        [JsonRequired]
+        [JsonPropertyName("select")]
+        public long SelectSelect { get; set; }
+    }
+
     public partial class Self
     {
         [JsonRequired]
@@ -3578,20 +3599,6 @@ namespace QuickType
         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 UseSerializers
     {
         [JsonRequired]
@@ -3599,19 +3606,24 @@ namespace QuickType
         public long UseSerializersUseSerializers { get; set; }
     }
 
-    public partial class Ushort
-    {
-        [JsonRequired]
-        [JsonPropertyName("ushort")]
-        public long UshortUshort { get; set; }
-    }
-
     public partial class Obj6
     {
         [JsonRequired]
         [JsonPropertyName("dummy")]
         public long Dummy { get; set; }
 
+        [JsonRequired]
+        [JsonPropertyName("unsafe")]
+        public Unsafe Unsafe { get; set; }
+
+        [JsonRequired]
+        [JsonPropertyName("unsigned")]
+        public Unsigned Unsigned { get; set; }
+
+        [JsonRequired]
+        [JsonPropertyName("ushort")]
+        public Ushort Ushort { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("using")]
         public Using Using { get; set; }
@@ -3685,6 +3697,27 @@ namespace QuickType
         public Yield Yield { 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]
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 fd31d22..79f8522 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
@@ -1360,6 +1360,9 @@ namespace QuickType
         [JsonProperty("list", Required = Required.Always)]
         public List List { get; set; }
 
+        [JsonProperty("LocalDate", Required = Required.Always)]
+        public LocalDate LocalDate { get; set; }
+
         [JsonProperty("Locale", Required = Required.Always)]
         public Locale Locale { get; set; }
 
@@ -1404,9 +1407,6 @@ namespace QuickType
 
         [JsonProperty("NO", Required = Required.Always)]
         public No No { get; set; }
-
-        [JsonProperty("noexcept", Required = Required.Always)]
-        public Noexcept Noexcept { get; set; }
     }
 
     public partial record Guard
@@ -1697,6 +1697,12 @@ namespace QuickType
         public long ListList { get; set; }
     }
 
+    public partial record LocalDate
+    {
+        [JsonProperty("LocalDate", Required = Required.Always)]
+        public long LocalDateLocalDate { get; set; }
+    }
+
     public partial record Locale
     {
         [JsonProperty("Locale", Required = Required.Always)]
@@ -1787,12 +1793,6 @@ namespace QuickType
         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)]
@@ -1801,6 +1801,9 @@ namespace QuickType
         [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; }
 
@@ -1861,6 +1864,12 @@ namespace QuickType
         [JsonProperty("of", Required = Required.Always)]
         public Of Of { get; set; }
 
+        [JsonProperty("OffsetDateTime", Required = Required.Always)]
+        public OffsetDateTime OffsetDateTime { get; set; }
+
+        [JsonProperty("OffsetTime", Required = Required.Always)]
+        public OffsetTime OffsetTime { get; set; }
+
         [JsonProperty("oneway", Required = Required.Always)]
         public Oneway Oneway { get; set; }
 
@@ -1980,15 +1989,6 @@ namespace QuickType
 
         [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; }
     }
 
     public partial record NoSuchMethod
@@ -1997,6 +1997,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)]
@@ -2117,6 +2123,18 @@ namespace QuickType
         public long OfOf { get; set; }
     }
 
+    public partial record OffsetDateTime
+    {
+        [JsonProperty("OffsetDateTime", Required = Required.Always)]
+        public long OffsetDateTimeOffsetDateTime { get; set; }
+    }
+
+    public partial record OffsetTime
+    {
+        [JsonProperty("OffsetTime", Required = Required.Always)]
+        public long OffsetTimeOffsetTime { get; set; }
+    }
+
     public partial record Oneway
     {
         [JsonProperty("oneway", Required = Required.Always)]
@@ -2357,24 +2375,6 @@ namespace QuickType
         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)]
@@ -2401,6 +2401,15 @@ namespace QuickType
         [JsonProperty("PrimitiveKind", Required = Required.Always)]
         public PrimitiveKind PrimitiveKind { 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; }
 
@@ -2560,17 +2569,8 @@ namespace QuickType
         [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("UseSerializers", Required = Required.Always)]
         public UseSerializers UseSerializers { get; set; }
-
-        [JsonProperty("ushort", Required = Required.Always)]
-        public Ushort Ushort { get; set; }
     }
 
     public partial record KSerializer
@@ -2615,6 +2615,24 @@ namespace QuickType
         public long PrimitiveKindPrimitiveKind { 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)]
@@ -2933,35 +2951,26 @@ namespace QuickType
         public long UnownedUnowned { get; set; }
     }
 
-    public partial record Unsafe
-    {
-        [JsonProperty("unsafe", Required = Required.Always)]
-        public long UnsafeUnsafe { get; set; }
-    }
-
-    public partial record Unsigned
-    {
-        [JsonProperty("unsigned", Required = Required.Always)]
-        public long UnsignedUnsigned { get; set; }
-    }
-
     public partial record UseSerializers
     {
         [JsonProperty("UseSerializers", Required = Required.Always)]
         public long UseSerializersUseSerializers { get; set; }
     }
 
-    public partial record Ushort
-    {
-        [JsonProperty("ushort", Required = Required.Always)]
-        public long UshortUshort { get; set; }
-    }
-
     public partial record Obj6
     {
         [JsonProperty("dummy", Required = Required.Always)]
         public long Dummy { 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; }
 
@@ -3017,6 +3026,24 @@ namespace QuickType
         public Yield Yield { get; set; }
     }
 
+    public partial record Unsafe
+    {
+        [JsonProperty("unsafe", Required = Required.Always)]
+        public long UnsafeUnsafe { get; set; }
+    }
+
+    public partial record Unsigned
+    {
+        [JsonProperty("unsigned", Required = Required.Always)]
+        public long UnsignedUnsigned { get; set; }
+    }
+
+    public partial record Ushort
+    {
+        [JsonProperty("ushort", Required = Required.Always)]
+        public long UshortUshort { get; set; }
+    }
+
     public partial record Using
     {
         [JsonProperty("using", 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 47b9e9c..420f30f 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
@@ -2692,6 +2692,7 @@ class Obj3 {
     final Left left;
     final Let let;
     final ListClass list;
+    final LocalDate localDate;
     final Locale locale;
     final Lock lock;
     final Long long;
@@ -2706,7 +2707,6 @@ class Obj3 {
     final Newtonsoft newtonsoft;
     final Nil nil;
     final No no;
-    final Noexcept noexcept;
     final HashCode obj3HashCode;
     final If obj3If;
     final Implements obj3Implements;
@@ -2759,6 +2759,7 @@ class Obj3 {
         required this.left,
         required this.let,
         required this.list,
+        required this.localDate,
         required this.locale,
         required this.lock,
         required this.long,
@@ -2773,7 +2774,6 @@ class Obj3 {
         required this.newtonsoft,
         required this.nil,
         required this.no,
-        required this.noexcept,
         required this.obj3HashCode,
         required this.obj3If,
         required this.obj3Implements,
@@ -2827,6 +2827,7 @@ class Obj3 {
         left: Left.fromJson(json["left"]),
         let: Let.fromJson(json["let"]),
         list: ListClass.fromJson(json["list"]),
+        localDate: LocalDate.fromJson(json["LocalDate"]),
         locale: Locale.fromJson(json["Locale"]),
         lock: Lock.fromJson(json["lock"]),
         long: Long.fromJson(json["long"]),
@@ -2841,7 +2842,6 @@ class Obj3 {
         newtonsoft: Newtonsoft.fromJson(json["newtonsoft"]),
         nil: Nil.fromJson(json["nil"]),
         no: No.fromJson(json["NO"]),
-        noexcept: Noexcept.fromJson(json["noexcept"]),
         obj3HashCode: HashCode.fromJson(json["hashCode"]),
         obj3If: If.fromJson(json["if"]),
         obj3Implements: Implements.fromJson(json["implements"]),
@@ -2895,6 +2895,7 @@ class Obj3 {
         "left": left.toJson(),
         "let": let.toJson(),
         "list": list.toJson(),
+        "LocalDate": localDate.toJson(),
         "Locale": locale.toJson(),
         "lock": lock.toJson(),
         "long": long.toJson(),
@@ -2909,7 +2910,6 @@ class Obj3 {
         "newtonsoft": newtonsoft.toJson(),
         "nil": nil.toJson(),
         "NO": no.toJson(),
-        "noexcept": noexcept.toJson(),
         "hashCode": obj3HashCode.toJson(),
         "if": obj3If.toJson(),
         "implements": obj3Implements.toJson(),
@@ -3562,6 +3562,22 @@ class ListClass {
     };
 }
 
+class LocalDate {
+    final int localDate;
+
+    LocalDate({
+        required this.localDate,
+    });
+
+    factory LocalDate.fromJson(Map<String, dynamic> json) => LocalDate(
+        localDate: json["LocalDate"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "LocalDate": localDate,
+    };
+}
+
 class Locale {
     final int locale;
 
@@ -3786,22 +3802,6 @@ class 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 HashCode {
     final int hashCodeHashCode;
 
@@ -3948,6 +3948,7 @@ class New {
 
 class Obj4 {
     final int dummy;
+    final Noexcept noexcept;
     final Nonatomic nonatomic;
     final None none;
     final Nonlocal nonlocal;
@@ -3969,6 +3970,8 @@ class Obj4 {
     final Object object;
     final ObjectMapper objectMapper;
     final Of of;
+    final OffsetDateTime offsetDateTime;
+    final OffsetTime offsetTime;
     final Oneway oneway;
     final Open open;
     final Optional optional;
@@ -4009,12 +4012,10 @@ class Obj4 {
     final Right right;
     final S s;
     final Sbyte sbyte;
-    final Sealed sealed;
-    final Sel sel;
-    final Select select;
 
     Obj4({
         required this.dummy,
+        required this.noexcept,
         required this.nonatomic,
         required this.none,
         required this.nonlocal,
@@ -4036,6 +4037,8 @@ class Obj4 {
         required this.object,
         required this.objectMapper,
         required this.of,
+        required this.offsetDateTime,
+        required this.offsetTime,
         required this.oneway,
         required this.open,
         required this.optional,
@@ -4076,13 +4079,11 @@ class Obj4 {
         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"],
+        noexcept: Noexcept.fromJson(json["noexcept"]),
         nonatomic: Nonatomic.fromJson(json["nonatomic"]),
         none: None.fromJson(json["None"]),
         nonlocal: Nonlocal.fromJson(json["nonlocal"]),
@@ -4104,6 +4105,8 @@ class Obj4 {
         object: Object.fromJson(json["object"]),
         objectMapper: ObjectMapper.fromJson(json["ObjectMapper"]),
         of: Of.fromJson(json["of"]),
+        offsetDateTime: OffsetDateTime.fromJson(json["OffsetDateTime"]),
+        offsetTime: OffsetTime.fromJson(json["OffsetTime"]),
         oneway: Oneway.fromJson(json["oneway"]),
         open: Open.fromJson(json["open"]),
         optional: Optional.fromJson(json["optional"]),
@@ -4144,13 +4147,11 @@ class Obj4 {
         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,
+        "noexcept": noexcept.toJson(),
         "nonatomic": nonatomic.toJson(),
         "None": none.toJson(),
         "nonlocal": nonlocal.toJson(),
@@ -4172,6 +4173,8 @@ class Obj4 {
         "object": object.toJson(),
         "ObjectMapper": objectMapper.toJson(),
         "of": of.toJson(),
+        "OffsetDateTime": offsetDateTime.toJson(),
+        "OffsetTime": offsetTime.toJson(),
         "oneway": oneway.toJson(),
         "open": open.toJson(),
         "optional": optional.toJson(),
@@ -4212,9 +4215,22 @@ class Obj4 {
         "right": right.toJson(),
         "s": s.toJson(),
         "sbyte": sbyte.toJson(),
-        "sealed": sealed.toJson(),
-        "SEL": sel.toJson(),
-        "select": select.toJson(),
+    };
+}
+
+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,
     };
 }
 
@@ -4554,6 +4570,38 @@ class Of {
     };
 }
 
+class OffsetDateTime {
+    final int offsetDateTime;
+
+    OffsetDateTime({
+        required this.offsetDateTime,
+    });
+
+    factory OffsetDateTime.fromJson(Map<String, dynamic> json) => OffsetDateTime(
+        offsetDateTime: json["OffsetDateTime"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "OffsetDateTime": offsetDateTime,
+    };
+}
+
+class OffsetTime {
+    final int offsetTime;
+
+    OffsetTime({
+        required this.offsetTime,
+    });
+
+    factory OffsetTime.fromJson(Map<String, dynamic> json) => OffsetTime(
+        offsetTime: json["OffsetTime"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "OffsetTime": offsetTime,
+    };
+}
+
 class Oneway {
     final int oneway;
 
@@ -5194,54 +5242,6 @@ class 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 KSerializer kSerializer;
@@ -5260,6 +5260,9 @@ class Obj5 {
     final Typedef obj5Typedef;
     final PrimitiveKind primitiveKind;
     final TrueClass purpleTrue;
+    final Sealed sealed;
+    final Sel sel;
+    final Select select;
     final Self self;
     final Sendable sendable;
     final SerialDescriptor serialDescriptor;
@@ -5304,10 +5307,7 @@ class Obj5 {
     final Undefined undefined;
     final Union union;
     final Unowned unowned;
-    final Unsafe unsafe;
-    final Unsigned unsigned;
     final UseSerializers useSerializers;
-    final Ushort ushort;
 
     Obj5({
         required this.dummy,
@@ -5327,6 +5327,9 @@ class Obj5 {
         required this.obj5Typedef,
         required this.primitiveKind,
         required this.purpleTrue,
+        required this.sealed,
+        required this.sel,
+        required this.select,
         required this.self,
         required this.sendable,
         required this.serialDescriptor,
@@ -5371,10 +5374,7 @@ class Obj5 {
         required this.undefined,
         required this.union,
         required this.unowned,
-        required this.unsafe,
-        required this.unsigned,
         required this.useSerializers,
-        required this.ushort,
     });
 
     factory Obj5.fromJson(Map<String, dynamic> json) => Obj5(
@@ -5395,6 +5395,9 @@ class Obj5 {
         obj5Typedef: Typedef.fromJson(json["typedef"]),
         primitiveKind: PrimitiveKind.fromJson(json["PrimitiveKind"]),
         purpleTrue: TrueClass.fromJson(json["true"]),
+        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"]),
         serialDescriptor: SerialDescriptor.fromJson(json["SerialDescriptor"]),
@@ -5439,10 +5442,7 @@ class Obj5 {
         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"]),
         useSerializers: UseSerializers.fromJson(json["UseSerializers"]),
-        ushort: Ushort.fromJson(json["ushort"]),
     );
 
     Map<String, dynamic> toJson() => {
@@ -5463,6 +5463,9 @@ class Obj5 {
         "typedef": obj5Typedef.toJson(),
         "PrimitiveKind": primitiveKind.toJson(),
         "true": purpleTrue.toJson(),
+        "sealed": sealed.toJson(),
+        "SEL": sel.toJson(),
+        "select": select.toJson(),
         "Self": self.toJson(),
         "Sendable": sendable.toJson(),
         "SerialDescriptor": serialDescriptor.toJson(),
@@ -5507,10 +5510,7 @@ class Obj5 {
         "undefined": undefined.toJson(),
         "union": union.toJson(),
         "unowned": unowned.toJson(),
-        "unsafe": unsafe.toJson(),
-        "unsigned": unsigned.toJson(),
         "UseSerializers": useSerializers.toJson(),
-        "ushort": ushort.toJson(),
     };
 }
 
@@ -5770,6 +5770,54 @@ class TrueClass {
     };
 }
 
+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 Self {
     final int self;
 
@@ -6474,38 +6522,6 @@ class Unowned {
     };
 }
 
-class Unsafe {
-    final int unsafe;
-
-    Unsafe({
-        required this.unsafe,
-    });
-
-    factory Unsafe.fromJson(Map<String, dynamic> json) => Unsafe(
-        unsafe: json["unsafe"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "unsafe": unsafe,
-    };
-}
-
-class Unsigned {
-    final int unsigned;
-
-    Unsigned({
-        required this.unsigned,
-    });
-
-    factory Unsigned.fromJson(Map<String, dynamic> json) => Unsigned(
-        unsigned: json["unsigned"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "unsigned": unsigned,
-    };
-}
-
 class UseSerializers {
     final int useSerializers;
 
@@ -6522,22 +6538,6 @@ class UseSerializers {
     };
 }
 
-class Ushort {
-    final int ushort;
-
-    Ushort({
-        required this.ushort,
-    });
-
-    factory Ushort.fromJson(Map<String, dynamic> json) => Ushort(
-        ushort: json["ushort"],
-    );
-
-    Map<String, dynamic> toJson() => {
-        "ushort": ushort,
-    };
-}
-
 class Obj6 {
     final int dummy;
     final Var obj6Var;
@@ -6545,6 +6545,9 @@ class Obj6 {
     final While obj6While;
     final With obj6With;
     final Yield obj6Yield;
+    final Unsafe unsafe;
+    final Unsigned unsigned;
+    final Ushort ushort;
     final Using using;
     final Utf8JsonReader utf8JsonReader;
     final Utf8JsonWriter utf8JsonWriter;
@@ -6566,6 +6569,9 @@ class Obj6 {
         required this.obj6While,
         required this.obj6With,
         required this.obj6Yield,
+        required this.unsafe,
+        required this.unsigned,
+        required this.ushort,
         required this.using,
         required this.utf8JsonReader,
         required this.utf8JsonWriter,
@@ -6588,6 +6594,9 @@ class Obj6 {
         obj6While: While.fromJson(json["while"]),
         obj6With: With.fromJson(json["with"]),
         obj6Yield: Yield.fromJson(json["yield"]),
+        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"]),
@@ -6610,6 +6619,9 @@ class Obj6 {
         "while": obj6While.toJson(),
         "with": obj6With.toJson(),
         "yield": obj6Yield.toJson(),
+        "unsafe": unsafe.toJson(),
+        "unsigned": unsigned.toJson(),
+        "ushort": ushort.toJson(),
         "using": using.toJson(),
         "Utf8JsonReader": utf8JsonReader.toJson(),
         "Utf8JsonWriter": utf8JsonWriter.toJson(),
@@ -6706,6 +6718,54 @@ class Yield {
     };
 }
 
+class Unsafe {
+    final int unsafe;
+
+    Unsafe({
+        required this.unsafe,
+    });
+
+    factory Unsafe.fromJson(Map<String, dynamic> json) => Unsafe(
+        unsafe: json["unsafe"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "unsafe": unsafe,
+    };
+}
+
+class Unsigned {
+    final int unsigned;
+
+    Unsigned({
+        required this.unsigned,
+    });
+
+    factory Unsigned.fromJson(Map<String, dynamic> json) => Unsigned(
+        unsigned: json["unsigned"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "unsigned": unsigned,
+    };
+}
+
+class Ushort {
+    final int ushort;
+
+    Ushort({
+        required this.ushort,
+    });
+
+    factory Ushort.fromJson(Map<String, dynamic> json) => Ushort(
+        ushort: json["ushort"],
+    );
+
+    Map<String, dynamic> toJson() => {
+        "ushort": ushort,
+    };
+}
+
 class Using {
     final int using;
 
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 6b66bb3..3ec3ac7 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
@@ -7299,6 +7299,45 @@ defmodule ListClass do
   end
 end
 
+defmodule LocalDate do
+  @enforce_keys [:local_date]
+  defstruct [:local_date]
+
+  @type t :: %__MODULE__{
+          local_date: integer()
+        }
+
+  def decode_local_date(value) when is_integer(value), do: value
+  def decode_local_date(_), do: {:error, "Unexpected type when decoding LocalDate.local_date"}
+
+  def encode_local_date(value) when is_integer(value), do: value
+  def encode_local_date(_), do: {:error, "Unexpected type when encoding LocalDate.local_date"}
+
+  def from_map(m) do
+    %LocalDate{
+      local_date: decode_local_date(m["LocalDate"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "LocalDate" => struct.local_date,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
 defmodule Locale do
   @enforce_keys [:locale]
   defstruct [:locale]
@@ -7845,45 +7884,6 @@ defmodule No 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 ImportClass do
   @enforce_keys [:import_import]
   defstruct [:import_import]
@@ -8002,8 +8002,8 @@ 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, :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, :local_date, :locale, :lock, :long, :map, :map_entry, :metadata_property_handling, :module, :mutable, :mutating, :namespace, :native, :new, :newtonsoft, :no, :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, :local_date, :locale, :lock, :long, :map, :map_entry, :metadata_property_handling, :module, :mutable, :mutating, :namespace, :native, :new, :newtonsoft, :no, :obj3_import, :obj3_in, :obj3_nil]
 
   @type t :: %__MODULE__{
           dummy: integer(),
@@ -8053,6 +8053,7 @@ defmodule Obj3 do
           left: Left.t(),
           let: Let.t(),
           list: ListClass.t(),
+          local_date: LocalDate.t(),
           locale: Locale.t(),
           lock: Lock.t(),
           long: Long.t(),
@@ -8067,7 +8068,6 @@ defmodule Obj3 do
           new: New.t(),
           newtonsoft: Newtonsoft.t(),
           no: No.t(),
-          noexcept: Noexcept.t(),
           obj3_import: ImportClass.t(),
           obj3_in: InClass.t(),
           obj3_nil: NilClass.t()
@@ -8128,6 +8128,7 @@ defmodule Obj3 do
       left: Left.from_map(m["left"]),
       let: Let.from_map(m["let"]),
       list: ListClass.from_map(m["list"]),
+      local_date: LocalDate.from_map(m["LocalDate"]),
       locale: Locale.from_map(m["Locale"]),
       lock: Lock.from_map(m["lock"]),
       long: Long.from_map(m["long"]),
@@ -8142,7 +8143,6 @@ defmodule Obj3 do
       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"]),
@@ -8204,6 +8204,7 @@ defmodule Obj3 do
       "left" => Left.to_map(struct.left),
       "let" => Let.to_map(struct.let),
       "list" => ListClass.to_map(struct.list),
+      "LocalDate" => LocalDate.to_map(struct.local_date),
       "Locale" => Locale.to_map(struct.locale),
       "lock" => Lock.to_map(struct.lock),
       "long" => Long.to_map(struct.long),
@@ -8218,7 +8219,6 @@ defmodule Obj3 do
       "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),
@@ -8271,6 +8271,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]
@@ -9012,6 +9051,84 @@ defmodule Of do
   end
 end
 
+defmodule OffsetDateTime do
+  @enforce_keys [:offset_date_time]
+  defstruct [:offset_date_time]
+
+  @type t :: %__MODULE__{
+          offset_date_time: integer()
+        }
+
+  def decode_offset_date_time(value) when is_integer(value), do: value
+  def decode_offset_date_time(_), do: {:error, "Unexpected type when decoding OffsetDateTime.offset_date_time"}
+
+  def encode_offset_date_time(value) when is_integer(value), do: value
+  def encode_offset_date_time(_), do: {:error, "Unexpected type when encoding OffsetDateTime.offset_date_time"}
+
+  def from_map(m) do
+    %OffsetDateTime{
+      offset_date_time: decode_offset_date_time(m["OffsetDateTime"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "OffsetDateTime" => struct.offset_date_time,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule OffsetTime do
+  @enforce_keys [:offset_time]
+  defstruct [:offset_time]
+
+  @type t :: %__MODULE__{
+          offset_time: integer()
+        }
+
+  def decode_offset_time(value) when is_integer(value), do: value
+  def decode_offset_time(_), do: {:error, "Unexpected type when decoding OffsetTime.offset_time"}
+
+  def encode_offset_time(value) when is_integer(value), do: value
+  def encode_offset_time(_), do: {:error, "Unexpected type when encoding OffsetTime.offset_time"}
+
+  def from_map(m) do
+    %OffsetTime{
+      offset_time: decode_offset_time(m["OffsetTime"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "OffsetTime" => struct.offset_time,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
 defmodule Oneway do
   @enforce_keys [:oneway]
   defstruct [:oneway]
@@ -10611,205 +10728,89 @@ defmodule Sbyte do
   end
 end
 
-defmodule Sealed do
-  @enforce_keys [:sealed]
-  defstruct [:sealed]
+defmodule Obj4 do
+  @enforce_keys [:dummy, :no_such_method, :noexcept, :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, :offset_date_time, :offset_time, :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]
+  defstruct [:dummy, :no_such_method, :noexcept, :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, :offset_date_time, :offset_time, :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]
 
   @type t :: %__MODULE__{
-          sealed: integer()
+          dummy: integer(),
+          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(),
+          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(),
+          offset_date_time: OffsetDateTime.t(),
+          offset_time: OffsetTime.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()
         }
 
-  def decode_sealed(value) when is_integer(value), do: value
-  def decode_sealed(_), do: {:error, "Unexpected type when decoding Sealed.sealed"}
+  def decode_dummy(value) when is_integer(value), do: value
+  def decode_dummy(_), do: {:error, "Unexpected type when decoding Obj4.dummy"}
 
-  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
-    %Sealed{
-      sealed: decode_sealed(m["sealed"]),
-    }
-  end
-
-  def from_json(json) do
-    json
-          |> Jason.decode!()
-          |> from_map()
-  end
-
-  def to_map(struct) do
-    %{
-      "sealed" => struct.sealed,
-    }
-  end
-
-  def to_json(struct) do
-    struct
-          |> to_map()
-          |> Jason.encode!()
-  end
-end
-
-defmodule Sel do
-  @enforce_keys [:sel]
-  defstruct [:sel]
-
-  @type t :: %__MODULE__{
-          sel: integer()
-        }
-
-  def decode_sel(value) when is_integer(value), do: value
-  def decode_sel(_), do: {:error, "Unexpected type when decoding Sel.sel"}
-
-  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
-    %Sel{
-      sel: decode_sel(m["SEL"]),
-    }
-  end
-
-  def from_json(json) do
-    json
-          |> Jason.decode!()
-          |> from_map()
-  end
-
-  def to_map(struct) do
-    %{
-      "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
-
-  def to_json(struct) do
-    struct
-          |> to_map()
-          |> Jason.encode!()
-  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]
-
-  @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()
-        }
-
-  def decode_dummy(value) when is_integer(value), do: value
-  def decode_dummy(_), do: {:error, "Unexpected type when decoding Obj4.dummy"}
-
-  def encode_dummy(value) when is_integer(value), do: value
-  def encode_dummy(_), do: {:error, "Unexpected type when encoding Obj4.dummy"}
+  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
     %Obj4{
       dummy: decode_dummy(m["dummy"]),
       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"]),
@@ -10829,6 +10830,8 @@ defmodule Obj4 do
       object: Object.from_map(m["object"]),
       object_mapper: ObjectMapper.from_map(m["ObjectMapper"]),
       of: Of.from_map(m["of"]),
+      offset_date_time: OffsetDateTime.from_map(m["OffsetDateTime"]),
+      offset_time: OffsetTime.from_map(m["OffsetTime"]),
       oneway: Oneway.from_map(m["oneway"]),
       open: Open.from_map(m["open"]),
       operator: Operator.from_map(m["operator"]),
@@ -10870,9 +10873,6 @@ defmodule Obj4 do
       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"]),
     }
   end
 
@@ -10886,6 +10886,7 @@ defmodule Obj4 do
     %{
       "dummy" => struct.dummy,
       "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),
@@ -10905,6 +10906,8 @@ defmodule Obj4 do
       "object" => Object.to_map(struct.object),
       "ObjectMapper" => ObjectMapper.to_map(struct.object_mapper),
       "of" => Of.to_map(struct.of),
+      "OffsetDateTime" => OffsetDateTime.to_map(struct.offset_date_time),
+      "OffsetTime" => OffsetTime.to_map(struct.offset_time),
       "oneway" => Oneway.to_map(struct.oneway),
       "open" => Open.to_map(struct.open),
       "operator" => Operator.to_map(struct.operator),
@@ -10946,9 +10949,6 @@ defmodule Obj4 do
       "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),
     }
   end
 
@@ -11154,6 +11154,123 @@ defmodule PrimitiveKind do
   end
 end
 
+defmodule Sealed do
+  @enforce_keys [:sealed]
+  defstruct [:sealed]
+
+  @type t :: %__MODULE__{
+          sealed: integer()
+        }
+
+  def decode_sealed(value) when is_integer(value), do: value
+  def decode_sealed(_), do: {:error, "Unexpected type when decoding Sealed.sealed"}
+
+  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
+    %Sealed{
+      sealed: decode_sealed(m["sealed"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "sealed" => struct.sealed,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule Sel do
+  @enforce_keys [:sel]
+  defstruct [:sel]
+
+  @type t :: %__MODULE__{
+          sel: integer()
+        }
+
+  def decode_sel(value) when is_integer(value), do: value
+  def decode_sel(_), do: {:error, "Unexpected type when decoding Sel.sel"}
+
+  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
+    %Sel{
+      sel: decode_sel(m["SEL"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "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
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
 defmodule Self do
   @enforce_keys [:self]
   defstruct [:self]
@@ -13118,126 +13235,9 @@ defmodule Ulong do
   def encode_ulong(value) when is_integer(value), do: value
   def encode_ulong(_), do: {:error, "Unexpected type when encoding Ulong.ulong"}
 
-  def from_map(m) do
-    %Ulong{
-      ulong: decode_ulong(m["ulong"]),
-    }
-  end
-
-  def from_json(json) do
-    json
-          |> Jason.decode!()
-          |> from_map()
-  end
-
-  def to_map(struct) do
-    %{
-      "ulong" => struct.ulong,
-    }
-  end
-
-  def to_json(struct) do
-    struct
-          |> to_map()
-          |> Jason.encode!()
-  end
-end
-
-defmodule Unchecked do
-  @enforce_keys [:unchecked]
-  defstruct [:unchecked]
-
-  @type t :: %__MODULE__{
-          unchecked: integer()
-        }
-
-  def decode_unchecked(value) when is_integer(value), do: value
-  def decode_unchecked(_), do: {:error, "Unexpected type when decoding Unchecked.unchecked"}
-
-  def encode_unchecked(value) when is_integer(value), do: value
-  def encode_unchecked(_), do: {:error, "Unexpected type when encoding Unchecked.unchecked"}
-
-  def from_map(m) do
-    %Unchecked{
-      unchecked: decode_unchecked(m["unchecked"]),
-    }
-  end
-
-  def from_json(json) do
-    json
-          |> Jason.decode!()
-          |> from_map()
-  end
-
-  def to_map(struct) do
-    %{
-      "unchecked" => struct.unchecked,
-    }
-  end
-
-  def to_json(struct) do
-    struct
-          |> to_map()
-          |> Jason.encode!()
-  end
-end
-
-defmodule Undefined do
-  @enforce_keys [:undefined]
-  defstruct [:undefined]
-
-  @type t :: %__MODULE__{
-          undefined: integer()
-        }
-
-  def decode_undefined(value) when is_integer(value), do: value
-  def decode_undefined(_), do: {:error, "Unexpected type when decoding Undefined.undefined"}
-
-  def encode_undefined(value) when is_integer(value), do: value
-  def encode_undefined(_), do: {:error, "Unexpected type when encoding Undefined.undefined"}
-
-  def from_map(m) do
-    %Undefined{
-      undefined: decode_undefined(m["undefined"]),
-    }
-  end
-
-  def from_json(json) do
-    json
-          |> Jason.decode!()
-          |> from_map()
-  end
-
-  def to_map(struct) do
-    %{
-      "undefined" => struct.undefined,
-    }
-  end
-
-  def to_json(struct) do
-    struct
-          |> to_map()
-          |> Jason.encode!()
-  end
-end
-
-defmodule Union do
-  @enforce_keys [:union]
-  defstruct [:union]
-
-  @type t :: %__MODULE__{
-          union: integer()
-        }
-
-  def decode_union(value) when is_integer(value), do: value
-  def decode_union(_), do: {:error, "Unexpected type when decoding Union.union"}
-
-  def encode_union(value) when is_integer(value), do: value
-  def encode_union(_), do: {:error, "Unexpected type when encoding Union.union"}
-
-  def from_map(m) do
-    %Union{
-      union: decode_union(m["union"]),
+  def from_map(m) do
+    %Ulong{
+      ulong: decode_ulong(m["ulong"]),
     }
   end
 
@@ -13249,7 +13249,7 @@ defmodule Union do
 
   def to_map(struct) do
     %{
-      "union" => struct.union,
+      "ulong" => struct.ulong,
     }
   end
 
@@ -13260,23 +13260,23 @@ defmodule Union do
   end
 end
 
-defmodule Unowned do
-  @enforce_keys [:unowned]
-  defstruct [:unowned]
+defmodule Unchecked do
+  @enforce_keys [:unchecked]
+  defstruct [:unchecked]
 
   @type t :: %__MODULE__{
-          unowned: integer()
+          unchecked: integer()
         }
 
-  def decode_unowned(value) when is_integer(value), do: value
-  def decode_unowned(_), do: {:error, "Unexpected type when decoding Unowned.unowned"}
+  def decode_unchecked(value) when is_integer(value), do: value
+  def decode_unchecked(_), do: {:error, "Unexpected type when decoding Unchecked.unchecked"}
 
-  def encode_unowned(value) when is_integer(value), do: value
-  def encode_unowned(_), do: {:error, "Unexpected type when encoding Unowned.unowned"}
+  def encode_unchecked(value) when is_integer(value), do: value
+  def encode_unchecked(_), do: {:error, "Unexpected type when encoding Unchecked.unchecked"}
 
   def from_map(m) do
-    %Unowned{
-      unowned: decode_unowned(m["unowned"]),
+    %Unchecked{
+      unchecked: decode_unchecked(m["unchecked"]),
     }
   end
 
@@ -13288,7 +13288,7 @@ defmodule Unowned do
 
   def to_map(struct) do
     %{
-      "unowned" => struct.unowned,
+      "unchecked" => struct.unchecked,
     }
   end
 
@@ -13299,23 +13299,23 @@ defmodule Unowned do
   end
 end
 
-defmodule Unsafe do
-  @enforce_keys [:unsafe]
-  defstruct [:unsafe]
+defmodule Undefined do
+  @enforce_keys [:undefined]
+  defstruct [:undefined]
 
   @type t :: %__MODULE__{
-          unsafe: integer()
+          undefined: integer()
         }
 
-  def decode_unsafe(value) when is_integer(value), do: value
-  def decode_unsafe(_), do: {:error, "Unexpected type when decoding Unsafe.unsafe"}
+  def decode_undefined(value) when is_integer(value), do: value
+  def decode_undefined(_), do: {:error, "Unexpected type when decoding Undefined.undefined"}
 
-  def encode_unsafe(value) when is_integer(value), do: value
-  def encode_unsafe(_), do: {:error, "Unexpected type when encoding Unsafe.unsafe"}
+  def encode_undefined(value) when is_integer(value), do: value
+  def encode_undefined(_), do: {:error, "Unexpected type when encoding Undefined.undefined"}
 
   def from_map(m) do
-    %Unsafe{
-      unsafe: decode_unsafe(m["unsafe"]),
+    %Undefined{
+      undefined: decode_undefined(m["undefined"]),
     }
   end
 
@@ -13327,7 +13327,7 @@ defmodule Unsafe do
 
   def to_map(struct) do
     %{
-      "unsafe" => struct.unsafe,
+      "undefined" => struct.undefined,
     }
   end
 
@@ -13338,23 +13338,23 @@ defmodule Unsafe do
   end
 end
 
-defmodule Unsigned do
-  @enforce_keys [:unsigned]
-  defstruct [:unsigned]
+defmodule Union do
+  @enforce_keys [:union]
+  defstruct [:union]
 
   @type t :: %__MODULE__{
-          unsigned: integer()
+          union: integer()
         }
 
-  def decode_unsigned(value) when is_integer(value), do: value
-  def decode_unsigned(_), do: {:error, "Unexpected type when decoding Unsigned.unsigned"}
+  def decode_union(value) when is_integer(value), do: value
+  def decode_union(_), do: {:error, "Unexpected type when decoding Union.union"}
 
-  def encode_unsigned(value) when is_integer(value), do: value
-  def encode_unsigned(_), do: {:error, "Unexpected type when encoding Unsigned.unsigned"}
+  def encode_union(value) when is_integer(value), do: value
+  def encode_union(_), do: {:error, "Unexpected type when encoding Union.union"}
 
   def from_map(m) do
-    %Unsigned{
-      unsigned: decode_unsigned(m["unsigned"]),
+    %Union{
+      union: decode_union(m["union"]),
     }
   end
 
@@ -13366,7 +13366,7 @@ defmodule Unsigned do
 
   def to_map(struct) do
     %{
-      "unsigned" => struct.unsigned,
+      "union" => struct.union,
     }
   end
 
@@ -13377,23 +13377,23 @@ defmodule Unsigned do
   end
 end
 
-defmodule UseSerializers do
-  @enforce_keys [:use_serializers]
-  defstruct [:use_serializers]
+defmodule Unowned do
+  @enforce_keys [:unowned]
+  defstruct [:unowned]
 
   @type t :: %__MODULE__{
-          use_serializers: integer()
+          unowned: integer()
         }
 
-  def decode_use_serializers(value) when is_integer(value), do: value
-  def decode_use_serializers(_), do: {:error, "Unexpected type when decoding UseSerializers.use_serializers"}
+  def decode_unowned(value) when is_integer(value), do: value
+  def decode_unowned(_), do: {:error, "Unexpected type when decoding Unowned.unowned"}
 
-  def encode_use_serializers(value) when is_integer(value), do: value
-  def encode_use_serializers(_), do: {:error, "Unexpected type when encoding UseSerializers.use_serializers"}
+  def encode_unowned(value) when is_integer(value), do: value
+  def encode_unowned(_), do: {:error, "Unexpected type when encoding Unowned.unowned"}
 
   def from_map(m) do
-    %UseSerializers{
-      use_serializers: decode_use_serializers(m["UseSerializers"]),
+    %Unowned{
+      unowned: decode_unowned(m["unowned"]),
     }
   end
 
@@ -13405,7 +13405,7 @@ defmodule UseSerializers do
 
   def to_map(struct) do
     %{
-      "UseSerializers" => struct.use_serializers,
+      "unowned" => struct.unowned,
     }
   end
 
@@ -13416,23 +13416,23 @@ defmodule UseSerializers do
   end
 end
 
-defmodule Ushort do
-  @enforce_keys [:ushort]
-  defstruct [:ushort]
+defmodule UseSerializers do
+  @enforce_keys [:use_serializers]
+  defstruct [:use_serializers]
 
   @type t :: %__MODULE__{
-          ushort: integer()
+          use_serializers: integer()
         }
 
-  def decode_ushort(value) when is_integer(value), do: value
-  def decode_ushort(_), do: {:error, "Unexpected type when decoding Ushort.ushort"}
+  def decode_use_serializers(value) when is_integer(value), do: value
+  def decode_use_serializers(_), do: {:error, "Unexpected type when decoding UseSerializers.use_serializers"}
 
-  def encode_ushort(value) when is_integer(value), do: value
-  def encode_ushort(_), do: {:error, "Unexpected type when encoding Ushort.ushort"}
+  def encode_use_serializers(value) when is_integer(value), do: value
+  def encode_use_serializers(_), do: {:error, "Unexpected type when encoding UseSerializers.use_serializers"}
 
   def from_map(m) do
-    %Ushort{
-      ushort: decode_ushort(m["ushort"]),
+    %UseSerializers{
+      use_serializers: decode_use_serializers(m["UseSerializers"]),
     }
   end
 
@@ -13444,7 +13444,7 @@ defmodule Ushort do
 
   def to_map(struct) do
     %{
-      "ushort" => struct.ushort,
+      "UseSerializers" => struct.use_serializers,
     }
   end
 
@@ -13456,8 +13456,8 @@ defmodule Ushort do
 end
 
 defmodule Obj5 do
-  @enforce_keys [:dummy, :k_serializer, :obj5_self, :obj5_true, :obj5_type, :primitive_kind, :self, :sendable, :serial_descriptor, :serial_name, :serializable, :serialize, :serializer_provider, :set, :short, :signed, :simple_module, :sizeof, :stackalloc, :standards, :static, :static_assert, :static_cast, :std_deserializer, :std_serializer, :strictfp, :string, :struct, :subscript, :super, :switch, :symbol, :synchronized, :system, :template, :then, :this, :thread_local, :throw, :throws, :time_only, :time_only_converter, :time_zone, :to_json, :to_string, :top_level, :transient, :true_1, :try, :type, :typealias, :typedef, :typeid, :typename, :typeof, :uint, :ulong, :unchecked, :undefined, :union, :unowned, :unsafe, :unsigned, :use_serializers, :ushort]
-  defstruct [:dummy, :k_serializer, :obj5_self, :obj5_true, :obj5_type, :primitive_kind, :self, :sendable, :serial_descriptor, :serial_name, :serializable, :serialize, :serializer_provider, :set, :short, :signed, :simple_module, :sizeof, :stackalloc, :standards, :static, :static_assert, :static_cast, :std_deserializer, :std_serializer, :strictfp, :string, :struct, :subscript, :super, :switch, :symbol, :synchronized, :system, :template, :then, :this, :thread_local, :throw, :throws, :time_only, :time_only_converter, :time_zone, :to_json, :to_string, :top_level, :transient, :true_1, :try, :type, :typealias, :typedef, :typeid, :typename, :typeof, :uint, :ulong, :unchecked, :undefined, :union, :unowned, :unsafe, :unsigned, :use_serializers, :ushort]
+  @enforce_keys [:dummy, :k_serializer, :obj5_self, :obj5_true, :obj5_type, :primitive_kind, :sealed, :sel, :select, :self, :sendable, :serial_descriptor, :serial_name, :serializable, :serialize, :serializer_provider, :set, :short, :signed, :simple_module, :sizeof, :stackalloc, :standards, :static, :static_assert, :static_cast, :std_deserializer, :std_serializer, :strictfp, :string, :struct, :subscript, :super, :switch, :symbol, :synchronized, :system, :template, :then, :this, :thread_local, :throw, :throws, :time_only, :time_only_converter, :time_zone, :to_json, :to_string, :top_level, :transient, :true_1, :try, :type, :typealias, :typedef, :typeid, :typename, :typeof, :uint, :ulong, :unchecked, :undefined, :union, :unowned, :use_serializers]
+  defstruct [:dummy, :k_serializer, :obj5_self, :obj5_true, :obj5_type, :primitive_kind, :sealed, :sel, :select, :self, :sendable, :serial_descriptor, :serial_name, :serializable, :serialize, :serializer_provider, :set, :short, :signed, :simple_module, :sizeof, :stackalloc, :standards, :static, :static_assert, :static_cast, :std_deserializer, :std_serializer, :strictfp, :string, :struct, :subscript, :super, :switch, :symbol, :synchronized, :system, :template, :then, :this, :thread_local, :throw, :throws, :time_only, :time_only_converter, :time_zone, :to_json, :to_string, :top_level, :transient, :true_1, :try, :type, :typealias, :typedef, :typeid, :typename, :typeof, :uint, :ulong, :unchecked, :undefined, :union, :unowned, :use_serializers]
 
   @type t :: %__MODULE__{
           dummy: integer(),
@@ -13466,6 +13466,9 @@ defmodule Obj5 do
           obj5_true: TrueClass.t(),
           obj5_type: TypeClass.t(),
           primitive_kind: PrimitiveKind.t(),
+          sealed: Sealed.t(),
+          sel: Sel.t(),
+          select: Select.t(),
           self: Self.t(),
           sendable: Sendable.t(),
           serial_descriptor: SerialDescriptor.t(),
@@ -13521,10 +13524,7 @@ defmodule Obj5 do
           undefined: Undefined.t(),
           union: Union.t(),
           unowned: Unowned.t(),
-          unsafe: Unsafe.t(),
-          unsigned: Unsigned.t(),
-          use_serializers: UseSerializers.t(),
-          ushort: Ushort.t()
+          use_serializers: UseSerializers.t()
         }
 
   def decode_dummy(value) when is_integer(value), do: value
@@ -13541,6 +13541,9 @@ defmodule Obj5 do
       obj5_true: TrueClass.from_map(m["True"]),
       obj5_type: TypeClass.from_map(m["type"]),
       primitive_kind: PrimitiveKind.from_map(m["PrimitiveKind"]),
+      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"]),
       serial_descriptor: SerialDescriptor.from_map(m["SerialDescriptor"]),
@@ -13596,10 +13599,7 @@ defmodule Obj5 do
       undefined: Undefined.from_map(m["undefined"]),
       union: Union.from_map(m["union"]),
       unowned: Unowned.from_map(m["unowned"]),
-      unsafe: Unsafe.from_map(m["unsafe"]),
-      unsigned: Unsigned.from_map(m["unsigned"]),
       use_serializers: UseSerializers.from_map(m["UseSerializers"]),
-      ushort: Ushort.from_map(m["ushort"]),
     }
   end
 
@@ -13617,6 +13617,9 @@ defmodule Obj5 do
       "True" => TrueClass.to_map(struct.obj5_true),
       "type" => TypeClass.to_map(struct.obj5_type),
       "PrimitiveKind" => PrimitiveKind.to_map(struct.primitive_kind),
+      "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),
       "SerialDescriptor" => SerialDescriptor.to_map(struct.serial_descriptor),
@@ -13672,10 +13675,124 @@ defmodule Obj5 do
       "undefined" => Undefined.to_map(struct.undefined),
       "union" => Union.to_map(struct.union),
       "unowned" => Unowned.to_map(struct.unowned),
-      "unsafe" => Unsafe.to_map(struct.unsafe),
-      "unsigned" => Unsigned.to_map(struct.unsigned),
       "UseSerializers" => UseSerializers.to_map(struct.use_serializers),
-      "ushort" => Ushort.to_map(struct.ushort),
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule Unsafe do
+  @enforce_keys [:unsafe]
+  defstruct [:unsafe]
+
+  @type t :: %__MODULE__{
+          unsafe: integer()
+        }
+
+  def decode_unsafe(value) when is_integer(value), do: value
+  def decode_unsafe(_), do: {:error, "Unexpected type when decoding Unsafe.unsafe"}
+
+  def encode_unsafe(value) when is_integer(value), do: value
+  def encode_unsafe(_), do: {:error, "Unexpected type when encoding Unsafe.unsafe"}
+
+  def from_map(m) do
+    %Unsafe{
+      unsafe: decode_unsafe(m["unsafe"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "unsafe" => struct.unsafe,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule Unsigned do
+  @enforce_keys [:unsigned]
+  defstruct [:unsigned]
+
+  @type t :: %__MODULE__{
+          unsigned: integer()
+        }
+
+  def decode_unsigned(value) when is_integer(value), do: value
+  def decode_unsigned(_), do: {:error, "Unexpected type when decoding Unsigned.unsigned"}
+
+  def encode_unsigned(value) when is_integer(value), do: value
+  def encode_unsigned(_), do: {:error, "Unexpected type when encoding Unsigned.unsigned"}
+
+  def from_map(m) do
+    %Unsigned{
+      unsigned: decode_unsigned(m["unsigned"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "unsigned" => struct.unsigned,
+    }
+  end
+
+  def to_json(struct) do
+    struct
+          |> to_map()
+          |> Jason.encode!()
+  end
+end
+
+defmodule Ushort do
+  @enforce_keys [:ushort]
+  defstruct [:ushort]
+
+  @type t :: %__MODULE__{
+          ushort: integer()
+        }
+
+  def decode_ushort(value) when is_integer(value), do: value
+  def decode_ushort(_), do: {:error, "Unexpected type when decoding Ushort.ushort"}
+
+  def encode_ushort(value) when is_integer(value), do: value
+  def encode_ushort(_), do: {:error, "Unexpected type when encoding Ushort.ushort"}
+
+  def from_map(m) do
+    %Ushort{
+      ushort: decode_ushort(m["ushort"]),
+    }
+  end
+
+  def from_json(json) do
+    json
+          |> Jason.decode!()
+          |> from_map()
+  end
+
+  def to_map(struct) do
+    %{
+      "ushort" => struct.ushort,
     }
   end
 
@@ -14389,11 +14506,14 @@ defmodule Yield do
 end
 
 defmodule Obj6 do
-  @enforce_keys [:dummy, :using, :utf8_json_reader, :utf8_json_writer, :uuid, :var, :virtual, :void, :volatile, :wchar_t, :weak, :where, :while, :will_set, :with, :xor, :xor_eq, :yes, :yield]
-  defstruct [:dummy, :using, :utf8_json_reader, :utf8_json_writer, :uuid, :var, :virtual, :void, :volatile, :wchar_t, :weak, :where, :while, :will_set, :with, :xor, :xor_eq, :yes, :yield]
+  @enforce_keys [:dummy, :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, :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(),
+          unsafe: Unsafe.t(),
+          unsigned: Unsigned.t(),
+          ushort: Ushort.t(),
           using: Using.t(),
           utf8_json_reader: Utf8JSONReader.t(),
           utf8_json_writer: Utf8JSONWriter.t(),
@@ -14423,6 +14543,9 @@ defmodule Obj6 do
   def from_map(m) do
     %Obj6{
       dummy: decode_dummy(m["dummy"]),
+      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"]),
@@ -14453,6 +14576,9 @@ defmodule Obj6 do
   def to_map(struct) do
     %{
       "dummy" => struct.dummy,
+      "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),
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 2cf97f0..7e4e3c4 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
@@ -188,6 +188,7 @@ module QuickType exposing
     , Lazy
     , Left
     , ListClass
+    , LocalDate
     , Locale
     , Lock
     , Long
@@ -202,7 +203,6 @@ module QuickType exposing
     , Newtonsoft
     , Nil
     , No
-    , Noexcept
     , If
     , Import
     , In
@@ -212,6 +212,7 @@ module QuickType exposing
     , Module
     , Obj4
     , NoSuchMethod
+    , Noexcept
     , Nonatomic
     , None
     , Nonlocal
@@ -231,6 +232,8 @@ module QuickType exposing
     , ProtocolClass
     , Object
     , ObjectMapper
+    , OffsetDateTime
+    , OffsetTime
     , Oneway
     , Open
     , Operator
@@ -272,9 +275,6 @@ module QuickType exposing
     , RuntimeType
     , S
     , Sbyte
-    , Sealed
-    , Sel
-    , Select
     , Obj5
     , KSerializer
     , SelfClass
@@ -284,6 +284,9 @@ module QuickType exposing
     , Type
     , PrimitiveKind
     , TypeClass
+    , Sealed
+    , Sel
+    , Select
     , Self
     , Sendable
     , SerialDescriptor
@@ -336,12 +339,12 @@ module QuickType exposing
     , Undefined
     , Union
     , Unowned
-    , Unsafe
-    , Unsigned
     , UseSerializers
-    , Ushort
     , Obj6
     , Where
+    , Unsafe
+    , Unsigned
+    , Ushort
     , Using
     , Utf8JSONReader
     , Utf8JSONWriter
@@ -1073,6 +1076,7 @@ type alias Obj3 =
     , lazy : Lazy
     , left : Left
     , list : ListClass
+    , localDate : LocalDate
     , locale : Locale
     , lock : Lock
     , long : Long
@@ -1087,7 +1091,6 @@ type alias Obj3 =
     , newtonsoft : Newtonsoft
     , nil : Nil
     , no : No
-    , noexcept : Noexcept
     , obj3If : If
     , obj3Import : Import
     , obj3In : In
@@ -1265,6 +1268,10 @@ type alias ListClass =
     { list : Int
     }
 
+type alias LocalDate =
+    { localDate : Int
+    }
+
 type alias Locale =
     { locale : Int
     }
@@ -1321,10 +1328,6 @@ type alias No =
     { no : Int
     }
 
-type alias Noexcept =
-    { noexcept : Int
-    }
-
 type alias If =
     { ifIf : Int
     }
@@ -1356,6 +1359,7 @@ type alias Module =
 type alias Obj4 =
     { dummy : Int
     , noSuchMethod : NoSuchMethod
+    , noexcept : Noexcept
     , nonatomic : Nonatomic
     , none : None
     , nonlocal : Nonlocal
@@ -1375,6 +1379,8 @@ type alias Obj4 =
     , obj4Protocol : ProtocolClass
     , object : Object
     , objectMapper : ObjectMapper
+    , offsetDateTime : OffsetDateTime
+    , offsetTime : OffsetTime
     , oneway : Oneway
     , open : Open
     , operator : Operator
@@ -1416,15 +1422,16 @@ type alias Obj4 =
     , runtimeType : RuntimeType
     , s : S
     , sbyte : Sbyte
-    , sealed : Sealed
-    , sel : Sel
-    , select : Select
     }
 
 type alias NoSuchMethod =
     { noSuchMethod : Int
     }
 
+type alias Noexcept =
+    { noexcept : Int
+    }
+
 type alias Nonatomic =
     { nonatomic : Int
     }
@@ -1501,6 +1508,14 @@ type alias ObjectMapper =
     { objectMapper : Int
     }
 
+type alias OffsetDateTime =
+    { offsetDateTime : Int
+    }
+
+type alias OffsetTime =
+    { offsetTime : Int
+    }
+
 type alias Oneway =
     { oneway : Int
     }
@@ -1665,18 +1680,6 @@ 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
     , kSerializer : KSerializer
@@ -1687,6 +1690,9 @@ type alias Obj5 =
     , obj5Type : Type
     , primitiveKind : PrimitiveKind
     , purpleType : TypeClass
+    , sealed : Sealed
+    , sel : Sel
+    , select : Select
     , self : Self
     , sendable : Sendable
     , serialDescriptor : SerialDescriptor
@@ -1739,10 +1745,7 @@ type alias Obj5 =
     , undefined : Undefined
     , union : Union
     , unowned : Unowned
-    , unsafe : Unsafe
-    , unsigned : Unsigned
     , useSerializers : UseSerializers
-    , ushort : Ushort
     }
 
 type alias KSerializer =
@@ -1777,6 +1780,18 @@ type alias TypeClass =
     { typeType : Int
     }
 
+type alias Sealed =
+    { sealed : Int
+    }
+
+type alias Sel =
+    { sel : Int
+    }
+
+type alias Select =
+    { select : Int
+    }
+
 type alias Self =
     { self : Int
     }
@@ -1985,25 +2000,16 @@ type alias Unowned =
     { unowned : Int
     }
 
-type alias Unsafe =
-    { unsafe : Int
-    }
-
-type alias Unsigned =
-    { unsigned : Int
-    }
-
 type alias UseSerializers =
     { useSerializers : Int
     }
 
-type alias Ushort =
-    { ushort : Int
-    }
-
 type alias Obj6 =
     { dummy : Int
     , obj6Where : Where
+    , unsafe : Unsafe
+    , unsigned : Unsigned
+    , ushort : Ushort
     , using : Using
     , utf8JSONReader : Utf8JSONReader
     , utf8JSONWriter : Utf8JSONWriter
@@ -2027,6 +2033,18 @@ type alias Where =
     { whereWhere : Int
     }
 
+type alias Unsafe =
+    { unsafe : Int
+    }
+
+type alias Unsigned =
+    { unsigned : Int
+    }
+
+type alias Ushort =
+    { ushort : Int
+    }
+
 type alias Using =
     { using : Int
     }
@@ -3876,6 +3894,7 @@ obj3 =
         |> Jpipe.required "lazy" lazy
         |> Jpipe.required "left" left
         |> Jpipe.required "list" listClass
+        |> Jpipe.required "LocalDate" localDate
         |> Jpipe.required "Locale" locale
         |> Jpipe.required "lock" lock
         |> Jpipe.required "long" long
@@ -3890,7 +3909,6 @@ obj3 =
         |> 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
@@ -3945,6 +3963,7 @@ encodeObj3 x =
         , ("lazy", encodeLazy x.lazy)
         , ("left", encodeLeft x.left)
         , ("list", encodeListClass x.list)
+        , ("LocalDate", encodeLocalDate x.localDate)
         , ("Locale", encodeLocale x.locale)
         , ("lock", encodeLock x.lock)
         , ("long", encodeLong x.long)
@@ -3959,7 +3978,6 @@ encodeObj3 x =
         , ("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)
@@ -4431,6 +4449,17 @@ encodeListClass x =
         [ ("list", Jenc.int x.list)
         ]
 
+localDate : Jdec.Decoder LocalDate
+localDate =
+    Jdec.succeed LocalDate
+        |> Jpipe.required "LocalDate" Jdec.int
+
+encodeLocalDate : LocalDate -> Jenc.Value
+encodeLocalDate x =
+    Jenc.object
+        [ ("LocalDate", Jenc.int x.localDate)
+        ]
+
 locale : Jdec.Decoder Locale
 locale =
     Jdec.succeed Locale
@@ -4585,17 +4614,6 @@ encodeNo x =
         [ ("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
@@ -4678,6 +4696,7 @@ obj4 =
     Jdec.succeed Obj4
         |> Jpipe.required "dummy" Jdec.int
         |> Jpipe.required "noSuchMethod" noSuchMethod
+        |> Jpipe.required "noexcept" noexcept
         |> Jpipe.required "nonatomic" nonatomic
         |> Jpipe.required "None" none
         |> Jpipe.required "nonlocal" nonlocal
@@ -4697,6 +4716,8 @@ obj4 =
         |> Jpipe.required "protocol" protocolClass
         |> Jpipe.required "object" object
         |> Jpipe.required "ObjectMapper" objectMapper
+        |> Jpipe.required "OffsetDateTime" offsetDateTime
+        |> Jpipe.required "OffsetTime" offsetTime
         |> Jpipe.required "oneway" oneway
         |> Jpipe.required "open" open
         |> Jpipe.required "operator" operator
@@ -4738,15 +4759,13 @@ obj4 =
         |> 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)
         , ("noSuchMethod", encodeNoSuchMethod x.noSuchMethod)
+        , ("noexcept", encodeNoexcept x.noexcept)
         , ("nonatomic", encodeNonatomic x.nonatomic)
         , ("None", encodeNone x.none)
         , ("nonlocal", encodeNonlocal x.nonlocal)
@@ -4766,6 +4785,8 @@ encodeObj4 x =
         , ("protocol", encodeProtocolClass x.obj4Protocol)
         , ("object", encodeObject x.object)
         , ("ObjectMapper", encodeObjectMapper x.objectMapper)
+        , ("OffsetDateTime", encodeOffsetDateTime x.offsetDateTime)
+        , ("OffsetTime", encodeOffsetTime x.offsetTime)
         , ("oneway", encodeOneway x.oneway)
         , ("open", encodeOpen x.open)
         , ("operator", encodeOperator x.operator)
@@ -4807,9 +4828,6 @@ encodeObj4 x =
         , ("runtimeType", encodeRuntimeType x.runtimeType)
         , ("s", encodeS x.s)
         , ("sbyte", encodeSbyte x.sbyte)
-        , ("sealed", encodeSealed x.sealed)
-        , ("SEL", encodeSel x.sel)
-        , ("select", encodeSelect x.select)
         ]
 
 noSuchMethod : Jdec.Decoder NoSuchMethod
@@ -4823,6 +4841,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
@@ -5032,6 +5061,28 @@ encodeObjectMapper x =
         [ ("ObjectMapper", Jenc.int x.objectMapper)
         ]
 
+offsetDateTime : Jdec.Decoder OffsetDateTime
+offsetDateTime =
+    Jdec.succeed OffsetDateTime
+        |> Jpipe.required "OffsetDateTime" Jdec.int
+
+encodeOffsetDateTime : OffsetDateTime -> Jenc.Value
+encodeOffsetDateTime x =
+    Jenc.object
+        [ ("OffsetDateTime", Jenc.int x.offsetDateTime)
+        ]
+
+offsetTime : Jdec.Decoder OffsetTime
+offsetTime =
+    Jdec.succeed OffsetTime
+        |> Jpipe.required "OffsetTime" Jdec.int
+
+encodeOffsetTime : OffsetTime -> Jenc.Value
+encodeOffsetTime x =
+    Jenc.object
+        [ ("OffsetTime", Jenc.int x.offsetTime)
+        ]
+
 oneway : Jdec.Decoder Oneway
 oneway =
     Jdec.succeed Oneway
@@ -5483,39 +5534,6 @@ encodeSbyte x =
         [ ("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
@@ -5528,6 +5546,9 @@ obj5 =
         |> Jpipe.required "Type" purpleType
         |> Jpipe.required "PrimitiveKind" primitiveKind
         |> Jpipe.required "type" typeClass
+        |> Jpipe.required "sealed" sealed
+        |> Jpipe.required "SEL" sel
+        |> Jpipe.required "select" select
         |> Jpipe.required "Self" self
         |> Jpipe.required "Sendable" sendable
         |> Jpipe.required "SerialDescriptor" serialDescriptor
@@ -5580,10 +5601,7 @@ obj5 =
         |> Jpipe.required "undefined" undefined
         |> Jpipe.required "union" union
         |> Jpipe.required "unowned" unowned
-        |> Jpipe.required "unsafe" unsafe
-        |> Jpipe.required "unsigned" unsigned
         |> Jpipe.required "UseSerializers" useSerializers
-        |> Jpipe.required "ushort" ushort
 
 encodeObj5 : Obj5 -> Jenc.Value
 encodeObj5 x =
@@ -5597,6 +5615,9 @@ encodeObj5 x =
         , ("Type", encodeType x.obj5Type)
         , ("PrimitiveKind", encodePrimitiveKind x.primitiveKind)
         , ("type", encodeTypeClass x.purpleType)
+        , ("sealed", encodeSealed x.sealed)
+        , ("SEL", encodeSel x.sel)
+        , ("select", encodeSelect x.select)
         , ("Self", encodeSelf x.self)
         , ("Sendable", encodeSendable x.sendable)
         , ("SerialDescriptor", encodeSerialDescriptor x.serialDescriptor)
@@ -5649,10 +5670,7 @@ encodeObj5 x =
         , ("undefined", encodeUndefined x.undefined)
         , ("union", encodeUnion x.union)
         , ("unowned", encodeUnowned x.unowned)
-        , ("unsafe", encodeUnsafe x.unsafe)
-        , ("unsigned", encodeUnsigned x.unsigned)
         , ("UseSerializers", encodeUseSerializers x.useSerializers)
-        , ("ushort", encodeUshort x.ushort)
         ]
 
 kSerializer : Jdec.Decoder KSerializer
@@ -5743,6 +5761,39 @@ encodeTypeClass x =
         [ ("type", Jenc.int x.typeType)
         ]
 
+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
@@ -6315,28 +6366,6 @@ encodeUnowned x =
         [ ("unowned", Jenc.int x.unowned)
         ]
 
-unsafe : Jdec.Decoder Unsafe
-unsafe =
-    Jdec.succeed Unsafe
-        |> Jpipe.required "unsafe" Jdec.int
-
-encodeUnsafe : Unsafe -> Jenc.Value
-encodeUnsafe x =
-    Jenc.object
-        [ ("unsafe", Jenc.int x.unsafe)
-        ]
-
-unsigned : Jdec.Decoder Unsigned
-unsigned =
-    Jdec.succeed Unsigned
-        |> Jpipe.required "unsigned" Jdec.int
-
-encodeUnsigned : Unsigned -> Jenc.Value
-encodeUnsigned x =
-    Jenc.object
-        [ ("unsigned", Jenc.int x.unsigned)
-        ]
-
 useSerializers : Jdec.Decoder UseSerializers
 useSerializers =
     Jdec.succeed UseSerializers
@@ -6348,22 +6377,14 @@ encodeUseSerializers x =
         [ ("UseSerializers", Jenc.int x.useSerializers)
         ]
 
-ushort : Jdec.Decoder Ushort
-ushort =
-    Jdec.succeed Ushort
-        |> Jpipe.required "ushort" Jdec.int
-
-encodeUshort : Ushort -> Jenc.Value
-encodeUshort x =
-    Jenc.object
-        [ ("ushort", Jenc.int x.ushort)
-        ]
-
 obj6 : Jdec.Decoder Obj6
 obj6 =
     Jdec.succeed Obj6
         |> Jpipe.required "dummy" Jdec.int
         |> Jpipe.required "where" purpleWhere
+        |> Jpipe.required "unsafe" unsafe
+        |> Jpipe.required "unsigned" unsigned
+        |> Jpipe.required "ushort" ushort
         |> Jpipe.required "using" using
         |> Jpipe.required "Utf8JsonReader" utf8JSONReader
         |> Jpipe.required "Utf8JsonWriter" utf8JSONWriter
@@ -6387,6 +6408,9 @@ encodeObj6 x =
     Jenc.object
         [ ("dummy", Jenc.int x.dummy)
         , ("where", encodeWhere x.obj6Where)
+        , ("unsafe", encodeUnsafe x.unsafe)
+        , ("unsigned", encodeUnsigned x.unsigned)
+        , ("ushort", encodeUshort x.ushort)
         , ("using", encodeUsing x.using)
         , ("Utf8JsonReader", encodeUtf8JSONReader x.utf8JSONReader)
         , ("Utf8JsonWriter", encodeUtf8JSONWriter x.utf8JSONWriter)
@@ -6417,6 +6441,39 @@ encodeWhere x =
         [ ("where", Jenc.int x.whereWhere)
         ]
 
+unsafe : Jdec.Decoder Unsafe
+unsafe =
+    Jdec.succeed Unsafe
+        |> Jpipe.required "unsafe" Jdec.int
+
+encodeUnsafe : Unsafe -> Jenc.Value
+encodeUnsafe x =
+    Jenc.object
+        [ ("unsafe", Jenc.int x.unsafe)
+        ]
+
+unsigned : Jdec.Decoder Unsigned
+unsigned =
+    Jdec.succeed Unsigned
+        |> Jpipe.required "unsigned" Jdec.int
+
+encodeUnsigned : Unsigned -> Jenc.Value
+encodeUnsigned x =
+    Jenc.object
+        [ ("unsigned", Jenc.int x.unsigned)
+        ]
+
+ushort : Jdec.Decoder Ushort
+ushort =
+    Jdec.succeed Ushort
+        |> Jpipe.required "ushort" Jdec.int
+
+encodeUshort : Ushort -> Jenc.Value
+encodeUshort x =
+    Jenc.object
+        [ ("ushort", Jenc.int x.ushort)
+        ]
+
 using : Jdec.Decoder Using
 using =
     Jdec.succeed Using
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 c6c8e63..ea97676 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
@@ -687,6 +687,7 @@ export type Obj3 = {
     JsonParser:                 JSONParser;
     JsonReader:                 JSONReader;
     JsonTokenType:              JSONTokenType;
+    LocalDate:                  LocalDate;
     Locale:                     Locale;
     MapEntry:                   MapEntry;
     NO:                         No;
@@ -736,7 +737,6 @@ export type Obj3 = {
     new:                        New;
     newtonsoft:                 Newtonsoft;
     nil:                        Nil;
-    noexcept:                   Noexcept;
 };
 
 export type Hashable = {
@@ -799,6 +799,10 @@ export type JSONTokenType = {
     JsonTokenType: number;
 };
 
+export type LocalDate = {
+    LocalDate: number;
+};
+
 export type Locale = {
     Locale: number;
 };
@@ -991,10 +995,6 @@ export type Nil = {
     nil: number;
 };
 
-export type Noexcept = {
-    noexcept: number;
-};
-
 export type Obj4 = {
     NSError:          NSError;
     NSObject:         NSObject;
@@ -1002,11 +1002,13 @@ export type Obj4 = {
     NULL:             Null;
     None:             None;
     ObjectMapper:     ObjectMapper;
+    OffsetDateTime:   OffsetDateTime;
+    OffsetTime:       OffsetTime;
     Protocol:         Protocol;
     RegExp:           RegExpClass;
-    SEL:              Sel;
     dummy:            number;
     noSuchMethod:     NoSuchMethod;
+    noexcept:         Noexcept;
     nonatomic:        Nonatomic;
     none:             NoneClass;
     nonlocal:         Nonlocal;
@@ -1059,8 +1061,6 @@ export type Obj4 = {
     runtimeType:      RuntimeType;
     s:                S;
     sbyte:            Sbyte;
-    sealed:           Sealed;
-    select:           Select;
 };
 
 export type NSError = {
@@ -1087,6 +1087,14 @@ export type ObjectMapper = {
     ObjectMapper: number;
 };
 
+export type OffsetDateTime = {
+    OffsetDateTime: number;
+};
+
+export type OffsetTime = {
+    OffsetTime: number;
+};
+
 export type Protocol = {
     Protocol: number;
 };
@@ -1095,14 +1103,14 @@ export type RegExpClass = {
     RegExp: string;
 };
 
-export type Sel = {
-    SEL: number;
-};
-
 export type NoSuchMethod = {
     noSuchMethod: number;
 };
 
+export type Noexcept = {
+    noexcept: number;
+};
+
 export type Nonatomic = {
     nonatomic: number;
 };
@@ -1311,17 +1319,10 @@ export type Sbyte = {
     sbyte: number;
 };
 
-export type Sealed = {
-    sealed: number;
-};
-
-export type Select = {
-    select: number;
-};
-
 export type Obj5 = {
     KSerializer:        KSerializer;
     PrimitiveKind:      PrimitiveKind;
+    SEL:                Sel;
     Self:               Self;
     Sendable:           Sendable;
     SerialDescriptor:   SerialDescriptor;
@@ -1339,6 +1340,8 @@ export type Obj5 = {
     Type:               Type;
     UseSerializers:     UseSerializers;
     dummy:              number;
+    sealed:             Sealed;
+    select:             Select;
     self:               SelfClass;
     serialize:          Serialize;
     set:                Set;
@@ -1382,9 +1385,6 @@ export type Obj5 = {
     undefined:          Undefined;
     union:              Union;
     unowned:            Unowned;
-    unsafe:             Unsafe;
-    unsigned:           Unsigned;
-    ushort:             Ushort;
 };
 
 export type KSerializer = {
@@ -1395,6 +1395,10 @@ export type PrimitiveKind = {
     PrimitiveKind: number;
 };
 
+export type Sel = {
+    SEL: number;
+};
+
 export type Self = {
     Self: number;
 };
@@ -1459,6 +1463,14 @@ export type UseSerializers = {
     UseSerializers: number;
 };
 
+export type Sealed = {
+    sealed: number;
+};
+
+export type Select = {
+    select: number;
+};
+
 export type SelfClass = {
     self: number;
 };
@@ -1631,24 +1643,15 @@ export type Unowned = {
     unowned: number;
 };
 
-export type Unsafe = {
-    unsafe: number;
-};
-
-export type Unsigned = {
-    unsigned: number;
-};
-
-export type Ushort = {
-    ushort: number;
-};
-
 export type Obj6 = {
     UUID:           UUID;
     Utf8JsonReader: Utf8JSONReader;
     Utf8JsonWriter: Utf8JSONWriter;
     YES:            Yes;
     dummy:          number;
+    unsafe:         Unsafe;
+    unsigned:       Unsigned;
+    ushort:         Ushort;
     using:          Using;
     var:            Var;
     virtual:        Virtual;
@@ -1681,6 +1684,18 @@ export type Yes = {
     YES: number;
 };
 
+export type Unsafe = {
+    unsafe: number;
+};
+
+export type Unsigned = {
+    unsigned: number;
+};
+
+export type Ushort = {
+    ushort: number;
+};
+
 export type Using = {
     using: number;
 };
@@ -2466,6 +2481,7 @@ const typeMap: any = {
         { json: "JsonParser", js: "JsonParser", typ: r("JSONParser") },
         { json: "JsonReader", js: "JsonReader", typ: r("JSONReader") },
         { json: "JsonTokenType", js: "JsonTokenType", typ: r("JSONTokenType") },
+        { json: "LocalDate", js: "LocalDate", typ: r("LocalDate") },
         { json: "Locale", js: "Locale", typ: r("Locale") },
         { json: "MapEntry", js: "MapEntry", typ: r("MapEntry") },
         { json: "NO", js: "NO", typ: r("No") },
@@ -2515,7 +2531,6 @@ const typeMap: any = {
         { 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) },
@@ -2562,6 +2577,9 @@ const typeMap: any = {
     "JSONTokenType": o([
         { json: "JsonTokenType", js: "JsonTokenType", typ: i(0) },
     ], false),
+    "LocalDate": o([
+        { json: "LocalDate", js: "LocalDate", typ: i(0) },
+    ], false),
     "Locale": o([
         { json: "Locale", js: "Locale", typ: i(0) },
     ], false),
@@ -2706,9 +2724,6 @@ const typeMap: any = {
     "Nil": o([
         { json: "nil", js: "nil", typ: i(0) },
     ], false),
-    "Noexcept": o([
-        { json: "noexcept", js: "noexcept", typ: i(0) },
-    ], false),
     "Obj4": o([
         { json: "NSError", js: "NSError", typ: r("NSError") },
         { json: "NSObject", js: "NSObject", typ: r("NSObject") },
@@ -2716,11 +2731,13 @@ const typeMap: any = {
         { json: "NULL", js: "NULL", typ: r("Null") },
         { json: "None", js: "None", typ: r("None") },
         { json: "ObjectMapper", js: "ObjectMapper", typ: r("ObjectMapper") },
+        { json: "OffsetDateTime", js: "OffsetDateTime", typ: r("OffsetDateTime") },
+        { json: "OffsetTime", js: "OffsetTime", typ: r("OffsetTime") },
         { 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: "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") },
@@ -2773,8 +2790,6 @@ const typeMap: any = {
         { 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),
     "NSError": o([
         { json: "NSError", js: "NSError", typ: i(0) },
@@ -2794,18 +2809,24 @@ const typeMap: any = {
     "ObjectMapper": o([
         { json: "ObjectMapper", js: "ObjectMapper", typ: i(0) },
     ], false),
+    "OffsetDateTime": o([
+        { json: "OffsetDateTime", js: "OffsetDateTime", typ: i(0) },
+    ], false),
+    "OffsetTime": o([
+        { json: "OffsetTime", js: "OffsetTime", 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) },
-    ], 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),
@@ -2962,15 +2983,10 @@ const typeMap: any = {
     "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: "KSerializer", js: "KSerializer", typ: r("KSerializer") },
         { json: "PrimitiveKind", js: "PrimitiveKind", typ: r("PrimitiveKind") },
+        { json: "SEL", js: "SEL", typ: r("Sel") },
         { json: "Self", js: "Self", typ: r("Self") },
         { json: "Sendable", js: "Sendable", typ: r("Sendable") },
         { json: "SerialDescriptor", js: "SerialDescriptor", typ: r("SerialDescriptor") },
@@ -2988,6 +3004,8 @@ const typeMap: any = {
         { json: "Type", js: "Type", typ: r("Type") },
         { json: "UseSerializers", js: "UseSerializers", typ: r("UseSerializers") },
         { json: "dummy", js: "dummy", typ: i(0) },
+        { 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") },
@@ -3031,9 +3049,6 @@ const typeMap: any = {
         { 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") },
     ], false),
     "KSerializer": o([
         { json: "KSerializer", js: "KSerializer", typ: i(0) },
@@ -3041,6 +3056,9 @@ const typeMap: any = {
     "PrimitiveKind": o([
         { json: "PrimitiveKind", js: "PrimitiveKind", typ: i(0) },
     ], false),
+    "Sel": o([
+        { json: "SEL", js: "SEL", typ: i(0) },
+    ], false),
     "Self": o([
         { json: "Self", js: "Self", typ: i(0) },
     ], false),
@@ -3089,6 +3107,12 @@ const typeMap: any = {
     "UseSerializers": o([
         { json: "UseSerializers", js: "UseSerializers", 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) },
     ], false),
@@ -3218,21 +3242,15 @@ const typeMap: any = {
     "Unowned": o([
         { json: "unowned", js: "unowned", typ: i(0) },
     ], false),
-    "Unsafe": o([
-        { json: "unsafe", js: "unsafe", typ: i(0) },
-    ], false),
-    "Unsigned": o([
-        { json: "unsigned", js: "unsigned", typ: i(0) },
-    ], false),
-    "Ushort": o([
-        { json: "ushort", js: "ushort", 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: "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") },
@@ -3260,6 +3278,15 @@ const typeMap: any = {
     "Yes": o([
         { json: "YES", js: "YES", typ: i(0) },
     ], false),
+    "Unsafe": o([
+        { json: "unsafe", js: "unsafe", typ: i(0) },
+    ], false),
+    "Unsigned": o([
+        { json: "unsigned", js: "unsigned", typ: i(0) },
+    ], false),
+    "Ushort": o([
+        { json: "ushort", js: "ushort", typ: i(0) },
+    ], false),
     "Using": o([
         { json: "using", js: "using", 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 22e78ad..333deb1 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
@@ -728,6 +728,7 @@ type Obj3 struct {
 	Left                       Left                       `json:"left"`
 	Let                        Let                        `json:"let"`
 	List                       List                       `json:"list"`
+	LocalDate                  LocalDate                  `json:"LocalDate"`
 	Locale                     Locale                     `json:"Locale"`
 	Lock                       Lock                       `json:"lock"`
 	Long                       Long                       `json:"long"`
@@ -743,7 +744,6 @@ type Obj3 struct {
 	Newtonsoft                 Newtonsoft                 `json:"newtonsoft"`
 	Nil                        Nil                        `json:"nil"`
 	No                         No                         `json:"NO"`
-	Noexcept                   Noexcept                   `json:"noexcept"`
 }
 
 type Guard struct {
@@ -938,6 +938,10 @@ type List struct {
 	List int64 `json:"list"`
 }
 
+type LocalDate struct {
+	LocalDate int64 `json:"LocalDate"`
+}
+
 type Locale struct {
 	Locale int64 `json:"Locale"`
 }
@@ -998,16 +1002,13 @@ 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"`
 	NoSuchMethod    NoSuchMethod    `json:"noSuchMethod"`
+	Noexcept        Noexcept        `json:"noexcept"`
 	Nonatomic       Nonatomic       `json:"nonatomic"`
 	None            None            `json:"None"`
 	Nonlocal        Nonlocal        `json:"nonlocal"`
@@ -1023,6 +1024,8 @@ type Obj4 struct {
 	Object          Object          `json:"object"`
 	ObjectMapper    ObjectMapper    `json:"ObjectMapper"`
 	Of              Of              `json:"of"`
+	OffsetDateTime  OffsetDateTime  `json:"OffsetDateTime"`
+	OffsetTime      OffsetTime      `json:"OffsetTime"`
 	Oneway          Oneway          `json:"oneway"`
 	Open            Open            `json:"open"`
 	Operator        Operator        `json:"operator"`
@@ -1065,9 +1068,6 @@ type Obj4 struct {
 	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 {
@@ -1086,6 +1086,10 @@ type NoSuchMethod struct {
 	NoSuchMethod int64 `json:"noSuchMethod"`
 }
 
+type Noexcept struct {
+	Noexcept int64 `json:"noexcept"`
+}
+
 type Nonatomic struct {
 	Nonatomic int64 `json:"nonatomic"`
 }
@@ -1146,6 +1150,14 @@ type Of struct {
 	Of int64 `json:"of"`
 }
 
+type OffsetDateTime struct {
+	OffsetDateTime int64 `json:"OffsetDateTime"`
+}
+
+type OffsetTime struct {
+	OffsetTime int64 `json:"OffsetTime"`
+}
+
 type Oneway struct {
 	Oneway int64 `json:"oneway"`
 }
@@ -1314,18 +1326,6 @@ type Sbyte struct {
 	Sbyte int64 `json:"sbyte"`
 }
 
-type Sealed struct {
-	Sealed int64 `json:"sealed"`
-}
-
-type Sel struct {
-	Sel int64 `json:"SEL"`
-}
-
-type Select struct {
-	Select int64 `json:"select"`
-}
-
 type Obj5 struct {
 	Dummy              int64              `json:"dummy"`
 	KSerializer        KSerializer        `json:"KSerializer"`
@@ -1333,6 +1333,9 @@ type Obj5 struct {
 	Obj5True           TrueClass          `json:"true"`
 	Obj5Type           TypeClass          `json:"type"`
 	PrimitiveKind      PrimitiveKind      `json:"PrimitiveKind"`
+	Sealed             Sealed             `json:"sealed"`
+	Sel                Sel                `json:"SEL"`
+	Select             Select             `json:"select"`
 	Self               Self               `json:"Self"`
 	Sendable           Sendable           `json:"Sendable"`
 	SerialDescriptor   SerialDescriptor   `json:"SerialDescriptor"`
@@ -1388,10 +1391,7 @@ type Obj5 struct {
 	Undefined          Undefined          `json:"undefined"`
 	Union              Union              `json:"union"`
 	Unowned            Unowned            `json:"unowned"`
-	Unsafe             Unsafe             `json:"unsafe"`
-	Unsigned           Unsigned           `json:"unsigned"`
 	UseSerializers     UseSerializers     `json:"UseSerializers"`
-	Ushort             Ushort             `json:"ushort"`
 }
 
 type KSerializer struct {
@@ -1414,6 +1414,18 @@ type PrimitiveKind struct {
 	PrimitiveKind int64 `json:"PrimitiveKind"`
 }
 
+type Sealed struct {
+	Sealed int64 `json:"sealed"`
+}
+
+type Sel struct {
+	Sel int64 `json:"SEL"`
+}
+
+type Select struct {
+	Select int64 `json:"select"`
+}
+
 type Self struct {
 	Self int64 `json:"Self"`
 }
@@ -1634,25 +1646,16 @@ type Unowned struct {
 	Unowned int64 `json:"unowned"`
 }
 
-type Unsafe struct {
-	Unsafe int64 `json:"unsafe"`
-}
-
-type Unsigned struct {
-	Unsigned int64 `json:"unsigned"`
-}
-
 type UseSerializers struct {
 	UseSerializers int64 `json:"UseSerializers"`
 }
 
-type Ushort struct {
-	Ushort int64 `json:"ushort"`
-}
-
 type Obj6 struct {
 	Dummy          int64          `json:"dummy"`
 	UUID           UUID           `json:"UUID"`
+	Unsafe         Unsafe         `json:"unsafe"`
+	Unsigned       Unsigned       `json:"unsigned"`
+	Ushort         Ushort         `json:"ushort"`
 	Using          Using          `json:"using"`
 	Utf8JSONReader Utf8JSONReader `json:"Utf8JsonReader"`
 	Utf8JSONWriter Utf8JSONWriter `json:"Utf8JsonWriter"`
@@ -1676,6 +1679,18 @@ type UUID struct {
 	UUID int64 `json:"UUID"`
 }
 
+type Unsafe struct {
+	Unsafe int64 `json:"unsafe"`
+}
+
+type Unsigned struct {
+	Unsigned int64 `json:"unsigned"`
+}
+
+type Ushort struct {
+	Ushort int64 `json:"ushort"`
+}
+
 type Using struct {
 	Using int64 `json:"using"`
 }
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 9ec107f..bd8c7ea 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
@@ -176,6 +176,7 @@ module QuickType
     , Lazy (..)
     , LeftClass (..)
     , List (..)
+    , LocalDate (..)
     , Locale (..)
     , Lock (..)
     , Long (..)
@@ -190,7 +191,6 @@ module QuickType
     , Newtonsoft (..)
     , Nil (..)
     , No (..)
-    , Noexcept (..)
     , ID (..)
     , If (..)
     , Import (..)
@@ -200,6 +200,7 @@ module QuickType
     , Module (..)
     , Obj4 (..)
     , NoSuchMethod (..)
+    , Noexcept (..)
     , Nonatomic (..)
     , None (..)
     , Nonlocal (..)
@@ -218,6 +219,8 @@ module QuickType
     , ProtocolClass (..)
     , ObjectClass (..)
     , ObjectMapper (..)
+    , OffsetDateTime (..)
+    , OffsetTime (..)
     , Oneway (..)
     , Open (..)
     , Operator (..)
@@ -260,9 +263,6 @@ module QuickType
     , RuntimeType (..)
     , S (..)
     , Sbyte (..)
-    , Sealed (..)
-    , Sel (..)
-    , Select (..)
     , Obj5 (..)
     , KSerializer (..)
     , SelfClass (..)
@@ -271,6 +271,9 @@ module QuickType
     , Type (..)
     , PrimitiveKind (..)
     , TypeClass (..)
+    , Sealed (..)
+    , Sel (..)
+    , Select (..)
     , Self (..)
     , Sendable (..)
     , SerialDescriptor (..)
@@ -324,12 +327,12 @@ module QuickType
     , Undefined (..)
     , Union (..)
     , Unowned (..)
-    , Unsafe (..)
-    , Unsigned (..)
     , UseSerializers (..)
-    , Ushort (..)
     , Obj6 (..)
     , Where (..)
+    , Unsafe (..)
+    , Unsigned (..)
+    , Ushort (..)
     , Using (..)
     , Utf8JSONReader (..)
     , Utf8JSONWriter (..)
@@ -1064,6 +1067,7 @@ data Obj3 = Obj3
     , lazyObj3 :: Lazy
     , leftObj3 :: LeftClass
     , listObj3 :: List
+    , localDateObj3 :: LocalDate
     , localeObj3 :: Locale
     , lockObj3 :: Lock
     , longObj3 :: Long
@@ -1078,7 +1082,6 @@ data Obj3 = Obj3
     , newtonsoftObj3 :: Newtonsoft
     , nilObj3 :: Nil
     , noObj3 :: No
-    , noexceptObj3 :: Noexcept
     , obj3IDObj3 :: ID
     , obj3IfObj3 :: If
     , obj3ImportObj3 :: Import
@@ -1256,6 +1259,10 @@ data List = List
     { listList :: Int
     } deriving (Show)
 
+data LocalDate = LocalDate
+    { localDateLocalDate :: Int
+    } deriving (Show)
+
 data Locale = Locale
     { localeLocale :: Int
     } deriving (Show)
@@ -1312,10 +1319,6 @@ data No = No
     { noNo :: Int
     } deriving (Show)
 
-data Noexcept = Noexcept
-    { noexceptNoexcept :: Int
-    } deriving (Show)
-
 data ID = ID
     { idIDID :: Int
     } deriving (Show)
@@ -1347,6 +1350,7 @@ data Module = Module
 data Obj4 = Obj4
     { dummyObj4 :: Int
     , noSuchMethodObj4 :: NoSuchMethod
+    , noexceptObj4 :: Noexcept
     , nonatomicObj4 :: Nonatomic
     , noneObj4 :: None
     , nonlocalObj4 :: Nonlocal
@@ -1365,6 +1369,8 @@ data Obj4 = Obj4
     , obj4ProtocolObj4 :: ProtocolClass
     , objectObj4 :: ObjectClass
     , objectMapperObj4 :: ObjectMapper
+    , offsetDateTimeObj4 :: OffsetDateTime
+    , offsetTimeObj4 :: OffsetTime
     , onewayObj4 :: Oneway
     , openObj4 :: Open
     , operatorObj4 :: Operator
@@ -1407,15 +1413,16 @@ data Obj4 = Obj4
     , runtimeTypeObj4 :: RuntimeType
     , sObj4 :: S
     , sbyteObj4 :: Sbyte
-    , sealedObj4 :: Sealed
-    , selObj4 :: Sel
-    , selectObj4 :: Select
     } deriving (Show)
 
 data NoSuchMethod = NoSuchMethod
     { noSuchMethodNoSuchMethod :: Int
     } deriving (Show)
 
+data Noexcept = Noexcept
+    { noexceptNoexcept :: Int
+    } deriving (Show)
+
 data Nonatomic = Nonatomic
     { nonatomicNonatomic :: Int
     } deriving (Show)
@@ -1488,6 +1495,14 @@ data ObjectMapper = ObjectMapper
     { objectMapperObjectMapper :: Int
     } deriving (Show)
 
+data OffsetDateTime = OffsetDateTime
+    { offsetDateTimeOffsetDateTime :: Int
+    } deriving (Show)
+
+data OffsetTime = OffsetTime
+    { offsetTimeOffsetTime :: Int
+    } deriving (Show)
+
 data Oneway = Oneway
     { onewayOneway :: Int
     } deriving (Show)
@@ -1656,18 +1671,6 @@ 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
     , kSerializerObj5 :: KSerializer
@@ -1677,6 +1680,9 @@ data Obj5 = Obj5
     , obj5TypeObj5 :: Type
     , primitiveKindObj5 :: PrimitiveKind
     , purpleTypeObj5 :: TypeClass
+    , sealedObj5 :: Sealed
+    , selObj5 :: Sel
+    , selectObj5 :: Select
     , selfObj5 :: Self
     , sendableObj5 :: Sendable
     , serialDescriptorObj5 :: SerialDescriptor
@@ -1730,10 +1736,7 @@ data Obj5 = Obj5
     , undefinedObj5 :: Undefined
     , unionObj5 :: Union
     , unownedObj5 :: Unowned
-    , unsafeObj5 :: Unsafe
-    , unsignedObj5 :: Unsigned
     , useSerializersObj5 :: UseSerializers
-    , ushortObj5 :: Ushort
     } deriving (Show)
 
 data KSerializer = KSerializer
@@ -1764,6 +1767,18 @@ data TypeClass = TypeClass
     { typeTypeTypeClass :: 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)
@@ -1976,25 +1991,16 @@ data Unowned = Unowned
     { unownedUnowned :: Int
     } deriving (Show)
 
-data Unsafe = Unsafe
-    { unsafeUnsafe :: Int
-    } deriving (Show)
-
-data Unsigned = Unsigned
-    { unsignedUnsigned :: Int
-    } deriving (Show)
-
 data UseSerializers = UseSerializers
     { useSerializersUseSerializers :: Int
     } deriving (Show)
 
-data Ushort = Ushort
-    { ushortUshort :: Int
-    } deriving (Show)
-
 data Obj6 = Obj6
     { dummyObj6 :: Int
     , obj6WhereObj6 :: Where
+    , unsafeObj6 :: Unsafe
+    , unsignedObj6 :: Unsigned
+    , ushortObj6 :: Ushort
     , usingObj6 :: Using
     , utf8JSONReaderObj6 :: Utf8JSONReader
     , utf8JSONWriterObj6 :: Utf8JSONWriter
@@ -2018,6 +2024,18 @@ data Where = Where
     { whereWhereWhere :: Int
     } deriving (Show)
 
+data Unsafe = Unsafe
+    { unsafeUnsafe :: Int
+    } deriving (Show)
+
+data Unsigned = Unsigned
+    { unsignedUnsigned :: Int
+    } deriving (Show)
+
+data Ushort = Ushort
+    { ushortUshort :: Int
+    } deriving (Show)
+
 data Using = Using
     { usingUsing :: Int
     } deriving (Show)
@@ -3678,7 +3696,7 @@ 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 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 localDateObj3 localeObj3 lockObj3 longObj3 mapObj3 mapEntryObj3 metadataPropertyHandlingObj3 mutableObj3 mutatingObj3 namespaceObj3 nativeObj3 newObj3 newtonsoftObj3 nilObj3 noObj3 obj3IDObj3 obj3IfObj3 obj3ImportObj3 obj3InObj3 obj3InfixObj3 obj3LetObj3 obj3ModuleObj3) =
         object $ foldMap (maybe [] pure)
         [ Just $ "dummy" .= dummyObj3
         , Just $ "guard" .= guardObj3
@@ -3723,6 +3741,7 @@ instance ToJSON Obj3 where
         , Just $ "lazy" .= lazyObj3
         , Just $ "left" .= leftObj3
         , Just $ "list" .= listObj3
+        , Just $ "LocalDate" .= localDateObj3
         , Just $ "Locale" .= localeObj3
         , Just $ "lock" .= lockObj3
         , Just $ "long" .= longObj3
@@ -3737,7 +3756,6 @@ instance ToJSON Obj3 where
         , Just $ "newtonsoft" .= newtonsoftObj3
         , Just $ "nil" .= nilObj3
         , Just $ "NO" .= noObj3
-        , Just $ "noexcept" .= noexceptObj3
         , Just $ "id" .= obj3IDObj3
         , Just $ "if" .= obj3IfObj3
         , Just $ "import" .= obj3ImportObj3
@@ -3792,6 +3810,7 @@ instance FromJSON Obj3 where
         <*> v .: "lazy"
         <*> v .: "left"
         <*> v .: "list"
+        <*> v .: "LocalDate"
         <*> v .: "Locale"
         <*> v .: "lock"
         <*> v .: "long"
@@ -3806,7 +3825,6 @@ instance FromJSON Obj3 where
         <*> v .: "newtonsoft"
         <*> v .: "nil"
         <*> v .: "NO"
-        <*> v .: "noexcept"
         <*> v .: "id"
         <*> v .: "if"
         <*> v .: "import"
@@ -4235,6 +4253,16 @@ instance FromJSON List where
     parseJSON (Object v) = List
         <$> v .: "list"
 
+instance ToJSON LocalDate where
+    toJSON (LocalDate localDateLocalDate) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "LocalDate" .= localDateLocalDate
+        ]
+
+instance FromJSON LocalDate where
+    parseJSON (Object v) = LocalDate
+        <$> v .: "LocalDate"
+
 instance ToJSON Locale where
     toJSON (Locale localeLocale) =
         object $ foldMap (maybe [] pure)
@@ -4375,16 +4403,6 @@ 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)
@@ -4456,10 +4474,11 @@ 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 noSuchMethodObj4 noexceptObj4 nonatomicObj4 noneObj4 nonlocalObj4 nonmutatingObj4 notObj4 notEqObj4 nsErrorObj4 nsObjectObj4 nsStringObj4 nullObj4 nullptrObj4 numberObj4 obj4NoneObj4 obj4NullObj4 obj4OfObj4 obj4ProtocolObj4 objectObj4 objectMapperObj4 offsetDateTimeObj4 offsetTimeObj4 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) =
         object $ foldMap (maybe [] pure)
         [ Just $ "dummy" .= dummyObj4
         , Just $ "noSuchMethod" .= noSuchMethodObj4
+        , Just $ "noexcept" .= noexceptObj4
         , Just $ "nonatomic" .= nonatomicObj4
         , Just $ "None" .= noneObj4
         , Just $ "nonlocal" .= nonlocalObj4
@@ -4478,6 +4497,8 @@ instance ToJSON Obj4 where
         , Just $ "protocol" .= obj4ProtocolObj4
         , Just $ "object" .= objectObj4
         , Just $ "ObjectMapper" .= objectMapperObj4
+        , Just $ "OffsetDateTime" .= offsetDateTimeObj4
+        , Just $ "OffsetTime" .= offsetTimeObj4
         , Just $ "oneway" .= onewayObj4
         , Just $ "open" .= openObj4
         , Just $ "operator" .= operatorObj4
@@ -4520,15 +4541,13 @@ instance ToJSON Obj4 where
         , 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 .: "noSuchMethod"
+        <*> v .: "noexcept"
         <*> v .: "nonatomic"
         <*> v .: "None"
         <*> v .: "nonlocal"
@@ -4547,6 +4566,8 @@ instance FromJSON Obj4 where
         <*> v .: "protocol"
         <*> v .: "object"
         <*> v .: "ObjectMapper"
+        <*> v .: "OffsetDateTime"
+        <*> v .: "OffsetTime"
         <*> v .: "oneway"
         <*> v .: "open"
         <*> v .: "operator"
@@ -4589,9 +4610,6 @@ instance FromJSON Obj4 where
         <*> v .: "runtimeType"
         <*> v .: "s"
         <*> v .: "sbyte"
-        <*> v .: "sealed"
-        <*> v .: "SEL"
-        <*> v .: "select"
 
 instance ToJSON NoSuchMethod where
     toJSON (NoSuchMethod noSuchMethodNoSuchMethod) =
@@ -4603,6 +4621,16 @@ 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) =
         object $ foldMap (maybe [] pure)
@@ -4783,6 +4811,26 @@ instance FromJSON ObjectMapper where
     parseJSON (Object v) = ObjectMapper
         <$> v .: "ObjectMapper"
 
+instance ToJSON OffsetDateTime where
+    toJSON (OffsetDateTime offsetDateTimeOffsetDateTime) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "OffsetDateTime" .= offsetDateTimeOffsetDateTime
+        ]
+
+instance FromJSON OffsetDateTime where
+    parseJSON (Object v) = OffsetDateTime
+        <$> v .: "OffsetDateTime"
+
+instance ToJSON OffsetTime where
+    toJSON (OffsetTime offsetTimeOffsetTime) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "OffsetTime" .= offsetTimeOffsetTime
+        ]
+
+instance FromJSON OffsetTime where
+    parseJSON (Object v) = OffsetTime
+        <$> v .: "OffsetTime"
+
 instance ToJSON Oneway where
     toJSON (Oneway onewayOneway) =
         object $ foldMap (maybe [] pure)
@@ -5203,38 +5251,8 @@ 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 kSerializerObj5 obj5SelfObj5 obj5ThenObj5 obj5TrueObj5 obj5TypeObj5 primitiveKindObj5 purpleTypeObj5 selfObj5 sendableObj5 serialDescriptorObj5 serialNameObj5 serializableObj5 serializeObj5 serializerProviderObj5 setObj5 shortObj5 signedObj5 simpleModuleObj5 sizeofObj5 stackallocObj5 standardsObj5 staticObj5 staticAssertObj5 staticCastObj5 stdDeserializerObj5 stdSerializerObj5 strictfpObj5 stringObj5 structObj5 subscriptObj5 superObj5 switchObj5 symbolObj5 synchronizedObj5 systemObj5 templateObj5 thisObj5 threadLocalObj5 throwObj5 throwsObj5 timeOnlyObj5 timeOnlyConverterObj5 timeZoneObj5 toJSONObj5 toStringObj5 topLevelObj5 transientObj5 trueObj5 tryObj5 typealiasObj5 typedefObj5 typeidObj5 typenameObj5 typeofObj5 uintObj5 ulongObj5 uncheckedObj5 undefinedObj5 unionObj5 unownedObj5 unsafeObj5 unsignedObj5 useSerializersObj5 ushortObj5) =
+    toJSON (Obj5 dummyObj5 kSerializerObj5 obj5SelfObj5 obj5ThenObj5 obj5TrueObj5 obj5TypeObj5 primitiveKindObj5 purpleTypeObj5 sealedObj5 selObj5 selectObj5 selfObj5 sendableObj5 serialDescriptorObj5 serialNameObj5 serializableObj5 serializeObj5 serializerProviderObj5 setObj5 shortObj5 signedObj5 simpleModuleObj5 sizeofObj5 stackallocObj5 standardsObj5 staticObj5 staticAssertObj5 staticCastObj5 stdDeserializerObj5 stdSerializerObj5 strictfpObj5 stringObj5 structObj5 subscriptObj5 superObj5 switchObj5 symbolObj5 synchronizedObj5 systemObj5 templateObj5 thisObj5 threadLocalObj5 throwObj5 throwsObj5 timeOnlyObj5 timeOnlyConverterObj5 timeZoneObj5 toJSONObj5 toStringObj5 topLevelObj5 transientObj5 trueObj5 tryObj5 typealiasObj5 typedefObj5 typeidObj5 typenameObj5 typeofObj5 uintObj5 ulongObj5 uncheckedObj5 undefinedObj5 unionObj5 unownedObj5 useSerializersObj5) =
         object $ foldMap (maybe [] pure)
         [ Just $ "dummy" .= dummyObj5
         , Just $ "KSerializer" .= kSerializerObj5
@@ -5244,6 +5262,9 @@ instance ToJSON Obj5 where
         , Just $ "Type" .= obj5TypeObj5
         , Just $ "PrimitiveKind" .= primitiveKindObj5
         , Just $ "type" .= purpleTypeObj5
+        , Just $ "sealed" .= sealedObj5
+        , Just $ "SEL" .= selObj5
+        , Just $ "select" .= selectObj5
         , Just $ "Self" .= selfObj5
         , Just $ "Sendable" .= sendableObj5
         , Just $ "SerialDescriptor" .= serialDescriptorObj5
@@ -5297,10 +5318,7 @@ instance ToJSON Obj5 where
         , Just $ "undefined" .= undefinedObj5
         , Just $ "union" .= unionObj5
         , Just $ "unowned" .= unownedObj5
-        , Just $ "unsafe" .= unsafeObj5
-        , Just $ "unsigned" .= unsignedObj5
         , Just $ "UseSerializers" .= useSerializersObj5
-        , Just $ "ushort" .= ushortObj5
         ]
 
 instance FromJSON Obj5 where
@@ -5313,6 +5331,9 @@ instance FromJSON Obj5 where
         <*> v .: "Type"
         <*> v .: "PrimitiveKind"
         <*> v .: "type"
+        <*> v .: "sealed"
+        <*> v .: "SEL"
+        <*> v .: "select"
         <*> v .: "Self"
         <*> v .: "Sendable"
         <*> v .: "SerialDescriptor"
@@ -5366,10 +5387,7 @@ instance FromJSON Obj5 where
         <*> v .: "undefined"
         <*> v .: "union"
         <*> v .: "unowned"
-        <*> v .: "unsafe"
-        <*> v .: "unsigned"
         <*> v .: "UseSerializers"
-        <*> v .: "ushort"
 
 instance ToJSON KSerializer where
     toJSON (KSerializer kSerializerKSerializer) =
@@ -5441,6 +5459,36 @@ instance FromJSON TypeClass where
     parseJSON (Object v) = TypeClass
         <$> v .: "type"
 
+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)
@@ -5971,26 +6019,6 @@ instance FromJSON Unowned where
     parseJSON (Object v) = Unowned
         <$> v .: "unowned"
 
-instance ToJSON Unsafe where
-    toJSON (Unsafe unsafeUnsafe) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "unsafe" .= unsafeUnsafe
-        ]
-
-instance FromJSON Unsafe where
-    parseJSON (Object v) = Unsafe
-        <$> v .: "unsafe"
-
-instance ToJSON Unsigned where
-    toJSON (Unsigned unsignedUnsigned) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "unsigned" .= unsignedUnsigned
-        ]
-
-instance FromJSON Unsigned where
-    parseJSON (Object v) = Unsigned
-        <$> v .: "unsigned"
-
 instance ToJSON UseSerializers where
     toJSON (UseSerializers useSerializersUseSerializers) =
         object $ foldMap (maybe [] pure)
@@ -6001,21 +6029,14 @@ instance FromJSON UseSerializers where
     parseJSON (Object v) = UseSerializers
         <$> v .: "UseSerializers"
 
-instance ToJSON Ushort where
-    toJSON (Ushort ushortUshort) =
-        object $ foldMap (maybe [] pure)
-        [ Just $ "ushort" .= ushortUshort
-        ]
-
-instance FromJSON Ushort where
-    parseJSON (Object v) = Ushort
-        <$> v .: "ushort"
-
 instance ToJSON Obj6 where
-    toJSON (Obj6 dummyObj6 obj6WhereObj6 usingObj6 utf8JSONReaderObj6 utf8JSONWriterObj6 uuidObj6 varObj6 virtualObj6 voidObj6 volatileObj6 wcharTObj6 weakObj6 whileObj6 willSetObj6 withObj6 xorObj6 xorEqObj6 yesObj6 yieldObj6) =
+    toJSON (Obj6 dummyObj6 obj6WhereObj6 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 $ "unsafe" .= unsafeObj6
+        , Just $ "unsigned" .= unsignedObj6
+        , Just $ "ushort" .= ushortObj6
         , Just $ "using" .= usingObj6
         , Just $ "Utf8JsonReader" .= utf8JSONReaderObj6
         , Just $ "Utf8JsonWriter" .= utf8JSONWriterObj6
@@ -6039,6 +6060,9 @@ instance FromJSON Obj6 where
     parseJSON (Object v) = Obj6
         <$> v .: "dummy"
         <*> v .: "where"
+        <*> v .: "unsafe"
+        <*> v .: "unsigned"
+        <*> v .: "ushort"
         <*> v .: "using"
         <*> v .: "Utf8JsonReader"
         <*> v .: "Utf8JsonWriter"
@@ -6067,6 +6091,36 @@ instance FromJSON Where where
     parseJSON (Object v) = Where
         <$> v .: "where"
 
+instance ToJSON Unsafe where
+    toJSON (Unsafe unsafeUnsafe) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "unsafe" .= unsafeUnsafe
+        ]
+
+instance FromJSON Unsafe where
+    parseJSON (Object v) = Unsafe
+        <$> v .: "unsafe"
+
+instance ToJSON Unsigned where
+    toJSON (Unsigned unsignedUnsigned) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "unsigned" .= unsignedUnsigned
+        ]
+
+instance FromJSON Unsigned where
+    parseJSON (Object v) = Unsigned
+        <$> v .: "unsigned"
+
+instance ToJSON Ushort where
+    toJSON (Ushort ushortUshort) =
+        object $ foldMap (maybe [] pure)
+        [ Just $ "ushort" .= ushortUshort
+        ]
+
+instance FromJSON Ushort where
+    parseJSON (Object v) = Ushort
+        <$> v .: "ushort"
+
 instance ToJSON Using where
     toJSON (Using usingUsing) =
         object $ foldMap (maybe [] pure)
diff --git a/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/LocalDateClass.java b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/LocalDateClass.java
new file mode 100644
index 0000000..b3247eb
--- /dev/null
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/LocalDateClass.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class LocalDateClass {
+    private long localDate;
+
+    @JsonProperty("LocalDate")
+    public long getLocalDate() { return localDate; }
+    @JsonProperty("LocalDate")
+    public void setLocalDate(long value) { this.localDate = value; }
+}
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..0c09cf7 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
@@ -46,6 +46,7 @@ public class Obj3 {
     private Left left;
     private Let let;
     private ListClass list;
+    private LocalDateClass localDate;
     private Locale locale;
     private Lock lock;
     private MapClass map;
@@ -58,7 +59,6 @@ public class Obj3 {
     private Newtonsoft newtonsoft;
     private Nil nil;
     private No no;
-    private Noexcept noexcept;
     private If obj3If;
     private Implements obj3Implements;
     private Import obj3Import;
@@ -284,6 +284,11 @@ public class Obj3 {
     @JsonProperty("list")
     public void setList(ListClass value) { this.list = value; }
 
+    @JsonProperty("LocalDate")
+    public LocalDateClass getLocalDate() { return localDate; }
+    @JsonProperty("LocalDate")
+    public void setLocalDate(LocalDateClass value) { this.localDate = value; }
+
     @JsonProperty("Locale")
     public Locale getLocale() { return locale; }
     @JsonProperty("Locale")
@@ -344,11 +349,6 @@ public class Obj3 {
     @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("if")
     public If getObj3If() { return obj3If; }
     @JsonProperty("if")
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..158fe76 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
@@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.*;
 public class Obj4 {
     private long dummy;
     private NoSuchMethod noSuchMethod;
+    private Noexcept noexcept;
     private Nonatomic nonatomic;
     private NoneClass none;
     private Nonlocal nonlocal;
@@ -28,6 +29,8 @@ public class Obj4 {
     private ObjectClass object;
     private ObjectMapperClass objectMapper;
     private Of of;
+    private OffsetDateTimeClass offsetDateTime;
+    private OffsetTimeClass offsetTime;
     private Oneway oneway;
     private Open open;
     private Operator operator;
@@ -65,9 +68,6 @@ public class Obj4 {
     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; }
@@ -79,6 +79,11 @@ public class Obj4 {
     @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")
@@ -194,6 +199,16 @@ public class Obj4 {
     @JsonProperty("of")
     public void setOf(Of value) { this.of = value; }
 
+    @JsonProperty("OffsetDateTime")
+    public OffsetDateTimeClass getOffsetDateTime() { return offsetDateTime; }
+    @JsonProperty("OffsetDateTime")
+    public void setOffsetDateTime(OffsetDateTimeClass value) { this.offsetDateTime = value; }
+
+    @JsonProperty("OffsetTime")
+    public OffsetTimeClass getOffsetTime() { return offsetTime; }
+    @JsonProperty("OffsetTime")
+    public void setOffsetTime(OffsetTimeClass value) { this.offsetTime = value; }
+
     @JsonProperty("oneway")
     public Oneway getOneway() { return oneway; }
     @JsonProperty("oneway")
@@ -378,19 +393,4 @@ public class Obj4 {
     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 7bbcb6c..bd7ec26 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
@@ -21,6 +21,9 @@ public class Obj5 {
     private TypeClass obj5Type;
     private PrimitiveKind primitiveKind;
     private TrueClass purpleTrue;
+    private Sealed sealed;
+    private Sel sel;
+    private Select select;
     private Self self;
     private Sendable sendable;
     private SerialDescriptor serialDescriptor;
@@ -64,10 +67,7 @@ public class Obj5 {
     private Undefined undefined;
     private Union union;
     private Unowned unowned;
-    private Unsafe unsafe;
-    private Unsigned unsigned;
     private UseSerializers useSerializers;
-    private Ushort ushort;
 
     @JsonProperty("dummy")
     public long getDummy() { return dummy; }
@@ -159,6 +159,21 @@ public class Obj5 {
     @JsonProperty("true")
     public void setPurpleTrue(TrueClass value) { this.purpleTrue = 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")
@@ -374,23 +389,8 @@ public class Obj5 {
     @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("UseSerializers")
     public UseSerializers getUseSerializers() { return useSerializers; }
     @JsonProperty("UseSerializers")
     public void setUseSerializers(UseSerializers value) { this.useSerializers = value; }
-
-    @JsonProperty("ushort")
-    public Ushort getUshort() { return ushort; }
-    @JsonProperty("ushort")
-    public void setUshort(Ushort value) { this.ushort = value; }
 }
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 cf660b9..fbf7a21 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,9 @@ public class Obj6 {
     private Void obj6Void;
     private Volatile obj6Volatile;
     private While obj6While;
+    private Unsafe unsafe;
+    private Unsigned unsigned;
+    private Ushort ushort;
     private Using using;
     private Utf8JSONReader utf8JSONReader;
     private Utf8JSONWriter utf8JSONWriter;
@@ -43,6 +46,21 @@ public class Obj6 {
     @JsonProperty("while")
     public void setObj6While(While value) { this.obj6While = 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")
diff --git a/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/OffsetDateTimeClass.java b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/OffsetDateTimeClass.java
new file mode 100644
index 0000000..058ff49
--- /dev/null
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/OffsetDateTimeClass.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class OffsetDateTimeClass {
+    private long offsetDateTime;
+
+    @JsonProperty("OffsetDateTime")
+    public long getOffsetDateTime() { return offsetDateTime; }
+    @JsonProperty("OffsetDateTime")
+    public void setOffsetDateTime(long value) { this.offsetDateTime = value; }
+}
diff --git a/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/OffsetTimeClass.java b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/OffsetTimeClass.java
new file mode 100644
index 0000000..75b3c5f
--- /dev/null
+++ b/head/java/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/OffsetTimeClass.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class OffsetTimeClass {
+    private long offsetTime;
+
+    @JsonProperty("OffsetTime")
+    public long getOffsetTime() { return offsetTime; }
+    @JsonProperty("OffsetTime")
+    public void setOffsetTime(long value) { this.offsetTime = value; }
+}
diff --git a/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/LocalDate.java b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/LocalDate.java
new file mode 100644
index 0000000..86f36c6
--- /dev/null
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/LocalDate.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class LocalDate {
+    private long localDate;
+
+    @JsonProperty("LocalDate")
+    public long getLocalDate() { return localDate; }
+    @JsonProperty("LocalDate")
+    public void setLocalDate(long value) { this.localDate = value; }
+}
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..fee46cd 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
@@ -46,6 +46,7 @@ public class Obj3 {
     private Left left;
     private Let let;
     private ListClass list;
+    private LocalDate localDate;
     private Locale locale;
     private Lock lock;
     private MapClass map;
@@ -58,7 +59,6 @@ public class Obj3 {
     private Newtonsoft newtonsoft;
     private Nil nil;
     private No no;
-    private Noexcept noexcept;
     private If obj3If;
     private Implements obj3Implements;
     private Import obj3Import;
@@ -284,6 +284,11 @@ public class Obj3 {
     @JsonProperty("list")
     public void setList(ListClass value) { this.list = value; }
 
+    @JsonProperty("LocalDate")
+    public LocalDate getLocalDate() { return localDate; }
+    @JsonProperty("LocalDate")
+    public void setLocalDate(LocalDate value) { this.localDate = value; }
+
     @JsonProperty("Locale")
     public Locale getLocale() { return locale; }
     @JsonProperty("Locale")
@@ -344,11 +349,6 @@ public class Obj3 {
     @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("if")
     public If getObj3If() { return obj3If; }
     @JsonProperty("if")
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..8b83be4 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
@@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.*;
 public class Obj4 {
     private long dummy;
     private NoSuchMethod noSuchMethod;
+    private Noexcept noexcept;
     private Nonatomic nonatomic;
     private NoneClass none;
     private Nonlocal nonlocal;
@@ -28,6 +29,8 @@ public class Obj4 {
     private ObjectClass object;
     private ObjectMapperClass objectMapper;
     private Of of;
+    private OffsetDateTime offsetDateTime;
+    private OffsetTime offsetTime;
     private Oneway oneway;
     private Open open;
     private Operator operator;
@@ -65,9 +68,6 @@ public class Obj4 {
     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; }
@@ -79,6 +79,11 @@ public class Obj4 {
     @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")
@@ -194,6 +199,16 @@ public class Obj4 {
     @JsonProperty("of")
     public void setOf(Of value) { this.of = value; }
 
+    @JsonProperty("OffsetDateTime")
+    public OffsetDateTime getOffsetDateTime() { return offsetDateTime; }
+    @JsonProperty("OffsetDateTime")
+    public void setOffsetDateTime(OffsetDateTime value) { this.offsetDateTime = value; }
+
+    @JsonProperty("OffsetTime")
+    public OffsetTime getOffsetTime() { return offsetTime; }
+    @JsonProperty("OffsetTime")
+    public void setOffsetTime(OffsetTime value) { this.offsetTime = value; }
+
     @JsonProperty("oneway")
     public Oneway getOneway() { return oneway; }
     @JsonProperty("oneway")
@@ -378,19 +393,4 @@ public class Obj4 {
     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 7bbcb6c..bd7ec26 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
@@ -21,6 +21,9 @@ public class Obj5 {
     private TypeClass obj5Type;
     private PrimitiveKind primitiveKind;
     private TrueClass purpleTrue;
+    private Sealed sealed;
+    private Sel sel;
+    private Select select;
     private Self self;
     private Sendable sendable;
     private SerialDescriptor serialDescriptor;
@@ -64,10 +67,7 @@ public class Obj5 {
     private Undefined undefined;
     private Union union;
     private Unowned unowned;
-    private Unsafe unsafe;
-    private Unsigned unsigned;
     private UseSerializers useSerializers;
-    private Ushort ushort;
 
     @JsonProperty("dummy")
     public long getDummy() { return dummy; }
@@ -159,6 +159,21 @@ public class Obj5 {
     @JsonProperty("true")
     public void setPurpleTrue(TrueClass value) { this.purpleTrue = 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")
@@ -374,23 +389,8 @@ public class Obj5 {
     @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("UseSerializers")
     public UseSerializers getUseSerializers() { return useSerializers; }
     @JsonProperty("UseSerializers")
     public void setUseSerializers(UseSerializers value) { this.useSerializers = value; }
-
-    @JsonProperty("ushort")
-    public Ushort getUshort() { return ushort; }
-    @JsonProperty("ushort")
-    public void setUshort(Ushort value) { this.ushort = value; }
 }
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 cf660b9..fbf7a21 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,9 @@ public class Obj6 {
     private Void obj6Void;
     private Volatile obj6Volatile;
     private While obj6While;
+    private Unsafe unsafe;
+    private Unsigned unsigned;
+    private Ushort ushort;
     private Using using;
     private Utf8JSONReader utf8JSONReader;
     private Utf8JSONWriter utf8JSONWriter;
@@ -43,6 +46,21 @@ public class Obj6 {
     @JsonProperty("while")
     public void setObj6While(While value) { this.obj6While = 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")
diff --git a/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/OffsetDateTime.java b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/OffsetDateTime.java
new file mode 100644
index 0000000..d995ffc
--- /dev/null
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/OffsetDateTime.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class OffsetDateTime {
+    private long offsetDateTime;
+
+    @JsonProperty("OffsetDateTime")
+    public long getOffsetDateTime() { return offsetDateTime; }
+    @JsonProperty("OffsetDateTime")
+    public void setOffsetDateTime(long value) { this.offsetDateTime = value; }
+}
diff --git a/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/OffsetTime.java b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/OffsetTime.java
new file mode 100644
index 0000000..cfec7ad
--- /dev/null
+++ b/head/java-datetime-legacy/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/OffsetTime.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class OffsetTime {
+    private long offsetTime;
+
+    @JsonProperty("OffsetTime")
+    public long getOffsetTime() { return offsetTime; }
+    @JsonProperty("OffsetTime")
+    public void setOffsetTime(long value) { this.offsetTime = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/LocalDateClass.java b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/LocalDateClass.java
new file mode 100644
index 0000000..b3247eb
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/LocalDateClass.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class LocalDateClass {
+    private long localDate;
+
+    @JsonProperty("LocalDate")
+    public long getLocalDate() { return localDate; }
+    @JsonProperty("LocalDate")
+    public void setLocalDate(long value) { this.localDate = value; }
+}
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..0c09cf7 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
@@ -46,6 +46,7 @@ public class Obj3 {
     private Left left;
     private Let let;
     private ListClass list;
+    private LocalDateClass localDate;
     private Locale locale;
     private Lock lock;
     private MapClass map;
@@ -58,7 +59,6 @@ public class Obj3 {
     private Newtonsoft newtonsoft;
     private Nil nil;
     private No no;
-    private Noexcept noexcept;
     private If obj3If;
     private Implements obj3Implements;
     private Import obj3Import;
@@ -284,6 +284,11 @@ public class Obj3 {
     @JsonProperty("list")
     public void setList(ListClass value) { this.list = value; }
 
+    @JsonProperty("LocalDate")
+    public LocalDateClass getLocalDate() { return localDate; }
+    @JsonProperty("LocalDate")
+    public void setLocalDate(LocalDateClass value) { this.localDate = value; }
+
     @JsonProperty("Locale")
     public Locale getLocale() { return locale; }
     @JsonProperty("Locale")
@@ -344,11 +349,6 @@ public class Obj3 {
     @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("if")
     public If getObj3If() { return obj3If; }
     @JsonProperty("if")
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..158fe76 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
@@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.*;
 public class Obj4 {
     private long dummy;
     private NoSuchMethod noSuchMethod;
+    private Noexcept noexcept;
     private Nonatomic nonatomic;
     private NoneClass none;
     private Nonlocal nonlocal;
@@ -28,6 +29,8 @@ public class Obj4 {
     private ObjectClass object;
     private ObjectMapperClass objectMapper;
     private Of of;
+    private OffsetDateTimeClass offsetDateTime;
+    private OffsetTimeClass offsetTime;
     private Oneway oneway;
     private Open open;
     private Operator operator;
@@ -65,9 +68,6 @@ public class Obj4 {
     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; }
@@ -79,6 +79,11 @@ public class Obj4 {
     @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")
@@ -194,6 +199,16 @@ public class Obj4 {
     @JsonProperty("of")
     public void setOf(Of value) { this.of = value; }
 
+    @JsonProperty("OffsetDateTime")
+    public OffsetDateTimeClass getOffsetDateTime() { return offsetDateTime; }
+    @JsonProperty("OffsetDateTime")
+    public void setOffsetDateTime(OffsetDateTimeClass value) { this.offsetDateTime = value; }
+
+    @JsonProperty("OffsetTime")
+    public OffsetTimeClass getOffsetTime() { return offsetTime; }
+    @JsonProperty("OffsetTime")
+    public void setOffsetTime(OffsetTimeClass value) { this.offsetTime = value; }
+
     @JsonProperty("oneway")
     public Oneway getOneway() { return oneway; }
     @JsonProperty("oneway")
@@ -378,19 +393,4 @@ public class Obj4 {
     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 7bbcb6c..bd7ec26 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
@@ -21,6 +21,9 @@ public class Obj5 {
     private TypeClass obj5Type;
     private PrimitiveKind primitiveKind;
     private TrueClass purpleTrue;
+    private Sealed sealed;
+    private Sel sel;
+    private Select select;
     private Self self;
     private Sendable sendable;
     private SerialDescriptor serialDescriptor;
@@ -64,10 +67,7 @@ public class Obj5 {
     private Undefined undefined;
     private Union union;
     private Unowned unowned;
-    private Unsafe unsafe;
-    private Unsigned unsigned;
     private UseSerializers useSerializers;
-    private Ushort ushort;
 
     @JsonProperty("dummy")
     public long getDummy() { return dummy; }
@@ -159,6 +159,21 @@ public class Obj5 {
     @JsonProperty("true")
     public void setPurpleTrue(TrueClass value) { this.purpleTrue = 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")
@@ -374,23 +389,8 @@ public class Obj5 {
     @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("UseSerializers")
     public UseSerializers getUseSerializers() { return useSerializers; }
     @JsonProperty("UseSerializers")
     public void setUseSerializers(UseSerializers value) { this.useSerializers = value; }
-
-    @JsonProperty("ushort")
-    public Ushort getUshort() { return ushort; }
-    @JsonProperty("ushort")
-    public void setUshort(Ushort value) { this.ushort = value; }
 }
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 cf660b9..fbf7a21 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,9 @@ public class Obj6 {
     private Void obj6Void;
     private Volatile obj6Volatile;
     private While obj6While;
+    private Unsafe unsafe;
+    private Unsigned unsigned;
+    private Ushort ushort;
     private Using using;
     private Utf8JSONReader utf8JSONReader;
     private Utf8JSONWriter utf8JSONWriter;
@@ -43,6 +46,21 @@ public class Obj6 {
     @JsonProperty("while")
     public void setObj6While(While value) { this.obj6While = 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")
diff --git a/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/OffsetDateTimeClass.java b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/OffsetDateTimeClass.java
new file mode 100644
index 0000000..058ff49
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/OffsetDateTimeClass.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class OffsetDateTimeClass {
+    private long offsetDateTime;
+
+    @JsonProperty("OffsetDateTime")
+    public long getOffsetDateTime() { return offsetDateTime; }
+    @JsonProperty("OffsetDateTime")
+    public void setOffsetDateTime(long value) { this.offsetDateTime = value; }
+}
diff --git a/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/OffsetTimeClass.java b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/OffsetTimeClass.java
new file mode 100644
index 0000000..75b3c5f
--- /dev/null
+++ b/head/java-lombok/test/inputs/json/priority/keywords.json/default/src/main/java/io/quicktype/OffsetTimeClass.java
@@ -0,0 +1,12 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+public class OffsetTimeClass {
+    private long offsetTime;
+
+    @JsonProperty("OffsetTime")
+    public long getOffsetTime() { return offsetTime; }
+    @JsonProperty("OffsetTime")
+    public void setOffsetTime(long value) { this.offsetTime = 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 8fc75d9..7ef9c38 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
@@ -736,6 +736,7 @@ const typeMap = {
         { json: "JsonParser", js: "JsonParser", typ: r("JSONParser") },
         { json: "JsonReader", js: "JsonReader", typ: r("JSONReader") },
         { json: "JsonTokenType", js: "JsonTokenType", typ: r("JSONTokenType") },
+        { json: "LocalDate", js: "LocalDate", typ: r("LocalDate") },
         { json: "Locale", js: "Locale", typ: r("Locale") },
         { json: "MapEntry", js: "MapEntry", typ: r("MapEntry") },
         { json: "NO", js: "NO", typ: r("No") },
@@ -785,7 +786,6 @@ const typeMap = {
         { 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) },
@@ -832,6 +832,9 @@ const typeMap = {
     "JSONTokenType": o([
         { json: "JsonTokenType", js: "JsonTokenType", typ: i(0) },
     ], false),
+    "LocalDate": o([
+        { json: "LocalDate", js: "LocalDate", typ: i(0) },
+    ], false),
     "Locale": o([
         { json: "Locale", js: "Locale", typ: i(0) },
     ], false),
@@ -976,9 +979,6 @@ const typeMap = {
     "Nil": o([
         { json: "nil", js: "nil", typ: i(0) },
     ], false),
-    "Noexcept": o([
-        { json: "noexcept", js: "noexcept", typ: i(0) },
-    ], false),
     "Obj4": o([
         { json: "NSError", js: "NSError", typ: r("NSError") },
         { json: "NSObject", js: "NSObject", typ: r("NSObject") },
@@ -986,11 +986,13 @@ const typeMap = {
         { json: "NULL", js: "NULL", typ: r("Null") },
         { json: "None", js: "None", typ: r("None") },
         { json: "ObjectMapper", js: "ObjectMapper", typ: r("ObjectMapper") },
+        { json: "OffsetDateTime", js: "OffsetDateTime", typ: r("OffsetDateTime") },
+        { json: "OffsetTime", js: "OffsetTime", typ: r("OffsetTime") },
         { 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: "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") },
@@ -1043,8 +1045,6 @@ const typeMap = {
         { 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),
     "NSError": o([
         { json: "NSError", js: "NSError", typ: i(0) },
@@ -1064,18 +1064,24 @@ const typeMap = {
     "ObjectMapper": o([
         { json: "ObjectMapper", js: "ObjectMapper", typ: i(0) },
     ], false),
+    "OffsetDateTime": o([
+        { json: "OffsetDateTime", js: "OffsetDateTime", typ: i(0) },
+    ], false),
+    "OffsetTime": o([
+        { json: "OffsetTime", js: "OffsetTime", 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) },
-    ], 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),
@@ -1232,15 +1238,10 @@ const typeMap = {
     "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: "KSerializer", js: "KSerializer", typ: r("KSerializer") },
         { json: "PrimitiveKind", js: "PrimitiveKind", typ: r("PrimitiveKind") },
+        { json: "SEL", js: "SEL", typ: r("Sel") },
         { json: "Self", js: "Self", typ: r("Self") },
         { json: "Sendable", js: "Sendable", typ: r("Sendable") },
         { json: "SerialDescriptor", js: "SerialDescriptor", typ: r("SerialDescriptor") },
@@ -1258,6 +1259,8 @@ const typeMap = {
         { json: "Type", js: "Type", typ: r("Type") },
         { json: "UseSerializers", js: "UseSerializers", typ: r("UseSerializers") },
         { json: "dummy", js: "dummy", typ: i(0) },
+        { 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") },
@@ -1301,9 +1304,6 @@ const typeMap = {
         { 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") },
     ], false),
     "KSerializer": o([
         { json: "KSerializer", js: "KSerializer", typ: i(0) },
@@ -1311,6 +1311,9 @@ const typeMap = {
     "PrimitiveKind": o([
         { json: "PrimitiveKind", js: "PrimitiveKind", typ: i(0) },
     ], false),
+    "Sel": o([
+        { json: "SEL", js: "SEL", typ: i(0) },
+    ], false),
     "Self": o([
         { json: "Self", js: "Self", typ: i(0) },
     ], false),
@@ -1359,6 +1362,12 @@ const typeMap = {
     "UseSerializers": o([
         { json: "UseSerializers", js: "UseSerializers", 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) },
     ], false),
@@ -1488,21 +1497,15 @@ const typeMap = {
     "Unowned": o([
         { json: "unowned", js: "unowned", typ: i(0) },
     ], false),
-    "Unsafe": o([
-        { json: "unsafe", js: "unsafe", typ: i(0) },
-    ], false),
-    "Unsigned": o([
-        { json: "unsigned", js: "unsigned", typ: i(0) },
-    ], false),
-    "Ushort": o([
-        { json: "ushort", js: "ushort", 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: "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") },
@@ -1530,6 +1533,15 @@ const typeMap = {
     "Yes": o([
         { json: "YES", js: "YES", typ: i(0) },
     ], false),
+    "Unsafe": o([
+        { json: "unsafe", js: "unsafe", typ: i(0) },
+    ], false),
+    "Unsigned": o([
+        { json: "unsigned", js: "unsigned", typ: i(0) },
+    ], false),
+    "Ushort": o([
+        { json: "ushort", js: "ushort", typ: i(0) },
+    ], false),
     "Using": o([
         { json: "using", js: "using", 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 e953da8..8935d03 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
@@ -160,6 +160,7 @@ let _JSONNode;
 let _JSONParser;
 let _JSONReader;
 let _JSONTokenType;
+let _LocalDate;
 let _Locale;
 let _MapEntry;
 let _No;
@@ -208,7 +209,6 @@ let _Native;
 let _New;
 let _Newtonsoft;
 let _Nil;
-let _Noexcept;
 let _Obj4;
 let _NSError;
 let _NSObject;
@@ -216,10 +216,12 @@ let _NSString;
 let _Null;
 let _None;
 let _ObjectMapper;
+let _OffsetDateTime;
+let _OffsetTime;
 let _Protocol;
 let _RegExp;
-let _Sel;
 let _NoSuchMethod;
+let _Noexcept;
 let _Nonatomic;
 let _NoneClass;
 let _Nonlocal;
@@ -272,11 +274,10 @@ let _Right;
 let _RuntimeType;
 let _S;
 let _Sbyte;
-let _Sealed;
-let _Select;
 let _Obj5;
 let _KSerializer;
 let _PrimitiveKind;
+let _Sel;
 let _Self;
 let _Sendable;
 let _SerialDescriptor;
@@ -293,6 +294,8 @@ let _TimeZone;
 let _True;
 let _Type;
 let _UseSerializers;
+let _Sealed;
+let _Select;
 let _SelfClass;
 let _Serialize;
 let _Set;
@@ -336,14 +339,14 @@ let _Unchecked;
 let _Undefined;
 let _Union;
 let _Unowned;
-let _Unsafe;
-let _Unsigned;
-let _Ushort;
 let _Obj6;
 let _UUID;
 let _Utf8JSONReader;
 let _Utf8JSONWriter;
 let _Yes;
+let _Unsafe;
+let _Unsigned;
+let _Ushort;
 let _Using;
 let _Var;
 let _Virtual;
@@ -922,6 +925,9 @@ _JSONReader = PropTypes.shape({
 _JSONTokenType = PropTypes.shape({
     "JsonTokenType": PropTypes.oneOfType([Integer]).isRequired,
 });
+_LocalDate = PropTypes.shape({
+    "LocalDate": PropTypes.oneOfType([Integer]).isRequired,
+});
 _Locale = PropTypes.shape({
     "Locale": PropTypes.oneOfType([Integer]).isRequired,
 });
@@ -1066,9 +1072,6 @@ _Newtonsoft = PropTypes.shape({
 _Nil = PropTypes.shape({
     "nil": PropTypes.oneOfType([Integer]).isRequired,
 });
-_Noexcept = PropTypes.shape({
-    "noexcept": PropTypes.oneOfType([Integer]).isRequired,
-});
 _Obj3 = PropTypes.shape({
     "Hashable": _Hashable,
     "Hasher": _Hasher,
@@ -1085,6 +1088,7 @@ _Obj3 = PropTypes.shape({
     "JsonParser": _JSONParser,
     "JsonReader": _JSONReader,
     "JsonTokenType": _JSONTokenType,
+    "LocalDate": _LocalDate,
     "Locale": _Locale,
     "MapEntry": _MapEntry,
     "NO": _No,
@@ -1134,7 +1138,6 @@ _Obj3 = PropTypes.shape({
     "new": _New,
     "newtonsoft": _Newtonsoft,
     "nil": _Nil,
-    "noexcept": _Noexcept,
 });
 _NSError = PropTypes.shape({
     "NSError": PropTypes.oneOfType([Integer]).isRequired,
@@ -1154,18 +1157,24 @@ _None = PropTypes.shape({
 _ObjectMapper = PropTypes.shape({
     "ObjectMapper": PropTypes.oneOfType([Integer]).isRequired,
 });
+_OffsetDateTime = PropTypes.shape({
+    "OffsetDateTime": PropTypes.oneOfType([Integer]).isRequired,
+});
+_OffsetTime = PropTypes.shape({
+    "OffsetTime": 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,
-});
 _NoSuchMethod = PropTypes.shape({
     "noSuchMethod": PropTypes.oneOfType([Integer]).isRequired,
 });
+_Noexcept = PropTypes.shape({
+    "noexcept": PropTypes.oneOfType([Integer]).isRequired,
+});
 _Nonatomic = PropTypes.shape({
     "nonatomic": PropTypes.oneOfType([Integer]).isRequired,
 });
@@ -1322,12 +1331,6 @@ _S = PropTypes.shape({
 _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({
     "NSError": _NSError,
     "NSObject": _NSObject,
@@ -1335,11 +1338,13 @@ _Obj4 = PropTypes.shape({
     "NULL": _Null,
     "None": _None,
     "ObjectMapper": _ObjectMapper,
+    "OffsetDateTime": _OffsetDateTime,
+    "OffsetTime": _OffsetTime,
     "Protocol": _Protocol,
     "RegExp": _RegExp,
-    "SEL": _Sel,
     "dummy": PropTypes.oneOfType([Integer]).isRequired,
     "noSuchMethod": _NoSuchMethod,
+    "noexcept": _Noexcept,
     "nonatomic": _Nonatomic,
     "none": _NoneClass,
     "nonlocal": _Nonlocal,
@@ -1392,8 +1397,6 @@ _Obj4 = PropTypes.shape({
     "runtimeType": _RuntimeType,
     "s": _S,
     "sbyte": _Sbyte,
-    "sealed": _Sealed,
-    "select": _Select,
 });
 _KSerializer = PropTypes.shape({
     "KSerializer": PropTypes.oneOfType([Integer]).isRequired,
@@ -1401,6 +1404,9 @@ _KSerializer = PropTypes.shape({
 _PrimitiveKind = PropTypes.shape({
     "PrimitiveKind": PropTypes.oneOfType([Integer]).isRequired,
 });
+_Sel = PropTypes.shape({
+    "SEL": PropTypes.oneOfType([Integer]).isRequired,
+});
 _Self = PropTypes.shape({
     "Self": PropTypes.oneOfType([Integer]).isRequired,
 });
@@ -1449,6 +1455,12 @@ _Type = PropTypes.shape({
 _UseSerializers = PropTypes.shape({
     "UseSerializers": 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,
 });
@@ -1578,18 +1590,10 @@ _Union = PropTypes.shape({
 _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,
-});
 _Obj5 = PropTypes.shape({
     "KSerializer": _KSerializer,
     "PrimitiveKind": _PrimitiveKind,
+    "SEL": _Sel,
     "Self": _Self,
     "Sendable": _Sendable,
     "SerialDescriptor": _SerialDescriptor,
@@ -1607,6 +1611,8 @@ _Obj5 = PropTypes.shape({
     "Type": _Type,
     "UseSerializers": _UseSerializers,
     "dummy": PropTypes.oneOfType([Integer]).isRequired,
+    "sealed": _Sealed,
+    "select": _Select,
     "self": _SelfClass,
     "serialize": _Serialize,
     "set": _Set,
@@ -1650,9 +1656,6 @@ _Obj5 = PropTypes.shape({
     "undefined": _Undefined,
     "union": _Union,
     "unowned": _Unowned,
-    "unsafe": _Unsafe,
-    "unsigned": _Unsigned,
-    "ushort": _Ushort,
 });
 _UUID = PropTypes.shape({
     "UUID": PropTypes.oneOfType([Integer]).isRequired,
@@ -1666,6 +1669,15 @@ _Utf8JSONWriter = PropTypes.shape({
 _Yes = PropTypes.shape({
     "YES": 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,
 });
@@ -1714,6 +1726,9 @@ _Obj6 = PropTypes.shape({
     "Utf8JsonWriter": _Utf8JSONWriter,
     "YES": _Yes,
     "dummy": PropTypes.oneOfType([Integer]).isRequired,
+    "unsafe": _Unsafe,
+    "unsigned": _Unsigned,
+    "ushort": _Ushort,
     "using": _Using,
     "var": _Var,
     "virtual": _Virtual,
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 00ff0b5..54bc986 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
@@ -947,6 +947,9 @@ data class Obj3 (
     val let: Let,
     val list: ListClass,
 
+    @Json(name = "LocalDate")
+    val localDate: LocalDate,
+
     @Json(name = "Locale")
     val locale: Locale,
 
@@ -972,8 +975,6 @@ data class Obj3 (
     @Json(name = "NO")
     val no: No,
 
-    val noexcept: Noexcept,
-
     @Json(name = "if")
     val obj3If: If,
 
@@ -1182,6 +1183,11 @@ data class ListClass (
     val list: Long
 )
 
+data class LocalDate (
+    @Json(name = "LocalDate")
+    val localDate: Long
+)
+
 data class Locale (
     @Json(name = "Locale")
     val locale: Long
@@ -1246,10 +1252,6 @@ data class No (
     val no: Long
 )
 
-data class Noexcept (
-    val noexcept: Long
-)
-
 data class If (
     @Json(name = "if")
     val ifIf: Long
@@ -1273,6 +1275,7 @@ data class Is (
 data class Obj4 (
     val dummy: Long,
     val noSuchMethod: NoSuchMethod,
+    val noexcept: Noexcept,
     val nonatomic: Nonatomic,
 
     @Json(name = "None")
@@ -1322,6 +1325,13 @@ data class Obj4 (
     val objectMapper: ObjectMapper,
 
     val of: Of,
+
+    @Json(name = "OffsetDateTime")
+    val offsetDateTime: OffsetDateTimeClass,
+
+    @Json(name = "OffsetTime")
+    val offsetTime: OffsetTime,
+
     val oneway: Oneway,
     val open: Open,
     val operator: Operator,
@@ -1373,19 +1383,17 @@ data class Obj4 (
     val right: Right,
     val runtimeType: RuntimeType,
     val s: S,
-    val sbyte: Sbyte,
-    val sealed: Sealed,
-
-    @Json(name = "SEL")
-    val sel: Sel,
-
-    val select: Select
+    val sbyte: Sbyte
 )
 
 data class NoSuchMethod (
     val noSuchMethod: Long
 )
 
+data class Noexcept (
+    val noexcept: Long
+)
+
 data class Nonatomic (
     val nonatomic: Long
 )
@@ -1477,6 +1485,16 @@ data class Of (
     val of: Long
 )
 
+data class OffsetDateTimeClass (
+    @Json(name = "OffsetDateTime")
+    val offsetDateTime: Long
+)
+
+data class OffsetTime (
+    @Json(name = "OffsetTime")
+    val offsetTime: Long
+)
+
 data class Oneway (
     val oneway: Long
 )
@@ -1641,19 +1659,6 @@ 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,
 
@@ -1693,6 +1698,13 @@ data class Obj5 (
     @Json(name = "true")
     val purpleTrue: TrueClass,
 
+    val sealed: Sealed,
+
+    @Json(name = "SEL")
+    val sel: Sel,
+
+    val select: Select,
+
     @Json(name = "Self")
     val self: Self,
 
@@ -1787,13 +1799,9 @@ data class Obj5 (
     val undefined: Undefined,
     val union: Union,
     val unowned: Unowned,
-    val unsafe: Unsafe,
-    val unsigned: Unsigned,
 
     @Json(name = "UseSerializers")
-    val useSerializers: UseSerializers,
-
-    val ushort: Ushort
+    val useSerializers: UseSerializers
 )
 
 data class KSerializer (
@@ -1854,6 +1862,19 @@ data class TrueClass (
     val trueTrue: 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
@@ -2065,23 +2086,11 @@ data class Unowned (
     val unowned: Long
 )
 
-data class Unsafe (
-    val unsafe: Long
-)
-
-data class Unsigned (
-    val unsigned: Long
-)
-
 data class UseSerializers (
     @Json(name = "UseSerializers")
     val useSerializers: Long
 )
 
-data class Ushort (
-    val ushort: Long
-)
-
 data class Obj6 (
     val dummy: Long,
 
@@ -2091,6 +2100,9 @@ data class Obj6 (
     @Json(name = "while")
     val obj6While: While,
 
+    val unsafe: Unsafe,
+    val unsigned: Unsigned,
+    val ushort: Ushort,
     val using: Using,
 
     @Json(name = "Utf8JsonReader")
@@ -2134,6 +2146,18 @@ data class While (
     val whileWhile: Long
 )
 
+data class Unsafe (
+    val unsafe: Long
+)
+
+data class Unsigned (
+    val unsigned: Long
+)
+
+data class Ushort (
+    val ushort: Long
+)
+
 data class Using (
     val using: 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 085d5ba..9043d06 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
@@ -1246,6 +1246,9 @@ data class Obj3 (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val list: ListClass,
 
+    @get:JsonProperty("LocalDate", required=true)@field:JsonProperty("LocalDate", required=true)
+    val localDate: LocalDate,
+
     @get:JsonProperty("Locale", required=true)@field:JsonProperty("Locale", required=true)
     val locale: Locale,
 
@@ -1291,9 +1294,6 @@ data class Obj3 (
     @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,
 
@@ -1527,6 +1527,11 @@ data class ListClass (
     val list: Long
 )
 
+data class LocalDate (
+    @get:JsonProperty("LocalDate", required=true)@field:JsonProperty("LocalDate", required=true)
+    val localDate: Long
+)
+
 data class Locale (
     @get:JsonProperty("Locale", required=true)@field:JsonProperty("Locale", required=true)
     val locale: Long
@@ -1602,11 +1607,6 @@ data class No (
     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
@@ -1634,6 +1634,9 @@ data class Obj4 (
     @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,
 
@@ -1694,6 +1697,12 @@ data class Obj4 (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val of: Of,
 
+    @get:JsonProperty("OffsetDateTime", required=true)@field:JsonProperty("OffsetDateTime", required=true)
+    val offsetDateTime: OffsetDateTimeClass,
+
+    @get:JsonProperty("OffsetTime", required=true)@field:JsonProperty("OffsetTime", required=true)
+    val offsetTime: OffsetTime,
+
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val oneway: Oneway,
 
@@ -1812,16 +1821,7 @@ data class Obj4 (
     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
+    val sbyte: Sbyte
 )
 
 data class NoSuchMethod (
@@ -1829,6 +1829,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
@@ -1929,6 +1934,16 @@ data class Of (
     val of: Long
 )
 
+data class OffsetDateTimeClass (
+    @get:JsonProperty("OffsetDateTime", required=true)@field:JsonProperty("OffsetDateTime", required=true)
+    val offsetDateTime: Long
+)
+
+data class OffsetTime (
+    @get:JsonProperty("OffsetTime", required=true)@field:JsonProperty("OffsetTime", required=true)
+    val offsetTime: Long
+)
+
 data class Oneway (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val oneway: Long
@@ -2129,21 +2144,6 @@ data class Sbyte (
     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,
@@ -2184,6 +2184,15 @@ data class Obj5 (
     @get:JsonProperty("true", required=true)@field:JsonProperty("true", required=true)
     val purpleTrue: TrueClass,
 
+    @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,
 
@@ -2328,17 +2337,8 @@ data class Obj5 (
     @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("UseSerializers", required=true)@field:JsonProperty("UseSerializers", required=true)
-    val useSerializers: UseSerializers,
-
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val ushort: Ushort
+    val useSerializers: UseSerializers
 )
 
 data class KSerializer (
@@ -2401,6 +2401,21 @@ data class TrueClass (
     val trueTrue: 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
@@ -2641,26 +2656,11 @@ data class Unowned (
     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 UseSerializers (
     @get:JsonProperty("UseSerializers", required=true)@field:JsonProperty("UseSerializers", required=true)
     val useSerializers: Long
 )
 
-data class Ushort (
-    @get:JsonProperty(required=true)@field:JsonProperty(required=true)
-    val ushort: Long
-)
-
 data class Obj6 (
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val dummy: Long,
@@ -2671,6 +2671,15 @@ data class Obj6 (
     @get:JsonProperty("while", required=true)@field:JsonProperty("while", required=true)
     val obj6While: While,
 
+    @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,
 
@@ -2730,6 +2739,21 @@ data class While (
     val whileWhile: 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
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 3bc6be6..6dc0a03 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
@@ -1060,6 +1060,9 @@ data class Obj3 (
     val let: Let,
     val list: ListClass,
 
+    @SerialName("LocalDate")
+    val localDate: LocalDate,
+
     @SerialName("Locale")
     val locale: Locale,
 
@@ -1085,8 +1088,6 @@ data class Obj3 (
     @SerialName("NO")
     val no: No,
 
-    val noexcept: Noexcept,
-
     @SerialName("if")
     val obj3If: If,
 
@@ -1339,6 +1340,12 @@ data class ListClass (
     val list: Long
 )
 
+@Serializable
+data class LocalDate (
+    @SerialName("LocalDate")
+    val localDate: Long
+)
+
 @Serializable
 data class Locale (
     @SerialName("Locale")
@@ -1418,11 +1425,6 @@ data class No (
     val no: Long
 )
 
-@Serializable
-data class Noexcept (
-    val noexcept: Long
-)
-
 @Serializable
 data class If (
     @SerialName("if")
@@ -1451,6 +1453,7 @@ data class Is (
 data class Obj4 (
     val dummy: Long,
     val noSuchMethod: NoSuchMethod,
+    val noexcept: Noexcept,
     val nonatomic: Nonatomic,
 
     @SerialName("None")
@@ -1500,6 +1503,13 @@ data class Obj4 (
     val objectMapper: ObjectMapper,
 
     val of: Of,
+
+    @SerialName("OffsetDateTime")
+    val offsetDateTime: OffsetDateTimeClass,
+
+    @SerialName("OffsetTime")
+    val offsetTime: OffsetTime,
+
     val oneway: Oneway,
     val open: Open,
     val operator: Operator,
@@ -1551,13 +1561,7 @@ data class Obj4 (
     val right: Right,
     val runtimeType: RuntimeType,
     val s: S,
-    val sbyte: Sbyte,
-    val sealed: Sealed,
-
-    @SerialName("SEL")
-    val sel: Sel,
-
-    val select: Select
+    val sbyte: Sbyte
 )
 
 @Serializable
@@ -1565,6 +1569,11 @@ data class NoSuchMethod (
     val noSuchMethod: Long
 )
 
+@Serializable
+data class Noexcept (
+    val noexcept: Long
+)
+
 @Serializable
 data class Nonatomic (
     val nonatomic: Long
@@ -1676,6 +1685,18 @@ data class Of (
     val of: Long
 )
 
+@Serializable
+data class OffsetDateTimeClass (
+    @SerialName("OffsetDateTime")
+    val offsetDateTime: Long
+)
+
+@Serializable
+data class OffsetTime (
+    @SerialName("OffsetTime")
+    val offsetTime: Long
+)
+
 @Serializable
 data class Oneway (
     val oneway: Long
@@ -1880,22 +1901,6 @@ 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,
@@ -1936,6 +1941,13 @@ data class Obj5 (
     @SerialName("true")
     val purpleTrue: TrueClass,
 
+    val sealed: Sealed,
+
+    @SerialName("SEL")
+    val sel: Sel,
+
+    val select: Select,
+
     @SerialName("Self")
     val self: Self,
 
@@ -2030,13 +2042,9 @@ data class Obj5 (
     val undefined: Undefined,
     val union: Union,
     val unowned: Unowned,
-    val unsafe: Unsafe,
-    val unsigned: Unsigned,
 
     @SerialName("UseSerializers")
-    val useSerializers: UseSerializersClass,
-
-    val ushort: Ushort
+    val useSerializers: UseSerializersClass
 )
 
 @Serializable
@@ -2109,6 +2117,22 @@ data class TrueClass (
     val trueTrue: 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")
@@ -2368,27 +2392,12 @@ data class Unowned (
     val unowned: Long
 )
 
-@Serializable
-data class Unsafe (
-    val unsafe: Long
-)
-
-@Serializable
-data class Unsigned (
-    val unsigned: Long
-)
-
 @Serializable
 data class UseSerializersClass (
     @SerialName("UseSerializers")
     val useSerializers: Long
 )
 
-@Serializable
-data class Ushort (
-    val ushort: Long
-)
-
 @Serializable
 data class Obj6 (
     val dummy: Long,
@@ -2399,6 +2408,9 @@ data class Obj6 (
     @SerialName("while")
     val obj6While: While,
 
+    val unsafe: Unsafe,
+    val unsigned: Unsigned,
+    val ushort: Ushort,
     val using: Using,
 
     @SerialName("Utf8JsonReader")
@@ -2444,6 +2456,21 @@ data class While (
     val whileWhile: Long
 )
 
+@Serializable
+data class Unsafe (
+    val unsafe: Long
+)
+
+@Serializable
+data class Unsigned (
+    val unsigned: Long
+)
+
+@Serializable
+data class Ushort (
+    val ushort: Long
+)
+
 @Serializable
 data class Using (
     val using: 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 bc476f9..ede3399 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
@@ -181,6 +181,7 @@
 @class QTLeft;
 @class QTLet;
 @class QTList;
+@class QTLocalDate;
 @class QTLocale;
 @class QTLock;
 @class QTMap;
@@ -193,7 +194,6 @@
 @class QTNative;
 @class QTNewtonsoft;
 @class QTNo;
-@class QTNoexcept;
 @class QTIf;
 @class QTInline;
 @class QTInt;
@@ -204,6 +204,7 @@
 @class QTNew;
 @class QTObj4;
 @class QTNoSuchMethod;
+@class QTNoexcept;
 @class QTNone;
 @class QTNonlocal;
 @class QTNonmutating;
@@ -226,6 +227,8 @@
 @class QTObject;
 @class QTObjectMapper;
 @class QTOf;
+@class QTOffsetDateTime;
+@class QTOffsetTime;
 @class QTOneway;
 @class QTOpen;
 @class QTOperator;
@@ -264,9 +267,6 @@
 @class QTRuntimeType;
 @class QTS;
 @class QTSbyte;
-@class QTSealed;
-@class QTSel;
-@class QTSelect;
 @class QTObj5;
 @class QTKSerializer;
 @class QTSelfClass;
@@ -281,8 +281,10 @@
 @class QTTypedef;
 @class QTTypeof;
 @class QTUnion;
-@class QTUnsigned;
 @class QTPrimitiveKind;
+@class QTSealed;
+@class QTSel;
+@class QTSelect;
 @class QTSelf;
 @class QTSendable;
 @class QTSerialDescriptor;
@@ -329,13 +331,14 @@
 @class QTUnchecked;
 @class QTUndefined;
 @class QTUnowned;
-@class QTUnsafe;
 @class QTUseSerializers;
-@class QTUshort;
 @class QTObj6;
+@class QTUnsigned;
 @class QTVoid;
 @class QTVolatile;
 @class QTWhile;
+@class QTUnsafe;
+@class QTUshort;
 @class QTUsing;
 @class QTUtf8JSONReader;
 @class QTUtf8JSONWriter;
@@ -1080,6 +1083,7 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTLeft *left;
 @property (nonatomic, strong) QTLet *let;
 @property (nonatomic, strong) QTList *list;
+@property (nonatomic, strong) QTLocalDate *localDate;
 @property (nonatomic, strong) QTLocale *locale;
 @property (nonatomic, strong) QTLock *lock;
 @property (nonatomic, strong) QTMap *map;
@@ -1092,7 +1096,6 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTNative *native;
 @property (nonatomic, strong) QTNewtonsoft *newtonsoft;
 @property (nonatomic, strong) QTNo *no;
-@property (nonatomic, strong) QTNoexcept *noexcept;
 @property (nonatomic, strong) QTIf *obj3If;
 @property (nonatomic, strong) QTInline *obj3Inline;
 @property (nonatomic, strong) QTInt *obj3Int;
@@ -1275,6 +1278,10 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger list;
 @end
 
+@interface QTLocalDate : NSObject
+@property (nonatomic, assign) NSInteger localDate;
+@end
+
 @interface QTLocale : NSObject
 @property (nonatomic, assign) NSInteger locale;
 @end
@@ -1323,10 +1330,6 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger no;
 @end
 
-@interface QTNoexcept : NSObject
-@property (nonatomic, assign) NSInteger noexcept;
-@end
-
 @interface QTIf : NSObject
 @property (nonatomic, assign) NSInteger ifIf;
 @end
@@ -1362,6 +1365,7 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @interface QTObj4 : NSObject
 @property (nonatomic, assign) NSInteger dummy;
 @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;
@@ -1384,6 +1388,8 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTObject *object;
 @property (nonatomic, strong) QTObjectMapper *objectMapper;
 @property (nonatomic, strong) QTOf *of;
+@property (nonatomic, strong) QTOffsetDateTime *offsetDateTime;
+@property (nonatomic, strong) QTOffsetTime *offsetTime;
 @property (nonatomic, strong) QTOneway *oneway;
 @property (nonatomic, strong) QTOpen *open;
 @property (nonatomic, strong) QTOperator *operator;
@@ -1422,15 +1428,16 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @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;
 @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
@@ -1519,6 +1526,14 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger of;
 @end
 
+@interface QTOffsetDateTime : NSObject
+@property (nonatomic, assign) NSInteger offsetDateTime;
+@end
+
+@interface QTOffsetTime : NSObject
+@property (nonatomic, assign) NSInteger offsetTime;
+@end
+
 @interface QTOneway : NSObject
 @property (nonatomic, assign) NSInteger oneway;
 @end
@@ -1671,18 +1686,6 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @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 QTObj5 : NSObject
 @property (nonatomic, assign) NSInteger dummy;
 @property (nonatomic, strong) QTKSerializer *kSerializer;
@@ -1698,8 +1701,10 @@ 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) QTPrimitiveKind *primitiveKind;
+@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) QTSerialDescriptor *serialDescriptor;
@@ -1746,9 +1751,7 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTUnchecked *unchecked;
 @property (nonatomic, strong) QTUndefined *undefined;
 @property (nonatomic, strong) QTUnowned *unowned;
-@property (nonatomic, strong) QTUnsafe *unsafe;
 @property (nonatomic, strong) QTUseSerializers *useSerializers;
-@property (nonatomic, strong) QTUshort *ushort;
 @end
 
 @interface QTKSerializer : NSObject
@@ -1803,14 +1806,22 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger unionUnion;
 @end
 
-@interface QTUnsigned : NSObject
-@property (nonatomic, assign) NSInteger unsignedUnsigned;
-@end
-
 @interface QTPrimitiveKind : NSObject
 @property (nonatomic, assign) NSInteger primitiveKind;
 @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
 @property (nonatomic, assign) NSInteger self;
 @end
@@ -1995,23 +2006,18 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger unowned;
 @end
 
-@interface QTUnsafe : NSObject
-@property (nonatomic, assign) NSInteger unsafe;
-@end
-
 @interface QTUseSerializers : NSObject
 @property (nonatomic, assign) NSInteger useSerializers;
 @end
 
-@interface QTUshort : NSObject
-@property (nonatomic, assign) NSInteger ushort;
-@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) QTUnsafe *unsafe;
+@property (nonatomic, strong) QTUshort *ushort;
 @property (nonatomic, strong) QTUsing *using;
 @property (nonatomic, strong) QTUtf8JSONReader *utf8JSONReader;
 @property (nonatomic, strong) QTUtf8JSONWriter *utf8JSONWriter;
@@ -2029,6 +2035,10 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, strong) QTYield *yield;
 @end
 
+@interface QTUnsigned : NSObject
+@property (nonatomic, assign) NSInteger unsignedUnsigned;
+@end
+
 @interface QTVoid : NSObject
 @property (nonatomic, assign) NSInteger voidVoid;
 @end
@@ -2041,6 +2051,14 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, assign) NSInteger whileWhile;
 @end
 
+@interface QTUnsafe : NSObject
+@property (nonatomic, assign) NSInteger unsafe;
+@end
+
+@interface QTUshort : NSObject
+@property (nonatomic, assign) NSInteger ushort;
+@end
+
 @interface QTUsing : NSObject
 @property (nonatomic, assign) NSInteger using;
 @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 b79655b..6bb516a 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
@@ -883,6 +883,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTLocalDate (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTLocale (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -943,11 +948,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTNoexcept (JSONConversion)
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
-- (NSDictionary *)JSONDictionary;
-@end
-
 @interface QTIf (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -998,6 +998,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTNoexcept (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTNone (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -1108,6 +1113,16 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTOffsetDateTime (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
+@interface QTOffsetTime (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTOneway (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -1298,21 +1313,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTSealed (JSONConversion)
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
-- (NSDictionary *)JSONDictionary;
-@end
-
-@interface QTSel (JSONConversion)
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
-- (NSDictionary *)JSONDictionary;
-@end
-
-@interface QTSelect (JSONConversion)
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
-- (NSDictionary *)JSONDictionary;
-@end
-
 @interface QTObj5 (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -1383,12 +1383,22 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTUnsigned (JSONConversion)
+@interface QTPrimitiveKind (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTPrimitiveKind (JSONConversion)
+@interface QTSealed (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
+@interface QTSel (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
+@interface QTSelect (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
@@ -1623,22 +1633,17 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTUnsafe (JSONConversion)
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
-- (NSDictionary *)JSONDictionary;
-@end
-
 @interface QTUseSerializers (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTUshort (JSONConversion)
+@interface QTObj6 (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
 
-@interface QTObj6 (JSONConversion)
+@interface QTUnsigned (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
 @end
@@ -1658,6 +1663,16 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTUnsafe (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
+@interface QTUshort (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTUsing (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -8664,6 +8679,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"left": @"left",
         @"let": @"let",
         @"list": @"list",
+        @"LocalDate": @"localDate",
         @"Locale": @"locale",
         @"lock": @"lock",
         @"map": @"map",
@@ -8676,7 +8692,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"native": @"native",
         @"newtonsoft": @"newtonsoft",
         @"NO": @"no",
-        @"noexcept": @"noexcept",
         @"if": @"obj3If",
         @"inline": @"obj3Inline",
         @"int": @"obj3Int",
@@ -8741,6 +8756,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (![dict[@"left"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"let"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"list"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"LocalDate"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"Locale"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"lock"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"map"] isKindOfClass:NSDictionary.class]) return nil;
@@ -8753,7 +8769,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         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[@"if"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"inline"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"int"] isKindOfClass:NSDictionary.class]) return nil;
@@ -8849,6 +8864,8 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (!_let && dict[@"let"] && ![dict[@"let"] isKindOfClass:NSNull.class]) return nil;
         _list = [QTList fromJSONDictionary:(id)_list];
         if (!_list && dict[@"list"] && ![dict[@"list"] isKindOfClass:NSNull.class]) return nil;
+        _localDate = [QTLocalDate fromJSONDictionary:(id)_localDate];
+        if (!_localDate && dict[@"LocalDate"] && ![dict[@"LocalDate"] isKindOfClass:NSNull.class]) return nil;
         _locale = [QTLocale fromJSONDictionary:(id)_locale];
         if (!_locale && dict[@"Locale"] && ![dict[@"Locale"] isKindOfClass:NSNull.class]) return nil;
         _lock = [QTLock fromJSONDictionary:(id)_lock];
@@ -8873,8 +8890,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         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;
         _obj3If = [QTIf fromJSONDictionary:(id)_obj3If];
         if (!_obj3If && dict[@"if"] && ![dict[@"if"] isKindOfClass:NSNull.class]) return nil;
         _obj3Inline = [QTInline fromJSONDictionary:(id)_obj3Inline];
@@ -8963,6 +8978,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"left": [_left JSONDictionary],
         @"let": [_let JSONDictionary],
         @"list": [_list JSONDictionary],
+        @"LocalDate": [_localDate JSONDictionary],
         @"Locale": [_locale JSONDictionary],
         @"lock": [_lock JSONDictionary],
         @"map": [_map JSONDictionary],
@@ -8975,7 +8991,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"native": [_native JSONDictionary],
         @"newtonsoft": [_newtonsoft JSONDictionary],
         @"NO": [_no JSONDictionary],
-        @"noexcept": [_noexcept JSONDictionary],
         @"if": [_obj3If JSONDictionary],
         @"inline": [_obj3Inline JSONDictionary],
         @"int": [_obj3Int JSONDictionary],
@@ -10995,6 +11010,58 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTLocalDate
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"LocalDate": @"localDate",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTLocalDate alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"LocalDate"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"LocalDate"] doubleValue] != [dict[@"LocalDate"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTLocalDate.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTLocalDate.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    id dict = [[self dictionaryWithValuesForKeys:QTLocalDate.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTLocalDate.properties) {
+        id propertyName = QTLocalDate.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
+}
+@end
+
 @implementation QTLocale
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -11539,48 +11606,6 @@ 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 QTIf
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -12004,6 +12029,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
     return properties = properties ? properties : @{
         @"dummy": @"dummy",
         @"noSuchMethod": @"noSuchMethod",
+        @"noexcept": @"noexcept",
         @"None": @"none",
         @"nonlocal": @"nonlocal",
         @"nonmutating": @"nonmutating",
@@ -12026,6 +12052,8 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"object": @"object",
         @"ObjectMapper": @"objectMapper",
         @"of": @"of",
+        @"OffsetDateTime": @"offsetDateTime",
+        @"OffsetTime": @"offsetTime",
         @"oneway": @"oneway",
         @"open": @"open",
         @"operator": @"operator",
@@ -12064,9 +12092,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"runtimeType": @"runtimeType",
         @"s": @"s",
         @"sbyte": @"sbyte",
-        @"sealed": @"sealed",
-        @"SEL": @"sel",
-        @"select": @"select",
     };
 }
 
@@ -12081,6 +12106,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (![dict[@"dummy"] isKindOfClass:NSNumber.class]) return nil;
         if ([dict[@"dummy"] doubleValue] != [dict[@"dummy"] longLongValue]) 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;
@@ -12103,6 +12129,8 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (![dict[@"object"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"ObjectMapper"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"of"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"OffsetDateTime"] isKindOfClass:NSDictionary.class]) return nil;
+        if (![dict[@"OffsetTime"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"oneway"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"open"] isKindOfClass:NSDictionary.class]) return nil;
         if (![dict[@"operator"] isKindOfClass:NSDictionary.class]) return nil;
@@ -12141,12 +12169,11 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         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;
         [self setValuesForKeysWithDictionary:dict];
         _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];
@@ -12191,6 +12218,10 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (!_objectMapper && dict[@"ObjectMapper"] && ![dict[@"ObjectMapper"] isKindOfClass:NSNull.class]) return nil;
         _of = [QTOf fromJSONDictionary:(id)_of];
         if (!_of && dict[@"of"] && ![dict[@"of"] isKindOfClass:NSNull.class]) return nil;
+        _offsetDateTime = [QTOffsetDateTime fromJSONDictionary:(id)_offsetDateTime];
+        if (!_offsetDateTime && dict[@"OffsetDateTime"] && ![dict[@"OffsetDateTime"] isKindOfClass:NSNull.class]) return nil;
+        _offsetTime = [QTOffsetTime fromJSONDictionary:(id)_offsetTime];
+        if (!_offsetTime && dict[@"OffsetTime"] && ![dict[@"OffsetTime"] isKindOfClass:NSNull.class]) return nil;
         _oneway = [QTOneway fromJSONDictionary:(id)_oneway];
         if (!_oneway && dict[@"oneway"] && ![dict[@"oneway"] isKindOfClass:NSNull.class]) return nil;
         _open = [QTOpen fromJSONDictionary:(id)_open];
@@ -12267,12 +12298,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         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;
     }
     return self;
 }
@@ -12303,6 +12328,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
     [dict addEntriesFromDictionary:@{
         @"noSuchMethod": [_noSuchMethod JSONDictionary],
+        @"noexcept": [_noexcept JSONDictionary],
         @"None": [_none JSONDictionary],
         @"nonlocal": [_nonlocal JSONDictionary],
         @"nonmutating": [_nonmutating JSONDictionary],
@@ -12325,6 +12351,8 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"object": [_object JSONDictionary],
         @"ObjectMapper": [_objectMapper JSONDictionary],
         @"of": [_of JSONDictionary],
+        @"OffsetDateTime": [_offsetDateTime JSONDictionary],
+        @"OffsetTime": [_offsetTime JSONDictionary],
         @"oneway": [_oneway JSONDictionary],
         @"open": [_open JSONDictionary],
         @"operator": [_operator JSONDictionary],
@@ -12363,9 +12391,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"runtimeType": [_runtimeType JSONDictionary],
         @"s": [_s JSONDictionary],
         @"sbyte": [_sbyte JSONDictionary],
-        @"sealed": [_sealed JSONDictionary],
-        @"SEL": [_sel JSONDictionary],
-        @"select": [_select JSONDictionary],
     }];
 
     return dict;
@@ -12414,6 +12439,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
 {
@@ -13458,25 +13525,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTOneway
+@implementation QTOffsetDateTime
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"oneway": @"oneway",
+        @"OffsetDateTime": @"offsetDateTime",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTOneway alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTOffsetDateTime alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"oneway"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"oneway"] doubleValue] != [dict[@"oneway"] longLongValue]) return nil;
+        if (![dict[@"OffsetDateTime"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"OffsetDateTime"] doubleValue] != [dict[@"OffsetDateTime"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -13484,41 +13551,51 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTOneway.properties[key];
+    id resolved = QTOffsetDateTime.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTOneway.properties[key];
+    id resolved = QTOffsetDateTime.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTOneway.properties.allValues];
+    id dict = [[self dictionaryWithValuesForKeys:QTOffsetDateTime.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTOffsetDateTime.properties) {
+        id propertyName = QTOffsetDateTime.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
 }
 @end
 
-@implementation QTOpen
+@implementation QTOffsetTime
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"open": @"open",
+        @"OffsetTime": @"offsetTime",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTOpen alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTOffsetTime alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"open"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"open"] doubleValue] != [dict[@"open"] longLongValue]) return nil;
+        if (![dict[@"OffsetTime"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"OffsetTime"] doubleValue] != [dict[@"OffsetTime"] longLongValue]) return nil;
         [self setValuesForKeysWithDictionary:dict];
     }
     return self;
@@ -13526,28 +13603,122 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTOpen.properties[key];
+    id resolved = QTOffsetTime.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTOpen.properties[key];
+    id resolved = QTOffsetTime.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    return [self dictionaryWithValuesForKeys:QTOpen.properties.allValues];
+    id dict = [[self dictionaryWithValuesForKeys:QTOffsetTime.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTOffsetTime.properties) {
+        id propertyName = QTOffsetTime.properties[jsonName];
+        if (![jsonName isEqualToString:propertyName]) {
+            dict[jsonName] = dict[propertyName];
+            [dict removeObjectForKey:propertyName];
+        }
+    }
+
+    return dict;
 }
 @end
 
-@implementation QTOperator
+@implementation QTOneway
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"operator": @"operator",
+        @"oneway": @"oneway",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTOneway alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"oneway"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"oneway"] doubleValue] != [dict[@"oneway"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTOneway.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTOneway.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTOneway.properties.allValues];
+}
+@end
+
+@implementation QTOpen
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"open": @"open",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTOpen alloc] initWithJSONDictionary:dict] : nil;
+}
+
+- (instancetype)initWithJSONDictionary:(NSDictionary *)dict
+{
+    if (self = [super init]) {
+        if (![dict[@"open"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"open"] doubleValue] != [dict[@"open"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTOpen.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTOpen.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTOpen.properties.allValues];
+}
+@end
+
+@implementation QTOperator
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"operator": @"operator",
     };
 }
 
@@ -15094,142 +15265,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTSealed
-+ (NSDictionary<NSString *, NSString *> *)properties
-{
-    static NSDictionary<NSString *, NSString *> *properties;
-    return properties = properties ? properties : @{
-        @"sealed": @"sealed",
-    };
-}
-
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict
-{
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTSealed 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;
-        [self setValuesForKeysWithDictionary:dict];
-    }
-    return self;
-}
-
-- (void)setValue:(nullable id)value forKey:(NSString *)key
-{
-    id resolved = QTSealed.properties[key];
-    if (resolved) [super setValue:value forKey:resolved];
-}
-
-- (void)setNilValueForKey:(NSString *)key
-{
-    id resolved = QTSealed.properties[key];
-    if (resolved) [super setValue:@(0) forKey:resolved];
-}
-
-- (NSDictionary *)JSONDictionary
-{
-    return [self dictionaryWithValuesForKeys:QTSealed.properties.allValues];
-}
-@end
-
-@implementation QTSel
-+ (NSDictionary<NSString *, NSString *> *)properties
-{
-    static NSDictionary<NSString *, NSString *> *properties;
-    return properties = properties ? properties : @{
-        @"SEL": @"sel",
-    };
-}
-
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict
-{
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTSel 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;
-        [self setValuesForKeysWithDictionary:dict];
-    }
-    return self;
-}
-
-- (void)setValue:(nullable id)value forKey:(NSString *)key
-{
-    id resolved = QTSel.properties[key];
-    if (resolved) [super setValue:value forKey:resolved];
-}
-
-- (void)setNilValueForKey:(NSString *)key
-{
-    id resolved = QTSel.properties[key];
-    if (resolved) [super setValue:@(0) forKey:resolved];
-}
-
-- (NSDictionary *)JSONDictionary
-{
-    id dict = [[self dictionaryWithValuesForKeys:QTSel.properties.allValues] mutableCopy];
-
-    for (id jsonName in QTSel.properties) {
-        id propertyName = QTSel.properties[jsonName];
-        if (![jsonName isEqualToString:propertyName]) {
-            dict[jsonName] = dict[propertyName];
-            [dict removeObjectForKey:propertyName];
-        }
-    }
-
-    return dict;
-}
-@end
-
-@implementation QTSelect
-+ (NSDictionary<NSString *, NSString *> *)properties
-{
-    static NSDictionary<NSString *, NSString *> *properties;
-    return properties = properties ? properties : @{
-        @"select": @"select",
-    };
-}
-
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict
-{
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTSelect 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;
-        [self setValuesForKeysWithDictionary:dict];
-    }
-    return self;
-}
-
-- (void)setValue:(nullable id)value forKey:(NSString *)key
-{
-    id resolved = QTSelect.properties[key];
-    if (resolved) [super setValue:value forKey:resolved];
-}
-
-- (void)setNilValueForKey:(NSString *)key
-{
-    id resolved = QTSelect.properties[key];
-    if (resolved) [super setValue:@(0) forKey:resolved];
-}
-
-- (NSDictionary *)JSONDictionary
-{
-    return [self dictionaryWithValuesForKeys:QTSelect.properties.allValues];
-}
-@end
-
 @implementation QTObj5
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -15249,8 +15284,10 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"typedef": @"obj5Typedef",
         @"typeof": @"obj5Typeof",
         @"union": @"obj5Union",
-        @"unsigned": @"obj5Unsigned",
         @"PrimitiveKind": @"primitiveKind",
+        @"sealed": @"sealed",
+        @"SEL": @"sel",
+        @"select": @"select",
         @"Self": @"self",
         @"Sendable": @"sendable",
         @"SerialDescriptor": @"serialDescriptor",
@@ -15297,9 +15334,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"unchecked": @"unchecked",
         @"undefined": @"undefined",
         @"unowned": @"unowned",
-        @"unsafe": @"unsafe",
         @"UseSerializers": @"useSerializers",
-        @"ushort": @"ushort",
     };
 }
 
@@ -15326,8 +15361,10 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         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[@"PrimitiveKind"] 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[@"SerialDescriptor"] isKindOfClass:NSDictionary.class]) return nil;
@@ -15374,9 +15411,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         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[@"UseSerializers"] isKindOfClass:NSDictionary.class]) return nil;
-        if (![dict[@"ushort"] isKindOfClass:NSDictionary.class]) return nil;
         [self setValuesForKeysWithDictionary:dict];
         _kSerializer = [QTKSerializer fromJSONDictionary:(id)_kSerializer];
         if (!_kSerializer && dict[@"KSerializer"] && ![dict[@"KSerializer"] isKindOfClass:NSNull.class]) return nil;
@@ -15404,10 +15439,14 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         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;
         _primitiveKind = [QTPrimitiveKind fromJSONDictionary:(id)_primitiveKind];
         if (!_primitiveKind && dict[@"PrimitiveKind"] && ![dict[@"PrimitiveKind"] 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];
@@ -15500,12 +15539,8 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         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;
         _useSerializers = [QTUseSerializers fromJSONDictionary:(id)_useSerializers];
         if (!_useSerializers && dict[@"UseSerializers"] && ![dict[@"UseSerializers"] isKindOfClass:NSNull.class]) return nil;
-        _ushort = [QTUshort fromJSONDictionary:(id)_ushort];
-        if (!_ushort && dict[@"ushort"] && ![dict[@"ushort"] isKindOfClass:NSNull.class]) return nil;
     }
     return self;
 }
@@ -15548,8 +15583,10 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"typedef": [_obj5Typedef JSONDictionary],
         @"typeof": [_obj5Typeof JSONDictionary],
         @"union": [_obj5Union JSONDictionary],
-        @"unsigned": [_obj5Unsigned JSONDictionary],
         @"PrimitiveKind": [_primitiveKind JSONDictionary],
+        @"sealed": [_sealed JSONDictionary],
+        @"SEL": [_sel JSONDictionary],
+        @"select": [_select JSONDictionary],
         @"Self": [_self JSONDictionary],
         @"Sendable": [_sendable JSONDictionary],
         @"SerialDescriptor": [_serialDescriptor JSONDictionary],
@@ -15596,9 +15633,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"unchecked": [_unchecked JSONDictionary],
         @"undefined": [_undefined JSONDictionary],
         @"unowned": [_unowned JSONDictionary],
-        @"unsafe": [_unsafe JSONDictionary],
         @"UseSerializers": [_useSerializers JSONDictionary],
-        @"ushort": [_ushort JSONDictionary],
     }];
 
     return dict;
@@ -16261,48 +16296,48 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTUnsigned
+@implementation QTPrimitiveKind
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"unsigned": @"unsignedUnsigned",
+        @"PrimitiveKind": @"primitiveKind",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTUnsigned alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTPrimitiveKind 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;
-        [self setValuesForKeysWithDictionary:dict];
+        if (![dict[@"PrimitiveKind"] isKindOfClass:NSNumber.class]) return nil;
+        if ([dict[@"PrimitiveKind"] doubleValue] != [dict[@"PrimitiveKind"] longLongValue]) return nil;
+        [self setValuesForKeysWithDictionary:dict];
     }
     return self;
 }
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTUnsigned.properties[key];
+    id resolved = QTPrimitiveKind.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTUnsigned.properties[key];
+    id resolved = QTPrimitiveKind.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTUnsigned.properties.allValues] mutableCopy];
+    id dict = [[self dictionaryWithValuesForKeys:QTPrimitiveKind.properties.allValues] mutableCopy];
 
-    for (id jsonName in QTUnsigned.properties) {
-        id propertyName = QTUnsigned.properties[jsonName];
+    for (id jsonName in QTPrimitiveKind.properties) {
+        id propertyName = QTPrimitiveKind.properties[jsonName];
         if (![jsonName isEqualToString:propertyName]) {
             dict[jsonName] = dict[propertyName];
             [dict removeObjectForKey:propertyName];
@@ -16313,25 +16348,25 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTPrimitiveKind
+@implementation QTSealed
 + (NSDictionary<NSString *, NSString *> *)properties
 {
     static NSDictionary<NSString *, NSString *> *properties;
     return properties = properties ? properties : @{
-        @"PrimitiveKind": @"primitiveKind",
+        @"sealed": @"sealed",
     };
 }
 
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict
 {
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTPrimitiveKind alloc] initWithJSONDictionary:dict] : nil;
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSealed alloc] initWithJSONDictionary:dict] : nil;
 }
 
 - (instancetype)initWithJSONDictionary:(NSDictionary *)dict
 {
     if (self = [super init]) {
-        if (![dict[@"PrimitiveKind"] isKindOfClass:NSNumber.class]) return nil;
-        if ([dict[@"PrimitiveKind"] doubleValue] != [dict[@"PrimitiveKind"] 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;
@@ -16339,22 +16374,64 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 
 - (void)setValue:(nullable id)value forKey:(NSString *)key
 {
-    id resolved = QTPrimitiveKind.properties[key];
+    id resolved = QTSealed.properties[key];
     if (resolved) [super setValue:value forKey:resolved];
 }
 
 - (void)setNilValueForKey:(NSString *)key
 {
-    id resolved = QTPrimitiveKind.properties[key];
+    id resolved = QTSealed.properties[key];
     if (resolved) [super setValue:@(0) forKey:resolved];
 }
 
 - (NSDictionary *)JSONDictionary
 {
-    id dict = [[self dictionaryWithValuesForKeys:QTPrimitiveKind.properties.allValues] mutableCopy];
+    return [self dictionaryWithValuesForKeys:QTSealed.properties.allValues];
+}
+@end
 
-    for (id jsonName in QTPrimitiveKind.properties) {
-        id propertyName = QTPrimitiveKind.properties[jsonName];
+@implementation QTSel
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"SEL": @"sel",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSel 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;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTSel.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTSel.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    id dict = [[self dictionaryWithValuesForKeys:QTSel.properties.allValues] mutableCopy];
+
+    for (id jsonName in QTSel.properties) {
+        id propertyName = QTSel.properties[jsonName];
         if (![jsonName isEqualToString:propertyName]) {
             dict[jsonName] = dict[propertyName];
             [dict removeObjectForKey:propertyName];
@@ -16365,6 +16442,48 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTSelect
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"select": @"select",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTSelect 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;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTSelect.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTSelect.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTSelect.properties.allValues];
+}
+@end
+
 @implementation QTSelf
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -18497,48 +18616,6 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTUnsafe
-+ (NSDictionary<NSString *, NSString *> *)properties
-{
-    static NSDictionary<NSString *, NSString *> *properties;
-    return properties = properties ? properties : @{
-        @"unsafe": @"unsafe",
-    };
-}
-
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict
-{
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTUnsafe 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;
-        [self setValuesForKeysWithDictionary:dict];
-    }
-    return self;
-}
-
-- (void)setValue:(nullable id)value forKey:(NSString *)key
-{
-    id resolved = QTUnsafe.properties[key];
-    if (resolved) [super setValue:value forKey:resolved];
-}
-
-- (void)setNilValueForKey:(NSString *)key
-{
-    id resolved = QTUnsafe.properties[key];
-    if (resolved) [super setValue:@(0) forKey:resolved];
-}
-
-- (NSDictionary *)JSONDictionary
-{
-    return [self dictionaryWithValuesForKeys:QTUnsafe.properties.allValues];
-}
-@end
-
 @implementation QTUseSerializers
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -18591,57 +18668,18 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
-@implementation QTUshort
-+ (NSDictionary<NSString *, NSString *> *)properties
-{
-    static NSDictionary<NSString *, NSString *> *properties;
-    return properties = properties ? properties : @{
-        @"ushort": @"ushort",
-    };
-}
-
-+ (instancetype)fromJSONDictionary:(NSDictionary *)dict
-{
-    return [dict isKindOfClass:NSDictionary.class] ? [[QTUshort 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;
-        [self setValuesForKeysWithDictionary:dict];
-    }
-    return self;
-}
-
-- (void)setValue:(nullable id)value forKey:(NSString *)key
-{
-    id resolved = QTUshort.properties[key];
-    if (resolved) [super setValue:value forKey:resolved];
-}
-
-- (void)setNilValueForKey:(NSString *)key
-{
-    id resolved = QTUshort.properties[key];
-    if (resolved) [super setValue:@(0) forKey:resolved];
-}
-
-- (NSDictionary *)JSONDictionary
-{
-    return [self dictionaryWithValuesForKeys:QTUshort.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",
+        @"unsafe": @"unsafe",
+        @"ushort": @"ushort",
         @"using": @"using",
         @"Utf8JsonReader": @"utf8JSONReader",
         @"Utf8JsonWriter": @"utf8JSONWriter",
@@ -18670,9 +18708,12 @@ 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[@"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[@"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;
@@ -18689,12 +18730,18 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         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;
+        _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];
@@ -18754,9 +18801,12 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
     }
 
     [dict addEntriesFromDictionary:@{
+        @"unsigned": [_obj6Unsigned JSONDictionary],
         @"void": [_obj6Void JSONDictionary],
         @"volatile": [_obj6Volatile JSONDictionary],
         @"while": [_obj6While JSONDictionary],
+        @"unsafe": [_unsafe JSONDictionary],
+        @"ushort": [_ushort JSONDictionary],
         @"using": [_using JSONDictionary],
         @"Utf8JsonReader": [_utf8JSONReader JSONDictionary],
         @"Utf8JsonWriter": [_utf8JSONWriter JSONDictionary],
@@ -18778,6 +18828,58 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTUnsigned
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"unsigned": @"unsignedUnsigned",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTUnsigned 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;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTUnsigned.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTUnsigned.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    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 QTVoid
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -18934,6 +19036,90 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTUnsafe
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"unsafe": @"unsafe",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTUnsafe 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;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTUnsafe.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTUnsafe.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTUnsafe.properties.allValues];
+}
+@end
+
+@implementation QTUshort
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+        @"ushort": @"ushort",
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTUshort 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;
+        [self setValuesForKeysWithDictionary:dict];
+    }
+    return self;
+}
+
+- (void)setValue:(nullable id)value forKey:(NSString *)key
+{
+    id resolved = QTUshort.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTUshort.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTUshort.properties.allValues];
+}
+@end
+
 @implementation QTUsing
 + (NSDictionary<NSString *, NSString *> *)properties
 {
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 7017422..a23b502 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
@@ -21124,6 +21124,7 @@ class Obj3 {
     private Left $left; // json:left Required
     private Let $let; // json:let Required
     private ListClass $list; // json:list Required
+    private LocalDate $localDate; // json:LocalDate Required
     private LocaleClass $locale; // json:Locale Required
     private Lock $lock; // json:lock Required
     private Long $long; // json:long Required
@@ -21139,7 +21140,6 @@ class Obj3 {
     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
@@ -21191,6 +21191,7 @@ class Obj3 {
      * @param Left $left
      * @param Let $let
      * @param ListClass $list
+     * @param LocalDate $localDate
      * @param LocaleClass $locale
      * @param Lock $lock
      * @param Long $long
@@ -21206,9 +21207,8 @@ class Obj3 {
      * @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, 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, LocalDate $localDate, 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) {
         $this->dummy = $dummy;
         $this->guard = $guard;
         $this->hasOwnProperty = $hasOwnProperty;
@@ -21258,6 +21258,7 @@ class Obj3 {
         $this->left = $left;
         $this->let = $let;
         $this->list = $list;
+        $this->localDate = $localDate;
         $this->locale = $locale;
         $this->lock = $lock;
         $this->long = $long;
@@ -21273,7 +21274,6 @@ class Obj3 {
         $this->newtonsoft = $newtonsoft;
         $this->nil = $nil;
         $this->no = $no;
-        $this->noexcept = $noexcept;
     }
 
     /**
@@ -23627,6 +23627,54 @@ class Obj3 {
         return ListClass::sample(); /*79:list*/
     }
 
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return LocalDate
+     */
+    public static function fromLocalDate(stdClass $value): LocalDate {
+        return LocalDate::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toLocalDate(): stdClass {
+        if (Obj3::validateLocalDate($this->localDate))  {
+            return $this->localDate->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj3::localDate');
+    }
+
+    /**
+     * @param LocalDate
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateLocalDate(LocalDate $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return LocalDate
+     */
+    public function getLocalDate(): LocalDate {
+        if (Obj3::validateLocalDate($this->localDate))  {
+            return $this->localDate;
+        }
+        throw new Exception('never get to getLocalDate Obj3::localDate');
+    }
+
+    /**
+     * @return LocalDate
+     */
+    public static function sampleLocalDate(): LocalDate {
+        return LocalDate::sample(); /*80:localDate*/
+    }
+
     /**
      * @param stdClass $value
      * @throws Exception
@@ -23672,7 +23720,7 @@ class Obj3 {
      * @return LocaleClass
      */
     public static function sampleLocale(): LocaleClass {
-        return LocaleClass::sample(); /*80:locale*/
+        return LocaleClass::sample(); /*81:locale*/
     }
 
     /**
@@ -23720,7 +23768,7 @@ class Obj3 {
      * @return Lock
      */
     public static function sampleLock(): Lock {
-        return Lock::sample(); /*81:lock*/
+        return Lock::sample(); /*82:lock*/
     }
 
     /**
@@ -23768,7 +23816,7 @@ class Obj3 {
      * @return Long
      */
     public static function sampleLong(): Long {
-        return Long::sample(); /*82:long*/
+        return Long::sample(); /*83:long*/
     }
 
     /**
@@ -23816,7 +23864,7 @@ class Obj3 {
      * @return Map
      */
     public static function sampleMap(): Map {
-        return Map::sample(); /*83:map*/
+        return Map::sample(); /*84:map*/
     }
 
     /**
@@ -23864,7 +23912,7 @@ class Obj3 {
      * @return MapEntry
      */
     public static function sampleMapEntry(): MapEntry {
-        return MapEntry::sample(); /*84:mapEntry*/
+        return MapEntry::sample(); /*85:mapEntry*/
     }
 
     /**
@@ -23912,7 +23960,7 @@ class Obj3 {
      * @return MetadataPropertyHandling
      */
     public static function sampleMetadataPropertyHandling(): MetadataPropertyHandling {
-        return MetadataPropertyHandling::sample(); /*85:metadataPropertyHandling*/
+        return MetadataPropertyHandling::sample(); /*86:metadataPropertyHandling*/
     }
 
     /**
@@ -23960,7 +24008,7 @@ class Obj3 {
      * @return Module
      */
     public static function sampleModule(): Module {
-        return Module::sample(); /*86:module*/
+        return Module::sample(); /*87:module*/
     }
 
     /**
@@ -24008,7 +24056,7 @@ class Obj3 {
      * @return Mutable
      */
     public static function sampleMutable(): Mutable {
-        return Mutable::sample(); /*87:mutable*/
+        return Mutable::sample(); /*88:mutable*/
     }
 
     /**
@@ -24056,7 +24104,7 @@ class Obj3 {
      * @return Mutating
      */
     public static function sampleMutating(): Mutating {
-        return Mutating::sample(); /*88:mutating*/
+        return Mutating::sample(); /*89:mutating*/
     }
 
     /**
@@ -24104,7 +24152,7 @@ class Obj3 {
      * @return NamespaceClass
      */
     public static function sampleNamespace(): NamespaceClass {
-        return NamespaceClass::sample(); /*89:namespace*/
+        return NamespaceClass::sample(); /*90:namespace*/
     }
 
     /**
@@ -24152,7 +24200,7 @@ class Obj3 {
      * @return Native
      */
     public static function sampleNative(): Native {
-        return Native::sample(); /*90:native*/
+        return Native::sample(); /*91:native*/
     }
 
     /**
@@ -24200,7 +24248,7 @@ class Obj3 {
      * @return NewClass
      */
     public static function sampleNew(): NewClass {
-        return NewClass::sample(); /*91:new*/
+        return NewClass::sample(); /*92:new*/
     }
 
     /**
@@ -24248,7 +24296,7 @@ class Obj3 {
      * @return Newtonsoft
      */
     public static function sampleNewtonsoft(): Newtonsoft {
-        return Newtonsoft::sample(); /*92:newtonsoft*/
+        return Newtonsoft::sample(); /*93:newtonsoft*/
     }
 
     /**
@@ -24296,7 +24344,7 @@ class Obj3 {
      * @return Nil
      */
     public static function sampleNil(): Nil {
-        return Nil::sample(); /*93:nil*/
+        return Nil::sample(); /*94:nil*/
     }
 
     /**
@@ -24344,55 +24392,7 @@ class Obj3 {
      * @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 No::sample(); /*95:no*/
     }
 
     /**
@@ -24449,6 +24449,7 @@ class Obj3 {
         || Obj3::validateLeft($this->left)
         || Obj3::validateLet($this->let)
         || Obj3::validateList($this->list)
+        || Obj3::validateLocalDate($this->localDate)
         || Obj3::validateLocale($this->locale)
         || Obj3::validateLock($this->lock)
         || Obj3::validateLong($this->long)
@@ -24463,8 +24464,7 @@ class Obj3 {
         || Obj3::validateNew($this->new)
         || Obj3::validateNewtonsoft($this->newtonsoft)
         || Obj3::validateNil($this->nil)
-        || Obj3::validateNo($this->no)
-        || Obj3::validateNoexcept($this->noexcept);
+        || Obj3::validateNo($this->no);
     }
 
     /**
@@ -24522,6 +24522,7 @@ class Obj3 {
         $out->{'left'} = $this->toLeft();
         $out->{'let'} = $this->toLet();
         $out->{'list'} = $this->toList();
+        $out->{'LocalDate'} = $this->toLocalDate();
         $out->{'Locale'} = $this->toLocale();
         $out->{'lock'} = $this->toLock();
         $out->{'long'} = $this->toLong();
@@ -24537,7 +24538,6 @@ class Obj3 {
         $out->{'newtonsoft'} = $this->toNewtonsoft();
         $out->{'nil'} = $this->toNil();
         $out->{'NO'} = $this->toNo();
-        $out->{'noexcept'} = $this->toNoexcept();
         return $out;
     }
 
@@ -24694,6 +24694,9 @@ class Obj3 {
         if (!property_exists($obj, 'list')) {
             throw new Exception("Missing required property");
         }
+        if (!property_exists($obj, 'LocalDate')) {
+            throw new Exception("Missing required property");
+        }
         if (!property_exists($obj, 'Locale')) {
             throw new Exception("Missing required property");
         }
@@ -24739,9 +24742,6 @@ class Obj3 {
         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::fromGuard($obj->{'guard'})
@@ -24792,6 +24792,7 @@ class Obj3 {
         ,Obj3::fromLeft($obj->{'left'})
         ,Obj3::fromLet($obj->{'let'})
         ,Obj3::fromList($obj->{'list'})
+        ,Obj3::fromLocalDate($obj->{'LocalDate'})
         ,Obj3::fromLocale($obj->{'Locale'})
         ,Obj3::fromLock($obj->{'lock'})
         ,Obj3::fromLong($obj->{'long'})
@@ -24807,7 +24808,6 @@ class Obj3 {
         ,Obj3::fromNewtonsoft($obj->{'newtonsoft'})
         ,Obj3::fromNil($obj->{'nil'})
         ,Obj3::fromNo($obj->{'NO'})
-        ,Obj3::fromNoexcept($obj->{'noexcept'})
         );
     }
 
@@ -24865,6 +24865,7 @@ class Obj3 {
         ,Obj3::sampleLeft()
         ,Obj3::sampleLet()
         ,Obj3::sampleList()
+        ,Obj3::sampleLocalDate()
         ,Obj3::sampleLocale()
         ,Obj3::sampleLock()
         ,Obj3::sampleLong()
@@ -24880,7 +24881,6 @@ class Obj3 {
         ,Obj3::sampleNewtonsoft()
         ,Obj3::sampleNil()
         ,Obj3::sampleNo()
-        ,Obj3::sampleNoexcept()
         );
     }
 }
@@ -29736,6 +29736,107 @@ class ListClass {
     }
 }
 
+// This is an autogenerated file:LocalDate
+
+class LocalDate {
+    private int $localDate; // json:LocalDate Required
+
+    /**
+     * @param int $localDate
+     */
+    public function __construct(int $localDate) {
+        $this->localDate = $localDate;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromLocalDate(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toLocalDate(): int {
+        if (LocalDate::validateLocalDate($this->localDate))  {
+            return $this->localDate; /*int*/
+        }
+        throw new Exception('never get to this LocalDate::localDate');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateLocalDate(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getLocalDate(): int {
+        if (LocalDate::validateLocalDate($this->localDate))  {
+            return $this->localDate;
+        }
+        throw new Exception('never get to getLocalDate LocalDate::localDate');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleLocalDate(): int {
+        return 31; /*31:localDate*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return LocalDate::validateLocalDate($this->localDate);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'LocalDate'} = $this->toLocalDate();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return LocalDate
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): LocalDate {
+        if (!property_exists($obj, 'LocalDate')) {
+            throw new Exception("Missing required property");
+        }
+        return new LocalDate(
+         LocalDate::fromLocalDate($obj->{'LocalDate'})
+        );
+    }
+
+    /**
+     * @return LocalDate
+     */
+    public static function sample(): LocalDate {
+        return new LocalDate(
+         LocalDate::sampleLocalDate()
+        );
+    }
+}
+
 // This is an autogenerated file:LocaleClass
 
 class LocaleClass {
@@ -31251,112 +31352,12 @@ class No {
     }
 }
 
-// This is an autogenerated file:Noexcept
-
-class Noexcept {
-    private int $noexcept; // json:noexcept Required
-
-    /**
-     * @param int $noexcept
-     */
-    public function __construct(int $noexcept) {
-        $this->noexcept = $noexcept;
-    }
-
-    /**
-     * @param int $value
-     * @throws Exception
-     * @return int
-     */
-    public static function fromNoexcept(int $value): int {
-        return $value; /*int*/
-    }
-
-    /**
-     * @throws Exception
-     * @return int
-     */
-    public function toNoexcept(): int {
-        if (Noexcept::validateNoexcept($this->noexcept))  {
-            return $this->noexcept; /*int*/
-        }
-        throw new Exception('never get to this Noexcept::noexcept');
-    }
-
-    /**
-     * @param int
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateNoexcept(int $value): bool {
-        return true;
-    }
-
-    /**
-     * @throws Exception
-     * @return int
-     */
-    public function getNoexcept(): int {
-        if (Noexcept::validateNoexcept($this->noexcept))  {
-            return $this->noexcept;
-        }
-        throw new Exception('never get to getNoexcept Noexcept::noexcept');
-    }
-
-    /**
-     * @return int
-     */
-    public static function sampleNoexcept(): int {
-        return 31; /*31:noexcept*/
-    }
-
-    /**
-     * @throws Exception
-     * @return bool
-     */
-    public function validate(): bool {
-        return Noexcept::validateNoexcept($this->noexcept);
-    }
-
-    /**
-     * @return stdClass
-     * @throws Exception
-     */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'noexcept'} = $this->toNoexcept();
-        return $out;
-    }
-
-    /**
-     * @param stdClass $obj
-     * @return Noexcept
-     * @throws Exception
-     */
-    public static function from(stdClass $obj): Noexcept {
-        if (!property_exists($obj, 'noexcept')) {
-            throw new Exception("Missing required property");
-        }
-        return new Noexcept(
-         Noexcept::fromNoexcept($obj->{'noexcept'})
-        );
-    }
-
-    /**
-     * @return Noexcept
-     */
-    public static function sample(): Noexcept {
-        return new Noexcept(
-         Noexcept::sampleNoexcept()
-        );
-    }
-}
-
 // This is an autogenerated file:Obj4
 
 class Obj4 {
     private int $dummy; // json:dummy 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
@@ -31375,6 +31376,8 @@ class Obj4 {
     private ObjectClass $object; // json:object Required
     private ObjectMapper $objectMapper; // json:ObjectMapper Required
     private Of $of; // json:of Required
+    private OffsetDateTime $offsetDateTime; // json:OffsetDateTime Required
+    private OffsetTime $offsetTime; // json:OffsetTime Required
     private Oneway $oneway; // json:oneway Required
     private Open $open; // json:open Required
     private Operator $operator; // json:operator Required
@@ -31417,13 +31420,11 @@ class Obj4 {
     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 Noexcept $noexcept
      * @param Nonatomic $nonatomic
      * @param None $none
      * @param Nonlocal $nonlocal
@@ -31442,6 +31443,8 @@ class Obj4 {
      * @param ObjectClass $object
      * @param ObjectMapper $objectMapper
      * @param Of $of
+     * @param OffsetDateTime $offsetDateTime
+     * @param OffsetTime $offsetTime
      * @param Oneway $oneway
      * @param Open $open
      * @param Operator $operator
@@ -31484,13 +31487,11 @@ class Obj4 {
      * @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) {
+    public function __construct(int $dummy, NoSuchMethod $noSuchMethod, Noexcept $noexcept, 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, OffsetDateTime $offsetDateTime, OffsetTime $offsetTime, 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) {
         $this->dummy = $dummy;
         $this->noSuchMethod = $noSuchMethod;
+        $this->noexcept = $noexcept;
         $this->nonatomic = $nonatomic;
         $this->none = $none;
         $this->nonlocal = $nonlocal;
@@ -31509,6 +31510,8 @@ class Obj4 {
         $this->object = $object;
         $this->objectMapper = $objectMapper;
         $this->of = $of;
+        $this->offsetDateTime = $offsetDateTime;
+        $this->offsetTime = $offsetTime;
         $this->oneway = $oneway;
         $this->open = $open;
         $this->operator = $operator;
@@ -31551,9 +31554,6 @@ class Obj4 {
         $this->runtimeType = $runtimeType;
         $this->s = $s;
         $this->sbyte = $sbyte;
-        $this->sealed = $sealed;
-        $this->sel = $sel;
-        $this->select = $select;
     }
 
     /**
@@ -31651,6 +31651,54 @@ class Obj4 {
         return NoSuchMethod::sample(); /*32:noSuchMethod*/
     }
 
+    /**
+     * @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 (Obj4::validateNoexcept($this->noexcept))  {
+            return $this->noexcept->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::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 (Obj4::validateNoexcept($this->noexcept))  {
+            return $this->noexcept;
+        }
+        throw new Exception('never get to getNoexcept Obj4::noexcept');
+    }
+
+    /**
+     * @return Noexcept
+     */
+    public static function sampleNoexcept(): Noexcept {
+        return Noexcept::sample(); /*33:noexcept*/
+    }
+
     /**
      * @param stdClass $value
      * @throws Exception
@@ -31696,7 +31744,7 @@ class Obj4 {
      * @return Nonatomic
      */
     public static function sampleNonatomic(): Nonatomic {
-        return Nonatomic::sample(); /*33:nonatomic*/
+        return Nonatomic::sample(); /*34:nonatomic*/
     }
 
     /**
@@ -31744,7 +31792,7 @@ class Obj4 {
      * @return None
      */
     public static function sampleNone(): None {
-        return None::sample(); /*34:none*/
+        return None::sample(); /*35:none*/
     }
 
     /**
@@ -31792,7 +31840,7 @@ class Obj4 {
      * @return Nonlocal
      */
     public static function sampleNonlocal(): Nonlocal {
-        return Nonlocal::sample(); /*35:nonlocal*/
+        return Nonlocal::sample(); /*36:nonlocal*/
     }
 
     /**
@@ -31840,7 +31888,7 @@ class Obj4 {
      * @return Nonmutating
      */
     public static function sampleNonmutating(): Nonmutating {
-        return Nonmutating::sample(); /*36:nonmutating*/
+        return Nonmutating::sample(); /*37:nonmutating*/
     }
 
     /**
@@ -31888,7 +31936,7 @@ class Obj4 {
      * @return Not
      */
     public static function sampleNot(): Not {
-        return Not::sample(); /*37:not*/
+        return Not::sample(); /*38:not*/
     }
 
     /**
@@ -31936,7 +31984,7 @@ class Obj4 {
      * @return NotEq
      */
     public static function sampleNotEq(): NotEq {
-        return NotEq::sample(); /*38:notEq*/
+        return NotEq::sample(); /*39:notEq*/
     }
 
     /**
@@ -31984,7 +32032,7 @@ class Obj4 {
      * @return NSError
      */
     public static function sampleNSError(): NSError {
-        return NSError::sample(); /*39:nsError*/
+        return NSError::sample(); /*40:nsError*/
     }
 
     /**
@@ -32032,7 +32080,7 @@ class Obj4 {
      * @return NSObject
      */
     public static function sampleNSObject(): NSObject {
-        return NSObject::sample(); /*40:nsObject*/
+        return NSObject::sample(); /*41:nsObject*/
     }
 
     /**
@@ -32080,7 +32128,7 @@ class Obj4 {
      * @return NSString
      */
     public static function sampleNSString(): NSString {
-        return NSString::sample(); /*41:nsString*/
+        return NSString::sample(); /*42:nsString*/
     }
 
     /**
@@ -32128,7 +32176,7 @@ class Obj4 {
      * @return NULLClass
      */
     public static function sampleNull(): NULLClass {
-        return NULLClass::sample(); /*42:null*/
+        return NULLClass::sample(); /*43:null*/
     }
 
     /**
@@ -32176,7 +32224,7 @@ class Obj4 {
      * @return Nullptr
      */
     public static function sampleNullptr(): Nullptr {
-        return Nullptr::sample(); /*43:nullptr*/
+        return Nullptr::sample(); /*44:nullptr*/
     }
 
     /**
@@ -32224,7 +32272,7 @@ class Obj4 {
      * @return Number
      */
     public static function sampleNumber(): Number {
-        return Number::sample(); /*44:number*/
+        return Number::sample(); /*45:number*/
     }
 
     /**
@@ -32272,7 +32320,7 @@ class Obj4 {
      * @return NoneClass
      */
     public static function sampleObj4None(): NoneClass {
-        return NoneClass::sample(); /*45:obj4None*/
+        return NoneClass::sample(); /*46:obj4None*/
     }
 
     /**
@@ -32320,7 +32368,7 @@ class Obj4 {
      * @return Obj4Null
      */
     public static function sampleObj4Null(): Obj4Null {
-        return Obj4Null::sample(); /*46:obj4Null*/
+        return Obj4Null::sample(); /*47:obj4Null*/
     }
 
     /**
@@ -32368,7 +32416,7 @@ class Obj4 {
      * @return ProtocolClass
      */
     public static function sampleObj4Protocol(): ProtocolClass {
-        return ProtocolClass::sample(); /*47:obj4Protocol*/
+        return ProtocolClass::sample(); /*48:obj4Protocol*/
     }
 
     /**
@@ -32416,7 +32464,7 @@ class Obj4 {
      * @return ObjectClass
      */
     public static function sampleObject(): ObjectClass {
-        return ObjectClass::sample(); /*48:object*/
+        return ObjectClass::sample(); /*49:object*/
     }
 
     /**
@@ -32464,7 +32512,7 @@ class Obj4 {
      * @return ObjectMapper
      */
     public static function sampleObjectMapper(): ObjectMapper {
-        return ObjectMapper::sample(); /*49:objectMapper*/
+        return ObjectMapper::sample(); /*50:objectMapper*/
     }
 
     /**
@@ -32512,7 +32560,103 @@ class Obj4 {
      * @return Of
      */
     public static function sampleOf(): Of {
-        return Of::sample(); /*50:of*/
+        return Of::sample(); /*51:of*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return OffsetDateTime
+     */
+    public static function fromOffsetDateTime(stdClass $value): OffsetDateTime {
+        return OffsetDateTime::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toOffsetDateTime(): stdClass {
+        if (Obj4::validateOffsetDateTime($this->offsetDateTime))  {
+            return $this->offsetDateTime->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::offsetDateTime');
+    }
+
+    /**
+     * @param OffsetDateTime
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateOffsetDateTime(OffsetDateTime $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return OffsetDateTime
+     */
+    public function getOffsetDateTime(): OffsetDateTime {
+        if (Obj4::validateOffsetDateTime($this->offsetDateTime))  {
+            return $this->offsetDateTime;
+        }
+        throw new Exception('never get to getOffsetDateTime Obj4::offsetDateTime');
+    }
+
+    /**
+     * @return OffsetDateTime
+     */
+    public static function sampleOffsetDateTime(): OffsetDateTime {
+        return OffsetDateTime::sample(); /*52:offsetDateTime*/
+    }
+
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return OffsetTime
+     */
+    public static function fromOffsetTime(stdClass $value): OffsetTime {
+        return OffsetTime::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toOffsetTime(): stdClass {
+        if (Obj4::validateOffsetTime($this->offsetTime))  {
+            return $this->offsetTime->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj4::offsetTime');
+    }
+
+    /**
+     * @param OffsetTime
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateOffsetTime(OffsetTime $value): bool {
+        $value->validate();
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return OffsetTime
+     */
+    public function getOffsetTime(): OffsetTime {
+        if (Obj4::validateOffsetTime($this->offsetTime))  {
+            return $this->offsetTime;
+        }
+        throw new Exception('never get to getOffsetTime Obj4::offsetTime');
+    }
+
+    /**
+     * @return OffsetTime
+     */
+    public static function sampleOffsetTime(): OffsetTime {
+        return OffsetTime::sample(); /*53:offsetTime*/
     }
 
     /**
@@ -32560,7 +32704,7 @@ class Obj4 {
      * @return Oneway
      */
     public static function sampleOneway(): Oneway {
-        return Oneway::sample(); /*51:oneway*/
+        return Oneway::sample(); /*54:oneway*/
     }
 
     /**
@@ -32608,7 +32752,7 @@ class Obj4 {
      * @return Open
      */
     public static function sampleOpen(): Open {
-        return Open::sample(); /*52:open*/
+        return Open::sample(); /*55:open*/
     }
 
     /**
@@ -32656,7 +32800,7 @@ class Obj4 {
      * @return Operator
      */
     public static function sampleOperator(): Operator {
-        return Operator::sample(); /*53:operator*/
+        return Operator::sample(); /*56:operator*/
     }
 
     /**
@@ -32704,7 +32848,7 @@ class Obj4 {
      * @return Optional
      */
     public static function sampleOptional(): Optional {
-        return Optional::sample(); /*54:optional*/
+        return Optional::sample(); /*57:optional*/
     }
 
     /**
@@ -32752,7 +32896,7 @@ class Obj4 {
      * @return OrClass
      */
     public static function sampleOr(): OrClass {
-        return OrClass::sample(); /*55:or*/
+        return OrClass::sample(); /*58:or*/
     }
 
     /**
@@ -32800,7 +32944,7 @@ class Obj4 {
      * @return OrEq
      */
     public static function sampleOrEq(): OrEq {
-        return OrEq::sample(); /*56:orEq*/
+        return OrEq::sample(); /*59:orEq*/
     }
 
     /**
@@ -32848,7 +32992,7 @@ class Obj4 {
      * @return Out
      */
     public static function sampleOut(): Out {
-        return Out::sample(); /*57:out*/
+        return Out::sample(); /*60:out*/
     }
 
     /**
@@ -32896,7 +33040,7 @@ class Obj4 {
      * @return OverrideClass
      */
     public static function sampleOverride(): OverrideClass {
-        return OverrideClass::sample(); /*58:override*/
+        return OverrideClass::sample(); /*61:override*/
     }
 
     /**
@@ -32944,7 +33088,7 @@ class Obj4 {
      * @return Package
      */
     public static function samplePackage(): Package {
-        return Package::sample(); /*59:package*/
+        return Package::sample(); /*62:package*/
     }
 
     /**
@@ -32992,7 +33136,7 @@ class Obj4 {
      * @return Params
      */
     public static function sampleParams(): Params {
-        return Params::sample(); /*60:params*/
+        return Params::sample(); /*63:params*/
     }
 
     /**
@@ -33040,7 +33184,7 @@ class Obj4 {
      * @return Pass
      */
     public static function samplePass(): Pass {
-        return Pass::sample(); /*61:pass*/
+        return Pass::sample(); /*64:pass*/
     }
 
     /**
@@ -33088,7 +33232,7 @@ class Obj4 {
      * @return Port
      */
     public static function samplePort(): Port {
-        return Port::sample(); /*62:port*/
+        return Port::sample(); /*65:port*/
     }
 
     /**
@@ -33136,7 +33280,7 @@ class Obj4 {
      * @return Postfix
      */
     public static function samplePostfix(): Postfix {
-        return Postfix::sample(); /*63:postfix*/
+        return Postfix::sample(); /*66:postfix*/
     }
 
     /**
@@ -33184,7 +33328,7 @@ class Obj4 {
      * @return Precedence
      */
     public static function samplePrecedence(): Precedence {
-        return Precedence::sample(); /*64:precedence*/
+        return Precedence::sample(); /*67:precedence*/
     }
 
     /**
@@ -33232,7 +33376,7 @@ class Obj4 {
      * @return Prefix
      */
     public static function samplePrefix(): Prefix {
-        return Prefix::sample(); /*65:prefix*/
+        return Prefix::sample(); /*68:prefix*/
     }
 
     /**
@@ -33280,7 +33424,7 @@ class Obj4 {
      * @return PrintClass
      */
     public static function samplePrint(): PrintClass {
-        return PrintClass::sample(); /*66:print*/
+        return PrintClass::sample(); /*69:print*/
     }
 
     /**
@@ -33328,7 +33472,7 @@ class Obj4 {
      * @return PrintMembers
      */
     public static function samplePrintMembers(): PrintMembers {
-        return PrintMembers::sample(); /*67:printMembers*/
+        return PrintMembers::sample(); /*70:printMembers*/
     }
 
     /**
@@ -33376,7 +33520,7 @@ class Obj4 {
      * @return Printf
      */
     public static function samplePrintf(): Printf {
-        return Printf::sample(); /*68:printf*/
+        return Printf::sample(); /*71:printf*/
     }
 
     /**
@@ -33424,7 +33568,7 @@ class Obj4 {
      * @return PrivateClass
      */
     public static function samplePrivate(): PrivateClass {
-        return PrivateClass::sample(); /*69:private*/
+        return PrivateClass::sample(); /*72:private*/
     }
 
     /**
@@ -33472,7 +33616,7 @@ class Obj4 {
      * @return ProtectedClass
      */
     public static function sampleProtected(): ProtectedClass {
-        return ProtectedClass::sample(); /*70:protected*/
+        return ProtectedClass::sample(); /*73:protected*/
     }
 
     /**
@@ -33520,7 +33664,7 @@ class Obj4 {
      * @return Protocol
      */
     public static function sampleProtocol(): Protocol {
-        return Protocol::sample(); /*71:protocol*/
+        return Protocol::sample(); /*74:protocol*/
     }
 
     /**
@@ -33568,7 +33712,7 @@ class Obj4 {
      * @return PublicClass
      */
     public static function samplePublic(): PublicClass {
-        return PublicClass::sample(); /*72:public*/
+        return PublicClass::sample(); /*75:public*/
     }
 
     /**
@@ -33616,7 +33760,7 @@ class Obj4 {
      * @return Quicktype
      */
     public static function sampleQuicktype(): Quicktype {
-        return Quicktype::sample(); /*73:quicktype*/
+        return Quicktype::sample(); /*76:quicktype*/
     }
 
     /**
@@ -33664,7 +33808,7 @@ class Obj4 {
      * @return Raise
      */
     public static function sampleRaise(): Raise {
-        return Raise::sample(); /*74:raise*/
+        return Raise::sample(); /*77:raise*/
     }
 
     /**
@@ -33712,7 +33856,7 @@ class Obj4 {
      * @return Range
      */
     public static function sampleRange(): Range {
-        return Range::sample(); /*75:range*/
+        return Range::sample(); /*78:range*/
     }
 
     /**
@@ -33760,7 +33904,7 @@ class Obj4 {
      * @return ReadonlyClass
      */
     public static function sampleReadonly(): ReadonlyClass {
-        return ReadonlyClass::sample(); /*76:readonly*/
+        return ReadonlyClass::sample(); /*79:readonly*/
     }
 
     /**
@@ -33808,7 +33952,7 @@ class Obj4 {
      * @return Ref
      */
     public static function sampleRef(): Ref {
-        return Ref::sample(); /*77:ref*/
+        return Ref::sample(); /*80:ref*/
     }
 
     /**
@@ -33856,7 +34000,7 @@ class Obj4 {
      * @return RegExp
      */
     public static function sampleRegExp(): RegExp {
-        return RegExp::sample(); /*78:regExp*/
+        return RegExp::sample(); /*81:regExp*/
     }
 
     /**
@@ -33904,7 +34048,7 @@ class Obj4 {
      * @return Register
      */
     public static function sampleRegister(): Register {
-        return Register::sample(); /*79:register*/
+        return Register::sample(); /*82:register*/
     }
 
     /**
@@ -33952,7 +34096,7 @@ class Obj4 {
      * @return ReinterpretCast
      */
     public static function sampleReinterpretCast(): ReinterpretCast {
-        return ReinterpretCast::sample(); /*80:reinterpretCast*/
+        return ReinterpretCast::sample(); /*83:reinterpretCast*/
     }
 
     /**
@@ -34000,7 +34144,7 @@ class Obj4 {
      * @return Repeat
      */
     public static function sampleRepeat(): Repeat {
-        return Repeat::sample(); /*81:repeat*/
+        return Repeat::sample(); /*84:repeat*/
     }
 
     /**
@@ -34048,7 +34192,7 @@ class Obj4 {
      * @return RequireClass
      */
     public static function sampleRequire(): RequireClass {
-        return RequireClass::sample(); /*82:require*/
+        return RequireClass::sample(); /*85:require*/
     }
 
     /**
@@ -34096,7 +34240,7 @@ class Obj4 {
      * @return Required
      */
     public static function sampleRequired(): Required {
-        return Required::sample(); /*83:required*/
+        return Required::sample(); /*86:required*/
     }
 
     /**
@@ -34144,7 +34288,7 @@ class Obj4 {
      * @return Requires
      */
     public static function sampleRequires(): Requires {
-        return Requires::sample(); /*84:requires*/
+        return Requires::sample(); /*87:requires*/
     }
 
     /**
@@ -34192,7 +34336,7 @@ class Obj4 {
      * @return Restrict
      */
     public static function sampleRestrict(): Restrict {
-        return Restrict::sample(); /*85:restrict*/
+        return Restrict::sample(); /*88:restrict*/
     }
 
     /**
@@ -34240,7 +34384,7 @@ class Obj4 {
      * @return Retain
      */
     public static function sampleRetain(): Retain {
-        return Retain::sample(); /*86:retain*/
+        return Retain::sample(); /*89:retain*/
     }
 
     /**
@@ -34288,7 +34432,7 @@ class Obj4 {
      * @return Rethrows
      */
     public static function sampleRethrows(): Rethrows {
-        return Rethrows::sample(); /*87:rethrows*/
+        return Rethrows::sample(); /*90:rethrows*/
     }
 
     /**
@@ -34336,7 +34480,7 @@ class Obj4 {
      * @return ReturnClass
      */
     public static function sampleReturn(): ReturnClass {
-        return ReturnClass::sample(); /*88:return*/
+        return ReturnClass::sample(); /*91:return*/
     }
 
     /**
@@ -34384,7 +34528,7 @@ class Obj4 {
      * @return Right
      */
     public static function sampleRight(): Right {
-        return Right::sample(); /*89:right*/
+        return Right::sample(); /*92:right*/
     }
 
     /**
@@ -34432,7 +34576,7 @@ class Obj4 {
      * @return RuntimeType
      */
     public static function sampleRuntimeType(): RuntimeType {
-        return RuntimeType::sample(); /*90:runtimeType*/
+        return RuntimeType::sample(); /*93:runtimeType*/
     }
 
     /**
@@ -34480,7 +34624,7 @@ class Obj4 {
      * @return S
      */
     public static function sampleS(): S {
-        return S::sample(); /*91:s*/
+        return S::sample(); /*94:s*/
     }
 
     /**
@@ -34528,151 +34672,7 @@ class Obj4 {
      * @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 Sbyte::sample(); /*95:sbyte*/
     }
 
     /**
@@ -34682,6 +34682,7 @@ class Obj4 {
     public function validate(): bool {
         return Obj4::validateDummy($this->dummy)
         || Obj4::validateNoSuchMethod($this->noSuchMethod)
+        || Obj4::validateNoexcept($this->noexcept)
         || Obj4::validateNonatomic($this->nonatomic)
         || Obj4::validateNone($this->none)
         || Obj4::validateNonlocal($this->nonlocal)
@@ -34700,6 +34701,8 @@ class Obj4 {
         || Obj4::validateObject($this->object)
         || Obj4::validateObjectMapper($this->objectMapper)
         || Obj4::validateOf($this->of)
+        || Obj4::validateOffsetDateTime($this->offsetDateTime)
+        || Obj4::validateOffsetTime($this->offsetTime)
         || Obj4::validateOneway($this->oneway)
         || Obj4::validateOpen($this->open)
         || Obj4::validateOperator($this->operator)
@@ -34741,10 +34744,7 @@ class Obj4 {
         || 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::validateSbyte($this->sbyte);
     }
 
     /**
@@ -34755,6 +34755,7 @@ class Obj4 {
         $out = new stdClass();
         $out->{'dummy'} = $this->toDummy();
         $out->{'noSuchMethod'} = $this->toNoSuchMethod();
+        $out->{'noexcept'} = $this->toNoexcept();
         $out->{'nonatomic'} = $this->toNonatomic();
         $out->{'None'} = $this->toNone();
         $out->{'nonlocal'} = $this->toNonlocal();
@@ -34773,6 +34774,8 @@ class Obj4 {
         $out->{'object'} = $this->toObject();
         $out->{'ObjectMapper'} = $this->toObjectMapper();
         $out->{'of'} = $this->toOf();
+        $out->{'OffsetDateTime'} = $this->toOffsetDateTime();
+        $out->{'OffsetTime'} = $this->toOffsetTime();
         $out->{'oneway'} = $this->toOneway();
         $out->{'open'} = $this->toOpen();
         $out->{'operator'} = $this->toOperator();
@@ -34815,9 +34818,6 @@ class Obj4 {
         $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;
     }
 
@@ -34833,6 +34833,9 @@ class Obj4 {
         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");
         }
@@ -34887,13 +34890,19 @@ class Obj4 {
         if (!property_exists($obj, 'of')) {
             throw new Exception("Missing required property");
         }
-        if (!property_exists($obj, 'oneway')) {
+        if (!property_exists($obj, 'OffsetDateTime')) {
             throw new Exception("Missing required property");
         }
-        if (!property_exists($obj, 'open')) {
+        if (!property_exists($obj, 'OffsetTime')) {
             throw new Exception("Missing required property");
         }
-        if (!property_exists($obj, 'operator')) {
+        if (!property_exists($obj, 'oneway')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'open')) {
+            throw new Exception("Missing required property");
+        }
+        if (!property_exists($obj, 'operator')) {
             throw new Exception("Missing required property");
         }
         if (!property_exists($obj, 'optional')) {
@@ -35013,18 +35022,10 @@ class Obj4 {
         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::fromNoSuchMethod($obj->{'noSuchMethod'})
+        ,Obj4::fromNoexcept($obj->{'noexcept'})
         ,Obj4::fromNonatomic($obj->{'nonatomic'})
         ,Obj4::fromNone($obj->{'None'})
         ,Obj4::fromNonlocal($obj->{'nonlocal'})
@@ -35043,6 +35044,8 @@ class Obj4 {
         ,Obj4::fromObject($obj->{'object'})
         ,Obj4::fromObjectMapper($obj->{'ObjectMapper'})
         ,Obj4::fromOf($obj->{'of'})
+        ,Obj4::fromOffsetDateTime($obj->{'OffsetDateTime'})
+        ,Obj4::fromOffsetTime($obj->{'OffsetTime'})
         ,Obj4::fromOneway($obj->{'oneway'})
         ,Obj4::fromOpen($obj->{'open'})
         ,Obj4::fromOperator($obj->{'operator'})
@@ -35085,9 +35088,6 @@ class Obj4 {
         ,Obj4::fromRuntimeType($obj->{'runtimeType'})
         ,Obj4::fromS($obj->{'s'})
         ,Obj4::fromSbyte($obj->{'sbyte'})
-        ,Obj4::fromSealed($obj->{'sealed'})
-        ,Obj4::fromSel($obj->{'SEL'})
-        ,Obj4::fromSelect($obj->{'select'})
         );
     }
 
@@ -35098,6 +35098,7 @@ class Obj4 {
         return new Obj4(
          Obj4::sampleDummy()
         ,Obj4::sampleNoSuchMethod()
+        ,Obj4::sampleNoexcept()
         ,Obj4::sampleNonatomic()
         ,Obj4::sampleNone()
         ,Obj4::sampleNonlocal()
@@ -35116,6 +35117,8 @@ class Obj4 {
         ,Obj4::sampleObject()
         ,Obj4::sampleObjectMapper()
         ,Obj4::sampleOf()
+        ,Obj4::sampleOffsetDateTime()
+        ,Obj4::sampleOffsetTime()
         ,Obj4::sampleOneway()
         ,Obj4::sampleOpen()
         ,Obj4::sampleOperator()
@@ -35158,9 +35161,6 @@ class Obj4 {
         ,Obj4::sampleRuntimeType()
         ,Obj4::sampleS()
         ,Obj4::sampleSbyte()
-        ,Obj4::sampleSealed()
-        ,Obj4::sampleSel()
-        ,Obj4::sampleSelect()
         );
     }
 }
@@ -35266,6 +35266,107 @@ class NoSuchMethod {
     }
 }
 
+// This is an autogenerated file:Noexcept
+
+class Noexcept {
+    private int $noexcept; // json:noexcept Required
+
+    /**
+     * @param int $noexcept
+     */
+    public function __construct(int $noexcept) {
+        $this->noexcept = $noexcept;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromNoexcept(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toNoexcept(): int {
+        if (Noexcept::validateNoexcept($this->noexcept))  {
+            return $this->noexcept; /*int*/
+        }
+        throw new Exception('never get to this Noexcept::noexcept');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateNoexcept(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getNoexcept(): int {
+        if (Noexcept::validateNoexcept($this->noexcept))  {
+            return $this->noexcept;
+        }
+        throw new Exception('never get to getNoexcept Noexcept::noexcept');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleNoexcept(): int {
+        return 31; /*31:noexcept*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Noexcept::validateNoexcept($this->noexcept);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'noexcept'} = $this->toNoexcept();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Noexcept
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Noexcept {
+        if (!property_exists($obj, 'noexcept')) {
+            throw new Exception("Missing required property");
+        }
+        return new Noexcept(
+         Noexcept::fromNoexcept($obj->{'noexcept'})
+        );
+    }
+
+    /**
+     * @return Noexcept
+     */
+    public static function sample(): Noexcept {
+        return new Noexcept(
+         Noexcept::sampleNoexcept()
+        );
+    }
+}
+
 // This is an autogenerated file:Nonatomic
 
 class Nonatomic {
@@ -37084,16 +37185,16 @@ class Of {
     }
 }
 
-// This is an autogenerated file:Oneway
+// This is an autogenerated file:OffsetDateTime
 
-class Oneway {
-    private int $oneway; // json:oneway Required
+class OffsetDateTime {
+    private int $offsetDateTime; // json:OffsetDateTime Required
 
     /**
-     * @param int $oneway
+     * @param int $offsetDateTime
      */
-    public function __construct(int $oneway) {
-        $this->oneway = $oneway;
+    public function __construct(int $offsetDateTime) {
+        $this->offsetDateTime = $offsetDateTime;
     }
 
     /**
@@ -37101,7 +37202,7 @@ class Oneway {
      * @throws Exception
      * @return int
      */
-    public static function fromOneway(int $value): int {
+    public static function fromOffsetDateTime(int $value): int {
         return $value; /*int*/
     }
 
@@ -37109,11 +37210,11 @@ class Oneway {
      * @throws Exception
      * @return int
      */
-    public function toOneway(): int {
-        if (Oneway::validateOneway($this->oneway))  {
-            return $this->oneway; /*int*/
+    public function toOffsetDateTime(): int {
+        if (OffsetDateTime::validateOffsetDateTime($this->offsetDateTime))  {
+            return $this->offsetDateTime; /*int*/
         }
-        throw new Exception('never get to this Oneway::oneway');
+        throw new Exception('never get to this OffsetDateTime::offsetDateTime');
     }
 
     /**
@@ -37121,7 +37222,7 @@ class Oneway {
      * @return bool
      * @throws Exception
      */
-    public static function validateOneway(int $value): bool {
+    public static function validateOffsetDateTime(int $value): bool {
         return true;
     }
 
@@ -37129,18 +37230,18 @@ class Oneway {
      * @throws Exception
      * @return int
      */
-    public function getOneway(): int {
-        if (Oneway::validateOneway($this->oneway))  {
-            return $this->oneway;
+    public function getOffsetDateTime(): int {
+        if (OffsetDateTime::validateOffsetDateTime($this->offsetDateTime))  {
+            return $this->offsetDateTime;
         }
-        throw new Exception('never get to getOneway Oneway::oneway');
+        throw new Exception('never get to getOffsetDateTime OffsetDateTime::offsetDateTime');
     }
 
     /**
      * @return int
      */
-    public static function sampleOneway(): int {
-        return 31; /*31:oneway*/
+    public static function sampleOffsetDateTime(): int {
+        return 31; /*31:offsetDateTime*/
     }
 
     /**
@@ -37148,7 +37249,7 @@ class Oneway {
      * @return bool
      */
     public function validate(): bool {
-        return Oneway::validateOneway($this->oneway);
+        return OffsetDateTime::validateOffsetDateTime($this->offsetDateTime);
     }
 
     /**
@@ -37157,44 +37258,44 @@ class Oneway {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'oneway'} = $this->toOneway();
+        $out->{'OffsetDateTime'} = $this->toOffsetDateTime();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Oneway
+     * @return OffsetDateTime
      * @throws Exception
      */
-    public static function from(stdClass $obj): Oneway {
-        if (!property_exists($obj, 'oneway')) {
+    public static function from(stdClass $obj): OffsetDateTime {
+        if (!property_exists($obj, 'OffsetDateTime')) {
             throw new Exception("Missing required property");
         }
-        return new Oneway(
-         Oneway::fromOneway($obj->{'oneway'})
+        return new OffsetDateTime(
+         OffsetDateTime::fromOffsetDateTime($obj->{'OffsetDateTime'})
         );
     }
 
     /**
-     * @return Oneway
+     * @return OffsetDateTime
      */
-    public static function sample(): Oneway {
-        return new Oneway(
-         Oneway::sampleOneway()
+    public static function sample(): OffsetDateTime {
+        return new OffsetDateTime(
+         OffsetDateTime::sampleOffsetDateTime()
         );
     }
 }
 
-// This is an autogenerated file:Open
+// This is an autogenerated file:OffsetTime
 
-class Open {
-    private int $open; // json:open Required
+class OffsetTime {
+    private int $offsetTime; // json:OffsetTime Required
 
     /**
-     * @param int $open
+     * @param int $offsetTime
      */
-    public function __construct(int $open) {
-        $this->open = $open;
+    public function __construct(int $offsetTime) {
+        $this->offsetTime = $offsetTime;
     }
 
     /**
@@ -37202,7 +37303,7 @@ class Open {
      * @throws Exception
      * @return int
      */
-    public static function fromOpen(int $value): int {
+    public static function fromOffsetTime(int $value): int {
         return $value; /*int*/
     }
 
@@ -37210,11 +37311,11 @@ class Open {
      * @throws Exception
      * @return int
      */
-    public function toOpen(): int {
-        if (Open::validateOpen($this->open))  {
-            return $this->open; /*int*/
+    public function toOffsetTime(): int {
+        if (OffsetTime::validateOffsetTime($this->offsetTime))  {
+            return $this->offsetTime; /*int*/
         }
-        throw new Exception('never get to this Open::open');
+        throw new Exception('never get to this OffsetTime::offsetTime');
     }
 
     /**
@@ -37222,7 +37323,7 @@ class Open {
      * @return bool
      * @throws Exception
      */
-    public static function validateOpen(int $value): bool {
+    public static function validateOffsetTime(int $value): bool {
         return true;
     }
 
@@ -37230,18 +37331,18 @@ class Open {
      * @throws Exception
      * @return int
      */
-    public function getOpen(): int {
-        if (Open::validateOpen($this->open))  {
-            return $this->open;
+    public function getOffsetTime(): int {
+        if (OffsetTime::validateOffsetTime($this->offsetTime))  {
+            return $this->offsetTime;
         }
-        throw new Exception('never get to getOpen Open::open');
+        throw new Exception('never get to getOffsetTime OffsetTime::offsetTime');
     }
 
     /**
      * @return int
      */
-    public static function sampleOpen(): int {
-        return 31; /*31:open*/
+    public static function sampleOffsetTime(): int {
+        return 31; /*31:offsetTime*/
     }
 
     /**
@@ -37249,7 +37350,7 @@ class Open {
      * @return bool
      */
     public function validate(): bool {
-        return Open::validateOpen($this->open);
+        return OffsetTime::validateOffsetTime($this->offsetTime);
     }
 
     /**
@@ -37258,44 +37359,44 @@ class Open {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'open'} = $this->toOpen();
+        $out->{'OffsetTime'} = $this->toOffsetTime();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Open
+     * @return OffsetTime
      * @throws Exception
      */
-    public static function from(stdClass $obj): Open {
-        if (!property_exists($obj, 'open')) {
+    public static function from(stdClass $obj): OffsetTime {
+        if (!property_exists($obj, 'OffsetTime')) {
             throw new Exception("Missing required property");
         }
-        return new Open(
-         Open::fromOpen($obj->{'open'})
+        return new OffsetTime(
+         OffsetTime::fromOffsetTime($obj->{'OffsetTime'})
         );
     }
 
     /**
-     * @return Open
+     * @return OffsetTime
      */
-    public static function sample(): Open {
-        return new Open(
-         Open::sampleOpen()
+    public static function sample(): OffsetTime {
+        return new OffsetTime(
+         OffsetTime::sampleOffsetTime()
         );
     }
 }
 
-// This is an autogenerated file:Operator
+// This is an autogenerated file:Oneway
 
-class Operator {
-    private int $operator; // json:operator Required
+class Oneway {
+    private int $oneway; // json:oneway Required
 
     /**
-     * @param int $operator
+     * @param int $oneway
      */
-    public function __construct(int $operator) {
-        $this->operator = $operator;
+    public function __construct(int $oneway) {
+        $this->oneway = $oneway;
     }
 
     /**
@@ -37303,7 +37404,7 @@ class Operator {
      * @throws Exception
      * @return int
      */
-    public static function fromOperator(int $value): int {
+    public static function fromOneway(int $value): int {
         return $value; /*int*/
     }
 
@@ -37311,11 +37412,11 @@ class Operator {
      * @throws Exception
      * @return int
      */
-    public function toOperator(): int {
-        if (Operator::validateOperator($this->operator))  {
-            return $this->operator; /*int*/
+    public function toOneway(): int {
+        if (Oneway::validateOneway($this->oneway))  {
+            return $this->oneway; /*int*/
         }
-        throw new Exception('never get to this Operator::operator');
+        throw new Exception('never get to this Oneway::oneway');
     }
 
     /**
@@ -37323,7 +37424,7 @@ class Operator {
      * @return bool
      * @throws Exception
      */
-    public static function validateOperator(int $value): bool {
+    public static function validateOneway(int $value): bool {
         return true;
     }
 
@@ -37331,18 +37432,18 @@ class Operator {
      * @throws Exception
      * @return int
      */
-    public function getOperator(): int {
-        if (Operator::validateOperator($this->operator))  {
-            return $this->operator;
+    public function getOneway(): int {
+        if (Oneway::validateOneway($this->oneway))  {
+            return $this->oneway;
         }
-        throw new Exception('never get to getOperator Operator::operator');
+        throw new Exception('never get to getOneway Oneway::oneway');
     }
 
     /**
      * @return int
      */
-    public static function sampleOperator(): int {
-        return 31; /*31:operator*/
+    public static function sampleOneway(): int {
+        return 31; /*31:oneway*/
     }
 
     /**
@@ -37350,7 +37451,7 @@ class Operator {
      * @return bool
      */
     public function validate(): bool {
-        return Operator::validateOperator($this->operator);
+        return Oneway::validateOneway($this->oneway);
     }
 
     /**
@@ -37359,44 +37460,44 @@ class Operator {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'operator'} = $this->toOperator();
+        $out->{'oneway'} = $this->toOneway();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Operator
+     * @return Oneway
      * @throws Exception
      */
-    public static function from(stdClass $obj): Operator {
-        if (!property_exists($obj, 'operator')) {
+    public static function from(stdClass $obj): Oneway {
+        if (!property_exists($obj, 'oneway')) {
             throw new Exception("Missing required property");
         }
-        return new Operator(
-         Operator::fromOperator($obj->{'operator'})
+        return new Oneway(
+         Oneway::fromOneway($obj->{'oneway'})
         );
     }
 
     /**
-     * @return Operator
+     * @return Oneway
      */
-    public static function sample(): Operator {
-        return new Operator(
-         Operator::sampleOperator()
+    public static function sample(): Oneway {
+        return new Oneway(
+         Oneway::sampleOneway()
         );
     }
 }
 
-// This is an autogenerated file:Optional
+// This is an autogenerated file:Open
 
-class Optional {
-    private int $optional; // json:optional Required
+class Open {
+    private int $open; // json:open Required
 
     /**
-     * @param int $optional
+     * @param int $open
      */
-    public function __construct(int $optional) {
-        $this->optional = $optional;
+    public function __construct(int $open) {
+        $this->open = $open;
     }
 
     /**
@@ -37404,7 +37505,7 @@ class Optional {
      * @throws Exception
      * @return int
      */
-    public static function fromOptional(int $value): int {
+    public static function fromOpen(int $value): int {
         return $value; /*int*/
     }
 
@@ -37412,11 +37513,11 @@ class Optional {
      * @throws Exception
      * @return int
      */
-    public function toOptional(): int {
-        if (Optional::validateOptional($this->optional))  {
-            return $this->optional; /*int*/
+    public function toOpen(): int {
+        if (Open::validateOpen($this->open))  {
+            return $this->open; /*int*/
         }
-        throw new Exception('never get to this Optional::optional');
+        throw new Exception('never get to this Open::open');
     }
 
     /**
@@ -37424,7 +37525,209 @@ class Optional {
      * @return bool
      * @throws Exception
      */
-    public static function validateOptional(int $value): bool {
+    public static function validateOpen(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getOpen(): int {
+        if (Open::validateOpen($this->open))  {
+            return $this->open;
+        }
+        throw new Exception('never get to getOpen Open::open');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleOpen(): int {
+        return 31; /*31:open*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Open::validateOpen($this->open);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'open'} = $this->toOpen();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Open
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Open {
+        if (!property_exists($obj, 'open')) {
+            throw new Exception("Missing required property");
+        }
+        return new Open(
+         Open::fromOpen($obj->{'open'})
+        );
+    }
+
+    /**
+     * @return Open
+     */
+    public static function sample(): Open {
+        return new Open(
+         Open::sampleOpen()
+        );
+    }
+}
+
+// This is an autogenerated file:Operator
+
+class Operator {
+    private int $operator; // json:operator Required
+
+    /**
+     * @param int $operator
+     */
+    public function __construct(int $operator) {
+        $this->operator = $operator;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromOperator(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toOperator(): int {
+        if (Operator::validateOperator($this->operator))  {
+            return $this->operator; /*int*/
+        }
+        throw new Exception('never get to this Operator::operator');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateOperator(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getOperator(): int {
+        if (Operator::validateOperator($this->operator))  {
+            return $this->operator;
+        }
+        throw new Exception('never get to getOperator Operator::operator');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleOperator(): int {
+        return 31; /*31:operator*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Operator::validateOperator($this->operator);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'operator'} = $this->toOperator();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Operator
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Operator {
+        if (!property_exists($obj, 'operator')) {
+            throw new Exception("Missing required property");
+        }
+        return new Operator(
+         Operator::fromOperator($obj->{'operator'})
+        );
+    }
+
+    /**
+     * @return Operator
+     */
+    public static function sample(): Operator {
+        return new Operator(
+         Operator::sampleOperator()
+        );
+    }
+}
+
+// This is an autogenerated file:Optional
+
+class Optional {
+    private int $optional; // json:optional Required
+
+    /**
+     * @param int $optional
+     */
+    public function __construct(int $optional) {
+        $this->optional = $optional;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromOptional(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toOptional(): int {
+        if (Optional::validateOptional($this->optional))  {
+            return $this->optional; /*int*/
+        }
+        throw new Exception('never get to this Optional::optional');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateOptional(int $value): bool {
         return true;
     }
 
@@ -41329,310 +41632,7 @@ class Sbyte {
     }
 }
 
-// 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:Obj5
+// This is an autogenerated file:Obj5
 
 class Obj5 {
     private int $dummy; // json:dummy Required
@@ -41642,6 +41642,9 @@ class Obj5 {
     private Obj5True $obj5True; // json:true Required
     private TypeClass $obj5Type; // json:type Required
     private PrimitiveKind $primitiveKind; // json:PrimitiveKind 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 SerialDescriptor $serialDescriptor; // json:SerialDescriptor Required
@@ -41696,10 +41699,7 @@ class Obj5 {
     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 UseSerializers $useSerializers; // json:UseSerializers Required
-    private Ushort $ushort; // json:ushort Required
 
     /**
      * @param int $dummy
@@ -41709,6 +41709,9 @@ class Obj5 {
      * @param Obj5True $obj5True
      * @param TypeClass $obj5Type
      * @param PrimitiveKind $primitiveKind
+     * @param Sealed $sealed
+     * @param Sel $sel
+     * @param Select $select
      * @param SelfClass $self
      * @param Sendable $sendable
      * @param SerialDescriptor $serialDescriptor
@@ -41763,12 +41766,9 @@ class Obj5 {
      * @param Undefined $undefined
      * @param Union $union
      * @param Unowned $unowned
-     * @param Unsafe $unsafe
-     * @param Unsigned $unsigned
      * @param UseSerializers $useSerializers
-     * @param Ushort $ushort
      */
-    public function __construct(int $dummy, KSerializer $kSerializer, Obj5Self $obj5Self, This $obj5This, Obj5True $obj5True, TypeClass $obj5Type, PrimitiveKind $primitiveKind, SelfClass $self, Sendable $sendable, SerialDescriptor $serialDescriptor, SerialName $serialName, SerializableClass $serializable, Serialize $serialize, SerializerProvider $serializerProvider, Set $set, Short $short, Signed $signed, SimpleModule $simpleModule, Sizeof $sizeof, Stackalloc $stackalloc, Standards $standards, StaticClass $static, StaticAssert $staticAssert, StaticCast $staticCast, StdDeserializer $stdDeserializer, StdSerializer $stdSerializer, Strictfp $strictfp, StringClass $string, Struct $struct, Subscript $subscript, Super $super, SwitchClass $switch, Symbol $symbol, Synchronized $synchronized, System $system, Template $template, Then $then, ThreadLocal $threadLocal, ThrowClass $throw, Throws $throws, TimeOnly $timeOnly, TimeOnlyConverter $timeOnlyConverter, TimeZone $timeZone, ToJSON $toJSON, ToString $toString, TopLevelClass $topLevel, Transient $transient, TrueClass $true, TryClass $try, Type $type, Typealias $typealias, Typedef $typedef, Typeid $typeid, Typename $typename, Typeof $typeof, Uint $uint, Ulong $ulong, Unchecked $unchecked, Undefined $undefined, Union $union, Unowned $unowned, Unsafe $unsafe, Unsigned $unsigned, UseSerializers $useSerializers, Ushort $ushort) {
+    public function __construct(int $dummy, KSerializer $kSerializer, Obj5Self $obj5Self, This $obj5This, Obj5True $obj5True, TypeClass $obj5Type, PrimitiveKind $primitiveKind, Sealed $sealed, Sel $sel, Select $select, SelfClass $self, Sendable $sendable, SerialDescriptor $serialDescriptor, SerialName $serialName, SerializableClass $serializable, Serialize $serialize, SerializerProvider $serializerProvider, Set $set, Short $short, Signed $signed, SimpleModule $simpleModule, Sizeof $sizeof, Stackalloc $stackalloc, Standards $standards, StaticClass $static, StaticAssert $staticAssert, StaticCast $staticCast, StdDeserializer $stdDeserializer, StdSerializer $stdSerializer, Strictfp $strictfp, StringClass $string, Struct $struct, Subscript $subscript, Super $super, SwitchClass $switch, Symbol $symbol, Synchronized $synchronized, System $system, Template $template, Then $then, ThreadLocal $threadLocal, ThrowClass $throw, Throws $throws, TimeOnly $timeOnly, TimeOnlyConverter $timeOnlyConverter, TimeZone $timeZone, ToJSON $toJSON, ToString $toString, TopLevelClass $topLevel, Transient $transient, TrueClass $true, TryClass $try, Type $type, Typealias $typealias, Typedef $typedef, Typeid $typeid, Typename $typename, Typeof $typeof, Uint $uint, Ulong $ulong, Unchecked $unchecked, Undefined $undefined, Union $union, Unowned $unowned, UseSerializers $useSerializers) {
         $this->dummy = $dummy;
         $this->kSerializer = $kSerializer;
         $this->obj5Self = $obj5Self;
@@ -41776,6 +41776,9 @@ class Obj5 {
         $this->obj5True = $obj5True;
         $this->obj5Type = $obj5Type;
         $this->primitiveKind = $primitiveKind;
+        $this->sealed = $sealed;
+        $this->sel = $sel;
+        $this->select = $select;
         $this->self = $self;
         $this->sendable = $sendable;
         $this->serialDescriptor = $serialDescriptor;
@@ -41830,10 +41833,7 @@ class Obj5 {
         $this->undefined = $undefined;
         $this->union = $union;
         $this->unowned = $unowned;
-        $this->unsafe = $unsafe;
-        $this->unsigned = $unsigned;
         $this->useSerializers = $useSerializers;
-        $this->ushort = $ushort;
     }
 
     /**
@@ -42171,6 +42171,150 @@ class Obj5 {
         return PrimitiveKind::sample(); /*37:primitiveKind*/
     }
 
+    /**
+     * @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(); /*38: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(); /*39: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(); /*40:select*/
+    }
+
     /**
      * @param stdClass $value
      * @throws Exception
@@ -42216,7 +42360,7 @@ class Obj5 {
      * @return SelfClass
      */
     public static function sampleSelf(): SelfClass {
-        return SelfClass::sample(); /*38:self*/
+        return SelfClass::sample(); /*41:self*/
     }
 
     /**
@@ -42264,7 +42408,7 @@ class Obj5 {
      * @return Sendable
      */
     public static function sampleSendable(): Sendable {
-        return Sendable::sample(); /*39:sendable*/
+        return Sendable::sample(); /*42:sendable*/
     }
 
     /**
@@ -42312,7 +42456,7 @@ class Obj5 {
      * @return SerialDescriptor
      */
     public static function sampleSerialDescriptor(): SerialDescriptor {
-        return SerialDescriptor::sample(); /*40:serialDescriptor*/
+        return SerialDescriptor::sample(); /*43:serialDescriptor*/
     }
 
     /**
@@ -42360,7 +42504,7 @@ class Obj5 {
      * @return SerialName
      */
     public static function sampleSerialName(): SerialName {
-        return SerialName::sample(); /*41:serialName*/
+        return SerialName::sample(); /*44:serialName*/
     }
 
     /**
@@ -42408,7 +42552,7 @@ class Obj5 {
      * @return SerializableClass
      */
     public static function sampleSerializable(): SerializableClass {
-        return SerializableClass::sample(); /*42:serializable*/
+        return SerializableClass::sample(); /*45:serializable*/
     }
 
     /**
@@ -42456,7 +42600,7 @@ class Obj5 {
      * @return Serialize
      */
     public static function sampleSerialize(): Serialize {
-        return Serialize::sample(); /*43:serialize*/
+        return Serialize::sample(); /*46:serialize*/
     }
 
     /**
@@ -42504,7 +42648,7 @@ class Obj5 {
      * @return SerializerProvider
      */
     public static function sampleSerializerProvider(): SerializerProvider {
-        return SerializerProvider::sample(); /*44:serializerProvider*/
+        return SerializerProvider::sample(); /*47:serializerProvider*/
     }
 
     /**
@@ -42552,7 +42696,7 @@ class Obj5 {
      * @return Set
      */
     public static function sampleSet(): Set {
-        return Set::sample(); /*45:set*/
+        return Set::sample(); /*48:set*/
     }
 
     /**
@@ -42600,7 +42744,7 @@ class Obj5 {
      * @return Short
      */
     public static function sampleShort(): Short {
-        return Short::sample(); /*46:short*/
+        return Short::sample(); /*49:short*/
     }
 
     /**
@@ -42648,7 +42792,7 @@ class Obj5 {
      * @return Signed
      */
     public static function sampleSigned(): Signed {
-        return Signed::sample(); /*47:signed*/
+        return Signed::sample(); /*50:signed*/
     }
 
     /**
@@ -42696,7 +42840,7 @@ class Obj5 {
      * @return SimpleModule
      */
     public static function sampleSimpleModule(): SimpleModule {
-        return SimpleModule::sample(); /*48:simpleModule*/
+        return SimpleModule::sample(); /*51:simpleModule*/
     }
 
     /**
@@ -42744,7 +42888,7 @@ class Obj5 {
      * @return Sizeof
      */
     public static function sampleSizeof(): Sizeof {
-        return Sizeof::sample(); /*49:sizeof*/
+        return Sizeof::sample(); /*52:sizeof*/
     }
 
     /**
@@ -42792,7 +42936,7 @@ class Obj5 {
      * @return Stackalloc
      */
     public static function sampleStackalloc(): Stackalloc {
-        return Stackalloc::sample(); /*50:stackalloc*/
+        return Stackalloc::sample(); /*53:stackalloc*/
     }
 
     /**
@@ -42840,7 +42984,7 @@ class Obj5 {
      * @return Standards
      */
     public static function sampleStandards(): Standards {
-        return Standards::sample(); /*51:standards*/
+        return Standards::sample(); /*54:standards*/
     }
 
     /**
@@ -42888,7 +43032,7 @@ class Obj5 {
      * @return StaticClass
      */
     public static function sampleStatic(): StaticClass {
-        return StaticClass::sample(); /*52:static*/
+        return StaticClass::sample(); /*55:static*/
     }
 
     /**
@@ -42936,7 +43080,7 @@ class Obj5 {
      * @return StaticAssert
      */
     public static function sampleStaticAssert(): StaticAssert {
-        return StaticAssert::sample(); /*53:staticAssert*/
+        return StaticAssert::sample(); /*56:staticAssert*/
     }
 
     /**
@@ -42984,7 +43128,7 @@ class Obj5 {
      * @return StaticCast
      */
     public static function sampleStaticCast(): StaticCast {
-        return StaticCast::sample(); /*54:staticCast*/
+        return StaticCast::sample(); /*57:staticCast*/
     }
 
     /**
@@ -43032,7 +43176,7 @@ class Obj5 {
      * @return StdDeserializer
      */
     public static function sampleStdDeserializer(): StdDeserializer {
-        return StdDeserializer::sample(); /*55:stdDeserializer*/
+        return StdDeserializer::sample(); /*58:stdDeserializer*/
     }
 
     /**
@@ -43080,7 +43224,7 @@ class Obj5 {
      * @return StdSerializer
      */
     public static function sampleStdSerializer(): StdSerializer {
-        return StdSerializer::sample(); /*56:stdSerializer*/
+        return StdSerializer::sample(); /*59:stdSerializer*/
     }
 
     /**
@@ -43128,7 +43272,7 @@ class Obj5 {
      * @return Strictfp
      */
     public static function sampleStrictfp(): Strictfp {
-        return Strictfp::sample(); /*57:strictfp*/
+        return Strictfp::sample(); /*60:strictfp*/
     }
 
     /**
@@ -43176,7 +43320,7 @@ class Obj5 {
      * @return StringClass
      */
     public static function sampleString(): StringClass {
-        return StringClass::sample(); /*58:string*/
+        return StringClass::sample(); /*61:string*/
     }
 
     /**
@@ -43224,7 +43368,7 @@ class Obj5 {
      * @return Struct
      */
     public static function sampleStruct(): Struct {
-        return Struct::sample(); /*59:struct*/
+        return Struct::sample(); /*62:struct*/
     }
 
     /**
@@ -43272,7 +43416,7 @@ class Obj5 {
      * @return Subscript
      */
     public static function sampleSubscript(): Subscript {
-        return Subscript::sample(); /*60:subscript*/
+        return Subscript::sample(); /*63:subscript*/
     }
 
     /**
@@ -43320,7 +43464,7 @@ class Obj5 {
      * @return Super
      */
     public static function sampleSuper(): Super {
-        return Super::sample(); /*61:super*/
+        return Super::sample(); /*64:super*/
     }
 
     /**
@@ -43368,7 +43512,7 @@ class Obj5 {
      * @return SwitchClass
      */
     public static function sampleSwitch(): SwitchClass {
-        return SwitchClass::sample(); /*62:switch*/
+        return SwitchClass::sample(); /*65:switch*/
     }
 
     /**
@@ -43416,7 +43560,7 @@ class Obj5 {
      * @return Symbol
      */
     public static function sampleSymbol(): Symbol {
-        return Symbol::sample(); /*63:symbol*/
+        return Symbol::sample(); /*66:symbol*/
     }
 
     /**
@@ -43464,7 +43608,7 @@ class Obj5 {
      * @return Synchronized
      */
     public static function sampleSynchronized(): Synchronized {
-        return Synchronized::sample(); /*64:synchronized*/
+        return Synchronized::sample(); /*67:synchronized*/
     }
 
     /**
@@ -43512,7 +43656,7 @@ class Obj5 {
      * @return System
      */
     public static function sampleSystem(): System {
-        return System::sample(); /*65:system*/
+        return System::sample(); /*68:system*/
     }
 
     /**
@@ -43560,7 +43704,7 @@ class Obj5 {
      * @return Template
      */
     public static function sampleTemplate(): Template {
-        return Template::sample(); /*66:template*/
+        return Template::sample(); /*69:template*/
     }
 
     /**
@@ -43608,7 +43752,7 @@ class Obj5 {
      * @return Then
      */
     public static function sampleThen(): Then {
-        return Then::sample(); /*67:then*/
+        return Then::sample(); /*70:then*/
     }
 
     /**
@@ -43656,7 +43800,7 @@ class Obj5 {
      * @return ThreadLocal
      */
     public static function sampleThreadLocal(): ThreadLocal {
-        return ThreadLocal::sample(); /*68:threadLocal*/
+        return ThreadLocal::sample(); /*71:threadLocal*/
     }
 
     /**
@@ -43704,7 +43848,7 @@ class Obj5 {
      * @return ThrowClass
      */
     public static function sampleThrow(): ThrowClass {
-        return ThrowClass::sample(); /*69:throw*/
+        return ThrowClass::sample(); /*72:throw*/
     }
 
     /**
@@ -43752,7 +43896,7 @@ class Obj5 {
      * @return Throws
      */
     public static function sampleThrows(): Throws {
-        return Throws::sample(); /*70:throws*/
+        return Throws::sample(); /*73:throws*/
     }
 
     /**
@@ -43800,7 +43944,7 @@ class Obj5 {
      * @return TimeOnly
      */
     public static function sampleTimeOnly(): TimeOnly {
-        return TimeOnly::sample(); /*71:timeOnly*/
+        return TimeOnly::sample(); /*74:timeOnly*/
     }
 
     /**
@@ -43848,7 +43992,7 @@ class Obj5 {
      * @return TimeOnlyConverter
      */
     public static function sampleTimeOnlyConverter(): TimeOnlyConverter {
-        return TimeOnlyConverter::sample(); /*72:timeOnlyConverter*/
+        return TimeOnlyConverter::sample(); /*75:timeOnlyConverter*/
     }
 
     /**
@@ -43896,7 +44040,7 @@ class Obj5 {
      * @return TimeZone
      */
     public static function sampleTimeZone(): TimeZone {
-        return TimeZone::sample(); /*73:timeZone*/
+        return TimeZone::sample(); /*76:timeZone*/
     }
 
     /**
@@ -43944,7 +44088,7 @@ class Obj5 {
      * @return ToJSON
      */
     public static function sampleToJSON(): ToJSON {
-        return ToJSON::sample(); /*74:toJSON*/
+        return ToJSON::sample(); /*77:toJSON*/
     }
 
     /**
@@ -43992,7 +44136,7 @@ class Obj5 {
      * @return ToString
      */
     public static function sampleToString(): ToString {
-        return ToString::sample(); /*75:toString*/
+        return ToString::sample(); /*78:toString*/
     }
 
     /**
@@ -44040,7 +44184,7 @@ class Obj5 {
      * @return TopLevelClass
      */
     public static function sampleTopLevel(): TopLevelClass {
-        return TopLevelClass::sample(); /*76:topLevel*/
+        return TopLevelClass::sample(); /*79:topLevel*/
     }
 
     /**
@@ -44088,7 +44232,7 @@ class Obj5 {
      * @return Transient
      */
     public static function sampleTransient(): Transient {
-        return Transient::sample(); /*77:transient*/
+        return Transient::sample(); /*80:transient*/
     }
 
     /**
@@ -44136,7 +44280,7 @@ class Obj5 {
      * @return TrueClass
      */
     public static function sampleTrue(): TrueClass {
-        return TrueClass::sample(); /*78:true*/
+        return TrueClass::sample(); /*81:true*/
     }
 
     /**
@@ -44184,7 +44328,7 @@ class Obj5 {
      * @return TryClass
      */
     public static function sampleTry(): TryClass {
-        return TryClass::sample(); /*79:try*/
+        return TryClass::sample(); /*82:try*/
     }
 
     /**
@@ -44232,7 +44376,7 @@ class Obj5 {
      * @return Type
      */
     public static function sampleType(): Type {
-        return Type::sample(); /*80:type*/
+        return Type::sample(); /*83:type*/
     }
 
     /**
@@ -44280,7 +44424,7 @@ class Obj5 {
      * @return Typealias
      */
     public static function sampleTypealias(): Typealias {
-        return Typealias::sample(); /*81:typealias*/
+        return Typealias::sample(); /*84:typealias*/
     }
 
     /**
@@ -44328,7 +44472,7 @@ class Obj5 {
      * @return Typedef
      */
     public static function sampleTypedef(): Typedef {
-        return Typedef::sample(); /*82:typedef*/
+        return Typedef::sample(); /*85:typedef*/
     }
 
     /**
@@ -44376,7 +44520,7 @@ class Obj5 {
      * @return Typeid
      */
     public static function sampleTypeid(): Typeid {
-        return Typeid::sample(); /*83:typeid*/
+        return Typeid::sample(); /*86:typeid*/
     }
 
     /**
@@ -44424,7 +44568,7 @@ class Obj5 {
      * @return Typename
      */
     public static function sampleTypename(): Typename {
-        return Typename::sample(); /*84:typename*/
+        return Typename::sample(); /*87:typename*/
     }
 
     /**
@@ -44472,7 +44616,7 @@ class Obj5 {
      * @return Typeof
      */
     public static function sampleTypeof(): Typeof {
-        return Typeof::sample(); /*85:typeof*/
+        return Typeof::sample(); /*88:typeof*/
     }
 
     /**
@@ -44520,7 +44664,7 @@ class Obj5 {
      * @return Uint
      */
     public static function sampleUint(): Uint {
-        return Uint::sample(); /*86:uint*/
+        return Uint::sample(); /*89:uint*/
     }
 
     /**
@@ -44568,7 +44712,7 @@ class Obj5 {
      * @return Ulong
      */
     public static function sampleUlong(): Ulong {
-        return Ulong::sample(); /*87:ulong*/
+        return Ulong::sample(); /*90:ulong*/
     }
 
     /**
@@ -44616,7 +44760,7 @@ class Obj5 {
      * @return Unchecked
      */
     public static function sampleUnchecked(): Unchecked {
-        return Unchecked::sample(); /*88:unchecked*/
+        return Unchecked::sample(); /*91:unchecked*/
     }
 
     /**
@@ -44664,7 +44808,7 @@ class Obj5 {
      * @return Undefined
      */
     public static function sampleUndefined(): Undefined {
-        return Undefined::sample(); /*89:undefined*/
+        return Undefined::sample(); /*92:undefined*/
     }
 
     /**
@@ -44712,7 +44856,7 @@ class Obj5 {
      * @return Union
      */
     public static function sampleUnion(): Union {
-        return Union::sample(); /*90:union*/
+        return Union::sample(); /*93:union*/
     }
 
     /**
@@ -44760,103 +44904,7 @@ class Obj5 {
      * @return Unowned
      */
     public static function sampleUnowned(): Unowned {
-        return Unowned::sample(); /*91: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(); /*92: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(); /*93:unsigned*/
+        return Unowned::sample(); /*94:unowned*/
     }
 
     /**
@@ -44904,55 +44952,7 @@ class Obj5 {
      * @return UseSerializers
      */
     public static function sampleUseSerializers(): UseSerializers {
-        return UseSerializers::sample(); /*94:useSerializers*/
-    }
-
-    /**
-     * @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(); /*95:ushort*/
+        return UseSerializers::sample(); /*95:useSerializers*/
     }
 
     /**
@@ -44967,6 +44967,9 @@ class Obj5 {
         || Obj5::validateObj5True($this->obj5True)
         || Obj5::validateObj5Type($this->obj5Type)
         || Obj5::validatePrimitiveKind($this->primitiveKind)
+        || Obj5::validateSealed($this->sealed)
+        || Obj5::validateSel($this->sel)
+        || Obj5::validateSelect($this->select)
         || Obj5::validateSelf($this->self)
         || Obj5::validateSendable($this->sendable)
         || Obj5::validateSerialDescriptor($this->serialDescriptor)
@@ -45021,10 +45024,7 @@ class Obj5 {
         || Obj5::validateUndefined($this->undefined)
         || Obj5::validateUnion($this->union)
         || Obj5::validateUnowned($this->unowned)
-        || Obj5::validateUnsafe($this->unsafe)
-        || Obj5::validateUnsigned($this->unsigned)
-        || Obj5::validateUseSerializers($this->useSerializers)
-        || Obj5::validateUshort($this->ushort);
+        || Obj5::validateUseSerializers($this->useSerializers);
     }
 
     /**
@@ -45040,6 +45040,9 @@ class Obj5 {
         $out->{'true'} = $this->toObj5True();
         $out->{'type'} = $this->toObj5Type();
         $out->{'PrimitiveKind'} = $this->toPrimitiveKind();
+        $out->{'sealed'} = $this->toSealed();
+        $out->{'SEL'} = $this->toSel();
+        $out->{'select'} = $this->toSelect();
         $out->{'Self'} = $this->toSelf();
         $out->{'Sendable'} = $this->toSendable();
         $out->{'SerialDescriptor'} = $this->toSerialDescriptor();
@@ -45094,10 +45097,7 @@ class Obj5 {
         $out->{'undefined'} = $this->toUndefined();
         $out->{'union'} = $this->toUnion();
         $out->{'unowned'} = $this->toUnowned();
-        $out->{'unsafe'} = $this->toUnsafe();
-        $out->{'unsigned'} = $this->toUnsigned();
         $out->{'UseSerializers'} = $this->toUseSerializers();
-        $out->{'ushort'} = $this->toUshort();
         return $out;
     }
 
@@ -45128,6 +45128,15 @@ class Obj5 {
         if (!property_exists($obj, 'PrimitiveKind')) {
             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");
         }
@@ -45290,18 +45299,9 @@ class Obj5 {
         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, 'UseSerializers')) {
             throw new Exception("Missing required property");
         }
-        if (!property_exists($obj, 'ushort')) {
-            throw new Exception("Missing required property");
-        }
         return new Obj5(
          Obj5::fromDummy($obj->{'dummy'})
         ,Obj5::fromKSerializer($obj->{'KSerializer'})
@@ -45310,6 +45310,9 @@ class Obj5 {
         ,Obj5::fromObj5True($obj->{'true'})
         ,Obj5::fromObj5Type($obj->{'type'})
         ,Obj5::fromPrimitiveKind($obj->{'PrimitiveKind'})
+        ,Obj5::fromSealed($obj->{'sealed'})
+        ,Obj5::fromSel($obj->{'SEL'})
+        ,Obj5::fromSelect($obj->{'select'})
         ,Obj5::fromSelf($obj->{'Self'})
         ,Obj5::fromSendable($obj->{'Sendable'})
         ,Obj5::fromSerialDescriptor($obj->{'SerialDescriptor'})
@@ -45364,10 +45367,7 @@ class Obj5 {
         ,Obj5::fromUndefined($obj->{'undefined'})
         ,Obj5::fromUnion($obj->{'union'})
         ,Obj5::fromUnowned($obj->{'unowned'})
-        ,Obj5::fromUnsafe($obj->{'unsafe'})
-        ,Obj5::fromUnsigned($obj->{'unsigned'})
         ,Obj5::fromUseSerializers($obj->{'UseSerializers'})
-        ,Obj5::fromUshort($obj->{'ushort'})
         );
     }
 
@@ -45383,6 +45383,9 @@ class Obj5 {
         ,Obj5::sampleObj5True()
         ,Obj5::sampleObj5Type()
         ,Obj5::samplePrimitiveKind()
+        ,Obj5::sampleSealed()
+        ,Obj5::sampleSel()
+        ,Obj5::sampleSelect()
         ,Obj5::sampleSelf()
         ,Obj5::sampleSendable()
         ,Obj5::sampleSerialDescriptor()
@@ -45437,10 +45440,7 @@ class Obj5 {
         ,Obj5::sampleUndefined()
         ,Obj5::sampleUnion()
         ,Obj5::sampleUnowned()
-        ,Obj5::sampleUnsafe()
-        ,Obj5::sampleUnsigned()
         ,Obj5::sampleUseSerializers()
-        ,Obj5::sampleUshort()
         );
     }
 }
@@ -45509,7 +45509,310 @@ class KSerializer {
      * @return bool
      */
     public function validate(): bool {
-        return KSerializer::validateKSerializer($this->kSerializer);
+        return KSerializer::validateKSerializer($this->kSerializer);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'KSerializer'} = $this->toKSerializer();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return KSerializer
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): KSerializer {
+        if (!property_exists($obj, 'KSerializer')) {
+            throw new Exception("Missing required property");
+        }
+        return new KSerializer(
+         KSerializer::fromKSerializer($obj->{'KSerializer'})
+        );
+    }
+
+    /**
+     * @return KSerializer
+     */
+    public static function sample(): KSerializer {
+        return new KSerializer(
+         KSerializer::sampleKSerializer()
+        );
+    }
+}
+
+// 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*/
+        }
+        throw new Exception('never get to this Obj5Self::self');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateSelf(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getSelf(): int {
+        if (Obj5Self::validateSelf($this->self))  {
+            return $this->self;
+        }
+        throw new Exception('never get to getSelf Obj5Self::self');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleSelf(): int {
+        return 31; /*31:self*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Obj5Self::validateSelf($this->self);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'self'} = $this->toSelf();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Obj5Self
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): Obj5Self {
+        if (!property_exists($obj, 'self')) {
+            throw new Exception("Missing required property");
+        }
+        return new Obj5Self(
+         Obj5Self::fromSelf($obj->{'self'})
+        );
+    }
+
+    /**
+     * @return Obj5Self
+     */
+    public static function sample(): Obj5Self {
+        return new Obj5Self(
+         Obj5Self::sampleSelf()
+        );
+    }
+}
+
+// This is an autogenerated file:This
+
+class This {
+    private int $thisThis; // json:this Required
+
+    /**
+     * @param int $thisThis
+     */
+    public function __construct(int $thisThis) {
+        $this->thisThis = $thisThis;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromThisThis(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toThisThis(): int {
+        if (This::validateThisThis($this->thisThis))  {
+            return $this->thisThis; /*int*/
+        }
+        throw new Exception('never get to this This::thisThis');
+    }
+
+    /**
+     * @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;
+        }
+        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");
+        }
+        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*/
+        }
+        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;
+        }
+        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);
     }
 
     /**
@@ -45518,44 +45821,44 @@ class KSerializer {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'KSerializer'} = $this->toKSerializer();
+        $out->{'true'} = $this->toTrue();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return KSerializer
+     * @return Obj5True
      * @throws Exception
      */
-    public static function from(stdClass $obj): KSerializer {
-        if (!property_exists($obj, 'KSerializer')) {
+    public static function from(stdClass $obj): Obj5True {
+        if (!property_exists($obj, 'true')) {
             throw new Exception("Missing required property");
         }
-        return new KSerializer(
-         KSerializer::fromKSerializer($obj->{'KSerializer'})
+        return new Obj5True(
+         Obj5True::fromTrue($obj->{'true'})
         );
     }
 
     /**
-     * @return KSerializer
+     * @return Obj5True
      */
-    public static function sample(): KSerializer {
-        return new KSerializer(
-         KSerializer::sampleKSerializer()
+    public static function sample(): Obj5True {
+        return new Obj5True(
+         Obj5True::sampleTrue()
         );
     }
 }
 
-// This is an autogenerated file:Obj5Self
+// This is an autogenerated file:TypeClass
 
-class Obj5Self {
-    private int $self; // json:self Required
+class TypeClass {
+    private int $type; // json:type Required
 
     /**
-     * @param int $self
+     * @param int $type
      */
-    public function __construct(int $self) {
-        $this->self = $self;
+    public function __construct(int $type) {
+        $this->type = $type;
     }
 
     /**
@@ -45563,7 +45866,7 @@ class Obj5Self {
      * @throws Exception
      * @return int
      */
-    public static function fromSelf(int $value): int {
+    public static function fromType(int $value): int {
         return $value; /*int*/
     }
 
@@ -45571,11 +45874,11 @@ class Obj5Self {
      * @throws Exception
      * @return int
      */
-    public function toSelf(): int {
-        if (Obj5Self::validateSelf($this->self))  {
-            return $this->self; /*int*/
+    public function toType(): int {
+        if (TypeClass::validateType($this->type))  {
+            return $this->type; /*int*/
         }
-        throw new Exception('never get to this Obj5Self::self');
+        throw new Exception('never get to this TypeClass::type');
     }
 
     /**
@@ -45583,7 +45886,7 @@ class Obj5Self {
      * @return bool
      * @throws Exception
      */
-    public static function validateSelf(int $value): bool {
+    public static function validateType(int $value): bool {
         return true;
     }
 
@@ -45591,18 +45894,18 @@ class Obj5Self {
      * @throws Exception
      * @return int
      */
-    public function getSelf(): int {
-        if (Obj5Self::validateSelf($this->self))  {
-            return $this->self;
+    public function getType(): int {
+        if (TypeClass::validateType($this->type))  {
+            return $this->type;
         }
-        throw new Exception('never get to getSelf Obj5Self::self');
+        throw new Exception('never get to getType TypeClass::type');
     }
 
     /**
      * @return int
      */
-    public static function sampleSelf(): int {
-        return 31; /*31:self*/
+    public static function sampleType(): int {
+        return 31; /*31:type*/
     }
 
     /**
@@ -45610,7 +45913,7 @@ class Obj5Self {
      * @return bool
      */
     public function validate(): bool {
-        return Obj5Self::validateSelf($this->self);
+        return TypeClass::validateType($this->type);
     }
 
     /**
@@ -45619,44 +45922,44 @@ class Obj5Self {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'self'} = $this->toSelf();
+        $out->{'type'} = $this->toType();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Obj5Self
+     * @return TypeClass
      * @throws Exception
      */
-    public static function from(stdClass $obj): Obj5Self {
-        if (!property_exists($obj, 'self')) {
+    public static function from(stdClass $obj): TypeClass {
+        if (!property_exists($obj, 'type')) {
             throw new Exception("Missing required property");
         }
-        return new Obj5Self(
-         Obj5Self::fromSelf($obj->{'self'})
+        return new TypeClass(
+         TypeClass::fromType($obj->{'type'})
         );
     }
 
     /**
-     * @return Obj5Self
+     * @return TypeClass
      */
-    public static function sample(): Obj5Self {
-        return new Obj5Self(
-         Obj5Self::sampleSelf()
+    public static function sample(): TypeClass {
+        return new TypeClass(
+         TypeClass::sampleType()
         );
     }
 }
 
-// This is an autogenerated file:This
+// This is an autogenerated file:PrimitiveKind
 
-class This {
-    private int $thisThis; // json:this Required
+class PrimitiveKind {
+    private int $primitiveKind; // json:PrimitiveKind Required
 
     /**
-     * @param int $thisThis
+     * @param int $primitiveKind
      */
-    public function __construct(int $thisThis) {
-        $this->thisThis = $thisThis;
+    public function __construct(int $primitiveKind) {
+        $this->primitiveKind = $primitiveKind;
     }
 
     /**
@@ -45664,7 +45967,7 @@ class This {
      * @throws Exception
      * @return int
      */
-    public static function fromThisThis(int $value): int {
+    public static function fromPrimitiveKind(int $value): int {
         return $value; /*int*/
     }
 
@@ -45672,11 +45975,11 @@ class This {
      * @throws Exception
      * @return int
      */
-    public function toThisThis(): int {
-        if (This::validateThisThis($this->thisThis))  {
-            return $this->thisThis; /*int*/
+    public function toPrimitiveKind(): int {
+        if (PrimitiveKind::validatePrimitiveKind($this->primitiveKind))  {
+            return $this->primitiveKind; /*int*/
         }
-        throw new Exception('never get to this This::thisThis');
+        throw new Exception('never get to this PrimitiveKind::primitiveKind');
     }
 
     /**
@@ -45684,7 +45987,7 @@ class This {
      * @return bool
      * @throws Exception
      */
-    public static function validateThisThis(int $value): bool {
+    public static function validatePrimitiveKind(int $value): bool {
         return true;
     }
 
@@ -45692,18 +45995,18 @@ class This {
      * @throws Exception
      * @return int
      */
-    public function getThisThis(): int {
-        if (This::validateThisThis($this->thisThis))  {
-            return $this->thisThis;
+    public function getPrimitiveKind(): int {
+        if (PrimitiveKind::validatePrimitiveKind($this->primitiveKind))  {
+            return $this->primitiveKind;
         }
-        throw new Exception('never get to getThisThis This::thisThis');
+        throw new Exception('never get to getPrimitiveKind PrimitiveKind::primitiveKind');
     }
 
     /**
      * @return int
      */
-    public static function sampleThisThis(): int {
-        return 31; /*31:thisThis*/
+    public static function samplePrimitiveKind(): int {
+        return 31; /*31:primitiveKind*/
     }
 
     /**
@@ -45711,7 +46014,7 @@ class This {
      * @return bool
      */
     public function validate(): bool {
-        return This::validateThisThis($this->thisThis);
+        return PrimitiveKind::validatePrimitiveKind($this->primitiveKind);
     }
 
     /**
@@ -45720,44 +46023,44 @@ class This {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'this'} = $this->toThisThis();
+        $out->{'PrimitiveKind'} = $this->toPrimitiveKind();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return This
+     * @return PrimitiveKind
      * @throws Exception
      */
-    public static function from(stdClass $obj): This {
-        if (!property_exists($obj, 'this')) {
+    public static function from(stdClass $obj): PrimitiveKind {
+        if (!property_exists($obj, 'PrimitiveKind')) {
             throw new Exception("Missing required property");
         }
-        return new This(
-         This::fromThisThis($obj->{'this'})
+        return new PrimitiveKind(
+         PrimitiveKind::fromPrimitiveKind($obj->{'PrimitiveKind'})
         );
     }
 
     /**
-     * @return This
+     * @return PrimitiveKind
      */
-    public static function sample(): This {
-        return new This(
-         This::sampleThisThis()
+    public static function sample(): PrimitiveKind {
+        return new PrimitiveKind(
+         PrimitiveKind::samplePrimitiveKind()
         );
     }
 }
 
-// This is an autogenerated file:Obj5True
+// This is an autogenerated file:Sealed
 
-class Obj5True {
-    private int $true; // json:true Required
+class Sealed {
+    private int $sealed; // json:sealed Required
 
     /**
-     * @param int $true
+     * @param int $sealed
      */
-    public function __construct(int $true) {
-        $this->true = $true;
+    public function __construct(int $sealed) {
+        $this->sealed = $sealed;
     }
 
     /**
@@ -45765,7 +46068,7 @@ class Obj5True {
      * @throws Exception
      * @return int
      */
-    public static function fromTrue(int $value): int {
+    public static function fromSealed(int $value): int {
         return $value; /*int*/
     }
 
@@ -45773,11 +46076,11 @@ class Obj5True {
      * @throws Exception
      * @return int
      */
-    public function toTrue(): int {
-        if (Obj5True::validateTrue($this->true))  {
-            return $this->true; /*int*/
+    public function toSealed(): int {
+        if (Sealed::validateSealed($this->sealed))  {
+            return $this->sealed; /*int*/
         }
-        throw new Exception('never get to this Obj5True::true');
+        throw new Exception('never get to this Sealed::sealed');
     }
 
     /**
@@ -45785,7 +46088,7 @@ class Obj5True {
      * @return bool
      * @throws Exception
      */
-    public static function validateTrue(int $value): bool {
+    public static function validateSealed(int $value): bool {
         return true;
     }
 
@@ -45793,18 +46096,18 @@ class Obj5True {
      * @throws Exception
      * @return int
      */
-    public function getTrue(): int {
-        if (Obj5True::validateTrue($this->true))  {
-            return $this->true;
+    public function getSealed(): int {
+        if (Sealed::validateSealed($this->sealed))  {
+            return $this->sealed;
         }
-        throw new Exception('never get to getTrue Obj5True::true');
+        throw new Exception('never get to getSealed Sealed::sealed');
     }
 
     /**
      * @return int
      */
-    public static function sampleTrue(): int {
-        return 31; /*31:true*/
+    public static function sampleSealed(): int {
+        return 31; /*31:sealed*/
     }
 
     /**
@@ -45812,7 +46115,7 @@ class Obj5True {
      * @return bool
      */
     public function validate(): bool {
-        return Obj5True::validateTrue($this->true);
+        return Sealed::validateSealed($this->sealed);
     }
 
     /**
@@ -45821,44 +46124,44 @@ class Obj5True {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'true'} = $this->toTrue();
+        $out->{'sealed'} = $this->toSealed();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Obj5True
+     * @return Sealed
      * @throws Exception
      */
-    public static function from(stdClass $obj): Obj5True {
-        if (!property_exists($obj, 'true')) {
+    public static function from(stdClass $obj): Sealed {
+        if (!property_exists($obj, 'sealed')) {
             throw new Exception("Missing required property");
         }
-        return new Obj5True(
-         Obj5True::fromTrue($obj->{'true'})
+        return new Sealed(
+         Sealed::fromSealed($obj->{'sealed'})
         );
     }
 
     /**
-     * @return Obj5True
+     * @return Sealed
      */
-    public static function sample(): Obj5True {
-        return new Obj5True(
-         Obj5True::sampleTrue()
+    public static function sample(): Sealed {
+        return new Sealed(
+         Sealed::sampleSealed()
         );
     }
 }
 
-// This is an autogenerated file:TypeClass
+// This is an autogenerated file:Sel
 
-class TypeClass {
-    private int $type; // json:type Required
+class Sel {
+    private int $sel; // json:SEL Required
 
     /**
-     * @param int $type
+     * @param int $sel
      */
-    public function __construct(int $type) {
-        $this->type = $type;
+    public function __construct(int $sel) {
+        $this->sel = $sel;
     }
 
     /**
@@ -45866,7 +46169,7 @@ class TypeClass {
      * @throws Exception
      * @return int
      */
-    public static function fromType(int $value): int {
+    public static function fromSel(int $value): int {
         return $value; /*int*/
     }
 
@@ -45874,11 +46177,11 @@ class TypeClass {
      * @throws Exception
      * @return int
      */
-    public function toType(): int {
-        if (TypeClass::validateType($this->type))  {
-            return $this->type; /*int*/
+    public function toSel(): int {
+        if (Sel::validateSel($this->sel))  {
+            return $this->sel; /*int*/
         }
-        throw new Exception('never get to this TypeClass::type');
+        throw new Exception('never get to this Sel::sel');
     }
 
     /**
@@ -45886,7 +46189,7 @@ class TypeClass {
      * @return bool
      * @throws Exception
      */
-    public static function validateType(int $value): bool {
+    public static function validateSel(int $value): bool {
         return true;
     }
 
@@ -45894,18 +46197,18 @@ class TypeClass {
      * @throws Exception
      * @return int
      */
-    public function getType(): int {
-        if (TypeClass::validateType($this->type))  {
-            return $this->type;
+    public function getSel(): int {
+        if (Sel::validateSel($this->sel))  {
+            return $this->sel;
         }
-        throw new Exception('never get to getType TypeClass::type');
+        throw new Exception('never get to getSel Sel::sel');
     }
 
     /**
      * @return int
      */
-    public static function sampleType(): int {
-        return 31; /*31:type*/
+    public static function sampleSel(): int {
+        return 31; /*31:sel*/
     }
 
     /**
@@ -45913,7 +46216,7 @@ class TypeClass {
      * @return bool
      */
     public function validate(): bool {
-        return TypeClass::validateType($this->type);
+        return Sel::validateSel($this->sel);
     }
 
     /**
@@ -45922,44 +46225,44 @@ class TypeClass {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'type'} = $this->toType();
+        $out->{'SEL'} = $this->toSel();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return TypeClass
+     * @return Sel
      * @throws Exception
      */
-    public static function from(stdClass $obj): TypeClass {
-        if (!property_exists($obj, 'type')) {
+    public static function from(stdClass $obj): Sel {
+        if (!property_exists($obj, 'SEL')) {
             throw new Exception("Missing required property");
         }
-        return new TypeClass(
-         TypeClass::fromType($obj->{'type'})
+        return new Sel(
+         Sel::fromSel($obj->{'SEL'})
         );
     }
 
     /**
-     * @return TypeClass
+     * @return Sel
      */
-    public static function sample(): TypeClass {
-        return new TypeClass(
-         TypeClass::sampleType()
+    public static function sample(): Sel {
+        return new Sel(
+         Sel::sampleSel()
         );
     }
 }
 
-// This is an autogenerated file:PrimitiveKind
+// This is an autogenerated file:Select
 
-class PrimitiveKind {
-    private int $primitiveKind; // json:PrimitiveKind Required
+class Select {
+    private int $select; // json:select Required
 
     /**
-     * @param int $primitiveKind
+     * @param int $select
      */
-    public function __construct(int $primitiveKind) {
-        $this->primitiveKind = $primitiveKind;
+    public function __construct(int $select) {
+        $this->select = $select;
     }
 
     /**
@@ -45967,7 +46270,7 @@ class PrimitiveKind {
      * @throws Exception
      * @return int
      */
-    public static function fromPrimitiveKind(int $value): int {
+    public static function fromSelect(int $value): int {
         return $value; /*int*/
     }
 
@@ -45975,11 +46278,11 @@ class PrimitiveKind {
      * @throws Exception
      * @return int
      */
-    public function toPrimitiveKind(): int {
-        if (PrimitiveKind::validatePrimitiveKind($this->primitiveKind))  {
-            return $this->primitiveKind; /*int*/
+    public function toSelect(): int {
+        if (Select::validateSelect($this->select))  {
+            return $this->select; /*int*/
         }
-        throw new Exception('never get to this PrimitiveKind::primitiveKind');
+        throw new Exception('never get to this Select::select');
     }
 
     /**
@@ -45987,7 +46290,7 @@ class PrimitiveKind {
      * @return bool
      * @throws Exception
      */
-    public static function validatePrimitiveKind(int $value): bool {
+    public static function validateSelect(int $value): bool {
         return true;
     }
 
@@ -45995,18 +46298,18 @@ class PrimitiveKind {
      * @throws Exception
      * @return int
      */
-    public function getPrimitiveKind(): int {
-        if (PrimitiveKind::validatePrimitiveKind($this->primitiveKind))  {
-            return $this->primitiveKind;
+    public function getSelect(): int {
+        if (Select::validateSelect($this->select))  {
+            return $this->select;
         }
-        throw new Exception('never get to getPrimitiveKind PrimitiveKind::primitiveKind');
+        throw new Exception('never get to getSelect Select::select');
     }
 
     /**
      * @return int
      */
-    public static function samplePrimitiveKind(): int {
-        return 31; /*31:primitiveKind*/
+    public static function sampleSelect(): int {
+        return 31; /*31:select*/
     }
 
     /**
@@ -46014,7 +46317,7 @@ class PrimitiveKind {
      * @return bool
      */
     public function validate(): bool {
-        return PrimitiveKind::validatePrimitiveKind($this->primitiveKind);
+        return Select::validateSelect($this->select);
     }
 
     /**
@@ -46023,30 +46326,30 @@ class PrimitiveKind {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'PrimitiveKind'} = $this->toPrimitiveKind();
+        $out->{'select'} = $this->toSelect();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return PrimitiveKind
+     * @return Select
      * @throws Exception
      */
-    public static function from(stdClass $obj): PrimitiveKind {
-        if (!property_exists($obj, 'PrimitiveKind')) {
+    public static function from(stdClass $obj): Select {
+        if (!property_exists($obj, 'select')) {
             throw new Exception("Missing required property");
         }
-        return new PrimitiveKind(
-         PrimitiveKind::fromPrimitiveKind($obj->{'PrimitiveKind'})
+        return new Select(
+         Select::fromSelect($obj->{'select'})
         );
     }
 
     /**
-     * @return PrimitiveKind
+     * @return Select
      */
-    public static function sample(): PrimitiveKind {
-        return new PrimitiveKind(
-         PrimitiveKind::samplePrimitiveKind()
+    public static function sample(): Select {
+        return new Select(
+         Select::sampleSelect()
         );
     }
 }
@@ -51092,25 +51395,227 @@ class Ulong {
     }
 
     /**
-     * @return Ulong
+     * @return Ulong
+     */
+    public static function sample(): Ulong {
+        return new Ulong(
+         Ulong::sampleUlong()
+        );
+    }
+}
+
+// This is an autogenerated file:Unchecked
+
+class Unchecked {
+    private int $unchecked; // json:unchecked Required
+
+    /**
+     * @param int $unchecked
+     */
+    public function __construct(int $unchecked) {
+        $this->unchecked = $unchecked;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromUnchecked(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toUnchecked(): int {
+        if (Unchecked::validateUnchecked($this->unchecked))  {
+            return $this->unchecked; /*int*/
+        }
+        throw new Exception('never get to this Unchecked::unchecked');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateUnchecked(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getUnchecked(): int {
+        if (Unchecked::validateUnchecked($this->unchecked))  {
+            return $this->unchecked;
+        }
+        throw new Exception('never get to getUnchecked Unchecked::unchecked');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleUnchecked(): int {
+        return 31; /*31:unchecked*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Unchecked::validateUnchecked($this->unchecked);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'unchecked'} = $this->toUnchecked();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Unchecked
+     * @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'})
+        );
+    }
+
+    /**
+     * @return Unchecked
+     */
+    public static function sample(): Unchecked {
+        return new Unchecked(
+         Unchecked::sampleUnchecked()
+        );
+    }
+}
+
+// This is an autogenerated file:Undefined
+
+class Undefined {
+    private int $undefined; // json:undefined Required
+
+    /**
+     * @param int $undefined
+     */
+    public function __construct(int $undefined) {
+        $this->undefined = $undefined;
+    }
+
+    /**
+     * @param int $value
+     * @throws Exception
+     * @return int
+     */
+    public static function fromUndefined(int $value): int {
+        return $value; /*int*/
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function toUndefined(): int {
+        if (Undefined::validateUndefined($this->undefined))  {
+            return $this->undefined; /*int*/
+        }
+        throw new Exception('never get to this Undefined::undefined');
+    }
+
+    /**
+     * @param int
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateUndefined(int $value): bool {
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return int
+     */
+    public function getUndefined(): int {
+        if (Undefined::validateUndefined($this->undefined))  {
+            return $this->undefined;
+        }
+        throw new Exception('never get to getUndefined Undefined::undefined');
+    }
+
+    /**
+     * @return int
+     */
+    public static function sampleUndefined(): int {
+        return 31; /*31:undefined*/
+    }
+
+    /**
+     * @throws Exception
+     * @return bool
+     */
+    public function validate(): bool {
+        return Undefined::validateUndefined($this->undefined);
+    }
+
+    /**
+     * @return stdClass
+     * @throws Exception
+     */
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'undefined'} = $this->toUndefined();
+        return $out;
+    }
+
+    /**
+     * @param stdClass $obj
+     * @return Undefined
+     * @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'})
+        );
+    }
+
+    /**
+     * @return Undefined
      */
-    public static function sample(): Ulong {
-        return new Ulong(
-         Ulong::sampleUlong()
+    public static function sample(): Undefined {
+        return new Undefined(
+         Undefined::sampleUndefined()
         );
     }
 }
 
-// This is an autogenerated file:Unchecked
+// This is an autogenerated file:Union
 
-class Unchecked {
-    private int $unchecked; // json:unchecked Required
+class Union {
+    private int $union; // json:union Required
 
     /**
-     * @param int $unchecked
+     * @param int $union
      */
-    public function __construct(int $unchecked) {
-        $this->unchecked = $unchecked;
+    public function __construct(int $union) {
+        $this->union = $union;
     }
 
     /**
@@ -51118,7 +51623,7 @@ class Unchecked {
      * @throws Exception
      * @return int
      */
-    public static function fromUnchecked(int $value): int {
+    public static function fromUnion(int $value): int {
         return $value; /*int*/
     }
 
@@ -51126,11 +51631,11 @@ class Unchecked {
      * @throws Exception
      * @return int
      */
-    public function toUnchecked(): int {
-        if (Unchecked::validateUnchecked($this->unchecked))  {
-            return $this->unchecked; /*int*/
+    public function toUnion(): int {
+        if (Union::validateUnion($this->union))  {
+            return $this->union; /*int*/
         }
-        throw new Exception('never get to this Unchecked::unchecked');
+        throw new Exception('never get to this Union::union');
     }
 
     /**
@@ -51138,7 +51643,7 @@ class Unchecked {
      * @return bool
      * @throws Exception
      */
-    public static function validateUnchecked(int $value): bool {
+    public static function validateUnion(int $value): bool {
         return true;
     }
 
@@ -51146,18 +51651,18 @@ class Unchecked {
      * @throws Exception
      * @return int
      */
-    public function getUnchecked(): int {
-        if (Unchecked::validateUnchecked($this->unchecked))  {
-            return $this->unchecked;
+    public function getUnion(): int {
+        if (Union::validateUnion($this->union))  {
+            return $this->union;
         }
-        throw new Exception('never get to getUnchecked Unchecked::unchecked');
+        throw new Exception('never get to getUnion Union::union');
     }
 
     /**
      * @return int
      */
-    public static function sampleUnchecked(): int {
-        return 31; /*31:unchecked*/
+    public static function sampleUnion(): int {
+        return 31; /*31:union*/
     }
 
     /**
@@ -51165,7 +51670,7 @@ class Unchecked {
      * @return bool
      */
     public function validate(): bool {
-        return Unchecked::validateUnchecked($this->unchecked);
+        return Union::validateUnion($this->union);
     }
 
     /**
@@ -51174,44 +51679,44 @@ class Unchecked {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'unchecked'} = $this->toUnchecked();
+        $out->{'union'} = $this->toUnion();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Unchecked
+     * @return Union
      * @throws Exception
      */
-    public static function from(stdClass $obj): Unchecked {
-        if (!property_exists($obj, 'unchecked')) {
+    public static function from(stdClass $obj): Union {
+        if (!property_exists($obj, 'union')) {
             throw new Exception("Missing required property");
         }
-        return new Unchecked(
-         Unchecked::fromUnchecked($obj->{'unchecked'})
+        return new Union(
+         Union::fromUnion($obj->{'union'})
         );
     }
 
     /**
-     * @return Unchecked
+     * @return Union
      */
-    public static function sample(): Unchecked {
-        return new Unchecked(
-         Unchecked::sampleUnchecked()
+    public static function sample(): Union {
+        return new Union(
+         Union::sampleUnion()
         );
     }
 }
 
-// This is an autogenerated file:Undefined
+// This is an autogenerated file:Unowned
 
-class Undefined {
-    private int $undefined; // json:undefined Required
+class Unowned {
+    private int $unowned; // json:unowned Required
 
     /**
-     * @param int $undefined
+     * @param int $unowned
      */
-    public function __construct(int $undefined) {
-        $this->undefined = $undefined;
+    public function __construct(int $unowned) {
+        $this->unowned = $unowned;
     }
 
     /**
@@ -51219,7 +51724,7 @@ class Undefined {
      * @throws Exception
      * @return int
      */
-    public static function fromUndefined(int $value): int {
+    public static function fromUnowned(int $value): int {
         return $value; /*int*/
     }
 
@@ -51227,11 +51732,11 @@ class Undefined {
      * @throws Exception
      * @return int
      */
-    public function toUndefined(): int {
-        if (Undefined::validateUndefined($this->undefined))  {
-            return $this->undefined; /*int*/
+    public function toUnowned(): int {
+        if (Unowned::validateUnowned($this->unowned))  {
+            return $this->unowned; /*int*/
         }
-        throw new Exception('never get to this Undefined::undefined');
+        throw new Exception('never get to this Unowned::unowned');
     }
 
     /**
@@ -51239,7 +51744,7 @@ class Undefined {
      * @return bool
      * @throws Exception
      */
-    public static function validateUndefined(int $value): bool {
+    public static function validateUnowned(int $value): bool {
         return true;
     }
 
@@ -51247,18 +51752,18 @@ class Undefined {
      * @throws Exception
      * @return int
      */
-    public function getUndefined(): int {
-        if (Undefined::validateUndefined($this->undefined))  {
-            return $this->undefined;
+    public function getUnowned(): int {
+        if (Unowned::validateUnowned($this->unowned))  {
+            return $this->unowned;
         }
-        throw new Exception('never get to getUndefined Undefined::undefined');
+        throw new Exception('never get to getUnowned Unowned::unowned');
     }
 
     /**
      * @return int
      */
-    public static function sampleUndefined(): int {
-        return 31; /*31:undefined*/
+    public static function sampleUnowned(): int {
+        return 31; /*31:unowned*/
     }
 
     /**
@@ -51266,7 +51771,7 @@ class Undefined {
      * @return bool
      */
     public function validate(): bool {
-        return Undefined::validateUndefined($this->undefined);
+        return Unowned::validateUnowned($this->unowned);
     }
 
     /**
@@ -51275,44 +51780,44 @@ class Undefined {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'undefined'} = $this->toUndefined();
+        $out->{'unowned'} = $this->toUnowned();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Undefined
+     * @return Unowned
      * @throws Exception
      */
-    public static function from(stdClass $obj): Undefined {
-        if (!property_exists($obj, 'undefined')) {
+    public static function from(stdClass $obj): Unowned {
+        if (!property_exists($obj, 'unowned')) {
             throw new Exception("Missing required property");
         }
-        return new Undefined(
-         Undefined::fromUndefined($obj->{'undefined'})
+        return new Unowned(
+         Unowned::fromUnowned($obj->{'unowned'})
         );
     }
 
     /**
-     * @return Undefined
+     * @return Unowned
      */
-    public static function sample(): Undefined {
-        return new Undefined(
-         Undefined::sampleUndefined()
+    public static function sample(): Unowned {
+        return new Unowned(
+         Unowned::sampleUnowned()
         );
     }
 }
 
-// This is an autogenerated file:Union
+// This is an autogenerated file:UseSerializers
 
-class Union {
-    private int $union; // json:union Required
+class UseSerializers {
+    private int $useSerializers; // json:UseSerializers Required
 
     /**
-     * @param int $union
+     * @param int $useSerializers
      */
-    public function __construct(int $union) {
-        $this->union = $union;
+    public function __construct(int $useSerializers) {
+        $this->useSerializers = $useSerializers;
     }
 
     /**
@@ -51320,7 +51825,7 @@ class Union {
      * @throws Exception
      * @return int
      */
-    public static function fromUnion(int $value): int {
+    public static function fromUseSerializers(int $value): int {
         return $value; /*int*/
     }
 
@@ -51328,11 +51833,11 @@ class Union {
      * @throws Exception
      * @return int
      */
-    public function toUnion(): int {
-        if (Union::validateUnion($this->union))  {
-            return $this->union; /*int*/
+    public function toUseSerializers(): int {
+        if (UseSerializers::validateUseSerializers($this->useSerializers))  {
+            return $this->useSerializers; /*int*/
         }
-        throw new Exception('never get to this Union::union');
+        throw new Exception('never get to this UseSerializers::useSerializers');
     }
 
     /**
@@ -51340,7 +51845,7 @@ class Union {
      * @return bool
      * @throws Exception
      */
-    public static function validateUnion(int $value): bool {
+    public static function validateUseSerializers(int $value): bool {
         return true;
     }
 
@@ -51348,18 +51853,18 @@ class Union {
      * @throws Exception
      * @return int
      */
-    public function getUnion(): int {
-        if (Union::validateUnion($this->union))  {
-            return $this->union;
+    public function getUseSerializers(): int {
+        if (UseSerializers::validateUseSerializers($this->useSerializers))  {
+            return $this->useSerializers;
         }
-        throw new Exception('never get to getUnion Union::union');
+        throw new Exception('never get to getUseSerializers UseSerializers::useSerializers');
     }
 
     /**
      * @return int
      */
-    public static function sampleUnion(): int {
-        return 31; /*31:union*/
+    public static function sampleUseSerializers(): int {
+        return 31; /*31:useSerializers*/
     }
 
     /**
@@ -51367,7 +51872,7 @@ class Union {
      * @return bool
      */
     public function validate(): bool {
-        return Union::validateUnion($this->union);
+        return UseSerializers::validateUseSerializers($this->useSerializers);
     }
 
     /**
@@ -51376,44 +51881,107 @@ class Union {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'union'} = $this->toUnion();
+        $out->{'UseSerializers'} = $this->toUseSerializers();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Union
+     * @return UseSerializers
      * @throws Exception
      */
-    public static function from(stdClass $obj): Union {
-        if (!property_exists($obj, 'union')) {
+    public static function from(stdClass $obj): UseSerializers {
+        if (!property_exists($obj, 'UseSerializers')) {
             throw new Exception("Missing required property");
         }
-        return new Union(
-         Union::fromUnion($obj->{'union'})
+        return new UseSerializers(
+         UseSerializers::fromUseSerializers($obj->{'UseSerializers'})
         );
     }
 
     /**
-     * @return Union
+     * @return UseSerializers
      */
-    public static function sample(): Union {
-        return new Union(
-         Union::sampleUnion()
+    public static function sample(): UseSerializers {
+        return new UseSerializers(
+         UseSerializers::sampleUseSerializers()
         );
     }
 }
 
-// This is an autogenerated file:Unowned
+// This is an autogenerated file:Obj6
 
-class Unowned {
-    private int $unowned; // json:unowned Required
+class Obj6 {
+    private int $dummy; // json:dummy 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 $unowned
+     * @param int $dummy
+     * @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 $unowned) {
-        $this->unowned = $unowned;
+    public function __construct(int $dummy, 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->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;
     }
 
     /**
@@ -51421,7 +51989,7 @@ class Unowned {
      * @throws Exception
      * @return int
      */
-    public static function fromUnowned(int $value): int {
+    public static function fromDummy(int $value): int {
         return $value; /*int*/
     }
 
@@ -51429,11 +51997,11 @@ class Unowned {
      * @throws Exception
      * @return int
      */
-    public function toUnowned(): int {
-        if (Unowned::validateUnowned($this->unowned))  {
-            return $this->unowned; /*int*/
+    public function toDummy(): int {
+        if (Obj6::validateDummy($this->dummy))  {
+            return $this->dummy; /*int*/
         }
-        throw new Exception('never get to this Unowned::unowned');
+        throw new Exception('never get to this Obj6::dummy');
     }
 
     /**
@@ -51441,7 +52009,7 @@ class Unowned {
      * @return bool
      * @throws Exception
      */
-    public static function validateUnowned(int $value): bool {
+    public static function validateDummy(int $value): bool {
         return true;
     }
 
@@ -51449,1441 +52017,1476 @@ class Unowned {
      * @throws Exception
      * @return int
      */
-    public function getUnowned(): int {
-        if (Unowned::validateUnowned($this->unowned))  {
-            return $this->unowned;
+    public function getDummy(): int {
+        if (Obj6::validateDummy($this->dummy))  {
+            return $this->dummy;
         }
-        throw new Exception('never get to getUnowned Unowned::unowned');
+        throw new Exception('never get to getDummy Obj6::dummy');
     }
 
     /**
      * @return int
      */
-    public static function sampleUnowned(): int {
-        return 31; /*31:unowned*/
+    public static function sampleDummy(): int {
+        return 31; /*31:dummy*/
     }
 
     /**
+     * @param stdClass $value
      * @throws Exception
-     * @return bool
+     * @return Unsafe
      */
-    public function validate(): bool {
-        return Unowned::validateUnowned($this->unowned);
+    public static function fromUnsafe(stdClass $value): Unsafe {
+        return Unsafe::from($value); /*class*/
     }
 
     /**
-     * @return stdClass
      * @throws Exception
+     * @return stdClass
      */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'unowned'} = $this->toUnowned();
-        return $out;
+    public function toUnsafe(): stdClass {
+        if (Obj6::validateUnsafe($this->unsafe))  {
+            return $this->unsafe->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj6::unsafe');
     }
 
     /**
-     * @param stdClass $obj
-     * @return Unowned
+     * @param Unsafe
+     * @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 validateUnsafe(Unsafe $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
-     * @return Unowned
+     * @throws Exception
+     * @return Unsafe
      */
-    public static function sample(): Unowned {
-        return new Unowned(
-         Unowned::sampleUnowned()
-        );
+    public function getUnsafe(): Unsafe {
+        if (Obj6::validateUnsafe($this->unsafe))  {
+            return $this->unsafe;
+        }
+        throw new Exception('never get to getUnsafe Obj6::unsafe');
     }
-}
-
-// This is an autogenerated file:Unsafe
-
-class Unsafe {
-    private int $unsafe; // json:unsafe Required
 
     /**
-     * @param int $unsafe
+     * @return Unsafe
      */
-    public function __construct(int $unsafe) {
-        $this->unsafe = $unsafe;
+    public static function sampleUnsafe(): Unsafe {
+        return Unsafe::sample(); /*32:unsafe*/
     }
 
     /**
-     * @param int $value
+     * @param stdClass $value
      * @throws Exception
-     * @return int
+     * @return Unsigned
      */
-    public static function fromUnsafe(int $value): int {
-        return $value; /*int*/
+    public static function fromUnsigned(stdClass $value): Unsigned {
+        return Unsigned::from($value); /*class*/
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return stdClass
      */
-    public function toUnsafe(): int {
-        if (Unsafe::validateUnsafe($this->unsafe))  {
-            return $this->unsafe; /*int*/
+    public function toUnsigned(): stdClass {
+        if (Obj6::validateUnsigned($this->unsigned))  {
+            return $this->unsigned->to(); /*class*/
         }
-        throw new Exception('never get to this Unsafe::unsafe');
+        throw new Exception('never get to this Obj6::unsigned');
     }
 
     /**
-     * @param int
+     * @param Unsigned
      * @return bool
      * @throws Exception
      */
-    public static function validateUnsafe(int $value): bool {
+    public static function validateUnsigned(Unsigned $value): bool {
+        $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return Unsigned
      */
-    public function getUnsafe(): int {
-        if (Unsafe::validateUnsafe($this->unsafe))  {
-            return $this->unsafe;
+    public function getUnsigned(): Unsigned {
+        if (Obj6::validateUnsigned($this->unsigned))  {
+            return $this->unsigned;
         }
-        throw new Exception('never get to getUnsafe Unsafe::unsafe');
+        throw new Exception('never get to getUnsigned Obj6::unsigned');
     }
 
     /**
-     * @return int
+     * @return Unsigned
      */
-    public static function sampleUnsafe(): int {
-        return 31; /*31:unsafe*/
+    public static function sampleUnsigned(): Unsigned {
+        return Unsigned::sample(); /*33:unsigned*/
     }
 
     /**
+     * @param stdClass $value
      * @throws Exception
-     * @return bool
+     * @return Ushort
      */
-    public function validate(): bool {
-        return Unsafe::validateUnsafe($this->unsafe);
+    public static function fromUshort(stdClass $value): Ushort {
+        return Ushort::from($value); /*class*/
     }
 
     /**
+     * @throws Exception
      * @return stdClass
+     */
+    public function toUshort(): stdClass {
+        if (Obj6::validateUshort($this->ushort))  {
+            return $this->ushort->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj6::ushort');
+    }
+
+    /**
+     * @param Ushort
+     * @return bool
      * @throws Exception
      */
-    public function to(): stdClass  {
-        $out = new stdClass();
-        $out->{'unsafe'} = $this->toUnsafe();
-        return $out;
+    public static function validateUshort(Ushort $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
-     * @param stdClass $obj
-     * @return Unsafe
      * @throws Exception
+     * @return Ushort
      */
-    public static function from(stdClass $obj): Unsafe {
-        if (!property_exists($obj, 'unsafe')) {
-            throw new Exception("Missing required property");
+    public function getUshort(): Ushort {
+        if (Obj6::validateUshort($this->ushort))  {
+            return $this->ushort;
         }
-        return new Unsafe(
-         Unsafe::fromUnsafe($obj->{'unsafe'})
-        );
+        throw new Exception('never get to getUshort Obj6::ushort');
     }
 
     /**
-     * @return Unsafe
+     * @return Ushort
      */
-    public static function sample(): Unsafe {
-        return new Unsafe(
-         Unsafe::sampleUnsafe()
-        );
+    public static function sampleUshort(): Ushort {
+        return Ushort::sample(); /*34:ushort*/
     }
-}
 
-// This is an autogenerated file:Unsigned
+    /**
+     * @param stdClass $value
+     * @throws Exception
+     * @return Using
+     */
+    public static function fromUsing(stdClass $value): Using {
+        return Using::from($value); /*class*/
+    }
 
-class Unsigned {
-    private int $unsigned; // json:unsigned Required
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toUsing(): stdClass {
+        if (Obj6::validateUsing($this->using))  {
+            return $this->using->to(); /*class*/
+        }
+        throw new Exception('never get to this Obj6::using');
+    }
 
     /**
-     * @param int $unsigned
+     * @param Using
+     * @return bool
+     * @throws Exception
      */
-    public function __construct(int $unsigned) {
-        $this->unsigned = $unsigned;
+    public static function validateUsing(Using $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
-     * @param int $value
      * @throws Exception
-     * @return int
+     * @return Using
      */
-    public static function fromUnsigned(int $value): int {
-        return $value; /*int*/
+    public function getUsing(): Using {
+        if (Obj6::validateUsing($this->using))  {
+            return $this->using;
+        }
+        throw new Exception('never get to getUsing Obj6::using');
+    }
+
+    /**
+     * @return Using
+     */
+    public static function sampleUsing(): Using {
+        return Using::sample(); /*35:using*/
     }
 
     /**
+     * @param stdClass $value
      * @throws Exception
-     * @return int
+     * @return Utf8JSONReader
      */
-    public function toUnsigned(): int {
-        if (Unsigned::validateUnsigned($this->unsigned))  {
-            return $this->unsigned; /*int*/
+    public static function fromUtf8JSONReader(stdClass $value): Utf8JSONReader {
+        return Utf8JSONReader::from($value); /*class*/
+    }
+
+    /**
+     * @throws Exception
+     * @return stdClass
+     */
+    public function toUtf8JSONReader(): stdClass {
+        if (Obj6::validateUtf8JSONReader($this->utf8JSONReader))  {
+            return $this->utf8JSONReader->to(); /*class*/
         }
-        throw new Exception('never get to this Unsigned::unsigned');
+        throw new Exception('never get to this Obj6::utf8JSONReader');
     }
 
     /**
-     * @param int
+     * @param Utf8JSONReader
      * @return bool
      * @throws Exception
      */
-    public static function validateUnsigned(int $value): bool {
+    public static function validateUtf8JSONReader(Utf8JSONReader $value): bool {
+        $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return Utf8JSONReader
      */
-    public function getUnsigned(): int {
-        if (Unsigned::validateUnsigned($this->unsigned))  {
-            return $this->unsigned;
+    public function getUtf8JSONReader(): Utf8JSONReader {
+        if (Obj6::validateUtf8JSONReader($this->utf8JSONReader))  {
+            return $this->utf8JSONReader;
         }
-        throw new Exception('never get to getUnsigned Unsigned::unsigned');
+        throw new Exception('never get to getUtf8JSONReader Obj6::utf8JSONReader');
     }
 
     /**
-     * @return int
+     * @return Utf8JSONReader
      */
-    public static function sampleUnsigned(): int {
-        return 31; /*31:unsigned*/
+    public static function sampleUtf8JSONReader(): Utf8JSONReader {
+        return Utf8JSONReader::sample(); /*36:utf8JSONReader*/
     }
 
     /**
+     * @param stdClass $value
      * @throws Exception
-     * @return bool
+     * @return Utf8JSONWriter
      */
-    public function validate(): bool {
-        return Unsigned::validateUnsigned($this->unsigned);
+    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->{'unsigned'} = $this->toUnsigned();
-        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 Unsigned
+     * @param Utf8JSONWriter
+     * @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 validateUtf8JSONWriter(Utf8JSONWriter $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
-     * @return Unsigned
+     * @throws Exception
+     * @return Utf8JSONWriter
      */
-    public static function sample(): Unsigned {
-        return new Unsigned(
-         Unsigned::sampleUnsigned()
-        );
+    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:UseSerializers
-
-class UseSerializers {
-    private int $useSerializers; // json:UseSerializers Required
 
     /**
-     * @param int $useSerializers
+     * @return Utf8JSONWriter
      */
-    public function __construct(int $useSerializers) {
-        $this->useSerializers = $useSerializers;
+    public static function sampleUtf8JSONWriter(): Utf8JSONWriter {
+        return Utf8JSONWriter::sample(); /*37:utf8JSONWriter*/
     }
 
     /**
-     * @param int $value
+     * @param stdClass $value
      * @throws Exception
-     * @return int
+     * @return UUID
      */
-    public static function fromUseSerializers(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 toUseSerializers(): int {
-        if (UseSerializers::validateUseSerializers($this->useSerializers))  {
-            return $this->useSerializers; /*int*/
+    public function toUUID(): stdClass {
+        if (Obj6::validateUUID($this->uuid))  {
+            return $this->uuid->to(); /*class*/
         }
-        throw new Exception('never get to this UseSerializers::useSerializers');
+        throw new Exception('never get to this Obj6::uuid');
     }
 
     /**
-     * @param int
+     * @param UUID
      * @return bool
      * @throws Exception
      */
-    public static function validateUseSerializers(int $value): bool {
+    public static function validateUUID(UUID $value): bool {
+        $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return UUID
      */
-    public function getUseSerializers(): int {
-        if (UseSerializers::validateUseSerializers($this->useSerializers))  {
-            return $this->useSerializers;
+    public function getUUID(): UUID {
+        if (Obj6::validateUUID($this->uuid))  {
+            return $this->uuid;
         }
-        throw new Exception('never get to getUseSerializers UseSerializers::useSerializers');
+        throw new Exception('never get to getUUID Obj6::uuid');
     }
 
     /**
-     * @return int
+     * @return UUID
      */
-    public static function sampleUseSerializers(): int {
-        return 31; /*31:useSerializers*/
+    public static function sampleUUID(): UUID {
+        return UUID::sample(); /*38:uuid*/
     }
 
     /**
+     * @param stdClass $value
      * @throws Exception
-     * @return bool
+     * @return VarClass
      */
-    public function validate(): bool {
-        return UseSerializers::validateUseSerializers($this->useSerializers);
+    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->{'UseSerializers'} = $this->toUseSerializers();
-        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 UseSerializers
+     * @param VarClass
+     * @return bool
      * @throws Exception
      */
-    public static function from(stdClass $obj): UseSerializers {
-        if (!property_exists($obj, 'UseSerializers')) {
-            throw new Exception("Missing required property");
-        }
-        return new UseSerializers(
-         UseSerializers::fromUseSerializers($obj->{'UseSerializers'})
-        );
+    public static function validateVar(VarClass $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
-     * @return UseSerializers
+     * @throws Exception
+     * @return VarClass
      */
-    public static function sample(): UseSerializers {
-        return new UseSerializers(
-         UseSerializers::sampleUseSerializers()
-        );
+    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:Ushort
-
-class Ushort {
-    private int $ushort; // json:ushort Required
 
     /**
-     * @param int $ushort
+     * @return VarClass
      */
-    public function __construct(int $ushort) {
-        $this->ushort = $ushort;
+    public static function sampleVar(): VarClass {
+        return VarClass::sample(); /*39:var*/
     }
 
     /**
-     * @param int $value
+     * @param stdClass $value
      * @throws Exception
-     * @return int
+     * @return Virtual
      */
-    public static function fromUshort(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 toUshort(): int {
-        if (Ushort::validateUshort($this->ushort))  {
-            return $this->ushort; /*int*/
+    public function toVirtual(): stdClass {
+        if (Obj6::validateVirtual($this->virtual))  {
+            return $this->virtual->to(); /*class*/
         }
-        throw new Exception('never get to this Ushort::ushort');
+        throw new Exception('never get to this Obj6::virtual');
     }
 
     /**
-     * @param int
+     * @param Virtual
      * @return bool
      * @throws Exception
      */
-    public static function validateUshort(int $value): bool {
+    public static function validateVirtual(Virtual $value): bool {
+        $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return Virtual
      */
-    public function getUshort(): int {
-        if (Ushort::validateUshort($this->ushort))  {
-            return $this->ushort;
+    public function getVirtual(): Virtual {
+        if (Obj6::validateVirtual($this->virtual))  {
+            return $this->virtual;
         }
-        throw new Exception('never get to getUshort Ushort::ushort');
+        throw new Exception('never get to getVirtual Obj6::virtual');
     }
 
     /**
-     * @return int
+     * @return Virtual
      */
-    public static function sampleUshort(): int {
-        return 31; /*31:ushort*/
+    public static function sampleVirtual(): Virtual {
+        return Virtual::sample(); /*40:virtual*/
     }
 
     /**
+     * @param stdClass $value
      * @throws Exception
-     * @return bool
+     * @return VoidClass
      */
-    public function validate(): bool {
-        return Ushort::validateUshort($this->ushort);
+    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->{'ushort'} = $this->toUshort();
-        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 Ushort
+     * @param VoidClass
+     * @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 validateVoid(VoidClass $value): bool {
+        $value->validate();
+        return true;
     }
 
     /**
-     * @return Ushort
+     * @throws Exception
+     * @return VoidClass
      */
-    public static function sample(): Ushort {
-        return new Ushort(
-         Ushort::sampleUshort()
-        );
+    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:Obj6
-
-class Obj6 {
-    private int $dummy; // json:dummy Required
-    private Using $using; // json:using Required
-    private Utf8JSONReader $utf8JSONReader; // json:Utf8JsonReader Required
-    private Utf8JSONWriter $utf8JSONWriter; // json:Utf8JsonWriter Required
-    private UUID $uuid; // json:UUID Required
-    private VarClass $var; // json:var Required
-    private Virtual $virtual; // json:virtual Required
-    private VoidClass $void; // json:void Required
-    private Volatile $volatile; // json:volatile Required
-    private WcharT $wcharT; // json:wchar_t Required
-    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 $dummy
-     * @param Using $using
-     * @param Utf8JSONReader $utf8JSONReader
-     * @param Utf8JSONWriter $utf8JSONWriter
-     * @param UUID $uuid
-     * @param VarClass $var
-     * @param Virtual $virtual
-     * @param VoidClass $void
-     * @param Volatile $volatile
-     * @param WcharT $wcharT
-     * @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
+     * @return VoidClass
      */
-    public function __construct(int $dummy, Using $using, Utf8JSONReader $utf8JSONReader, Utf8JSONWriter $utf8JSONWriter, UUID $uuid, VarClass $var, Virtual $virtual, VoidClass $void, Volatile $volatile, WcharT $wcharT, Weak $weak, Where $where, WhileClass $while, WillSet $willSet, With $with, XorClass $xor, XorEq $xorEq, Yes $yes, YieldClass $yield) {
-        $this->dummy = $dummy;
-        $this->using = $using;
-        $this->utf8JSONReader = $utf8JSONReader;
-        $this->utf8JSONWriter = $utf8JSONWriter;
-        $this->uuid = $uuid;
-        $this->var = $var;
-        $this->virtual = $virtual;
-        $this->void = $void;
-        $this->volatile = $volatile;
-        $this->wcharT = $wcharT;
-        $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 static function sampleVoid(): VoidClass {
+        return VoidClass::sample(); /*41:void*/
     }
 
     /**
-     * @param int $value
+     * @param stdClass $value
      * @throws Exception
-     * @return int
+     * @return Volatile
      */
-    public static function fromDummy(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 toDummy(): int {
-        if (Obj6::validateDummy($this->dummy))  {
-            return $this->dummy; /*int*/
+    public function toVolatile(): stdClass {
+        if (Obj6::validateVolatile($this->volatile))  {
+            return $this->volatile->to(); /*class*/
         }
-        throw new Exception('never get to this Obj6::dummy');
+        throw new Exception('never get to this Obj6::volatile');
     }
 
     /**
-     * @param int
+     * @param Volatile
      * @return bool
      * @throws Exception
      */
-    public static function validateDummy(int $value): bool {
+    public static function validateVolatile(Volatile $value): bool {
+        $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return int
+     * @return Volatile
      */
-    public function getDummy(): int {
-        if (Obj6::validateDummy($this->dummy))  {
-            return $this->dummy;
+    public function getVolatile(): Volatile {
+        if (Obj6::validateVolatile($this->volatile))  {
+            return $this->volatile;
         }
-        throw new Exception('never get to getDummy Obj6::dummy');
+        throw new Exception('never get to getVolatile Obj6::volatile');
     }
 
     /**
-     * @return int
+     * @return Volatile
      */
-    public static function sampleDummy(): int {
-        return 31; /*31:dummy*/
+    public static function sampleVolatile(): Volatile {
+        return Volatile::sample(); /*42:volatile*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return Using
+     * @return WcharT
      */
-    public static function fromUsing(stdClass $value): Using {
-        return Using::from($value); /*class*/
+    public static function fromWcharT(stdClass $value): WcharT {
+        return WcharT::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toUsing(): stdClass {
-        if (Obj6::validateUsing($this->using))  {
-            return $this->using->to(); /*class*/
+    public function toWcharT(): stdClass {
+        if (Obj6::validateWcharT($this->wcharT))  {
+            return $this->wcharT->to(); /*class*/
         }
-        throw new Exception('never get to this Obj6::using');
+        throw new Exception('never get to this Obj6::wcharT');
     }
 
     /**
-     * @param Using
+     * @param WcharT
      * @return bool
      * @throws Exception
      */
-    public static function validateUsing(Using $value): bool {
+    public static function validateWcharT(WcharT $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return Using
+     * @return WcharT
      */
-    public function getUsing(): Using {
-        if (Obj6::validateUsing($this->using))  {
-            return $this->using;
+    public function getWcharT(): WcharT {
+        if (Obj6::validateWcharT($this->wcharT))  {
+            return $this->wcharT;
         }
-        throw new Exception('never get to getUsing Obj6::using');
+        throw new Exception('never get to getWcharT Obj6::wcharT');
     }
 
     /**
-     * @return Using
+     * @return WcharT
      */
-    public static function sampleUsing(): Using {
-        return Using::sample(); /*32:using*/
+    public static function sampleWcharT(): WcharT {
+        return WcharT::sample(); /*43:wcharT*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return Utf8JSONReader
+     * @return Weak
      */
-    public static function fromUtf8JSONReader(stdClass $value): Utf8JSONReader {
-        return Utf8JSONReader::from($value); /*class*/
+    public static function fromWeak(stdClass $value): Weak {
+        return Weak::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toUtf8JSONReader(): stdClass {
-        if (Obj6::validateUtf8JSONReader($this->utf8JSONReader))  {
-            return $this->utf8JSONReader->to(); /*class*/
+    public function toWeak(): stdClass {
+        if (Obj6::validateWeak($this->weak))  {
+            return $this->weak->to(); /*class*/
         }
-        throw new Exception('never get to this Obj6::utf8JSONReader');
+        throw new Exception('never get to this Obj6::weak');
     }
 
     /**
-     * @param Utf8JSONReader
+     * @param Weak
      * @return bool
      * @throws Exception
      */
-    public static function validateUtf8JSONReader(Utf8JSONReader $value): bool {
+    public static function validateWeak(Weak $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return Utf8JSONReader
+     * @return Weak
      */
-    public function getUtf8JSONReader(): Utf8JSONReader {
-        if (Obj6::validateUtf8JSONReader($this->utf8JSONReader))  {
-            return $this->utf8JSONReader;
+    public function getWeak(): Weak {
+        if (Obj6::validateWeak($this->weak))  {
+            return $this->weak;
         }
-        throw new Exception('never get to getUtf8JSONReader Obj6::utf8JSONReader');
+        throw new Exception('never get to getWeak Obj6::weak');
     }
 
     /**
-     * @return Utf8JSONReader
+     * @return Weak
      */
-    public static function sampleUtf8JSONReader(): Utf8JSONReader {
-        return Utf8JSONReader::sample(); /*33:utf8JSONReader*/
+    public static function sampleWeak(): Weak {
+        return Weak::sample(); /*44:weak*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return Utf8JSONWriter
+     * @return Where
      */
-    public static function fromUtf8JSONWriter(stdClass $value): Utf8JSONWriter {
-        return Utf8JSONWriter::from($value); /*class*/
+    public static function fromWhere(stdClass $value): Where {
+        return Where::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toUtf8JSONWriter(): stdClass {
-        if (Obj6::validateUtf8JSONWriter($this->utf8JSONWriter))  {
-            return $this->utf8JSONWriter->to(); /*class*/
+    public function toWhere(): stdClass {
+        if (Obj6::validateWhere($this->where))  {
+            return $this->where->to(); /*class*/
         }
-        throw new Exception('never get to this Obj6::utf8JSONWriter');
+        throw new Exception('never get to this Obj6::where');
     }
 
     /**
-     * @param Utf8JSONWriter
+     * @param Where
      * @return bool
      * @throws Exception
      */
-    public static function validateUtf8JSONWriter(Utf8JSONWriter $value): bool {
+    public static function validateWhere(Where $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return Utf8JSONWriter
+     * @return Where
      */
-    public function getUtf8JSONWriter(): Utf8JSONWriter {
-        if (Obj6::validateUtf8JSONWriter($this->utf8JSONWriter))  {
-            return $this->utf8JSONWriter;
+    public function getWhere(): Where {
+        if (Obj6::validateWhere($this->where))  {
+            return $this->where;
         }
-        throw new Exception('never get to getUtf8JSONWriter Obj6::utf8JSONWriter');
+        throw new Exception('never get to getWhere Obj6::where');
     }
 
     /**
-     * @return Utf8JSONWriter
+     * @return Where
      */
-    public static function sampleUtf8JSONWriter(): Utf8JSONWriter {
-        return Utf8JSONWriter::sample(); /*34:utf8JSONWriter*/
+    public static function sampleWhere(): Where {
+        return Where::sample(); /*45:where*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return UUID
+     * @return WhileClass
      */
-    public static function fromUUID(stdClass $value): UUID {
-        return UUID::from($value); /*class*/
+    public static function fromWhile(stdClass $value): WhileClass {
+        return WhileClass::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toUUID(): stdClass {
-        if (Obj6::validateUUID($this->uuid))  {
-            return $this->uuid->to(); /*class*/
+    public function toWhile(): stdClass {
+        if (Obj6::validateWhile($this->while))  {
+            return $this->while->to(); /*class*/
         }
-        throw new Exception('never get to this Obj6::uuid');
+        throw new Exception('never get to this Obj6::while');
     }
 
     /**
-     * @param UUID
+     * @param WhileClass
      * @return bool
      * @throws Exception
      */
-    public static function validateUUID(UUID $value): bool {
+    public static function validateWhile(WhileClass $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return UUID
+     * @return WhileClass
      */
-    public function getUUID(): UUID {
-        if (Obj6::validateUUID($this->uuid))  {
-            return $this->uuid;
+    public function getWhile(): WhileClass {
+        if (Obj6::validateWhile($this->while))  {
+            return $this->while;
         }
-        throw new Exception('never get to getUUID Obj6::uuid');
+        throw new Exception('never get to getWhile Obj6::while');
     }
 
     /**
-     * @return UUID
+     * @return WhileClass
      */
-    public static function sampleUUID(): UUID {
-        return UUID::sample(); /*35:uuid*/
+    public static function sampleWhile(): WhileClass {
+        return WhileClass::sample(); /*46:while*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return VarClass
+     * @return WillSet
      */
-    public static function fromVar(stdClass $value): VarClass {
-        return VarClass::from($value); /*class*/
+    public static function fromWillSet(stdClass $value): WillSet {
+        return WillSet::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toVar(): stdClass {
-        if (Obj6::validateVar($this->var))  {
-            return $this->var->to(); /*class*/
+    public function toWillSet(): stdClass {
+        if (Obj6::validateWillSet($this->willSet))  {
+            return $this->willSet->to(); /*class*/
         }
-        throw new Exception('never get to this Obj6::var');
+        throw new Exception('never get to this Obj6::willSet');
     }
 
     /**
-     * @param VarClass
+     * @param WillSet
      * @return bool
      * @throws Exception
      */
-    public static function validateVar(VarClass $value): bool {
+    public static function validateWillSet(WillSet $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return VarClass
+     * @return WillSet
      */
-    public function getVar(): VarClass {
-        if (Obj6::validateVar($this->var))  {
-            return $this->var;
+    public function getWillSet(): WillSet {
+        if (Obj6::validateWillSet($this->willSet))  {
+            return $this->willSet;
         }
-        throw new Exception('never get to getVar Obj6::var');
+        throw new Exception('never get to getWillSet Obj6::willSet');
     }
 
     /**
-     * @return VarClass
+     * @return WillSet
      */
-    public static function sampleVar(): VarClass {
-        return VarClass::sample(); /*36:var*/
+    public static function sampleWillSet(): WillSet {
+        return WillSet::sample(); /*47:willSet*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return Virtual
+     * @return With
      */
-    public static function fromVirtual(stdClass $value): Virtual {
-        return Virtual::from($value); /*class*/
+    public static function fromWith(stdClass $value): With {
+        return With::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toVirtual(): stdClass {
-        if (Obj6::validateVirtual($this->virtual))  {
-            return $this->virtual->to(); /*class*/
+    public function toWith(): stdClass {
+        if (Obj6::validateWith($this->with))  {
+            return $this->with->to(); /*class*/
         }
-        throw new Exception('never get to this Obj6::virtual');
+        throw new Exception('never get to this Obj6::with');
     }
 
     /**
-     * @param Virtual
+     * @param With
      * @return bool
      * @throws Exception
      */
-    public static function validateVirtual(Virtual $value): bool {
+    public static function validateWith(With $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return Virtual
+     * @return With
      */
-    public function getVirtual(): Virtual {
-        if (Obj6::validateVirtual($this->virtual))  {
-            return $this->virtual;
+    public function getWith(): With {
+        if (Obj6::validateWith($this->with))  {
+            return $this->with;
         }
-        throw new Exception('never get to getVirtual Obj6::virtual');
+        throw new Exception('never get to getWith Obj6::with');
     }
 
     /**
-     * @return Virtual
+     * @return With
      */
-    public static function sampleVirtual(): Virtual {
-        return Virtual::sample(); /*37:virtual*/
+    public static function sampleWith(): With {
+        return With::sample(); /*48:with*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return VoidClass
-     */
-    public static function fromVoid(stdClass $value): VoidClass {
-        return VoidClass::from($value); /*class*/
+     * @return XorClass
+     */
+    public static function fromXor(stdClass $value): XorClass {
+        return XorClass::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toVoid(): stdClass {
-        if (Obj6::validateVoid($this->void))  {
-            return $this->void->to(); /*class*/
+    public function toXor(): stdClass {
+        if (Obj6::validateXor($this->xor))  {
+            return $this->xor->to(); /*class*/
         }
-        throw new Exception('never get to this Obj6::void');
+        throw new Exception('never get to this Obj6::xor');
     }
 
     /**
-     * @param VoidClass
+     * @param XorClass
      * @return bool
      * @throws Exception
      */
-    public static function validateVoid(VoidClass $value): bool {
+    public static function validateXor(XorClass $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return VoidClass
+     * @return XorClass
      */
-    public function getVoid(): VoidClass {
-        if (Obj6::validateVoid($this->void))  {
-            return $this->void;
+    public function getXor(): XorClass {
+        if (Obj6::validateXor($this->xor))  {
+            return $this->xor;
         }
-        throw new Exception('never get to getVoid Obj6::void');
+        throw new Exception('never get to getXor Obj6::xor');
     }
 
     /**
-     * @return VoidClass
+     * @return XorClass
      */
-    public static function sampleVoid(): VoidClass {
-        return VoidClass::sample(); /*38:void*/
+    public static function sampleXor(): XorClass {
+        return XorClass::sample(); /*49:xor*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return Volatile
+     * @return XorEq
      */
-    public static function fromVolatile(stdClass $value): Volatile {
-        return Volatile::from($value); /*class*/
+    public static function fromXorEq(stdClass $value): XorEq {
+        return XorEq::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toVolatile(): stdClass {
-        if (Obj6::validateVolatile($this->volatile))  {
-            return $this->volatile->to(); /*class*/
+    public function toXorEq(): stdClass {
+        if (Obj6::validateXorEq($this->xorEq))  {
+            return $this->xorEq->to(); /*class*/
         }
-        throw new Exception('never get to this Obj6::volatile');
+        throw new Exception('never get to this Obj6::xorEq');
     }
 
     /**
-     * @param Volatile
+     * @param XorEq
      * @return bool
      * @throws Exception
      */
-    public static function validateVolatile(Volatile $value): bool {
+    public static function validateXorEq(XorEq $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return Volatile
+     * @return XorEq
      */
-    public function getVolatile(): Volatile {
-        if (Obj6::validateVolatile($this->volatile))  {
-            return $this->volatile;
+    public function getXorEq(): XorEq {
+        if (Obj6::validateXorEq($this->xorEq))  {
+            return $this->xorEq;
         }
-        throw new Exception('never get to getVolatile Obj6::volatile');
+        throw new Exception('never get to getXorEq Obj6::xorEq');
     }
 
     /**
-     * @return Volatile
+     * @return XorEq
      */
-    public static function sampleVolatile(): Volatile {
-        return Volatile::sample(); /*39:volatile*/
+    public static function sampleXorEq(): XorEq {
+        return XorEq::sample(); /*50:xorEq*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return WcharT
+     * @return Yes
      */
-    public static function fromWcharT(stdClass $value): WcharT {
-        return WcharT::from($value); /*class*/
+    public static function fromYes(stdClass $value): Yes {
+        return Yes::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toWcharT(): stdClass {
-        if (Obj6::validateWcharT($this->wcharT))  {
-            return $this->wcharT->to(); /*class*/
+    public function toYes(): stdClass {
+        if (Obj6::validateYes($this->yes))  {
+            return $this->yes->to(); /*class*/
         }
-        throw new Exception('never get to this Obj6::wcharT');
+        throw new Exception('never get to this Obj6::yes');
     }
 
     /**
-     * @param WcharT
+     * @param Yes
      * @return bool
      * @throws Exception
      */
-    public static function validateWcharT(WcharT $value): bool {
+    public static function validateYes(Yes $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return WcharT
+     * @return Yes
      */
-    public function getWcharT(): WcharT {
-        if (Obj6::validateWcharT($this->wcharT))  {
-            return $this->wcharT;
+    public function getYes(): Yes {
+        if (Obj6::validateYes($this->yes))  {
+            return $this->yes;
         }
-        throw new Exception('never get to getWcharT Obj6::wcharT');
+        throw new Exception('never get to getYes Obj6::yes');
     }
 
     /**
-     * @return WcharT
+     * @return Yes
      */
-    public static function sampleWcharT(): WcharT {
-        return WcharT::sample(); /*40:wcharT*/
+    public static function sampleYes(): Yes {
+        return Yes::sample(); /*51:yes*/
     }
 
     /**
      * @param stdClass $value
      * @throws Exception
-     * @return Weak
+     * @return YieldClass
      */
-    public static function fromWeak(stdClass $value): Weak {
-        return Weak::from($value); /*class*/
+    public static function fromYield(stdClass $value): YieldClass {
+        return YieldClass::from($value); /*class*/
     }
 
     /**
      * @throws Exception
      * @return stdClass
      */
-    public function toWeak(): stdClass {
-        if (Obj6::validateWeak($this->weak))  {
-            return $this->weak->to(); /*class*/
+    public function toYield(): stdClass {
+        if (Obj6::validateYield($this->yield))  {
+            return $this->yield->to(); /*class*/
         }
-        throw new Exception('never get to this Obj6::weak');
+        throw new Exception('never get to this Obj6::yield');
     }
 
     /**
-     * @param Weak
+     * @param YieldClass
      * @return bool
      * @throws Exception
      */
-    public static function validateWeak(Weak $value): bool {
+    public static function validateYield(YieldClass $value): bool {
         $value->validate();
         return true;
     }
 
     /**
      * @throws Exception
-     * @return Weak
+     * @return YieldClass
      */
-    public function getWeak(): Weak {
-        if (Obj6::validateWeak($this->weak))  {
-            return $this->weak;
+    public function getYield(): YieldClass {
+        if (Obj6::validateYield($this->yield))  {
+            return $this->yield;
         }
-        throw new Exception('never get to getWeak Obj6::weak');
+        throw new Exception('never get to getYield Obj6::yield');
     }
 
     /**
-     * @return Weak
+     * @return YieldClass
      */
-    public static function sampleWeak(): Weak {
-        return Weak::sample(); /*41:weak*/
+    public static function sampleYield(): YieldClass {
+        return YieldClass::sample(); /*52:yield*/
     }
 
     /**
-     * @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 Obj6::validateDummy($this->dummy)
+        || 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);
     }
 
     /**
-     * @throws Exception
      * @return stdClass
-     */
-    public function toWhere(): stdClass {
-        if (Obj6::validateWhere($this->where))  {
-            return $this->where->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj6::where');
-    }
-
-    /**
-     * @param Where
-     * @return bool
      * @throws Exception
      */
-    public static function validateWhere(Where $value): bool {
-        $value->validate();
-        return true;
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'dummy'} = $this->toDummy();
+        $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 Obj6
      * @throws Exception
-     * @return Where
      */
-    public function getWhere(): Where {
-        if (Obj6::validateWhere($this->where))  {
-            return $this->where;
+    public static function from(stdClass $obj): Obj6 {
+        if (!property_exists($obj, 'dummy')) {
+            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");
+        }
+        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");
         }
-        throw new Exception('never get to getWhere Obj6::where');
-    }
-
-    /**
-     * @return Where
-     */
-    public static function sampleWhere(): Where {
-        return Where::sample(); /*42:where*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return WhileClass
-     */
-    public static function fromWhile(stdClass $value): WhileClass {
-        return WhileClass::from($value); /*class*/
-    }
-
-    /**
-     * @throws Exception
-     * @return stdClass
-     */
-    public function toWhile(): stdClass {
-        if (Obj6::validateWhile($this->while))  {
-            return $this->while->to(); /*class*/
+        if (!property_exists($obj, 'YES')) {
+            throw new Exception("Missing required property");
         }
-        throw new Exception('never get to this Obj6::while');
+        if (!property_exists($obj, 'yield')) {
+            throw new Exception("Missing required property");
+        }
+        return new Obj6(
+         Obj6::fromDummy($obj->{'dummy'})
+        ,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'})
+        );
     }
 
     /**
-     * @param WhileClass
-     * @return bool
-     * @throws Exception
+     * @return Obj6
      */
-    public static function validateWhile(WhileClass $value): bool {
-        $value->validate();
-        return true;
+    public static function sample(): Obj6 {
+        return new Obj6(
+         Obj6::sampleDummy()
+        ,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()
+        );
     }
+}
 
-    /**
-     * @throws Exception
-     * @return WhileClass
-     */
-    public function getWhile(): WhileClass {
-        if (Obj6::validateWhile($this->while))  {
-            return $this->while;
-        }
-        throw new Exception('never get to getWhile Obj6::while');
-    }
+// This is an autogenerated file:Unsafe
+
+class Unsafe {
+    private int $unsafe; // json:unsafe Required
 
     /**
-     * @return WhileClass
+     * @param int $unsafe
      */
-    public static function sampleWhile(): WhileClass {
-        return WhileClass::sample(); /*43:while*/
+    public function __construct(int $unsafe) {
+        $this->unsafe = $unsafe;
     }
 
     /**
-     * @param stdClass $value
+     * @param int $value
      * @throws Exception
-     * @return WillSet
+     * @return int
      */
-    public static function fromWillSet(stdClass $value): WillSet {
-        return WillSet::from($value); /*class*/
+    public static function fromUnsafe(int $value): int {
+        return $value; /*int*/
     }
 
     /**
      * @throws Exception
-     * @return stdClass
+     * @return int
      */
-    public function toWillSet(): stdClass {
-        if (Obj6::validateWillSet($this->willSet))  {
-            return $this->willSet->to(); /*class*/
+    public function toUnsafe(): int {
+        if (Unsafe::validateUnsafe($this->unsafe))  {
+            return $this->unsafe; /*int*/
         }
-        throw new Exception('never get to this Obj6::willSet');
+        throw new Exception('never get to this Unsafe::unsafe');
     }
 
     /**
-     * @param WillSet
+     * @param int
      * @return bool
      * @throws Exception
      */
-    public static function validateWillSet(WillSet $value): bool {
-        $value->validate();
+    public static function validateUnsafe(int $value): bool {
         return true;
     }
 
     /**
      * @throws Exception
-     * @return WillSet
+     * @return int
      */
-    public function getWillSet(): WillSet {
-        if (Obj6::validateWillSet($this->willSet))  {
-            return $this->willSet;
+    public function getUnsafe(): int {
+        if (Unsafe::validateUnsafe($this->unsafe))  {
+            return $this->unsafe;
         }
-        throw new Exception('never get to getWillSet Obj6::willSet');
+        throw new Exception('never get to getUnsafe Unsafe::unsafe');
     }
 
     /**
-     * @return WillSet
+     * @return int
      */
-    public static function sampleWillSet(): WillSet {
-        return WillSet::sample(); /*44:willSet*/
+    public static function sampleUnsafe(): int {
+        return 31; /*31:unsafe*/
     }
 
     /**
-     * @param stdClass $value
      * @throws Exception
-     * @return With
+     * @return bool
      */
-    public static function fromWith(stdClass $value): With {
-        return With::from($value); /*class*/
+    public function validate(): bool {
+        return Unsafe::validateUnsafe($this->unsafe);
     }
 
     /**
-     * @throws Exception
      * @return stdClass
-     */
-    public function toWith(): stdClass {
-        if (Obj6::validateWith($this->with))  {
-            return $this->with->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj6::with');
-    }
-
-    /**
-     * @param With
-     * @return bool
      * @throws Exception
      */
-    public static function validateWith(With $value): bool {
-        $value->validate();
-        return true;
+    public function to(): stdClass  {
+        $out = new stdClass();
+        $out->{'unsafe'} = $this->toUnsafe();
+        return $out;
     }
 
     /**
+     * @param stdClass $obj
+     * @return Unsafe
      * @throws Exception
-     * @return With
      */
-    public function getWith(): With {
-        if (Obj6::validateWith($this->with))  {
-            return $this->with;
+    public static function from(stdClass $obj): Unsafe {
+        if (!property_exists($obj, 'unsafe')) {
+            throw new Exception("Missing required property");
         }
-        throw new Exception('never get to getWith Obj6::with');
-    }
-
-    /**
-     * @return With
-     */
-    public static function sampleWith(): With {
-        return With::sample(); /*45:with*/
-    }
-
-    /**
-     * @param stdClass $value
-     * @throws Exception
-     * @return XorClass
-     */
-    public static function fromXor(stdClass $value): XorClass {
-        return XorClass::from($value); /*class*/
+        return new Unsafe(
+         Unsafe::fromUnsafe($obj->{'unsafe'})
+        );
     }
 
     /**
-     * @throws Exception
-     * @return stdClass
+     * @return Unsafe
      */
-    public function toXor(): stdClass {
-        if (Obj6::validateXor($this->xor))  {
-            return $this->xor->to(); /*class*/
-        }
-        throw new Exception('never get to this Obj6::xor');
+    public static function sample(): Unsafe {
+        return new Unsafe(
+         Unsafe::sampleUnsafe()
+        );
     }
+}
 
-    /**
-     * @param XorClass
-     * @return bool
-     * @throws Exception
-     */
-    public static function validateXor(XorClass $value): bool {
-        $value->validate();
-        return true;
-    }
+// This is an autogenerated file:Unsigned
 
-    /**
-     * @throws Exception
-     * @return XorClass
-     */
-    public function getXor(): XorClass {
-        if (Obj6::validateXor($this->xor))  {
-            return $this->xor;
-        }
-        throw new Exception('never get to getXor Obj6::xor');
-    }
+class Unsigned {
+    private int $unsigned; // json:unsigned Required
 
     /**
-     * @return XorClass
+     * @param int $unsigned
      */
-    public static function sampleXor(): XorClass {
-        return XorClass::sample(); /*46:xor*/
+    public function __construct(int $unsigned) {
+        $this->unsigned = $unsigned;
     }
 
     /**
-     * @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 fromUnsigned(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 toUnsigned(): int {
+        if (Unsigned::validateUnsigned($this->unsigned))  {
+            return $this->unsigned; /*int*/
         }
-        throw new Exception('never get to this Obj6::xorEq');
+        throw new Exception('never get to this Unsigned::unsigned');
     }
 
     /**
-     * @param XorEq
+     * @param int
      * @return bool
      * @throws Exception
      */
-    public static function validateXorEq(XorEq $value): bool {
-        $value->validate();
+    public static function validateUnsigned(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 getUnsigned(): int {
+        if (Unsigned::validateUnsigned($this->unsigned))  {
+            return $this->unsigned;
         }
-        throw new Exception('never get to getXorEq Obj6::xorEq');
+        throw new Exception('never get to getUnsigned Unsigned::unsigned');
     }
 
     /**
-     * @return XorEq
+     * @return int
      */
-    public static function sampleXorEq(): XorEq {
-        return XorEq::sample(); /*47:xorEq*/
+    public static function sampleUnsigned(): int {
+        return 31; /*31:unsigned*/
     }
 
     /**
-     * @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 Unsigned::validateUnsigned($this->unsigned);
     }
 
     /**
-     * @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->{'unsigned'} = $this->toUnsigned();
+        return $out;
     }
 
     /**
-     * @param Yes
-     * @return bool
+     * @param stdClass $obj
+     * @return Unsigned
      * @throws Exception
      */
-    public static function validateYes(Yes $value): bool {
-        $value->validate();
-        return true;
+    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'})
+        );
     }
 
     /**
-     * @throws Exception
-     * @return Yes
+     * @return Unsigned
      */
-    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(): Unsigned {
+        return new Unsigned(
+         Unsigned::sampleUnsigned()
+        );
     }
+}
+
+// This is an autogenerated file:Ushort
+
+class Ushort {
+    private int $ushort; // json:ushort Required
 
     /**
-     * @return Yes
+     * @param int $ushort
      */
-    public static function sampleYes(): Yes {
-        return Yes::sample(); /*48:yes*/
+    public function __construct(int $ushort) {
+        $this->ushort = $ushort;
     }
 
     /**
-     * @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 fromUshort(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 toUshort(): int {
+        if (Ushort::validateUshort($this->ushort))  {
+            return $this->ushort; /*int*/
         }
-        throw new Exception('never get to this Obj6::yield');
+        throw new Exception('never get to this Ushort::ushort');
     }
 
     /**
-     * @param YieldClass
+     * @param int
      * @return bool
      * @throws Exception
      */
-    public static function validateYield(YieldClass $value): bool {
-        $value->validate();
+    public static function validateUshort(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 getUshort(): int {
+        if (Ushort::validateUshort($this->ushort))  {
+            return $this->ushort;
         }
-        throw new Exception('never get to getYield Obj6::yield');
+        throw new Exception('never get to getUshort Ushort::ushort');
     }
 
     /**
-     * @return YieldClass
+     * @return int
      */
-    public static function sampleYield(): YieldClass {
-        return YieldClass::sample(); /*49:yield*/
+    public static function sampleUshort(): int {
+        return 31; /*31:ushort*/
     }
 
     /**
@@ -52891,25 +53494,7 @@ class Obj6 {
      * @return bool
      */
     public function validate(): bool {
-        return Obj6::validateDummy($this->dummy)
-        || Obj6::validateUsing($this->using)
-        || Obj6::validateUtf8JSONReader($this->utf8JSONReader)
-        || Obj6::validateUtf8JSONWriter($this->utf8JSONWriter)
-        || Obj6::validateUUID($this->uuid)
-        || Obj6::validateVar($this->var)
-        || Obj6::validateVirtual($this->virtual)
-        || Obj6::validateVoid($this->void)
-        || Obj6::validateVolatile($this->volatile)
-        || Obj6::validateWcharT($this->wcharT)
-        || Obj6::validateWeak($this->weak)
-        || Obj6::validateWhere($this->where)
-        || Obj6::validateWhile($this->while)
-        || Obj6::validateWillSet($this->willSet)
-        || Obj6::validateWith($this->with)
-        || Obj6::validateXor($this->xor)
-        || Obj6::validateXorEq($this->xorEq)
-        || Obj6::validateYes($this->yes)
-        || Obj6::validateYield($this->yield);
+        return Ushort::validateUshort($this->ushort);
     }
 
     /**
@@ -52918,138 +53503,30 @@ class Obj6 {
      */
     public function to(): stdClass  {
         $out = new stdClass();
-        $out->{'dummy'} = $this->toDummy();
-        $out->{'using'} = $this->toUsing();
-        $out->{'Utf8JsonReader'} = $this->toUtf8JSONReader();
-        $out->{'Utf8JsonWriter'} = $this->toUtf8JSONWriter();
-        $out->{'UUID'} = $this->toUUID();
-        $out->{'var'} = $this->toVar();
-        $out->{'virtual'} = $this->toVirtual();
-        $out->{'void'} = $this->toVoid();
-        $out->{'volatile'} = $this->toVolatile();
-        $out->{'wchar_t'} = $this->toWcharT();
-        $out->{'weak'} = $this->toWeak();
-        $out->{'where'} = $this->toWhere();
-        $out->{'while'} = $this->toWhile();
-        $out->{'willSet'} = $this->toWillSet();
-        $out->{'with'} = $this->toWith();
-        $out->{'xor'} = $this->toXor();
-        $out->{'xor_eq'} = $this->toXorEq();
-        $out->{'YES'} = $this->toYes();
-        $out->{'yield'} = $this->toYield();
+        $out->{'ushort'} = $this->toUshort();
         return $out;
     }
 
     /**
      * @param stdClass $obj
-     * @return Obj6
+     * @return Ushort
      * @throws Exception
      */
-    public static function from(stdClass $obj): Obj6 {
-        if (!property_exists($obj, 'dummy')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'using')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'Utf8JsonReader')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'Utf8JsonWriter')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'UUID')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'var')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'virtual')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'void')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'volatile')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'wchar_t')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'weak')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'where')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'while')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'willSet')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'with')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'xor')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'xor_eq')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'YES')) {
-            throw new Exception("Missing required property");
-        }
-        if (!property_exists($obj, 'yield')) {
+    public static function from(stdClass $obj): Ushort {
+        if (!property_exists($obj, 'ushort')) {
             throw new Exception("Missing required property");
         }
-        return new Obj6(
-         Obj6::fromDummy($obj->{'dummy'})
-        ,Obj6::fromUsing($obj->{'using'})
-        ,Obj6::fromUtf8JSONReader($obj->{'Utf8JsonReader'})
-        ,Obj6::fromUtf8JSONWriter($obj->{'Utf8JsonWriter'})
-        ,Obj6::fromUUID($obj->{'UUID'})
-        ,Obj6::fromVar($obj->{'var'})
-        ,Obj6::fromVirtual($obj->{'virtual'})
-        ,Obj6::fromVoid($obj->{'void'})
-        ,Obj6::fromVolatile($obj->{'volatile'})
-        ,Obj6::fromWcharT($obj->{'wchar_t'})
-        ,Obj6::fromWeak($obj->{'weak'})
-        ,Obj6::fromWhere($obj->{'where'})
-        ,Obj6::fromWhile($obj->{'while'})
-        ,Obj6::fromWillSet($obj->{'willSet'})
-        ,Obj6::fromWith($obj->{'with'})
-        ,Obj6::fromXor($obj->{'xor'})
-        ,Obj6::fromXorEq($obj->{'xor_eq'})
-        ,Obj6::fromYes($obj->{'YES'})
-        ,Obj6::fromYield($obj->{'yield'})
+        return new Ushort(
+         Ushort::fromUshort($obj->{'ushort'})
         );
     }
 
     /**
-     * @return Obj6
+     * @return Ushort
      */
-    public static function sample(): Obj6 {
-        return new Obj6(
-         Obj6::sampleDummy()
-        ,Obj6::sampleUsing()
-        ,Obj6::sampleUtf8JSONReader()
-        ,Obj6::sampleUtf8JSONWriter()
-        ,Obj6::sampleUUID()
-        ,Obj6::sampleVar()
-        ,Obj6::sampleVirtual()
-        ,Obj6::sampleVoid()
-        ,Obj6::sampleVolatile()
-        ,Obj6::sampleWcharT()
-        ,Obj6::sampleWeak()
-        ,Obj6::sampleWhere()
-        ,Obj6::sampleWhile()
-        ,Obj6::sampleWillSet()
-        ,Obj6::sampleWith()
-        ,Obj6::sampleXor()
-        ,Obj6::sampleXorEq()
-        ,Obj6::sampleYes()
-        ,Obj6::sampleYield()
+    public static function sample(): Ushort {
+        return new Ushort(
+         Ushort::sampleUshort()
         );
     }
 }
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 0140888..9ec706c 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
@@ -3351,6 +3351,7 @@ class Obj3 {
     Left                       left;                           // json: "left"
     Let                        let;                            // json: "let"
     List                       list;                           // json: "list"
+    LocalDate                  local_date;                     // json: "LocalDate"
     Locale                     locale;                         // json: "Locale"
     Lock                       lock;                           // json: "lock"
     Long                       long;                           // json: "long"
@@ -3366,7 +3367,6 @@ class Obj3 {
     Newtonsoft                 newtonsoft;                     // json: "newtonsoft"
     Nil                        nil;                            // json: "nil"
     No                         no;                             // json: "NO"
-    Noexcept                   noexcept;                       // json: "noexcept"
     If                         obj3_if;                        // json: "if"
     Import                     obj3_import;                    // json: "import"
     Inline                     obj3_inline;                    // json: "inline"
@@ -3419,6 +3419,7 @@ class Obj3 {
             "left" : left,
             "let" : let,
             "list" : list,
+            "LocalDate" : local_date,
             "Locale" : locale,
             "lock" : lock,
             "long" : long,
@@ -3434,7 +3435,6 @@ class Obj3 {
             "newtonsoft" : newtonsoft,
             "nil" : nil,
             "NO" : no,
-            "noexcept" : noexcept,
             "if" : obj3_if,
             "import" : obj3_import,
             "inline" : obj3_inline,
@@ -3537,6 +3537,8 @@ Obj3 Obj3_from_JSON(mixed json) {
     retval.let = json["let"];
     if (!mappingp(json["list"])) error("Expected object");
     retval.list = json["list"];
+    if (!mappingp(json["LocalDate"])) error("Expected object");
+    retval.local_date = json["LocalDate"];
     if (!mappingp(json["Locale"])) error("Expected object");
     retval.locale = json["Locale"];
     if (!mappingp(json["lock"])) error("Expected object");
@@ -3567,8 +3569,6 @@ Obj3 Obj3_from_JSON(mixed json) {
     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["if"])) error("Expected object");
     retval.obj3_if = json["if"];
     if (!mappingp(json["import"])) error("Expected object");
@@ -4485,6 +4485,27 @@ List List_from_JSON(mixed json) {
     return retval;
 }
 
+class LocalDate {
+    int local_date; // json: "LocalDate"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "LocalDate" : local_date,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+LocalDate LocalDate_from_JSON(mixed json) {
+    LocalDate retval = LocalDate();
+
+    if (!intp(json["LocalDate"])) error("Expected integer");
+    retval.local_date = json["LocalDate"];
+
+    return retval;
+}
+
 class Locale {
     int locale; // json: "Locale"
 
@@ -4800,27 +4821,6 @@ No No_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 If {
     int if_if; // json: "if"
 
@@ -4929,6 +4929,7 @@ Lambda Lambda_from_JSON(mixed json) {
 class Obj4 {
     int             dummy;            // json: "dummy"
     NoSuchMethod    no_such_method;   // json: "noSuchMethod"
+    Noexcept        noexcept;         // json: "noexcept"
     Nonatomic       nonatomic;        // json: "nonatomic"
     None            none;             // json: "None"
     Nonlocal        nonlocal;         // json: "nonlocal"
@@ -4952,6 +4953,8 @@ class Obj4 {
     Return          obj4_return;      // json: "return"
     ObjectMapper    object_mapper;    // json: "ObjectMapper"
     Of              of;               // json: "of"
+    OffsetDateTime  offset_date_time; // json: "OffsetDateTime"
+    OffsetTime      offset_time;      // json: "OffsetTime"
     Oneway          oneway;           // json: "oneway"
     Open            open;             // json: "open"
     Operator        operator;         // json: "operator"
@@ -4989,14 +4992,12 @@ class Obj4 {
     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,
             "noSuchMethod" : no_such_method,
+            "noexcept" : noexcept,
             "nonatomic" : nonatomic,
             "None" : none,
             "nonlocal" : nonlocal,
@@ -5020,6 +5021,8 @@ class Obj4 {
             "return" : obj4_return,
             "ObjectMapper" : object_mapper,
             "of" : of,
+            "OffsetDateTime" : offset_date_time,
+            "OffsetTime" : offset_time,
             "oneway" : oneway,
             "open" : open,
             "operator" : operator,
@@ -5057,9 +5060,6 @@ class Obj4 {
             "runtimeType" : runtime_type,
             "s" : s,
             "sbyte" : sbyte,
-            "sealed" : sealed,
-            "SEL" : sel,
-            "select" : select,
         ]);
 
         return Standards.JSON.encode(json);
@@ -5073,6 +5073,8 @@ Obj4 Obj4_from_JSON(mixed json) {
     retval.dummy = json["dummy"];
     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");
@@ -5119,6 +5121,10 @@ Obj4 Obj4_from_JSON(mixed json) {
     retval.object_mapper = json["ObjectMapper"];
     if (!mappingp(json["of"])) error("Expected object");
     retval.of = json["of"];
+    if (!mappingp(json["OffsetDateTime"])) error("Expected object");
+    retval.offset_date_time = json["OffsetDateTime"];
+    if (!mappingp(json["OffsetTime"])) error("Expected object");
+    retval.offset_time = json["OffsetTime"];
     if (!mappingp(json["oneway"])) error("Expected object");
     retval.oneway = json["oneway"];
     if (!mappingp(json["open"])) error("Expected object");
@@ -5193,12 +5199,6 @@ Obj4 Obj4_from_JSON(mixed json) {
     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;
 }
@@ -5224,6 +5224,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"
 
@@ -5707,6 +5728,48 @@ Of Of_from_JSON(mixed json) {
     return retval;
 }
 
+class OffsetDateTime {
+    int offset_date_time; // json: "OffsetDateTime"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "OffsetDateTime" : offset_date_time,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+OffsetDateTime OffsetDateTime_from_JSON(mixed json) {
+    OffsetDateTime retval = OffsetDateTime();
+
+    if (!intp(json["OffsetDateTime"])) error("Expected integer");
+    retval.offset_date_time = json["OffsetDateTime"];
+
+    return retval;
+}
+
+class OffsetTime {
+    int offset_time; // json: "OffsetTime"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "OffsetTime" : offset_time,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+OffsetTime OffsetTime_from_JSON(mixed json) {
+    OffsetTime retval = OffsetTime();
+
+    if (!intp(json["OffsetTime"])) error("Expected integer");
+    retval.offset_time = json["OffsetTime"];
+
+    return retval;
+}
+
 class Oneway {
     int oneway; // json: "oneway"
 
@@ -6483,69 +6546,6 @@ Sbyte Sbyte_from_JSON(mixed json) {
     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"
     KSerializer        k_serializer;        // json: "KSerializer"
@@ -6558,6 +6558,9 @@ class Obj5 {
     Typedef            obj5_typedef;        // json: "typedef"
     Typeof             obj5_typeof;         // json: "typeof"
     PrimitiveKind      primitive_kind;      // json: "PrimitiveKind"
+    Sealed             sealed;              // json: "sealed"
+    Sel                sel;                 // json: "SEL"
+    Select             select;              // json: "select"
     Self               self;                // json: "Self"
     Sendable           sendable;            // json: "Sendable"
     SerialDescriptor   serial_descriptor;   // json: "SerialDescriptor"
@@ -6608,10 +6611,7 @@ class Obj5 {
     Undefined          undefined;           // json: "undefined"
     Union              union;               // json: "union"
     Unowned            unowned;             // json: "unowned"
-    Unsafe             unsafe;              // json: "unsafe"
-    Unsigned           unsigned;            // json: "unsigned"
     UseSerializers     use_serializers;     // json: "UseSerializers"
-    Ushort             ushort;              // json: "ushort"
 
     string encode_json() {
         mapping(string:mixed) json = ([
@@ -6626,6 +6626,9 @@ class Obj5 {
             "typedef" : obj5_typedef,
             "typeof" : obj5_typeof,
             "PrimitiveKind" : primitive_kind,
+            "sealed" : sealed,
+            "SEL" : sel,
+            "select" : select,
             "Self" : self,
             "Sendable" : sendable,
             "SerialDescriptor" : serial_descriptor,
@@ -6676,10 +6679,7 @@ class Obj5 {
             "undefined" : undefined,
             "union" : union,
             "unowned" : unowned,
-            "unsafe" : unsafe,
-            "unsigned" : unsigned,
             "UseSerializers" : use_serializers,
-            "ushort" : ushort,
         ]);
 
         return Standards.JSON.encode(json);
@@ -6711,6 +6711,12 @@ Obj5 Obj5_from_JSON(mixed json) {
     retval.obj5_typeof = json["typeof"];
     if (!mappingp(json["PrimitiveKind"])) error("Expected object");
     retval.primitive_kind = json["PrimitiveKind"];
+    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");
@@ -6811,14 +6817,8 @@ Obj5 Obj5_from_JSON(mixed json) {
     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["UseSerializers"])) error("Expected object");
     retval.use_serializers = json["UseSerializers"];
-    if (!mappingp(json["ushort"])) error("Expected object");
-    retval.ushort = json["ushort"];
 
     return retval;
 }
@@ -7033,6 +7033,69 @@ PrimitiveKind PrimitiveKind_from_JSON(mixed json) {
     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"
 
@@ -8083,48 +8146,6 @@ Unowned Unowned_from_JSON(mixed json) {
     return retval;
 }
 
-class Unsafe {
-    int unsafe; // json: "unsafe"
-
-    string encode_json() {
-        mapping(string:mixed) json = ([
-            "unsafe" : unsafe,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-Unsafe Unsafe_from_JSON(mixed json) {
-    Unsafe retval = Unsafe();
-
-    if (!intp(json["unsafe"])) error("Expected integer");
-    retval.unsafe = json["unsafe"];
-
-    return retval;
-}
-
-class Unsigned {
-    int unsigned; // json: "unsigned"
-
-    string encode_json() {
-        mapping(string:mixed) json = ([
-            "unsigned" : unsigned,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-Unsigned Unsigned_from_JSON(mixed json) {
-    Unsigned retval = Unsigned();
-
-    if (!intp(json["unsigned"])) error("Expected integer");
-    retval.unsigned = json["unsigned"];
-
-    return retval;
-}
-
 class UseSerializers {
     int use_serializers; // json: "UseSerializers"
 
@@ -8146,31 +8167,13 @@ UseSerializers UseSerializers_from_JSON(mixed json) {
     return retval;
 }
 
-class Ushort {
-    int ushort; // json: "ushort"
-
-    string encode_json() {
-        mapping(string:mixed) json = ([
-            "ushort" : ushort,
-        ]);
-
-        return Standards.JSON.encode(json);
-    }
-}
-
-Ushort Ushort_from_JSON(mixed json) {
-    Ushort retval = Ushort();
-
-    if (!intp(json["ushort"])) error("Expected integer");
-    retval.ushort = json["ushort"];
-
-    return retval;
-}
-
 class Obj6 {
     int            dummy;            // json: "dummy"
     Void           obj6_void;        // json: "void"
     While          obj6_while;       // json: "while"
+    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"
@@ -8193,6 +8196,9 @@ class Obj6 {
             "dummy" : dummy,
             "void" : obj6_void,
             "while" : obj6_while,
+            "unsafe" : unsafe,
+            "unsigned" : unsigned,
+            "ushort" : ushort,
             "using" : using,
             "Utf8JsonReader" : utf8_json_reader,
             "Utf8JsonWriter" : utf8_json_writer,
@@ -8224,6 +8230,12 @@ Obj6 Obj6_from_JSON(mixed json) {
     retval.obj6_void = json["void"];
     if (!mappingp(json["while"])) error("Expected object");
     retval.obj6_while = json["while"];
+    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");
@@ -8302,6 +8314,69 @@ While While_from_JSON(mixed json) {
     return retval;
 }
 
+class Unsafe {
+    int unsafe; // json: "unsafe"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "unsafe" : unsafe,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Unsafe Unsafe_from_JSON(mixed json) {
+    Unsafe retval = Unsafe();
+
+    if (!intp(json["unsafe"])) error("Expected integer");
+    retval.unsafe = json["unsafe"];
+
+    return retval;
+}
+
+class Unsigned {
+    int unsigned; // json: "unsigned"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "unsigned" : unsigned,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Unsigned Unsigned_from_JSON(mixed json) {
+    Unsigned retval = Unsigned();
+
+    if (!intp(json["unsigned"])) error("Expected integer");
+    retval.unsigned = json["unsigned"];
+
+    return retval;
+}
+
+class Ushort {
+    int ushort; // json: "ushort"
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+            "ushort" : ushort,
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+Ushort Ushort_from_JSON(mixed json) {
+    Ushort retval = Ushort();
+
+    if (!intp(json["ushort"])) error("Expected integer");
+    retval.ushort = json["ushort"];
+
+    return retval;
+}
+
 class Using {
     int using; // json: "using"
 
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 5a12279..cc1b394 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
@@ -3180,6 +3180,22 @@ class ListClass:
         return result
 
 
+@dataclass
+class LocalDate:
+    local_date: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'LocalDate':
+        assert isinstance(obj, dict)
+        local_date = from_int(obj["LocalDate"])
+        return LocalDate(local_date)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["LocalDate"] = from_int(self.local_date)
+        return result
+
+
 @dataclass
 class Locale:
     locale: int
@@ -3420,22 +3436,6 @@ class No:
         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 If:
     if_if: int
@@ -3549,6 +3549,7 @@ class Obj3:
     json_parser: JSONParser
     json_reader: JSONReader
     json_token_type: JSONTokenType
+    local_date: LocalDate
     locale: Locale
     map_entry: MapEntry
     no: No
@@ -3598,7 +3599,6 @@ class Obj3:
     new: New
     newtonsoft: Newtonsoft
     nil: Nil
-    noexcept: Noexcept
 
     @staticmethod
     def from_dict(obj: Any) -> 'Obj3':
@@ -3618,6 +3618,7 @@ class Obj3:
         json_parser = JSONParser.from_dict(obj["JsonParser"])
         json_reader = JSONReader.from_dict(obj["JsonReader"])
         json_token_type = JSONTokenType.from_dict(obj["JsonTokenType"])
+        local_date = LocalDate.from_dict(obj["LocalDate"])
         locale = Locale.from_dict(obj["Locale"])
         map_entry = MapEntry.from_dict(obj["MapEntry"])
         no = No.from_dict(obj["NO"])
@@ -3667,8 +3668,7 @@ class Obj3:
         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, 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, local_date, 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)
 
     def to_dict(self) -> dict:
         result: dict = {}
@@ -3687,6 +3687,7 @@ class Obj3:
         result["JsonParser"] = to_class(JSONParser, self.json_parser)
         result["JsonReader"] = to_class(JSONReader, self.json_reader)
         result["JsonTokenType"] = to_class(JSONTokenType, self.json_token_type)
+        result["LocalDate"] = to_class(LocalDate, self.local_date)
         result["Locale"] = to_class(Locale, self.locale)
         result["MapEntry"] = to_class(MapEntry, self.map_entry)
         result["NO"] = to_class(No, self.no)
@@ -3736,7 +3737,6 @@ class Obj3:
         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
 
 
@@ -3756,6 +3756,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
@@ -4124,6 +4140,38 @@ class Of:
         return result
 
 
+@dataclass
+class OffsetDateTime:
+    offset_date_time: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'OffsetDateTime':
+        assert isinstance(obj, dict)
+        offset_date_time = from_int(obj["OffsetDateTime"])
+        return OffsetDateTime(offset_date_time)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["OffsetDateTime"] = from_int(self.offset_date_time)
+        return result
+
+
+@dataclass
+class OffsetTime:
+    offset_time: int
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'OffsetTime':
+        assert isinstance(obj, dict)
+        offset_time = from_int(obj["OffsetTime"])
+        return OffsetTime(offset_time)
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        result["OffsetTime"] = from_int(self.offset_time)
+        return result
+
+
 @dataclass
 class Oneway:
     oneway: int
@@ -4716,54 +4764,6 @@ class 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:
     ns_error: NSError
@@ -4772,11 +4772,13 @@ class Obj4:
     null: Null
     none: NoneClass
     object_mapper: ObjectMapper
+    offset_date_time: OffsetDateTime
+    offset_time: OffsetTime
     protocol: Protocol
     reg_exp: RegExp
-    sel: Sel
     dummy: int
     no_such_method: NoSuchMethod
+    noexcept: Noexcept
     nonatomic: Nonatomic
     obj4_none: Obj4None
     obj4_nonlocal: Nonlocal
@@ -4829,8 +4831,6 @@ class Obj4:
     runtime_type: RuntimeType
     s: S
     sbyte: Sbyte
-    sealed: Sealed
-    select: Select
 
     @staticmethod
     def from_dict(obj: Any) -> 'Obj4':
@@ -4841,11 +4841,13 @@ class Obj4:
         null = Null.from_dict(obj["NULL"])
         none = NoneClass.from_dict(obj["None"])
         object_mapper = ObjectMapper.from_dict(obj["ObjectMapper"])
+        offset_date_time = OffsetDateTime.from_dict(obj["OffsetDateTime"])
+        offset_time = OffsetTime.from_dict(obj["OffsetTime"])
         protocol = Protocol.from_dict(obj["Protocol"])
         reg_exp = RegExp.from_dict(obj["RegExp"])
-        sel = Sel.from_dict(obj["SEL"])
         dummy = from_int(obj["dummy"])
         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"])
@@ -4898,9 +4900,7 @@ class Obj4:
         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(ns_error, ns_object, ns_string, null, none, object_mapper, offset_date_time, offset_time, protocol, reg_exp, dummy, 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, obj4_return, right, runtime_type, s, sbyte)
 
     def to_dict(self) -> dict:
         result: dict = {}
@@ -4910,11 +4910,13 @@ class Obj4:
         result["NULL"] = to_class(Null, self.null)
         result["None"] = to_class(NoneClass, self.none)
         result["ObjectMapper"] = to_class(ObjectMapper, self.object_mapper)
+        result["OffsetDateTime"] = to_class(OffsetDateTime, self.offset_date_time)
+        result["OffsetTime"] = to_class(OffsetTime, self.offset_time)
         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["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)
@@ -4967,8 +4969,6 @@ class Obj4:
         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
 
 
@@ -5084,6 +5084,54 @@ class SelfClass:
         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 Sendable:
     sendable: int
@@ -5932,38 +5980,6 @@ class 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 UseSerializers:
     use_serializers: int
@@ -5980,26 +5996,11 @@ class UseSerializers:
         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 Obj5:
     k_serializer: KSerializer
     primitive_kind: PrimitiveKind
+    sel: Sel
     obj5_self: Self
     sendable: Sendable
     serial_descriptor: SerialDescriptor
@@ -6017,6 +6018,8 @@ class Obj5:
     type: TypeClass
     use_serializers: UseSerializers
     dummy: int
+    sealed: Sealed
+    select: Select
     purple_self: SelfClass
     serialize: Serialize
     set: Set
@@ -6060,15 +6063,13 @@ class Obj5:
     undefined: Undefined
     union: UnionClass
     unowned: Unowned
-    unsafe: Unsafe
-    unsigned: Unsigned
-    ushort: Ushort
 
     @staticmethod
     def from_dict(obj: Any) -> 'Obj5':
         assert isinstance(obj, dict)
         k_serializer = KSerializer.from_dict(obj["KSerializer"])
         primitive_kind = PrimitiveKind.from_dict(obj["PrimitiveKind"])
+        sel = Sel.from_dict(obj["SEL"])
         obj5_self = Self.from_dict(obj["Self"])
         sendable = Sendable.from_dict(obj["Sendable"])
         serial_descriptor = SerialDescriptor.from_dict(obj["SerialDescriptor"])
@@ -6086,6 +6087,8 @@ class Obj5:
         type = TypeClass.from_dict(obj["Type"])
         use_serializers = UseSerializers.from_dict(obj["UseSerializers"])
         dummy = from_int(obj["dummy"])
+        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"])
@@ -6129,15 +6132,13 @@ class Obj5:
         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"])
-        return Obj5(k_serializer, primitive_kind, obj5_self, sendable, serial_descriptor, serial_name, serializable, serializer_provider, simple_module, standards, std_deserializer, std_serializer, time_only, time_only_converter, time_zone, true, type, use_serializers, dummy, purple_self, serialize, set, short, signed, sizeof, stackalloc, static, static_assert, static_cast, strictfp, string, struct, subscript, super, switch, symbol, synchronized, system, template, then, this, thread_local, throw, throws, to_string, to_json, top_level, transient, obj5_true, obj5_try, obj5_type, typealias, typedef, typeid, typename, typeof, uint, ulong, unchecked, undefined, union, unowned, unsafe, unsigned, ushort)
+        return Obj5(k_serializer, primitive_kind, sel, obj5_self, sendable, serial_descriptor, serial_name, serializable, serializer_provider, simple_module, standards, std_deserializer, std_serializer, time_only, time_only_converter, time_zone, true, type, use_serializers, dummy, 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, unowned)
 
     def to_dict(self) -> dict:
         result: dict = {}
         result["KSerializer"] = to_class(KSerializer, self.k_serializer)
         result["PrimitiveKind"] = to_class(PrimitiveKind, self.primitive_kind)
+        result["SEL"] = to_class(Sel, self.sel)
         result["Self"] = to_class(Self, self.obj5_self)
         result["Sendable"] = to_class(Sendable, self.sendable)
         result["SerialDescriptor"] = to_class(SerialDescriptor, self.serial_descriptor)
@@ -6155,6 +6156,8 @@ class Obj5:
         result["Type"] = to_class(TypeClass, self.type)
         result["UseSerializers"] = to_class(UseSerializers, self.use_serializers)
         result["dummy"] = from_int(self.dummy)
+        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)
@@ -6198,9 +6201,6 @@ class Obj5:
         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)
         return result
 
 
@@ -6252,6 +6252,54 @@ class Yield:
         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
@@ -6499,6 +6547,9 @@ class Obj6:
     utf8_json_writer: Utf8JSONWriter
     yes: Yes
     dummy: int
+    unsafe: Unsafe
+    unsigned: Unsigned
+    ushort: Ushort
     using: Using
     var: Var
     virtual: Virtual
@@ -6522,6 +6573,9 @@ class Obj6:
         utf8_json_writer = Utf8JSONWriter.from_dict(obj["Utf8JsonWriter"])
         yes = Yes.from_dict(obj["YES"])
         dummy = from_int(obj["dummy"])
+        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"])
@@ -6536,7 +6590,7 @@ 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(uuid, utf8_json_reader, utf8_json_writer, yes, dummy, using, var, virtual, void, volatile, wchar_t, weak, where, obj6_while, will_set, obj6_with, xor, xor_eq, obj6_yield)
+        return Obj6(uuid, utf8_json_reader, utf8_json_writer, yes, dummy, 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 = {}
@@ -6545,6 +6599,9 @@ class Obj6:
         result["Utf8JsonWriter"] = to_class(Utf8JSONWriter, self.utf8_json_writer)
         result["YES"] = to_class(Yes, self.yes)
         result["dummy"] = from_int(self.dummy)
+        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)
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 eabf957..4e47f57 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
@@ -4786,6 +4786,31 @@ class List < Dry::Struct
   end
 end
 
+class LocalDate < Dry::Struct
+  attribute :local_date, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      local_date: d.fetch("LocalDate"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "LocalDate" => local_date,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Locale < Dry::Struct
   attribute :locale, Types::Integer
 
@@ -5086,31 +5111,6 @@ class No < Dry::Struct
   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
 
@@ -5308,6 +5308,7 @@ class Obj3 < Dry::Struct
   attribute :left,                           Left
   attribute :let,                            Let
   attribute :list,                           List
+  attribute :local_date,                     LocalDate
   attribute :locale,                         Locale
   attribute :lock,                           Lock
   attribute :long,                           Long
@@ -5320,7 +5321,6 @@ class Obj3 < Dry::Struct
   attribute :native,                         Native
   attribute :newtonsoft,                     Newtonsoft
   attribute :no,                             No
-  attribute :noexcept,                       Noexcept
   attribute :obj3_if,                        If
   attribute :obj3_in,                        In
   attribute :obj3_lambda,                    Lambda
@@ -5377,6 +5377,7 @@ class Obj3 < Dry::Struct
       left:                           Left.from_dynamic!(d.fetch("left")),
       let:                            Let.from_dynamic!(d.fetch("let")),
       list:                           List.from_dynamic!(d.fetch("list")),
+      local_date:                     LocalDate.from_dynamic!(d.fetch("LocalDate")),
       locale:                         Locale.from_dynamic!(d.fetch("Locale")),
       lock:                           Lock.from_dynamic!(d.fetch("lock")),
       long:                           Long.from_dynamic!(d.fetch("long")),
@@ -5389,7 +5390,6 @@ class Obj3 < Dry::Struct
       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")),
@@ -5451,6 +5451,7 @@ class Obj3 < Dry::Struct
       "left"                       => left.to_dynamic,
       "let"                        => let.to_dynamic,
       "list"                       => list.to_dynamic,
+      "LocalDate"                  => local_date.to_dynamic,
       "Locale"                     => locale.to_dynamic,
       "lock"                       => lock.to_dynamic,
       "long"                       => long.to_dynamic,
@@ -5463,7 +5464,6 @@ class Obj3 < Dry::Struct
       "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,
@@ -5503,6 +5503,31 @@ class NoSuchMethod < Dry::Struct
   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
 
@@ -6078,13 +6103,13 @@ class Return < Dry::Struct
   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 +6119,7 @@ class Select < Dry::Struct
 
   def to_dynamic
     {
-      "select" => select_select,
+      "object" => object,
     }
   end
 
@@ -6103,13 +6128,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 +6144,7 @@ class ObjectClass < Dry::Struct
 
   def to_dynamic
     {
-      "object" => object,
+      "ObjectMapper" => object_mapper,
     }
   end
 
@@ -6128,13 +6153,13 @@ class ObjectClass < Dry::Struct
   end
 end
 
-class ObjectMapper < Dry::Struct
-  attribute :object_mapper, Types::Integer
+class Of < Dry::Struct
+  attribute :of, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      object_mapper: d.fetch("ObjectMapper"),
+      of: d.fetch("of"),
     )
   end
 
@@ -6144,7 +6169,7 @@ class ObjectMapper < Dry::Struct
 
   def to_dynamic
     {
-      "ObjectMapper" => object_mapper,
+      "of" => of,
     }
   end
 
@@ -6153,13 +6178,13 @@ class ObjectMapper < Dry::Struct
   end
 end
 
-class Of < Dry::Struct
-  attribute :of, Types::Integer
+class OffsetDateTime < Dry::Struct
+  attribute :offset_date_time, Types::Integer
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      of: d.fetch("of"),
+      offset_date_time: d.fetch("OffsetDateTime"),
     )
   end
 
@@ -6169,7 +6194,32 @@ class Of < Dry::Struct
 
   def to_dynamic
     {
-      "of" => of,
+      "OffsetDateTime" => offset_date_time,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class OffsetTime < Dry::Struct
+  attribute :offset_time, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      offset_time: d.fetch("OffsetTime"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "OffsetTime" => offset_time,
     }
   end
 
@@ -7028,59 +7078,10 @@ class Sbyte < Dry::Struct
   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 :no_such_method,   NoSuchMethod
+  attribute :noexcept,         Noexcept
   attribute :nonatomic,        Nonatomic
   attribute :none,             None
   attribute :nonlocal,         Nonlocal
@@ -7104,10 +7105,11 @@ class Obj4 < Dry::Struct
   attribute :obj4_raise,       Raise
   attribute :obj4_require,     Require
   attribute :obj4_return,      Return
-  attribute :obj4_select,      Select
   attribute :object,           ObjectClass
   attribute :object_mapper,    ObjectMapper
   attribute :of,               Of
+  attribute :offset_date_time, OffsetDateTime
+  attribute :offset_time,      OffsetTime
   attribute :oneway,           Oneway
   attribute :operator,         Operator
   attribute :or_eq,            OrEq
@@ -7142,14 +7144,13 @@ class Obj4 < Dry::Struct
   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"),
       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")),
@@ -7173,10 +7174,11 @@ class Obj4 < Dry::Struct
       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")),
       of:               Of.from_dynamic!(d.fetch("of")),
+      offset_date_time: OffsetDateTime.from_dynamic!(d.fetch("OffsetDateTime")),
+      offset_time:      OffsetTime.from_dynamic!(d.fetch("OffsetTime")),
       oneway:           Oneway.from_dynamic!(d.fetch("oneway")),
       operator:         Operator.from_dynamic!(d.fetch("operator")),
       or_eq:            OrEq.from_dynamic!(d.fetch("or_eq")),
@@ -7211,8 +7213,6 @@ class Obj4 < Dry::Struct
       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
 
@@ -7224,6 +7224,7 @@ class Obj4 < Dry::Struct
     {
       "dummy"            => dummy,
       "noSuchMethod"     => no_such_method.to_dynamic,
+      "noexcept"         => noexcept.to_dynamic,
       "nonatomic"        => nonatomic.to_dynamic,
       "None"             => none.to_dynamic,
       "nonlocal"         => nonlocal.to_dynamic,
@@ -7247,10 +7248,11 @@ class Obj4 < Dry::Struct
       "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,
       "of"               => of.to_dynamic,
+      "OffsetDateTime"   => offset_date_time.to_dynamic,
+      "OffsetTime"       => offset_time.to_dynamic,
       "oneway"           => oneway.to_dynamic,
       "operator"         => operator.to_dynamic,
       "or_eq"            => or_eq.to_dynamic,
@@ -7285,8 +7287,6 @@ class Obj4 < Dry::Struct
       "runtimeType"      => runtime_type.to_dynamic,
       "s"                => s.to_dynamic,
       "sbyte"            => sbyte.to_dynamic,
-      "sealed"           => sealed.to_dynamic,
-      "SEL"              => sel.to_dynamic,
     }
   end
 
@@ -7320,6 +7320,31 @@ class KSerializer < Dry::Struct
   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
 
@@ -7570,6 +7595,56 @@ class PrimitiveKind < Dry::Struct
   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 Obj5Self < Dry::Struct
   attribute :self_self, Types::Integer
 
@@ -8795,56 +8870,6 @@ class Unowned < Dry::Struct
   end
 end
 
-class Unsafe < Dry::Struct
-  attribute :unsafe, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      unsafe: d.fetch("unsafe"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "unsafe" => unsafe,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
-class Unsigned < Dry::Struct
-  attribute :unsigned, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      unsigned: d.fetch("unsigned"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "unsigned" => unsigned,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
 class UseSerializers < Dry::Struct
   attribute :use_serializers, Types::Integer
 
@@ -8870,34 +8895,10 @@ class UseSerializers < Dry::Struct
   end
 end
 
-class Ushort < Dry::Struct
-  attribute :ushort, Types::Integer
-
-  def self.from_dynamic!(d)
-    d = Types::Hash[d]
-    new(
-      ushort: d.fetch("ushort"),
-    )
-  end
-
-  def self.from_json!(json)
-    from_dynamic!(JSON.parse(json))
-  end
-
-  def to_dynamic
-    {
-      "ushort" => ushort,
-    }
-  end
-
-  def to_json(options = nil)
-    JSON.generate(to_dynamic, options)
-  end
-end
-
 class Obj5 < Dry::Struct
   attribute :dummy,               Types::Integer
   attribute :k_serializer,        KSerializer
+  attribute :obj5_select,         Select
   attribute :obj5_self,           SelfClass
   attribute :obj5_super,          Super
   attribute :obj5_system,         System
@@ -8908,6 +8909,8 @@ class Obj5 < Dry::Struct
   attribute :obj5_try,            Try
   attribute :obj5_type,           Type
   attribute :primitive_kind,      PrimitiveKind
+  attribute :sealed,              Sealed
+  attribute :sel,                 Sel
   attribute :self_1,              Obj5Self
   attribute :sendable,            Sendable
   attribute :serial_descriptor,   SerialDescriptor
@@ -8957,16 +8960,14 @@ class Obj5 < Dry::Struct
   attribute :undefined,           UndefinedClass
   attribute :union,               Union
   attribute :unowned,             Unowned
-  attribute :unsafe,              Unsafe
-  attribute :unsigned,            Unsigned
   attribute :use_serializers,     UseSerializers
-  attribute :ushort,              Ushort
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
       dummy:               d.fetch("dummy"),
       k_serializer:        KSerializer.from_dynamic!(d.fetch("KSerializer")),
+      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")),
@@ -8977,6 +8978,8 @@ class Obj5 < Dry::Struct
       obj5_try:            Try.from_dynamic!(d.fetch("try")),
       obj5_type:           Type.from_dynamic!(d.fetch("Type")),
       primitive_kind:      PrimitiveKind.from_dynamic!(d.fetch("PrimitiveKind")),
+      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")),
       serial_descriptor:   SerialDescriptor.from_dynamic!(d.fetch("SerialDescriptor")),
@@ -9026,10 +9029,7 @@ class Obj5 < Dry::Struct
       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")),
       use_serializers:     UseSerializers.from_dynamic!(d.fetch("UseSerializers")),
-      ushort:              Ushort.from_dynamic!(d.fetch("ushort")),
     )
   end
 
@@ -9041,6 +9041,7 @@ class Obj5 < Dry::Struct
     {
       "dummy"              => dummy,
       "KSerializer"        => k_serializer.to_dynamic,
+      "select"             => obj5_select.to_dynamic,
       "Self"               => obj5_self.to_dynamic,
       "super"              => obj5_super.to_dynamic,
       "system"             => obj5_system.to_dynamic,
@@ -9051,6 +9052,8 @@ class Obj5 < Dry::Struct
       "try"                => obj5_try.to_dynamic,
       "Type"               => obj5_type.to_dynamic,
       "PrimitiveKind"      => primitive_kind.to_dynamic,
+      "sealed"             => sealed.to_dynamic,
+      "SEL"                => sel.to_dynamic,
       "self"               => self_1.to_dynamic,
       "Sendable"           => sendable.to_dynamic,
       "SerialDescriptor"   => serial_descriptor.to_dynamic,
@@ -9100,10 +9103,7 @@ class Obj5 < Dry::Struct
       "undefined"          => undefined.to_dynamic,
       "union"              => union.to_dynamic,
       "unowned"            => unowned.to_dynamic,
-      "unsafe"             => unsafe.to_dynamic,
-      "unsigned"           => unsigned.to_dynamic,
       "UseSerializers"     => use_serializers.to_dynamic,
-      "ushort"             => ushort.to_dynamic,
     }
   end
 
@@ -9187,6 +9187,81 @@ class Yield < Dry::Struct
   end
 end
 
+class Unsafe < Dry::Struct
+  attribute :unsafe, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      unsafe: d.fetch("unsafe"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "unsafe" => unsafe,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class Unsigned < Dry::Struct
+  attribute :unsigned, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      unsigned: d.fetch("unsigned"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "unsigned" => unsigned,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class Ushort < Dry::Struct
+  attribute :ushort, Types::Integer
+
+  def self.from_dynamic!(d)
+    d = Types::Hash[d]
+    new(
+      ushort: d.fetch("ushort"),
+    )
+  end
+
+  def self.from_json!(json)
+    from_dynamic!(JSON.parse(json))
+  end
+
+  def to_dynamic
+    {
+      "ushort" => ushort,
+    }
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Using < Dry::Struct
   attribute :using, Types::Integer
 
@@ -9567,6 +9642,9 @@ class Obj6 < Dry::Struct
   attribute :obj6_while,       While
   attribute :obj6_with,        With
   attribute :obj6_yield,       Yield
+  attribute :unsafe,           Unsafe
+  attribute :unsigned,         Unsigned
+  attribute :ushort,           Ushort
   attribute :using,            Using
   attribute :utf8_json_reader, Utf8JSONReader
   attribute :utf8_json_writer, Utf8JSONWriter
@@ -9590,6 +9668,9 @@ class Obj6 < Dry::Struct
       obj6_while:       While.from_dynamic!(d.fetch("while")),
       obj6_with:        With.from_dynamic!(d.fetch("with")),
       obj6_yield:       Yield.from_dynamic!(d.fetch("yield")),
+      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")),
@@ -9618,6 +9699,9 @@ class Obj6 < Dry::Struct
       "while"          => obj6_while.to_dynamic,
       "with"           => obj6_with.to_dynamic,
       "yield"          => obj6_yield.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,
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 a903b78..2c5032f 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
@@ -1143,6 +1143,9 @@ pub struct Obj3 {
 
     pub list: List,
 
+    #[serde(rename = "LocalDate")]
+    pub local_date: LocalDate,
+
     #[serde(rename = "Locale")]
     pub locale: Locale,
 
@@ -1176,8 +1179,6 @@ pub struct Obj3 {
     #[serde(rename = "NO")]
     pub no: No,
 
-    pub noexcept: Noexcept,
-
     #[serde(rename = "if")]
     pub obj3_if: If,
 
@@ -1435,6 +1436,12 @@ pub struct List {
     pub list: i64,
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct LocalDate {
+    pub local_date: i64,
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 #[serde(rename_all = "PascalCase")]
 pub struct Locale {
@@ -1513,11 +1520,6 @@ 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")]
@@ -1543,6 +1545,8 @@ pub struct Obj4 {
     #[serde(rename = "noSuchMethod")]
     pub no_such_method: NoSuchMethod,
 
+    pub noexcept: Noexcept,
+
     pub nonatomic: Nonatomic,
 
     #[serde(rename = "None")]
@@ -1597,6 +1601,12 @@ pub struct Obj4 {
 
     pub of: Of,
 
+    #[serde(rename = "OffsetDateTime")]
+    pub offset_date_time: OffsetDateTime,
+
+    #[serde(rename = "OffsetTime")]
+    pub offset_time: OffsetTime,
+
     pub oneway: Oneway,
 
     pub open: Open,
@@ -1678,13 +1688,6 @@ pub struct Obj4 {
     pub s: S,
 
     pub sbyte: Sbyte,
-
-    pub sealed: Sealed,
-
-    #[serde(rename = "SEL")]
-    pub sel: Sel,
-
-    pub select: Select,
 }
 
 #[derive(Debug, Clone, Serialize, Deserialize)]
@@ -1693,6 +1696,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,
@@ -1810,6 +1818,18 @@ pub struct Of {
     pub of: i64,
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct OffsetDateTime {
+    pub offset_date_time: i64,
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "PascalCase")]
+pub struct OffsetTime {
+    pub offset_time: i64,
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct Oneway {
     pub oneway: i64,
@@ -2009,22 +2029,6 @@ 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,
@@ -2059,9 +2063,6 @@ pub struct Obj5 {
     #[serde(rename = "union")]
     pub obj5_union: Union,
 
-    #[serde(rename = "unsafe")]
-    pub obj5_unsafe: Unsafe,
-
     #[serde(rename = "PrimitiveKind")]
     pub primitive_kind: PrimitiveKind,
 
@@ -2074,6 +2075,13 @@ pub struct Obj5 {
     #[serde(rename = "type")]
     pub purple_type: TypeClass,
 
+    pub sealed: Sealed,
+
+    #[serde(rename = "SEL")]
+    pub sel: Sel,
+
+    pub select: Select,
+
     #[serde(rename = "Sendable")]
     pub sendable: Sendable,
 
@@ -2179,12 +2187,8 @@ pub struct Obj5 {
 
     pub unowned: Unowned,
 
-    pub unsigned: Unsigned,
-
     #[serde(rename = "UseSerializers")]
     pub use_serializers: UseSerializers,
-
-    pub ushort: Ushort,
 }
 
 #[derive(Debug, Clone, Serialize, Deserialize)]
@@ -2250,12 +2254,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)]
 #[serde(rename_all = "PascalCase")]
 pub struct PrimitiveKind {
@@ -2280,6 +2278,22 @@ pub struct TypeClass {
     pub type_type: 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 {
@@ -2523,26 +2537,19 @@ pub struct Unowned {
     pub unowned: i64,
 }
 
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct Unsigned {
-    pub unsigned: i64,
-}
-
 #[derive(Debug, Clone, Serialize, Deserialize)]
 #[serde(rename_all = "PascalCase")]
 pub struct UseSerializers {
     pub use_serializers: i64,
 }
 
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct Ushort {
-    pub ushort: 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,
 
@@ -2555,6 +2562,10 @@ pub struct Obj6 {
     #[serde(rename = "yield")]
     pub obj6_yield: Yield,
 
+    pub unsigned: Unsigned,
+
+    pub ushort: Ushort,
+
     pub using: Using,
 
     #[serde(rename = "Utf8JsonReader")]
@@ -2589,6 +2600,12 @@ 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")]
@@ -2613,6 +2630,16 @@ pub struct Yield {
     pub yield_yield: 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,
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 9c606f8..9ac581c 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
@@ -753,6 +753,7 @@ case class Obj3 (
     val left : Left,
     val let : Let,
     val list : ListClass,
+    val LocalDate : LocalDate,
     val Locale : Locale,
     val lock : Lock,
     val long : LongClass,
@@ -767,7 +768,6 @@ case class Obj3 (
     val newtonsoft : Newtonsoft,
     val nil : Nil,
     val NO : No,
-    val noexcept : Noexcept,
     val `if` : If,
     val `implicit` : Implicit,
     val `import` : Import,
@@ -969,6 +969,10 @@ case class ListClass (
     val list : Long
 ) derives Encoder.AsObject, Decoder
 
+case class LocalDate (
+    val LocalDate : Long
+) derives Encoder.AsObject, Decoder
+
 case class Locale (
     val Locale : Long
 ) derives Encoder.AsObject, Decoder
@@ -1025,10 +1029,6 @@ 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
@@ -1052,6 +1052,7 @@ case class New (
 case class Obj4 (
     val dummy : Long,
     val noSuchMethod : NoSuchMethod,
+    val noexcept : Noexcept,
     val nonatomic : Nonatomic,
     val None : NoneClass,
     val nonlocal : Nonlocal,
@@ -1073,9 +1074,10 @@ case class Obj4 (
     val `protected` : Protected,
     val protocol : ProtocolClass,
     val `return` : Return,
-    val `sealed` : Sealed,
     val ObjectMapper : ObjectMapper,
     val of : Of,
+    val OffsetDateTime : OffsetDateTime,
+    val OffsetTime : OffsetTime,
     val oneway : Oneway,
     val open : Open,
     val operator : Operator,
@@ -1112,15 +1114,17 @@ case class Obj4 (
     val right : Right,
     val runtimeType : RuntimeType,
     val s : S,
-    val sbyte : Sbyte,
-    val SEL : Sel,
-    val select : Select
+    val sbyte : Sbyte
 ) 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
@@ -1205,10 +1209,6 @@ 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
@@ -1217,6 +1217,14 @@ case class Of (
     val of : Long
 ) derives Encoder.AsObject, Decoder
 
+case class OffsetDateTime (
+    val OffsetDateTime : Long
+) derives Encoder.AsObject, Decoder
+
+case class OffsetTime (
+    val OffsetTime : Long
+) derives Encoder.AsObject, Decoder
+
 case class Oneway (
     val oneway : Long
 ) derives Encoder.AsObject, Decoder
@@ -1365,17 +1373,10 @@ 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 KSerializer : KSerializer,
+    val `sealed` : Sealed,
     val self : SelfClass,
     val `super` : Super,
     val `then` : Then,
@@ -1387,6 +1388,8 @@ case class Obj5 (
     val PrimitiveKind : PrimitiveKind,
     val `true` : TrueClass,
     val `type` : TypeClass,
+    val SEL : Sel,
+    val select : Select,
     val Self : Self,
     val Sendable : Sendable,
     val SerialDescriptor : SerialDescriptor,
@@ -1435,10 +1438,7 @@ case class Obj5 (
     val undefined : Undefined,
     val union : Union,
     val unowned : Unowned,
-    val unsafe : Unsafe,
-    val unsigned : Unsigned,
-    val UseSerializers : UseSerializers,
-    val ushort : Ushort
+    val UseSerializers : UseSerializers
 )
 
 object Obj5:
@@ -1455,6 +1455,10 @@ case class KSerializer (
     val KSerializer : 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
@@ -1499,6 +1503,14 @@ case class TypeClass (
     val `type` : 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
@@ -1709,28 +1721,19 @@ case class Unowned (
     val unowned : Long
 ) derives Encoder.AsObject, Decoder
 
-case class Unsafe (
-    val unsafe : Long
-) derives Encoder.AsObject, Decoder
-
-case class Unsigned (
-    val unsigned : Long
-) derives Encoder.AsObject, Decoder
-
 case class UseSerializers (
     val UseSerializers : Long
 ) derives Encoder.AsObject, Decoder
 
-case class Ushort (
-    val ushort : Long
-) derives Encoder.AsObject, Decoder
-
 case class Obj6 (
     val dummy : Long,
     val `var` : Var,
     val `while` : While,
     val `with` : With,
     val `yield` : Yield,
+    val unsafe : Unsafe,
+    val unsigned : Unsigned,
+    val ushort : Ushort,
     val using : Using,
     val Utf8JsonReader : Utf8JSONReader,
     val Utf8JsonWriter : Utf8JSONWriter,
@@ -1763,6 +1766,18 @@ case class Yield (
     val `yield` : Long
 ) derives Encoder.AsObject, Decoder
 
+case class Unsafe (
+    val unsafe : Long
+) derives Encoder.AsObject, Decoder
+
+case class Unsigned (
+    val unsigned : Long
+) derives Encoder.AsObject, Decoder
+
+case class Ushort (
+    val ushort : Long
+) derives Encoder.AsObject, Decoder
+
 case class Using (
     val using : Long
 ) derives Encoder.AsObject, Decoder
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 0705d32..c561e3e 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
@@ -803,6 +803,7 @@ case class Obj3 (
     val left : Left,
     val let : Let,
     val list : ListClass,
+    val LocalDate : LocalDate,
     val Locale : Locale,
     val lock : Lock,
     val long : LongClass,
@@ -817,7 +818,6 @@ case class Obj3 (
     val newtonsoft : Newtonsoft,
     val nil : Nil,
     val NO : No,
-    val noexcept : Noexcept,
     val `if` : If,
     val `implicit` : Implicit,
     val `import` : Import,
@@ -1002,6 +1002,10 @@ case class ListClass (
     val list : Long
 ) derives OptionPickler.ReadWriter
 
+case class LocalDate (
+    val LocalDate : Long
+) derives OptionPickler.ReadWriter
+
 case class Locale (
     val Locale : Long
 ) derives OptionPickler.ReadWriter
@@ -1058,10 +1062,6 @@ 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
@@ -1085,6 +1085,7 @@ case class New (
 case class Obj4 (
     val dummy : Long,
     val noSuchMethod : NoSuchMethod,
+    val noexcept : Noexcept,
     val nonatomic : Nonatomic,
     val None : NoneClass,
     val nonlocal : Nonlocal,
@@ -1106,9 +1107,10 @@ case class Obj4 (
     val `protected` : Protected,
     val protocol : ProtocolClass,
     val `return` : Return,
-    val `sealed` : Sealed,
     val ObjectMapper : ObjectMapper,
     val of : Of,
+    val OffsetDateTime : OffsetDateTime,
+    val OffsetTime : OffsetTime,
     val oneway : Oneway,
     val open : Open,
     val operator : Operator,
@@ -1145,15 +1147,17 @@ case class Obj4 (
     val right : Right,
     val runtimeType : RuntimeType,
     val s : S,
-    val sbyte : Sbyte,
-    val SEL : Sel,
-    val select : Select
+    val sbyte : Sbyte
 ) 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
@@ -1238,10 +1242,6 @@ 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
@@ -1250,6 +1250,14 @@ case class Of (
     val of : Long
 ) derives OptionPickler.ReadWriter
 
+case class OffsetDateTime (
+    val OffsetDateTime : Long
+) derives OptionPickler.ReadWriter
+
+case class OffsetTime (
+    val OffsetTime : Long
+) derives OptionPickler.ReadWriter
+
 case class Oneway (
     val oneway : Long
 ) derives OptionPickler.ReadWriter
@@ -1398,17 +1406,10 @@ 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 KSerializer : KSerializer,
+    val `sealed` : Sealed,
     val self : SelfClass,
     val `super` : Super,
     val `then` : Then,
@@ -1420,6 +1421,8 @@ case class Obj5 (
     val PrimitiveKind : PrimitiveKind,
     val `true` : TrueClass,
     val `type` : TypeClass,
+    val SEL : Sel,
+    val select : Select,
     val Self : Self,
     val Sendable : Sendable,
     val SerialDescriptor : SerialDescriptor,
@@ -1470,16 +1473,17 @@ case class Obj5 (
     val undefined : Undefined,
     val union : Union,
     val unowned : Unowned,
-    val unsafe : Unsafe,
-    val unsigned : Unsigned,
-    val UseSerializers : UseSerializers,
-    val ushort : Ushort
+    val UseSerializers : UseSerializers
 ) derives OptionPickler.ReadWriter
 
 case class KSerializer (
     val KSerializer : Long
 ) derives OptionPickler.ReadWriter
 
+case class Sealed (
+    val `sealed` : Long
+) derives OptionPickler.ReadWriter
+
 case class SelfClass (
     val self : Long
 ) derives OptionPickler.ReadWriter
@@ -1524,6 +1528,14 @@ case class TypeClass (
     val `type` : 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
@@ -1718,28 +1730,19 @@ case class Unowned (
     val unowned : Long
 ) derives OptionPickler.ReadWriter
 
-case class Unsafe (
-    val unsafe : Long
-) derives OptionPickler.ReadWriter
-
-case class Unsigned (
-    val unsigned : Long
-) derives OptionPickler.ReadWriter
-
 case class UseSerializers (
     val UseSerializers : Long
 ) derives OptionPickler.ReadWriter
 
-case class Ushort (
-    val ushort : Long
-) derives OptionPickler.ReadWriter
-
 case class Obj6 (
     val dummy : Long,
     val `var` : Var,
     val `while` : While,
     val `with` : With,
     val `yield` : Yield,
+    val unsafe : Unsafe,
+    val unsigned : Unsigned,
+    val ushort : Ushort,
     val using : Using,
     val Utf8JsonReader : Utf8JSONReader,
     val Utf8JsonWriter : Utf8JSONWriter,
@@ -1772,6 +1775,18 @@ case class Yield (
     val `yield` : Long
 ) derives OptionPickler.ReadWriter
 
+case class Unsafe (
+    val unsafe : Long
+) derives OptionPickler.ReadWriter
+
+case class Unsigned (
+    val unsigned : Long
+) derives OptionPickler.ReadWriter
+
+case class Ushort (
+    val ushort : Long
+) derives OptionPickler.ReadWriter
+
 case class Using (
     val using : Long
 ) derives OptionPickler.ReadWriter
diff --git a/base/schema-cjson/test/inputs/schema/date-time.schema/default/TopLevel.c b/head/schema-cjson/test/inputs/schema/date-time.schema/default/TopLevel.c
index 3a46a64..05a99ad 100644
--- a/base/schema-cjson/test/inputs/schema/date-time.schema/default/TopLevel.c
+++ b/head/schema-cjson/test/inputs/schema/date-time.schema/default/TopLevel.c
@@ -48,6 +48,153 @@ void cJSON_DeleteComplexUnionArray(struct ComplexUnionArray * x) {
     }
 }
 
+struct LocalDate * cJSON_ParseLocalDate(const char * s) {
+    struct LocalDate * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetLocalDateValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct LocalDate * cJSON_GetLocalDateValue(const cJSON * j) {
+    struct LocalDate * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct LocalDate)))) {
+            memset(x, 0, sizeof(struct LocalDate));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateLocalDate(const struct LocalDate * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintLocalDate(const struct LocalDate * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateLocalDate(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteLocalDate(struct LocalDate * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct OffsetDateTime * cJSON_ParseOffsetDateTime(const char * s) {
+    struct OffsetDateTime * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetOffsetDateTimeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct OffsetDateTime * cJSON_GetOffsetDateTimeValue(const cJSON * j) {
+    struct OffsetDateTime * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct OffsetDateTime)))) {
+            memset(x, 0, sizeof(struct OffsetDateTime));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateOffsetDateTime(const struct OffsetDateTime * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintOffsetDateTime(const struct OffsetDateTime * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateOffsetDateTime(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteOffsetDateTime(struct OffsetDateTime * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct OffsetTime * cJSON_ParseOffsetTime(const char * s) {
+    struct OffsetTime * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetOffsetTimeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct OffsetTime * cJSON_GetOffsetTimeValue(const cJSON * j) {
+    struct OffsetTime * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct OffsetTime)))) {
+            memset(x, 0, sizeof(struct OffsetTime));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateOffsetTime(const struct OffsetTime * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintOffsetTime(const struct OffsetTime * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateOffsetTime(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteOffsetTime(struct OffsetTime * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct TopLevel * cJSON_ParseTopLevel(const char * s) {
     struct TopLevel * x = NULL;
     if (NULL != s) {
@@ -103,6 +250,21 @@ struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j) {
                     x->date_time[0] = '\0';
                 }
             }
+            if (cJSON_HasObjectItem(j, "local-date-class")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "local-date-class"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->local_date_class = cJSON_GetLocalDateValue(cJSON_GetObjectItemCaseSensitive(j, "local-date-class"));
+                if (NULL == x->local_date_class) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
+            if (cJSON_HasObjectItem(j, "offset-date-time-class")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "offset-date-time-class"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->offset_date_time_class = cJSON_GetOffsetDateTimeValue(cJSON_GetObjectItemCaseSensitive(j, "offset-date-time-class"));
+                if (NULL == x->offset_date_time_class) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
+            if (cJSON_HasObjectItem(j, "offset-time-class")) {
+                if (!cJSON_IsObject(cJSON_GetObjectItemCaseSensitive(j, "offset-time-class"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->offset_time_class = cJSON_GetOffsetTimeValue(cJSON_GetObjectItemCaseSensitive(j, "offset-time-class"));
+                if (NULL == x->offset_time_class) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
             if (!cJSON_HasObjectItem(j, "time")) { cJSON_DeleteTopLevel(x); return NULL; }
             if (cJSON_HasObjectItem(j, "time")) {
                 if (!cJSON_IsString(cJSON_GetObjectItemCaseSensitive(j, "time"))) { cJSON_DeleteTopLevel(x); return NULL; }
@@ -160,6 +322,15 @@ cJSON * cJSON_CreateTopLevel(const struct TopLevel * x) {
             else {
                 cJSON_AddStringToObject(j, "date-time", "");
             }
+            if (NULL != x->local_date_class) {
+                cJSON_AddItemToObject(j, "local-date-class", cJSON_CreateLocalDate(x->local_date_class));
+            }
+            if (NULL != x->offset_date_time_class) {
+                cJSON_AddItemToObject(j, "offset-date-time-class", cJSON_CreateOffsetDateTime(x->offset_date_time_class));
+            }
+            if (NULL != x->offset_time_class) {
+                cJSON_AddItemToObject(j, "offset-time-class", cJSON_CreateOffsetTime(x->offset_time_class));
+            }
             if (NULL != x->time) {
                 cJSON_AddStringToObject(j, "time", x->time);
             }
@@ -209,6 +380,15 @@ void cJSON_DeleteTopLevel(struct TopLevel * x) {
         if (NULL != x->date_time) {
             cJSON_free(x->date_time);
         }
+        if (NULL != x->local_date_class) {
+            cJSON_DeleteLocalDate(x->local_date_class);
+        }
+        if (NULL != x->offset_date_time_class) {
+            cJSON_DeleteOffsetDateTime(x->offset_date_time_class);
+        }
+        if (NULL != x->offset_time_class) {
+            cJSON_DeleteOffsetTime(x->offset_time_class);
+        }
         if (NULL != x->time) {
             cJSON_free(x->time);
         }
diff --git a/base/schema-cjson/test/inputs/schema/date-time.schema/default/TopLevel.h b/head/schema-cjson/test/inputs/schema/date-time.schema/default/TopLevel.h
index 7f98055..44fa1a4 100644
--- a/base/schema-cjson/test/inputs/schema/date-time.schema/default/TopLevel.h
+++ b/head/schema-cjson/test/inputs/schema/date-time.schema/default/TopLevel.h
@@ -56,10 +56,22 @@ struct ComplexUnionArray {
     } value;
 };
 
+struct LocalDate {
+};
+
+struct OffsetDateTime {
+};
+
+struct OffsetTime {
+};
+
 struct TopLevel {
     list_t * complex_union_array;
     char * date;
     char * date_time;
+    struct LocalDate * local_date_class;
+    struct OffsetDateTime * offset_date_time_class;
+    struct OffsetTime * offset_time_class;
     char * time;
     list_t * union_array;
 };
@@ -71,6 +83,24 @@ void cJSON_DeleteComplexUnionArray(struct ComplexUnionArray * x);
 struct ComplexUnionArray * cJSON_ParseComplexUnionArray(const char * s);
 char * cJSON_PrintComplexUnionArray(const struct ComplexUnionArray * x);
 
+struct LocalDate * cJSON_ParseLocalDate(const char * s);
+struct LocalDate * cJSON_GetLocalDateValue(const cJSON * j);
+cJSON * cJSON_CreateLocalDate(const struct LocalDate * x);
+char * cJSON_PrintLocalDate(const struct LocalDate * x);
+void cJSON_DeleteLocalDate(struct LocalDate * x);
+
+struct OffsetDateTime * cJSON_ParseOffsetDateTime(const char * s);
+struct OffsetDateTime * cJSON_GetOffsetDateTimeValue(const cJSON * j);
+cJSON * cJSON_CreateOffsetDateTime(const struct OffsetDateTime * x);
+char * cJSON_PrintOffsetDateTime(const struct OffsetDateTime * x);
+void cJSON_DeleteOffsetDateTime(struct OffsetDateTime * x);
+
+struct OffsetTime * cJSON_ParseOffsetTime(const char * s);
+struct OffsetTime * cJSON_GetOffsetTimeValue(const cJSON * j);
+cJSON * cJSON_CreateOffsetTime(const struct OffsetTime * x);
+char * cJSON_PrintOffsetTime(const struct OffsetTime * x);
+void cJSON_DeleteOffsetTime(struct OffsetTime * 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 8253ae9..658b809 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
@@ -184,6 +184,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), "LocalDate")) x = ENUM_LOCAL_DATE;
         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;
@@ -216,6 +217,8 @@ 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), "OffsetDateTime")) x = ENUM_OFFSET_DATE_TIME;
+        else if (!strcmp(cJSON_GetStringValue(j), "OffsetTime")) x = ENUM_OFFSET_TIME;
         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;
@@ -530,6 +533,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_LOCAL_DATE: j = cJSON_CreateString("LocalDate"); 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;
@@ -562,6 +566,8 @@ 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_OFFSET_DATE_TIME: j = cJSON_CreateString("OffsetDateTime"); break;
+        case ENUM_OFFSET_TIME: j = cJSON_CreateString("OffsetTime"); 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;
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 0476658..9adb621 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
@@ -225,6 +225,7 @@ enum Enum {
     ENUM_LEFT,
     ENUM_LET,
     ENUM_LIST,
+    ENUM_LOCAL_DATE,
     ENUM_LOCALE,
     ENUM_LOCK,
     ENUM_LONG,
@@ -257,6 +258,8 @@ enum Enum {
     ENUM_NULLPTR,
     ENUM_NUMBER,
     ENUM_OBJECT,
+    ENUM_OFFSET_DATE_TIME,
+    ENUM_OFFSET_TIME,
     ENUM_OBJECT_MAPPER,
     ENUM_OF,
     ENUM_ONEWAY,
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 a05d6b3..3ad2137 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
@@ -5461,6 +5461,50 @@ void cJSON_DeleteUnionList(struct UnionList * x) {
     }
 }
 
+struct UnionLocalDate * cJSON_GetUnionLocalDateValue(const cJSON * j) {
+    struct UnionLocalDate * x = cJSON_malloc(sizeof(struct UnionLocalDate));
+    if (NULL != x) {
+        memset(x, 0, sizeof(struct UnionLocalDate));
+        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.local_date = cJSON_GetLocalDateValue(j);
+            if (NULL == x->value.local_date) x->type = 0;
+        }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
+    }
+    return x;
+}
+struct UnionLocalDate * cJSON_ParseUnionLocalDate(const char * s) { cJSON * j = cJSON_Parse(s); struct UnionLocalDate * x = j ? cJSON_GetUnionLocalDateValue(j) : NULL; cJSON_Delete(j); return x; }
+char * cJSON_PrintUnionLocalDate(const struct UnionLocalDate * x) { cJSON * j = cJSON_CreateUnionLocalDate(x); char * s = j ? cJSON_Print(j) : NULL; cJSON_Delete(j); return s; }
+
+cJSON * cJSON_CreateUnionLocalDate(const struct UnionLocalDate * 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_CreateLocalDate(x->value.local_date);
+        }
+    }
+    return j;
+}
+
+void cJSON_DeleteUnionLocalDate(struct UnionLocalDate * x) {
+    if (NULL != x) {
+        if (cJSON_Number == x->type) {
+        }
+        else if (cJSON_Object == x->type) {
+            cJSON_DeleteLocalDate(x->value.local_date);
+        }
+        cJSON_free(x);
+    }
+}
+
 struct UnionLocale * cJSON_GetUnionLocaleValue(const cJSON * j) {
     struct UnionLocale * x = cJSON_malloc(sizeof(struct UnionLocale));
     if (NULL != x) {
@@ -6473,6 +6517,94 @@ void cJSON_DeleteUnionOf(struct UnionOf * x) {
     }
 }
 
+struct UnionOffsetDateTime * cJSON_GetUnionOffsetDateTimeValue(const cJSON * j) {
+    struct UnionOffsetDateTime * x = cJSON_malloc(sizeof(struct UnionOffsetDateTime));
+    if (NULL != x) {
+        memset(x, 0, sizeof(struct UnionOffsetDateTime));
+        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.offset_date_time = cJSON_GetOffsetDateTimeValue(j);
+            if (NULL == x->value.offset_date_time) x->type = 0;
+        }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
+    }
+    return x;
+}
+struct UnionOffsetDateTime * cJSON_ParseUnionOffsetDateTime(const char * s) { cJSON * j = cJSON_Parse(s); struct UnionOffsetDateTime * x = j ? cJSON_GetUnionOffsetDateTimeValue(j) : NULL; cJSON_Delete(j); return x; }
+char * cJSON_PrintUnionOffsetDateTime(const struct UnionOffsetDateTime * x) { cJSON * j = cJSON_CreateUnionOffsetDateTime(x); char * s = j ? cJSON_Print(j) : NULL; cJSON_Delete(j); return s; }
+
+cJSON * cJSON_CreateUnionOffsetDateTime(const struct UnionOffsetDateTime * 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_CreateOffsetDateTime(x->value.offset_date_time);
+        }
+    }
+    return j;
+}
+
+void cJSON_DeleteUnionOffsetDateTime(struct UnionOffsetDateTime * x) {
+    if (NULL != x) {
+        if (cJSON_Number == x->type) {
+        }
+        else if (cJSON_Object == x->type) {
+            cJSON_DeleteOffsetDateTime(x->value.offset_date_time);
+        }
+        cJSON_free(x);
+    }
+}
+
+struct UnionOffsetTime * cJSON_GetUnionOffsetTimeValue(const cJSON * j) {
+    struct UnionOffsetTime * x = cJSON_malloc(sizeof(struct UnionOffsetTime));
+    if (NULL != x) {
+        memset(x, 0, sizeof(struct UnionOffsetTime));
+        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.offset_time = cJSON_GetOffsetTimeValue(j);
+            if (NULL == x->value.offset_time) x->type = 0;
+        }
+        if (0 == x->type) { cJSON_free(x); return NULL; }
+    }
+    return x;
+}
+struct UnionOffsetTime * cJSON_ParseUnionOffsetTime(const char * s) { cJSON * j = cJSON_Parse(s); struct UnionOffsetTime * x = j ? cJSON_GetUnionOffsetTimeValue(j) : NULL; cJSON_Delete(j); return x; }
+char * cJSON_PrintUnionOffsetTime(const struct UnionOffsetTime * x) { cJSON * j = cJSON_CreateUnionOffsetTime(x); char * s = j ? cJSON_Print(j) : NULL; cJSON_Delete(j); return s; }
+
+cJSON * cJSON_CreateUnionOffsetTime(const struct UnionOffsetTime * 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_CreateOffsetTime(x->value.offset_time);
+        }
+    }
+    return j;
+}
+
+void cJSON_DeleteUnionOffsetTime(struct UnionOffsetTime * x) {
+    if (NULL != x) {
+        if (cJSON_Number == x->type) {
+        }
+        else if (cJSON_Object == x->type) {
+            cJSON_DeleteOffsetTime(x->value.offset_time);
+        }
+        cJSON_free(x);
+    }
+}
+
 struct UnionOneway * cJSON_GetUnionOnewayValue(const cJSON * j) {
     struct UnionOneway * x = cJSON_malloc(sizeof(struct UnionOneway));
     if (NULL != x) {
@@ -20953,6 +21085,55 @@ void cJSON_DeleteList(struct List * x) {
     }
 }
 
+struct LocalDate * cJSON_ParseLocalDate(const char * s) {
+    struct LocalDate * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetLocalDateValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct LocalDate * cJSON_GetLocalDateValue(const cJSON * j) {
+    struct LocalDate * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct LocalDate)))) {
+            memset(x, 0, sizeof(struct LocalDate));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateLocalDate(const struct LocalDate * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintLocalDate(const struct LocalDate * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateLocalDate(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteLocalDate(struct LocalDate * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Locale * cJSON_ParseLocale(const char * s) {
     struct Locale * x = NULL;
     if (NULL != s) {
@@ -22080,6 +22261,104 @@ void cJSON_DeleteOf(struct Of * x) {
     }
 }
 
+struct OffsetDateTime * cJSON_ParseOffsetDateTime(const char * s) {
+    struct OffsetDateTime * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetOffsetDateTimeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct OffsetDateTime * cJSON_GetOffsetDateTimeValue(const cJSON * j) {
+    struct OffsetDateTime * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct OffsetDateTime)))) {
+            memset(x, 0, sizeof(struct OffsetDateTime));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateOffsetDateTime(const struct OffsetDateTime * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintOffsetDateTime(const struct OffsetDateTime * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateOffsetDateTime(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteOffsetDateTime(struct OffsetDateTime * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
+struct OffsetTime * cJSON_ParseOffsetTime(const char * s) {
+    struct OffsetTime * x = NULL;
+    if (NULL != s) {
+        cJSON * j = cJSON_Parse(s);
+        if (NULL != j) {
+            x = cJSON_GetOffsetTimeValue(j);
+            cJSON_Delete(j);
+        }
+    }
+    return x;
+}
+
+struct OffsetTime * cJSON_GetOffsetTimeValue(const cJSON * j) {
+    struct OffsetTime * x = NULL;
+    if (NULL != j) {
+        if (NULL != (x = cJSON_malloc(sizeof(struct OffsetTime)))) {
+            memset(x, 0, sizeof(struct OffsetTime));
+        }
+    }
+    return x;
+}
+
+cJSON * cJSON_CreateOffsetTime(const struct OffsetTime * x) {
+    cJSON * j = NULL;
+    if (NULL != x) {
+        if (NULL != (j = cJSON_CreateObject())) {
+        }
+    }
+    return j;
+}
+
+char * cJSON_PrintOffsetTime(const struct OffsetTime * x) {
+    char * s = NULL;
+    if (NULL != x) {
+        cJSON * j = cJSON_CreateOffsetTime(x);
+        if (NULL != j) {
+            s = cJSON_Print(j);
+            cJSON_Delete(j);
+        }
+    }
+    return s;
+}
+
+void cJSON_DeleteOffsetTime(struct OffsetTime * x) {
+    if (NULL != x) {
+        cJSON_free(x);
+    }
+}
+
 struct Oneway * cJSON_ParseOneway(const char * s) {
     struct Oneway * x = NULL;
     if (NULL != s) {
@@ -32347,6 +32626,11 @@ struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j) {
                 x->list = cJSON_GetUnionListValue(cJSON_GetObjectItemCaseSensitive(j, "list"));
                 if (NULL == x->list) { cJSON_DeleteTopLevel(x); return NULL; }
             }
+            if (cJSON_HasObjectItem(j, "LocalDate")) {
+                if (!cJSON_IsUnionLocalDate(cJSON_GetObjectItemCaseSensitive(j, "LocalDate"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->local_date = cJSON_GetUnionLocalDateValue(cJSON_GetObjectItemCaseSensitive(j, "LocalDate"));
+                if (NULL == x->local_date) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
             if (cJSON_HasObjectItem(j, "Locale")) {
                 if (!cJSON_IsUnionLocale(cJSON_GetObjectItemCaseSensitive(j, "Locale"))) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->locale = cJSON_GetUnionLocaleValue(cJSON_GetObjectItemCaseSensitive(j, "Locale"));
@@ -32517,6 +32801,16 @@ struct TopLevel * cJSON_GetTopLevelValue(const cJSON * j) {
                 x->of = cJSON_GetUnionOfValue(cJSON_GetObjectItemCaseSensitive(j, "of"));
                 if (NULL == x->of) { cJSON_DeleteTopLevel(x); return NULL; }
             }
+            if (cJSON_HasObjectItem(j, "OffsetDateTime")) {
+                if (!cJSON_IsUnionOffsetDateTime(cJSON_GetObjectItemCaseSensitive(j, "OffsetDateTime"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->offset_date_time = cJSON_GetUnionOffsetDateTimeValue(cJSON_GetObjectItemCaseSensitive(j, "OffsetDateTime"));
+                if (NULL == x->offset_date_time) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
+            if (cJSON_HasObjectItem(j, "OffsetTime")) {
+                if (!cJSON_IsUnionOffsetTime(cJSON_GetObjectItemCaseSensitive(j, "OffsetTime"))) { cJSON_DeleteTopLevel(x); return NULL; }
+                x->offset_time = cJSON_GetUnionOffsetTimeValue(cJSON_GetObjectItemCaseSensitive(j, "OffsetTime"));
+                if (NULL == x->offset_time) { cJSON_DeleteTopLevel(x); return NULL; }
+            }
             if (cJSON_HasObjectItem(j, "oneway")) {
                 if (!cJSON_IsUnionOneway(cJSON_GetObjectItemCaseSensitive(j, "oneway"))) { cJSON_DeleteTopLevel(x); return NULL; }
                 x->oneway = cJSON_GetUnionOnewayValue(cJSON_GetObjectItemCaseSensitive(j, "oneway"));
@@ -33695,6 +33989,9 @@ cJSON * cJSON_CreateTopLevel(const struct TopLevel * x) {
             if (NULL != x->list) {
                 cJSON_AddItemToObject(j, "list", cJSON_CreateUnionList(x->list));
             }
+            if (NULL != x->local_date) {
+                cJSON_AddItemToObject(j, "LocalDate", cJSON_CreateUnionLocalDate(x->local_date));
+            }
             if (NULL != x->locale) {
                 cJSON_AddItemToObject(j, "Locale", cJSON_CreateUnionLocale(x->locale));
             }
@@ -33797,6 +34094,12 @@ cJSON * cJSON_CreateTopLevel(const struct TopLevel * x) {
             if (NULL != x->of) {
                 cJSON_AddItemToObject(j, "of", cJSON_CreateUnionOf(x->of));
             }
+            if (NULL != x->offset_date_time) {
+                cJSON_AddItemToObject(j, "OffsetDateTime", cJSON_CreateUnionOffsetDateTime(x->offset_date_time));
+            }
+            if (NULL != x->offset_time) {
+                cJSON_AddItemToObject(j, "OffsetTime", cJSON_CreateUnionOffsetTime(x->offset_time));
+            }
             if (NULL != x->oneway) {
                 cJSON_AddItemToObject(j, "oneway", cJSON_CreateUnionOneway(x->oneway));
             }
@@ -34731,6 +35034,9 @@ void cJSON_DeleteTopLevel(struct TopLevel * x) {
         if (NULL != x->list) {
             cJSON_DeleteUnionList(x->list);
         }
+        if (NULL != x->local_date) {
+            cJSON_DeleteUnionLocalDate(x->local_date);
+        }
         if (NULL != x->locale) {
             cJSON_DeleteUnionLocale(x->locale);
         }
@@ -34833,6 +35139,12 @@ void cJSON_DeleteTopLevel(struct TopLevel * x) {
         if (NULL != x->of) {
             cJSON_DeleteUnionOf(x->of);
         }
+        if (NULL != x->offset_date_time) {
+            cJSON_DeleteUnionOffsetDateTime(x->offset_date_time);
+        }
+        if (NULL != x->offset_time) {
+            cJSON_DeleteUnionOffsetTime(x->offset_time);
+        }
         if (NULL != x->oneway) {
             cJSON_DeleteUnionOneway(x->oneway);
         }
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 ddaf185..cd9bac4 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
@@ -1412,6 +1412,17 @@ struct UnionList {
     } value;
 };
 
+struct LocalDate {
+};
+
+struct UnionLocalDate {
+    int type;
+    union {
+        double number;
+        struct LocalDate * local_date;
+    } value;
+};
+
 struct Locale {
 };
 
@@ -1665,6 +1676,28 @@ struct UnionOf {
     } value;
 };
 
+struct OffsetDateTime {
+};
+
+struct UnionOffsetDateTime {
+    int type;
+    union {
+        double number;
+        struct OffsetDateTime * offset_date_time;
+    } value;
+};
+
+struct OffsetTime {
+};
+
+struct UnionOffsetTime {
+    int type;
+    union {
+        double number;
+        struct OffsetTime * offset_time;
+    } value;
+};
+
 struct Oneway {
 };
 
@@ -3945,6 +3978,7 @@ struct TopLevel {
     struct UnionLeft * left;
     struct UnionLet * let;
     struct UnionList * list;
+    struct UnionLocalDate * local_date;
     struct UnionLocale * locale;
     struct UnionLock * lock;
     struct UnionLong * top_level_long;
@@ -3979,6 +4013,8 @@ struct TopLevel {
     struct UnionObject * object;
     struct UnionObjectMapper * object_mapper;
     struct UnionOf * of;
+    struct UnionOffsetDateTime * offset_date_time;
+    struct UnionOffsetTime * offset_time;
     struct UnionOneway * oneway;
     struct UnionOpen * open;
     struct UnionOperator * top_level_operator;
@@ -4976,6 +5012,13 @@ void cJSON_DeleteUnionList(struct UnionList * x);
 struct UnionList * cJSON_ParseUnionList(const char * s);
 char * cJSON_PrintUnionList(const struct UnionList * x);
 
+#define cJSON_IsUnionLocalDate(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
+struct UnionLocalDate * cJSON_GetUnionLocalDateValue(const cJSON * j);
+cJSON * cJSON_CreateUnionLocalDate(const struct UnionLocalDate * x);
+void cJSON_DeleteUnionLocalDate(struct UnionLocalDate * x);
+struct UnionLocalDate * cJSON_ParseUnionLocalDate(const char * s);
+char * cJSON_PrintUnionLocalDate(const struct UnionLocalDate * x);
+
 #define cJSON_IsUnionLocale(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
 struct UnionLocale * cJSON_GetUnionLocaleValue(const cJSON * j);
 cJSON * cJSON_CreateUnionLocale(const struct UnionLocale * x);
@@ -5137,6 +5180,20 @@ void cJSON_DeleteUnionOf(struct UnionOf * x);
 struct UnionOf * cJSON_ParseUnionOf(const char * s);
 char * cJSON_PrintUnionOf(const struct UnionOf * x);
 
+#define cJSON_IsUnionOffsetDateTime(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
+struct UnionOffsetDateTime * cJSON_GetUnionOffsetDateTimeValue(const cJSON * j);
+cJSON * cJSON_CreateUnionOffsetDateTime(const struct UnionOffsetDateTime * x);
+void cJSON_DeleteUnionOffsetDateTime(struct UnionOffsetDateTime * x);
+struct UnionOffsetDateTime * cJSON_ParseUnionOffsetDateTime(const char * s);
+char * cJSON_PrintUnionOffsetDateTime(const struct UnionOffsetDateTime * x);
+
+#define cJSON_IsUnionOffsetTime(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
+struct UnionOffsetTime * cJSON_GetUnionOffsetTimeValue(const cJSON * j);
+cJSON * cJSON_CreateUnionOffsetTime(const struct UnionOffsetTime * x);
+void cJSON_DeleteUnionOffsetTime(struct UnionOffsetTime * x);
+struct UnionOffsetTime * cJSON_ParseUnionOffsetTime(const char * s);
+char * cJSON_PrintUnionOffsetTime(const struct UnionOffsetTime * x);
+
 #define cJSON_IsUnionOneway(j) (cJSON_IsNumber(j) || cJSON_IsObject(j))
 struct UnionOneway * cJSON_GetUnionOnewayValue(const cJSON * j);
 cJSON * cJSON_CreateUnionOneway(const struct UnionOneway * x);
@@ -7218,6 +7275,12 @@ cJSON * cJSON_CreateList(const struct List * x);
 char * cJSON_PrintList(const struct List * x);
 void cJSON_DeleteList(struct List * x);
 
+struct LocalDate * cJSON_ParseLocalDate(const char * s);
+struct LocalDate * cJSON_GetLocalDateValue(const cJSON * j);
+cJSON * cJSON_CreateLocalDate(const struct LocalDate * x);
+char * cJSON_PrintLocalDate(const struct LocalDate * x);
+void cJSON_DeleteLocalDate(struct LocalDate * x);
+
 struct Locale * cJSON_ParseLocale(const char * s);
 struct Locale * cJSON_GetLocaleValue(const cJSON * j);
 cJSON * cJSON_CreateLocale(const struct Locale * x);
@@ -7356,6 +7419,18 @@ cJSON * cJSON_CreateOf(const struct Of * x);
 char * cJSON_PrintOf(const struct Of * x);
 void cJSON_DeleteOf(struct Of * x);
 
+struct OffsetDateTime * cJSON_ParseOffsetDateTime(const char * s);
+struct OffsetDateTime * cJSON_GetOffsetDateTimeValue(const cJSON * j);
+cJSON * cJSON_CreateOffsetDateTime(const struct OffsetDateTime * x);
+char * cJSON_PrintOffsetDateTime(const struct OffsetDateTime * x);
+void cJSON_DeleteOffsetDateTime(struct OffsetDateTime * x);
+
+struct OffsetTime * cJSON_ParseOffsetTime(const char * s);
+struct OffsetTime * cJSON_GetOffsetTimeValue(const cJSON * j);
+cJSON * cJSON_CreateOffsetTime(const struct OffsetTime * x);
+char * cJSON_PrintOffsetTime(const struct OffsetTime * x);
+void cJSON_DeleteOffsetTime(struct OffsetTime * x);
+
 struct Oneway * cJSON_ParseOneway(const char * s);
 struct Oneway * cJSON_GetOnewayValue(const cJSON * j);
 cJSON * cJSON_CreateOneway(const struct Oneway * x);
diff --git a/base/schema-cplusplus/test/inputs/schema/date-time.schema/default/quicktype.hpp b/head/schema-cplusplus/test/inputs/schema/date-time.schema/default/quicktype.hpp
index a198eb5..6aa08f3 100644
--- a/base/schema-cplusplus/test/inputs/schema/date-time.schema/default/quicktype.hpp
+++ b/head/schema-cplusplus/test/inputs/schema/date-time.schema/default/quicktype.hpp
@@ -8,6 +8,7 @@
 
 #pragma once
 
+#include <optional>
 #include <variant>
 #include "json.hpp"
 
@@ -92,6 +93,36 @@ namespace quicktype {
 
     using ComplexUnionArrayElement = std::variant<std::string, ComplexUnionArrayEnum, int64_t>;
 
+    class LocalDate {
+        public:
+        LocalDate() = default;
+        virtual ~LocalDate() = default;
+
+        private:
+
+        public:
+    };
+
+    class OffsetDateTime {
+        public:
+        OffsetDateTime() = default;
+        virtual ~OffsetDateTime() = default;
+
+        private:
+
+        public:
+    };
+
+    class OffsetTime {
+        public:
+        OffsetTime() = default;
+        virtual ~OffsetTime() = default;
+
+        private:
+
+        public:
+    };
+
     class TopLevel {
         public:
         TopLevel() = default;
@@ -101,6 +132,9 @@ namespace quicktype {
         std::vector<ComplexUnionArrayElement> complex_union_array;
         std::string date;
         std::string date_time;
+        std::optional<LocalDate> local_date_class;
+        std::optional<OffsetDateTime> offset_date_time_class;
+        std::optional<OffsetTime> offset_time_class;
         std::string time;
         std::vector<std::string> union_array;
 
@@ -117,6 +151,18 @@ namespace quicktype {
         std::string & get_mutable_date_time() { return date_time; }
         void set_date_time(const std::string & value) { this->date_time = value; }
 
+        const std::optional<LocalDate> & get_local_date_class() const { return local_date_class; }
+        std::optional<LocalDate> & get_mutable_local_date_class() { return local_date_class; }
+        void set_local_date_class(const std::optional<LocalDate> & value) { this->local_date_class = value; }
+
+        const std::optional<OffsetDateTime> & get_offset_date_time_class() const { return offset_date_time_class; }
+        std::optional<OffsetDateTime> & get_mutable_offset_date_time_class() { return offset_date_time_class; }
+        void set_offset_date_time_class(const std::optional<OffsetDateTime> & value) { this->offset_date_time_class = value; }
+
+        const std::optional<OffsetTime> & get_offset_time_class() const { return offset_time_class; }
+        std::optional<OffsetTime> & get_mutable_offset_time_class() { return offset_time_class; }
+        void set_offset_time_class(const std::optional<OffsetTime> & value) { this->offset_time_class = value; }
+
         const std::string & get_time() const { return time; }
         std::string & get_mutable_time() { return time; }
         void set_time(const std::string & value) { this->time = value; }
@@ -128,6 +174,15 @@ namespace quicktype {
 }
 
 namespace quicktype {
+void from_json(const json & j, LocalDate & x);
+void to_json(json & j, const LocalDate & x);
+
+void from_json(const json & j, OffsetDateTime & x);
+void to_json(json & j, const OffsetDateTime & x);
+
+void from_json(const json & j, OffsetTime & x);
+void to_json(json & j, const OffsetTime & x);
+
 void from_json(const json & j, TopLevel & x);
 void to_json(json & j, const TopLevel & x);
 
@@ -142,12 +197,51 @@ struct adl_serializer<std::variant<std::string, quicktype::ComplexUnionArrayEnum
 };
 }
 namespace quicktype {
+    inline void from_json(const json & j, LocalDate& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const LocalDate & x) {
+        j = json::object();
+        (void)x;
+    }
+
+    inline void from_json(const json & j, OffsetDateTime& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const OffsetDateTime & x) {
+        j = json::object();
+        (void)x;
+    }
+
+    inline void from_json(const json & j, OffsetTime& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const OffsetTime & 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");
         x.set_complex_union_array(j.at("complex-union-array").get<std::vector<ComplexUnionArrayElement>>());
         x.set_date(j.at("date").get<std::string>());
         if (j.find("date-time") != j.end() && !std::regex_match(j.at("date-time").get<std::string>(), std::regex("^[0-9]{4}-[0-9]{2}-[0-9]{2}T.*$"))) throw std::runtime_error("Expected date-time");
         x.set_date_time(j.at("date-time").get<std::string>());
+        if (j.find("local-date-class") != j.end() && j.at("local-date-class").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_local_date_class(get_stack_optional<LocalDate>(j, "local-date-class"));
+        if (j.find("offset-date-time-class") != j.end() && j.at("offset-date-time-class").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_offset_date_time_class(get_stack_optional<OffsetDateTime>(j, "offset-date-time-class"));
+        if (j.find("offset-time-class") != j.end() && j.at("offset-time-class").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_offset_time_class(get_stack_optional<OffsetTime>(j, "offset-time-class"));
         x.set_time(j.at("time").get<std::string>());
         x.set_union_array(j.at("union-array").get<std::vector<std::string>>());
     }
@@ -157,6 +251,9 @@ namespace quicktype {
         j["complex-union-array"] = x.get_complex_union_array();
         j["date"] = x.get_date();
         j["date-time"] = x.get_date_time();
+        j["local-date-class"] = x.get_local_date_class();
+        j["offset-date-time-class"] = x.get_offset_date_time_class();
+        j["offset-time-class"] = x.get_offset_time_class();
         j["time"] = x.get_time();
         j["union-array"] = x.get_union_array();
     }
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 9990771..26dbf82 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, SERIALIZABLE, ENUM_SELF, SENDABLE, SERIALIZE, SERIAL_NAME, K_SERIALIZER, PRIMITIVE_KIND, SERIAL_DESCRIPTOR, SERIALIZER_PROVIDER, SET, SHORT, SIGNED, SIMPLE_MODULE, SIZEOF, STACKALLOC, STANDARDS, STATIC, STATIC_ASSERT, STATIC_CAST, STD_DESERIALIZER, STD_SERIALIZER, STRICTFP, STRING, STRUCT, SUBSCRIPT, SUPER, SWITCH, SYMBOL, SYNCHRONIZED, SYSTEM, TEMPLATE, THEN, THIS, THREAD_LOCAL, THROW, THROWS, TIME_ONLY, TIME_ONLY_CONVERTER, TIME_ZONE, TO_JSON, TOP_LEVEL, TO_STRING, TRANSIENT, TRUE, ENUM_TRUE, TRY, TYPE, ENUM_TYPE, TYPEALIAS, TYPEDEF, TYPEID, TYPENAME, TYPEOF, UINT, ULONG, UNCHECKED, UNDEFINED, UNION, USE_SERIALIZERS, UNOWNED, UNSAFE, UNSIGNED, USHORT, USING, UTF8_JSON_READER, UTF8_JSON_WRITER, UUID, VAR, VIRTUAL, VOID, VOLATILE, WCHAR_T, WEAK, WHERE, WHILE, WILL_SET, WITH, XOR, XOR_EQ, YES, YIELD, DUMMY };
+    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, LOCAL_DATE, 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, OFFSET_DATE_TIME, OFFSET_TIME, OBJECT_MAPPER, OF, ONEWAY, OPEN, OPERATOR, OPTIONAL, OR, OR_EQ, OUT, OVERRIDE, PACKAGE, PARAMS, PASS, PORT, POSTFIX, PRECEDENCE, PREFIX, PRINT, PRINTF, PRINT_MEMBERS, PRIVATE, PROTECTED, PROTOCOL, ENUM_PROTOCOL, PUBLIC, QUICKTYPE, RAISE, RANGE, READONLY, REF, REG_EXP, REGISTER, REINTERPRET_CAST, REPEAT, REQUIRE, REQUIRED, REQUIRES, RESTRICT, RETAIN, RETHROWS, RETURN, RIGHT, RUNTIME_TYPE, S, SBYTE, SEALED, SEL, SELECT, SELF, SERIALIZABLE, ENUM_SELF, SENDABLE, SERIALIZE, SERIAL_NAME, K_SERIALIZER, PRIMITIVE_KIND, SERIAL_DESCRIPTOR, SERIALIZER_PROVIDER, SET, SHORT, SIGNED, SIMPLE_MODULE, SIZEOF, STACKALLOC, STANDARDS, STATIC, STATIC_ASSERT, STATIC_CAST, STD_DESERIALIZER, STD_SERIALIZER, STRICTFP, STRING, STRUCT, SUBSCRIPT, SUPER, SWITCH, SYMBOL, SYNCHRONIZED, SYSTEM, TEMPLATE, THEN, THIS, THREAD_LOCAL, THROW, THROWS, TIME_ONLY, TIME_ONLY_CONVERTER, TIME_ZONE, TO_JSON, TOP_LEVEL, TO_STRING, TRANSIENT, TRUE, ENUM_TRUE, TRY, TYPE, ENUM_TYPE, TYPEALIAS, TYPEDEF, TYPEID, TYPENAME, TYPEOF, UINT, ULONG, UNCHECKED, UNDEFINED, UNION, USE_SERIALIZERS, UNOWNED, UNSAFE, UNSIGNED, USHORT, USING, UTF8_JSON_READER, UTF8_JSON_WRITER, UUID, VAR, VIRTUAL, VOID, VOLATILE, WCHAR_T, WEAK, WHERE, WHILE, WILL_SET, WITH, XOR, XOR_EQ, YES, YIELD, DUMMY };
 
     class TopLevel {
         public:
@@ -302,6 +302,7 @@ namespace quicktype {
             {"left", Enum::LEFT},
             {"let", Enum::LET},
             {"list", Enum::LIST},
+            {"LocalDate", Enum::LOCAL_DATE},
             {"Locale", Enum::LOCALE},
             {"lock", Enum::LOCK},
             {"long", Enum::LONG},
@@ -334,6 +335,8 @@ namespace quicktype {
             {"nullptr", Enum::NULLPTR},
             {"number", Enum::NUMBER},
             {"object", Enum::OBJECT},
+            {"OffsetDateTime", Enum::OFFSET_DATE_TIME},
+            {"OffsetTime", Enum::OFFSET_TIME},
             {"ObjectMapper", Enum::OBJECT_MAPPER},
             {"of", Enum::OF},
             {"oneway", Enum::ONEWAY},
@@ -651,6 +654,7 @@ namespace quicktype {
             case Enum::LEFT: j = "left"; break;
             case Enum::LET: j = "let"; break;
             case Enum::LIST: j = "list"; break;
+            case Enum::LOCAL_DATE: j = "LocalDate"; break;
             case Enum::LOCALE: j = "Locale"; break;
             case Enum::LOCK: j = "lock"; break;
             case Enum::LONG: j = "long"; break;
@@ -683,6 +687,8 @@ namespace quicktype {
             case Enum::NULLPTR: j = "nullptr"; break;
             case Enum::NUMBER: j = "number"; break;
             case Enum::OBJECT: j = "object"; break;
+            case Enum::OFFSET_DATE_TIME: j = "OffsetDateTime"; break;
+            case Enum::OFFSET_TIME: j = "OffsetTime"; break;
             case Enum::OBJECT_MAPPER: j = "ObjectMapper"; break;
             case Enum::OF: j = "of"; break;
             case Enum::ONEWAY: j = "oneway"; 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 6da64bd..697a78a 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
@@ -1577,6 +1577,18 @@ namespace quicktype {
 
     using UnionList = std::variant<List, double>;
 
+    class LocalDate {
+        public:
+        LocalDate() = default;
+        virtual ~LocalDate() = default;
+
+        private:
+
+        public:
+    };
+
+    using UnionLocalDate = std::variant<LocalDate, double>;
+
     class Locale {
         public:
         Locale() = default;
@@ -1853,6 +1865,30 @@ namespace quicktype {
 
     using UnionOf = std::variant<Of, double>;
 
+    class OffsetDateTime {
+        public:
+        OffsetDateTime() = default;
+        virtual ~OffsetDateTime() = default;
+
+        private:
+
+        public:
+    };
+
+    using UnionOffsetDateTime = std::variant<OffsetDateTime, double>;
+
+    class OffsetTime {
+        public:
+        OffsetTime() = default;
+        virtual ~OffsetTime() = default;
+
+        private:
+
+        public:
+    };
+
+    using UnionOffsetTime = std::variant<OffsetTime, double>;
+
     class Oneway {
         public:
         Oneway() = default;
@@ -4329,6 +4365,7 @@ namespace quicktype {
         std::optional<UnionLeft> left;
         std::optional<UnionLet> let;
         std::optional<UnionList> list;
+        std::optional<UnionLocalDate> local_date;
         std::optional<UnionLocale> locale;
         std::optional<UnionLock> lock;
         std::optional<UnionLong> top_level_long;
@@ -4363,6 +4400,8 @@ namespace quicktype {
         std::optional<UnionObject> object;
         std::optional<UnionObjectMapper> object_mapper;
         std::optional<UnionOf> of;
+        std::optional<UnionOffsetDateTime> offset_date_time;
+        std::optional<UnionOffsetTime> offset_time;
         std::optional<UnionOneway> oneway;
         std::optional<UnionOpen> open;
         std::optional<UnionOperator> top_level_operator;
@@ -5204,6 +5243,10 @@ namespace quicktype {
         std::optional<UnionList> & get_mutable_list() { return list; }
         void set_list(const std::optional<UnionList> & value) { this->list = value; }
 
+        const std::optional<UnionLocalDate> & get_local_date() const { return local_date; }
+        std::optional<UnionLocalDate> & get_mutable_local_date() { return local_date; }
+        void set_local_date(const std::optional<UnionLocalDate> & value) { this->local_date = value; }
+
         const std::optional<UnionLocale> & get_locale() const { return locale; }
         std::optional<UnionLocale> & get_mutable_locale() { return locale; }
         void set_locale(const std::optional<UnionLocale> & value) { this->locale = value; }
@@ -5340,6 +5383,14 @@ namespace quicktype {
         std::optional<UnionOf> & get_mutable_of() { return of; }
         void set_of(const std::optional<UnionOf> & value) { this->of = value; }
 
+        const std::optional<UnionOffsetDateTime> & get_offset_date_time() const { return offset_date_time; }
+        std::optional<UnionOffsetDateTime> & get_mutable_offset_date_time() { return offset_date_time; }
+        void set_offset_date_time(const std::optional<UnionOffsetDateTime> & value) { this->offset_date_time = value; }
+
+        const std::optional<UnionOffsetTime> & get_offset_time() const { return offset_time; }
+        std::optional<UnionOffsetTime> & get_mutable_offset_time() { return offset_time; }
+        void set_offset_time(const std::optional<UnionOffsetTime> & value) { this->offset_time = value; }
+
         const std::optional<UnionOneway> & get_oneway() const { return oneway; }
         std::optional<UnionOneway> & get_mutable_oneway() { return oneway; }
         void set_oneway(const std::optional<UnionOneway> & value) { this->oneway = value; }
@@ -6223,6 +6274,9 @@ void to_json(json & j, const Let & x);
 void from_json(const json & j, List & x);
 void to_json(json & j, const List & x);
 
+void from_json(const json & j, LocalDate & x);
+void to_json(json & j, const LocalDate & x);
+
 void from_json(const json & j, Locale & x);
 void to_json(json & j, const Locale & x);
 
@@ -6292,6 +6346,12 @@ void to_json(json & j, const ObjectMapper & x);
 void from_json(const json & j, Of & x);
 void to_json(json & j, const Of & x);
 
+void from_json(const json & j, OffsetDateTime & x);
+void to_json(json & j, const OffsetDateTime & x);
+
+void from_json(const json & j, OffsetTime & x);
+void to_json(json & j, const OffsetTime & x);
+
 void from_json(const json & j, Oneway & x);
 void to_json(json & j, const Oneway & x);
 
@@ -7613,6 +7673,12 @@ struct adl_serializer<std::variant<quicktype::List, double>> {
     static void to_json(json & j, const std::variant<quicktype::List, double> & x);
 };
 
+template <>
+struct adl_serializer<std::variant<quicktype::LocalDate, double>> {
+    static void from_json(const json & j, std::variant<quicktype::LocalDate, double> & x);
+    static void to_json(json & j, const std::variant<quicktype::LocalDate, double> & x);
+};
+
 template <>
 struct adl_serializer<std::variant<quicktype::Locale, double>> {
     static void from_json(const json & j, std::variant<quicktype::Locale, double> & x);
@@ -7751,6 +7817,18 @@ struct adl_serializer<std::variant<quicktype::Of, double>> {
     static void to_json(json & j, const std::variant<quicktype::Of, double> & x);
 };
 
+template <>
+struct adl_serializer<std::variant<quicktype::OffsetDateTime, double>> {
+    static void from_json(const json & j, std::variant<quicktype::OffsetDateTime, double> & x);
+    static void to_json(json & j, const std::variant<quicktype::OffsetDateTime, double> & x);
+};
+
+template <>
+struct adl_serializer<std::variant<quicktype::OffsetTime, double>> {
+    static void from_json(const json & j, std::variant<quicktype::OffsetTime, double> & x);
+    static void to_json(json & j, const std::variant<quicktype::OffsetTime, double> & x);
+};
+
 template <>
 struct adl_serializer<std::variant<quicktype::Oneway, double>> {
     static void from_json(const json & j, std::variant<quicktype::Oneway, double> & x);
@@ -10262,6 +10340,17 @@ namespace quicktype {
         (void)x;
     }
 
+    inline void from_json(const json & j, LocalDate& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const LocalDate & x) {
+        j = json::object();
+        (void)x;
+    }
+
     inline void from_json(const json & j, Locale& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         (void)j;
@@ -10515,6 +10604,28 @@ namespace quicktype {
         (void)x;
     }
 
+    inline void from_json(const json & j, OffsetDateTime& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const OffsetDateTime & x) {
+        j = json::object();
+        (void)x;
+    }
+
+    inline void from_json(const json & j, OffsetTime& x) {
+        if (!j.is_object()) throw std::runtime_error("Expected object");
+        (void)j;
+        (void)x;
+    }
+
+    inline void to_json(json & j, const OffsetTime & x) {
+        j = json::object();
+        (void)x;
+    }
+
     inline void from_json(const json & j, Oneway& x) {
         if (!j.is_object()) throw std::runtime_error("Expected object");
         (void)j;
@@ -12974,6 +13085,8 @@ namespace quicktype {
         x.set_let(get_stack_optional<std::variant<Let, double>>(j, "let"));
         if (j.find("list") != j.end() && j.at("list").is_null()) throw std::runtime_error("Unexpected null");
         x.set_list(get_stack_optional<std::variant<List, double>>(j, "list"));
+        if (j.find("LocalDate") != j.end() && j.at("LocalDate").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_local_date(get_stack_optional<std::variant<LocalDate, double>>(j, "LocalDate"));
         if (j.find("Locale") != j.end() && j.at("Locale").is_null()) throw std::runtime_error("Unexpected null");
         x.set_locale(get_stack_optional<std::variant<Locale, double>>(j, "Locale"));
         if (j.find("lock") != j.end() && j.at("lock").is_null()) throw std::runtime_error("Unexpected null");
@@ -13042,6 +13155,10 @@ namespace quicktype {
         x.set_object_mapper(get_stack_optional<std::variant<ObjectMapper, double>>(j, "ObjectMapper"));
         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("OffsetDateTime") != j.end() && j.at("OffsetDateTime").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_offset_date_time(get_stack_optional<std::variant<OffsetDateTime, double>>(j, "OffsetDateTime"));
+        if (j.find("OffsetTime") != j.end() && j.at("OffsetTime").is_null()) throw std::runtime_error("Unexpected null");
+        x.set_offset_time(get_stack_optional<std::variant<OffsetTime, double>>(j, "OffsetTime"));
         if (j.find("oneway") != j.end() && j.at("oneway").is_null()) throw std::runtime_error("Unexpected null");
         x.set_oneway(get_stack_optional<std::variant<Oneway, double>>(j, "oneway"));
         if (j.find("open") != j.end() && j.at("open").is_null()) throw std::runtime_error("Unexpected null");
@@ -13478,6 +13595,7 @@ namespace quicktype {
         j["left"] = x.get_left();
         j["let"] = x.get_let();
         j["list"] = x.get_list();
+        j["LocalDate"] = x.get_local_date();
         j["Locale"] = x.get_locale();
         j["lock"] = x.get_lock();
         j["long"] = x.get_top_level_long();
@@ -13512,6 +13630,8 @@ namespace quicktype {
         j["object"] = x.get_object();
         j["ObjectMapper"] = x.get_object_mapper();
         j["of"] = x.get_of();
+        j["OffsetDateTime"] = x.get_offset_date_time();
+        j["OffsetTime"] = x.get_offset_time();
         j["oneway"] = x.get_oneway();
         j["open"] = x.get_open();
         j["operator"] = x.get_top_level_operator();
@@ -16122,6 +16242,26 @@ namespace nlohmann {
         }
     }
 
+    inline void adl_serializer<std::variant<quicktype::LocalDate, double>>::from_json(const json & j, std::variant<quicktype::LocalDate, double> & x) {
+        if (j.is_number())
+            x = j.get<double>();
+        else if (j.is_object())
+            x = j.get<quicktype::LocalDate>();
+        else throw std::runtime_error("Could not deserialise!");
+    }
+
+    inline void adl_serializer<std::variant<quicktype::LocalDate, double>>::to_json(json & j, const std::variant<quicktype::LocalDate, double> & x) {
+        switch (x.index()) {
+            case 0:
+                j = std::get<quicktype::LocalDate>(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::Locale, double>>::from_json(const json & j, std::variant<quicktype::Locale, double> & x) {
         if (j.is_number())
             x = j.get<double>();
@@ -16582,6 +16722,46 @@ namespace nlohmann {
         }
     }
 
+    inline void adl_serializer<std::variant<quicktype::OffsetDateTime, double>>::from_json(const json & j, std::variant<quicktype::OffsetDateTime, double> & x) {
+        if (j.is_number())
+            x = j.get<double>();
+        else if (j.is_object())
+            x = j.get<quicktype::OffsetDateTime>();
+        else throw std::runtime_error("Could not deserialise!");
+    }
+
+    inline void adl_serializer<std::variant<quicktype::OffsetDateTime, double>>::to_json(json & j, const std::variant<quicktype::OffsetDateTime, double> & x) {
+        switch (x.index()) {
+            case 0:
+                j = std::get<quicktype::OffsetDateTime>(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::OffsetTime, double>>::from_json(const json & j, std::variant<quicktype::OffsetTime, double> & x) {
+        if (j.is_number())
+            x = j.get<double>();
+        else if (j.is_object())
+            x = j.get<quicktype::OffsetTime>();
+        else throw std::runtime_error("Could not deserialise!");
+    }
+
+    inline void adl_serializer<std::variant<quicktype::OffsetTime, double>>::to_json(json & j, const std::variant<quicktype::OffsetTime, double> & x) {
+        switch (x.index()) {
+            case 0:
+                j = std::get<quicktype::OffsetTime>(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::Oneway, double>>::from_json(const json & j, std::variant<quicktype::Oneway, double> & x) {
         if (j.is_number())
             x = j.get<double>();
diff --git a/base/schema-crystal/test/inputs/schema/date-time.schema/default/TopLevel.cr b/head/schema-crystal/test/inputs/schema/date-time.schema/default/TopLevel.cr
index ba810c2..cec8ffc 100644
--- a/base/schema-crystal/test/inputs/schema/date-time.schema/default/TopLevel.cr
+++ b/head/schema-crystal/test/inputs/schema/date-time.schema/default/TopLevel.cr
@@ -11,10 +11,34 @@ class TopLevel
   @[JSON::Field(key: "date-time")]
   property date_time : String
 
+  @[JSON::Field(key: "local-date-class")]
+  property local_date_class : LocalDate?
+
+  @[JSON::Field(key: "offset-date-time-class")]
+  property offset_date_time_class : OffsetDateTime?
+
+  @[JSON::Field(key: "offset-time-class")]
+  property offset_time_class : OffsetTime?
+
   property time : String
 
   @[JSON::Field(key: "union-array")]
   property union_array : Array(String)
 end
 
+class LocalDate
+  include JSON::Serializable
+
+end
+
+class OffsetDateTime
+  include JSON::Serializable
+
+end
+
+class OffsetTime
+  include JSON::Serializable
+
+end
+
 alias ComplexUnionArray = Int64 | 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 23b7f5d..88c108b 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
@@ -419,6 +419,9 @@ class TopLevel
 
   property list : UnionList?
 
+  @[JSON::Field(key: "LocalDate")]
+  property local_date : UnionLocalDate?
+
   @[JSON::Field(key: "Locale")]
   property locale : UnionLocale?
 
@@ -502,6 +505,12 @@ class TopLevel
   @[JSON::Field(key: "of")]
   property top_level_of : UnionOf?
 
+  @[JSON::Field(key: "OffsetDateTime")]
+  property offset_date_time : UnionOffsetDateTime?
+
+  @[JSON::Field(key: "OffsetTime")]
+  property offset_time : UnionOffsetTime?
+
   property oneway : UnionOneway?
 
   property open : UnionOpen?
@@ -1595,6 +1604,11 @@ class List
 
 end
 
+class LocalDate
+  include JSON::Serializable
+
+end
+
 class Locale
   include JSON::Serializable
 
@@ -1740,6 +1754,16 @@ class ObjectMapper
 
 end
 
+class OffsetDateTime
+  include JSON::Serializable
+
+end
+
+class OffsetTime
+  include JSON::Serializable
+
+end
+
 class Oneway
   include JSON::Serializable
 
@@ -2811,6 +2835,8 @@ alias UnionLet = Float64 | Let
 
 alias UnionList = Float64 | List
 
+alias UnionLocalDate = Float64 | LocalDate
+
 alias UnionLocale = Float64 | Locale
 
 alias UnionLock = Float64 | Lock
@@ -2869,6 +2895,10 @@ alias UnionObject = Float64 | ObjectClass
 
 alias UnionObjectMapper = Float64 | ObjectMapper
 
+alias UnionOffsetDateTime = Float64 | OffsetDateTime
+
+alias UnionOffsetTime = Float64 | OffsetTime
+
 alias UnionOneway = Float64 | Oneway
 
 alias UnionOpen = Float64 | Open
diff --git a/base/schema-csharp/test/inputs/schema/date-time.schema/default/QuickType.cs b/head/schema-csharp/test/inputs/schema/date-time.schema/default/QuickType.cs
index 04196fd..2ccd544 100644
--- a/base/schema-csharp/test/inputs/schema/date-time.schema/default/QuickType.cs
+++ b/head/schema-csharp/test/inputs/schema/date-time.schema/default/QuickType.cs
@@ -34,6 +34,15 @@ namespace QuickType
         [JsonProperty("date-time", Required = Required.Always)]
         public DateTimeOffset DateTime { get; set; }
 
+        [JsonProperty("local-date-class", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public LocalDate? LocalDateClass { get; set; }
+
+        [JsonProperty("offset-date-time-class", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public OffsetDateTime? OffsetDateTimeClass { get; set; }
+
+        [JsonProperty("offset-time-class", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public OffsetTime? OffsetTimeClass { get; set; }
+
         [JsonProperty("time", Required = Required.Always)]
         public DateTimeOffset Time { get; set; }
 
@@ -41,6 +50,18 @@ namespace QuickType
         public DateTimeOffset[] UnionArray { get; set; }
     }
 
+    public partial class LocalDate
+    {
+    }
+
+    public partial class OffsetDateTime
+    {
+    }
+
+    public partial class OffsetTime
+    {
+    }
+
     public enum ComplexUnionArrayEnum { Foo, Bar };
 
     public partial struct ComplexUnionArrayElement
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 0c15d57..4c87f3e 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, Serializable, EnumSelf, Sendable, Serialize, SerialName, KSerializer, PrimitiveKind, SerialDescriptor, SerializerProvider, Set, Short, Signed, SimpleModule, Sizeof, Stackalloc, Standards, Static, StaticAssert, StaticCast, StdDeserializer, StdSerializer, Strictfp, String, Struct, Subscript, Super, Switch, Symbol, Synchronized, System, Template, Then, This, ThreadLocal, Throw, Throws, TimeOnly, TimeOnlyConverter, TimeZone, ToJson, TopLevel, ToString, Transient, True, EnumTrue, Try, Type, EnumType, Typealias, Typedef, Typeid, Typename, Typeof, Uint, Ulong, Unchecked, Undefined, Union, UseSerializers, Unowned, Unsafe, Unsigned, Ushort, Using, Utf8JsonReader, Utf8JsonWriter, Uuid, Var, Virtual, Void, Volatile, WcharT, Weak, Where, While, WillSet, With, Xor, XorEq, Yes, Yield, Dummy };
+    public 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, LocalDate, 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, OffsetDateTime, OffsetTime, ObjectMapper, Of, Oneway, Open, Operator, Optional, Or, OrEq, Out, Override, Package, Params, Pass, Port, Postfix, Precedence, Prefix, Print, Printf, PrintMembers, Private, Protected, Protocol, EnumProtocol, Public, Quicktype, Raise, Range, Readonly, Ref, RegExp, Register, ReinterpretCast, Repeat, Require, Required, Requires, Restrict, Retain, Rethrows, Return, Right, RuntimeType, S, Sbyte, Sealed, Sel, Select, Self, Serializable, EnumSelf, Sendable, Serialize, SerialName, KSerializer, PrimitiveKind, SerialDescriptor, SerializerProvider, Set, Short, Signed, SimpleModule, Sizeof, Stackalloc, Standards, Static, StaticAssert, StaticCast, StdDeserializer, StdSerializer, Strictfp, String, Struct, Subscript, Super, Switch, Symbol, Synchronized, System, Template, Then, This, ThreadLocal, Throw, Throws, TimeOnly, TimeOnlyConverter, TimeZone, ToJson, TopLevel, ToString, Transient, True, EnumTrue, Try, Type, EnumType, Typealias, Typedef, Typeid, Typename, Typeof, Uint, Ulong, Unchecked, Undefined, Union, UseSerializers, Unowned, Unsafe, Unsigned, Ushort, Using, Utf8JsonReader, Utf8JsonWriter, Uuid, Var, Virtual, Void, Volatile, WcharT, Weak, Where, While, WillSet, With, Xor, XorEq, Yes, Yield, Dummy };
 
     public partial class TopLevel
     {
@@ -417,6 +417,8 @@ namespace QuickType
                     return Enum.Let;
                 case "list":
                     return Enum.List;
+                case "LocalDate":
+                    return Enum.LocalDate;
                 case "Locale":
                     return Enum.Locale;
                 case "lock":
@@ -481,6 +483,10 @@ namespace QuickType
                     return Enum.Number;
                 case "object":
                     return Enum.Object;
+                case "OffsetDateTime":
+                    return Enum.OffsetDateTime;
+                case "OffsetTime":
+                    return Enum.OffsetTime;
                 case "ObjectMapper":
                     return Enum.ObjectMapper;
                 case "of":
@@ -1285,6 +1291,9 @@ namespace QuickType
                 case Enum.List:
                     serializer.Serialize(writer, "list");
                     return;
+                case Enum.LocalDate:
+                    serializer.Serialize(writer, "LocalDate");
+                    return;
                 case Enum.Locale:
                     serializer.Serialize(writer, "Locale");
                     return;
@@ -1381,6 +1390,12 @@ namespace QuickType
                 case Enum.Object:
                     serializer.Serialize(writer, "object");
                     return;
+                case Enum.OffsetDateTime:
+                    serializer.Serialize(writer, "OffsetDateTime");
+                    return;
+                case Enum.OffsetTime:
+                    serializer.Serialize(writer, "OffsetTime");
+                    return;
                 case Enum.ObjectMapper:
                     serializer.Serialize(writer, "ObjectMapper");
                     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 4953ce9..6092298 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
@@ -559,6 +559,9 @@ namespace QuickType
         [JsonProperty("list", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionList? List { get; set; }
 
+        [JsonProperty("LocalDate", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionLocalDate? LocalDate { get; set; }
+
         [JsonProperty("Locale", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionLocale? Locale { get; set; }
 
@@ -661,6 +664,12 @@ namespace QuickType
         [JsonProperty("of", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionOf? Of { get; set; }
 
+        [JsonProperty("OffsetDateTime", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionOffsetDateTime? OffsetDateTime { get; set; }
+
+        [JsonProperty("OffsetTime", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionOffsetTime? OffsetTime { get; set; }
+
         [JsonProperty("oneway", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionOneway? Oneway { get; set; }
 
@@ -1727,6 +1736,10 @@ namespace QuickType
     {
     }
 
+    public partial class LocalDate
+    {
+    }
+
     public partial class Locale
     {
     }
@@ -1855,6 +1868,14 @@ namespace QuickType
     {
     }
 
+    public partial class OffsetDateTime
+    {
+    }
+
+    public partial class OffsetTime
+    {
+    }
+
     public partial class Oneway
     {
     }
@@ -3934,6 +3955,15 @@ namespace QuickType
         public static implicit operator UnionList(List List) => new UnionList { List = List };
     }
 
+    public partial struct UnionLocalDate
+    {
+        public double? Double;
+        public LocalDate? LocalDate;
+
+        public static implicit operator UnionLocalDate(double Double) => new UnionLocalDate { Double = Double };
+        public static implicit operator UnionLocalDate(LocalDate LocalDate) => new UnionLocalDate { LocalDate = LocalDate };
+    }
+
     public partial struct UnionLocale
     {
         public double? Double;
@@ -4222,6 +4252,24 @@ namespace QuickType
         public static implicit operator UnionOf(Of Of) => new UnionOf { Of = Of };
     }
 
+    public partial struct UnionOffsetDateTime
+    {
+        public double? Double;
+        public OffsetDateTime? OffsetDateTime;
+
+        public static implicit operator UnionOffsetDateTime(double Double) => new UnionOffsetDateTime { Double = Double };
+        public static implicit operator UnionOffsetDateTime(OffsetDateTime OffsetDateTime) => new UnionOffsetDateTime { OffsetDateTime = OffsetDateTime };
+    }
+
+    public partial struct UnionOffsetTime
+    {
+        public double? Double;
+        public OffsetTime? OffsetTime;
+
+        public static implicit operator UnionOffsetTime(double Double) => new UnionOffsetTime { Double = Double };
+        public static implicit operator UnionOffsetTime(OffsetTime OffsetTime) => new UnionOffsetTime { OffsetTime = OffsetTime };
+    }
+
     public partial struct UnionOneway
     {
         public double? Double;
@@ -5491,6 +5539,7 @@ namespace QuickType
                 UnionJsonReaderConverter.Singleton,
                 UnionJsonTokenTypeConverter.Singleton,
                 UnionKSerializerConverter.Singleton,
+                UnionLocalDateConverter.Singleton,
                 UnionLocaleConverter.Singleton,
                 UnionMapEntryConverter.Singleton,
                 UnionNoConverter.Singleton,
@@ -5500,6 +5549,8 @@ namespace QuickType
                 UnionNullConverter.Singleton,
                 UnionNoneConverter.Singleton,
                 UnionObjectMapperConverter.Singleton,
+                UnionOffsetDateTimeConverter.Singleton,
+                UnionOffsetTimeConverter.Singleton,
                 UnionPrimitiveKindConverter.Singleton,
                 UnionProtocolConverter.Singleton,
                 UnionRegExpConverter.Singleton,
@@ -7166,6 +7217,44 @@ namespace QuickType
         public static readonly UnionKSerializerConverter Singleton = new UnionKSerializerConverter();
     }
 
+    internal class UnionLocalDateConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionLocalDate) || t == typeof(UnionLocalDate?);
+
+        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 UnionLocalDate { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<LocalDate>(reader);
+                    return new UnionLocalDate { LocalDate = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionLocalDate");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionLocalDate)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.LocalDate != null)
+            {
+                serializer.Serialize(writer, value.LocalDate);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionLocalDate");
+        }
+
+        public static readonly UnionLocalDateConverter Singleton = new UnionLocalDateConverter();
+    }
+
     internal class UnionLocaleConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionLocale) || t == typeof(UnionLocale?);
@@ -7508,6 +7597,82 @@ namespace QuickType
         public static readonly UnionObjectMapperConverter Singleton = new UnionObjectMapperConverter();
     }
 
+    internal class UnionOffsetDateTimeConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionOffsetDateTime) || t == typeof(UnionOffsetDateTime?);
+
+        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 UnionOffsetDateTime { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<OffsetDateTime>(reader);
+                    return new UnionOffsetDateTime { OffsetDateTime = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionOffsetDateTime");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionOffsetDateTime)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.OffsetDateTime != null)
+            {
+                serializer.Serialize(writer, value.OffsetDateTime);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionOffsetDateTime");
+        }
+
+        public static readonly UnionOffsetDateTimeConverter Singleton = new UnionOffsetDateTimeConverter();
+    }
+
+    internal class UnionOffsetTimeConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionOffsetTime) || t == typeof(UnionOffsetTime?);
+
+        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 UnionOffsetTime { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<OffsetTime>(reader);
+                    return new UnionOffsetTime { OffsetTime = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionOffsetTime");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionOffsetTime)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.OffsetTime != null)
+            {
+                serializer.Serialize(writer, value.OffsetTime);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionOffsetTime");
+        }
+
+        public static readonly UnionOffsetTimeConverter Singleton = new UnionOffsetTimeConverter();
+    }
+
     internal class UnionPrimitiveKindConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionPrimitiveKind) || t == typeof(UnionPrimitiveKind?);
diff --git a/base/schema-csharp-SystemTextJson/test/inputs/schema/date-time.schema/default/QuickType.cs b/head/schema-csharp-SystemTextJson/test/inputs/schema/date-time.schema/default/QuickType.cs
index cd0075f..8deb683 100644
--- a/base/schema-csharp-SystemTextJson/test/inputs/schema/date-time.schema/default/QuickType.cs
+++ b/head/schema-csharp-SystemTextJson/test/inputs/schema/date-time.schema/default/QuickType.cs
@@ -34,6 +34,18 @@ namespace QuickType
         [JsonPropertyName("date-time")]
         public DateTimeOffset DateTime { get; set; }
 
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("local-date-class")]
+        public LocalDate? LocalDateClass { get; set; }
+
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("offset-date-time-class")]
+        public OffsetDateTime? OffsetDateTimeClass { get; set; }
+
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("offset-time-class")]
+        public OffsetTime? OffsetTimeClass { get; set; }
+
         [JsonRequired]
         [JsonPropertyName("time")]
         public DateTimeOffset Time { get; set; }
@@ -43,6 +55,18 @@ namespace QuickType
         public DateTimeOffset[] UnionArray { get; set; }
     }
 
+    public partial class LocalDate
+    {
+    }
+
+    public partial class OffsetDateTime
+    {
+    }
+
+    public partial class OffsetTime
+    {
+    }
+
     public enum ComplexUnionArrayEnum { Foo, Bar };
 
     public partial struct ComplexUnionArrayElement
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 67a2818..481723e 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, Serializable, EnumSelf, Sendable, Serialize, SerialName, KSerializer, PrimitiveKind, SerialDescriptor, SerializerProvider, Set, Short, Signed, SimpleModule, Sizeof, Stackalloc, Standards, Static, StaticAssert, StaticCast, StdDeserializer, StdSerializer, Strictfp, String, Struct, Subscript, Super, Switch, Symbol, Synchronized, System, Template, Then, This, ThreadLocal, Throw, Throws, TimeOnly, TimeOnlyConverter, TimeZone, ToJson, TopLevel, ToString, Transient, True, EnumTrue, Try, Type, EnumType, Typealias, Typedef, Typeid, Typename, Typeof, Uint, Ulong, Unchecked, Undefined, Union, UseSerializers, Unowned, Unsafe, Unsigned, Ushort, Using, Utf8JsonReader, Utf8JsonWriter, Uuid, Var, Virtual, Void, Volatile, WcharT, Weak, Where, While, WillSet, With, Xor, XorEq, Yes, Yield, Dummy };
+    public 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, LocalDate, 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, OffsetDateTime, OffsetTime, ObjectMapper, Of, Oneway, Open, Operator, Optional, Or, OrEq, Out, Override, Package, Params, Pass, Port, Postfix, Precedence, Prefix, Print, Printf, PrintMembers, Private, Protected, Protocol, EnumProtocol, Public, Quicktype, Raise, Range, Readonly, Ref, RegExp, Register, ReinterpretCast, Repeat, Require, Required, Requires, Restrict, Retain, Rethrows, Return, Right, RuntimeType, S, Sbyte, Sealed, Sel, Select, Self, Serializable, EnumSelf, Sendable, Serialize, SerialName, KSerializer, PrimitiveKind, SerialDescriptor, SerializerProvider, Set, Short, Signed, SimpleModule, Sizeof, Stackalloc, Standards, Static, StaticAssert, StaticCast, StdDeserializer, StdSerializer, Strictfp, String, Struct, Subscript, Super, Switch, Symbol, Synchronized, System, Template, Then, This, ThreadLocal, Throw, Throws, TimeOnly, TimeOnlyConverter, TimeZone, ToJson, TopLevel, ToString, Transient, True, EnumTrue, Try, Type, EnumType, Typealias, Typedef, Typeid, Typename, Typeof, Uint, Ulong, Unchecked, Undefined, Union, UseSerializers, Unowned, Unsafe, Unsigned, Ushort, Using, Utf8JsonReader, Utf8JsonWriter, Uuid, Var, Virtual, Void, Volatile, WcharT, Weak, Where, While, WillSet, With, Xor, XorEq, Yes, Yield, Dummy };
 
     public partial class TopLevel
     {
@@ -414,6 +414,8 @@ namespace QuickType
                     return Enum.Let;
                 case "list":
                     return Enum.List;
+                case "LocalDate":
+                    return Enum.LocalDate;
                 case "Locale":
                     return Enum.Locale;
                 case "lock":
@@ -478,6 +480,10 @@ namespace QuickType
                     return Enum.Number;
                 case "object":
                     return Enum.Object;
+                case "OffsetDateTime":
+                    return Enum.OffsetDateTime;
+                case "OffsetTime":
+                    return Enum.OffsetTime;
                 case "ObjectMapper":
                     return Enum.ObjectMapper;
                 case "of":
@@ -1276,6 +1282,9 @@ namespace QuickType
                 case Enum.List:
                     JsonSerializer.Serialize(writer, "list", options);
                     return;
+                case Enum.LocalDate:
+                    JsonSerializer.Serialize(writer, "LocalDate", options);
+                    return;
                 case Enum.Locale:
                     JsonSerializer.Serialize(writer, "Locale", options);
                     return;
@@ -1372,6 +1381,12 @@ namespace QuickType
                 case Enum.Object:
                     JsonSerializer.Serialize(writer, "object", options);
                     return;
+                case Enum.OffsetDateTime:
+                    JsonSerializer.Serialize(writer, "OffsetDateTime", options);
+                    return;
+                case Enum.OffsetTime:
+                    JsonSerializer.Serialize(writer, "OffsetTime", options);
+                    return;
                 case Enum.ObjectMapper:
                     JsonSerializer.Serialize(writer, "ObjectMapper", 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 ae1c7ce..88a184f 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
@@ -734,6 +734,10 @@ namespace QuickType
         [JsonPropertyName("list")]
         public UnionList? List { get; set; }
 
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("LocalDate")]
+        public UnionLocalDate? LocalDate { get; set; }
+
         [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
         [JsonPropertyName("Locale")]
         public UnionLocale? Locale { get; set; }
@@ -870,6 +874,14 @@ namespace QuickType
         [JsonPropertyName("of")]
         public UnionOf? Of { get; set; }
 
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("OffsetDateTime")]
+        public UnionOffsetDateTime? OffsetDateTime { get; set; }
+
+        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+        [JsonPropertyName("OffsetTime")]
+        public UnionOffsetTime? OffsetTime { get; set; }
+
         [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
         [JsonPropertyName("oneway")]
         public UnionOneway? Oneway { get; set; }
@@ -2063,6 +2075,10 @@ namespace QuickType
     {
     }
 
+    public partial class LocalDate
+    {
+    }
+
     public partial class Locale
     {
     }
@@ -2191,6 +2207,14 @@ namespace QuickType
     {
     }
 
+    public partial class OffsetDateTime
+    {
+    }
+
+    public partial class OffsetTime
+    {
+    }
+
     public partial class Oneway
     {
     }
@@ -4270,6 +4294,15 @@ namespace QuickType
         public static implicit operator UnionList(List List) => new UnionList { List = List };
     }
 
+    public partial struct UnionLocalDate
+    {
+        public double? Double;
+        public LocalDate? LocalDate;
+
+        public static implicit operator UnionLocalDate(double Double) => new UnionLocalDate { Double = Double };
+        public static implicit operator UnionLocalDate(LocalDate LocalDate) => new UnionLocalDate { LocalDate = LocalDate };
+    }
+
     public partial struct UnionLocale
     {
         public double? Double;
@@ -4558,6 +4591,24 @@ namespace QuickType
         public static implicit operator UnionOf(Of Of) => new UnionOf { Of = Of };
     }
 
+    public partial struct UnionOffsetDateTime
+    {
+        public double? Double;
+        public OffsetDateTime? OffsetDateTime;
+
+        public static implicit operator UnionOffsetDateTime(double Double) => new UnionOffsetDateTime { Double = Double };
+        public static implicit operator UnionOffsetDateTime(OffsetDateTime OffsetDateTime) => new UnionOffsetDateTime { OffsetDateTime = OffsetDateTime };
+    }
+
+    public partial struct UnionOffsetTime
+    {
+        public double? Double;
+        public OffsetTime? OffsetTime;
+
+        public static implicit operator UnionOffsetTime(double Double) => new UnionOffsetTime { Double = Double };
+        public static implicit operator UnionOffsetTime(OffsetTime OffsetTime) => new UnionOffsetTime { OffsetTime = OffsetTime };
+    }
+
     public partial struct UnionOneway
     {
         public double? Double;
@@ -5825,6 +5876,7 @@ namespace QuickType
                 UnionJsonReaderConverter.Singleton,
                 UnionJsonTokenTypeConverter.Singleton,
                 UnionKSerializerConverter.Singleton,
+                UnionLocalDateConverter.Singleton,
                 UnionLocaleConverter.Singleton,
                 UnionMapEntryConverter.Singleton,
                 UnionNoConverter.Singleton,
@@ -5834,6 +5886,8 @@ namespace QuickType
                 UnionNullConverter.Singleton,
                 UnionNoneConverter.Singleton,
                 UnionObjectMapperConverter.Singleton,
+                UnionOffsetDateTimeConverter.Singleton,
+                UnionOffsetTimeConverter.Singleton,
                 UnionPrimitiveKindConverter.Singleton,
                 UnionProtocolConverter.Singleton,
                 UnionRegExpConverter.Singleton,
@@ -7430,6 +7484,42 @@ namespace QuickType
         public static readonly UnionKSerializerConverter Singleton = new UnionKSerializerConverter();
     }
 
+    internal class UnionLocalDateConverter : JsonConverter<UnionLocalDate>
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionLocalDate);
+
+        public override UnionLocalDate Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonTokenType.Number:
+                    var doubleValue1 = reader.GetDouble();
+                    return new UnionLocalDate { Double = doubleValue1 };
+                case JsonTokenType.StartObject:
+                    var objectValue = JsonSerializer.Deserialize<LocalDate>(ref reader, options);
+                    return new UnionLocalDate { LocalDate = objectValue };
+            }
+            throw new JsonException("Cannot unmarshal type UnionLocalDate");
+        }
+
+        public override void Write(Utf8JsonWriter writer, UnionLocalDate value, JsonSerializerOptions options)
+        {
+            if (value.Double != null)
+            {
+                JsonSerializer.Serialize(writer, value.Double.Value, options);
+                return;
+            }
+            if (value.LocalDate != null)
+            {
+                JsonSerializer.Serialize(writer, value.LocalDate, options);
+                return;
+            }
+            throw new NotSupportedException("Cannot marshal type UnionLocalDate");
+        }
+
+        public static readonly UnionLocalDateConverter Singleton = new UnionLocalDateConverter();
+    }
+
     internal class UnionLocaleConverter : JsonConverter<UnionLocale>
     {
         public override bool CanConvert(Type t) => t == typeof(UnionLocale);
@@ -7754,6 +7844,78 @@ namespace QuickType
         public static readonly UnionObjectMapperConverter Singleton = new UnionObjectMapperConverter();
     }
 
+    internal class UnionOffsetDateTimeConverter : JsonConverter<UnionOffsetDateTime>
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionOffsetDateTime);
+
+        public override UnionOffsetDateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonTokenType.Number:
+                    var doubleValue1 = reader.GetDouble();
+                    return new UnionOffsetDateTime { Double = doubleValue1 };
+                case JsonTokenType.StartObject:
+                    var objectValue = JsonSerializer.Deserialize<OffsetDateTime>(ref reader, options);
+                    return new UnionOffsetDateTime { OffsetDateTime = objectValue };
+            }
+            throw new JsonException("Cannot unmarshal type UnionOffsetDateTime");
+        }
+
+        public override void Write(Utf8JsonWriter writer, UnionOffsetDateTime value, JsonSerializerOptions options)
+        {
+            if (value.Double != null)
+            {
+                JsonSerializer.Serialize(writer, value.Double.Value, options);
+                return;
+            }
+            if (value.OffsetDateTime != null)
+            {
+                JsonSerializer.Serialize(writer, value.OffsetDateTime, options);
+                return;
+            }
+            throw new NotSupportedException("Cannot marshal type UnionOffsetDateTime");
+        }
+
+        public static readonly UnionOffsetDateTimeConverter Singleton = new UnionOffsetDateTimeConverter();
+    }
+
+    internal class UnionOffsetTimeConverter : JsonConverter<UnionOffsetTime>
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionOffsetTime);
+
+        public override UnionOffsetTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+            switch (reader.TokenType)
+            {
+                case JsonTokenType.Number:
+                    var doubleValue1 = reader.GetDouble();
+                    return new UnionOffsetTime { Double = doubleValue1 };
+                case JsonTokenType.StartObject:
+                    var objectValue = JsonSerializer.Deserialize<OffsetTime>(ref reader, options);
+                    return new UnionOffsetTime { OffsetTime = objectValue };
+            }
+            throw new JsonException("Cannot unmarshal type UnionOffsetTime");
+        }
+
+        public override void Write(Utf8JsonWriter writer, UnionOffsetTime value, JsonSerializerOptions options)
+        {
+            if (value.Double != null)
+            {
+                JsonSerializer.Serialize(writer, value.Double.Value, options);
+                return;
+            }
+            if (value.OffsetTime != null)
+            {
+                JsonSerializer.Serialize(writer, value.OffsetTime, options);
+                return;
+            }
+            throw new NotSupportedException("Cannot marshal type UnionOffsetTime");
+        }
+
+        public static readonly UnionOffsetTimeConverter Singleton = new UnionOffsetTimeConverter();
+    }
+
     internal class UnionPrimitiveKindConverter : JsonConverter<UnionPrimitiveKind>
     {
         public override bool CanConvert(Type t) => t == typeof(UnionPrimitiveKind);
diff --git a/base/schema-csharp-records/test/inputs/schema/date-time.schema/default/QuickType.cs b/head/schema-csharp-records/test/inputs/schema/date-time.schema/default/QuickType.cs
index 06fcbfa..04d9d6c 100644
--- a/base/schema-csharp-records/test/inputs/schema/date-time.schema/default/QuickType.cs
+++ b/head/schema-csharp-records/test/inputs/schema/date-time.schema/default/QuickType.cs
@@ -34,6 +34,15 @@ namespace QuickType
         [JsonProperty("date-time", Required = Required.Always)]
         public DateTimeOffset DateTime { get; set; }
 
+        [JsonProperty("local-date-class", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public LocalDate? LocalDateClass { get; set; }
+
+        [JsonProperty("offset-date-time-class", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public OffsetDateTime? OffsetDateTimeClass { get; set; }
+
+        [JsonProperty("offset-time-class", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public OffsetTime? OffsetTimeClass { get; set; }
+
         [JsonProperty("time", Required = Required.Always)]
         public DateTimeOffset Time { get; set; }
 
@@ -41,6 +50,18 @@ namespace QuickType
         public DateTimeOffset[] UnionArray { get; set; }
     }
 
+    public partial record LocalDate
+    {
+    }
+
+    public partial record OffsetDateTime
+    {
+    }
+
+    public partial record OffsetTime
+    {
+    }
+
     public enum ComplexUnionArrayEnum { Foo, Bar };
 
     public partial struct ComplexUnionArrayElement
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 d04349e..81873c6 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, Serializable, EnumSelf, Sendable, Serialize, SerialName, KSerializer, PrimitiveKind, SerialDescriptor, SerializerProvider, Set, Short, Signed, SimpleModule, Sizeof, Stackalloc, Standards, Static, StaticAssert, StaticCast, StdDeserializer, StdSerializer, Strictfp, String, Struct, Subscript, Super, Switch, Symbol, Synchronized, System, Template, Then, This, ThreadLocal, Throw, Throws, TimeOnly, TimeOnlyConverter, TimeZone, ToJson, TopLevel, ToString, Transient, True, EnumTrue, Try, Type, EnumType, Typealias, Typedef, Typeid, Typename, Typeof, Uint, Ulong, Unchecked, Undefined, Union, UseSerializers, Unowned, Unsafe, Unsigned, Ushort, Using, Utf8JsonReader, Utf8JsonWriter, Uuid, Var, Virtual, Void, Volatile, WcharT, Weak, Where, While, WillSet, With, Xor, XorEq, Yes, Yield, Dummy };
+    public 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, LocalDate, 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, OffsetDateTime, OffsetTime, ObjectMapper, Of, Oneway, Open, Operator, Optional, Or, OrEq, Out, Override, Package, Params, Pass, Port, Postfix, Precedence, Prefix, Print, Printf, PrintMembers, Private, Protected, Protocol, EnumProtocol, Public, Quicktype, Raise, Range, Readonly, Ref, RegExp, Register, ReinterpretCast, Repeat, Require, Required, Requires, Restrict, Retain, Rethrows, Return, Right, RuntimeType, S, Sbyte, Sealed, Sel, Select, Self, Serializable, EnumSelf, Sendable, Serialize, SerialName, KSerializer, PrimitiveKind, SerialDescriptor, SerializerProvider, Set, Short, Signed, SimpleModule, Sizeof, Stackalloc, Standards, Static, StaticAssert, StaticCast, StdDeserializer, StdSerializer, Strictfp, String, Struct, Subscript, Super, Switch, Symbol, Synchronized, System, Template, Then, This, ThreadLocal, Throw, Throws, TimeOnly, TimeOnlyConverter, TimeZone, ToJson, TopLevel, ToString, Transient, True, EnumTrue, Try, Type, EnumType, Typealias, Typedef, Typeid, Typename, Typeof, Uint, Ulong, Unchecked, Undefined, Union, UseSerializers, Unowned, Unsafe, Unsigned, Ushort, Using, Utf8JsonReader, Utf8JsonWriter, Uuid, Var, Virtual, Void, Volatile, WcharT, Weak, Where, While, WillSet, With, Xor, XorEq, Yes, Yield, Dummy };
 
     public partial record TopLevel
     {
@@ -417,6 +417,8 @@ namespace QuickType
                     return Enum.Let;
                 case "list":
                     return Enum.List;
+                case "LocalDate":
+                    return Enum.LocalDate;
                 case "Locale":
                     return Enum.Locale;
                 case "lock":
@@ -481,6 +483,10 @@ namespace QuickType
                     return Enum.Number;
                 case "object":
                     return Enum.Object;
+                case "OffsetDateTime":
+                    return Enum.OffsetDateTime;
+                case "OffsetTime":
+                    return Enum.OffsetTime;
                 case "ObjectMapper":
                     return Enum.ObjectMapper;
                 case "of":
@@ -1285,6 +1291,9 @@ namespace QuickType
                 case Enum.List:
                     serializer.Serialize(writer, "list");
                     return;
+                case Enum.LocalDate:
+                    serializer.Serialize(writer, "LocalDate");
+                    return;
                 case Enum.Locale:
                     serializer.Serialize(writer, "Locale");
                     return;
@@ -1381,6 +1390,12 @@ namespace QuickType
                 case Enum.Object:
                     serializer.Serialize(writer, "object");
                     return;
+                case Enum.OffsetDateTime:
+                    serializer.Serialize(writer, "OffsetDateTime");
+                    return;
+                case Enum.OffsetTime:
+                    serializer.Serialize(writer, "OffsetTime");
+                    return;
                 case Enum.ObjectMapper:
                     serializer.Serialize(writer, "ObjectMapper");
                     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 faa8dd9..7410770 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
@@ -559,6 +559,9 @@ namespace QuickType
         [JsonProperty("list", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionList? List { get; set; }
 
+        [JsonProperty("LocalDate", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionLocalDate? LocalDate { get; set; }
+
         [JsonProperty("Locale", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionLocale? Locale { get; set; }
 
@@ -661,6 +664,12 @@ namespace QuickType
         [JsonProperty("of", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionOf? Of { get; set; }
 
+        [JsonProperty("OffsetDateTime", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionOffsetDateTime? OffsetDateTime { get; set; }
+
+        [JsonProperty("OffsetTime", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
+        public UnionOffsetTime? OffsetTime { get; set; }
+
         [JsonProperty("oneway", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)]
         public UnionOneway? Oneway { get; set; }
 
@@ -1719,6 +1728,10 @@ namespace QuickType
     {
     }
 
+    public partial record LocalDate
+    {
+    }
+
     public partial record Locale
     {
     }
@@ -1847,6 +1860,14 @@ namespace QuickType
     {
     }
 
+    public partial record OffsetDateTime
+    {
+    }
+
+    public partial record OffsetTime
+    {
+    }
+
     public partial record Oneway
     {
     }
@@ -3916,6 +3937,15 @@ namespace QuickType
         public static implicit operator UnionList(List List) => new UnionList { List = List };
     }
 
+    public partial struct UnionLocalDate
+    {
+        public double? Double;
+        public LocalDate? LocalDate;
+
+        public static implicit operator UnionLocalDate(double Double) => new UnionLocalDate { Double = Double };
+        public static implicit operator UnionLocalDate(LocalDate LocalDate) => new UnionLocalDate { LocalDate = LocalDate };
+    }
+
     public partial struct UnionLocale
     {
         public double? Double;
@@ -4204,6 +4234,24 @@ namespace QuickType
         public static implicit operator UnionOf(Of Of) => new UnionOf { Of = Of };
     }
 
+    public partial struct UnionOffsetDateTime
+    {
+        public double? Double;
+        public OffsetDateTime? OffsetDateTime;
+
+        public static implicit operator UnionOffsetDateTime(double Double) => new UnionOffsetDateTime { Double = Double };
+        public static implicit operator UnionOffsetDateTime(OffsetDateTime OffsetDateTime) => new UnionOffsetDateTime { OffsetDateTime = OffsetDateTime };
+    }
+
+    public partial struct UnionOffsetTime
+    {
+        public double? Double;
+        public OffsetTime? OffsetTime;
+
+        public static implicit operator UnionOffsetTime(double Double) => new UnionOffsetTime { Double = Double };
+        public static implicit operator UnionOffsetTime(OffsetTime OffsetTime) => new UnionOffsetTime { OffsetTime = OffsetTime };
+    }
+
     public partial struct UnionOneway
     {
         public double? Double;
@@ -5491,6 +5539,7 @@ namespace QuickType
                 UnionJsonReaderConverter.Singleton,
                 UnionJsonTokenTypeConverter.Singleton,
                 UnionKSerializerConverter.Singleton,
+                UnionLocalDateConverter.Singleton,
                 UnionLocaleConverter.Singleton,
                 UnionMapEntryConverter.Singleton,
                 UnionNoConverter.Singleton,
@@ -5500,6 +5549,8 @@ namespace QuickType
                 UnionNullConverter.Singleton,
                 UnionNoneConverter.Singleton,
                 UnionObjectMapperConverter.Singleton,
+                UnionOffsetDateTimeConverter.Singleton,
+                UnionOffsetTimeConverter.Singleton,
                 UnionPrimitiveKindConverter.Singleton,
                 UnionProtocolConverter.Singleton,
                 UnionRegExpConverter.Singleton,
@@ -7166,6 +7217,44 @@ namespace QuickType
         public static readonly UnionKSerializerConverter Singleton = new UnionKSerializerConverter();
     }
 
+    internal class UnionLocalDateConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionLocalDate) || t == typeof(UnionLocalDate?);
+
+        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 UnionLocalDate { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<LocalDate>(reader);
+                    return new UnionLocalDate { LocalDate = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionLocalDate");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionLocalDate)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.LocalDate != null)
+            {
+                serializer.Serialize(writer, value.LocalDate);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionLocalDate");
+        }
+
+        public static readonly UnionLocalDateConverter Singleton = new UnionLocalDateConverter();
+    }
+
     internal class UnionLocaleConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionLocale) || t == typeof(UnionLocale?);
@@ -7508,6 +7597,82 @@ namespace QuickType
         public static readonly UnionObjectMapperConverter Singleton = new UnionObjectMapperConverter();
     }
 
+    internal class UnionOffsetDateTimeConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionOffsetDateTime) || t == typeof(UnionOffsetDateTime?);
+
+        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 UnionOffsetDateTime { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<OffsetDateTime>(reader);
+                    return new UnionOffsetDateTime { OffsetDateTime = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionOffsetDateTime");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionOffsetDateTime)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.OffsetDateTime != null)
+            {
+                serializer.Serialize(writer, value.OffsetDateTime);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionOffsetDateTime");
+        }
+
+        public static readonly UnionOffsetDateTimeConverter Singleton = new UnionOffsetDateTimeConverter();
+    }
+
+    internal class UnionOffsetTimeConverter : JsonConverter
+    {
+        public override bool CanConvert(Type t) => t == typeof(UnionOffsetTime) || t == typeof(UnionOffsetTime?);
+
+        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 UnionOffsetTime { Double = doubleValue };
+                case JsonToken.StartObject:
+                    var objectValue = serializer.Deserialize<OffsetTime>(reader);
+                    return new UnionOffsetTime { OffsetTime = objectValue };
+            }
+            throw new Exception("Cannot unmarshal type UnionOffsetTime");
+        }
+
+        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+        {
+            var value = (UnionOffsetTime)untypedValue;
+            if (value.Double != null)
+            {
+                serializer.Serialize(writer, value.Double.Value);
+                return;
+            }
+            if (value.OffsetTime != null)
+            {
+                serializer.Serialize(writer, value.OffsetTime);
+                return;
+            }
+            throw new Exception("Cannot marshal type UnionOffsetTime");
+        }
+
+        public static readonly UnionOffsetTimeConverter Singleton = new UnionOffsetTimeConverter();
+    }
+
     internal class UnionPrimitiveKindConverter : JsonConverter
     {
         public override bool CanConvert(Type t) => t == typeof(UnionPrimitiveKind) || t == typeof(UnionPrimitiveKind?);
diff --git a/base/schema-dart/test/inputs/schema/date-time.schema/default/TopLevel.dart b/head/schema-dart/test/inputs/schema/date-time.schema/default/TopLevel.dart
index c9e211f..da17ab1 100644
--- a/base/schema-dart/test/inputs/schema/date-time.schema/default/TopLevel.dart
+++ b/head/schema-dart/test/inputs/schema/date-time.schema/default/TopLevel.dart
@@ -12,6 +12,9 @@ class TopLevel {
     final List<dynamic> complexUnionArray;
     final DateTime date;
     final DateTime dateTime;
+    final LocalDate? localDateClass;
+    final OffsetDateTime? offsetDateTimeClass;
+    final OffsetTime? offsetTimeClass;
     final String time;
     final List<String> unionArray;
 
@@ -19,6 +22,9 @@ class TopLevel {
         required this.complexUnionArray,
         required this.date,
         required this.dateTime,
+        this.localDateClass,
+        this.offsetDateTimeClass,
+        this.offsetTimeClass,
         required this.time,
         required this.unionArray,
     });
@@ -27,6 +33,9 @@ class TopLevel {
         complexUnionArray: List<dynamic>.from(json["complex-union-array"].map((x) => x)),
         date: DateTime.parse(json["date"]),
         dateTime: DateTime.parse(json["date-time"]),
+        localDateClass: json["local-date-class"] == null ? null : LocalDate.fromJson(json["local-date-class"]),
+        offsetDateTimeClass: json["offset-date-time-class"] == null ? null : OffsetDateTime.fromJson(json["offset-date-time-class"]),
+        offsetTimeClass: json["offset-time-class"] == null ? null : OffsetTime.fromJson(json["offset-time-class"]),
         time: json["time"],
         unionArray: List<String>.from(json["union-array"].map((x) => x)),
     );
@@ -35,6 +44,9 @@ class TopLevel {
         "complex-union-array": List<dynamic>.from(complexUnionArray.map((x) => x)),
         "date": "${date.year.toString().padLeft(4, '0')}-${date.month.toString().padLeft(2, '0')}-${date.day.toString().padLeft(2, '0')}",
         "date-time": dateTime.toIso8601String(),
+        "local-date-class": localDateClass?.toJson(),
+        "offset-date-time-class": offsetDateTimeClass?.toJson(),
+        "offset-time-class": offsetTimeClass?.toJson(),
         "time": time,
         "union-array": List<dynamic>.from(unionArray.map((x) => x)),
     };
@@ -50,6 +62,36 @@ final complexUnionArrayEnumValues = EnumValues({
     "bar": ComplexUnionArrayEnum.BAR
 });
 
+class LocalDate {
+    LocalDate();
+
+    factory LocalDate.fromJson(Map<String, dynamic> json) => LocalDate(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
+class OffsetDateTime {
+    OffsetDateTime();
+
+    factory OffsetDateTime.fromJson(Map<String, dynamic> json) => OffsetDateTime(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
+class OffsetTime {
+    OffsetTime();
+
+    factory OffsetTime.fromJson(Map<String, dynamic> json) => OffsetTime(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
 class EnumValues<T> {
     Map<String, T> map;
     late Map<T, String> reverseMap;
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 7c5b257..3d32500 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
@@ -201,6 +201,7 @@ enum Enum {
     LEFT,
     LET,
     LIST,
+    LOCAL_DATE,
     LOCALE,
     LOCK,
     LONG,
@@ -233,6 +234,8 @@ enum Enum {
     NULLPTR,
     NUMBER,
     OBJECT,
+    OFFSET_DATE_TIME,
+    OFFSET_TIME,
     OBJECT_MAPPER,
     OF,
     ONEWAY,
@@ -543,6 +546,7 @@ final enumValues = EnumValues({
     "left": Enum.LEFT,
     "let": Enum.LET,
     "list": Enum.LIST,
+    "LocalDate": Enum.LOCAL_DATE,
     "Locale": Enum.LOCALE,
     "lock": Enum.LOCK,
     "long": Enum.LONG,
@@ -575,6 +579,8 @@ final enumValues = EnumValues({
     "nullptr": Enum.NULLPTR,
     "number": Enum.NUMBER,
     "object": Enum.OBJECT,
+    "OffsetDateTime": Enum.OFFSET_DATE_TIME,
+    "OffsetTime": Enum.OFFSET_TIME,
     "ObjectMapper": Enum.OBJECT_MAPPER,
     "of": Enum.OF,
     "oneway": Enum.ONEWAY,
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 a7df2a1..0aef84f 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
@@ -187,6 +187,7 @@ class TopLevel {
     final dynamic left;
     final dynamic let;
     final dynamic list;
+    final dynamic localDate;
     final dynamic locale;
     final dynamic lock;
     final dynamic long;
@@ -221,6 +222,8 @@ class TopLevel {
     final dynamic object;
     final dynamic objectMapper;
     final dynamic of;
+    final dynamic offsetDateTime;
+    final dynamic offsetTime;
     final dynamic oneway;
     final dynamic open;
     final dynamic topLevelOperator;
@@ -528,6 +531,7 @@ class TopLevel {
         this.left,
         this.let,
         this.list,
+        this.localDate,
         this.locale,
         this.lock,
         this.long,
@@ -562,6 +566,8 @@ class TopLevel {
         this.object,
         this.objectMapper,
         this.of,
+        this.offsetDateTime,
+        this.offsetTime,
         this.oneway,
         this.open,
         this.topLevelOperator,
@@ -870,6 +876,7 @@ class TopLevel {
         left: json["left"],
         let: json["let"],
         list: json["list"],
+        localDate: json["LocalDate"],
         locale: json["Locale"],
         lock: json["lock"],
         long: json["long"],
@@ -904,6 +911,8 @@ class TopLevel {
         object: json["object"],
         objectMapper: json["ObjectMapper"],
         of: json["of"],
+        offsetDateTime: json["OffsetDateTime"],
+        offsetTime: json["OffsetTime"],
         oneway: json["oneway"],
         open: json["open"],
         topLevelOperator: json["operator"],
@@ -1212,6 +1221,7 @@ class TopLevel {
         "left": left,
         "let": let,
         "list": list,
+        "LocalDate": localDate,
         "Locale": locale,
         "lock": lock,
         "long": long,
@@ -1246,6 +1256,8 @@ class TopLevel {
         "object": object,
         "ObjectMapper": objectMapper,
         "of": of,
+        "OffsetDateTime": offsetDateTime,
+        "OffsetTime": offsetTime,
         "oneway": oneway,
         "open": open,
         "operator": topLevelOperator,
@@ -2766,6 +2778,16 @@ class ListClass {
     };
 }
 
+class LocalDate {
+    LocalDate();
+
+    factory LocalDate.fromJson(Map<String, dynamic> json) => LocalDate(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
 class Locale {
     Locale();
 
@@ -3056,6 +3078,26 @@ class Of {
     };
 }
 
+class OffsetDateTime {
+    OffsetDateTime();
+
+    factory OffsetDateTime.fromJson(Map<String, dynamic> json) => OffsetDateTime(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
+class OffsetTime {
+    OffsetTime();
+
+    factory OffsetTime.fromJson(Map<String, dynamic> json) => OffsetTime(
+    );
+
+    Map<String, dynamic> toJson() => {
+    };
+}
+
 class Oneway {
     Oneway();
 
diff --git a/base/schema-elixir/test/inputs/schema/date-time.schema/default/QuickType.ex b/head/schema-elixir/test/inputs/schema/date-time.schema/default/QuickType.ex
index 4d75e9a..ffdc502 100644
--- a/base/schema-elixir/test/inputs/schema/date-time.schema/default/QuickType.ex
+++ b/head/schema-elixir/test/inputs/schema/date-time.schema/default/QuickType.ex
@@ -5,14 +5,104 @@
 # Decode a JSON string: TopLevel.from_json(data)
 # Encode into a JSON string: TopLevel.to_json(struct)
 
+defmodule LocalDate do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %LocalDate{
+    }
+  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 OffsetDateTime do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %OffsetDateTime{
+    }
+  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 OffsetTime do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %OffsetTime{
+    }
+  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 [:complex_union_array, :date, :date_time, :time, :union_array]
-  defstruct [:complex_union_array, :date, :date_time, :time, :union_array]
+  defstruct [:complex_union_array, :date, :date_time, :local_date_class, :offset_date_time_class, :offset_time_class, :time, :union_array]
 
   @type t :: %__MODULE__{
           complex_union_array: [integer() | String.t()],
           date: String.t(),
           date_time: String.t(),
+          local_date_class: LocalDate.t() | nil,
+          offset_date_time_class: OffsetDateTime.t() | nil,
+          offset_time_class: OffsetTime.t() | nil,
           time: String.t(),
           union_array: [String.t()]
         }
@@ -60,6 +150,9 @@ defmodule TopLevel do
       complex_union_array: Enum.map(m["complex-union-array"], &decode_complex_union_array_element/1),
       date: decode_date(m["date"]),
       date_time: decode_date_time(m["date-time"]),
+      local_date_class: m["local-date-class"] && LocalDate.from_map(m["local-date-class"]),
+      offset_date_time_class: m["offset-date-time-class"] && OffsetDateTime.from_map(m["offset-date-time-class"]),
+      offset_time_class: m["offset-time-class"] && OffsetTime.from_map(m["offset-time-class"]),
       time: decode_time(m["time"]),
       union_array: decode_union_array(m["union-array"]),
     }
@@ -76,6 +169,9 @@ defmodule TopLevel do
       "complex-union-array" => struct.complex_union_array && Enum.map(struct.complex_union_array, &encode_complex_union_array_element/1),
       "date" => struct.date,
       "date-time" => struct.date_time,
+      "local-date-class" => struct.local_date_class && LocalDate.to_map(struct.local_date_class),
+      "offset-date-time-class" => struct.offset_date_time_class && OffsetDateTime.to_map(struct.offset_date_time_class),
+      "offset-time-class" => struct.offset_time_class && OffsetTime.to_map(struct.offset_time_class),
       "time" => struct.time,
       "union-array" => struct.union_array,
     }
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 7f24fec..16f335a 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
@@ -183,6 +183,7 @@ defmodule EnumEnum do
     :left,
     :let,
     :list,
+    :LocalDate,
     :Locale,
     :lock,
     :long,
@@ -215,6 +216,8 @@ defmodule EnumEnum do
     :nullptr,
     :number,
     :object,
+    :OffsetDateTime,
+    :OffsetTime,
     :ObjectMapper,
     :of,
     :oneway,
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 6d803b9..de9bd4d 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
@@ -4819,6 +4819,35 @@ defmodule ListClass do
   end
 end
 
+defmodule LocalDate do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %LocalDate{
+    }
+  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 Locale do
   defstruct []
 
@@ -5689,6 +5718,64 @@ defmodule Of do
   end
 end
 
+defmodule OffsetDateTime do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %OffsetDateTime{
+    }
+  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 OffsetTime do
+  defstruct []
+
+  @type t :: %__MODULE__{
+        }
+
+  def from_map(m) when is_map(m) do
+    %OffsetTime{
+    }
+  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 Oneway do
   defstruct []
 
@@ -9808,7 +9895,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, :k_serializer, :lambda, :lazy, :left, :let, :list, :locale, :lock, :long, :map, :map_entry, :metadata_property_handling, :module, :mutable, :mutating, :namespace, :native, :new, :newtonsoft, :top_level_nil, :no, :noexcept, :nonatomic, :top_level_none, :none, :nonlocal, :nonmutating, :no_such_method, :top_level_not, :not_eq, :ns_error, :ns_object, :ns_string, :null, :top_level_null, :nullptr, :number, :object, :object_mapper, :of, :oneway, :open, :operator, :optional, :top_level_or, :or_eq, :out, :override, :package, :params, :pass, :port, :postfix, :precedence, :prefix, :primitive_kind, :print, :printf, :print_members, :private, :protected, :protocol, :top_level_protocol, :public, :quicktype, :raise, :range, :readonly, :ref, :reg_exp, :register, :reinterpret_cast, :repeat, :require, :required, :requires, :restrict, :retain, :rethrows, :return, :right, :runtime_type, :s, :sbyte, :sealed, :sel, :select, :self, :top_level_self, :sendable, :serial_descriptor, :serializable, :serialize, :serializer_provider, :serial_name, :set, :short, :signed, :simple_module, :sizeof, :stackalloc, :standards, :static, :static_assert, :static_cast, :std_deserializer, :std_serializer, :strictfp, :string, :struct, :subscript, :super, :switch, :symbol, :synchronized, :system, :template, :then, :this, :thread_local, :throw, :throws, :time_only, :time_only_converter, :time_zone, :to_json, :top_level, :to_string, :transient, :top_level_true, :true_1, :try, :type, :top_level_type, :typealias, :typedef, :typeid, :typename, :typeof, :uint, :ulong, :unchecked, :undefined, :union, :unowned, :unsafe, :unsigned, :use_serializers, :ushort, :using, :utf8_json_reader, :utf8_json_writer, :uuid, :var, :virtual, :void, :volatile, :wchar_t, :weak, :where, :while, :will_set, :with, :xor, :xor_eq, :yes, :yield]
+  defstruct [:empty, :top_level_bool, :complex, :imaginery, :abstract, :alignas, :alignof, :top_level_and, :and_eq, :top_level_any, :any, :array, :as, :asm, :assert, :associatedtype, :associativity, :async, :atomic, :atomic_cancel, :atomic_commit, :atomic_noexcept, :auto, :await, :base, :bitand, :bitor, :bool, :bool_1, :boolean, :break, :bycopy, :byref, :byte, :calendar, :case, :top_level_catch, :chan, :char, :char16_t, :char32_t, :checked, :top_level_class, :class, :clone, :co_await, :co_return, :co_yield, :codable, :coding_key, :coding_keys, :compl, :concept, :console, :const, :const_cast, :constexpr, :constructor, :continue, :convenience, :convert, :converter, :culture_info, :date, :date_parse_handling, :date_formatter, :date_only, :date_only_converter, :date_time, :date_time_styles, :debugger, :decimal, :declare, :decltype, :decode_string, :decoder, :decoding_error, :top_level_def, :default, :defer, :deinit, :del, :delegate, :delete, :dict, :dictionary, :did_set, :top_level_do, :double, :dummy, :dynamic, :dynamic_cast, :elif, :top_level_else, :encode_quick_type, :encoder, :enum, :enum_values, :equality_contract, :equatable, :event, :except, :exception, :explicit, :export, :exposing, :extends, :extension, :extern, :fallthrough, :false_1, :top_level_false, :fileprivate, :final, :finally, :fixed, :float, :for, :foreach, :format_exception, :friend, :from, :from_json, :func, :function, :get, :global, :go, :goto, :guard, :hashable, :hash_code, :hasher, :has_own_property, :id, :if, :imp, :implements, :implicit, :top_level_import, :top_level_in, :indirect, :infix, :init, :inline, :inout, :instanceof, :int, :interface, :internal, :is, :iso_date_time_offset_converter, :iterable, :jdec, :jenc, :jpipe, :json, :json_converter, :json_serializer, :json_token, :json_writer, :json_any, :json_coding_key, :json_decoder, :json_encoder, :json_exception, :json_generator, :json_node, :json_null, :json_parser, :json_reader, :json_token_type, :k_serializer, :lambda, :lazy, :left, :let, :list, :local_date, :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, :offset_date_time, :offset_time, :oneway, :open, :operator, :optional, :top_level_or, :or_eq, :out, :override, :package, :params, :pass, :port, :postfix, :precedence, :prefix, :primitive_kind, :print, :printf, :print_members, :private, :protected, :protocol, :top_level_protocol, :public, :quicktype, :raise, :range, :readonly, :ref, :reg_exp, :register, :reinterpret_cast, :repeat, :require, :required, :requires, :restrict, :retain, :rethrows, :return, :right, :runtime_type, :s, :sbyte, :sealed, :sel, :select, :self, :top_level_self, :sendable, :serial_descriptor, :serializable, :serialize, :serializer_provider, :serial_name, :set, :short, :signed, :simple_module, :sizeof, :stackalloc, :standards, :static, :static_assert, :static_cast, :std_deserializer, :std_serializer, :strictfp, :string, :struct, :subscript, :super, :switch, :symbol, :synchronized, :system, :template, :then, :this, :thread_local, :throw, :throws, :time_only, :time_only_converter, :time_zone, :to_json, :top_level, :to_string, :transient, :top_level_true, :true_1, :try, :type, :top_level_type, :typealias, :typedef, :typeid, :typename, :typeof, :uint, :ulong, :unchecked, :undefined, :union, :unowned, :unsafe, :unsigned, :use_serializers, :ushort, :using, :utf8_json_reader, :utf8_json_writer, :uuid, :var, :virtual, :void, :volatile, :wchar_t, :weak, :where, :while, :will_set, :with, :xor, :xor_eq, :yes, :yield]
 
   @type t :: %__MODULE__{
           empty: Empty.t() | float() | nil,
@@ -9989,6 +10076,7 @@ defmodule TopLevel do
           left: Left.t() | float() | nil,
           let: Let.t() | float() | nil,
           list: ListClass.t() | float() | nil,
+          local_date: LocalDate.t() | float() | nil,
           locale: Locale.t() | float() | nil,
           lock: Lock.t() | float() | nil,
           long: Long.t() | float() | nil,
@@ -10023,6 +10111,8 @@ defmodule TopLevel do
           object: Object.t() | float() | nil,
           object_mapper: ObjectMapper.t() | float() | nil,
           of: Of.t() | float() | nil,
+          offset_date_time: OffsetDateTime.t() | float() | nil,
+          offset_time: OffsetTime.t() | float() | nil,
           oneway: Oneway.t() | float() | nil,
           open: Open.t() | float() | nil,
           operator: Operator.t() | float() | nil,
@@ -12284,6 +12374,18 @@ defmodule TopLevel do
   def encode_list(value) when is_nil(value), do: value
   def encode_list(_), do: {:error, "Unexpected type when encoding TopLevel.list"}
 
+  def decode_local_date(%{} = value), do: LocalDate.from_map(value)
+  def decode_local_date(value) when is_float(value), do: value
+  def decode_local_date(value) when is_integer(value), do: value
+  def decode_local_date(value) when is_nil(value), do: value
+  def decode_local_date(_), do: {:error, "Unexpected type when decoding TopLevel.local_date"}
+
+  def encode_local_date(%LocalDate{} = value), do: LocalDate.to_map(value)
+  def encode_local_date(value) when is_float(value), do: value
+  def encode_local_date(value) when is_integer(value), do: value
+  def encode_local_date(value) when is_nil(value), do: value
+  def encode_local_date(_), do: {:error, "Unexpected type when encoding TopLevel.local_date"}
+
   def decode_locale(%{} = value), do: Locale.from_map(value)
   def decode_locale(value) when is_float(value), do: value
   def decode_locale(value) when is_integer(value), do: value
@@ -12692,6 +12794,30 @@ defmodule TopLevel do
   def encode_of(value) when is_nil(value), do: value
   def encode_of(_), do: {:error, "Unexpected type when encoding TopLevel.of"}
 
+  def decode_offset_date_time(%{} = value), do: OffsetDateTime.from_map(value)
+  def decode_offset_date_time(value) when is_float(value), do: value
+  def decode_offset_date_time(value) when is_integer(value), do: value
+  def decode_offset_date_time(value) when is_nil(value), do: value
+  def decode_offset_date_time(_), do: {:error, "Unexpected type when decoding TopLevel.offset_date_time"}
+
+  def encode_offset_date_time(%OffsetDateTime{} = value), do: OffsetDateTime.to_map(value)
+  def encode_offset_date_time(value) when is_float(value), do: value
+  def encode_offset_date_time(value) when is_integer(value), do: value
+  def encode_offset_date_time(value) when is_nil(value), do: value
+  def encode_offset_date_time(_), do: {:error, "Unexpected type when encoding TopLevel.offset_date_time"}
+
+  def decode_offset_time(%{} = value), do: OffsetTime.from_map(value)
+  def decode_offset_time(value) when is_float(value), do: value
+  def decode_offset_time(value) when is_integer(value), do: value
+  def decode_offset_time(value) when is_nil(value), do: value
+  def decode_offset_time(_), do: {:error, "Unexpected type when decoding TopLevel.offset_time"}
+
+  def encode_offset_time(%OffsetTime{} = value), do: OffsetTime.to_map(value)
+  def encode_offset_time(value) when is_float(value), do: value
+  def encode_offset_time(value) when is_integer(value), do: value
+  def encode_offset_time(value) when is_nil(value), do: value
+  def encode_offset_time(_), do: {:error, "Unexpected type when encoding TopLevel.offset_time"}
+
   def decode_oneway(%{} = value), do: Oneway.from_map(value)
   def decode_oneway(value) when is_float(value), do: value
   def decode_oneway(value) when is_integer(value), do: value
@@ -14396,6 +14522,7 @@ defmodule TopLevel do
       left: decode_left(m["left"]),
       let: decode_let(m["let"]),
       list: decode_list(m["list"]),
+      local_date: decode_local_date(m["LocalDate"]),
       locale: decode_locale(m["Locale"]),
       lock: decode_lock(m["lock"]),
       long: decode_long(m["long"]),
@@ -14430,6 +14557,8 @@ defmodule TopLevel do
       object: decode_object(m["object"]),
       object_mapper: decode_object_mapper(m["ObjectMapper"]),
       of: decode_of(m["of"]),
+      offset_date_time: decode_offset_date_time(m["OffsetDateTime"]),
+      offset_time: decode_offset_time(m["OffsetTime"]),
       oneway: decode_oneway(m["oneway"]),
       open: decode_open(m["open"]),
       operator: decode_operator(m["operator"]),
@@ -14746,6 +14875,7 @@ defmodule TopLevel do
       "left" => encode_left(struct.left),
       "let" => encode_let(struct.let),
       "list" => encode_list(struct.list),
+      "LocalDate" => encode_local_date(struct.local_date),
       "Locale" => encode_locale(struct.locale),
       "lock" => encode_lock(struct.lock),
       "long" => encode_long(struct.long),
@@ -14780,6 +14910,8 @@ defmodule TopLevel do
       "object" => encode_object(struct.object),
       "ObjectMapper" => encode_object_mapper(struct.object_mapper),
       "of" => encode_of(struct.of),
+      "OffsetDateTime" => encode_offset_date_time(struct.offset_date_time),
+      "OffsetTime" => encode_offset_time(struct.offset_time),
       "oneway" => encode_oneway(struct.oneway),
       "open" => encode_open(struct.open),
       "operator" => encode_operator(struct.operator),
diff --git a/base/schema-elm/test/inputs/schema/date-time.schema/default/QuickType.elm b/head/schema-elm/test/inputs/schema/date-time.schema/default/QuickType.elm
index 765b331..0891330 100644
--- a/base/schema-elm/test/inputs/schema/date-time.schema/default/QuickType.elm
+++ b/head/schema-elm/test/inputs/schema/date-time.schema/default/QuickType.elm
@@ -15,6 +15,9 @@ module QuickType exposing
     ( QuickType
     , quickTypeToString
     , quickType
+    , LocalDate
+    , OffsetDateTime
+    , OffsetTime
     , ComplexUnionArray(..)
     )
 
@@ -27,6 +30,9 @@ type alias QuickType =
     { complexUnionArray : List ComplexUnionArray
     , date : String
     , dateTime : String
+    , localDateClass : Maybe LocalDate
+    , offsetDateTimeClass : Maybe OffsetDateTime
+    , offsetTimeClass : Maybe OffsetTime
     , time : String
     , unionArray : List String
     }
@@ -35,6 +41,18 @@ type ComplexUnionArray
     = IntegerInComplexUnionArray Int
     | StringInComplexUnionArray String
 
+type alias LocalDate =
+    {
+    }
+
+type alias OffsetDateTime =
+    {
+    }
+
+type alias OffsetTime =
+    {
+    }
+
 -- decoders and encoders
 optionalField key decoder fallback =
     Jdec.dict Jdec.value
@@ -52,6 +70,9 @@ quickType =
         |> Jpipe.required "complex-union-array" (Jdec.list complexUnionArray )
         |> Jpipe.required "date" Jdec.string
         |> Jpipe.required "date-time" Jdec.string
+        |> Jpipe.custom (optionalField "local-date-class" (Jdec.map Just localDate) Nothing)
+        |> Jpipe.custom (optionalField "offset-date-time-class" (Jdec.map Just offsetDateTime) Nothing)
+        |> Jpipe.custom (optionalField "offset-time-class" (Jdec.map Just offsetTime) Nothing)
         |> Jpipe.required "time" Jdec.string
         |> Jpipe.required "union-array" (Jdec.list Jdec.string )
 
@@ -61,6 +82,9 @@ encodeQuickType x =
         [ ("complex-union-array", Jenc.list encodeComplexUnionArray x.complexUnionArray)
         , ("date", Jenc.string x.date)
         , ("date-time", Jenc.string x.dateTime)
+        , ("local-date-class", makeNullableEncoder encodeLocalDate x.localDateClass)
+        , ("offset-date-time-class", makeNullableEncoder encodeOffsetDateTime x.offsetDateTimeClass)
+        , ("offset-time-class", makeNullableEncoder encodeOffsetTime x.offsetTimeClass)
         , ("time", Jenc.string x.time)
         , ("union-array", Jenc.list Jenc.string x.unionArray)
         ]
@@ -77,6 +101,36 @@ encodeComplexUnionArray x = case x of
     IntegerInComplexUnionArray y -> Jenc.int y
     StringInComplexUnionArray y -> Jenc.string y
 
+localDate : Jdec.Decoder LocalDate
+localDate =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> LocalDate)
+
+encodeLocalDate : LocalDate -> Jenc.Value
+encodeLocalDate x =
+    Jenc.object
+        [
+        ]
+
+offsetDateTime : Jdec.Decoder OffsetDateTime
+offsetDateTime =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> OffsetDateTime)
+
+encodeOffsetDateTime : OffsetDateTime -> Jenc.Value
+encodeOffsetDateTime x =
+    Jenc.object
+        [
+        ]
+
+offsetTime : Jdec.Decoder OffsetTime
+offsetTime =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> OffsetTime)
+
+encodeOffsetTime : OffsetTime -> Jenc.Value
+encodeOffsetTime 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 40c72a7..f44ab2b 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
@@ -204,6 +204,7 @@ type EnumEnum
     | Left
     | Let
     | EnumList
+    | LocalDate
     | Locale
     | Lock
     | Long
@@ -236,6 +237,8 @@ type EnumEnum
     | Nullptr
     | Number
     | Object
+    | OffsetDateTime
+    | OffsetTime
     | ObjectMapper
     | Of
     | Oneway
@@ -571,6 +574,7 @@ enumEnum =
                 "left" -> Jdec.succeed Left
                 "let" -> Jdec.succeed Let
                 "list" -> Jdec.succeed EnumList
+                "LocalDate" -> Jdec.succeed LocalDate
                 "Locale" -> Jdec.succeed Locale
                 "lock" -> Jdec.succeed Lock
                 "long" -> Jdec.succeed Long
@@ -603,6 +607,8 @@ enumEnum =
                 "nullptr" -> Jdec.succeed Nullptr
                 "number" -> Jdec.succeed Number
                 "object" -> Jdec.succeed Object
+                "OffsetDateTime" -> Jdec.succeed OffsetDateTime
+                "OffsetTime" -> Jdec.succeed OffsetTime
                 "ObjectMapper" -> Jdec.succeed ObjectMapper
                 "of" -> Jdec.succeed Of
                 "oneway" -> Jdec.succeed Oneway
@@ -915,6 +921,7 @@ encodeEnumEnum x = case x of
     Left -> Jenc.string "left"
     Let -> Jenc.string "let"
     EnumList -> Jenc.string "list"
+    LocalDate -> Jenc.string "LocalDate"
     Locale -> Jenc.string "Locale"
     Lock -> Jenc.string "lock"
     Long -> Jenc.string "long"
@@ -947,6 +954,8 @@ encodeEnumEnum x = case x of
     Nullptr -> Jenc.string "nullptr"
     Number -> Jenc.string "number"
     Object -> Jenc.string "object"
+    OffsetDateTime -> Jenc.string "OffsetDateTime"
+    OffsetTime -> Jenc.string "OffsetTime"
     ObjectMapper -> Jenc.string "ObjectMapper"
     Of -> Jenc.string "of"
     Oneway -> Jenc.string "oneway"
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 1421eff..cf53a62 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
@@ -174,6 +174,7 @@ module QuickType exposing
     , Lazy
     , Left
     , ListClass
+    , LocalDate
     , Locale
     , Lock
     , Long
@@ -204,6 +205,8 @@ module QuickType exposing
     , Number
     , Object
     , ObjectMapper
+    , OffsetDateTime
+    , OffsetTime
     , Oneway
     , Open
     , Operator
@@ -512,6 +515,7 @@ module QuickType exposing
     , UnionLazy(..)
     , UnionLeft(..)
     , UnionList(..)
+    , UnionLocalDate(..)
     , UnionLocale(..)
     , UnionLock(..)
     , UnionLong(..)
@@ -542,6 +546,8 @@ module QuickType exposing
     , UnionNumber(..)
     , UnionObject(..)
     , UnionObjectMapper(..)
+    , UnionOffsetDateTime(..)
+    , UnionOffsetTime(..)
     , UnionOneway(..)
     , UnionOpen(..)
     , UnionOperator(..)
@@ -877,6 +883,7 @@ type alias QuickType =
     , left : Maybe UnionLeft
     , quickTypeLet : Maybe UnionLet
     , list : Maybe UnionList
+    , localDate : Maybe UnionLocalDate
     , locale : Maybe UnionLocale
     , lock : Maybe UnionLock
     , long : Maybe UnionLong
@@ -911,6 +918,8 @@ type alias QuickType =
     , object : Maybe UnionObject
     , objectMapper : Maybe UnionObjectMapper
     , quickTypeOf : Maybe UnionOf
+    , offsetDateTime : Maybe UnionOffsetDateTime
+    , offsetTime : Maybe UnionOffsetTime
     , oneway : Maybe UnionOneway
     , open : Maybe UnionOpen
     , operator : Maybe UnionOperator
@@ -2312,6 +2321,14 @@ type alias ListClass =
     {
     }
 
+type UnionLocalDate
+    = DoubleInUnionLocalDate Float
+    | LocalDateInUnionLocalDate LocalDate
+
+type alias LocalDate =
+    {
+    }
+
 type UnionLocale
     = DoubleInUnionLocale Float
     | LocaleInUnionLocale Locale
@@ -2552,6 +2569,22 @@ type alias ObjectMapper =
     {
     }
 
+type UnionOffsetDateTime
+    = DoubleInUnionOffsetDateTime Float
+    | OffsetDateTimeInUnionOffsetDateTime OffsetDateTime
+
+type alias OffsetDateTime =
+    {
+    }
+
+type UnionOffsetTime
+    = DoubleInUnionOffsetTime Float
+    | OffsetTimeInUnionOffsetTime OffsetTime
+
+type alias OffsetTime =
+    {
+    }
+
 type UnionOneway
     = DoubleInUnionOneway Float
     | OnewayInUnionOneway Oneway
@@ -3936,6 +3969,7 @@ quickType =
         |> Jpipe.custom (optionalField "left" (Jdec.map Just unionLeft) Nothing)
         |> Jpipe.custom (optionalField "let" (Jdec.map Just unionLet) Nothing)
         |> Jpipe.custom (optionalField "list" (Jdec.map Just unionList) Nothing)
+        |> Jpipe.custom (optionalField "LocalDate" (Jdec.map Just unionLocalDate) Nothing)
         |> 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)
@@ -3970,6 +4004,8 @@ quickType =
         |> Jpipe.custom (optionalField "object" (Jdec.map Just unionObject) Nothing)
         |> Jpipe.custom (optionalField "ObjectMapper" (Jdec.map Just unionObjectMapper) Nothing)
         |> Jpipe.custom (optionalField "of" (Jdec.map Just unionOf) Nothing)
+        |> Jpipe.custom (optionalField "OffsetDateTime" (Jdec.map Just unionOffsetDateTime) Nothing)
+        |> Jpipe.custom (optionalField "OffsetTime" (Jdec.map Just unionOffsetTime) Nothing)
         |> Jpipe.custom (optionalField "oneway" (Jdec.map Just unionOneway) Nothing)
         |> Jpipe.custom (optionalField "open" (Jdec.map Just unionOpen) Nothing)
         |> Jpipe.custom (optionalField "operator" (Jdec.map Just unionOperator) Nothing)
@@ -4279,6 +4315,7 @@ encodeQuickType x =
         , ("left", makeNullableEncoder encodeUnionLeft x.left)
         , ("let", makeNullableEncoder encodeUnionLet x.quickTypeLet)
         , ("list", makeNullableEncoder encodeUnionList x.list)
+        , ("LocalDate", makeNullableEncoder encodeUnionLocalDate x.localDate)
         , ("Locale", makeNullableEncoder encodeUnionLocale x.locale)
         , ("lock", makeNullableEncoder encodeUnionLock x.lock)
         , ("long", makeNullableEncoder encodeUnionLong x.long)
@@ -4313,6 +4350,8 @@ encodeQuickType x =
         , ("object", makeNullableEncoder encodeUnionObject x.object)
         , ("ObjectMapper", makeNullableEncoder encodeUnionObjectMapper x.objectMapper)
         , ("of", makeNullableEncoder encodeUnionOf x.quickTypeOf)
+        , ("OffsetDateTime", makeNullableEncoder encodeUnionOffsetDateTime x.offsetDateTime)
+        , ("OffsetTime", makeNullableEncoder encodeUnionOffsetTime x.offsetTime)
         , ("oneway", makeNullableEncoder encodeUnionOneway x.oneway)
         , ("open", makeNullableEncoder encodeUnionOpen x.open)
         , ("operator", makeNullableEncoder encodeUnionOperator x.operator)
@@ -7940,6 +7979,28 @@ encodeListClass x =
         [
         ]
 
+unionLocalDate : Jdec.Decoder UnionLocalDate
+unionLocalDate =
+    Jdec.oneOf
+        [ Jdec.map DoubleInUnionLocalDate Jdec.float
+        , Jdec.map LocalDateInUnionLocalDate localDate
+        ]
+
+encodeUnionLocalDate : UnionLocalDate -> Jenc.Value
+encodeUnionLocalDate x = case x of
+    DoubleInUnionLocalDate y -> Jenc.float y
+    LocalDateInUnionLocalDate y -> encodeLocalDate y
+
+localDate : Jdec.Decoder LocalDate
+localDate =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> LocalDate)
+
+encodeLocalDate : LocalDate -> Jenc.Value
+encodeLocalDate x =
+    Jenc.object
+        [
+        ]
+
 unionLocale : Jdec.Decoder UnionLocale
 unionLocale =
     Jdec.oneOf
@@ -8600,6 +8661,50 @@ encodeObjectMapper x =
         [
         ]
 
+unionOffsetDateTime : Jdec.Decoder UnionOffsetDateTime
+unionOffsetDateTime =
+    Jdec.oneOf
+        [ Jdec.map DoubleInUnionOffsetDateTime Jdec.float
+        , Jdec.map OffsetDateTimeInUnionOffsetDateTime offsetDateTime
+        ]
+
+encodeUnionOffsetDateTime : UnionOffsetDateTime -> Jenc.Value
+encodeUnionOffsetDateTime x = case x of
+    DoubleInUnionOffsetDateTime y -> Jenc.float y
+    OffsetDateTimeInUnionOffsetDateTime y -> encodeOffsetDateTime y
+
+offsetDateTime : Jdec.Decoder OffsetDateTime
+offsetDateTime =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> OffsetDateTime)
+
+encodeOffsetDateTime : OffsetDateTime -> Jenc.Value
+encodeOffsetDateTime x =
+    Jenc.object
+        [
+        ]
+
+unionOffsetTime : Jdec.Decoder UnionOffsetTime
+unionOffsetTime =
+    Jdec.oneOf
+        [ Jdec.map DoubleInUnionOffsetTime Jdec.float
+        , Jdec.map OffsetTimeInUnionOffsetTime offsetTime
+        ]
+
+encodeUnionOffsetTime : UnionOffsetTime -> Jenc.Value
+encodeUnionOffsetTime x = case x of
+    DoubleInUnionOffsetTime y -> Jenc.float y
+    OffsetTimeInUnionOffsetTime y -> encodeOffsetTime y
+
+offsetTime : Jdec.Decoder OffsetTime
+offsetTime =
+    Jdec.dict Jdec.value |> Jdec.map (\_ -> OffsetTime)
+
+encodeOffsetTime : OffsetTime -> Jenc.Value
+encodeOffsetTime x =
+    Jenc.object
+        [
+        ]
+
 unionOneway : Jdec.Decoder UnionOneway
 unionOneway =
     Jdec.oneOf
diff --git a/base/schema-flow/test/inputs/schema/date-time.schema/default/TopLevel.js b/head/schema-flow/test/inputs/schema/date-time.schema/default/TopLevel.js
index 5679fa7..a2535a9 100644
--- a/base/schema-flow/test/inputs/schema/date-time.schema/default/TopLevel.js
+++ b/head/schema-flow/test/inputs/schema/date-time.schema/default/TopLevel.js
@@ -10,11 +10,14 @@
 // match the expected interface, even if the JSON is valid.
 
 export type TopLevel = {
-    "complex-union-array": ComplexUnionArrayElement[];
-    date:                  Date;
-    "date-time":           Date;
-    time:                  string;
-    "union-array":         string[];
+    "complex-union-array":     ComplexUnionArrayElement[];
+    date:                      Date;
+    "date-time":               Date;
+    "local-date-class"?:       LocalDate;
+    "offset-date-time-class"?: OffsetDateTime;
+    "offset-time-class"?:      OffsetTime;
+    time:                      string;
+    "union-array":             string[];
 };
 
 export type ComplexUnionArrayElement = Date | ComplexUnionArrayEnum | number;
@@ -23,6 +26,15 @@ export type ComplexUnionArrayEnum =
       "foo"
     | "bar";
 
+export type LocalDate = {
+};
+
+export type OffsetDateTime = {
+};
+
+export type OffsetTime = {
+};
+
 // Converts JSON strings to/from your types
 // and asserts the results of JSON.parse at runtime
 function toTopLevel(json: string): TopLevel {
@@ -212,9 +224,18 @@ const typeMap: any = {
         { json: "complex-union-array", js: "complex-union-array", typ: a(u(Date, r("ComplexUnionArrayEnum"), i(0))) },
         { json: "date", js: "date", typ: Date },
         { json: "date-time", js: "date-time", typ: Date },
+        { json: "local-date-class", js: "local-date-class", typ: u(undefined, r("LocalDate")) },
+        { json: "offset-date-time-class", js: "offset-date-time-class", typ: u(undefined, r("OffsetDateTime")) },
+        { json: "offset-time-class", js: "offset-time-class", typ: u(undefined, r("OffsetTime")) },
         { json: "time", js: "time", typ: "" },
         { json: "union-array", js: "union-array", typ: a("") },
     ], false),
+    "LocalDate": o([
+    ], false),
+    "OffsetDateTime": o([
+    ], false),
+    "OffsetTime": o([
+    ], false),
     "ComplexUnionArrayEnum": [
         "foo",
         "bar",
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 055ed86..129f864 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
@@ -191,6 +191,7 @@ export type Enum =
     | "left"
     | "let"
     | "list"
+    | "LocalDate"
     | "Locale"
     | "lock"
     | "long"
@@ -223,6 +224,8 @@ export type Enum =
     | "nullptr"
     | "number"
     | "object"
+    | "OffsetDateTime"
+    | "OffsetTime"
     | "ObjectMapper"
     | "of"
     | "oneway"
@@ -720,6 +723,7 @@ const typeMap: any = {
         "left",
         "let",
         "list",
+        "LocalDate",
         "Locale",
         "lock",
         "long",
@@ -752,6 +756,8 @@ const typeMap: any = {
         "nullptr",
         "number",
         "object",
+        "OffsetDateTime",
+        "OffsetTime",
         "ObjectMapper",
         "of",
         "oneway",
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 c364e96..dd4edf5 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
@@ -188,6 +188,7 @@ export type TopLevel = {
     left?:                       UnionLeft;
     let?:                        UnionLet;
     list?:                       UnionList;
+    LocalDate?:                  UnionLocalDate;
     Locale?:                     UnionLocale;
     lock?:                       UnionLock;
     long?:                       UnionLong;
@@ -222,6 +223,8 @@ export type TopLevel = {
     object?:                     UnionObject;
     ObjectMapper?:               UnionObjectMapper;
     of?:                         UnionOf;
+    OffsetDateTime?:             UnionOffsetDateTime;
+    OffsetTime?:                 UnionOffsetTime;
     oneway?:                     UnionOneway;
     open?:                       UnionOpen;
     operator?:                   UnionOperator;
@@ -532,6 +535,11 @@ export type UnionKSerializer = KSerializer | number;
 export type KSerializer = {
 };
 
+export type UnionLocalDate = LocalDate | number;
+
+export type LocalDate = {
+};
+
 export type UnionLocale = Locale | number;
 
 export type Locale = {
@@ -577,6 +585,16 @@ export type UnionObjectMapper = ObjectMapper | number;
 export type ObjectMapper = {
 };
 
+export type UnionOffsetDateTime = OffsetDateTime | number;
+
+export type OffsetDateTime = {
+};
+
+export type UnionOffsetTime = OffsetTime | number;
+
+export type OffsetTime = {
+};
+
 export type UnionPrimitiveKind = PrimitiveKind | number;
 
 export type PrimitiveKind = {
@@ -2406,6 +2424,7 @@ const typeMap: any = {
         { json: "left", js: "left", typ: u(undefined, u(r("Left"), 3.14)) },
         { json: "let", js: "let", typ: u(undefined, u(r("Let"), 3.14)) },
         { json: "list", js: "list", typ: u(undefined, u(r("List"), 3.14)) },
+        { json: "LocalDate", js: "LocalDate", typ: u(undefined, u(r("LocalDate"), 3.14)) },
         { 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)) },
@@ -2440,6 +2459,8 @@ const typeMap: any = {
         { 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: "of", js: "of", typ: u(undefined, u(r("Of"), 3.14)) },
+        { json: "OffsetDateTime", js: "OffsetDateTime", typ: u(undefined, u(r("OffsetDateTime"), 3.14)) },
+        { json: "OffsetTime", js: "OffsetTime", typ: u(undefined, u(r("OffsetTime"), 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)) },
         { json: "operator", js: "operator", typ: u(undefined, u(r("Operator"), 3.14)) },
@@ -2640,6 +2661,8 @@ const typeMap: any = {
     ], false),
     "KSerializer": o([
     ], false),
+    "LocalDate": o([
+    ], false),
     "Locale": o([
     ], false),
     "MapEntry": o([
@@ -2658,6 +2681,10 @@ const typeMap: any = {
     ], false),
     "ObjectMapper": o([
     ], false),
+    "OffsetDateTime": o([
+    ], false),
+    "OffsetTime": o([
+    ], false),
     "PrimitiveKind": o([
     ], false),
     "Protocol": o([
diff --git a/base/schema-golang/test/inputs/schema/date-time.schema/default/quicktype.go b/head/schema-golang/test/inputs/schema/date-time.schema/default/quicktype.go
index 6053f35..dae04c2 100644
--- a/base/schema-golang/test/inputs/schema/date-time.schema/default/quicktype.go
+++ b/head/schema-golang/test/inputs/schema/date-time.schema/default/quicktype.go
@@ -23,11 +23,23 @@ func (r *TopLevel) Marshal() ([]byte, error) {
 }
 
 type TopLevel struct {
-	ComplexUnionArray []ComplexUnionArrayElement `json:"complex-union-array"`
-	Date              string                     `json:"date"`
-	DateTime          time.Time                  `json:"date-time"`
-	Time              string                     `json:"time"`
-	UnionArray        []string                   `json:"union-array"`
+	ComplexUnionArray   []ComplexUnionArrayElement `json:"complex-union-array"`
+	Date                string                     `json:"date"`
+	DateTime            time.Time                  `json:"date-time"`
+	LocalDateClass      *LocalDate                 `json:"local-date-class,omitempty"`
+	OffsetDateTimeClass *OffsetDateTime            `json:"offset-date-time-class,omitempty"`
+	OffsetTimeClass     *OffsetTime                `json:"offset-time-class,omitempty"`
+	Time                string                     `json:"time"`
+	UnionArray          []string                   `json:"union-array"`
+}
+
+type LocalDate struct {
+}
+
+type OffsetDateTime struct {
+}
+
+type OffsetTime struct {
 }
 
 type ComplexUnionArrayEnum string
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 9b48eb2..31cab2c 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
@@ -201,6 +201,7 @@ const (
 	Left                       EnumEnum = "left"
 	Let                        EnumEnum = "let"
 	List                       EnumEnum = "list"
+	LocalDate                  EnumEnum = "LocalDate"
 	Locale                     EnumEnum = "Locale"
 	Lock                       EnumEnum = "lock"
 	Long                       EnumEnum = "long"
@@ -233,6 +234,8 @@ const (
 	Nullptr                    EnumEnum = "nullptr"
 	Number                     EnumEnum = "number"
 	Object                     EnumEnum = "object"
+	OffsetDateTime             EnumEnum = "OffsetDateTime"
+	OffsetTime                 EnumEnum = "OffsetTime"
 	ObjectMapper               EnumEnum = "ObjectMapper"
 	Of                         EnumEnum = "of"
 	Oneway                     EnumEnum = "oneway"
@@ -373,7 +376,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, Serializable, EnumSelf, Sendable, Serialize, SerialName, KSerializer, PrimitiveKind, SerialDescriptor, SerializerProvider, Set, Short, Signed, SimpleModule, Sizeof, Stackalloc, Standards, Static, StaticAssert, StaticCast, StdDeserializer, StdSerializer, Strictfp, String, Struct, Subscript, Super, Switch, Symbol, Synchronized, System, Template, Then, This, ThreadLocal, Throw, Throws, TimeOnly, TimeOnlyConverter, TimeZone, ToJSON, EnumTopLevel, ToString, Transient, True, EnumTrue, Try, Type, EnumType, Typealias, Typedef, Typeid, Typename, Typeof, Uint, Ulong, Unchecked, Undefined, Union, UseSerializers, Unowned, Unsafe, Unsigned, Ushort, Using, Utf8JSONReader, Utf8JSONWriter, UUID, Var, Virtual, Void, Volatile, WcharT, Weak, Where, While, WillSet, With, Xor, XorEq, Yes, Yield, Dummy: *x = EnumEnum(value); return nil
+	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, LocalDate, 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, OffsetDateTime, OffsetTime, ObjectMapper, Of, Oneway, Open, Operator, Optional, Or, OrEq, Out, Override, Package, Params, Pass, Port, Postfix, Precedence, Prefix, Print, Printf, PrintMembers, Private, Protected, Protocol, EnumProtocol, Public, Quicktype, Raise, Range, Readonly, Ref, RegExp, Register, ReinterpretCast, Repeat, Require, Required, Requires, Restrict, Retain, Rethrows, Return, Right, RuntimeType, S, Sbyte, Sealed, Sel, Select, Self, Serializable, EnumSelf, Sendable, Serialize, SerialName, KSerializer, PrimitiveKind, SerialDescriptor, SerializerProvider, Set, Short, Signed, SimpleModule, Sizeof, Stackalloc, Standards, Static, StaticAssert, StaticCast, StdDeserializer, StdSerializer, Strictfp, String, Struct, Subscript, Super, Switch, Symbol, Synchronized, System, Template, Then, This, ThreadLocal, Throw, Throws, TimeOnly, TimeOnlyConverter, TimeZone, ToJSON, EnumTopLevel, ToString, Transient, True, EnumTrue, Try, Type, EnumType, Typealias, Typedef, Typeid, Typename, Typeof, Uint, Ulong, Unchecked, Undefined, Union, UseSerializers, Unowned, Unsafe, Unsigned, Ushort, Using, Utf8JSONReader, Utf8JSONWriter, UUID, Var, Virtual, Void, Volatile, WcharT, Weak, Where, While, WillSet, With, Xor, XorEq, Yes, Yield, Dummy: *x = EnumEnum(value); return nil
 	}
 	return invalidEnumEnum(value)
 }
diff --git a/base/schema-golang/test/inputs/schema/keyword-unions.schema/default/quicktype.go b/head/schema-golang/test/inputs/schema/keyword-unions.schema/default/quicktype.go
index 2f495a0..559fe5c 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
@@ -200,6 +200,7 @@ type TopLevel struct {
 	Left                       *UnionLeft                       `json:"left"`
 	Let                        *UnionLet                        `json:"let"`
 	List                       *UnionList                       `json:"list"`
+	LocalDate                  *UnionLocalDate                  `json:"LocalDate"`
 	Locale                     *UnionLocale                     `json:"Locale"`
 	Lock                       *UnionLock                       `json:"lock"`
 	Long                       *UnionLong                       `json:"long"`
@@ -234,6 +235,8 @@ type TopLevel struct {
 	Object                     *UnionObject                     `json:"object"`
 	ObjectMapper               *UnionObjectMapper               `json:"ObjectMapper"`
 	Of                         *UnionOf                         `json:"of"`
+	OffsetDateTime             *UnionOffsetDateTime             `json:"OffsetDateTime"`
+	OffsetTime                 *UnionOffsetTime                 `json:"OffsetTime"`
 	Oneway                     *UnionOneway                     `json:"oneway"`
 	Open                       *UnionOpen                       `json:"open"`
 	Operator                   *UnionOperator                   `json:"operator"`
@@ -879,6 +882,9 @@ type Let struct {
 type List struct {
 }
 
+type LocalDate struct {
+}
+
 type Locale struct {
 }
 
@@ -975,6 +981,12 @@ type ObjectMapper struct {
 type Of struct {
 }
 
+type OffsetDateTime struct {
+}
+
+type OffsetTime struct {
+}
+
 type Oneway struct {
 }
 
@@ -5161,6 +5173,28 @@ func (x *UnionList) MarshalJSON() ([]byte, error) {
 	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.List != nil, x.List, false, nil, false, nil, false)
 }
 
+type UnionLocalDate struct {
+	Double    *float64
+	LocalDate *LocalDate
+}
+
+func (x *UnionLocalDate) UnmarshalJSON(data []byte) error {
+	x.LocalDate = nil
+	var c LocalDate
+	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.LocalDate = &c
+	}
+	return nil
+}
+
+func (x *UnionLocalDate) MarshalJSON() ([]byte, error) {
+	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.LocalDate != nil, x.LocalDate, false, nil, false, nil, false)
+}
+
 type UnionLocale struct {
 	Double *float64
 	Locale *Locale
@@ -5865,6 +5899,50 @@ func (x *UnionOf) MarshalJSON() ([]byte, error) {
 	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.Of != nil, x.Of, false, nil, false, nil, false)
 }
 
+type UnionOffsetDateTime struct {
+	Double         *float64
+	OffsetDateTime *OffsetDateTime
+}
+
+func (x *UnionOffsetDateTime) UnmarshalJSON(data []byte) error {
+	x.OffsetDateTime = nil
+	var c OffsetDateTime
+	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.OffsetDateTime = &c
+	}
+	return nil
+}
+
+func (x *UnionOffsetDateTime) MarshalJSON() ([]byte, error) {
+	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.OffsetDateTime != nil, x.OffsetDateTime, false, nil, false, nil, false)
+}
+
+type UnionOffsetTime struct {
+	Double     *float64
+	OffsetTime *OffsetTime
+}
+
+func (x *UnionOffsetTime) UnmarshalJSON(data []byte) error {
+	x.OffsetTime = nil
+	var c OffsetTime
+	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.OffsetTime = &c
+	}
+	return nil
+}
+
+func (x *UnionOffsetTime) MarshalJSON() ([]byte, error) {
+	return marshalUnion(nil, x.Double, nil, nil, false, nil, x.OffsetTime != nil, x.OffsetTime, false, nil, false, nil, false)
+}
+
 type UnionOneway struct {
 	Double *float64
 	Oneway *Oneway
diff --git a/head/schema-golang-leading-comments/test/inputs/schema/date-time.schema/default/multi/LocalDate.go b/head/schema-golang-leading-comments/test/inputs/schema/date-time.schema/default/multi/LocalDate.go
new file mode 100644
index 0000000..a76df49
--- /dev/null
+++ b/head/schema-golang-leading-comments/test/inputs/schema/date-time.schema/default/multi/LocalDate.go
@@ -0,0 +1,4 @@
+package main
+
+type LocalDate struct {
+}
diff --git a/head/schema-golang-leading-comments/test/inputs/schema/date-time.schema/default/multi/OffsetDateTime.go b/head/schema-golang-leading-comments/test/inputs/schema/date-time.schema/default/multi/OffsetDateTime.go
new file mode 100644
index 0000000..15c1d9e
--- /dev/null
+++ b/head/schema-golang-leading-comments/test/inputs/schema/date-time.schema/default/multi/OffsetDateTime.go
@@ -0,0 +1,4 @@
+package main
+
+type OffsetDateTime struct {
+}
diff --git a/head/schema-golang-leading-comments/test/inputs/schema/date-time.schema/default/multi/OffsetTime.go b/head/schema-golang-leading-comments/test/inputs/schema/date-time.schema/default/multi/OffsetTime.go
new file mode 100644
index 0000000..2be7605
--- /dev/null
+++ b/head/schema-golang-leading-comments/test/inputs/schema/date-time.schema/default/multi/OffsetTime.go
@@ -0,0 +1,4 @@
+package main
+
+type OffsetTime struct {
+}
diff --git a/base/schema-golang-leading-comments/test/inputs/schema/date-time.schema/default/multi/TopLevel.go b/head/schema-golang-leading-comments/test/inputs/schema/date-time.schema/default/multi/TopLevel.go
index e01fa21..5bb2f7c 100644
--- a/base/schema-golang-leading-comments/test/inputs/schema/date-time.schema/default/multi/TopLevel.go
+++ b/head/schema-golang-leading-comments/test/inputs/schema/date-time.schema/default/multi/TopLevel.go
@@ -14,9 +14,12 @@ func (r *TopLevel) Marshal() ([]byte, error) {
 }
 
 type TopLevel struct {
-	ComplexUnionArray []ComplexUnionArrayElement `json:"complex-union-array"`
-	Date              string                     `json:"date"`
-	DateTime          time.Time                  `json:"date-time"`
-	Time              string                     `json:"time"`
-	UnionArray        []string                   `json:"union-array"`
+	ComplexUnionArray   []ComplexUnionArrayElement `json:"complex-union-array"`
+	Date                string                     `json:"date"`
+	DateTime            time.Time                  `json:"date-time"`
+	LocalDateClass      *LocalDate                 `json:"local-date-class,omitempty"`
+	OffsetDateTimeClass *OffsetDateTime            `json:"offset-date-time-class,omitempty"`
+	OffsetTimeClass     *OffsetTime                `json:"offset-time-class,omitempty"`
+	Time                string                     `json:"time"`
+	UnionArray          []string                   `json:"union-array"`
 }
diff --git a/base/schema-golang-leading-comments/test/inputs/schema/date-time.schema/default/quicktype.go b/head/schema-golang-leading-comments/test/inputs/schema/date-time.schema/default/quicktype.go
index 02c9ed5..f00dd22 100644
--- a/base/schema-golang-leading-comments/test/inputs/schema/date-time.schema/default/quicktype.go
+++ b/head/schema-golang-leading-comments/test/inputs/schema/date-time.schema/default/quicktype.go
@@ -17,11 +17,23 @@ func (r *TopLevel) Marshal() ([]byte, error) {
 }
 
 type TopLevel struct {
-	ComplexUnionArray []ComplexUnionArrayElement `json:"complex-union-array"`
-	Date              string                     `json:"date"`
-	DateTime          time.Time                  `json:"date-time"`
-	Time              string                     `json:"time"`
-	UnionArray        []string                   `json:"union-array"`
+	ComplexUnionArray   []ComplexUnionArrayElement `json:"complex-union-array"`
+	Date                string                     `json:"date"`
+	DateTime            time.Time                  `json:"date-time"`
+	LocalDateClass      *LocalDate                 `json:"local-date-class,omitempty"`
+	OffsetDateTimeClass *OffsetDateTime            `json:"offset-date-time-class,omitempty"`
+	OffsetTimeClass     *OffsetTime                `json:"offset-time-class,omitempty"`
+	Time                string                     `json:"time"`
+	UnionArray          []string                   `json:"union-array"`
+}
+
+type LocalDate struct {
+}
+
+type OffsetDateTime struct {
+}
+
+type OffsetTime struct {
 }
 
 type ComplexUnionArrayEnum string
diff --git a/base/schema-haskell/test/inputs/schema/date-time.schema/default/QuickType.hs b/head/schema-haskell/test/inputs/schema/date-time.schema/default/QuickType.hs
index a167212..d1d59af 100644
--- a/base/schema-haskell/test/inputs/schema/date-time.schema/default/QuickType.hs
+++ b/head/schema-haskell/test/inputs/schema/date-time.schema/default/QuickType.hs
@@ -3,6 +3,9 @@
 
 module QuickType
     ( QuickType (..)
+    , LocalDate (..)
+    , OffsetDateTime (..)
+    , OffsetTime (..)
     , ComplexUnionArray (..)
     , decodeTopLevel
     ) where
@@ -17,6 +20,9 @@ data QuickType = QuickType
     { complexUnionArrayQuickType :: [ComplexUnionArray]
     , dateQuickType :: Text
     , dateTimeQuickType :: Text
+    , localDateClassQuickType :: Maybe LocalDate
+    , offsetDateTimeClassQuickType :: Maybe OffsetDateTime
+    , offsetTimeClassQuickType :: Maybe OffsetTime
     , timeQuickType :: Text
     , unionArrayQuickType :: [Text]
     } deriving (Show)
@@ -26,15 +32,30 @@ data ComplexUnionArray
     | StringInComplexUnionArray Text
     deriving (Show)
 
+data LocalDate = LocalDate
+    {
+    } deriving (Show)
+
+data OffsetDateTime = OffsetDateTime
+    {
+    } deriving (Show)
+
+data OffsetTime = OffsetTime
+    {
+    } deriving (Show)
+
 decodeTopLevel :: ByteString -> Maybe QuickType
 decodeTopLevel = decode
 
 instance ToJSON QuickType where
-    toJSON (QuickType complexUnionArrayQuickType dateQuickType dateTimeQuickType timeQuickType unionArrayQuickType) =
+    toJSON (QuickType complexUnionArrayQuickType dateQuickType dateTimeQuickType localDateClassQuickType offsetDateTimeClassQuickType offsetTimeClassQuickType timeQuickType unionArrayQuickType) =
         object $ foldMap (maybe [] pure)
         [ Just $ "complex-union-array" .= complexUnionArrayQuickType
         , Just $ "date" .= dateQuickType
         , Just $ "date-time" .= dateTimeQuickType
+        , ("local-date-class" .=) <$> localDateClassQuickType
+        , ("offset-date-time-class" .=) <$> offsetDateTimeClassQuickType
+        , ("offset-time-class" .=) <$> offsetTimeClassQuickType
         , Just $ "time" .= timeQuickType
         , Just $ "union-array" .= unionArrayQuickType
         ]
@@ -44,6 +65,9 @@ instance FromJSON QuickType where
         <$> v .: "complex-union-array"
         <*> v .: "date"
         <*> v .: "date-time"
+        <*> v .:! "local-date-class"
+        <*> v .:! "offset-date-time-class"
+        <*> v .:! "offset-time-class"
         <*> v .: "time"
         <*> v .: "union-array"
 
@@ -54,3 +78,21 @@ instance ToJSON ComplexUnionArray where
 instance FromJSON ComplexUnionArray where
     parseJSON xs@(Number _) = (fmap IntegerInComplexUnionArray . parseJSON) xs
     parseJSON xs@(String _) = (fmap StringInComplexUnionArray . parseJSON) xs
+
+instance ToJSON LocalDate where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON LocalDate where
+    parseJSON (Object _) = return LocalDate
+
+instance ToJSON OffsetDateTime where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON OffsetDateTime where
+    parseJSON (Object _) = return OffsetDateTime
+
+instance ToJSON OffsetTime where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON OffsetTime where
+    parseJSON (Object _) = return OffsetTime
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 29de7b2..0ec0d78 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
@@ -194,6 +194,7 @@ data EnumEnum
     | LeftEnumEnum
     | LetEnumEnum
     | ListEnumEnum
+    | LocalDateEnumEnum
     | LocaleEnumEnum
     | LockEnumEnum
     | LongEnumEnum
@@ -226,6 +227,8 @@ data EnumEnum
     | NullptrEnumEnum
     | NumberEnumEnum
     | ObjectEnumEnum
+    | OffsetDateTimeEnumEnum
+    | OffsetTimeEnumEnum
     | ObjectMapperEnumEnum
     | OfEnumEnum
     | OnewayEnumEnum
@@ -549,6 +552,7 @@ instance ToJSON EnumEnum where
     toJSON LeftEnumEnum = "left"
     toJSON LetEnumEnum = "let"
     toJSON ListEnumEnum = "list"
+    toJSON LocalDateEnumEnum = "LocalDate"
     toJSON LocaleEnumEnum = "Locale"
     toJSON LockEnumEnum = "lock"
     toJSON LongEnumEnum = "long"
@@ -581,6 +585,8 @@ instance ToJSON EnumEnum where
     toJSON NullptrEnumEnum = "nullptr"
     toJSON NumberEnumEnum = "number"
     toJSON ObjectEnumEnum = "object"
+    toJSON OffsetDateTimeEnumEnum = "OffsetDateTime"
+    toJSON OffsetTimeEnumEnum = "OffsetTime"
     toJSON ObjectMapperEnumEnum = "ObjectMapper"
     toJSON OfEnumEnum = "of"
     toJSON OnewayEnumEnum = "oneway"
@@ -892,6 +898,7 @@ instance FromJSON EnumEnum where
             parseText "left" = return LeftEnumEnum
             parseText "let" = return LetEnumEnum
             parseText "list" = return ListEnumEnum
+            parseText "LocalDate" = return LocalDateEnumEnum
             parseText "Locale" = return LocaleEnumEnum
             parseText "lock" = return LockEnumEnum
             parseText "long" = return LongEnumEnum
@@ -924,6 +931,8 @@ instance FromJSON EnumEnum where
             parseText "nullptr" = return NullptrEnumEnum
             parseText "number" = return NumberEnumEnum
             parseText "object" = return ObjectEnumEnum
+            parseText "OffsetDateTime" = return OffsetDateTimeEnumEnum
+            parseText "OffsetTime" = return OffsetTimeEnumEnum
             parseText "ObjectMapper" = return ObjectMapperEnumEnum
             parseText "of" = return OfEnumEnum
             parseText "oneway" = return OnewayEnumEnum
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 ff6f03e..a5a9e82 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
@@ -163,6 +163,7 @@ module QuickType
     , Lazy (..)
     , LeftClass (..)
     , List (..)
+    , LocalDate (..)
     , Locale (..)
     , Lock (..)
     , Long (..)
@@ -193,6 +194,8 @@ module QuickType
     , NumberClass (..)
     , ObjectClass (..)
     , ObjectMapper (..)
+    , OffsetDateTime (..)
+    , OffsetTime (..)
     , Oneway (..)
     , Open (..)
     , Operator (..)
@@ -501,6 +504,7 @@ module QuickType
     , UnionLazy (..)
     , UnionLeft (..)
     , UnionList (..)
+    , UnionLocalDate (..)
     , UnionLocale (..)
     , UnionLock (..)
     , UnionLong (..)
@@ -531,6 +535,8 @@ module QuickType
     , UnionNumber (..)
     , UnionObject (..)
     , UnionObjectMapper (..)
+    , UnionOffsetDateTime (..)
+    , UnionOffsetTime (..)
     , UnionOneway (..)
     , UnionOpen (..)
     , UnionOperator (..)
@@ -867,6 +873,7 @@ data QuickType = QuickType
     , leftQuickType :: Maybe UnionLeft
     , quickTypeLetQuickType :: Maybe UnionLet
     , listQuickType :: Maybe UnionList
+    , localDateQuickType :: Maybe UnionLocalDate
     , localeQuickType :: Maybe UnionLocale
     , lockQuickType :: Maybe UnionLock
     , longQuickType :: Maybe UnionLong
@@ -901,6 +908,8 @@ data QuickType = QuickType
     , objectQuickType :: Maybe UnionObject
     , objectMapperQuickType :: Maybe UnionObjectMapper
     , quickTypeOfQuickType :: Maybe UnionOf
+    , offsetDateTimeQuickType :: Maybe UnionOffsetDateTime
+    , offsetTimeQuickType :: Maybe UnionOffsetTime
     , onewayQuickType :: Maybe UnionOneway
     , openQuickType :: Maybe UnionOpen
     , operatorQuickType :: Maybe UnionOperator
@@ -2470,6 +2479,15 @@ data List = List
     {
     } deriving (Show)
 
+data UnionLocalDate
+    = DoubleInUnionLocalDate Double
+    | LocalDateInUnionLocalDate LocalDate
+    deriving (Show)
+
+data LocalDate = LocalDate
+    {
+    } deriving (Show)
+
 data UnionLocale
     = DoubleInUnionLocale Double
     | LocaleInUnionLocale Locale
@@ -2740,6 +2758,24 @@ data ObjectMapper = ObjectMapper
     {
     } deriving (Show)
 
+data UnionOffsetDateTime
+    = DoubleInUnionOffsetDateTime Double
+    | OffsetDateTimeInUnionOffsetDateTime OffsetDateTime
+    deriving (Show)
+
+data OffsetDateTime = OffsetDateTime
+    {
+    } deriving (Show)
+
+data UnionOffsetTime
+    = DoubleInUnionOffsetTime Double
+    | OffsetTimeInUnionOffsetTime OffsetTime
+    deriving (Show)
+
+data OffsetTime = OffsetTime
+    {
+    } deriving (Show)
+
 data UnionOneway
     = DoubleInUnionOneway Double
     | OnewayInUnionOneway Oneway
@@ -4076,7 +4112,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 kSerializerQuickType lambdaQuickType lazyQuickType leftQuickType quickTypeLetQuickType listQuickType localeQuickType lockQuickType longQuickType mapQuickType mapEntryQuickType metadataPropertyHandlingQuickType quickTypeModuleQuickType mutableQuickType mutatingQuickType namespaceQuickType nativeQuickType newQuickType newtonsoftQuickType nilQuickType noQuickType noexceptQuickType nonatomicQuickType quickTypeNoneQuickType noneQuickType nonlocalQuickType nonmutatingQuickType noSuchMethodQuickType notQuickType notEqQuickType nsErrorQuickType nsObjectQuickType nsStringQuickType nullQuickType quickTypeNullQuickType nullptrQuickType numberQuickType objectQuickType objectMapperQuickType quickTypeOfQuickType onewayQuickType openQuickType operatorQuickType optionalQuickType orQuickType orEqQuickType outQuickType overrideQuickType packageQuickType paramsQuickType passQuickType portQuickType postfixQuickType precedenceQuickType prefixQuickType primitiveKindQuickType printQuickType printfQuickType printMembersQuickType privateQuickType protectedQuickType protocolQuickType quickTypeProtocolQuickType publicQuickType quicktypeQuickType raiseQuickType rangeQuickType readonlyQuickType refQuickType regExpQuickType registerQuickType reinterpretCastQuickType repeatQuickType requireQuickType requiredQuickType requiresQuickType restrictQuickType retainQuickType rethrowsQuickType returnQuickType rightQuickType runtimeTypeQuickType sQuickType sbyteQuickType sealedQuickType selQuickType selectQuickType selfQuickType quickTypeSelfQuickType sendableQuickType serialDescriptorQuickType serializableQuickType serializeQuickType serializerProviderQuickType serialNameQuickType setQuickType shortQuickType signedQuickType simpleModuleQuickType sizeofQuickType stackallocQuickType standardsQuickType staticQuickType staticAssertQuickType staticCastQuickType stdDeserializerQuickType stdSerializerQuickType strictfpQuickType stringQuickType structQuickType subscriptQuickType superQuickType switchQuickType symbolQuickType synchronizedQuickType systemQuickType templateQuickType quickTypeThenQuickType thisQuickType threadLocalQuickType throwQuickType throwsQuickType timeOnlyQuickType timeOnlyConverterQuickType timeZoneQuickType toJSONQuickType topLevelQuickType toStringQuickType transientQuickType trueQuickType quickTypeTrueQuickType tryQuickType quickTypeTypeQuickType purpleTypeQuickType typealiasQuickType typedefQuickType typeidQuickType typenameQuickType typeofQuickType uintQuickType ulongQuickType uncheckedQuickType undefinedQuickType unionQuickType unownedQuickType unsafeQuickType unsignedQuickType useSerializersQuickType ushortQuickType usingQuickType utf8JSONReaderQuickType utf8JSONWriterQuickType uuidQuickType varQuickType virtualQuickType voidQuickType volatileQuickType wcharTQuickType weakQuickType quickTypeWhereQuickType whileQuickType willSetQuickType withQuickType xorQuickType xorEqQuickType yesQuickType yieldQuickType) =
+    toJSON (QuickType emptyQuickType quickTypeBoolQuickType complexQuickType imagineryQuickType abstractQuickType alignasQuickType alignofQuickType andQuickType andEqQuickType quickTypeAnyQuickType anyQuickType arrayQuickType quickTypeAsQuickType asmQuickType assertQuickType associatedtypeQuickType associativityQuickType asyncQuickType atomicQuickType atomicCancelQuickType atomicCommitQuickType atomicNoexceptQuickType autoQuickType awaitQuickType baseQuickType bitandQuickType bitorQuickType boolQuickType purpleBoolQuickType booleanQuickType breakQuickType bycopyQuickType byrefQuickType byteQuickType calendarQuickType quickTypeCaseQuickType catchQuickType chanQuickType charQuickType char16TQuickType char32TQuickType checkedQuickType purpleClassQuickType quickTypeClassQuickType cloneQuickType coAwaitQuickType coReturnQuickType coYieldQuickType codableQuickType codingKeyQuickType codingKeysQuickType complQuickType conceptQuickType consoleQuickType constQuickType constCastQuickType constexprQuickType constructorQuickType continueQuickType convenienceQuickType convertQuickType converterQuickType cultureInfoQuickType dateQuickType dateParseHandlingQuickType dateFormatterQuickType dateOnlyQuickType dateOnlyConverterQuickType dateTimeQuickType dateTimeStylesQuickType debuggerQuickType decimalQuickType declareQuickType decltypeQuickType decodeStringQuickType decoderQuickType decodingErrorQuickType defQuickType quickTypeDefaultQuickType deferQuickType deinitQuickType delQuickType delegateQuickType deleteQuickType dictQuickType dictionaryQuickType didSetQuickType quickTypeDoQuickType doubleQuickType dummyQuickType dynamicQuickType dynamicCastQuickType elifQuickType quickTypeElseQuickType encodeQuickTypeQuickType encoderQuickType enumQuickType enumValuesQuickType equalityContractQuickType equatableQuickType eventQuickType exceptQuickType exceptionQuickType explicitQuickType exportQuickType exposingQuickType extendsQuickType extensionQuickType externQuickType fallthroughQuickType quickTypeFalseQuickType falseQuickType fileprivateQuickType finalQuickType finallyQuickType fixedQuickType floatQuickType forQuickType foreachQuickType formatExceptionQuickType friendQuickType fromQuickType fromJSONQuickType funcQuickType functionQuickType getQuickType globalQuickType goQuickType gotoQuickType guardQuickType hashableQuickType hashCodeQuickType hasherQuickType hasOwnPropertyQuickType quickTypeIDQuickType quickTypeIfQuickType impQuickType implementsQuickType implicitQuickType quickTypeImportQuickType quickTypeInQuickType indirectQuickType quickTypeInfixQuickType initQuickType inlineQuickType inoutQuickType instanceofQuickType intQuickType interfaceQuickType internalQuickType isQuickType isoDateTimeOffsetConverterQuickType iterableQuickType jdecQuickType jencQuickType jpipeQuickType jsonQuickType jsonConverterQuickType jsonSerializerQuickType jsonTokenQuickType jsonWriterQuickType jsonAnyQuickType jsonCodingKeyQuickType jsonDecoderQuickType jsonEncoderQuickType jsonExceptionQuickType jsonGeneratorQuickType jsonNodeQuickType jsonNullQuickType jsonParserQuickType jsonReaderQuickType jsonTokenTypeQuickType kSerializerQuickType lambdaQuickType lazyQuickType leftQuickType quickTypeLetQuickType listQuickType localDateQuickType 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 offsetDateTimeQuickType offsetTimeQuickType onewayQuickType openQuickType operatorQuickType optionalQuickType orQuickType orEqQuickType outQuickType overrideQuickType packageQuickType paramsQuickType passQuickType portQuickType postfixQuickType precedenceQuickType prefixQuickType primitiveKindQuickType printQuickType printfQuickType printMembersQuickType privateQuickType protectedQuickType protocolQuickType quickTypeProtocolQuickType publicQuickType quicktypeQuickType raiseQuickType rangeQuickType readonlyQuickType refQuickType regExpQuickType registerQuickType reinterpretCastQuickType repeatQuickType requireQuickType requiredQuickType requiresQuickType restrictQuickType retainQuickType rethrowsQuickType returnQuickType rightQuickType runtimeTypeQuickType sQuickType sbyteQuickType sealedQuickType selQuickType selectQuickType selfQuickType quickTypeSelfQuickType sendableQuickType serialDescriptorQuickType serializableQuickType serializeQuickType serializerProviderQuickType serialNameQuickType setQuickType shortQuickType signedQuickType simpleModuleQuickType sizeofQuickType stackallocQuickType standardsQuickType staticQuickType staticAssertQuickType staticCastQuickType stdDeserializerQuickType stdSerializerQuickType strictfpQuickType stringQuickType structQuickType subscriptQuickType superQuickType switchQuickType symbolQuickType synchronizedQuickType systemQuickType templateQuickType quickTypeThenQuickType thisQuickType threadLocalQuickType throwQuickType throwsQuickType timeOnlyQuickType timeOnlyConverterQuickType timeZoneQuickType toJSONQuickType topLevelQuickType toStringQuickType transientQuickType trueQuickType quickTypeTrueQuickType tryQuickType quickTypeTypeQuickType purpleTypeQuickType typealiasQuickType typedefQuickType typeidQuickType typenameQuickType typeofQuickType uintQuickType ulongQuickType uncheckedQuickType undefinedQuickType unionQuickType unownedQuickType unsafeQuickType unsignedQuickType useSerializersQuickType ushortQuickType usingQuickType utf8JSONReaderQuickType utf8JSONWriterQuickType uuidQuickType varQuickType virtualQuickType voidQuickType volatileQuickType wcharTQuickType weakQuickType quickTypeWhereQuickType whileQuickType willSetQuickType withQuickType xorQuickType xorEqQuickType yesQuickType yieldQuickType) =
         object $ foldMap (maybe [] pure)
         [ ("_" .=) <$> emptyQuickType
         , ("_Bool" .=) <$> quickTypeBoolQuickType
@@ -4256,6 +4292,7 @@ instance ToJSON QuickType where
         , ("left" .=) <$> leftQuickType
         , ("let" .=) <$> quickTypeLetQuickType
         , ("list" .=) <$> listQuickType
+        , ("LocalDate" .=) <$> localDateQuickType
         , ("Locale" .=) <$> localeQuickType
         , ("lock" .=) <$> lockQuickType
         , ("long" .=) <$> longQuickType
@@ -4290,6 +4327,8 @@ instance ToJSON QuickType where
         , ("object" .=) <$> objectQuickType
         , ("ObjectMapper" .=) <$> objectMapperQuickType
         , ("of" .=) <$> quickTypeOfQuickType
+        , ("OffsetDateTime" .=) <$> offsetDateTimeQuickType
+        , ("OffsetTime" .=) <$> offsetTimeQuickType
         , ("oneway" .=) <$> onewayQuickType
         , ("open" .=) <$> openQuickType
         , ("operator" .=) <$> operatorQuickType
@@ -4599,6 +4638,7 @@ instance FromJSON QuickType where
         <*> v .:! "left"
         <*> v .:! "let"
         <*> v .:! "list"
+        <*> v .:! "LocalDate"
         <*> v .:! "Locale"
         <*> v .:! "lock"
         <*> v .:! "long"
@@ -4633,6 +4673,8 @@ instance FromJSON QuickType where
         <*> v .:! "object"
         <*> v .:! "ObjectMapper"
         <*> v .:! "of"
+        <*> v .:! "OffsetDateTime"
+        <*> v .:! "OffsetTime"
         <*> v .:! "oneway"
         <*> v .:! "open"
         <*> v .:! "operator"
@@ -7001,6 +7043,20 @@ instance ToJSON List where
 instance FromJSON List where
     parseJSON (Object _) = return List
 
+instance ToJSON UnionLocalDate where
+    toJSON (DoubleInUnionLocalDate x) = toJSON x
+    toJSON (LocalDateInUnionLocalDate x) = toJSON x
+
+instance FromJSON UnionLocalDate where
+    parseJSON xs@(Number _) = (fmap DoubleInUnionLocalDate . parseJSON) xs
+    parseJSON xs@(Object _) = (fmap LocalDateInUnionLocalDate . parseJSON) xs
+
+instance ToJSON LocalDate where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON LocalDate where
+    parseJSON (Object _) = return LocalDate
+
 instance ToJSON UnionLocale where
     toJSON (DoubleInUnionLocale x) = toJSON x
     toJSON (LocaleInUnionLocale x) = toJSON x
@@ -7421,6 +7477,34 @@ instance ToJSON ObjectMapper where
 instance FromJSON ObjectMapper where
     parseJSON (Object _) = return ObjectMapper
 
+instance ToJSON UnionOffsetDateTime where
+    toJSON (DoubleInUnionOffsetDateTime x) = toJSON x
+    toJSON (OffsetDateTimeInUnionOffsetDateTime x) = toJSON x
+
+instance FromJSON UnionOffsetDateTime where
+    parseJSON xs@(Number _) = (fmap DoubleInUnionOffsetDateTime . parseJSON) xs
+    parseJSON xs@(Object _) = (fmap OffsetDateTimeInUnionOffsetDateTime . parseJSON) xs
+
+instance ToJSON OffsetDateTime where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON OffsetDateTime where
+    parseJSON (Object _) = return OffsetDateTime
+
+instance ToJSON UnionOffsetTime where
+    toJSON (DoubleInUnionOffsetTime x) = toJSON x
+    toJSON (OffsetTimeInUnionOffsetTime x) = toJSON x
+
+instance FromJSON UnionOffsetTime where
+    parseJSON xs@(Number _) = (fmap DoubleInUnionOffsetTime . parseJSON) xs
+    parseJSON xs@(Object _) = (fmap OffsetTimeInUnionOffsetTime . parseJSON) xs
+
+instance ToJSON OffsetTime where
+    toJSON = \_ -> emptyObject
+
+instance FromJSON OffsetTime where
+    parseJSON (Object _) = return OffsetTime
+
 instance ToJSON UnionOneway where
     toJSON (DoubleInUnionOneway x) = toJSON x
     toJSON (OnewayInUnionOneway x) = toJSON x
diff --git a/head/schema-java/test/inputs/schema/date-time.schema/default/src/main/java/io/quicktype/LocalDateClassClass.java b/head/schema-java/test/inputs/schema/date-time.schema/default/src/main/java/io/quicktype/LocalDateClassClass.java
new file mode 100644
index 0000000..70d51eb
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/date-time.schema/default/src/main/java/io/quicktype/LocalDateClassClass.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class LocalDateClassClass {
+}
diff --git a/head/schema-java/test/inputs/schema/date-time.schema/default/src/main/java/io/quicktype/OffsetDateTimeClassClass.java b/head/schema-java/test/inputs/schema/date-time.schema/default/src/main/java/io/quicktype/OffsetDateTimeClassClass.java
new file mode 100644
index 0000000..9eb79a1
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/date-time.schema/default/src/main/java/io/quicktype/OffsetDateTimeClassClass.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class OffsetDateTimeClassClass {
+}
diff --git a/head/schema-java/test/inputs/schema/date-time.schema/default/src/main/java/io/quicktype/OffsetTimeClassClass.java b/head/schema-java/test/inputs/schema/date-time.schema/default/src/main/java/io/quicktype/OffsetTimeClassClass.java
new file mode 100644
index 0000000..87382b7
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/date-time.schema/default/src/main/java/io/quicktype/OffsetTimeClassClass.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class OffsetTimeClassClass {
+}
diff --git a/base/schema-java/test/inputs/schema/date-time.schema/default/src/main/java/io/quicktype/TopLevel.java b/head/schema-java/test/inputs/schema/date-time.schema/default/src/main/java/io/quicktype/TopLevel.java
index 238cf5f..8727ad5 100644
--- a/base/schema-java/test/inputs/schema/date-time.schema/default/src/main/java/io/quicktype/TopLevel.java
+++ b/head/schema-java/test/inputs/schema/date-time.schema/default/src/main/java/io/quicktype/TopLevel.java
@@ -10,6 +10,9 @@ public class TopLevel {
     private List<ComplexUnionArrayElement> complexUnionArray;
     private LocalDate date;
     private OffsetDateTime dateTime;
+    private LocalDateClassClass localDateClass;
+    private OffsetDateTimeClassClass offsetDateTimeClass;
+    private OffsetTimeClassClass offsetTimeClass;
     private OffsetTime time;
     private List<UnionArray> unionArray;
 
@@ -29,6 +32,21 @@ public class TopLevel {
     @JsonSetter(nulls = Nulls.FAIL)
     public void setDateTime(OffsetDateTime value) { this.dateTime = value; }
 
+    @JsonProperty("local-date-class")
+    public LocalDateClassClass getLocalDateClass() { return localDateClass; }
+    @JsonProperty("local-date-class")
+    public void setLocalDateClass(LocalDateClassClass value) { this.localDateClass = value; }
+
+    @JsonProperty("offset-date-time-class")
+    public OffsetDateTimeClassClass getOffsetDateTimeClass() { return offsetDateTimeClass; }
+    @JsonProperty("offset-date-time-class")
+    public void setOffsetDateTimeClass(OffsetDateTimeClassClass value) { this.offsetDateTimeClass = value; }
+
+    @JsonProperty("offset-time-class")
+    public OffsetTimeClassClass getOffsetTimeClass() { return offsetTimeClass; }
+    @JsonProperty("offset-time-class")
+    public void setOffsetTimeClass(OffsetTimeClassClass value) { this.offsetTimeClass = value; }
+
     @JsonProperty("time")
     public OffsetTime getTime() { return time; }
     @JsonProperty("time")
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 ea6259c..d5264a4 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, SERIALIZABLE, ENUM_SELF, SENDABLE, SERIALIZE, SERIAL_NAME, K_SERIALIZER, PRIMITIVE_KIND, SERIAL_DESCRIPTOR, SERIALIZER_PROVIDER, SET, SHORT, SIGNED, SIMPLE_MODULE, SIZEOF, STACKALLOC, STANDARDS, STATIC, STATIC_ASSERT, STATIC_CAST, STD_DESERIALIZER, STD_SERIALIZER, STRICTFP, STRING, STRUCT, SUBSCRIPT, SUPER, SWITCH, SYMBOL, SYNCHRONIZED, SYSTEM, TEMPLATE, THEN, THIS, THREAD_LOCAL, THROW, THROWS, TIME_ONLY, TIME_ONLY_CONVERTER, TIME_ZONE, TO_JSON, TOP_LEVEL, TO_STRING, TRANSIENT, TRUE, ENUM_TRUE, TRY, TYPE, ENUM_TYPE, TYPEALIAS, TYPEDEF, TYPEID, TYPENAME, TYPEOF, UINT, ULONG, UNCHECKED, UNDEFINED, UNION, USE_SERIALIZERS, UNOWNED, UNSAFE, UNSIGNED, USHORT, USING, UTF8_JSON_READER, UTF8_JSON_WRITER, UUID, VAR, VIRTUAL, VOID, VOLATILE, WCHAR_T, WEAK, WHERE, WHILE, WILL_SET, WITH, XOR, XOR_EQ, YES, YIELD, DUMMY;
+    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, LOCAL_DATE, 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, OFFSET_DATE_TIME, OFFSET_TIME, OBJECT_MAPPER, OF, ONEWAY, OPEN, OPERATOR, OPTIONAL, OR, OR_EQ, OUT, OVERRIDE, PACKAGE, PARAMS, PASS, PORT, POSTFIX, PRECEDENCE, PREFIX, PRINT, PRINTF, PRINT_MEMBERS, PRIVATE, PROTECTED, PROTOCOL, ENUM_PROTOCOL, PUBLIC, QUICKTYPE, RAISE, RANGE, READONLY, REF, REG_EXP, REGISTER, REINTERPRET_CAST, REPEAT, REQUIRE, REQUIRED, REQUIRES, RESTRICT, RETAIN, RETHROWS, RETURN, RIGHT, RUNTIME_TYPE, S, SBYTE, SEALED, SEL, SELECT, SELF, SERIALIZABLE, ENUM_SELF, SENDABLE, SERIALIZE, SERIAL_NAME, K_SERIALIZER, PRIMITIVE_KIND, SERIAL_DESCRIPTOR, SERIALIZER_PROVIDER, SET, SHORT, SIGNED, SIMPLE_MODULE, SIZEOF, STACKALLOC, STANDARDS, STATIC, STATIC_ASSERT, STATIC_CAST, STD_DESERIALIZER, STD_SERIALIZER, STRICTFP, STRING, STRUCT, SUBSCRIPT, SUPER, SWITCH, SYMBOL, SYNCHRONIZED, SYSTEM, TEMPLATE, THEN, THIS, THREAD_LOCAL, THROW, THROWS, TIME_ONLY, TIME_ONLY_CONVERTER, TIME_ZONE, TO_JSON, TOP_LEVEL, TO_STRING, TRANSIENT, TRUE, ENUM_TRUE, TRY, TYPE, ENUM_TYPE, TYPEALIAS, TYPEDEF, TYPEID, TYPENAME, TYPEOF, UINT, ULONG, UNCHECKED, UNDEFINED, UNION, USE_SERIALIZERS, UNOWNED, UNSAFE, UNSIGNED, USHORT, USING, UTF8_JSON_READER, UTF8_JSON_WRITER, UUID, VAR, VIRTUAL, VOID, VOLATILE, WCHAR_T, WEAK, WHERE, WHILE, WILL_SET, WITH, XOR, XOR_EQ, YES, YIELD, DUMMY;
 
     @JsonValue
     public String toValue() {
@@ -185,6 +185,7 @@ public enum Enum {
             case LEFT: return "left";
             case LET: return "let";
             case LIST: return "list";
+            case LOCAL_DATE: return "LocalDate";
             case LOCALE: return "Locale";
             case LOCK: return "lock";
             case LONG: return "long";
@@ -217,6 +218,8 @@ public enum Enum {
             case NULLPTR: return "nullptr";
             case NUMBER: return "number";
             case OBJECT: return "object";
+            case OFFSET_DATE_TIME: return "OffsetDateTime";
+            case OFFSET_TIME: return "OffsetTime";
             case OBJECT_MAPPER: return "ObjectMapper";
             case OF: return "of";
             case ONEWAY: return "oneway";
@@ -530,6 +533,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("LocalDate")) return LOCAL_DATE;
         if (value.equals("Locale")) return LOCALE;
         if (value.equals("lock")) return LOCK;
         if (value.equals("long")) return LONG;
@@ -562,6 +566,8 @@ public enum Enum {
         if (value.equals("nullptr")) return NULLPTR;
         if (value.equals("number")) return NUMBER;
         if (value.equals("object")) return OBJECT;
+        if (value.equals("OffsetDateTime")) return OFFSET_DATE_TIME;
+        if (value.equals("OffsetTime")) return OFFSET_TIME;
         if (value.equals("ObjectMapper")) return OBJECT_MAPPER;
         if (value.equals("of")) return OF;
         if (value.equals("oneway")) return ONEWAY;
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/LocalDateClass.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/LocalDateClass.java
new file mode 100644
index 0000000..14feb5c
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/LocalDateClass.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class LocalDateClass {
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/OffsetDateTimeClass.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/OffsetDateTimeClass.java
new file mode 100644
index 0000000..6993590
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/OffsetDateTimeClass.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class OffsetDateTimeClass {
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/OffsetTimeClass.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/OffsetTimeClass.java
new file mode 100644
index 0000000..6048fbe
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/OffsetTimeClass.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class OffsetTimeClass {
+}
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 9df2c78..2570655 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
@@ -181,6 +181,7 @@ public class TopLevel {
     private UnionLeft left;
     private UnionLet let;
     private UnionList list;
+    private UnionLocalDate localDate;
     private UnionLocale locale;
     private UnionLock lock;
     private UnionLong topLevelLong;
@@ -215,6 +216,8 @@ public class TopLevel {
     private UnionObject object;
     private UnionObjectMapper objectMapper;
     private UnionOf of;
+    private UnionOffsetDateTime offsetDateTime;
+    private UnionOffsetTime offsetTime;
     private UnionOneway oneway;
     private UnionOpen open;
     private UnionOperator operator;
@@ -1233,6 +1236,11 @@ public class TopLevel {
     @JsonProperty("list")
     public void setList(UnionList value) { this.list = value; }
 
+    @JsonProperty("LocalDate")
+    public UnionLocalDate getLocalDate() { return localDate; }
+    @JsonProperty("LocalDate")
+    public void setLocalDate(UnionLocalDate value) { this.localDate = value; }
+
     @JsonProperty("Locale")
     public UnionLocale getLocale() { return locale; }
     @JsonProperty("Locale")
@@ -1403,6 +1411,16 @@ public class TopLevel {
     @JsonProperty("of")
     public void setOf(UnionOf value) { this.of = value; }
 
+    @JsonProperty("OffsetDateTime")
+    public UnionOffsetDateTime getOffsetDateTime() { return offsetDateTime; }
+    @JsonProperty("OffsetDateTime")
+    public void setOffsetDateTime(UnionOffsetDateTime value) { this.offsetDateTime = value; }
+
+    @JsonProperty("OffsetTime")
+    public UnionOffsetTime getOffsetTime() { return offsetTime; }
+    @JsonProperty("OffsetTime")
+    public void setOffsetTime(UnionOffsetTime value) { this.offsetTime = value; }
+
     @JsonProperty("oneway")
     public UnionOneway getOneway() { return oneway; }
     @JsonProperty("oneway")
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionLocalDate.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionLocalDate.java
new file mode 100644
index 0000000..45d3960
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionLocalDate.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 = UnionLocalDate.Deserializer.class)
+@JsonSerialize(using = UnionLocalDate.Serializer.class)
+public class UnionLocalDate {
+    public Double doubleValue;
+    public LocalDateClass localDateClassValue;
+
+    static class Deserializer extends JsonDeserializer<UnionLocalDate> {
+        @Override
+        public UnionLocalDate deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionLocalDate value = new UnionLocalDate();
+            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.localDateClassValue = jsonParser.readValueAs(LocalDateClass.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionLocalDate");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionLocalDate> {
+        @Override
+        public void serialize(UnionLocalDate obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.localDateClassValue != null) {
+                jsonGenerator.writeObject(obj.localDateClassValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionOffsetDateTime.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionOffsetDateTime.java
new file mode 100644
index 0000000..c47e556
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionOffsetDateTime.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 = UnionOffsetDateTime.Deserializer.class)
+@JsonSerialize(using = UnionOffsetDateTime.Serializer.class)
+public class UnionOffsetDateTime {
+    public Double doubleValue;
+    public OffsetDateTimeClass offsetDateTimeClassValue;
+
+    static class Deserializer extends JsonDeserializer<UnionOffsetDateTime> {
+        @Override
+        public UnionOffsetDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionOffsetDateTime value = new UnionOffsetDateTime();
+            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.offsetDateTimeClassValue = jsonParser.readValueAs(OffsetDateTimeClass.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionOffsetDateTime");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionOffsetDateTime> {
+        @Override
+        public void serialize(UnionOffsetDateTime obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.offsetDateTimeClassValue != null) {
+                jsonGenerator.writeObject(obj.offsetDateTimeClassValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionOffsetTime.java b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionOffsetTime.java
new file mode 100644
index 0000000..ece1e4c
--- /dev/null
+++ b/head/schema-java/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionOffsetTime.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 = UnionOffsetTime.Deserializer.class)
+@JsonSerialize(using = UnionOffsetTime.Serializer.class)
+public class UnionOffsetTime {
+    public Double doubleValue;
+    public OffsetTimeClass offsetTimeClassValue;
+
+    static class Deserializer extends JsonDeserializer<UnionOffsetTime> {
+        @Override
+        public UnionOffsetTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionOffsetTime value = new UnionOffsetTime();
+            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.offsetTimeClassValue = jsonParser.readValueAs(OffsetTimeClass.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionOffsetTime");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionOffsetTime> {
+        @Override
+        public void serialize(UnionOffsetTime obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.offsetTimeClassValue != null) {
+                jsonGenerator.writeObject(obj.offsetTimeClassValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
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 ea6259c..d5264a4 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, SERIALIZABLE, ENUM_SELF, SENDABLE, SERIALIZE, SERIAL_NAME, K_SERIALIZER, PRIMITIVE_KIND, SERIAL_DESCRIPTOR, SERIALIZER_PROVIDER, SET, SHORT, SIGNED, SIMPLE_MODULE, SIZEOF, STACKALLOC, STANDARDS, STATIC, STATIC_ASSERT, STATIC_CAST, STD_DESERIALIZER, STD_SERIALIZER, STRICTFP, STRING, STRUCT, SUBSCRIPT, SUPER, SWITCH, SYMBOL, SYNCHRONIZED, SYSTEM, TEMPLATE, THEN, THIS, THREAD_LOCAL, THROW, THROWS, TIME_ONLY, TIME_ONLY_CONVERTER, TIME_ZONE, TO_JSON, TOP_LEVEL, TO_STRING, TRANSIENT, TRUE, ENUM_TRUE, TRY, TYPE, ENUM_TYPE, TYPEALIAS, TYPEDEF, TYPEID, TYPENAME, TYPEOF, UINT, ULONG, UNCHECKED, UNDEFINED, UNION, USE_SERIALIZERS, UNOWNED, UNSAFE, UNSIGNED, USHORT, USING, UTF8_JSON_READER, UTF8_JSON_WRITER, UUID, VAR, VIRTUAL, VOID, VOLATILE, WCHAR_T, WEAK, WHERE, WHILE, WILL_SET, WITH, XOR, XOR_EQ, YES, YIELD, DUMMY;
+    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, LOCAL_DATE, 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, OFFSET_DATE_TIME, OFFSET_TIME, OBJECT_MAPPER, OF, ONEWAY, OPEN, OPERATOR, OPTIONAL, OR, OR_EQ, OUT, OVERRIDE, PACKAGE, PARAMS, PASS, PORT, POSTFIX, PRECEDENCE, PREFIX, PRINT, PRINTF, PRINT_MEMBERS, PRIVATE, PROTECTED, PROTOCOL, ENUM_PROTOCOL, PUBLIC, QUICKTYPE, RAISE, RANGE, READONLY, REF, REG_EXP, REGISTER, REINTERPRET_CAST, REPEAT, REQUIRE, REQUIRED, REQUIRES, RESTRICT, RETAIN, RETHROWS, RETURN, RIGHT, RUNTIME_TYPE, S, SBYTE, SEALED, SEL, SELECT, SELF, SERIALIZABLE, ENUM_SELF, SENDABLE, SERIALIZE, SERIAL_NAME, K_SERIALIZER, PRIMITIVE_KIND, SERIAL_DESCRIPTOR, SERIALIZER_PROVIDER, SET, SHORT, SIGNED, SIMPLE_MODULE, SIZEOF, STACKALLOC, STANDARDS, STATIC, STATIC_ASSERT, STATIC_CAST, STD_DESERIALIZER, STD_SERIALIZER, STRICTFP, STRING, STRUCT, SUBSCRIPT, SUPER, SWITCH, SYMBOL, SYNCHRONIZED, SYSTEM, TEMPLATE, THEN, THIS, THREAD_LOCAL, THROW, THROWS, TIME_ONLY, TIME_ONLY_CONVERTER, TIME_ZONE, TO_JSON, TOP_LEVEL, TO_STRING, TRANSIENT, TRUE, ENUM_TRUE, TRY, TYPE, ENUM_TYPE, TYPEALIAS, TYPEDEF, TYPEID, TYPENAME, TYPEOF, UINT, ULONG, UNCHECKED, UNDEFINED, UNION, USE_SERIALIZERS, UNOWNED, UNSAFE, UNSIGNED, USHORT, USING, UTF8_JSON_READER, UTF8_JSON_WRITER, UUID, VAR, VIRTUAL, VOID, VOLATILE, WCHAR_T, WEAK, WHERE, WHILE, WILL_SET, WITH, XOR, XOR_EQ, YES, YIELD, DUMMY;
 
     @JsonValue
     public String toValue() {
@@ -185,6 +185,7 @@ public enum Enum {
             case LEFT: return "left";
             case LET: return "let";
             case LIST: return "list";
+            case LOCAL_DATE: return "LocalDate";
             case LOCALE: return "Locale";
             case LOCK: return "lock";
             case LONG: return "long";
@@ -217,6 +218,8 @@ public enum Enum {
             case NULLPTR: return "nullptr";
             case NUMBER: return "number";
             case OBJECT: return "object";
+            case OFFSET_DATE_TIME: return "OffsetDateTime";
+            case OFFSET_TIME: return "OffsetTime";
             case OBJECT_MAPPER: return "ObjectMapper";
             case OF: return "of";
             case ONEWAY: return "oneway";
@@ -530,6 +533,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("LocalDate")) return LOCAL_DATE;
         if (value.equals("Locale")) return LOCALE;
         if (value.equals("lock")) return LOCK;
         if (value.equals("long")) return LONG;
@@ -562,6 +566,8 @@ public enum Enum {
         if (value.equals("nullptr")) return NULLPTR;
         if (value.equals("number")) return NUMBER;
         if (value.equals("object")) return OBJECT;
+        if (value.equals("OffsetDateTime")) return OFFSET_DATE_TIME;
+        if (value.equals("OffsetTime")) return OFFSET_TIME;
         if (value.equals("ObjectMapper")) return OBJECT_MAPPER;
         if (value.equals("of")) return OF;
         if (value.equals("oneway")) return ONEWAY;
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/LocalDate.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/LocalDate.java
new file mode 100644
index 0000000..4e0f2e6
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/LocalDate.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class LocalDate {
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/OffsetDateTime.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/OffsetDateTime.java
new file mode 100644
index 0000000..38cfa24
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/OffsetDateTime.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class OffsetDateTime {
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/OffsetTime.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/OffsetTime.java
new file mode 100644
index 0000000..2704ebe
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/OffsetTime.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class OffsetTime {
+}
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 9df2c78..2570655 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
@@ -181,6 +181,7 @@ public class TopLevel {
     private UnionLeft left;
     private UnionLet let;
     private UnionList list;
+    private UnionLocalDate localDate;
     private UnionLocale locale;
     private UnionLock lock;
     private UnionLong topLevelLong;
@@ -215,6 +216,8 @@ public class TopLevel {
     private UnionObject object;
     private UnionObjectMapper objectMapper;
     private UnionOf of;
+    private UnionOffsetDateTime offsetDateTime;
+    private UnionOffsetTime offsetTime;
     private UnionOneway oneway;
     private UnionOpen open;
     private UnionOperator operator;
@@ -1233,6 +1236,11 @@ public class TopLevel {
     @JsonProperty("list")
     public void setList(UnionList value) { this.list = value; }
 
+    @JsonProperty("LocalDate")
+    public UnionLocalDate getLocalDate() { return localDate; }
+    @JsonProperty("LocalDate")
+    public void setLocalDate(UnionLocalDate value) { this.localDate = value; }
+
     @JsonProperty("Locale")
     public UnionLocale getLocale() { return locale; }
     @JsonProperty("Locale")
@@ -1403,6 +1411,16 @@ public class TopLevel {
     @JsonProperty("of")
     public void setOf(UnionOf value) { this.of = value; }
 
+    @JsonProperty("OffsetDateTime")
+    public UnionOffsetDateTime getOffsetDateTime() { return offsetDateTime; }
+    @JsonProperty("OffsetDateTime")
+    public void setOffsetDateTime(UnionOffsetDateTime value) { this.offsetDateTime = value; }
+
+    @JsonProperty("OffsetTime")
+    public UnionOffsetTime getOffsetTime() { return offsetTime; }
+    @JsonProperty("OffsetTime")
+    public void setOffsetTime(UnionOffsetTime value) { this.offsetTime = value; }
+
     @JsonProperty("oneway")
     public UnionOneway getOneway() { return oneway; }
     @JsonProperty("oneway")
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionLocalDate.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionLocalDate.java
new file mode 100644
index 0000000..dbb5624
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionLocalDate.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 = UnionLocalDate.Deserializer.class)
+@JsonSerialize(using = UnionLocalDate.Serializer.class)
+public class UnionLocalDate {
+    public Double doubleValue;
+    public LocalDate localDateValue;
+
+    static class Deserializer extends JsonDeserializer<UnionLocalDate> {
+        @Override
+        public UnionLocalDate deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionLocalDate value = new UnionLocalDate();
+            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.localDateValue = jsonParser.readValueAs(LocalDate.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionLocalDate");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionLocalDate> {
+        @Override
+        public void serialize(UnionLocalDate obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.localDateValue != null) {
+                jsonGenerator.writeObject(obj.localDateValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionOffsetDateTime.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionOffsetDateTime.java
new file mode 100644
index 0000000..be47ae1
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionOffsetDateTime.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 = UnionOffsetDateTime.Deserializer.class)
+@JsonSerialize(using = UnionOffsetDateTime.Serializer.class)
+public class UnionOffsetDateTime {
+    public Double doubleValue;
+    public OffsetDateTime offsetDateTimeValue;
+
+    static class Deserializer extends JsonDeserializer<UnionOffsetDateTime> {
+        @Override
+        public UnionOffsetDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionOffsetDateTime value = new UnionOffsetDateTime();
+            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.offsetDateTimeValue = jsonParser.readValueAs(OffsetDateTime.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionOffsetDateTime");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionOffsetDateTime> {
+        @Override
+        public void serialize(UnionOffsetDateTime obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.offsetDateTimeValue != null) {
+                jsonGenerator.writeObject(obj.offsetDateTimeValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionOffsetTime.java b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionOffsetTime.java
new file mode 100644
index 0000000..3eba8f3
--- /dev/null
+++ b/head/schema-java-datetime-legacy/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionOffsetTime.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 = UnionOffsetTime.Deserializer.class)
+@JsonSerialize(using = UnionOffsetTime.Serializer.class)
+public class UnionOffsetTime {
+    public Double doubleValue;
+    public OffsetTime offsetTimeValue;
+
+    static class Deserializer extends JsonDeserializer<UnionOffsetTime> {
+        @Override
+        public UnionOffsetTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionOffsetTime value = new UnionOffsetTime();
+            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.offsetTimeValue = jsonParser.readValueAs(OffsetTime.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionOffsetTime");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionOffsetTime> {
+        @Override
+        public void serialize(UnionOffsetTime obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.offsetTimeValue != null) {
+                jsonGenerator.writeObject(obj.offsetTimeValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/date-time.schema/default/src/main/java/io/quicktype/LocalDateClassClass.java b/head/schema-java-lombok/test/inputs/schema/date-time.schema/default/src/main/java/io/quicktype/LocalDateClassClass.java
new file mode 100644
index 0000000..70d51eb
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/date-time.schema/default/src/main/java/io/quicktype/LocalDateClassClass.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class LocalDateClassClass {
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/date-time.schema/default/src/main/java/io/quicktype/OffsetDateTimeClassClass.java b/head/schema-java-lombok/test/inputs/schema/date-time.schema/default/src/main/java/io/quicktype/OffsetDateTimeClassClass.java
new file mode 100644
index 0000000..9eb79a1
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/date-time.schema/default/src/main/java/io/quicktype/OffsetDateTimeClassClass.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class OffsetDateTimeClassClass {
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/date-time.schema/default/src/main/java/io/quicktype/OffsetTimeClassClass.java b/head/schema-java-lombok/test/inputs/schema/date-time.schema/default/src/main/java/io/quicktype/OffsetTimeClassClass.java
new file mode 100644
index 0000000..87382b7
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/date-time.schema/default/src/main/java/io/quicktype/OffsetTimeClassClass.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class OffsetTimeClassClass {
+}
diff --git a/base/schema-java-lombok/test/inputs/schema/date-time.schema/default/src/main/java/io/quicktype/TopLevel.java b/head/schema-java-lombok/test/inputs/schema/date-time.schema/default/src/main/java/io/quicktype/TopLevel.java
index 238cf5f..8727ad5 100644
--- a/base/schema-java-lombok/test/inputs/schema/date-time.schema/default/src/main/java/io/quicktype/TopLevel.java
+++ b/head/schema-java-lombok/test/inputs/schema/date-time.schema/default/src/main/java/io/quicktype/TopLevel.java
@@ -10,6 +10,9 @@ public class TopLevel {
     private List<ComplexUnionArrayElement> complexUnionArray;
     private LocalDate date;
     private OffsetDateTime dateTime;
+    private LocalDateClassClass localDateClass;
+    private OffsetDateTimeClassClass offsetDateTimeClass;
+    private OffsetTimeClassClass offsetTimeClass;
     private OffsetTime time;
     private List<UnionArray> unionArray;
 
@@ -29,6 +32,21 @@ public class TopLevel {
     @JsonSetter(nulls = Nulls.FAIL)
     public void setDateTime(OffsetDateTime value) { this.dateTime = value; }
 
+    @JsonProperty("local-date-class")
+    public LocalDateClassClass getLocalDateClass() { return localDateClass; }
+    @JsonProperty("local-date-class")
+    public void setLocalDateClass(LocalDateClassClass value) { this.localDateClass = value; }
+
+    @JsonProperty("offset-date-time-class")
+    public OffsetDateTimeClassClass getOffsetDateTimeClass() { return offsetDateTimeClass; }
+    @JsonProperty("offset-date-time-class")
+    public void setOffsetDateTimeClass(OffsetDateTimeClassClass value) { this.offsetDateTimeClass = value; }
+
+    @JsonProperty("offset-time-class")
+    public OffsetTimeClassClass getOffsetTimeClass() { return offsetTimeClass; }
+    @JsonProperty("offset-time-class")
+    public void setOffsetTimeClass(OffsetTimeClassClass value) { this.offsetTimeClass = value; }
+
     @JsonProperty("time")
     public OffsetTime getTime() { return time; }
     @JsonProperty("time")
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 ea6259c..d5264a4 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, SERIALIZABLE, ENUM_SELF, SENDABLE, SERIALIZE, SERIAL_NAME, K_SERIALIZER, PRIMITIVE_KIND, SERIAL_DESCRIPTOR, SERIALIZER_PROVIDER, SET, SHORT, SIGNED, SIMPLE_MODULE, SIZEOF, STACKALLOC, STANDARDS, STATIC, STATIC_ASSERT, STATIC_CAST, STD_DESERIALIZER, STD_SERIALIZER, STRICTFP, STRING, STRUCT, SUBSCRIPT, SUPER, SWITCH, SYMBOL, SYNCHRONIZED, SYSTEM, TEMPLATE, THEN, THIS, THREAD_LOCAL, THROW, THROWS, TIME_ONLY, TIME_ONLY_CONVERTER, TIME_ZONE, TO_JSON, TOP_LEVEL, TO_STRING, TRANSIENT, TRUE, ENUM_TRUE, TRY, TYPE, ENUM_TYPE, TYPEALIAS, TYPEDEF, TYPEID, TYPENAME, TYPEOF, UINT, ULONG, UNCHECKED, UNDEFINED, UNION, USE_SERIALIZERS, UNOWNED, UNSAFE, UNSIGNED, USHORT, USING, UTF8_JSON_READER, UTF8_JSON_WRITER, UUID, VAR, VIRTUAL, VOID, VOLATILE, WCHAR_T, WEAK, WHERE, WHILE, WILL_SET, WITH, XOR, XOR_EQ, YES, YIELD, DUMMY;
+    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, LOCAL_DATE, 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, OFFSET_DATE_TIME, OFFSET_TIME, OBJECT_MAPPER, OF, ONEWAY, OPEN, OPERATOR, OPTIONAL, OR, OR_EQ, OUT, OVERRIDE, PACKAGE, PARAMS, PASS, PORT, POSTFIX, PRECEDENCE, PREFIX, PRINT, PRINTF, PRINT_MEMBERS, PRIVATE, PROTECTED, PROTOCOL, ENUM_PROTOCOL, PUBLIC, QUICKTYPE, RAISE, RANGE, READONLY, REF, REG_EXP, REGISTER, REINTERPRET_CAST, REPEAT, REQUIRE, REQUIRED, REQUIRES, RESTRICT, RETAIN, RETHROWS, RETURN, RIGHT, RUNTIME_TYPE, S, SBYTE, SEALED, SEL, SELECT, SELF, SERIALIZABLE, ENUM_SELF, SENDABLE, SERIALIZE, SERIAL_NAME, K_SERIALIZER, PRIMITIVE_KIND, SERIAL_DESCRIPTOR, SERIALIZER_PROVIDER, SET, SHORT, SIGNED, SIMPLE_MODULE, SIZEOF, STACKALLOC, STANDARDS, STATIC, STATIC_ASSERT, STATIC_CAST, STD_DESERIALIZER, STD_SERIALIZER, STRICTFP, STRING, STRUCT, SUBSCRIPT, SUPER, SWITCH, SYMBOL, SYNCHRONIZED, SYSTEM, TEMPLATE, THEN, THIS, THREAD_LOCAL, THROW, THROWS, TIME_ONLY, TIME_ONLY_CONVERTER, TIME_ZONE, TO_JSON, TOP_LEVEL, TO_STRING, TRANSIENT, TRUE, ENUM_TRUE, TRY, TYPE, ENUM_TYPE, TYPEALIAS, TYPEDEF, TYPEID, TYPENAME, TYPEOF, UINT, ULONG, UNCHECKED, UNDEFINED, UNION, USE_SERIALIZERS, UNOWNED, UNSAFE, UNSIGNED, USHORT, USING, UTF8_JSON_READER, UTF8_JSON_WRITER, UUID, VAR, VIRTUAL, VOID, VOLATILE, WCHAR_T, WEAK, WHERE, WHILE, WILL_SET, WITH, XOR, XOR_EQ, YES, YIELD, DUMMY;
 
     @JsonValue
     public String toValue() {
@@ -185,6 +185,7 @@ public enum Enum {
             case LEFT: return "left";
             case LET: return "let";
             case LIST: return "list";
+            case LOCAL_DATE: return "LocalDate";
             case LOCALE: return "Locale";
             case LOCK: return "lock";
             case LONG: return "long";
@@ -217,6 +218,8 @@ public enum Enum {
             case NULLPTR: return "nullptr";
             case NUMBER: return "number";
             case OBJECT: return "object";
+            case OFFSET_DATE_TIME: return "OffsetDateTime";
+            case OFFSET_TIME: return "OffsetTime";
             case OBJECT_MAPPER: return "ObjectMapper";
             case OF: return "of";
             case ONEWAY: return "oneway";
@@ -530,6 +533,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("LocalDate")) return LOCAL_DATE;
         if (value.equals("Locale")) return LOCALE;
         if (value.equals("lock")) return LOCK;
         if (value.equals("long")) return LONG;
@@ -562,6 +566,8 @@ public enum Enum {
         if (value.equals("nullptr")) return NULLPTR;
         if (value.equals("number")) return NUMBER;
         if (value.equals("object")) return OBJECT;
+        if (value.equals("OffsetDateTime")) return OFFSET_DATE_TIME;
+        if (value.equals("OffsetTime")) return OFFSET_TIME;
         if (value.equals("ObjectMapper")) return OBJECT_MAPPER;
         if (value.equals("of")) return OF;
         if (value.equals("oneway")) return ONEWAY;
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/LocalDateClass.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/LocalDateClass.java
new file mode 100644
index 0000000..14feb5c
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/LocalDateClass.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class LocalDateClass {
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/OffsetDateTimeClass.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/OffsetDateTimeClass.java
new file mode 100644
index 0000000..6993590
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/OffsetDateTimeClass.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class OffsetDateTimeClass {
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/OffsetTimeClass.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/OffsetTimeClass.java
new file mode 100644
index 0000000..6048fbe
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/OffsetTimeClass.java
@@ -0,0 +1,7 @@
+package io.quicktype;
+
+import com.fasterxml.jackson.annotation.*;
+
+@JsonAutoDetect(fieldVisibility=JsonAutoDetect.Visibility.NONE)
+public class OffsetTimeClass {
+}
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 9df2c78..2570655 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
@@ -181,6 +181,7 @@ public class TopLevel {
     private UnionLeft left;
     private UnionLet let;
     private UnionList list;
+    private UnionLocalDate localDate;
     private UnionLocale locale;
     private UnionLock lock;
     private UnionLong topLevelLong;
@@ -215,6 +216,8 @@ public class TopLevel {
     private UnionObject object;
     private UnionObjectMapper objectMapper;
     private UnionOf of;
+    private UnionOffsetDateTime offsetDateTime;
+    private UnionOffsetTime offsetTime;
     private UnionOneway oneway;
     private UnionOpen open;
     private UnionOperator operator;
@@ -1233,6 +1236,11 @@ public class TopLevel {
     @JsonProperty("list")
     public void setList(UnionList value) { this.list = value; }
 
+    @JsonProperty("LocalDate")
+    public UnionLocalDate getLocalDate() { return localDate; }
+    @JsonProperty("LocalDate")
+    public void setLocalDate(UnionLocalDate value) { this.localDate = value; }
+
     @JsonProperty("Locale")
     public UnionLocale getLocale() { return locale; }
     @JsonProperty("Locale")
@@ -1403,6 +1411,16 @@ public class TopLevel {
     @JsonProperty("of")
     public void setOf(UnionOf value) { this.of = value; }
 
+    @JsonProperty("OffsetDateTime")
+    public UnionOffsetDateTime getOffsetDateTime() { return offsetDateTime; }
+    @JsonProperty("OffsetDateTime")
+    public void setOffsetDateTime(UnionOffsetDateTime value) { this.offsetDateTime = value; }
+
+    @JsonProperty("OffsetTime")
+    public UnionOffsetTime getOffsetTime() { return offsetTime; }
+    @JsonProperty("OffsetTime")
+    public void setOffsetTime(UnionOffsetTime value) { this.offsetTime = value; }
+
     @JsonProperty("oneway")
     public UnionOneway getOneway() { return oneway; }
     @JsonProperty("oneway")
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionLocalDate.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionLocalDate.java
new file mode 100644
index 0000000..45d3960
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionLocalDate.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 = UnionLocalDate.Deserializer.class)
+@JsonSerialize(using = UnionLocalDate.Serializer.class)
+public class UnionLocalDate {
+    public Double doubleValue;
+    public LocalDateClass localDateClassValue;
+
+    static class Deserializer extends JsonDeserializer<UnionLocalDate> {
+        @Override
+        public UnionLocalDate deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionLocalDate value = new UnionLocalDate();
+            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.localDateClassValue = jsonParser.readValueAs(LocalDateClass.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionLocalDate");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionLocalDate> {
+        @Override
+        public void serialize(UnionLocalDate obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.localDateClassValue != null) {
+                jsonGenerator.writeObject(obj.localDateClassValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionOffsetDateTime.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionOffsetDateTime.java
new file mode 100644
index 0000000..c47e556
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionOffsetDateTime.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 = UnionOffsetDateTime.Deserializer.class)
+@JsonSerialize(using = UnionOffsetDateTime.Serializer.class)
+public class UnionOffsetDateTime {
+    public Double doubleValue;
+    public OffsetDateTimeClass offsetDateTimeClassValue;
+
+    static class Deserializer extends JsonDeserializer<UnionOffsetDateTime> {
+        @Override
+        public UnionOffsetDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionOffsetDateTime value = new UnionOffsetDateTime();
+            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.offsetDateTimeClassValue = jsonParser.readValueAs(OffsetDateTimeClass.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionOffsetDateTime");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionOffsetDateTime> {
+        @Override
+        public void serialize(UnionOffsetDateTime obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.offsetDateTimeClassValue != null) {
+                jsonGenerator.writeObject(obj.offsetDateTimeClassValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionOffsetTime.java b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionOffsetTime.java
new file mode 100644
index 0000000..ece1e4c
--- /dev/null
+++ b/head/schema-java-lombok/test/inputs/schema/keyword-unions.schema/default/src/main/java/io/quicktype/UnionOffsetTime.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 = UnionOffsetTime.Deserializer.class)
+@JsonSerialize(using = UnionOffsetTime.Serializer.class)
+public class UnionOffsetTime {
+    public Double doubleValue;
+    public OffsetTimeClass offsetTimeClassValue;
+
+    static class Deserializer extends JsonDeserializer<UnionOffsetTime> {
+        @Override
+        public UnionOffsetTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
+            UnionOffsetTime value = new UnionOffsetTime();
+            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.offsetTimeClassValue = jsonParser.readValueAs(OffsetTimeClass.class);
+                    break;
+                default: throw new IOException("Cannot deserialize UnionOffsetTime");
+            }
+            return value;
+        }
+    }
+
+    static class Serializer extends JsonSerializer<UnionOffsetTime> {
+        @Override
+        public void serialize(UnionOffsetTime obj, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
+            if (obj.doubleValue != null) {
+                jsonGenerator.writeObject(obj.doubleValue);
+                return;
+            }
+            if (obj.offsetTimeClassValue != null) {
+                jsonGenerator.writeObject(obj.offsetTimeClassValue);
+                return;
+            }
+            jsonGenerator.writeNull();
+        }
+    }
+}
diff --git a/base/schema-javascript/test/inputs/schema/date-time.schema/default/TopLevel.js b/head/schema-javascript/test/inputs/schema/date-time.schema/default/TopLevel.js
index e3c81ff..b871237 100644
--- a/base/schema-javascript/test/inputs/schema/date-time.schema/default/TopLevel.js
+++ b/head/schema-javascript/test/inputs/schema/date-time.schema/default/TopLevel.js
@@ -196,9 +196,18 @@ const typeMap = {
         { json: "complex-union-array", js: "complex-union-array", typ: a(u(Date, r("ComplexUnionArrayEnum"), i(0))) },
         { json: "date", js: "date", typ: Date },
         { json: "date-time", js: "date-time", typ: Date },
+        { json: "local-date-class", js: "local-date-class", typ: u(undefined, r("LocalDate")) },
+        { json: "offset-date-time-class", js: "offset-date-time-class", typ: u(undefined, r("OffsetDateTime")) },
+        { json: "offset-time-class", js: "offset-time-class", typ: u(undefined, r("OffsetTime")) },
         { json: "time", js: "time", typ: "" },
         { json: "union-array", js: "union-array", typ: a("") },
     ], false),
+    "LocalDate": o([
+    ], false),
+    "OffsetDateTime": o([
+    ], false),
+    "OffsetTime": o([
+    ], false),
     "ComplexUnionArrayEnum": [
         "foo",
         "bar",
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 0ca689e..c168535 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
@@ -372,6 +372,7 @@ const typeMap = {
         "left",
         "let",
         "list",
+        "LocalDate",
         "Locale",
         "lock",
         "long",
@@ -404,6 +405,8 @@ const typeMap = {
         "nullptr",
         "number",
         "object",
+        "OffsetDateTime",
+        "OffsetTime",
         "ObjectMapper",
         "of",
         "oneway",
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 70a8b52..f38f2d0 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
@@ -371,6 +371,7 @@ const typeMap = {
         { json: "left", js: "left", typ: u(undefined, u(r("Left"), 3.14)) },
         { json: "let", js: "let", typ: u(undefined, u(r("Let"), 3.14)) },
         { json: "list", js: "list", typ: u(undefined, u(r("List"), 3.14)) },
+        { json: "LocalDate", js: "LocalDate", typ: u(undefined, u(r("LocalDate"), 3.14)) },
         { 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)) },
@@ -405,6 +406,8 @@ const typeMap = {
         { 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: "of", js: "of", typ: u(undefined, u(r("Of"), 3.14)) },
+        { json: "OffsetDateTime", js: "OffsetDateTime", typ: u(undefined, u(r("OffsetDateTime"), 3.14)) },
+        { json: "OffsetTime", js: "OffsetTime", typ: u(undefined, u(r("OffsetTime"), 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)) },
         { json: "operator", js: "operator", typ: u(undefined, u(r("Operator"), 3.14)) },
@@ -605,6 +608,8 @@ const typeMap = {
     ], false),
     "KSerializer": o([
     ], false),
+    "LocalDate": o([
+    ], false),
     "Locale": o([
     ], false),
     "MapEntry": o([
@@ -623,6 +628,10 @@ const typeMap = {
     ], false),
     "ObjectMapper": o([
     ], false),
+    "OffsetDateTime": o([
+    ], false),
+    "OffsetTime": o([
+    ], false),
     "PrimitiveKind": o([
     ], false),
     "Protocol": o([
diff --git a/base/schema-javascript-prop-types/test/inputs/schema/date-time.schema/default/toplevel.js b/head/schema-javascript-prop-types/test/inputs/schema/date-time.schema/default/toplevel.js
index dc1ae7b..ea49939 100644
--- a/base/schema-javascript-prop-types/test/inputs/schema/date-time.schema/default/toplevel.js
+++ b/head/schema-javascript-prop-types/test/inputs/schema/date-time.schema/default/toplevel.js
@@ -14,11 +14,23 @@ import PropTypes from "prop-types";
 const Integer = (props, name) => props[name] == null || Number.isInteger(props[name]) ? null : new Error("Expected integer");
 
 let _TopLevel;
+let _LocalDate;
+let _OffsetDateTime;
+let _OffsetTime;
 const _ComplexUnionArrayEnum = PropTypes.oneOf(['foo', 'bar']);
+_LocalDate = PropTypes.shape({
+});
+_OffsetDateTime = PropTypes.shape({
+});
+_OffsetTime = PropTypes.shape({
+});
 _TopLevel = PropTypes.shape({
     "complex-union-array": PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time"), _ComplexUnionArrayEnum, Integer]))]).isRequired,
     "date": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
     "date-time": PropTypes.oneOfType([(props, name) => props[name] == null || typeof props[name] === "string" && !Number.isNaN(Date.parse(props[name])) ? null : new Error("Expected date-time")]).isRequired,
+    "local-date-class": PropTypes.oneOfType([_LocalDate, PropTypes.oneOf([null])]),
+    "offset-date-time-class": PropTypes.oneOfType([_OffsetDateTime, PropTypes.oneOf([null])]),
+    "offset-time-class": PropTypes.oneOfType([_OffsetTime, PropTypes.oneOf([null])]),
     "time": PropTypes.oneOfType([PropTypes.string]).isRequired,
     "union-array": PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string)]).isRequired,
 });
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 867a843..4118603 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', 'Serializable', 'self', 'Sendable', 'serialize', 'SerialName', 'KSerializer', 'PrimitiveKind', 'SerialDescriptor', 'SerializerProvider', 'set', 'short', 'signed', 'SimpleModule', 'sizeof', 'stackalloc', 'Standards', 'static', 'static_assert', 'static_cast', 'StdDeserializer', 'StdSerializer', 'strictfp', 'string', 'struct', 'subscript', 'super', 'switch', 'symbol', 'synchronized', 'system', 'template', 'then', 'this', 'thread_local', 'throw', 'throws', 'TimeOnly', 'TimeOnlyConverter', 'TimeZone', 'to_json', 'top_level', 'toString', 'transient', 'True', 'true', 'try', 'Type', 'type', 'typealias', 'typedef', 'typeid', 'typename', 'typeof', 'uint', 'ulong', 'unchecked', 'undefined', 'union', 'UseSerializers', 'unowned', 'unsafe', 'unsigned', 'ushort', 'using', 'Utf8JsonReader', 'Utf8JsonWriter', 'UUID', 'var', 'virtual', 'void', 'volatile', 'wchar_t', 'weak', 'where', 'while', 'willSet', 'with', 'xor', 'xor_eq', 'YES', 'yield', 'dummy']);
+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', 'LocalDate', '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', 'OffsetDateTime', 'OffsetTime', 'ObjectMapper', 'of', 'oneway', 'open', 'operator', 'optional', 'or', 'or_eq', 'out', 'override', 'package', 'params', 'pass', 'port', 'postfix', 'precedence', 'prefix', 'print', 'printf', 'printMembers', 'private', 'protected', 'Protocol', 'protocol', 'public', 'quicktype', 'raise', 'range', 'readonly', 'ref', 'RegExp', 'register', 'reinterpret_cast', 'repeat', 'require', 'required', 'requires', 'restrict', 'retain', 'rethrows', 'return', 'right', 'runtimeType', 's', 'sbyte', 'sealed', 'SEL', 'select', 'Self', 'Serializable', 'self', 'Sendable', 'serialize', 'SerialName', 'KSerializer', 'PrimitiveKind', 'SerialDescriptor', 'SerializerProvider', 'set', 'short', 'signed', 'SimpleModule', 'sizeof', 'stackalloc', 'Standards', 'static', 'static_assert', 'static_cast', 'StdDeserializer', 'StdSerializer', 'strictfp', 'string', 'struct', 'subscript', 'super', 'switch', 'symbol', 'synchronized', 'system', 'template', 'then', 'this', 'thread_local', 'throw', 'throws', 'TimeOnly', 'TimeOnlyConverter', 'TimeZone', 'to_json', 'top_level', 'toString', 'transient', 'True', 'true', 'try', 'Type', 'type', 'typealias', 'typedef', 'typeid', 'typename', 'typeof', 'uint', 'ulong', 'unchecked', 'undefined', 'union', 'UseSerializers', 'unowned', 'unsafe', 'unsigned', 'ushort', 'using', 'Utf8JsonReader', 'Utf8JsonWriter', 'UUID', 'var', 'virtual', 'void', 'volatile', 'wchar_t', 'weak', 'where', 'while', 'willSet', 'with', 'xor', 'xor_eq', 'YES', 'yield', 'dummy']);
 _TopLevel = PropTypes.shape({
     "enum": PropTypes.oneOfType([_Enum, PropTypes.oneOf([null])]),
 });
diff --git a/base/schema-javascript-prop-types/test/inputs/schema/keyword-unions.schema/default/toplevel.js b/head/schema-javascript-prop-types/test/inputs/schema/keyword-unions.schema/default/toplevel.js
index 3bc9c0f..db2788b 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
@@ -49,6 +49,7 @@ let _JSONParser;
 let _JSONReader;
 let _JSONTokenType;
 let _KSerializer;
+let _LocalDate;
 let _Locale;
 let _MapEntry;
 let _No;
@@ -58,6 +59,8 @@ let _NSString;
 let _Null;
 let _None;
 let _ObjectMapper;
+let _OffsetDateTime;
+let _OffsetTime;
 let _PrimitiveKind;
 let _Protocol;
 let _RegExp;
@@ -423,6 +426,8 @@ _JSONTokenType = PropTypes.shape({
 });
 _KSerializer = PropTypes.shape({
 });
+_LocalDate = PropTypes.shape({
+});
 _Locale = PropTypes.shape({
 });
 _MapEntry = PropTypes.shape({
@@ -441,6 +446,10 @@ _None = PropTypes.shape({
 });
 _ObjectMapper = PropTypes.shape({
 });
+_OffsetDateTime = PropTypes.shape({
+});
+_OffsetTime = PropTypes.shape({
+});
 _PrimitiveKind = PropTypes.shape({
 });
 _Protocol = PropTypes.shape({
@@ -1206,6 +1215,7 @@ _TopLevel = PropTypes.shape({
     "left": PropTypes.oneOfType([_Left, PropTypes.number, PropTypes.oneOf([null])]),
     "let": PropTypes.oneOfType([_Let, PropTypes.number, PropTypes.oneOf([null])]),
     "list": PropTypes.oneOfType([_List, PropTypes.number, PropTypes.oneOf([null])]),
+    "LocalDate": PropTypes.oneOfType([_LocalDate, PropTypes.number, PropTypes.oneOf([null])]),
     "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])]),
@@ -1240,6 +1250,8 @@ _TopLevel = PropTypes.shape({
     "object": PropTypes.oneOfType([_Object, PropTypes.number, PropTypes.oneOf([null])]),
     "ObjectMapper": PropTypes.oneOfType([_ObjectMapper, PropTypes.number, PropTypes.oneOf([null])]),
     "of": PropTypes.oneOfType([_Of, PropTypes.number, PropTypes.oneOf([null])]),
+    "OffsetDateTime": PropTypes.oneOfType([_OffsetDateTime, PropTypes.number, PropTypes.oneOf([null])]),
+    "OffsetTime": PropTypes.oneOfType([_OffsetTime, PropTypes.number, PropTypes.oneOf([null])]),
     "oneway": PropTypes.oneOfType([_Oneway, PropTypes.number, PropTypes.oneOf([null])]),
     "open": PropTypes.oneOfType([_Open, PropTypes.number, PropTypes.oneOf([null])]),
     "operator": PropTypes.oneOfType([_Operator, PropTypes.number, PropTypes.oneOf([null])]),
diff --git a/base/schema-kotlin/test/inputs/schema/date-time.schema/default/TopLevel.kt b/head/schema-kotlin/test/inputs/schema/date-time.schema/default/TopLevel.kt
index fc3404d..85aca01 100644
--- a/base/schema-kotlin/test/inputs/schema/date-time.schema/default/TopLevel.kt
+++ b/head/schema-kotlin/test/inputs/schema/date-time.schema/default/TopLevel.kt
@@ -22,6 +22,7 @@ private val klaxon = Klaxon()
     .convert(OffsetDateTime::class,           { OffsetDateTime.parse(it.string!!) },            { "\"${java.time.format.DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(it)}\"" })
     .convert(LocalDate::class,                { LocalDate.parse(it.string!!) },                 { "\"${java.time.format.DateTimeFormatter.ISO_LOCAL_DATE.format(it)}\"" })
     .convert(OffsetTime::class,               { OffsetTime.parse(it.string!!) },                { "\"${java.time.format.DateTimeFormatter.ISO_OFFSET_TIME.format(it)}\"" })
+    .convert(JsonObject::class,               { it.obj!! },                                     { it.toJsonString() })
     .convert(ComplexUnionArrayEnum::class,    { ComplexUnionArrayEnum.fromValue(it.string!!) }, { Klaxon().toJsonString(it.value) })
     .convert(ComplexUnionArrayElement::class, { ComplexUnionArrayElement.fromJson(it) },        { it.toJson() }, true)
     .convert(UnionArray::class,               { UnionArray.fromJson(it) },                      { it.toJson() }, true)
@@ -35,6 +36,15 @@ data class TopLevel (
     @Json(name = "date-time")
     val dateTime: OffsetDateTime,
 
+    @Json(name = "local-date-class")
+    val localDateClass: LocalDateClassClass? = null,
+
+    @Json(name = "offset-date-time-class")
+    val offsetDateTimeClass: OffsetDateTimeClassClass? = null,
+
+    @Json(name = "offset-time-class")
+    val offsetTimeClass: OffsetTimeClassClass? = null,
+
     val time: OffsetTime,
 
     @Json(name = "union-array")
@@ -80,6 +90,12 @@ enum class ComplexUnionArrayEnum(val value: String) {
     }
 }
 
+typealias LocalDateClassClass = JsonObject
+
+typealias OffsetDateTimeClassClass = JsonObject
+
+typealias OffsetTimeClassClass = JsonObject
+
 sealed class UnionArray {
     class DateTimeValue(val value: OffsetDateTime) : UnionArray()
     class DateValue(val value: LocalDate)          : UnionArray()
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 13c5209..bd9d58a 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
@@ -204,6 +204,7 @@ enum class EnumEnum(val value: String) {
     Left("left"),
     Let("let"),
     EnumList("list"),
+    LocalDate("LocalDate"),
     Locale("Locale"),
     Lock("lock"),
     EnumLong("long"),
@@ -236,6 +237,8 @@ enum class EnumEnum(val value: String) {
     Nullptr("nullptr"),
     Number("number"),
     Object("object"),
+    OffsetDateTime("OffsetDateTime"),
+    OffsetTime("OffsetTime"),
     ObjectMapper("ObjectMapper"),
     Of("of"),
     Oneway("oneway"),
@@ -546,6 +549,7 @@ enum class EnumEnum(val value: String) {
             "left"                       -> Left
             "let"                        -> Let
             "list"                       -> EnumList
+            "LocalDate"                  -> LocalDate
             "Locale"                     -> Locale
             "lock"                       -> Lock
             "long"                       -> EnumLong
@@ -578,6 +582,8 @@ enum class EnumEnum(val value: String) {
             "nullptr"                    -> Nullptr
             "number"                     -> Number
             "object"                     -> Object
+            "OffsetDateTime"             -> OffsetDateTime
+            "OffsetTime"                 -> OffsetTime
             "ObjectMapper"               -> ObjectMapper
             "of"                         -> Of
             "oneway"                     -> Oneway
diff --git a/base/schema-kotlin-jackson/test/inputs/schema/date-time.schema/default/TopLevel.kt b/head/schema-kotlin-jackson/test/inputs/schema/date-time.schema/default/TopLevel.kt
index 19163f5..12a734e 100644
--- a/base/schema-kotlin-jackson/test/inputs/schema/date-time.schema/default/TopLevel.kt
+++ b/head/schema-kotlin-jackson/test/inputs/schema/date-time.schema/default/TopLevel.kt
@@ -50,6 +50,15 @@ data class TopLevel (
     @get:JsonProperty("date-time", required=true)@field:JsonProperty("date-time", required=true)
     val dateTime: OffsetDateTime,
 
+    @get:JsonProperty("local-date-class")@field:JsonProperty("local-date-class")
+    val localDateClass: LocalDateClassClass? = null,
+
+    @get:JsonProperty("offset-date-time-class")@field:JsonProperty("offset-date-time-class")
+    val offsetDateTimeClass: OffsetDateTimeClassClass? = null,
+
+    @get:JsonProperty("offset-time-class")@field:JsonProperty("offset-time-class")
+    val offsetTimeClass: OffsetTimeClassClass? = null,
+
     @get:JsonProperty(required=true)@field:JsonProperty(required=true)
     val time: OffsetTime,
 
@@ -96,6 +105,12 @@ enum class ComplexUnionArrayEnum(val value: String) {
     }
 }
 
+typealias LocalDateClassClass = ObjectNode
+
+typealias OffsetDateTimeClassClass = ObjectNode
+
+typealias OffsetTimeClassClass = ObjectNode
+
 sealed class UnionArray {
     class DateTimeValue(val value: OffsetDateTime) : UnionArray()
     class DateValue(val value: LocalDate)          : UnionArray()
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 00e0de1..e9f2420 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
@@ -217,6 +217,7 @@ enum class EnumEnum(val value: String) {
     Left("left"),
     Let("let"),
     EnumList("list"),
+    LocalDate("LocalDate"),
     Locale("Locale"),
     Lock("lock"),
     EnumLong("long"),
@@ -249,6 +250,8 @@ enum class EnumEnum(val value: String) {
     Nullptr("nullptr"),
     Number("number"),
     Object("object"),
+    OffsetDateTime("OffsetDateTime"),
+    OffsetTime("OffsetTime"),
     EnumObjectMapper("ObjectMapper"),
     Of("of"),
     Oneway("oneway"),
@@ -559,6 +562,7 @@ enum class EnumEnum(val value: String) {
             "left"                       -> Left
             "let"                        -> Let
             "list"                       -> EnumList
+            "LocalDate"                  -> LocalDate
             "Locale"                     -> Locale
             "lock"                       -> Lock
             "long"                       -> EnumLong
@@ -591,6 +595,8 @@ enum class EnumEnum(val value: String) {
             "nullptr"                    -> Nullptr
             "number"                     -> Number
             "object"                     -> Object
+            "OffsetDateTime"             -> OffsetDateTime
+            "OffsetTime"                 -> OffsetTime
             "ObjectMapper"               -> EnumObjectMapper
             "of"                         -> Of
             "oneway"                     -> Oneway
diff --git a/base/schema-kotlinx/test/inputs/schema/date-time.schema/default/TopLevel.kt b/head/schema-kotlinx/test/inputs/schema/date-time.schema/default/TopLevel.kt
index 01df8c2..09b6877 100644
--- a/base/schema-kotlinx/test/inputs/schema/date-time.schema/default/TopLevel.kt
+++ b/head/schema-kotlinx/test/inputs/schema/date-time.schema/default/TopLevel.kt
@@ -26,6 +26,15 @@ data class TopLevel (
     @SerialName("date-time")
     val dateTime: OffsetDateTime,
 
+    @SerialName("local-date-class")
+    val localDateClass: LocalDateClassClass? = null,
+
+    @SerialName("offset-date-time-class")
+    val offsetDateTimeClass: OffsetDateTimeClassClass? = null,
+
+    @SerialName("offset-time-class")
+    val offsetTimeClass: OffsetTimeClassClass? = null,
+
     val time: OffsetTime,
 
     @SerialName("union-array")
@@ -40,6 +49,15 @@ enum class ComplexUnionArrayEnum(val value: String) {
     @SerialName("bar") Bar("bar");
 }
 
+@Serializable
+class LocalDateClassClass()
+
+@Serializable
+class OffsetDateTimeClassClass()
+
+@Serializable
+class OffsetTimeClassClass()
+
 typealias UnionArray = JsonElement
 
 object OffsetDateTimeSerializer : KSerializer<OffsetDateTime> {
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 01acef3..07e605e 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
@@ -193,6 +193,7 @@ enum class EnumEnum(val value: String) {
     @SerialName("left") Left("left"),
     @SerialName("let") Let("let"),
     @SerialName("list") EnumList("list"),
+    @SerialName("LocalDate") LocalDate("LocalDate"),
     @SerialName("Locale") Locale("Locale"),
     @SerialName("lock") Lock("lock"),
     @SerialName("long") EnumLong("long"),
@@ -225,6 +226,8 @@ enum class EnumEnum(val value: String) {
     @SerialName("nullptr") Nullptr("nullptr"),
     @SerialName("number") Number("number"),
     @SerialName("object") Object("object"),
+    @SerialName("OffsetDateTime") OffsetDateTime("OffsetDateTime"),
+    @SerialName("OffsetTime") OffsetTime("OffsetTime"),
     @SerialName("ObjectMapper") ObjectMapper("ObjectMapper"),
     @SerialName("of") Of("of"),
     @SerialName("oneway") Oneway("oneway"),
diff --git a/base/schema-objective-c/test/inputs/schema/date-time.schema/default/QTTopLevel.h b/head/schema-objective-c/test/inputs/schema/date-time.schema/default/QTTopLevel.h
index 46b0788..6631b59 100644
--- a/base/schema-objective-c/test/inputs/schema/date-time.schema/default/QTTopLevel.h
+++ b/head/schema-objective-c/test/inputs/schema/date-time.schema/default/QTTopLevel.h
@@ -7,6 +7,9 @@
 
 @class QTTopLevel;
 @class QTComplexUnionArrayEnum;
+@class QTLocalDate;
+@class QTOffsetDateTime;
+@class QTOffsetTime;
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -29,11 +32,14 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 #pragma mark - Object interfaces
 
 @interface QTTopLevel : NSObject
-@property (nonatomic, copy) NSArray<id> *complexUnionArray;
-@property (nonatomic, copy) NSString *date;
-@property (nonatomic, copy) NSString *dateTime;
-@property (nonatomic, copy) NSString *time;
-@property (nonatomic, copy) NSArray<NSString *> *unionArray;
+@property (nonatomic, copy)             NSArray<id> *complexUnionArray;
+@property (nonatomic, copy)             NSString *date;
+@property (nonatomic, copy)             NSString *dateTime;
+@property (nonatomic, nullable, strong) QTLocalDate *localDateClass;
+@property (nonatomic, nullable, strong) QTOffsetDateTime *offsetDateTimeClass;
+@property (nonatomic, nullable, strong) QTOffsetTime *offsetTimeClass;
+@property (nonatomic, copy)             NSString *time;
+@property (nonatomic, copy)             NSArray<NSString *> *unionArray;
 
 + (_Nullable instancetype)fromJSON:(NSString *)json encoding:(NSStringEncoding)encoding error:(NSError *_Nullable *)error;
 + (_Nullable instancetype)fromData:(NSData *)data error:(NSError *_Nullable *)error;
@@ -41,4 +47,13 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 - (NSData *_Nullable)toData:(NSError *_Nullable *)error;
 @end
 
+@interface QTLocalDate : NSObject
+@end
+
+@interface QTOffsetDateTime : NSObject
+@end
+
+@interface QTOffsetTime : NSObject
+@end
+
 NS_ASSUME_NONNULL_END
diff --git a/base/schema-objective-c/test/inputs/schema/date-time.schema/default/QTTopLevel.m b/head/schema-objective-c/test/inputs/schema/date-time.schema/default/QTTopLevel.m
index d7eebe6..5805028 100644
--- a/base/schema-objective-c/test/inputs/schema/date-time.schema/default/QTTopLevel.m
+++ b/head/schema-objective-c/test/inputs/schema/date-time.schema/default/QTTopLevel.m
@@ -13,6 +13,21 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTLocalDate (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
+@interface QTOffsetDateTime (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
+@interface QTOffsetTime (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @implementation QTComplexUnionArrayEnum
 + (NSDictionary<NSString *, QTComplexUnionArrayEnum *> *)values
 {
@@ -96,6 +111,9 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"complex-union-array": @"complexUnionArray",
         @"date": @"date",
         @"date-time": @"dateTime",
+        @"local-date-class": @"localDateClass",
+        @"offset-date-time-class": @"offsetDateTimeClass",
+        @"offset-time-class": @"offsetTimeClass",
         @"time": @"time",
         @"union-array": @"unionArray",
     };
@@ -126,6 +144,12 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         if (![dict[@"time"] isKindOfClass:NSString.class]) return nil;
         if (![dict[@"union-array"] isKindOfClass:NSArray.class]) return nil;
         [self setValuesForKeysWithDictionary:dict];
+        _localDateClass = [QTLocalDate fromJSONDictionary:(id)_localDateClass];
+        if (!_localDateClass && dict[@"local-date-class"] && ![dict[@"local-date-class"] isKindOfClass:NSNull.class]) return nil;
+        _offsetDateTimeClass = [QTOffsetDateTime fromJSONDictionary:(id)_offsetDateTimeClass];
+        if (!_offsetDateTimeClass && dict[@"offset-date-time-class"] && ![dict[@"offset-date-time-class"] isKindOfClass:NSNull.class]) return nil;
+        _offsetTimeClass = [QTOffsetTime fromJSONDictionary:(id)_offsetTimeClass];
+        if (!_offsetTimeClass && dict[@"offset-time-class"] && ![dict[@"offset-time-class"] isKindOfClass:NSNull.class]) return nil;
     }
     return self;
 }
@@ -154,6 +178,12 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         }
     }
 
+    [dict addEntriesFromDictionary:@{
+        @"local-date-class": NSNullify([_localDateClass isKindOfClass:NSNull.class] ? nil : [_localDateClass JSONDictionary]),
+        @"offset-date-time-class": NSNullify([_offsetDateTimeClass isKindOfClass:NSNull.class] ? nil : [_offsetDateTimeClass JSONDictionary]),
+        @"offset-time-class": NSNullify([_offsetTimeClass isKindOfClass:NSNull.class] ? nil : [_offsetTimeClass JSONDictionary]),
+    }];
+
     return dict;
 }
 
@@ -168,4 +198,121 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTLocalDate
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTLocalDate 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 = QTLocalDate.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTLocalDate.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTLocalDate.properties.allValues];
+}
+@end
+
+@implementation QTOffsetDateTime
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTOffsetDateTime 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 = QTOffsetDateTime.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTOffsetDateTime.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTOffsetDateTime.properties.allValues];
+}
+@end
+
+@implementation QTOffsetTime
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTOffsetTime 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 = QTOffsetTime.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTOffsetTime.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTOffsetTime.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 a54a0b4..561fd52 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
@@ -191,6 +191,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)left;
 + (QTEnum *)let;
 + (QTEnum *)list;
++ (QTEnum *)localDate;
 + (QTEnum *)locale;
 + (QTEnum *)lock;
 + (QTEnum *)enumLong;
@@ -223,6 +224,8 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)nullptr;
 + (QTEnum *)number;
 + (QTEnum *)object;
++ (QTEnum *)offsetDateTime;
++ (QTEnum *)offsetTime;
 + (QTEnum *)objectMapper;
 + (QTEnum *)of;
 + (QTEnum *)oneway;
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 dbb558e..2091838 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
@@ -194,6 +194,7 @@ NS_ASSUME_NONNULL_BEGIN
         @"left": [[QTEnum alloc] initWithValue:@"left"],
         @"let": [[QTEnum alloc] initWithValue:@"let"],
         @"list": [[QTEnum alloc] initWithValue:@"list"],
+        @"LocalDate": [[QTEnum alloc] initWithValue:@"LocalDate"],
         @"Locale": [[QTEnum alloc] initWithValue:@"Locale"],
         @"lock": [[QTEnum alloc] initWithValue:@"lock"],
         @"long": [[QTEnum alloc] initWithValue:@"long"],
@@ -226,6 +227,8 @@ NS_ASSUME_NONNULL_BEGIN
         @"nullptr": [[QTEnum alloc] initWithValue:@"nullptr"],
         @"number": [[QTEnum alloc] initWithValue:@"number"],
         @"object": [[QTEnum alloc] initWithValue:@"object"],
+        @"OffsetDateTime": [[QTEnum alloc] initWithValue:@"OffsetDateTime"],
+        @"OffsetTime": [[QTEnum alloc] initWithValue:@"OffsetTime"],
         @"ObjectMapper": [[QTEnum alloc] initWithValue:@"ObjectMapper"],
         @"of": [[QTEnum alloc] initWithValue:@"of"],
         @"oneway": [[QTEnum alloc] initWithValue:@"oneway"],
@@ -536,6 +539,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)left { return QTEnum.values[@"left"]; }
 + (QTEnum *)let { return QTEnum.values[@"let"]; }
 + (QTEnum *)list { return QTEnum.values[@"list"]; }
++ (QTEnum *)localDate { return QTEnum.values[@"LocalDate"]; }
 + (QTEnum *)locale { return QTEnum.values[@"Locale"]; }
 + (QTEnum *)lock { return QTEnum.values[@"lock"]; }
 + (QTEnum *)enumLong { return QTEnum.values[@"long"]; }
@@ -568,6 +572,8 @@ NS_ASSUME_NONNULL_BEGIN
 + (QTEnum *)nullptr { return QTEnum.values[@"nullptr"]; }
 + (QTEnum *)number { return QTEnum.values[@"number"]; }
 + (QTEnum *)object { return QTEnum.values[@"object"]; }
++ (QTEnum *)offsetDateTime { return QTEnum.values[@"OffsetDateTime"]; }
++ (QTEnum *)offsetTime { return QTEnum.values[@"OffsetTime"]; }
 + (QTEnum *)objectMapper { return QTEnum.values[@"ObjectMapper"]; }
 + (QTEnum *)of { return QTEnum.values[@"of"]; }
 + (QTEnum *)oneway { return QTEnum.values[@"oneway"]; }
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 4e8287c..4494d28 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
@@ -154,6 +154,7 @@
 @class QTLeft;
 @class QTLet;
 @class QTList;
+@class QTLocalDate;
 @class QTLocale;
 @class QTLock;
 @class QTMap;
@@ -182,6 +183,8 @@
 @class QTObject;
 @class QTObjectMapper;
 @class QTOf;
+@class QTOffsetDateTime;
+@class QTOffsetTime;
 @class QTOneway;
 @class QTOpen;
 @class QTOperator;
@@ -535,6 +538,7 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, nullable, copy)   id left;
 @property (nonatomic, nullable, copy)   id let;
 @property (nonatomic, nullable, copy)   id list;
+@property (nonatomic, nullable, copy)   id localDate;
 @property (nonatomic, nullable, copy)   id locale;
 @property (nonatomic, nullable, copy)   id lock;
 @property (nonatomic, nullable, copy)   id qtTopLevelLong;
@@ -569,6 +573,8 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @property (nonatomic, nullable, copy)   id object;
 @property (nonatomic, nullable, copy)   id objectMapper;
 @property (nonatomic, nullable, copy)   id of;
+@property (nonatomic, nullable, copy)   id offsetDateTime;
+@property (nonatomic, nullable, copy)   id offsetTime;
 @property (nonatomic, nullable, copy)   id oneway;
 @property (nonatomic, nullable, copy)   id open;
 @property (nonatomic, nullable, copy)   id operator;
@@ -1147,6 +1153,9 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @interface QTList : NSObject
 @end
 
+@interface QTLocalDate : NSObject
+@end
+
 @interface QTLocale : NSObject
 @end
 
@@ -1231,6 +1240,12 @@ NSString   *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding en
 @interface QTOf : NSObject
 @end
 
+@interface QTOffsetDateTime : NSObject
+@end
+
+@interface QTOffsetTime : NSObject
+@end
+
 @interface QTOneway : 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 2186833..a6ad910 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
@@ -753,6 +753,11 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTLocalDate (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTLocale (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -893,6 +898,16 @@ NS_ASSUME_NONNULL_BEGIN
 - (NSDictionary *)JSONDictionary;
 @end
 
+@interface QTOffsetDateTime (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
+@interface QTOffsetTime (JSONConversion)
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict;
+- (NSDictionary *)JSONDictionary;
+@end
+
 @interface QTOneway (JSONConversion)
 + (instancetype)fromJSONDictionary:(NSDictionary *)dict;
 - (NSDictionary *)JSONDictionary;
@@ -1922,6 +1937,7 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"left": @"left",
         @"let": @"let",
         @"list": @"list",
+        @"LocalDate": @"localDate",
         @"Locale": @"locale",
         @"lock": @"lock",
         @"long": @"qtTopLevelLong",
@@ -1956,6 +1972,8 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
         @"object": @"object",
         @"ObjectMapper": @"objectMapper",
         @"of": @"of",
+        @"OffsetDateTime": @"offsetDateTime",
+        @"OffsetTime": @"offsetTime",
         @"oneway": @"oneway",
         @"open": @"open",
         @"operator": @"operator",
@@ -7919,6 +7937,45 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTLocalDate
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTLocalDate 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 = QTLocalDate.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTLocalDate.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTLocalDate.properties.allValues];
+}
+@end
+
 @implementation QTLocale
 + (NSDictionary<NSString *, NSString *> *)properties
 {
@@ -9011,6 +9068,84 @@ NSString *_Nullable QTTopLevelToJSON(QTTopLevel *topLevel, NSStringEncoding enco
 }
 @end
 
+@implementation QTOffsetDateTime
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTOffsetDateTime 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 = QTOffsetDateTime.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTOffsetDateTime.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTOffsetDateTime.properties.allValues];
+}
+@end
+
+@implementation QTOffsetTime
++ (NSDictionary<NSString *, NSString *> *)properties
+{
+    static NSDictionary<NSString *, NSString *> *properties;
+    return properties = properties ? properties : @{
+    };
+}
+
++ (instancetype)fromJSONDictionary:(NSDictionary *)dict
+{
+    return [dict isKindOfClass:NSDictionary.class] ? [[QTOffsetTime 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 = QTOffsetTime.properties[key];
+    if (resolved) [super setValue:value forKey:resolved];
+}
+
+- (void)setNilValueForKey:(NSString *)key
+{
+    id resolved = QTOffsetTime.properties[key];
+    if (resolved) [super setValue:@(0) forKey:resolved];
+}
+
+- (NSDictionary *)JSONDictionary
+{
+    return [self dictionaryWithValuesForKeys:QTOffsetTime.properties.allValues];
+}
+@end
+
 @implementation QTOneway
 + (NSDictionary<NSString *, NSString *> *)properties
 {
diff --git a/base/schema-php/test/inputs/schema/date-time.schema/default/TopLevel.php b/head/schema-php/test/inputs/schema/date-time.schema/default/TopLevel.php
index fa72b0b..5b1252b 100644
--- a/base/schema-php/test/inputs/schema/date-time.schema/default/TopLevel.php
+++ b/head/schema-php/test/inputs/schema/date-time.schema/default/TopLevel.php
@@ -7,6 +7,9 @@ class TopLevel {
     private array $complexUnionArray; // json:complex-union-array Required
     private string $date; // json:date Required
     private DateTime $dateTime; // json:date-time Required
+    private ?LocalDate $localDateClass; // json:local-date-class Optional
+    private ?OffsetDateTime $offsetDateTimeClass; // json:offset-date-time-class Optional
+    private ?OffsetTime $offsetTimeClass; // json:offset-time-class Optional
     private string $time; // json:time Required
     private array $unionArray; // json:union-array Required
 
@@ -14,13 +17,19 @@ class TopLevel {
      * @param array $complexUnionArray
      * @param string $date
      * @param DateTime $dateTime
+     * @param LocalDate|null $localDateClass
+     * @param OffsetDateTime|null $offsetDateTimeClass
+     * @param OffsetTime|null $offsetTimeClass
      * @param string $time
      * @param array $unionArray
      */
-    public function __construct(array $complexUnionArray, string $date, DateTime $dateTime, string $time, array $unionArray) {
+    public function __construct(array $complexUnionArray, string $date, DateTime $dateTime, ?LocalDate $localDateClass, ?OffsetDateTime $offsetDateTimeClass, ?OffsetTime $offsetTimeClass, string $time, array $unionArray) {
         $this->complexUnionArray = $complexUnionArray;
         $this->date = $date;
         $this->dateTime = $dateTime;
+        $this->localDateClass = $localDateClass;
+        $this->offsetDateTimeClass = $offsetDateTimeClass;
+        $this->offsetTimeClass = $offsetTimeClass;
         $this->time = $time;
         $this->unionArray = $unionArray;
     }
@@ -217,6 +226,180 @@ class TopLevel {
         return DateTime::createFromFormat(DateTimeInterface::ISO8601, '2020-12-30T12:30:30+00:00');
     }
 
+    /**
+     * @param ?stdClass $value
+     * @throws Exception
+     * @return ?LocalDate
+     */
+    public static function fromLocalDateClass(?stdClass $value): ?LocalDate {
+        if (!is_null($value)) {
+            return LocalDate::from($value); /*class*/
+        } else {
+            return  null;
+        }
+    }
+
+    /**
+     * @throws Exception
+     * @return ?stdClass
+     */
+    public function toLocalDateClass(): ?stdClass {
+        if (TopLevel::validateLocalDateClass($this->localDateClass))  {
+            if (!is_null($this->localDateClass)) {
+                return $this->localDateClass->to(); /*class*/
+            } else {
+                return  null;
+            }
+        }
+        throw new Exception('never get to this TopLevel::localDateClass');
+    }
+
+    /**
+     * @param LocalDate|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateLocalDateClass(?LocalDate $value): bool {
+        if (!is_null($value)) {
+            $value->validate();
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ?LocalDate
+     */
+    public function getLocalDateClass(): ?LocalDate {
+        if (TopLevel::validateLocalDateClass($this->localDateClass))  {
+            return $this->localDateClass;
+        }
+        throw new Exception('never get to getLocalDateClass TopLevel::localDateClass');
+    }
+
+    /**
+     * @return ?LocalDate
+     */
+    public static function sampleLocalDateClass(): ?LocalDate {
+        return LocalDate::sample(); /*34:localDateClass*/
+    }
+
+    /**
+     * @param ?stdClass $value
+     * @throws Exception
+     * @return ?OffsetDateTime
+     */
+    public static function fromOffsetDateTimeClass(?stdClass $value): ?OffsetDateTime {
+        if (!is_null($value)) {
+            return OffsetDateTime::from($value); /*class*/
+        } else {
+            return  null;
+        }
+    }
+
+    /**
+     * @throws Exception
+     * @return ?stdClass
+     */
+    public function toOffsetDateTimeClass(): ?stdClass {
+        if (TopLevel::validateOffsetDateTimeClass($this->offsetDateTimeClass))  {
+            if (!is_null($this->offsetDateTimeClass)) {
+                return $this->offsetDateTimeClass->to(); /*class*/
+            } else {
+                return  null;
+            }
+        }
+        throw new Exception('never get to this TopLevel::offsetDateTimeClass');
+    }
+
+    /**
+     * @param OffsetDateTime|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateOffsetDateTimeClass(?OffsetDateTime $value): bool {
+        if (!is_null($value)) {
+            $value->validate();
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ?OffsetDateTime
+     */
+    public function getOffsetDateTimeClass(): ?OffsetDateTime {
+        if (TopLevel::validateOffsetDateTimeClass($this->offsetDateTimeClass))  {
+            return $this->offsetDateTimeClass;
+        }
+        throw new Exception('never get to getOffsetDateTimeClass TopLevel::offsetDateTimeClass');
+    }
+
+    /**
+     * @return ?OffsetDateTime
+     */
+    public static function sampleOffsetDateTimeClass(): ?OffsetDateTime {
+        return OffsetDateTime::sample(); /*35:offsetDateTimeClass*/
+    }
+
+    /**
+     * @param ?stdClass $value
+     * @throws Exception
+     * @return ?OffsetTime
+     */
+    public static function fromOffsetTimeClass(?stdClass $value): ?OffsetTime {
+        if (!is_null($value)) {
+            return OffsetTime::from($value); /*class*/
+        } else {
+            return  null;
+        }
+    }
+
+    /**
+     * @throws Exception
+     * @return ?stdClass
+     */
+    public function toOffsetTimeClass(): ?stdClass {
+        if (TopLevel::validateOffsetTimeClass($this->offsetTimeClass))  {
+            if (!is_null($this->offsetTimeClass)) {
+                return $this->offsetTimeClass->to(); /*class*/
+            } else {
+                return  null;
+            }
+        }
+        throw new Exception('never get to this TopLevel::offsetTimeClass');
+    }
+
+    /**
+     * @param OffsetTime|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateOffsetTimeClass(?OffsetTime $value): bool {
+        if (!is_null($value)) {
+            $value->validate();
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return ?OffsetTime
+     */
+    public function getOffsetTimeClass(): ?OffsetTime {
+        if (TopLevel::validateOffsetTimeClass($this->offsetTimeClass))  {
+            return $this->offsetTimeClass;
+        }
+        throw new Exception('never get to getOffsetTimeClass TopLevel::offsetTimeClass');
+    }
+
+    /**
+     * @return ?OffsetTime
+     */
+    public static function sampleOffsetTimeClass(): ?OffsetTime {
+        return OffsetTime::sample(); /*36:offsetTimeClass*/
+    }
+
     /**
      * @param string $value
      * @throws Exception
@@ -261,7 +444,7 @@ class TopLevel {
      * @return string
      */
     public static function sampleTime(): string {
-        return 'TopLevel::time::34'; /*34:time*/
+        return 'TopLevel::time::37'; /*37:time*/
     }
 
     /**
@@ -321,8 +504,8 @@ class TopLevel {
      */
     public static function sampleUnionArray(): array {
         return  array(
-            'TopLevel::::35' /*35:*/
-        ); /* 35:unionArray*/
+            'TopLevel::::38' /*38:*/
+        ); /* 38:unionArray*/
     }
 
     /**
@@ -333,6 +516,9 @@ class TopLevel {
         return TopLevel::validateComplexUnionArray($this->complexUnionArray)
         || TopLevel::validateDate($this->date)
         || TopLevel::validateDateTime($this->dateTime)
+        || TopLevel::validateLocalDateClass($this->localDateClass)
+        || TopLevel::validateOffsetDateTimeClass($this->offsetDateTimeClass)
+        || TopLevel::validateOffsetTimeClass($this->offsetTimeClass)
         || TopLevel::validateTime($this->time)
         || TopLevel::validateUnionArray($this->unionArray);
     }
@@ -346,6 +532,9 @@ class TopLevel {
         $out->{'complex-union-array'} = $this->toComplexUnionArray();
         $out->{'date'} = $this->toDate();
         $out->{'date-time'} = $this->toDateTime();
+        $out->{'local-date-class'} = $this->toLocalDateClass();
+        $out->{'offset-date-time-class'} = $this->toOffsetDateTimeClass();
+        $out->{'offset-time-class'} = $this->toOffsetTimeClass();
         $out->{'time'} = $this->toTime();
         $out->{'union-array'} = $this->toUnionArray();
         return $out;
@@ -376,6 +565,9 @@ class TopLevel {
          TopLevel::fromComplexUnionArray($obj->{'complex-union-array'})
         ,TopLevel::fromDate($obj->{'date'})
         ,TopLevel::fromDateTime($obj->{'date-time'})
+        ,TopLevel::fromLocalDateClass($obj->{'local-date-class'})
+        ,TopLevel::fromOffsetDateTimeClass($obj->{'offset-date-time-class'})
+        ,TopLevel::fromOffsetTimeClass($obj->{'offset-time-class'})
         ,TopLevel::fromTime($obj->{'time'})
         ,TopLevel::fromUnionArray($obj->{'union-array'})
         );
@@ -389,6 +581,9 @@ class TopLevel {
          TopLevel::sampleComplexUnionArray()
         ,TopLevel::sampleDate()
         ,TopLevel::sampleDateTime()
+        ,TopLevel::sampleLocalDateClass()
+        ,TopLevel::sampleOffsetDateTimeClass()
+        ,TopLevel::sampleOffsetTimeClass()
         ,TopLevel::sampleTime()
         ,TopLevel::sampleUnionArray()
         );
@@ -443,3 +638,138 @@ class ComplexUnionArray {
     }
 }
 ComplexUnionArray::init();
+
+// This is an autogenerated file:LocalDate
+
+class LocalDate {
+
+    /**
+     */
+    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 LocalDate
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): LocalDate {
+        return new LocalDate(
+        );
+    }
+
+    /**
+     * @return LocalDate
+     */
+    public static function sample(): LocalDate {
+        return new LocalDate(
+        );
+    }
+}
+
+// This is an autogenerated file:OffsetDateTime
+
+class OffsetDateTime {
+
+    /**
+     */
+    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 OffsetDateTime
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): OffsetDateTime {
+        return new OffsetDateTime(
+        );
+    }
+
+    /**
+     * @return OffsetDateTime
+     */
+    public static function sample(): OffsetDateTime {
+        return new OffsetDateTime(
+        );
+    }
+}
+
+// This is an autogenerated file:OffsetTime
+
+class OffsetTime {
+
+    /**
+     */
+    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 OffsetTime
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): OffsetTime {
+        return new OffsetTime(
+        );
+    }
+
+    /**
+     * @return OffsetTime
+     */
+    public static function sample(): OffsetTime {
+        return new OffsetTime(
+        );
+    }
+}
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 fd294c1..3dff0b4 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
@@ -289,6 +289,7 @@ class EnumEnum {
     public static EnumEnum $LEFT;
     public static EnumEnum $LET;
     public static EnumEnum $LIST;
+    public static EnumEnum $LOCAL_DATE;
     public static EnumEnum $LOCALE;
     public static EnumEnum $LOCK;
     public static EnumEnum $LONG;
@@ -321,6 +322,8 @@ class EnumEnum {
     public static EnumEnum $NULLPTR;
     public static EnumEnum $NUMBER;
     public static EnumEnum $OBJECT;
+    public static EnumEnum $OFFSET_DATE_TIME;
+    public static EnumEnum $OFFSET_TIME;
     public static EnumEnum $OBJECT_MAPPER;
     public static EnumEnum $OF;
     public static EnumEnum $ONEWAY;
@@ -629,6 +632,7 @@ class EnumEnum {
         EnumEnum::$LEFT = new EnumEnum('left');
         EnumEnum::$LET = new EnumEnum('let');
         EnumEnum::$LIST = new EnumEnum('list');
+        EnumEnum::$LOCAL_DATE = new EnumEnum('LocalDate');
         EnumEnum::$LOCALE = new EnumEnum('Locale');
         EnumEnum::$LOCK = new EnumEnum('lock');
         EnumEnum::$LONG = new EnumEnum('long');
@@ -661,6 +665,8 @@ class EnumEnum {
         EnumEnum::$NULLPTR = new EnumEnum('nullptr');
         EnumEnum::$NUMBER = new EnumEnum('number');
         EnumEnum::$OBJECT = new EnumEnum('object');
+        EnumEnum::$OFFSET_DATE_TIME = new EnumEnum('OffsetDateTime');
+        EnumEnum::$OFFSET_TIME = new EnumEnum('OffsetTime');
         EnumEnum::$OBJECT_MAPPER = new EnumEnum('ObjectMapper');
         EnumEnum::$OF = new EnumEnum('of');
         EnumEnum::$ONEWAY = new EnumEnum('oneway');
@@ -981,6 +987,7 @@ class EnumEnum {
             case EnumEnum::$LEFT->enum: return 'left';
             case EnumEnum::$LET->enum: return 'let';
             case EnumEnum::$LIST->enum: return 'list';
+            case EnumEnum::$LOCAL_DATE->enum: return 'LocalDate';
             case EnumEnum::$LOCALE->enum: return 'Locale';
             case EnumEnum::$LOCK->enum: return 'lock';
             case EnumEnum::$LONG->enum: return 'long';
@@ -1013,6 +1020,8 @@ class EnumEnum {
             case EnumEnum::$NULLPTR->enum: return 'nullptr';
             case EnumEnum::$NUMBER->enum: return 'number';
             case EnumEnum::$OBJECT->enum: return 'object';
+            case EnumEnum::$OFFSET_DATE_TIME->enum: return 'OffsetDateTime';
+            case EnumEnum::$OFFSET_TIME->enum: return 'OffsetTime';
             case EnumEnum::$OBJECT_MAPPER->enum: return 'ObjectMapper';
             case EnumEnum::$OF->enum: return 'of';
             case EnumEnum::$ONEWAY->enum: return 'oneway';
@@ -1331,6 +1340,7 @@ class EnumEnum {
             case 'left': return EnumEnum::$LEFT;
             case 'let': return EnumEnum::$LET;
             case 'list': return EnumEnum::$LIST;
+            case 'LocalDate': return EnumEnum::$LOCAL_DATE;
             case 'Locale': return EnumEnum::$LOCALE;
             case 'lock': return EnumEnum::$LOCK;
             case 'long': return EnumEnum::$LONG;
@@ -1363,6 +1373,8 @@ class EnumEnum {
             case 'nullptr': return EnumEnum::$NULLPTR;
             case 'number': return EnumEnum::$NUMBER;
             case 'object': return EnumEnum::$OBJECT;
+            case 'OffsetDateTime': return EnumEnum::$OFFSET_DATE_TIME;
+            case 'OffsetTime': return EnumEnum::$OFFSET_TIME;
             case 'ObjectMapper': return EnumEnum::$OBJECT_MAPPER;
             case 'of': return EnumEnum::$OF;
             case 'oneway': return EnumEnum::$ONEWAY;
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 e1c6aa8..6681ca4 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
@@ -182,6 +182,7 @@ class TopLevel {
     private Left|float|null $left; // json:left Optional
     private Let|float|null $let; // json:let Optional
     private ListClass|float|null $list; // json:list Optional
+    private LocalDate|float|null $localDate; // json:LocalDate Optional
     private LocaleClass|float|null $locale; // json:Locale Optional
     private Lock|float|null $lock; // json:lock Optional
     private Long|float|null $long; // json:long Optional
@@ -216,6 +217,8 @@ class TopLevel {
     private ObjectClass|float|null $object; // json:object Optional
     private ObjectMapper|float|null $objectMapper; // json:ObjectMapper Optional
     private Of|float|null $of; // json:of Optional
+    private OffsetDateTime|float|null $offsetDateTime; // json:OffsetDateTime Optional
+    private OffsetTime|float|null $offsetTime; // json:OffsetTime Optional
     private Oneway|float|null $oneway; // json:oneway Optional
     private Open|float|null $open; // json:open Optional
     private Operator|float|null $operator; // json:operator Optional
@@ -523,6 +526,7 @@ class TopLevel {
      * @param Left|float|null $left
      * @param Let|float|null $let
      * @param ListClass|float|null $list
+     * @param LocalDate|float|null $localDate
      * @param LocaleClass|float|null $locale
      * @param Lock|float|null $lock
      * @param Long|float|null $long
@@ -557,6 +561,8 @@ class TopLevel {
      * @param ObjectClass|float|null $object
      * @param ObjectMapper|float|null $objectMapper
      * @param Of|float|null $of
+     * @param OffsetDateTime|float|null $offsetDateTime
+     * @param OffsetTime|float|null $offsetTime
      * @param Oneway|float|null $oneway
      * @param Open|float|null $open
      * @param Operator|float|null $operator
@@ -685,7 +691,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, KSerializer|float|null $kSerializer, Lambda|float|null $lambda, Lazy|float|null $lazy, Left|float|null $left, Let|float|null $let, ListClass|float|null $list, LocaleClass|float|null $locale, Lock|float|null $lock, Long|float|null $long, Map|float|null $map, MapEntry|float|null $mapEntry, MetadataPropertyHandling|float|null $metadataPropertyHandling, Module|float|null $module, Mutable|float|null $mutable, Mutating|float|null $mutating, NamespaceClass|float|null $namespace, Native|float|null $native, NewClass|float|null $new, Newtonsoft|float|null $newtonsoft, Nil|float|null $nil, No|float|null $no, Noexcept|float|null $noexcept, Nonatomic|float|null $nonatomic, NoneClass|float|null $topLevelNone, None|float|null $none, Nonlocal|float|null $nonlocal, Nonmutating|float|null $nonmutating, NoSuchMethod|float|null $noSuchMethod, Not|float|null $not, NotEq|float|null $notEq, NSError|float|null $nsError, NSObject|float|null $nsObject, NSString|float|null $nsString, NULLClass|float|null $null, UnionNullNull|float|null $topLevelNull, Nullptr|float|null $nullptr, Number|float|null $number, ObjectClass|float|null $object, ObjectMapper|float|null $objectMapper, Of|float|null $of, Oneway|float|null $oneway, Open|float|null $open, Operator|float|null $operator, Optional|float|null $optional, OrClass|float|null $or, OrEq|float|null $orEq, Out|float|null $out, OverrideClass|float|null $override, Package|float|null $package, Params|float|null $params, Pass|float|null $pass, Port|float|null $port, Postfix|float|null $postfix, Precedence|float|null $precedence, Prefix|float|null $prefix, PrimitiveKind|float|null $primitiveKind, PrintClass|float|null $print, Printf|float|null $printf, PrintMembers|float|null $printMembers, PrivateClass|float|null $private, ProtectedClass|float|null $protected, Protocol|float|null $protocol, ProtocolClass|float|null $topLevelProtocol, PublicClass|float|null $public, Quicktype|float|null $quicktype, Raise|float|null $raise, Range|float|null $range, ReadonlyClass|float|null $readonly, Ref|float|null $ref, RegExp|float|null $regExp, Register|float|null $register, ReinterpretCast|float|null $reinterpretCast, Repeat|float|null $repeat, RequireClass|float|null $require, Required|float|null $required, Requires|float|null $requires, Restrict|float|null $restrict, Retain|float|null $retain, Rethrows|float|null $rethrows, ReturnClass|float|null $return, Right|float|null $right, RuntimeType|float|null $runtimeType, S|float|null $s, Sbyte|float|null $sbyte, Sealed|float|null $sealed, Sel|float|null $sel, Select|float|null $select, SelfClass|float|null $self, UnionSelfSelf|float|null $topLevelSelf, Sendable|float|null $sendable, SerialDescriptor|float|null $serialDescriptor, SerializableClass|float|null $serializable, Serialize|float|null $serialize, SerializerProvider|float|null $serializerProvider, SerialName|float|null $serialName, Set|float|null $set, Short|float|null $short, Signed|float|null $signed, SimpleModule|float|null $simpleModule, Sizeof|float|null $sizeof, Stackalloc|float|null $stackalloc, Standards|float|null $standards, StaticClass|float|null $static, StaticAssert|float|null $staticAssert, StaticCast|float|null $staticCast, StdDeserializer|float|null $stdDeserializer, StdSerializer|float|null $stdSerializer, Strictfp|float|null $strictfp, StringClass|float|null $string, Struct|float|null $struct, Subscript|float|null $subscript, Super|float|null $super, SwitchClass|float|null $switch, Symbol|float|null $symbol, Synchronized|float|null $synchronized, System|float|null $system, Template|float|null $template, Then|float|null $then, This|float|null $topLevelThis, ThreadLocal|float|null $threadLocal, ThrowClass|float|null $throw, Throws|float|null $throws, TimeOnly|float|null $timeOnly, TimeOnlyConverter|float|null $timeOnlyConverter, TimeZone|float|null $timeZone, ToJSON|float|null $toJSON, TopLevelClass|float|null $topLevel, ToString|float|null $toString, Transient|float|null $transient, TrueClass|float|null $true, UnionTrueTrue|float|null $topLevelTrue, TryClass|float|null $try, Type|float|null $type, TypeClass|float|null $topLevelType, Typealias|float|null $typealias, Typedef|float|null $typedef, Typeid|float|null $typeid, Typename|float|null $typename, Typeof|float|null $typeof, Uint|float|null $uint, Ulong|float|null $ulong, Unchecked|float|null $unchecked, Undefined|float|null $undefined, UnionClass|float|null $union, Unowned|float|null $unowned, Unsafe|float|null $unsafe, Unsigned|float|null $unsigned, UseSerializers|float|null $useSerializers, Ushort|float|null $ushort, Using|float|null $using, Utf8JSONReader|float|null $utf8JSONReader, Utf8JSONWriter|float|null $utf8JSONWriter, UUID|float|null $uuid, VarClass|float|null $var, Virtual|float|null $virtual, VoidClass|float|null $void, Volatile|float|null $volatile, WcharT|float|null $wcharT, Weak|float|null $weak, Where|float|null $where, WhileClass|float|null $while, WillSet|float|null $willSet, With|float|null $with, XorClass|float|null $xor, XorEq|float|null $xorEq, Yes|float|null $yes, YieldClass|float|null $yield) {
+    public function __construct(Union|float|null $empty, UnionBoolBool|float|null $topLevelBool, Complex|float|null $complex, Imaginery|float|null $imaginery, AbstractClass|float|null $abstract, Alignas|float|null $alignas, Alignof|float|null $alignof, AndClass|float|null $and, AndEq|float|null $andEq, AnyClass|float|null $topLevelAny, Any|float|null $any, ArrayClass|float|null $array, AsClass|float|null $as, ASM|float|null $asm, Assert|float|null $assert, Associatedtype|float|null $associatedtype, Associativity|float|null $associativity, Async|float|null $async, Atomic|float|null $atomic, AtomicCancel|float|null $atomicCancel, AtomicCommit|float|null $atomicCommit, AtomicNoexcept|float|null $atomicNoexcept, Auto|float|null $auto, Await|float|null $await, Base|float|null $base, Bitand|float|null $bitand, Bitor|float|null $bitor, BOOLClass|float|null $bool, UnionBoolBoolClass|float|null $purpleBool, Boolean|float|null $boolean, BreakClass|float|null $break, Bycopy|float|null $bycopy, Byref|float|null $byref, Byte|float|null $byte, Calendar|float|null $calendar, CaseClass|float|null $case, CatchClass|float|null $catch, Chan|float|null $chan, Char|float|null $char, Char16T|float|null $char16T, Char32T|float|null $char32T, Checked|float|null $checked, UnionClassClass|float|null $topLevelClass, ClassClass|float|null $class, CloneClass|float|null $clone, CoAwait|float|null $coAwait, CoReturn|float|null $coReturn, CoYield|float|null $coYield, Codable|float|null $codable, CodingKey|float|null $codingKey, CodingKeys|float|null $codingKeys, Compl|float|null $compl, Concept|float|null $concept, Console|float|null $console, ConstClass|float|null $const, ConstCast|float|null $constCast, Constexpr|float|null $constexpr, Constructor|float|null $constructor, ContinueClass|float|null $continue, Convenience|float|null $convenience, Convert|float|null $convert, ConverterClass|float|null $converter, CultureInfo|float|null $cultureInfo, Date|float|null $date, DateParseHandling|float|null $dateParseHandling, DateFormatter|float|null $dateFormatter, DateOnly|float|null $dateOnly, DateOnlyConverter|float|null $dateOnlyConverter, DateTimeClass|float|null $dateTime, DateTimeStyles|float|null $dateTimeStyles, Debugger|float|null $debugger, Decimal|float|null $decimal, DeclareClass|float|null $declare, Decltype|float|null $decltype, DecodeString|float|null $decodeString, Decoder|float|null $decoder, DecodingError|float|null $decodingError, Def|float|null $def, DefaultClass|float|null $default, Defer|float|null $defer, Deinit|float|null $deinit, Del|float|null $del, Delegate|float|null $delegate, Delete|float|null $delete, Dict|float|null $dict, Dictionary|float|null $dictionary, DidSet|float|null $didSet, DoClass|float|null $do, Double|float|null $double, ?float $dummy, Dynamic|float|null $dynamic, DynamicCast|float|null $dynamicCast, Elif|float|null $elif, ElseClass|float|null $else, EncodeQuickType|float|null $encodeQuickType, Encoder|float|null $encoder, EnumClass|float|null $enum, EnumValues|float|null $enumValues, EqualityContract|float|null $equalityContract, Equatable|float|null $equatable, Event|float|null $event, Except|float|null $except, ExceptionClass|float|null $exception, Explicit|float|null $explicit, Export|float|null $export, Exposing|float|null $exposing, ExtendsClass|float|null $extends, Extension|float|null $extension, Extern|float|null $extern, Fallthrough|float|null $fallthrough, UnionFalseFalse|float|null $topLevelFalse, FalseClass|float|null $false, Fileprivate|float|null $fileprivate, FinalClass|float|null $final, FinallyClass|float|null $finally, Fixed|float|null $fixed, FloatClass|float|null $float, ForClass|float|null $for, ForeachClass|float|null $foreach, FormatException|float|null $formatException, Friend|float|null $friend, From|float|null $from, FromJSON|float|null $fromJSON, Func|float|null $func, FunctionClass|float|null $function, Get|float|null $get, GlobalClass|float|null $global, Go|float|null $go, GotoClass|float|null $goto, Guard|float|null $guard, Hashable|float|null $hashable, HashCode|float|null $hashCode, Hasher|float|null $hasher, HasOwnProperty|float|null $hasOwnProperty, ID|float|null $id, IfClass|float|null $if, Imp|float|null $imp, ImplementsClass|float|null $implements, Implicit|float|null $implicit, Import|float|null $import, In|float|null $in, Indirect|float|null $indirect, Infix|float|null $infix, Init|float|null $init, Inline|float|null $inline, Inout|float|null $inout, InstanceofClass|float|null $instanceof, IntClass|float|null $int, InterfaceClass|float|null $interface, Internal|float|null $internal, Is|float|null $is, ISODateTimeOffsetConverter|float|null $isoDateTimeOffsetConverter, IterableClass|float|null $iterable, Jdec|float|null $jdec, Jenc|float|null $jenc, Jpipe|float|null $jpipe, JSON|float|null $json, JSONConverter|float|null $jsonConverter, JSONSerializer|float|null $jsonSerializer, JSONToken|float|null $jsonToken, JSONWriter|float|null $jsonWriter, JSONAny|float|null $jsonAny, JSONCodingKey|float|null $jsonCodingKey, JSONDecoder|float|null $jsonDecoder, JSONEncoder|float|null $jsonEncoder, JSONExceptionClass|float|null $jsonException, JSONGenerator|float|null $jsonGenerator, JSONNode|float|null $jsonNode, JSONNull|float|null $jsonNull, JSONParser|float|null $jsonParser, JSONReader|float|null $jsonReader, JSONTokenType|float|null $jsonTokenType, KSerializer|float|null $kSerializer, Lambda|float|null $lambda, Lazy|float|null $lazy, Left|float|null $left, Let|float|null $let, ListClass|float|null $list, LocalDate|float|null $localDate, 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, OffsetDateTime|float|null $offsetDateTime, OffsetTime|float|null $offsetTime, Oneway|float|null $oneway, Open|float|null $open, Operator|float|null $operator, Optional|float|null $optional, OrClass|float|null $or, OrEq|float|null $orEq, Out|float|null $out, OverrideClass|float|null $override, Package|float|null $package, Params|float|null $params, Pass|float|null $pass, Port|float|null $port, Postfix|float|null $postfix, Precedence|float|null $precedence, Prefix|float|null $prefix, PrimitiveKind|float|null $primitiveKind, PrintClass|float|null $print, Printf|float|null $printf, PrintMembers|float|null $printMembers, PrivateClass|float|null $private, ProtectedClass|float|null $protected, Protocol|float|null $protocol, ProtocolClass|float|null $topLevelProtocol, PublicClass|float|null $public, Quicktype|float|null $quicktype, Raise|float|null $raise, Range|float|null $range, ReadonlyClass|float|null $readonly, Ref|float|null $ref, RegExp|float|null $regExp, Register|float|null $register, ReinterpretCast|float|null $reinterpretCast, Repeat|float|null $repeat, RequireClass|float|null $require, Required|float|null $required, Requires|float|null $requires, Restrict|float|null $restrict, Retain|float|null $retain, Rethrows|float|null $rethrows, ReturnClass|float|null $return, Right|float|null $right, RuntimeType|float|null $runtimeType, S|float|null $s, Sbyte|float|null $sbyte, Sealed|float|null $sealed, Sel|float|null $sel, Select|float|null $select, SelfClass|float|null $self, UnionSelfSelf|float|null $topLevelSelf, Sendable|float|null $sendable, SerialDescriptor|float|null $serialDescriptor, SerializableClass|float|null $serializable, Serialize|float|null $serialize, SerializerProvider|float|null $serializerProvider, SerialName|float|null $serialName, Set|float|null $set, Short|float|null $short, Signed|float|null $signed, SimpleModule|float|null $simpleModule, Sizeof|float|null $sizeof, Stackalloc|float|null $stackalloc, Standards|float|null $standards, StaticClass|float|null $static, StaticAssert|float|null $staticAssert, StaticCast|float|null $staticCast, StdDeserializer|float|null $stdDeserializer, StdSerializer|float|null $stdSerializer, Strictfp|float|null $strictfp, StringClass|float|null $string, Struct|float|null $struct, Subscript|float|null $subscript, Super|float|null $super, SwitchClass|float|null $switch, Symbol|float|null $symbol, Synchronized|float|null $synchronized, System|float|null $system, Template|float|null $template, Then|float|null $then, This|float|null $topLevelThis, ThreadLocal|float|null $threadLocal, ThrowClass|float|null $throw, Throws|float|null $throws, TimeOnly|float|null $timeOnly, TimeOnlyConverter|float|null $timeOnlyConverter, TimeZone|float|null $timeZone, ToJSON|float|null $toJSON, TopLevelClass|float|null $topLevel, ToString|float|null $toString, Transient|float|null $transient, TrueClass|float|null $true, UnionTrueTrue|float|null $topLevelTrue, TryClass|float|null $try, Type|float|null $type, TypeClass|float|null $topLevelType, Typealias|float|null $typealias, Typedef|float|null $typedef, Typeid|float|null $typeid, Typename|float|null $typename, Typeof|float|null $typeof, Uint|float|null $uint, Ulong|float|null $ulong, Unchecked|float|null $unchecked, Undefined|float|null $undefined, UnionClass|float|null $union, Unowned|float|null $unowned, Unsafe|float|null $unsafe, Unsigned|float|null $unsigned, UseSerializers|float|null $useSerializers, Ushort|float|null $ushort, Using|float|null $using, Utf8JSONReader|float|null $utf8JSONReader, Utf8JSONWriter|float|null $utf8JSONWriter, UUID|float|null $uuid, VarClass|float|null $var, Virtual|float|null $virtual, VoidClass|float|null $void, Volatile|float|null $volatile, WcharT|float|null $wcharT, Weak|float|null $weak, Where|float|null $where, WhileClass|float|null $while, WillSet|float|null $willSet, With|float|null $with, XorClass|float|null $xor, XorEq|float|null $xorEq, Yes|float|null $yes, YieldClass|float|null $yield) {
         $this->empty = $empty;
         $this->topLevelBool = $topLevelBool;
         $this->complex = $complex;
@@ -864,6 +870,7 @@ class TopLevel {
         $this->left = $left;
         $this->let = $let;
         $this->list = $list;
+        $this->localDate = $localDate;
         $this->locale = $locale;
         $this->lock = $lock;
         $this->long = $long;
@@ -898,6 +905,8 @@ class TopLevel {
         $this->object = $object;
         $this->objectMapper = $objectMapper;
         $this->of = $of;
+        $this->offsetDateTime = $offsetDateTime;
+        $this->offsetTime = $offsetTime;
         $this->oneway = $oneway;
         $this->open = $open;
         $this->operator = $operator;
@@ -14536,6 +14545,82 @@ class TopLevel {
         return ListClass::sample(); /*208:list*/
     }
 
+    /**
+     * @param stdClass|float|null $value
+     * @throws Exception
+     * @return LocalDate|float|null
+     */
+    public static function fromLocalDate(stdClass|float|null $value): LocalDate|float|null {
+        if (is_null($value)) {
+            return $value; /*null*/
+        } elseif (is_object($value)) {
+            return LocalDate::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 toLocalDate(): stdClass|float|null {
+        if (TopLevel::validateLocalDate($this->localDate))  {
+            if (is_null($this->localDate)) {
+                return $this->localDate; /*null*/
+            } elseif ($this->localDate instanceof LocalDate) {
+                return $this->localDate->to(); /*class*/
+            } elseif (is_float($this->localDate) || is_int($this->localDate)) {
+                return $this->localDate; /*float*/
+            } else {
+                throw new Exception('Union value has no matching member in TopLevel');
+            }
+        }
+        throw new Exception('never get to this TopLevel::localDate');
+    }
+
+    /**
+     * @param LocalDate|float|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateLocalDate(LocalDate|float|null $value): bool {
+        if (is_null($value)) {
+            if (!is_null($value)) {
+                throw new Exception("Attribute Error:TopLevel::localDate");
+            }
+        } elseif ($value instanceof LocalDate) {
+            $value->validate();
+        } elseif (is_float($value) || is_int($value)) {
+            if (!is_float($value) && !is_int($value)) {
+                throw new Exception("Attribute Error:TopLevel::localDate");
+            }
+        } else {
+            throw new Exception("Attribute Error:TopLevel::localDate");
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return LocalDate|float|null
+     */
+    public function getLocalDate(): LocalDate|float|null {
+        if (TopLevel::validateLocalDate($this->localDate))  {
+            return $this->localDate;
+        }
+        throw new Exception('never get to getLocalDate TopLevel::localDate');
+    }
+
+    /**
+     * @return LocalDate|float|null
+     */
+    public static function sampleLocalDate(): LocalDate|float|null {
+        return LocalDate::sample(); /*209:localDate*/
+    }
+
     /**
      * @param stdClass|float|null $value
      * @throws Exception
@@ -14609,7 +14694,7 @@ class TopLevel {
      * @return LocaleClass|float|null
      */
     public static function sampleLocale(): LocaleClass|float|null {
-        return LocaleClass::sample(); /*209:locale*/
+        return LocaleClass::sample(); /*210:locale*/
     }
 
     /**
@@ -14685,7 +14770,7 @@ class TopLevel {
      * @return Lock|float|null
      */
     public static function sampleLock(): Lock|float|null {
-        return Lock::sample(); /*210:lock*/
+        return Lock::sample(); /*211:lock*/
     }
 
     /**
@@ -14761,7 +14846,7 @@ class TopLevel {
      * @return Long|float|null
      */
     public static function sampleLong(): Long|float|null {
-        return Long::sample(); /*211:long*/
+        return Long::sample(); /*212:long*/
     }
 
     /**
@@ -14837,7 +14922,7 @@ class TopLevel {
      * @return Map|float|null
      */
     public static function sampleMap(): Map|float|null {
-        return Map::sample(); /*212:map*/
+        return Map::sample(); /*213:map*/
     }
 
     /**
@@ -14913,7 +14998,7 @@ class TopLevel {
      * @return MapEntry|float|null
      */
     public static function sampleMapEntry(): MapEntry|float|null {
-        return MapEntry::sample(); /*213:mapEntry*/
+        return MapEntry::sample(); /*214:mapEntry*/
     }
 
     /**
@@ -14989,7 +15074,7 @@ class TopLevel {
      * @return MetadataPropertyHandling|float|null
      */
     public static function sampleMetadataPropertyHandling(): MetadataPropertyHandling|float|null {
-        return MetadataPropertyHandling::sample(); /*214:metadataPropertyHandling*/
+        return MetadataPropertyHandling::sample(); /*215:metadataPropertyHandling*/
     }
 
     /**
@@ -15065,7 +15150,7 @@ class TopLevel {
      * @return Module|float|null
      */
     public static function sampleModule(): Module|float|null {
-        return Module::sample(); /*215:module*/
+        return Module::sample(); /*216:module*/
     }
 
     /**
@@ -15141,7 +15226,7 @@ class TopLevel {
      * @return Mutable|float|null
      */
     public static function sampleMutable(): Mutable|float|null {
-        return Mutable::sample(); /*216:mutable*/
+        return Mutable::sample(); /*217:mutable*/
     }
 
     /**
@@ -15217,7 +15302,7 @@ class TopLevel {
      * @return Mutating|float|null
      */
     public static function sampleMutating(): Mutating|float|null {
-        return Mutating::sample(); /*217:mutating*/
+        return Mutating::sample(); /*218:mutating*/
     }
 
     /**
@@ -15293,7 +15378,7 @@ class TopLevel {
      * @return NamespaceClass|float|null
      */
     public static function sampleNamespace(): NamespaceClass|float|null {
-        return NamespaceClass::sample(); /*218:namespace*/
+        return NamespaceClass::sample(); /*219:namespace*/
     }
 
     /**
@@ -15369,7 +15454,7 @@ class TopLevel {
      * @return Native|float|null
      */
     public static function sampleNative(): Native|float|null {
-        return Native::sample(); /*219:native*/
+        return Native::sample(); /*220:native*/
     }
 
     /**
@@ -15445,7 +15530,7 @@ class TopLevel {
      * @return NewClass|float|null
      */
     public static function sampleNew(): NewClass|float|null {
-        return NewClass::sample(); /*220:new*/
+        return NewClass::sample(); /*221:new*/
     }
 
     /**
@@ -15521,7 +15606,7 @@ class TopLevel {
      * @return Newtonsoft|float|null
      */
     public static function sampleNewtonsoft(): Newtonsoft|float|null {
-        return Newtonsoft::sample(); /*221:newtonsoft*/
+        return Newtonsoft::sample(); /*222:newtonsoft*/
     }
 
     /**
@@ -15597,7 +15682,7 @@ class TopLevel {
      * @return Nil|float|null
      */
     public static function sampleNil(): Nil|float|null {
-        return Nil::sample(); /*222:nil*/
+        return Nil::sample(); /*223:nil*/
     }
 
     /**
@@ -15673,7 +15758,7 @@ class TopLevel {
      * @return No|float|null
      */
     public static function sampleNo(): No|float|null {
-        return No::sample(); /*223:no*/
+        return No::sample(); /*224:no*/
     }
 
     /**
@@ -15749,7 +15834,7 @@ class TopLevel {
      * @return Noexcept|float|null
      */
     public static function sampleNoexcept(): Noexcept|float|null {
-        return Noexcept::sample(); /*224:noexcept*/
+        return Noexcept::sample(); /*225:noexcept*/
     }
 
     /**
@@ -15825,7 +15910,7 @@ class TopLevel {
      * @return Nonatomic|float|null
      */
     public static function sampleNonatomic(): Nonatomic|float|null {
-        return Nonatomic::sample(); /*225:nonatomic*/
+        return Nonatomic::sample(); /*226:nonatomic*/
     }
 
     /**
@@ -15901,7 +15986,7 @@ class TopLevel {
      * @return NoneClass|float|null
      */
     public static function sampleTopLevelNone(): NoneClass|float|null {
-        return NoneClass::sample(); /*226:topLevelNone*/
+        return NoneClass::sample(); /*227:topLevelNone*/
     }
 
     /**
@@ -15977,7 +16062,7 @@ class TopLevel {
      * @return None|float|null
      */
     public static function sampleNone(): None|float|null {
-        return None::sample(); /*227:none*/
+        return None::sample(); /*228:none*/
     }
 
     /**
@@ -16053,7 +16138,7 @@ class TopLevel {
      * @return Nonlocal|float|null
      */
     public static function sampleNonlocal(): Nonlocal|float|null {
-        return Nonlocal::sample(); /*228:nonlocal*/
+        return Nonlocal::sample(); /*229:nonlocal*/
     }
 
     /**
@@ -16129,7 +16214,7 @@ class TopLevel {
      * @return Nonmutating|float|null
      */
     public static function sampleNonmutating(): Nonmutating|float|null {
-        return Nonmutating::sample(); /*229:nonmutating*/
+        return Nonmutating::sample(); /*230:nonmutating*/
     }
 
     /**
@@ -16205,7 +16290,7 @@ class TopLevel {
      * @return NoSuchMethod|float|null
      */
     public static function sampleNoSuchMethod(): NoSuchMethod|float|null {
-        return NoSuchMethod::sample(); /*230:noSuchMethod*/
+        return NoSuchMethod::sample(); /*231:noSuchMethod*/
     }
 
     /**
@@ -16281,7 +16366,7 @@ class TopLevel {
      * @return Not|float|null
      */
     public static function sampleNot(): Not|float|null {
-        return Not::sample(); /*231:not*/
+        return Not::sample(); /*232:not*/
     }
 
     /**
@@ -16357,7 +16442,7 @@ class TopLevel {
      * @return NotEq|float|null
      */
     public static function sampleNotEq(): NotEq|float|null {
-        return NotEq::sample(); /*232:notEq*/
+        return NotEq::sample(); /*233:notEq*/
     }
 
     /**
@@ -16433,7 +16518,7 @@ class TopLevel {
      * @return NSError|float|null
      */
     public static function sampleNSError(): NSError|float|null {
-        return NSError::sample(); /*233:nsError*/
+        return NSError::sample(); /*234:nsError*/
     }
 
     /**
@@ -16509,7 +16594,7 @@ class TopLevel {
      * @return NSObject|float|null
      */
     public static function sampleNSObject(): NSObject|float|null {
-        return NSObject::sample(); /*234:nsObject*/
+        return NSObject::sample(); /*235:nsObject*/
     }
 
     /**
@@ -16585,7 +16670,7 @@ class TopLevel {
      * @return NSString|float|null
      */
     public static function sampleNSString(): NSString|float|null {
-        return NSString::sample(); /*235:nsString*/
+        return NSString::sample(); /*236:nsString*/
     }
 
     /**
@@ -16661,7 +16746,7 @@ class TopLevel {
      * @return NULLClass|float|null
      */
     public static function sampleNull(): NULLClass|float|null {
-        return NULLClass::sample(); /*236:null*/
+        return NULLClass::sample(); /*237:null*/
     }
 
     /**
@@ -16737,7 +16822,7 @@ class TopLevel {
      * @return UnionNullNull|float|null
      */
     public static function sampleTopLevelNull(): UnionNullNull|float|null {
-        return UnionNullNull::sample(); /*237:topLevelNull*/
+        return UnionNullNull::sample(); /*238:topLevelNull*/
     }
 
     /**
@@ -16813,7 +16898,7 @@ class TopLevel {
      * @return Nullptr|float|null
      */
     public static function sampleNullptr(): Nullptr|float|null {
-        return Nullptr::sample(); /*238:nullptr*/
+        return Nullptr::sample(); /*239:nullptr*/
     }
 
     /**
@@ -16889,7 +16974,7 @@ class TopLevel {
      * @return Number|float|null
      */
     public static function sampleNumber(): Number|float|null {
-        return Number::sample(); /*239:number*/
+        return Number::sample(); /*240:number*/
     }
 
     /**
@@ -16965,7 +17050,7 @@ class TopLevel {
      * @return ObjectClass|float|null
      */
     public static function sampleObject(): ObjectClass|float|null {
-        return ObjectClass::sample(); /*240:object*/
+        return ObjectClass::sample(); /*241:object*/
     }
 
     /**
@@ -17041,7 +17126,7 @@ class TopLevel {
      * @return ObjectMapper|float|null
      */
     public static function sampleObjectMapper(): ObjectMapper|float|null {
-        return ObjectMapper::sample(); /*241:objectMapper*/
+        return ObjectMapper::sample(); /*242:objectMapper*/
     }
 
     /**
@@ -17117,7 +17202,159 @@ class TopLevel {
      * @return Of|float|null
      */
     public static function sampleOf(): Of|float|null {
-        return Of::sample(); /*242:of*/
+        return Of::sample(); /*243:of*/
+    }
+
+    /**
+     * @param stdClass|float|null $value
+     * @throws Exception
+     * @return OffsetDateTime|float|null
+     */
+    public static function fromOffsetDateTime(stdClass|float|null $value): OffsetDateTime|float|null {
+        if (is_null($value)) {
+            return $value; /*null*/
+        } elseif (is_object($value)) {
+            return OffsetDateTime::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 toOffsetDateTime(): stdClass|float|null {
+        if (TopLevel::validateOffsetDateTime($this->offsetDateTime))  {
+            if (is_null($this->offsetDateTime)) {
+                return $this->offsetDateTime; /*null*/
+            } elseif ($this->offsetDateTime instanceof OffsetDateTime) {
+                return $this->offsetDateTime->to(); /*class*/
+            } elseif (is_float($this->offsetDateTime) || is_int($this->offsetDateTime)) {
+                return $this->offsetDateTime; /*float*/
+            } else {
+                throw new Exception('Union value has no matching member in TopLevel');
+            }
+        }
+        throw new Exception('never get to this TopLevel::offsetDateTime');
+    }
+
+    /**
+     * @param OffsetDateTime|float|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateOffsetDateTime(OffsetDateTime|float|null $value): bool {
+        if (is_null($value)) {
+            if (!is_null($value)) {
+                throw new Exception("Attribute Error:TopLevel::offsetDateTime");
+            }
+        } elseif ($value instanceof OffsetDateTime) {
+            $value->validate();
+        } elseif (is_float($value) || is_int($value)) {
+            if (!is_float($value) && !is_int($value)) {
+                throw new Exception("Attribute Error:TopLevel::offsetDateTime");
+            }
+        } else {
+            throw new Exception("Attribute Error:TopLevel::offsetDateTime");
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return OffsetDateTime|float|null
+     */
+    public function getOffsetDateTime(): OffsetDateTime|float|null {
+        if (TopLevel::validateOffsetDateTime($this->offsetDateTime))  {
+            return $this->offsetDateTime;
+        }
+        throw new Exception('never get to getOffsetDateTime TopLevel::offsetDateTime');
+    }
+
+    /**
+     * @return OffsetDateTime|float|null
+     */
+    public static function sampleOffsetDateTime(): OffsetDateTime|float|null {
+        return OffsetDateTime::sample(); /*244:offsetDateTime*/
+    }
+
+    /**
+     * @param stdClass|float|null $value
+     * @throws Exception
+     * @return OffsetTime|float|null
+     */
+    public static function fromOffsetTime(stdClass|float|null $value): OffsetTime|float|null {
+        if (is_null($value)) {
+            return $value; /*null*/
+        } elseif (is_object($value)) {
+            return OffsetTime::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 toOffsetTime(): stdClass|float|null {
+        if (TopLevel::validateOffsetTime($this->offsetTime))  {
+            if (is_null($this->offsetTime)) {
+                return $this->offsetTime; /*null*/
+            } elseif ($this->offsetTime instanceof OffsetTime) {
+                return $this->offsetTime->to(); /*class*/
+            } elseif (is_float($this->offsetTime) || is_int($this->offsetTime)) {
+                return $this->offsetTime; /*float*/
+            } else {
+                throw new Exception('Union value has no matching member in TopLevel');
+            }
+        }
+        throw new Exception('never get to this TopLevel::offsetTime');
+    }
+
+    /**
+     * @param OffsetTime|float|null
+     * @return bool
+     * @throws Exception
+     */
+    public static function validateOffsetTime(OffsetTime|float|null $value): bool {
+        if (is_null($value)) {
+            if (!is_null($value)) {
+                throw new Exception("Attribute Error:TopLevel::offsetTime");
+            }
+        } elseif ($value instanceof OffsetTime) {
+            $value->validate();
+        } elseif (is_float($value) || is_int($value)) {
+            if (!is_float($value) && !is_int($value)) {
+                throw new Exception("Attribute Error:TopLevel::offsetTime");
+            }
+        } else {
+            throw new Exception("Attribute Error:TopLevel::offsetTime");
+        }
+        return true;
+    }
+
+    /**
+     * @throws Exception
+     * @return OffsetTime|float|null
+     */
+    public function getOffsetTime(): OffsetTime|float|null {
+        if (TopLevel::validateOffsetTime($this->offsetTime))  {
+            return $this->offsetTime;
+        }
+        throw new Exception('never get to getOffsetTime TopLevel::offsetTime');
+    }
+
+    /**
+     * @return OffsetTime|float|null
+     */
+    public static function sampleOffsetTime(): OffsetTime|float|null {
+        return OffsetTime::sample(); /*245:offsetTime*/
     }
 
     /**
@@ -17193,7 +17430,7 @@ class TopLevel {
      * @return Oneway|float|null
      */
     public static function sampleOneway(): Oneway|float|null {
-        return Oneway::sample(); /*243:oneway*/
+        return Oneway::sample(); /*246:oneway*/
     }
 
     /**
@@ -17269,7 +17506,7 @@ class TopLevel {
      * @return Open|float|null
      */
     public static function sampleOpen(): Open|float|null {
-        return Open::sample(); /*244:open*/
+        return Open::sample(); /*247:open*/
     }
 
     /**
@@ -17345,7 +17582,7 @@ class TopLevel {
      * @return Operator|float|null
      */
     public static function sampleOperator(): Operator|float|null {
-        return Operator::sample(); /*245:operator*/
+        return Operator::sample(); /*248:operator*/
     }
 
     /**
@@ -17421,7 +17658,7 @@ class TopLevel {
      * @return Optional|float|null
      */
     public static function sampleOptional(): Optional|float|null {
-        return Optional::sample(); /*246:optional*/
+        return Optional::sample(); /*249:optional*/
     }
 
     /**
@@ -17497,7 +17734,7 @@ class TopLevel {
      * @return OrClass|float|null
      */
     public static function sampleOr(): OrClass|float|null {
-        return OrClass::sample(); /*247:or*/
+        return OrClass::sample(); /*250:or*/
     }
 
     /**
@@ -17573,7 +17810,7 @@ class TopLevel {
      * @return OrEq|float|null
      */
     public static function sampleOrEq(): OrEq|float|null {
-        return OrEq::sample(); /*248:orEq*/
+        return OrEq::sample(); /*251:orEq*/
     }
 
     /**
@@ -17649,7 +17886,7 @@ class TopLevel {
      * @return Out|float|null
      */
     public static function sampleOut(): Out|float|null {
-        return Out::sample(); /*249:out*/
+        return Out::sample(); /*252:out*/
     }
 
     /**
@@ -17725,7 +17962,7 @@ class TopLevel {
      * @return OverrideClass|float|null
      */
     public static function sampleOverride(): OverrideClass|float|null {
-        return OverrideClass::sample(); /*250:override*/
+        return OverrideClass::sample(); /*253:override*/
     }
 
     /**
@@ -17801,7 +18038,7 @@ class TopLevel {
      * @return Package|float|null
      */
     public static function samplePackage(): Package|float|null {
-        return Package::sample(); /*251:package*/
+        return Package::sample(); /*254:package*/
     }
 
     /**
@@ -17877,7 +18114,7 @@ class TopLevel {
      * @return Params|float|null
      */
     public static function sampleParams(): Params|float|null {
-        return Params::sample(); /*252:params*/
+        return Params::sample(); /*255:params*/
     }
 
     /**
@@ -17953,7 +18190,7 @@ class TopLevel {
      * @return Pass|float|null
      */
     public static function samplePass(): Pass|float|null {
-        return Pass::sample(); /*253:pass*/
+        return Pass::sample(); /*256:pass*/
     }
 
     /**
@@ -18029,7 +18266,7 @@ class TopLevel {
      * @return Port|float|null
      */
     public static function samplePort(): Port|float|null {
-        return Port::sample(); /*254:port*/
+        return Port::sample(); /*257:port*/
     }
 
     /**
@@ -18105,7 +18342,7 @@ class TopLevel {
      * @return Postfix|float|null
      */
     public static function samplePostfix(): Postfix|float|null {
-        return Postfix::sample(); /*255:postfix*/
+        return Postfix::sample(); /*258:postfix*/
     }
 
     /**
@@ -18181,7 +18418,7 @@ class TopLevel {
      * @return Precedence|float|null
      */
     public static function samplePrecedence(): Precedence|float|null {
-        return Precedence::sample(); /*256:precedence*/
+        return Precedence::sample(); /*259:precedence*/
     }
 
     /**
@@ -18257,7 +18494,7 @@ class TopLevel {
      * @return Prefix|float|null
      */
     public static function samplePrefix(): Prefix|float|null {
-        return Prefix::sample(); /*257:prefix*/
+        return Prefix::sample(); /*260:prefix*/
     }
 
     /**
@@ -18333,7 +18570,7 @@ class TopLevel {
      * @return PrimitiveKind|float|null
      */
     public static function samplePrimitiveKind(): PrimitiveKind|float|null {
-        return PrimitiveKind::sample(); /*258:primitiveKind*/
+        return PrimitiveKind::sample(); /*261:primitiveKind*/
     }
 
     /**
@@ -18409,7 +18646,7 @@ class TopLevel {
      * @return PrintClass|float|null
      */
     public static function samplePrint(): PrintClass|float|null {
-        return PrintClass::sample(); /*259:print*/
+        return PrintClass::sample(); /*262:print*/
     }
 
     /**
@@ -18485,7 +18722,7 @@ class TopLevel {
      * @return Printf|float|null
      */
     public static function samplePrintf(): Printf|float|null {
-        return Printf::sample(); /*260:printf*/
+        return Printf::sample(); /*263:printf*/
     }
 
     /**
@@ -18561,7 +18798,7 @@ class TopLevel {
      * @return PrintMembers|float|null
      */
     public static function samplePrintMembers(): PrintMembers|float|null {
-        return PrintMembers::sample(); /*261:printMembers*/
+        return PrintMembers::sample(); /*264:printMembers*/
     }
 
     /**
@@ -18637,7 +18874,7 @@ class TopLevel {
      * @return PrivateClass|float|null
      */
     public static function samplePrivate(): PrivateClass|float|null {
-        return PrivateClass::sample(); /*262:private*/
+        return PrivateClass::sample(); /*265:private*/
     }
 
     /**
@@ -18713,7 +18950,7 @@ class TopLevel {
      * @return ProtectedClass|float|null
      */
     public static function sampleProtected(): ProtectedClass|float|null {
-        return ProtectedClass::sample(); /*263:protected*/
+        return ProtectedClass::sample(); /*266:protected*/
     }
 
     /**
@@ -18789,7 +19026,7 @@ class TopLevel {
      * @return Protocol|float|null
      */
     public static function sampleProtocol(): Protocol|float|null {
-        return Protocol::sample(); /*264:protocol*/
+        return Protocol::sample(); /*267:protocol*/
     }
 
     /**
@@ -18865,7 +19102,7 @@ class TopLevel {
      * @return ProtocolClass|float|null
      */
     public static function sampleTopLevelProtocol(): ProtocolClass|float|null {
-        return ProtocolClass::sample(); /*265:topLevelProtocol*/
+        return ProtocolClass::sample(); /*268:topLevelProtocol*/
     }
 
     /**
@@ -18941,7 +19178,7 @@ class TopLevel {
      * @return PublicClass|float|null
      */
     public static function samplePublic(): PublicClass|float|null {
-        return PublicClass::sample(); /*266:public*/
+        return PublicClass::sample(); /*269:public*/
     }
 
     /**
@@ -19017,7 +19254,7 @@ class TopLevel {
      * @return Quicktype|float|null
      */
     public static function sampleQuicktype(): Quicktype|float|null {
-        return Quicktype::sample(); /*267:quicktype*/
+        return Quicktype::sample(); /*270:quicktype*/
     }
 
     /**
@@ -19093,7 +19330,7 @@ class TopLevel {
      * @return Raise|float|null
      */
     public static function sampleRaise(): Raise|float|null {
-        return Raise::sample(); /*268:raise*/
+        return Raise::sample(); /*271:raise*/
     }
 
     /**
@@ -19169,7 +19406,7 @@ class TopLevel {
      * @return Range|float|null
      */
     public static function sampleRange(): Range|float|null {
-        return Range::sample(); /*269:range*/
+        return Range::sample(); /*272:range*/
     }
 
     /**
@@ -19245,7 +19482,7 @@ class TopLevel {
      * @return ReadonlyClass|float|null
      */
     public static function sampleReadonly(): ReadonlyClass|float|null {
-        return ReadonlyClass::sample(); /*270:readonly*/
+        return ReadonlyClass::sample(); /*273:readonly*/
     }
 
     /**
@@ -19321,7 +19558,7 @@ class TopLevel {
      * @return Ref|float|null
      */
     public static function sampleRef(): Ref|float|null {
-        return Ref::sample(); /*271:ref*/
+        return Ref::sample(); /*274:ref*/
     }
 
     /**
@@ -19397,7 +19634,7 @@ class TopLevel {
      * @return RegExp|float|null
      */
     public static function sampleRegExp(): RegExp|float|null {
-        return RegExp::sample(); /*272:regExp*/
+        return RegExp::sample(); /*275:regExp*/
     }
 
     /**
@@ -19473,7 +19710,7 @@ class TopLevel {
      * @return Register|float|null
      */
     public static function sampleRegister(): Register|float|null {
-        return Register::sample(); /*273:register*/
+        return Register::sample(); /*276:register*/
     }
 
     /**
@@ -19549,7 +19786,7 @@ class TopLevel {
      * @return ReinterpretCast|float|null
      */
     public static function sampleReinterpretCast(): ReinterpretCast|float|null {
-        return ReinterpretCast::sample(); /*274:reinterpretCast*/
+        return ReinterpretCast::sample(); /*277:reinterpretCast*/
     }
 
     /**
@@ -19625,7 +19862,7 @@ class TopLevel {
      * @return Repeat|float|null
      */
     public static function sampleRepeat(): Repeat|float|null {
-        return Repeat::sample(); /*275:repeat*/
+        return Repeat::sample(); /*278:repeat*/
     }
 
     /**
@@ -19701,7 +19938,7 @@ class TopLevel {
      * @return RequireClass|float|null
      */
     public static function sampleRequire(): RequireClass|float|null {
-        return RequireClass::sample(); /*276:require*/
+        return RequireClass::sample(); /*279:require*/
     }
 
     /**
@@ -19777,7 +20014,7 @@ class TopLevel {
      * @return Required|float|null
      */
     public static function sampleRequired(): Required|float|null {
-        return Required::sample(); /*277:required*/
+        return Required::sample(); /*280:required*/
     }
 
     /**
@@ -19853,7 +20090,7 @@ class TopLevel {
      * @return Requires|float|null
      */
     public static function sampleRequires(): Requires|float|null {
-        return Requires::sample(); /*278:requires*/
+        return Requires::sample(); /*281:requires*/
     }
 
     /**
@@ -19929,7 +20166,7 @@ class TopLevel {
      * @return Restrict|float|null
      */
     public static function sampleRestrict(): Restrict|float|null {
-        return Restrict::sample(); /*279:restrict*/
+        return Restrict::sample(); /*282:restrict*/
     }
 
     /**
@@ -20005,7 +20242,7 @@ class TopLevel {
      * @return Retain|float|null
      */
     public static function sampleRetain(): Retain|float|null {
-        return Retain::sample(); /*280:retain*/
+        return Retain::sample(); /*283:retain*/
     }
 
     /**
@@ -20081,7 +20318,7 @@ class TopLevel {
      * @return Rethrows|float|null
      */
     public static function sampleRethrows(): Rethrows|float|null {
-        return Rethrows::sample(); /*281:rethrows*/
+        return Rethrows::sample(); /*284:rethrows*/
     }
 
     /**
@@ -20157,7 +20394,7 @@ class TopLevel {
      * @return ReturnClass|float|null
      */
     public static function sampleReturn(): ReturnClass|float|null {
-        return ReturnClass::sample(); /*282:return*/
+        return ReturnClass::sample(); /*285:return*/
     }
 
     /**
@@ -20233,7 +20470,7 @@ class TopLevel {
      * @return Right|float|null
      */
     public static function sampleRight(): Right|float|null {
-        return Right::sample(); /*283:right*/
+        return Right::sample(); /*286:right*/
     }
 
     /**
@@ -20309,7 +20546,7 @@ class TopLevel {
      * @return RuntimeType|float|null
      */
     public static function sampleRuntimeType(): RuntimeType|float|null {
-        return RuntimeType::sample(); /*284:runtimeType*/
+        return RuntimeType::sample(); /*287:runtimeType*/
     }
 
     /**
@@ -20385,7 +20622,7 @@ class TopLevel {
      * @return S|float|null
      */
     public static function sampleS(): S|float|null {
-        return S::sample(); /*285:s*/
+        return S::sample(); /*288:s*/
     }
 
     /**
@@ -20461,7 +20698,7 @@ class TopLevel {
      * @return Sbyte|float|null
      */
     public static function sampleSbyte(): Sbyte|float|null {
-        return Sbyte::sample(); /*286:sbyte*/
+        return Sbyte::sample(); /*289:sbyte*/
     }
 
     /**
@@ -20537,7 +20774,7 @@ class TopLevel {
      * @return Sealed|float|null
      */
     public static function sampleSealed(): Sealed|float|null {
-        return Sealed::sample(); /*287:sealed*/
+        return Sealed::sample(); /*290:sealed*/
     }
 
     /**
@@ -20613,7 +20850,7 @@ class TopLevel {
      * @return Sel|float|null
      */
     public static function sampleSel(): Sel|float|null {
-        return Sel::sample(); /*288:sel*/
+        return Sel::sample(); /*291:sel*/
     }
 
     /**
@@ -20689,7 +20926,7 @@ class TopLevel {
      * @return Select|float|null
      */
     public static function sampleSelect(): Select|float|null {
-        return Select::sample(); /*289:select*/
+        return Select::sample(); /*292:select*/
     }
 
     /**
@@ -20765,7 +21002,7 @@ class TopLevel {
      * @return SelfClass|float|null
      */
     public static function sampleSelf(): SelfClass|float|null {
-        return SelfClass::sample(); /*290:self*/
+        return SelfClass::sample(); /*293:self*/
     }
 
     /**
@@ -20841,7 +21078,7 @@ class TopLevel {
      * @return UnionSelfSelf|float|null
      */
     public static function sampleTopLevelSelf(): UnionSelfSelf|float|null {
-        return UnionSelfSelf::sample(); /*291:topLevelSelf*/
+        return UnionSelfSelf::sample(); /*294:topLevelSelf*/
     }
 
     /**
@@ -20917,7 +21154,7 @@ class TopLevel {
      * @return Sendable|float|null
      */
     public static function sampleSendable(): Sendable|float|null {
-        return Sendable::sample(); /*292:sendable*/
+        return Sendable::sample(); /*295:sendable*/
     }
 
     /**
@@ -20993,7 +21230,7 @@ class TopLevel {
      * @return SerialDescriptor|float|null
      */
     public static function sampleSerialDescriptor(): SerialDescriptor|float|null {
-        return SerialDescriptor::sample(); /*293:serialDescriptor*/
+        return SerialDescriptor::sample(); /*296:serialDescriptor*/
     }
 
     /**
@@ -21069,7 +21306,7 @@ class TopLevel {
      * @return SerializableClass|float|null
      */
     public static function sampleSerializable(): SerializableClass|float|null {
-        return SerializableClass::sample(); /*294:serializable*/
+        return SerializableClass::sample(); /*297:serializable*/
     }
 
     /**
@@ -21145,7 +21382,7 @@ class TopLevel {
      * @return Serialize|float|null
      */
     public static function sampleSerialize(): Serialize|float|null {
-        return Serialize::sample(); /*295:serialize*/
+        return Serialize::sample(); /*298:serialize*/
     }
 
     /**
@@ -21221,7 +21458,7 @@ class TopLevel {
      * @return SerializerProvider|float|null
      */
     public static function sampleSerializerProvider(): SerializerProvider|float|null {
-        return SerializerProvider::sample(); /*296:serializerProvider*/
+        return SerializerProvider::sample(); /*299:serializerProvider*/
     }
 
     /**
@@ -21297,7 +21534,7 @@ class TopLevel {
      * @return SerialName|float|null
      */
     public static function sampleSerialName(): SerialName|float|null {
-        return SerialName::sample(); /*297:serialName*/
+        return SerialName::sample(); /*300:serialName*/
     }
 
     /**
@@ -21373,7 +21610,7 @@ class TopLevel {
      * @return Set|float|null
      */
     public static function sampleSet(): Set|float|null {
-        return Set::sample(); /*298:set*/
+        return Set::sample(); /*301:set*/
     }
 
     /**
@@ -21449,7 +21686,7 @@ class TopLevel {
      * @return Short|float|null
      */
     public static function sampleShort(): Short|float|null {
-        return Short::sample(); /*299:short*/
+        return Short::sample(); /*302:short*/
     }
 
     /**
@@ -21525,7 +21762,7 @@ class TopLevel {
      * @return Signed|float|null
      */
     public static function sampleSigned(): Signed|float|null {
-        return Signed::sample(); /*300:signed*/
+        return Signed::sample(); /*303:signed*/
     }
 
     /**
@@ -21601,7 +21838,7 @@ class TopLevel {
      * @return SimpleModule|float|null
      */
     public static function sampleSimpleModule(): SimpleModule|float|null {
-        return SimpleModule::sample(); /*301:simpleModule*/
+        return SimpleModule::sample(); /*304:simpleModule*/
     }
 
     /**
@@ -21677,7 +21914,7 @@ class TopLevel {
      * @return Sizeof|float|null
      */
     public static function sampleSizeof(): Sizeof|float|null {
-        return Sizeof::sample(); /*302:sizeof*/
+        return Sizeof::sample(); /*305:sizeof*/
     }
 
     /**
@@ -21753,7 +21990,7 @@ class TopLevel {
      * @return Stackalloc|float|null
      */
     public static function sampleStackalloc(): Stackalloc|float|null {
-        return Stackalloc::sample(); /*303:stackalloc*/
+        return Stackalloc::sample(); /*306:stackalloc*/
     }
 
     /**
@@ -21829,7 +22066,7 @@ class TopLevel {
      * @return Standards|float|null
      */
     public static function sampleStandards(): Standards|float|null {
-        return Standards::sample(); /*304:standards*/
+        return Standards::sample(); /*307:standards*/
     }
 
     /**
@@ -21905,7 +22142,7 @@ class TopLevel {
      * @return StaticClass|float|null
      */
     public static function sampleStatic(): StaticClass|float|null {
-        return StaticClass::sample(); /*305:static*/
+        return StaticClass::sample(); /*308:static*/
     }
 
     /**
@@ -21981,7 +22218,7 @@ class TopLevel {
      * @return StaticAssert|float|null
      */
     public static function sampleStaticAssert(): StaticAssert|float|null {
-        return StaticAssert::sample(); /*306:staticAssert*/
+        return StaticAssert::sample(); /*309:staticAssert*/
     }
 
     /**
@@ -22057,7 +22294,7 @@ class TopLevel {
      * @return StaticCast|float|null
      */
     public static function sampleStaticCast(): StaticCast|float|null {
-        return StaticCast::sample(); /*307:staticCast*/
+        return StaticCast::sample(); /*310:staticCast*/
     }
 
     /**
@@ -22133,7 +22370,7 @@ class TopLevel {
      * @return StdDeserializer|float|null
      */
     public static function sampleStdDeserializer(): StdDeserializer|float|null {
-        return StdDeserializer::sample(); /*308:stdDeserializer*/
+        return StdDeserializer::sample(); /*311:stdDeserializer*/
     }
 
     /**
@@ -22209,7 +22446,7 @@ class TopLevel {
      * @return StdSerializer|float|null
      */
     public static function sampleStdSerializer(): StdSerializer|float|null {
-        return StdSerializer::sample(); /*309:stdSerializer*/
+        return StdSerializer::sample(); /*312:stdSerializer*/
     }
 
     /**
@@ -22285,7 +22522,7 @@ class TopLevel {
      * @return Strictfp|float|null
      */
     public static function sampleStrictfp(): Strictfp|float|null {
-        return Strictfp::sample(); /*310:strictfp*/
+        return Strictfp::sample(); /*313:strictfp*/
     }
 
     /**
@@ -22361,7 +22598,7 @@ class TopLevel {
      * @return StringClass|float|null
      */
     public static function sampleString(): StringClass|float|null {
-        return StringClass::sample(); /*311:string*/
+        return StringClass::sample(); /*314:string*/
     }
 
     /**
@@ -22437,7 +22674,7 @@ class TopLevel {
      * @return Struct|float|null
      */
     public static function sampleStruct(): Struct|float|null {
-        return Struct::sample(); /*312:struct*/
+        return Struct::sample(); /*315:struct*/
     }
 
     /**
@@ -22513,7 +22750,7 @@ class TopLevel {
      * @return Subscript|float|null
      */
     public static function sampleSubscript(): Subscript|float|null {
-        return Subscript::sample(); /*313:subscript*/
+        return Subscript::sample(); /*316:subscript*/
     }
 
     /**
@@ -22589,7 +22826,7 @@ class TopLevel {
      * @return Super|float|null
      */
     public static function sampleSuper(): Super|float|null {
-        return Super::sample(); /*314:super*/
+        return Super::sample(); /*317:super*/
     }
 
     /**
@@ -22665,7 +22902,7 @@ class TopLevel {
      * @return SwitchClass|float|null
      */
     public static function sampleSwitch(): SwitchClass|float|null {
-        return SwitchClass::sample(); /*315:switch*/
+        return SwitchClass::sample(); /*318:switch*/
     }
 
     /**
@@ -22741,7 +22978,7 @@ class TopLevel {
      * @return Symbol|float|null
      */
     public static function sampleSymbol(): Symbol|float|null {
-        return Symbol::sample(); /*316:symbol*/
+        return Symbol::sample(); /*319:symbol*/
     }
 
     /**
@@ -22817,7 +23054,7 @@ class TopLevel {
      * @return Synchronized|float|null
      */
     public static function sampleSynchronized(): Synchronized|float|null {
-        return Synchronized::sample(); /*317:synchronized*/
+        return Synchronized::sample(); /*320:synchronized*/
     }
 
     /**
@@ -22893,7 +23130,7 @@ class TopLevel {
      * @return System|float|null
      */
     public static function sampleSystem(): System|float|null {
-        return System::sample(); /*318:system*/
+        return System::sample(); /*321:system*/
     }
 
     /**
@@ -22969,7 +23206,7 @@ class TopLevel {
      * @return Template|float|null
      */
     public static function sampleTemplate(): Template|float|null {
-        return Template::sample(); /*319:template*/
+        return Template::sample(); /*322:template*/
     }
 
     /**
@@ -23045,7 +23282,7 @@ class TopLevel {
      * @return Then|float|null
      */
     public static function sampleThen(): Then|float|null {
-        return Then::sample(); /*320:then*/
+        return Then::sample(); /*323:then*/
     }
 
     /**
@@ -23121,7 +23358,7 @@ class TopLevel {
      * @return This|float|null
      */
     public static function sampleTopLevelThis(): This|float|null {
-        return This::sample(); /*321:topLevelThis*/
+        return This::sample(); /*324:topLevelThis*/
     }
 
     /**
@@ -23197,7 +23434,7 @@ class TopLevel {
      * @return ThreadLocal|float|null
      */
     public static function sampleThreadLocal(): ThreadLocal|float|null {
-        return ThreadLocal::sample(); /*322:threadLocal*/
+        return ThreadLocal::sample(); /*325:threadLocal*/
     }
 
     /**
@@ -23273,7 +23510,7 @@ class TopLevel {
      * @return ThrowClass|float|null
      */
     public static function sampleThrow(): ThrowClass|float|null {
-        return ThrowClass::sample(); /*323:throw*/
+        return ThrowClass::sample(); /*326:throw*/
     }
 
     /**
@@ -23349,7 +23586,7 @@ class TopLevel {
      * @return Throws|float|null
      */
     public static function sampleThrows(): Throws|float|null {
-        return Throws::sample(); /*324:throws*/
+        return Throws::sample(); /*327:throws*/
     }
 
     /**
@@ -23425,7 +23662,7 @@ class TopLevel {
      * @return TimeOnly|float|null
      */
     public static function sampleTimeOnly(): TimeOnly|float|null {
-        return TimeOnly::sample(); /*325:timeOnly*/
+        return TimeOnly::sample(); /*328:timeOnly*/
     }
 
     /**
@@ -23501,7 +23738,7 @@ class TopLevel {
      * @return TimeOnlyConverter|float|null
      */
     public static function sampleTimeOnlyConverter(): TimeOnlyConverter|float|null {
-        return TimeOnlyConverter::sample(); /*326:timeOnlyConverter*/
+        return TimeOnlyConverter::sample(); /*329:timeOnlyConverter*/
     }
 
     /**
@@ -23577,7 +23814,7 @@ class TopLevel {
      * @return TimeZone|float|null
      */
     public static function sampleTimeZone(): TimeZone|float|null {
-        return TimeZone::sample(); /*327:timeZone*/
+        return TimeZone::sample(); /*330:timeZone*/
     }
 
     /**
@@ -23653,7 +23890,7 @@ class TopLevel {
      * @return ToJSON|float|null
      */
     public static function sampleToJSON(): ToJSON|float|null {
-        return ToJSON::sample(); /*328:toJSON*/
+        return ToJSON::sample(); /*331:toJSON*/
     }
 
     /**
@@ -23729,7 +23966,7 @@ class TopLevel {
      * @return TopLevelClass|float|null
      */
     public static function sampleTopLevel(): TopLevelClass|float|null {
-        return TopLevelClass::sample(); /*329:topLevel*/
+        return TopLevelClass::sample(); /*332:topLevel*/
     }
 
     /**
@@ -23805,7 +24042,7 @@ class TopLevel {
      * @return ToString|float|null
      */
     public static function sampleToString(): ToString|float|null {
-        return ToString::sample(); /*330:toString*/
+        return ToString::sample(); /*333:toString*/
     }
 
     /**
@@ -23881,7 +24118,7 @@ class TopLevel {
      * @return Transient|float|null
      */
     public static function sampleTransient(): Transient|float|null {
-        return Transient::sample(); /*331:transient*/
+        return Transient::sample(); /*334:transient*/
     }
 
     /**
@@ -23957,7 +24194,7 @@ class TopLevel {
      * @return TrueClass|float|null
      */
     public static function sampleTrue(): TrueClass|float|null {
-        return TrueClass::sample(); /*332:true*/
+        return TrueClass::sample(); /*335:true*/
     }
 
     /**
@@ -24033,7 +24270,7 @@ class TopLevel {
      * @return UnionTrueTrue|float|null
      */
     public static function sampleTopLevelTrue(): UnionTrueTrue|float|null {
-        return UnionTrueTrue::sample(); /*333:topLevelTrue*/
+        return UnionTrueTrue::sample(); /*336:topLevelTrue*/
     }
 
     /**
@@ -24109,7 +24346,7 @@ class TopLevel {
      * @return TryClass|float|null
      */
     public static function sampleTry(): TryClass|float|null {
-        return TryClass::sample(); /*334:try*/
+        return TryClass::sample(); /*337:try*/
     }
 
     /**
@@ -24185,7 +24422,7 @@ class TopLevel {
      * @return Type|float|null
      */
     public static function sampleType(): Type|float|null {
-        return Type::sample(); /*335:type*/
+        return Type::sample(); /*338:type*/
     }
 
     /**
@@ -24261,7 +24498,7 @@ class TopLevel {
      * @return TypeClass|float|null
      */
     public static function sampleTopLevelType(): TypeClass|float|null {
-        return TypeClass::sample(); /*336:topLevelType*/
+        return TypeClass::sample(); /*339:topLevelType*/
     }
 
     /**
@@ -24337,7 +24574,7 @@ class TopLevel {
      * @return Typealias|float|null
      */
     public static function sampleTypealias(): Typealias|float|null {
-        return Typealias::sample(); /*337:typealias*/
+        return Typealias::sample(); /*340:typealias*/
     }
 
     /**
@@ -24413,7 +24650,7 @@ class TopLevel {
      * @return Typedef|float|null
      */
     public static function sampleTypedef(): Typedef|float|null {
-        return Typedef::sample(); /*338:typedef*/
+        return Typedef::sample(); /*341:typedef*/
     }
 
     /**
@@ -24489,7 +24726,7 @@ class TopLevel {
      * @return Typeid|float|null
      */
     public static function sampleTypeid(): Typeid|float|null {
-        return Typeid::sample(); /*339:typeid*/
+        return Typeid::sample(); /*342:typeid*/
     }
 
     /**
@@ -24565,7 +24802,7 @@ class TopLevel {
      * @return Typename|float|null
      */
     public static function sampleTypename(): Typename|float|null {
-        return Typename::sample(); /*340:typename*/
+        return Typename::sample(); /*343:typename*/
     }
 
     /**
@@ -24641,7 +24878,7 @@ class TopLevel {
      * @return Typeof|float|null
      */
     public static function sampleTypeof(): Typeof|float|null {
-        return Typeof::sample(); /*341:typeof*/
+        return Typeof::sample(); /*344:typeof*/
     }
 
     /**
@@ -24717,7 +24954,7 @@ class TopLevel {
      * @return Uint|float|null
      */
     public static function sampleUint(): Uint|float|null {
-        return Uint::sample(); /*342:uint*/
+        return Uint::sample(); /*345:uint*/
     }
 
     /**
@@ -24793,7 +25030,7 @@ class TopLevel {
      * @return Ulong|float|null
      */
     public static function sampleUlong(): Ulong|float|null {
-        return Ulong::sample(); /*343:ulong*/
+        return Ulong::sample(); /*346:ulong*/
     }
 
     /**
@@ -24869,7 +25106,7 @@ class TopLevel {
      * @return Unchecked|float|null
      */
     public static function sampleUnchecked(): Unchecked|float|null {
-        return Unchecked::sample(); /*344:unchecked*/
+        return Unchecked::sample(); /*347:unchecked*/
     }
 
     /**
@@ -24945,7 +25182,7 @@ class TopLevel {
      * @return Undefined|float|null
      */
     public static function sampleUndefined(): Undefined|float|null {
-        return Undefined::sample(); /*345:undefined*/
+        return Undefined::sample(); /*348:undefined*/
     }
 
     /**
@@ -25021,7 +25258,7 @@ class TopLevel {
      * @return UnionClass|float|null
      */
     public static function sampleUnion(): UnionClass|float|null {
-        return UnionClass::sample(); /*346:union*/
+        return UnionClass::sample(); /*349:union*/
     }
 
     /**
@@ -25097,7 +25334,7 @@ class TopLevel {
      * @return Unowned|float|null
      */
     public static function sampleUnowned(): Unowned|float|null {
-        return Unowned::sample(); /*347:unowned*/
+        return Unowned::sample(); /*350:unowned*/
     }
 
     /**
@@ -25173,7 +25410,7 @@ class TopLevel {
      * @return Unsafe|float|null
      */
     public static function sampleUnsafe(): Unsafe|float|null {
-        return Unsafe::sample(); /*348:unsafe*/
+        return Unsafe::sample(); /*351:unsafe*/
     }
 
     /**
@@ -25249,7 +25486,7 @@ class TopLevel {
      * @return Unsigned|float|null
      */
     public static function sampleUnsigned(): Unsigned|float|null {
-        return Unsigned::sample(); /*349:unsigned*/
+        return Unsigned::sample(); /*352:unsigned*/
     }
 
     /**
@@ -25325,7 +25562,7 @@ class TopLevel {
      * @return UseSerializers|float|null
      */
     public static function sampleUseSerializers(): UseSerializers|float|null {
-        return UseSerializers::sample(); /*350:useSerializers*/
+        return UseSerializers::sample(); /*353:useSerializers*/
     }
 
     /**
@@ -25401,7 +25638,7 @@ class TopLevel {
      * @return Ushort|float|null
      */
     public static function sampleUshort(): Ushort|float|null {
-        return Ushort::sample(); /*351:ushort*/
+        return Ushort::sample(); /*354:ushort*/
     }
 
     /**
@@ -25477,7 +25714,7 @@ class TopLevel {
      * @return Using|float|null
      */
     public static function sampleUsing(): Using|float|null {
-        return Using::sample(); /*352:using*/
+        return Using::sample(); /*355:using*/
     }
 
     /**
@@ -25553,7 +25790,7 @@ class TopLevel {
      * @return Utf8JSONReader|float|null
      */
     public static function sampleUtf8JSONReader(): Utf8JSONReader|float|null {
-        return Utf8JSONReader::sample(); /*353:utf8JSONReader*/
+        return Utf8JSONReader::sample(); /*356:utf8JSONReader*/
     }
 
     /**
@@ -25629,7 +25866,7 @@ class TopLevel {
      * @return Utf8JSONWriter|float|null
      */
     public static function sampleUtf8JSONWriter(): Utf8JSONWriter|float|null {
-        return Utf8JSONWriter::sample(); /*354:utf8JSONWriter*/
+        return Utf8JSONWriter::sample(); /*357:utf8JSONWriter*/
     }
 
     /**
@@ -25705,7 +25942,7 @@ class TopLevel {
      * @return UUID|float|null
      */
     public static function sampleUUID(): UUID|float|null {
-        return UUID::sample(); /*355:uuid*/
+        return UUID::sample(); /*358:uuid*/
     }
 
     /**
@@ -25781,7 +26018,7 @@ class TopLevel {
      * @return VarClass|float|null
      */
     public static function sampleVar(): VarClass|float|null {
-        return VarClass::sample(); /*356:var*/
+        return VarClass::sample(); /*359:var*/
     }
 
     /**
@@ -25857,7 +26094,7 @@ class TopLevel {
      * @return Virtual|float|null
      */
     public static function sampleVirtual(): Virtual|float|null {
-        return Virtual::sample(); /*357:virtual*/
+        return Virtual::sample(); /*360:virtual*/
     }
 
     /**
@@ -25933,7 +26170,7 @@ class TopLevel {
      * @return VoidClass|float|null
      */
     public static function sampleVoid(): VoidClass|float|null {
-        return VoidClass::sample(); /*358:void*/
+        return VoidClass::sample(); /*361:void*/
     }
 
     /**
@@ -26009,7 +26246,7 @@ class TopLevel {
      * @return Volatile|float|null
      */
     public static function sampleVolatile(): Volatile|float|null {
-        return Volatile::sample(); /*359:volatile*/
+        return Volatile::sample(); /*362:volatile*/
     }
 
     /**
@@ -26085,7 +26322,7 @@ class TopLevel {
      * @return WcharT|float|null
      */
     public static function sampleWcharT(): WcharT|float|null {
-        return WcharT::sample(); /*360:wcharT*/
+        return WcharT::sample(); /*363:wcharT*/
     }
 
     /**
@@ -26161,7 +26398,7 @@ class TopLevel {
      * @return Weak|float|null
      */
     public static function sampleWeak(): Weak|float|null {
-        return Weak::sample(); /*361:weak*/
+        return Weak::sample(); /*364:weak*/
     }
 
     /**
@@ -26237,7 +26474,7 @@ class TopLevel {
      * @return Where|float|null
      */
     public static function sampleWhere(): Where|float|null {
-        return Where::sample(); /*362:where*/
+        return Where::sample(); /*365:where*/
     }
 
     /**
@@ -26313,7 +26550,7 @@ class TopLevel {
      * @return WhileClass|float|null
      */
     public static function sampleWhile(): WhileClass|float|null {
-        return WhileClass::sample(); /*363:while*/
+        return WhileClass::sample(); /*366:while*/
     }
 
     /**
@@ -26389,7 +26626,7 @@ class TopLevel {
      * @return WillSet|float|null
      */
     public static function sampleWillSet(): WillSet|float|null {
-        return WillSet::sample(); /*364:willSet*/
+        return WillSet::sample(); /*367:willSet*/
     }
 
     /**
@@ -26465,7 +26702,7 @@ class TopLevel {
      * @return With|float|null
      */
     public static function sampleWith(): With|float|null {
-        return With::sample(); /*365:with*/
+        return With::sample(); /*368:with*/
     }
 
     /**
@@ -26541,7 +26778,7 @@ class TopLevel {
      * @return XorClass|float|null
      */
     public static function sampleXor(): XorClass|float|null {
-        return XorClass::sample(); /*366:xor*/
+        return XorClass::sample(); /*369:xor*/
     }
 
     /**
@@ -26617,7 +26854,7 @@ class TopLevel {
      * @return XorEq|float|null
      */
     public static function sampleXorEq(): XorEq|float|null {
-        return XorEq::sample(); /*367:xorEq*/
+        return XorEq::sample(); /*370:xorEq*/
     }
 
     /**
@@ -26693,7 +26930,7 @@ class TopLevel {
      * @return Yes|float|null
      */
     public static function sampleYes(): Yes|float|null {
-        return Yes::sample(); /*368:yes*/
+        return Yes::sample(); /*371:yes*/
     }
 
     /**
@@ -26769,7 +27006,7 @@ class TopLevel {
      * @return YieldClass|float|null
      */
     public static function sampleYield(): YieldClass|float|null {
-        return YieldClass::sample(); /*369:yield*/
+        return YieldClass::sample(); /*372:yield*/
     }
 
     /**
@@ -26955,6 +27192,7 @@ class TopLevel {
         || TopLevel::validateLeft($this->left)
         || TopLevel::validateLet($this->let)
         || TopLevel::validateList($this->list)
+        || TopLevel::validateLocalDate($this->localDate)
         || TopLevel::validateLocale($this->locale)
         || TopLevel::validateLock($this->lock)
         || TopLevel::validateLong($this->long)
@@ -26989,6 +27227,8 @@ class TopLevel {
         || TopLevel::validateObject($this->object)
         || TopLevel::validateObjectMapper($this->objectMapper)
         || TopLevel::validateOf($this->of)
+        || TopLevel::validateOffsetDateTime($this->offsetDateTime)
+        || TopLevel::validateOffsetTime($this->offsetTime)
         || TopLevel::validateOneway($this->oneway)
         || TopLevel::validateOpen($this->open)
         || TopLevel::validateOperator($this->operator)
@@ -27302,6 +27542,7 @@ class TopLevel {
         $out->{'left'} = $this->toLeft();
         $out->{'let'} = $this->toLet();
         $out->{'list'} = $this->toList();
+        $out->{'LocalDate'} = $this->toLocalDate();
         $out->{'Locale'} = $this->toLocale();
         $out->{'lock'} = $this->toLock();
         $out->{'long'} = $this->toLong();
@@ -27336,6 +27577,8 @@ class TopLevel {
         $out->{'object'} = $this->toObject();
         $out->{'ObjectMapper'} = $this->toObjectMapper();
         $out->{'of'} = $this->toOf();
+        $out->{'OffsetDateTime'} = $this->toOffsetDateTime();
+        $out->{'OffsetTime'} = $this->toOffsetTime();
         $out->{'oneway'} = $this->toOneway();
         $out->{'open'} = $this->toOpen();
         $out->{'operator'} = $this->toOperator();
@@ -27651,6 +27894,7 @@ class TopLevel {
         ,TopLevel::fromLeft($obj->{'left'})
         ,TopLevel::fromLet($obj->{'let'})
         ,TopLevel::fromList($obj->{'list'})
+        ,TopLevel::fromLocalDate($obj->{'LocalDate'})
         ,TopLevel::fromLocale($obj->{'Locale'})
         ,TopLevel::fromLock($obj->{'lock'})
         ,TopLevel::fromLong($obj->{'long'})
@@ -27685,6 +27929,8 @@ class TopLevel {
         ,TopLevel::fromObject($obj->{'object'})
         ,TopLevel::fromObjectMapper($obj->{'ObjectMapper'})
         ,TopLevel::fromOf($obj->{'of'})
+        ,TopLevel::fromOffsetDateTime($obj->{'OffsetDateTime'})
+        ,TopLevel::fromOffsetTime($obj->{'OffsetTime'})
         ,TopLevel::fromOneway($obj->{'oneway'})
         ,TopLevel::fromOpen($obj->{'open'})
         ,TopLevel::fromOperator($obj->{'operator'})
@@ -27998,6 +28244,7 @@ class TopLevel {
         ,TopLevel::sampleLeft()
         ,TopLevel::sampleLet()
         ,TopLevel::sampleList()
+        ,TopLevel::sampleLocalDate()
         ,TopLevel::sampleLocale()
         ,TopLevel::sampleLock()
         ,TopLevel::sampleLong()
@@ -28032,6 +28279,8 @@ class TopLevel {
         ,TopLevel::sampleObject()
         ,TopLevel::sampleObjectMapper()
         ,TopLevel::sampleOf()
+        ,TopLevel::sampleOffsetDateTime()
+        ,TopLevel::sampleOffsetTime()
         ,TopLevel::sampleOneway()
         ,TopLevel::sampleOpen()
         ,TopLevel::sampleOperator()
@@ -35903,6 +36152,51 @@ class ListClass {
     }
 }
 
+// This is an autogenerated file:LocalDate
+
+class LocalDate {
+
+    /**
+     */
+    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 LocalDate
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): LocalDate {
+        return new LocalDate(
+        );
+    }
+
+    /**
+     * @return LocalDate
+     */
+    public static function sample(): LocalDate {
+        return new LocalDate(
+        );
+    }
+}
+
 // This is an autogenerated file:LocaleClass
 
 class LocaleClass {
@@ -37343,6 +37637,96 @@ class Of {
     }
 }
 
+// This is an autogenerated file:OffsetDateTime
+
+class OffsetDateTime {
+
+    /**
+     */
+    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 OffsetDateTime
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): OffsetDateTime {
+        return new OffsetDateTime(
+        );
+    }
+
+    /**
+     * @return OffsetDateTime
+     */
+    public static function sample(): OffsetDateTime {
+        return new OffsetDateTime(
+        );
+    }
+}
+
+// This is an autogenerated file:OffsetTime
+
+class OffsetTime {
+
+    /**
+     */
+    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 OffsetTime
+     * @throws Exception
+     */
+    public static function from(stdClass $obj): OffsetTime {
+        return new OffsetTime(
+        );
+    }
+
+    /**
+     * @return OffsetTime
+     */
+    public static function sample(): OffsetTime {
+        return new OffsetTime(
+        );
+    }
+}
+
 // This is an autogenerated file:Oneway
 
 class Oneway {
diff --git a/base/schema-pike/test/inputs/schema/date-time.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/date-time.schema/default/TopLevel.pmod
index 642fe6f..5134e95 100644
--- a/base/schema-pike/test/inputs/schema/date-time.schema/default/TopLevel.pmod
+++ b/head/schema-pike/test/inputs/schema/date-time.schema/default/TopLevel.pmod
@@ -13,17 +13,23 @@
 // match the expected interface, even if the JSON itself is valid.
 
 class TopLevel {
-    array(ComplexUnionArray) complex_union_array; // json: "complex-union-array"
-    string                   date;                // json: "date"
-    string                   date_time;           // json: "date-time"
-    string                   time;                // json: "time"
-    array(string)            union_array;         // json: "union-array"
+    array(ComplexUnionArray) complex_union_array;    // json: "complex-union-array"
+    string                   date;                   // json: "date"
+    string                   date_time;              // json: "date-time"
+    LocalDate|mixed          local_date_class;       // json: "local-date-class"
+    OffsetDateTime|mixed     offset_date_time_class; // json: "offset-date-time-class"
+    OffsetTime|mixed         offset_time_class;      // json: "offset-time-class"
+    string                   time;                   // json: "time"
+    array(string)            union_array;            // json: "union-array"
 
     string encode_json() {
         mapping(string:mixed) json = ([
             "complex-union-array" : complex_union_array,
             "date" : date,
             "date-time" : date_time,
+            "local-date-class" : local_date_class,
+            "offset-date-time-class" : offset_date_time_class,
+            "offset-time-class" : offset_time_class,
             "time" : time,
             "union-array" : union_array,
         ]);
@@ -38,6 +44,9 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.complex_union_array = json["complex-union-array"];
     retval.date = json["date"];
     retval.date_time = json["date-time"];
+    retval.local_date_class = json["local-date-class"];
+    retval.offset_date_time_class = json["offset-date-time-class"];
+    retval.offset_time_class = json["offset-time-class"];
     retval.time = json["time"];
     retval.union_array = json["union-array"];
 
@@ -49,3 +58,51 @@ typedef int|string ComplexUnionArray;
 ComplexUnionArray ComplexUnionArray_from_JSON(mixed json) {
     return json;
 }
+
+class LocalDate {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+LocalDate LocalDate_from_JSON(mixed json) {
+    LocalDate retval = LocalDate();
+
+    return retval;
+}
+
+class OffsetDateTime {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+OffsetDateTime OffsetDateTime_from_JSON(mixed json) {
+    OffsetDateTime retval = OffsetDateTime();
+
+    return retval;
+}
+
+class OffsetTime {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+OffsetTime OffsetTime_from_JSON(mixed json) {
+    OffsetTime retval = OffsetTime();
+
+    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 db46bce..8995ba6 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
@@ -209,6 +209,7 @@ enum Enum {
     LEFT = "left",                                                 // json: "left"
     LET = "let",                                                   // json: "let"
     LIST = "list",                                                 // json: "list"
+    LOCAL_DATE = "LocalDate",                                      // json: "LocalDate"
     LOCALE = "Locale",                                             // json: "Locale"
     LOCK = "lock",                                                 // json: "lock"
     LONG = "long",                                                 // json: "long"
@@ -241,6 +242,8 @@ enum Enum {
     NULLPTR = "nullptr",                                           // json: "nullptr"
     NUMBER = "number",                                             // json: "number"
     OBJECT = "object",                                             // json: "object"
+    OFFSET_DATE_TIME = "OffsetDateTime",                           // json: "OffsetDateTime"
+    OFFSET_TIME = "OffsetTime",                                    // json: "OffsetTime"
     OBJECT_MAPPER = "ObjectMapper",                                // json: "ObjectMapper"
     OF = "of",                                                     // json: "of"
     ONEWAY = "oneway",                                             // json: "oneway"
@@ -375,5 +378,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 != "Serializable"&&json != "self"&&json != "Sendable"&&json != "serialize"&&json != "SerialName"&&json != "KSerializer"&&json != "PrimitiveKind"&&json != "SerialDescriptor"&&json != "SerializerProvider"&&json != "set"&&json != "short"&&json != "signed"&&json != "SimpleModule"&&json != "sizeof"&&json != "stackalloc"&&json != "Standards"&&json != "static"&&json != "static_assert"&&json != "static_cast"&&json != "StdDeserializer"&&json != "StdSerializer"&&json != "strictfp"&&json != "string"&&json != "struct"&&json != "subscript"&&json != "super"&&json != "switch"&&json != "symbol"&&json != "synchronized"&&json != "system"&&json != "template"&&json != "then"&&json != "this"&&json != "thread_local"&&json != "throw"&&json != "throws"&&json != "TimeOnly"&&json != "TimeOnlyConverter"&&json != "TimeZone"&&json != "to_json"&&json != "top_level"&&json != "toString"&&json != "transient"&&json != "True"&&json != "true"&&json != "try"&&json != "Type"&&json != "type"&&json != "typealias"&&json != "typedef"&&json != "typeid"&&json != "typename"&&json != "typeof"&&json != "uint"&&json != "ulong"&&json != "unchecked"&&json != "undefined"&&json != "union"&&json != "UseSerializers"&&json != "unowned"&&json != "unsafe"&&json != "unsigned"&&json != "ushort"&&json != "using"&&json != "Utf8JsonReader"&&json != "Utf8JsonWriter"&&json != "UUID"&&json != "var"&&json != "virtual"&&json != "void"&&json != "volatile"&&json != "wchar_t"&&json != "weak"&&json != "where"&&json != "while"&&json != "willSet"&&json != "with"&&json != "xor"&&json != "xor_eq"&&json != "YES"&&json != "yield"&&json != "dummy")error("enum");return json;
+    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 != "LocalDate"&&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 != "OffsetDateTime"&&json != "OffsetTime"&&json != "ObjectMapper"&&json != "of"&&json != "oneway"&&json != "open"&&json != "operator"&&json != "optional"&&json != "or"&&json != "or_eq"&&json != "out"&&json != "override"&&json != "package"&&json != "params"&&json != "pass"&&json != "port"&&json != "postfix"&&json != "precedence"&&json != "prefix"&&json != "print"&&json != "printf"&&json != "printMembers"&&json != "private"&&json != "protected"&&json != "Protocol"&&json != "protocol"&&json != "public"&&json != "quicktype"&&json != "raise"&&json != "range"&&json != "readonly"&&json != "ref"&&json != "RegExp"&&json != "register"&&json != "reinterpret_cast"&&json != "repeat"&&json != "require"&&json != "required"&&json != "requires"&&json != "restrict"&&json != "retain"&&json != "rethrows"&&json != "return"&&json != "right"&&json != "runtimeType"&&json != "s"&&json != "sbyte"&&json != "sealed"&&json != "SEL"&&json != "select"&&json != "Self"&&json != "Serializable"&&json != "self"&&json != "Sendable"&&json != "serialize"&&json != "SerialName"&&json != "KSerializer"&&json != "PrimitiveKind"&&json != "SerialDescriptor"&&json != "SerializerProvider"&&json != "set"&&json != "short"&&json != "signed"&&json != "SimpleModule"&&json != "sizeof"&&json != "stackalloc"&&json != "Standards"&&json != "static"&&json != "static_assert"&&json != "static_cast"&&json != "StdDeserializer"&&json != "StdSerializer"&&json != "strictfp"&&json != "string"&&json != "struct"&&json != "subscript"&&json != "super"&&json != "switch"&&json != "symbol"&&json != "synchronized"&&json != "system"&&json != "template"&&json != "then"&&json != "this"&&json != "thread_local"&&json != "throw"&&json != "throws"&&json != "TimeOnly"&&json != "TimeOnlyConverter"&&json != "TimeZone"&&json != "to_json"&&json != "top_level"&&json != "toString"&&json != "transient"&&json != "True"&&json != "true"&&json != "try"&&json != "Type"&&json != "type"&&json != "typealias"&&json != "typedef"&&json != "typeid"&&json != "typename"&&json != "typeof"&&json != "uint"&&json != "ulong"&&json != "unchecked"&&json != "undefined"&&json != "union"&&json != "UseSerializers"&&json != "unowned"&&json != "unsafe"&&json != "unsigned"&&json != "ushort"&&json != "using"&&json != "Utf8JsonReader"&&json != "Utf8JsonWriter"&&json != "UUID"&&json != "var"&&json != "virtual"&&json != "void"&&json != "volatile"&&json != "wchar_t"&&json != "weak"&&json != "where"&&json != "while"&&json != "willSet"&&json != "with"&&json != "xor"&&json != "xor_eq"&&json != "YES"&&json != "yield"&&json != "dummy")error("enum");return json;
 }
diff --git a/base/schema-pike/test/inputs/schema/keyword-unions.schema/default/TopLevel.pmod b/head/schema-pike/test/inputs/schema/keyword-unions.schema/default/TopLevel.pmod
index dcc7d8b..e4f3fbc 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
@@ -191,6 +191,7 @@ class TopLevel {
     UnionLeft                       left;                           // json: "left"
     UnionLet                        let;                            // json: "let"
     UnionList                       list;                           // json: "list"
+    UnionLocalDate                  local_date;                     // json: "LocalDate"
     UnionLocale                     locale;                         // json: "Locale"
     UnionLock                       lock;                           // json: "lock"
     UnionLong                       long;                           // json: "long"
@@ -225,6 +226,8 @@ class TopLevel {
     UnionObject                     top_level_object;               // json: "object"
     UnionObjectMapper               object_mapper;                  // json: "ObjectMapper"
     UnionOf                         of;                             // json: "of"
+    UnionOffsetDateTime             offset_date_time;               // json: "OffsetDateTime"
+    UnionOffsetTime                 offset_time;                    // json: "OffsetTime"
     UnionOneway                     oneway;                         // json: "oneway"
     UnionOpen                       open;                           // json: "open"
     UnionOperator                   operator;                       // json: "operator"
@@ -533,6 +536,7 @@ class TopLevel {
             "left" : left,
             "let" : let,
             "list" : list,
+            "LocalDate" : local_date,
             "Locale" : locale,
             "lock" : lock,
             "long" : long,
@@ -567,6 +571,8 @@ class TopLevel {
             "object" : top_level_object,
             "ObjectMapper" : object_mapper,
             "of" : of,
+            "OffsetDateTime" : offset_date_time,
+            "OffsetTime" : offset_time,
             "oneway" : oneway,
             "open" : open,
             "operator" : operator,
@@ -1058,6 +1064,8 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.let = json["let"];
     if (arrayp(json["list"])) error("Unexpected array");
     retval.list = json["list"];
+    if (arrayp(json["LocalDate"])) error("Unexpected array");
+    retval.local_date = json["LocalDate"];
     if (arrayp(json["Locale"])) error("Unexpected array");
     retval.locale = json["Locale"];
     if (arrayp(json["lock"])) error("Unexpected array");
@@ -1126,6 +1134,10 @@ TopLevel TopLevel_from_JSON(mixed json) {
     retval.object_mapper = json["ObjectMapper"];
     if (arrayp(json["of"])) error("Unexpected array");
     retval.of = json["of"];
+    if (arrayp(json["OffsetDateTime"])) error("Unexpected array");
+    retval.offset_date_time = json["OffsetDateTime"];
+    if (arrayp(json["OffsetTime"])) error("Unexpected array");
+    retval.offset_time = json["OffsetTime"];
     if (arrayp(json["oneway"])) error("Unexpected array");
     retval.oneway = json["oneway"];
     if (arrayp(json["open"])) error("Unexpected array");
@@ -4640,6 +4652,28 @@ List List_from_JSON(mixed json) {
     return retval;
 }
 
+typedef float|LocalDate UnionLocalDate;
+
+UnionLocalDate UnionLocalDate_from_JSON(mixed json) {
+    return json;
+}
+
+class LocalDate {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+LocalDate LocalDate_from_JSON(mixed json) {
+    LocalDate retval = LocalDate();
+
+    return retval;
+}
+
 typedef float|Locale UnionLocale;
 
 UnionLocale UnionLocale_from_JSON(mixed json) {
@@ -5322,6 +5356,50 @@ Of Of_from_JSON(mixed json) {
     return retval;
 }
 
+typedef float|OffsetDateTime UnionOffsetDateTime;
+
+UnionOffsetDateTime UnionOffsetDateTime_from_JSON(mixed json) {
+    return json;
+}
+
+class OffsetDateTime {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+OffsetDateTime OffsetDateTime_from_JSON(mixed json) {
+    OffsetDateTime retval = OffsetDateTime();
+
+    return retval;
+}
+
+typedef float|OffsetTime UnionOffsetTime;
+
+UnionOffsetTime UnionOffsetTime_from_JSON(mixed json) {
+    return json;
+}
+
+class OffsetTime {
+
+    string encode_json() {
+        mapping(string:mixed) json = ([
+        ]);
+
+        return Standards.JSON.encode(json);
+    }
+}
+
+OffsetTime OffsetTime_from_JSON(mixed json) {
+    OffsetTime retval = OffsetTime();
+
+    return retval;
+}
+
 typedef float|Oneway UnionOneway;
 
 UnionOneway UnionOneway_from_JSON(mixed json) {
diff --git a/base/schema-python/test/inputs/schema/date-time.schema/default/quicktype.py b/head/schema-python/test/inputs/schema/date-time.schema/default/quicktype.py
index 3e734ee..2be9df0 100644
--- a/base/schema-python/test/inputs/schema/date-time.schema/default/quicktype.py
+++ b/head/schema-python/test/inputs/schema/date-time.schema/default/quicktype.py
@@ -43,6 +43,11 @@ def from_time(x: Any) -> datetime.time:
     return dateutil.parser.parse(x).timetz()
 
 
+def from_none(x: Any) -> Any:
+    assert x is None
+    return x
+
+
 def to_enum(c: Type[EnumT], x: Any) -> EnumT:
     assert isinstance(x, c)
     return x.value
@@ -58,6 +63,48 @@ class ComplexUnionArrayEnum(Enum):
     BAR = "bar"
 
 
+@dataclass
+class LocalDate:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'LocalDate':
+        assert isinstance(obj, dict)
+        return LocalDate()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
+@dataclass
+class OffsetDateTime:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'OffsetDateTime':
+        assert isinstance(obj, dict)
+        return OffsetDateTime()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
+@dataclass
+class OffsetTime:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'OffsetTime':
+        assert isinstance(obj, dict)
+        return OffsetTime()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
 @dataclass
 class TopLevel:
     complex_union_array: list[int | ComplexUnionArrayEnum | datetime.datetime]
@@ -65,6 +112,9 @@ class TopLevel:
     date_time: datetime.datetime
     time: datetime.time
     union_array: list[datetime.date | datetime.time | datetime.datetime]
+    local_date_class: LocalDate | None = None
+    offset_date_time_class: OffsetDateTime | None = None
+    offset_time_class: OffsetTime | None = None
 
     @staticmethod
     def from_dict(obj: Any) -> 'TopLevel':
@@ -74,7 +124,10 @@ class TopLevel:
         date_time = from_datetime(obj["date-time"])
         time = from_time(obj["time"])
         union_array = from_list(lambda x: from_union([from_date, from_time, from_datetime], x), obj["union-array"])
-        return TopLevel(complex_union_array, date, date_time, time, union_array)
+        local_date_class = from_union([LocalDate.from_dict, from_none], obj.get("local-date-class"))
+        offset_date_time_class = from_union([OffsetDateTime.from_dict, from_none], obj.get("offset-date-time-class"))
+        offset_time_class = from_union([OffsetTime.from_dict, from_none], obj.get("offset-time-class"))
+        return TopLevel(complex_union_array, date, date_time, time, union_array, local_date_class, offset_date_time_class, offset_time_class)
 
     def to_dict(self) -> dict:
         result: dict = {}
@@ -83,6 +136,12 @@ class TopLevel:
         result["date-time"] = self.date_time.isoformat()
         result["time"] = self.time.isoformat()
         result["union-array"] = from_list(lambda x: from_union([lambda x: x.isoformat(), lambda x: x.isoformat(), lambda x: x.isoformat()], x), self.union_array)
+        if self.local_date_class is not None:
+            result["local-date-class"] = from_union([lambda x: to_class(LocalDate, x), from_none], self.local_date_class)
+        if self.offset_date_time_class is not None:
+            result["offset-date-time-class"] = from_union([lambda x: to_class(OffsetDateTime, x), from_none], self.offset_date_time_class)
+        if self.offset_time_class is not None:
+            result["offset-time-class"] = from_union([lambda x: to_class(OffsetTime, x), from_none], self.offset_time_class)
         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 00946be..9953a26 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
@@ -208,6 +208,7 @@ class EnumEnum(Enum):
     LEFT = "left"
     LET = "let"
     LIST = "list"
+    LOCAL_DATE = "LocalDate"
     LOCALE = "Locale"
     LOCK = "lock"
     LONG = "long"
@@ -240,6 +241,8 @@ class EnumEnum(Enum):
     NULLPTR = "nullptr"
     NUMBER = "number"
     OBJECT = "object"
+    OFFSET_DATE_TIME = "OffsetDateTime"
+    OFFSET_TIME = "OffsetTime"
     OBJECT_MAPPER = "ObjectMapper"
     OF = "of"
     ONEWAY = "oneway"
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 0c5eaeb..34b58a9 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
@@ -2092,6 +2092,20 @@ class ListClass:
         return result
 
 
+@dataclass
+class LocalDate:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'LocalDate':
+        assert isinstance(obj, dict)
+        return LocalDate()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
 @dataclass
 class Locale:
     pass
@@ -2512,6 +2526,34 @@ class Of:
         return result
 
 
+@dataclass
+class OffsetDateTime:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'OffsetDateTime':
+        assert isinstance(obj, dict)
+        return OffsetDateTime()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
+@dataclass
+class OffsetTime:
+    pass
+
+    @staticmethod
+    def from_dict(obj: Any) -> 'OffsetTime':
+        assert isinstance(obj, dict)
+        return OffsetTime()
+
+    def to_dict(self) -> dict:
+        result: dict = {}
+        return result
+
+
 @dataclass
 class Oneway:
     pass
@@ -4946,6 +4988,7 @@ class TopLevel:
     left: float | Left | None = None
     let: float | Let | None = None
     list: float | ListClass | None = None
+    local_date: float | LocalDate | None = None
     locale: float | Locale | None = None
     lock: float | Lock | None = None
     long: float | Long | None = None
@@ -4980,6 +5023,8 @@ class TopLevel:
     object: float | Object | None = None
     object_mapper: float | ObjectMapper | None = None
     of: float | Of | None = None
+    offset_date_time: float | OffsetDateTime | None = None
+    offset_time: float | OffsetTime | None = None
     oneway: float | Oneway | None = None
     open: float | Open | None = None
     operator: float | Operator | None = None
@@ -5289,6 +5334,7 @@ class TopLevel:
         left = from_union([from_float, Left.from_dict, from_none], obj.get("left"))
         let = from_union([from_float, Let.from_dict, from_none], obj.get("let"))
         list = from_union([from_float, ListClass.from_dict, from_none], obj.get("list"))
+        local_date = from_union([from_float, LocalDate.from_dict, from_none], obj.get("LocalDate"))
         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"))
@@ -5323,6 +5369,8 @@ class TopLevel:
         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"))
         of = from_union([from_float, Of.from_dict, from_none], obj.get("of"))
+        offset_date_time = from_union([from_float, OffsetDateTime.from_dict, from_none], obj.get("OffsetDateTime"))
+        offset_time = from_union([from_float, OffsetTime.from_dict, from_none], obj.get("OffsetTime"))
         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"))
         operator = from_union([from_float, Operator.from_dict, from_none], obj.get("operator"))
@@ -5450,7 +5498,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, k_serializer, top_level_lambda, lazy, left, let, list, locale, lock, long, map, map_entry, metadata_property_handling, module, mutable, mutating, namespace, native, new, newtonsoft, nil, no, noexcept, nonatomic, top_level_none, none, top_level_nonlocal, nonmutating, no_such_method, top_level_not, not_eq, ns_error, ns_object, ns_string, null, top_level_null, nullptr, number, object, object_mapper, of, oneway, open, operator, optional, top_level_or, or_eq, out, override, package, params, top_level_pass, port, postfix, precedence, prefix, primitive_kind, top_level_print, printf, print_members, private, protected, protocol, top_level_protocol, public, quicktype, top_level_raise, range, readonly, ref, reg_exp, register, reinterpret_cast, repeat, require, required, requires, restrict, retain, rethrows, top_level_return, right, runtime_type, s, sbyte, sealed, sel, select, top_level_self, purple_self, sendable, serial_descriptor, serializable, serialize, serializer_provider, serial_name, set, short, signed, simple_module, sizeof, stackalloc, standards, static, static_assert, static_cast, std_deserializer, std_serializer, strictfp, string, struct, subscript, super, switch, symbol, synchronized, system, template, then, this, thread_local, throw, throws, time_only, time_only_converter, time_zone, to_json, top_level, to_string, transient, true, top_level_true, top_level_try, type, top_level_type, typealias, typedef, typeid, typename, typeof, uint, ulong, unchecked, undefined, union, unowned, unsafe, unsigned, use_serializers, ushort, using, utf8_json_reader, utf8_json_writer, uuid, var, virtual, void, volatile, wchar_t, weak, where, top_level_while, will_set, top_level_with, xor, xor_eq, yes, top_level_yield)
+        return TopLevel(empty, purple_bool, complex, imaginery, abstract, alignas, alignof, top_level_and, and_eq, top_level_any, any, array, top_level_as, asm, top_level_assert, associatedtype, associativity, top_level_async, atomic, atomic_cancel, atomic_commit, atomic_noexcept, auto, top_level_await, base, bitand, bitor, top_level_bool, fluffy_bool, boolean, top_level_break, bycopy, byref, byte, calendar, case, catch, chan, char, char16_t, char32_t, checked, purple_class, top_level_class, clone, co_await, co_return, co_yield, codable, coding_key, coding_keys, compl, concept, console, const, const_cast, constexpr, constructor, top_level_continue, convenience, convert, converter, culture_info, date, date_parse_handling, date_formatter, date_only, date_only_converter, date_time, date_time_styles, debugger, decimal, declare, decltype, decode_string, decoder, decoding_error, top_level_def, default, defer, deinit, top_level_del, delegate, delete, top_level_dict, dictionary, did_set, do, double, dummy, dynamic, dynamic_cast, top_level_elif, top_level_else, encode_quick_type, encoder, enum, enum_values, equality_contract, equatable, event, top_level_except, exception, explicit, export, exposing, extends, extension, extern, fallthrough, top_level_false, false, fileprivate, final, top_level_finally, fixed, top_level_float, top_level_for, foreach, format_exception, friend, top_level_from, from_json, func, function, get, top_level_global, go, goto, guard, hashable, hash_code, hasher, has_own_property, id, top_level_if, imp, implements, implicit, top_level_import, top_level_in, indirect, infix, init, inline, inout, instanceof, top_level_int, interface, internal, top_level_is, iso_date_time_offset_converter, iterable, jdec, jenc, jpipe, json, json_converter, json_serializer, json_token, json_writer, json_any, json_coding_key, json_decoder, json_encoder, json_exception, json_generator, json_node, json_null, json_parser, json_reader, json_token_type, k_serializer, top_level_lambda, lazy, left, let, list, local_date, 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, offset_date_time, offset_time, oneway, open, operator, optional, top_level_or, or_eq, out, override, package, params, top_level_pass, port, postfix, precedence, prefix, primitive_kind, top_level_print, printf, print_members, private, protected, protocol, top_level_protocol, public, quicktype, top_level_raise, range, readonly, ref, reg_exp, register, reinterpret_cast, repeat, require, required, requires, restrict, retain, rethrows, top_level_return, right, runtime_type, s, sbyte, sealed, sel, select, top_level_self, purple_self, sendable, serial_descriptor, serializable, serialize, serializer_provider, serial_name, set, short, signed, simple_module, sizeof, stackalloc, standards, static, static_assert, static_cast, std_deserializer, std_serializer, strictfp, string, struct, subscript, super, switch, symbol, synchronized, system, template, then, this, thread_local, throw, throws, time_only, time_only_converter, time_zone, to_json, top_level, to_string, transient, true, top_level_true, top_level_try, type, top_level_type, typealias, typedef, typeid, typename, typeof, uint, ulong, unchecked, undefined, union, unowned, unsafe, unsigned, use_serializers, ushort, using, utf8_json_reader, utf8_json_writer, uuid, var, virtual, void, volatile, wchar_t, weak, where, top_level_while, will_set, top_level_with, xor, xor_eq, yes, top_level_yield)
 
     def to_dict(self) -> dict:
         result: dict = {}
@@ -5810,6 +5858,8 @@ class TopLevel:
             result["let"] = from_union([to_float, lambda x: to_class(Let, x), from_none], self.let)
         if self.list is not None:
             result["list"] = from_union([to_float, lambda x: to_class(ListClass, x), from_none], self.list)
+        if self.local_date is not None:
+            result["LocalDate"] = from_union([to_float, lambda x: to_class(LocalDate, x), from_none], self.local_date)
         if self.locale is not None:
             result["Locale"] = from_union([to_float, lambda x: to_class(Locale, x), from_none], self.locale)
         if self.lock is not None:
@@ -5878,6 +5928,10 @@ class TopLevel:
             result["ObjectMapper"] = from_union([to_float, lambda x: to_class(ObjectMapper, x), from_none], self.object_mapper)
         if self.of is not None:
             result["of"] = from_union([to_float, lambda x: to_class(Of, x), from_none], self.of)
+        if self.offset_date_time is not None:
+            result["OffsetDateTime"] = from_union([to_float, lambda x: to_class(OffsetDateTime, x), from_none], self.offset_date_time)
+        if self.offset_time is not None:
+            result["OffsetTime"] = from_union([to_float, lambda x: to_class(OffsetTime, x), from_none], self.offset_time)
         if self.oneway is not None:
             result["oneway"] = from_union([to_float, lambda x: to_class(Oneway, x), from_none], self.oneway)
         if self.open is not None:
diff --git a/base/schema-ruby/test/inputs/schema/date-time.schema/default/TopLevel.rb b/head/schema-ruby/test/inputs/schema/date-time.schema/default/TopLevel.rb
index af05a9c..49a06a1 100644
--- a/base/schema-ruby/test/inputs/schema/date-time.schema/default/TopLevel.rb
+++ b/head/schema-ruby/test/inputs/schema/date-time.schema/default/TopLevel.rb
@@ -63,21 +63,93 @@ class ComplexUnionArrayElement < Dry::Struct
   end
 end
 
+class LocalDate < 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 OffsetDateTime < 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 OffsetTime < 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 :complex_union_array, Types.Array(Types.Instance(ComplexUnionArrayElement))
-  attribute :date,                Types::String
-  attribute :date_time,           Types::String.constrained(format: /\A\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(?:\.\d+)?(?:Z|[+-]\d\d:\d\d)\z/i)
-  attribute :time,                Types::String
-  attribute :union_array,         Types.Array(Types::String)
+  attribute :complex_union_array,    Types.Array(Types.Instance(ComplexUnionArrayElement))
+  attribute :date,                   Types::String
+  attribute :date_time,              Types::String.constrained(format: /\A\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(?:\.\d+)?(?:Z|[+-]\d\d:\d\d)\z/i)
+  attribute :local_date_class,       LocalDate.optional
+  attribute :offset_date_time_class, OffsetDateTime.optional
+  attribute :offset_time_class,      OffsetTime.optional
+  attribute :time,                   Types::String
+  attribute :union_array,            Types.Array(Types::String)
 
   def self.from_dynamic!(d)
     d = Types::Hash[d]
     new(
-      complex_union_array: d.fetch("complex-union-array").map { |x| ComplexUnionArrayElement.from_dynamic!(x) },
-      date:                d.fetch("date"),
-      date_time:           d.fetch("date-time"),
-      time:                d.fetch("time"),
-      union_array:         d.fetch("union-array"),
+      complex_union_array:    d.fetch("complex-union-array").map { |x| ComplexUnionArrayElement.from_dynamic!(x) },
+      date:                   d.fetch("date"),
+      date_time:              d.fetch("date-time"),
+      local_date_class:       d.key?("local-date-class") ? LocalDate.from_dynamic!(d["local-date-class"]) : nil,
+      offset_date_time_class: d.key?("offset-date-time-class") ? OffsetDateTime.from_dynamic!(d["offset-date-time-class"]) : nil,
+      offset_time_class:      d.key?("offset-time-class") ? OffsetTime.from_dynamic!(d["offset-time-class"]) : nil,
+      time:                   d.fetch("time"),
+      union_array:            d.fetch("union-array"),
     )
   end
 
@@ -87,11 +159,14 @@ class TopLevel < Dry::Struct
 
   def to_dynamic
     {
-      "complex-union-array" => complex_union_array.map { |x| x.to_dynamic },
-      "date"                => date,
-      "date-time"           => date_time,
-      "time"                => time,
-      "union-array"         => union_array,
+      "complex-union-array"    => complex_union_array.map { |x| x.to_dynamic },
+      "date"                   => date,
+      "date-time"              => date_time,
+      "local-date-class"       => local_date_class&.to_dynamic,
+      "offset-date-time-class" => offset_date_time_class&.to_dynamic,
+      "offset-time-class"      => offset_time_class&.to_dynamic,
+      "time"                   => time,
+      "union-array"            => union_array,
     }
   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 2f8bc98..e227da2 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", "Serializable", "self", "Sendable", "serialize", "SerialName", "KSerializer", "PrimitiveKind", "SerialDescriptor", "SerializerProvider", "set", "short", "signed", "SimpleModule", "sizeof", "stackalloc", "Standards", "static", "static_assert", "static_cast", "StdDeserializer", "StdSerializer", "strictfp", "string", "struct", "subscript", "super", "switch", "symbol", "synchronized", "system", "template", "then", "this", "thread_local", "throw", "throws", "TimeOnly", "TimeOnlyConverter", "TimeZone", "to_json", "top_level", "toString", "transient", "True", "true", "try", "Type", "type", "typealias", "typedef", "typeid", "typename", "typeof", "uint", "ulong", "unchecked", "undefined", "union", "UseSerializers", "unowned", "unsafe", "unsigned", "ushort", "using", "Utf8JsonReader", "Utf8JsonWriter", "UUID", "var", "virtual", "void", "volatile", "wchar_t", "weak", "where", "while", "willSet", "with", "xor", "xor_eq", "YES", "yield", "dummy")
+  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", "LocalDate", "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", "OffsetDateTime", "OffsetTime", "ObjectMapper", "of", "oneway", "open", "operator", "optional", "or", "or_eq", "out", "override", "package", "params", "pass", "port", "postfix", "precedence", "prefix", "print", "printf", "printMembers", "private", "protected", "Protocol", "protocol", "public", "quicktype", "raise", "range", "readonly", "ref", "RegExp", "register", "reinterpret_cast", "repeat", "require", "required", "requires", "restrict", "retain", "rethrows", "return", "right", "runtimeType", "s", "sbyte", "sealed", "SEL", "select", "Self", "Serializable", "self", "Sendable", "serialize", "SerialName", "KSerializer", "PrimitiveKind", "SerialDescriptor", "SerializerProvider", "set", "short", "signed", "SimpleModule", "sizeof", "stackalloc", "Standards", "static", "static_assert", "static_cast", "StdDeserializer", "StdSerializer", "strictfp", "string", "struct", "subscript", "super", "switch", "symbol", "synchronized", "system", "template", "then", "this", "thread_local", "throw", "throws", "TimeOnly", "TimeOnlyConverter", "TimeZone", "to_json", "top_level", "toString", "transient", "True", "true", "try", "Type", "type", "typealias", "typedef", "typeid", "typename", "typeof", "uint", "ulong", "unchecked", "undefined", "union", "UseSerializers", "unowned", "unsafe", "unsigned", "ushort", "using", "Utf8JsonReader", "Utf8JsonWriter", "UUID", "var", "virtual", "void", "volatile", "wchar_t", "weak", "where", "while", "willSet", "with", "xor", "xor_eq", "YES", "yield", "dummy")
 end
 
 module Enum
@@ -197,6 +197,7 @@ module Enum
   Left                       = "left"
   Let                        = "let"
   List                       = "list"
+  LocalDate                  = "LocalDate"
   Locale                     = "Locale"
   Lock                       = "lock"
   Long                       = "long"
@@ -229,6 +230,8 @@ module Enum
   Nullptr                    = "nullptr"
   Number                     = "number"
   Object                     = "object"
+  OffsetDateTime             = "OffsetDateTime"
+  OffsetTime                 = "OffsetTime"
   ObjectMapper               = "ObjectMapper"
   Of                         = "of"
   Oneway                     = "oneway"
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 d4b45aa..8c01289 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
@@ -9025,6 +9025,63 @@ class UnionList < Dry::Struct
   end
 end
 
+class LocalDate < 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 UnionLocalDate < Dry::Struct
+  attribute :double,     Types::Double.optional
+  attribute :local_date, LocalDate.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, local_date: nil)
+    end
+    begin
+      value = LocalDate.from_dynamic!(d)
+      if schema.key(:local_date).type.right.valid? value
+        return new(local_date: 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 local_date != nil
+      local_date.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Locale < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -10621,6 +10678,120 @@ class UnionOf < Dry::Struct
   end
 end
 
+class OffsetDateTime < 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 UnionOffsetDateTime < Dry::Struct
+  attribute :double,           Types::Double.optional
+  attribute :offset_date_time, OffsetDateTime.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, offset_date_time: nil)
+    end
+    begin
+      value = OffsetDateTime.from_dynamic!(d)
+      if schema.key(:offset_date_time).type.right.valid? value
+        return new(offset_date_time: 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 offset_date_time != nil
+      offset_date_time.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class OffsetTime < 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 UnionOffsetTime < Dry::Struct
+  attribute :double,      Types::Double.optional
+  attribute :offset_time, OffsetTime.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, offset_time: nil)
+    end
+    begin
+      value = OffsetTime.from_dynamic!(d)
+      if schema.key(:offset_time).type.right.valid? value
+        return new(offset_time: 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 offset_time != nil
+      offset_time.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Oneway < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -19464,6 +19635,7 @@ class TopLevel < Dry::Struct
   attribute :left,                           Types.Instance(UnionLeft).optional
   attribute :let,                            Types.Instance(UnionLet).optional
   attribute :list,                           Types.Instance(UnionList).optional
+  attribute :local_date,                     Types.Instance(UnionLocalDate).optional
   attribute :locale,                         Types.Instance(UnionLocale).optional
   attribute :lock,                           Types.Instance(UnionLock).optional
   attribute :long,                           Types.Instance(UnionLong).optional
@@ -19498,6 +19670,8 @@ class TopLevel < Dry::Struct
   attribute :object,                         Types.Instance(UnionObject).optional
   attribute :object_mapper,                  Types.Instance(UnionObjectMapper).optional
   attribute :of,                             Types.Instance(UnionOf).optional
+  attribute :offset_date_time,               Types.Instance(UnionOffsetDateTime).optional
+  attribute :offset_time,                    Types.Instance(UnionOffsetTime).optional
   attribute :oneway,                         Types.Instance(UnionOneway).optional
   attribute :top_level_open,                 Types.Instance(UnionOpen).optional
   attribute :operator,                       Types.Instance(UnionOperator).optional
@@ -19807,6 +19981,7 @@ class TopLevel < Dry::Struct
       left:                           d.key?("left") ? UnionLeft.from_dynamic!(d["left"]) : nil,
       let:                            d.key?("let") ? UnionLet.from_dynamic!(d["let"]) : nil,
       list:                           d.key?("list") ? UnionList.from_dynamic!(d["list"]) : nil,
+      local_date:                     d.key?("LocalDate") ? UnionLocalDate.from_dynamic!(d["LocalDate"]) : nil,
       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,
@@ -19841,6 +20016,8 @@ class TopLevel < Dry::Struct
       object:                         d.key?("object") ? UnionObject.from_dynamic!(d["object"]) : nil,
       object_mapper:                  d.key?("ObjectMapper") ? UnionObjectMapper.from_dynamic!(d["ObjectMapper"]) : nil,
       of:                             d.key?("of") ? UnionOf.from_dynamic!(d["of"]) : nil,
+      offset_date_time:               d.key?("OffsetDateTime") ? UnionOffsetDateTime.from_dynamic!(d["OffsetDateTime"]) : nil,
+      offset_time:                    d.key?("OffsetTime") ? UnionOffsetTime.from_dynamic!(d["OffsetTime"]) : nil,
       oneway:                         d.key?("oneway") ? UnionOneway.from_dynamic!(d["oneway"]) : nil,
       top_level_open:                 d.key?("open") ? UnionOpen.from_dynamic!(d["open"]) : nil,
       operator:                       d.key?("operator") ? UnionOperator.from_dynamic!(d["operator"]) : nil,
@@ -20155,6 +20332,7 @@ class TopLevel < Dry::Struct
       "left"                       => left&.to_dynamic,
       "let"                        => let&.to_dynamic,
       "list"                       => list&.to_dynamic,
+      "LocalDate"                  => local_date&.to_dynamic,
       "Locale"                     => locale&.to_dynamic,
       "lock"                       => lock&.to_dynamic,
       "long"                       => long&.to_dynamic,
@@ -20189,6 +20367,8 @@ class TopLevel < Dry::Struct
       "object"                     => object&.to_dynamic,
       "ObjectMapper"               => object_mapper&.to_dynamic,
       "of"                         => of&.to_dynamic,
+      "OffsetDateTime"             => offset_date_time&.to_dynamic,
+      "OffsetTime"                 => offset_time&.to_dynamic,
       "oneway"                     => oneway&.to_dynamic,
       "open"                       => top_level_open&.to_dynamic,
       "operator"                   => operator&.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 d4b45aa..8c01289 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
@@ -9025,6 +9025,63 @@ class UnionList < Dry::Struct
   end
 end
 
+class LocalDate < 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 UnionLocalDate < Dry::Struct
+  attribute :double,     Types::Double.optional
+  attribute :local_date, LocalDate.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, local_date: nil)
+    end
+    begin
+      value = LocalDate.from_dynamic!(d)
+      if schema.key(:local_date).type.right.valid? value
+        return new(local_date: 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 local_date != nil
+      local_date.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Locale < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -10621,6 +10678,120 @@ class UnionOf < Dry::Struct
   end
 end
 
+class OffsetDateTime < 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 UnionOffsetDateTime < Dry::Struct
+  attribute :double,           Types::Double.optional
+  attribute :offset_date_time, OffsetDateTime.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, offset_date_time: nil)
+    end
+    begin
+      value = OffsetDateTime.from_dynamic!(d)
+      if schema.key(:offset_date_time).type.right.valid? value
+        return new(offset_date_time: 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 offset_date_time != nil
+      offset_date_time.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
+class OffsetTime < 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 UnionOffsetTime < Dry::Struct
+  attribute :double,      Types::Double.optional
+  attribute :offset_time, OffsetTime.optional
+
+  def self.from_dynamic!(d)
+    if schema.key(:double).type.right.valid? d
+      return new(double: d, offset_time: nil)
+    end
+    begin
+      value = OffsetTime.from_dynamic!(d)
+      if schema.key(:offset_time).type.right.valid? value
+        return new(offset_time: 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 offset_time != nil
+      offset_time.to_dynamic
+    end
+  end
+
+  def to_json(options = nil)
+    JSON.generate(to_dynamic, options)
+  end
+end
+
 class Oneway < Dry::Struct
 
   def self.from_dynamic!(d)
@@ -19464,6 +19635,7 @@ class TopLevel < Dry::Struct
   attribute :left,                           Types.Instance(UnionLeft).optional
   attribute :let,                            Types.Instance(UnionLet).optional
   attribute :list,                           Types.Instance(UnionList).optional
+  attribute :local_date,                     Types.Instance(UnionLocalDate).optional
   attribute :locale,                         Types.Instance(UnionLocale).optional
   attribute :lock,                           Types.Instance(UnionLock).optional
   attribute :long,                           Types.Instance(UnionLong).optional
@@ -19498,6 +19670,8 @@ class TopLevel < Dry::Struct
   attribute :object,                         Types.Instance(UnionObject).optional
   attribute :object_mapper,                  Types.Instance(UnionObjectMapper).optional
   attribute :of,                             Types.Instance(UnionOf).optional
+  attribute :offset_date_time,               Types.Instance(UnionOffsetDateTime).optional
+  attribute :offset_time,                    Types.Instance(UnionOffsetTime).optional
   attribute :oneway,                         Types.Instance(UnionOneway).optional
   attribute :top_level_open,                 Types.Instance(UnionOpen).optional
   attribute :operator,                       Types.Instance(UnionOperator).optional
@@ -19807,6 +19981,7 @@ class TopLevel < Dry::Struct
       left:                           d.key?("left") ? UnionLeft.from_dynamic!(d["left"]) : nil,
       let:                            d.key?("let") ? UnionLet.from_dynamic!(d["let"]) : nil,
       list:                           d.key?("list") ? UnionList.from_dynamic!(d["list"]) : nil,
+      local_date:                     d.key?("LocalDate") ? UnionLocalDate.from_dynamic!(d["LocalDate"]) : nil,
       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,
@@ -19841,6 +20016,8 @@ class TopLevel < Dry::Struct
       object:                         d.key?("object") ? UnionObject.from_dynamic!(d["object"]) : nil,
       object_mapper:                  d.key?("ObjectMapper") ? UnionObjectMapper.from_dynamic!(d["ObjectMapper"]) : nil,
       of:                             d.key?("of") ? UnionOf.from_dynamic!(d["of"]) : nil,
+      offset_date_time:               d.key?("OffsetDateTime") ? UnionOffsetDateTime.from_dynamic!(d["OffsetDateTime"]) : nil,
+      offset_time:                    d.key?("OffsetTime") ? UnionOffsetTime.from_dynamic!(d["OffsetTime"]) : nil,
       oneway:                         d.key?("oneway") ? UnionOneway.from_dynamic!(d["oneway"]) : nil,
       top_level_open:                 d.key?("open") ? UnionOpen.from_dynamic!(d["open"]) : nil,
       operator:                       d.key?("operator") ? UnionOperator.from_dynamic!(d["operator"]) : nil,
@@ -20155,6 +20332,7 @@ class TopLevel < Dry::Struct
       "left"                       => left&.to_dynamic,
       "let"                        => let&.to_dynamic,
       "list"                       => list&.to_dynamic,
+      "LocalDate"                  => local_date&.to_dynamic,
       "Locale"                     => locale&.to_dynamic,
       "lock"                       => lock&.to_dynamic,
       "long"                       => long&.to_dynamic,
@@ -20189,6 +20367,8 @@ class TopLevel < Dry::Struct
       "object"                     => object&.to_dynamic,
       "ObjectMapper"               => object_mapper&.to_dynamic,
       "of"                         => of&.to_dynamic,
+      "OffsetDateTime"             => offset_date_time&.to_dynamic,
+      "OffsetTime"                 => offset_time&.to_dynamic,
       "oneway"                     => oneway&.to_dynamic,
       "open"                       => top_level_open&.to_dynamic,
       "operator"                   => operator&.to_dynamic,
diff --git a/base/schema-rust/test/inputs/schema/date-time.schema/default/module_under_test.rs b/head/schema-rust/test/inputs/schema/date-time.schema/default/module_under_test.rs
index 4654b68..0573e0b 100644
--- a/base/schema-rust/test/inputs/schema/date-time.schema/default/module_under_test.rs
+++ b/head/schema-rust/test/inputs/schema/date-time.schema/default/module_under_test.rs
@@ -22,6 +22,12 @@ pub struct TopLevel {
 
     pub date_time: String,
 
+    pub local_date_class: Option<LocalDate>,
+
+    pub offset_date_time_class: Option<OffsetDateTime>,
+
+    pub offset_time_class: Option<OffsetTime>,
+
     pub time: String,
 
     pub union_array: Vec<String>,
@@ -34,3 +40,15 @@ pub enum ComplexUnionArray {
 
     PurpleString(String),
 }
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct LocalDate {
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct OffsetDateTime {
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct OffsetTime {
+}
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 df50a60..df104fd 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
@@ -437,6 +437,9 @@ pub enum Enum {
 
     List,
 
+    #[serde(rename = "LocalDate")]
+    LocalDate,
+
     #[serde(rename = "Locale")]
     Locale,
 
@@ -514,6 +517,12 @@ pub enum Enum {
 
     Object,
 
+    #[serde(rename = "OffsetDateTime")]
+    OffsetDateTime,
+
+    #[serde(rename = "OffsetTime")]
+    OffsetTime,
+
     #[serde(rename = "ObjectMapper")]
     ObjectMapper,
 
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 989dbbb..ae36c6e 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
@@ -437,6 +437,9 @@ pub struct TopLevel {
 
     pub list: Option<UnionList>,
 
+    #[serde(rename = "LocalDate")]
+    pub local_date: Option<UnionLocalDate>,
+
     #[serde(rename = "Locale")]
     pub locale: Option<UnionLocale>,
 
@@ -517,6 +520,12 @@ pub struct TopLevel {
 
     pub of: Option<UnionOf>,
 
+    #[serde(rename = "OffsetDateTime")]
+    pub offset_date_time: Option<UnionOffsetDateTime>,
+
+    #[serde(rename = "OffsetTime")]
+    pub offset_time: Option<UnionOffsetTime>,
+
     pub oneway: Option<UnionOneway>,
 
     pub open: Option<UnionOpen>,
@@ -2654,6 +2663,18 @@ pub enum UnionList {
 pub struct List {
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(untagged)]
+pub enum UnionLocalDate {
+    Double(f64),
+
+    LocalDate(LocalDate),
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct LocalDate {
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 #[serde(untagged)]
 pub enum UnionLocale {
@@ -3038,6 +3059,30 @@ pub enum UnionOf {
 pub struct Of {
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(untagged)]
+pub enum UnionOffsetDateTime {
+    Double(f64),
+
+    OffsetDateTime(OffsetDateTime),
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct OffsetDateTime {
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(untagged)]
+pub enum UnionOffsetTime {
+    Double(f64),
+
+    OffsetTime(OffsetTime),
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct OffsetTime {
+}
+
 #[derive(Debug, Clone, Serialize, Deserialize)]
 #[serde(untagged)]
 pub enum UnionOneway {
diff --git a/base/schema-scala3/test/inputs/schema/date-time.schema/default/TopLevel.scala b/head/schema-scala3/test/inputs/schema/date-time.schema/default/TopLevel.scala
index 2659eae..766d4ae 100644
--- a/base/schema-scala3/test/inputs/schema/date-time.schema/default/TopLevel.scala
+++ b/head/schema-scala3/test/inputs/schema/date-time.schema/default/TopLevel.scala
@@ -11,6 +11,9 @@ case class TopLevel (
     val `complex-union-array` : Seq[ComplexUnionArrayElement],
     val date : String,
     val `date-time` : java.time.Instant,
+    val `local-date-class` : Option[LocalDate] = None,
+    val `offset-date-time-class` : Option[OffsetDateTime] = None,
+    val `offset-time-class` : Option[OffsetTime] = None,
     val time : String,
     val `union-array` : Seq[String]
 ) derives Encoder.AsObject, Decoder
@@ -43,3 +46,9 @@ given Encoder[ComplexUnionArrayEnum] = Encoder.encodeString.contramap {
     case ComplexUnionArrayEnum.Foo => "foo"
     case ComplexUnionArrayEnum.Bar => "bar"
 }
+
+case class LocalDate()  derives Encoder.AsObject, Decoder
+
+case class OffsetDateTime()  derives Encoder.AsObject, Decoder
+
+case class OffsetTime()  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 6760fcb..d4c0749 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
@@ -188,6 +188,7 @@ enum EnumEnum :
     case Left
     case Let
     case EnumList
+    case LocalDate
     case Locale
     case Lock
     case EnumLong
@@ -220,6 +221,8 @@ enum EnumEnum :
     case Nullptr
     case Number
     case Object
+    case OffsetDateTime
+    case OffsetTime
     case ObjectMapper
     case Of
     case Oneway
@@ -529,6 +532,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 "LocalDate" => scala.Right(EnumEnum.LocalDate)
     case "Locale" => scala.Right(EnumEnum.Locale)
     case "lock" => scala.Right(EnumEnum.Lock)
     case "long" => scala.Right(EnumEnum.EnumLong)
@@ -561,6 +565,8 @@ 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 "OffsetDateTime" => scala.Right(EnumEnum.OffsetDateTime)
+    case "OffsetTime" => scala.Right(EnumEnum.OffsetTime)
     case "ObjectMapper" => scala.Right(EnumEnum.ObjectMapper)
     case "of" => scala.Right(EnumEnum.Of)
     case "oneway" => scala.Right(EnumEnum.Oneway)
@@ -871,6 +877,7 @@ given Encoder[EnumEnum] = Encoder.encodeString.contramap {
     case EnumEnum.Left => "left"
     case EnumEnum.Let => "let"
     case EnumEnum.EnumList => "list"
+    case EnumEnum.LocalDate => "LocalDate"
     case EnumEnum.Locale => "Locale"
     case EnumEnum.Lock => "lock"
     case EnumEnum.EnumLong => "long"
@@ -903,6 +910,8 @@ given Encoder[EnumEnum] = Encoder.encodeString.contramap {
     case EnumEnum.Nullptr => "nullptr"
     case EnumEnum.Number => "number"
     case EnumEnum.Object => "object"
+    case EnumEnum.OffsetDateTime => "OffsetDateTime"
+    case EnumEnum.OffsetTime => "OffsetTime"
     case EnumEnum.ObjectMapper => "ObjectMapper"
     case EnumEnum.Of => "of"
     case EnumEnum.Oneway => "oneway"
diff --git a/base/schema-scala3-upickle/test/inputs/schema/date-time.schema/default/TopLevel.scala b/head/schema-scala3-upickle/test/inputs/schema/date-time.schema/default/TopLevel.scala
index 476d1ea..87d5768 100644
--- a/base/schema-scala3-upickle/test/inputs/schema/date-time.schema/default/TopLevel.scala
+++ b/head/schema-scala3-upickle/test/inputs/schema/date-time.schema/default/TopLevel.scala
@@ -82,6 +82,9 @@ case class TopLevel (
     val `complex-union-array` : Seq[ComplexUnionArrayElement],
     val date : String,
     val `date-time` : java.time.Instant,
+    val `local-date-class` : Option[LocalDate] = None,
+    val `offset-date-time-class` : Option[OffsetDateTime] = None,
+    val `offset-time-class` : Option[OffsetTime] = None,
     val time : String,
     val `union-array` : Seq[String]
 ) derives OptionPickler.ReadWriter
@@ -115,3 +118,10 @@ given OptionPickler.ReadWriter[ComplexUnionArrayEnum] = OptionPickler.readwriter
         case other => throw new upickle.core.Abort("invalid ComplexUnionArrayEnum: " + other)
     }
 )
+
+case class LocalDate()
+ derives OptionPickler.ReadWriter
+case class OffsetDateTime()
+ derives OptionPickler.ReadWriter
+case class OffsetTime()
+ 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 88b58d2..8a1ef72 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
@@ -259,6 +259,7 @@ enum EnumEnum :
     case Left
     case Let
     case EnumList
+    case LocalDate
     case Locale
     case Lock
     case EnumLong
@@ -291,6 +292,8 @@ enum EnumEnum :
     case Nullptr
     case Number
     case Object
+    case OffsetDateTime
+    case OffsetTime
     case ObjectMapper
     case Of
     case Oneway
@@ -601,6 +604,7 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case EnumEnum.Left => "left"
         case EnumEnum.Let => "let"
         case EnumEnum.EnumList => "list"
+        case EnumEnum.LocalDate => "LocalDate"
         case EnumEnum.Locale => "Locale"
         case EnumEnum.Lock => "lock"
         case EnumEnum.EnumLong => "long"
@@ -633,6 +637,8 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case EnumEnum.Nullptr => "nullptr"
         case EnumEnum.Number => "number"
         case EnumEnum.Object => "object"
+        case EnumEnum.OffsetDateTime => "OffsetDateTime"
+        case EnumEnum.OffsetTime => "OffsetTime"
         case EnumEnum.ObjectMapper => "ObjectMapper"
         case EnumEnum.Of => "of"
         case EnumEnum.Oneway => "oneway"
@@ -942,6 +948,7 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case "left" => EnumEnum.Left
         case "let" => EnumEnum.Let
         case "list" => EnumEnum.EnumList
+        case "LocalDate" => EnumEnum.LocalDate
         case "Locale" => EnumEnum.Locale
         case "lock" => EnumEnum.Lock
         case "long" => EnumEnum.EnumLong
@@ -974,6 +981,8 @@ given OptionPickler.ReadWriter[EnumEnum] = OptionPickler.readwriter[String].bima
         case "nullptr" => EnumEnum.Nullptr
         case "number" => EnumEnum.Number
         case "object" => EnumEnum.Object
+        case "OffsetDateTime" => EnumEnum.OffsetDateTime
+        case "OffsetTime" => EnumEnum.OffsetTime
         case "ObjectMapper" => EnumEnum.ObjectMapper
         case "of" => EnumEnum.Of
         case "oneway" => EnumEnum.Oneway
diff --git a/base/schema-schema/test/inputs/schema/date-time.schema/default/TopLevel.schema b/head/schema-schema/test/inputs/schema/date-time.schema/default/TopLevel.schema
index ac88afa..add5fe7 100644
--- a/base/schema-schema/test/inputs/schema/date-time.schema/default/TopLevel.schema
+++ b/head/schema-schema/test/inputs/schema/date-time.schema/default/TopLevel.schema
@@ -20,6 +20,15 @@
                     "type": "string",
                     "format": "date-time"
                 },
+                "local-date-class": {
+                    "$ref": "#/definitions/LocalDate"
+                },
+                "offset-date-time-class": {
+                    "$ref": "#/definitions/OffsetDateTime"
+                },
+                "offset-time-class": {
+                    "$ref": "#/definitions/OffsetTime"
+                },
                 "time": {
                     "type": "string",
                     "format": "time"
@@ -40,6 +49,21 @@
             ],
             "title": "TopLevel"
         },
+        "LocalDate": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "LocalDate"
+        },
+        "OffsetDateTime": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "OffsetDateTime"
+        },
+        "OffsetTime": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "OffsetTime"
+        },
         "ComplexUnionArrayElement": {
             "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 7067f2d..25b1ef6 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
@@ -192,6 +192,7 @@
                 "left",
                 "let",
                 "list",
+                "LocalDate",
                 "Locale",
                 "lock",
                 "long",
@@ -224,6 +225,8 @@
                 "nullptr",
                 "number",
                 "object",
+                "OffsetDateTime",
+                "OffsetTime",
                 "ObjectMapper",
                 "of",
                 "oneway",
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 8a5ee5e..4b1b041 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
@@ -540,6 +540,9 @@
                 "list": {
                     "$ref": "#/definitions/UnionList"
                 },
+                "LocalDate": {
+                    "$ref": "#/definitions/UnionLocalDate"
+                },
                 "Locale": {
                     "$ref": "#/definitions/UnionLocale"
                 },
@@ -642,6 +645,12 @@
                 "of": {
                     "$ref": "#/definitions/UnionOf"
                 },
+                "OffsetDateTime": {
+                    "$ref": "#/definitions/UnionOffsetDateTime"
+                },
+                "OffsetTime": {
+                    "$ref": "#/definitions/UnionOffsetTime"
+                },
                 "oneway": {
                     "$ref": "#/definitions/UnionOneway"
                 },
@@ -1207,6 +1216,11 @@
             "additionalProperties": false,
             "title": "KSerializer"
         },
+        "LocalDate": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "LocalDate"
+        },
         "Locale": {
             "type": "object",
             "additionalProperties": false,
@@ -1252,6 +1266,16 @@
             "additionalProperties": false,
             "title": "ObjectMapper"
         },
+        "OffsetDateTime": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "OffsetDateTime"
+        },
+        "OffsetTime": {
+            "type": "object",
+            "additionalProperties": false,
+            "title": "OffsetTime"
+        },
         "PrimitiveKind": {
             "type": "object",
             "additionalProperties": false,
@@ -3113,6 +3137,17 @@
             ],
             "title": "UnionKSerializer"
         },
+        "UnionLocalDate": {
+            "anyOf": [
+                {
+                    "$ref": "#/definitions/LocalDate"
+                },
+                {
+                    "type": "number"
+                }
+            ],
+            "title": "UnionLocalDate"
+        },
         "UnionLocale": {
             "anyOf": [
                 {
@@ -3212,6 +3247,28 @@
             ],
             "title": "UnionObjectMapper"
         },
+        "UnionOffsetDateTime": {
+            "anyOf": [
+                {
+                    "$ref": "#/definitions/OffsetDateTime"
+                },
+                {
+                    "type": "number"
+                }
+            ],
+            "title": "UnionOffsetDateTime"
+        },
+        "UnionOffsetTime": {
+            "anyOf": [
+                {
+                    "$ref": "#/definitions/OffsetTime"
+                },
+                {
+                    "type": "number"
+                }
+            ],
+            "title": "UnionOffsetTime"
+        },
         "UnionPrimitiveKind": {
             "anyOf": [
                 {
diff --git a/base/schema-swift/test/inputs/schema/date-time.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/date-time.schema/default/quicktype.swift
index b7a2062..979e314 100644
--- a/base/schema-swift/test/inputs/schema/date-time.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/date-time.schema/default/quicktype.swift
@@ -10,6 +10,9 @@ struct TopLevel: Codable {
     let complexUnionArray: [ComplexUnionArrayElement]
     let date: String
     let dateTime: Date
+    let localDateClass: LocalDate?
+    let offsetDateTimeClass: OffsetDateTime?
+    let offsetTimeClass: OffsetTime?
     let time: String
     let unionArray: [String]
 
@@ -17,6 +20,9 @@ struct TopLevel: Codable {
         case complexUnionArray = "complex-union-array"
         case date = "date"
         case dateTime = "date-time"
+        case localDateClass = "local-date-class"
+        case offsetDateTimeClass = "offset-date-time-class"
+        case offsetTimeClass = "offset-time-class"
         case time = "time"
         case unionArray = "union-array"
     }
@@ -44,6 +50,9 @@ extension TopLevel {
         complexUnionArray: [ComplexUnionArrayElement]? = nil,
         date: String? = nil,
         dateTime: Date? = nil,
+        localDateClass: LocalDate?? = nil,
+        offsetDateTimeClass: OffsetDateTime?? = nil,
+        offsetTimeClass: OffsetTime?? = nil,
         time: String? = nil,
         unionArray: [String]? = nil
     ) -> TopLevel {
@@ -51,6 +60,9 @@ extension TopLevel {
             complexUnionArray: complexUnionArray ?? self.complexUnionArray,
             date: date ?? self.date,
             dateTime: dateTime ?? self.dateTime,
+            localDateClass: localDateClass ?? self.localDateClass,
+            offsetDateTimeClass: offsetDateTimeClass ?? self.offsetDateTimeClass,
+            offsetTimeClass: offsetTimeClass ?? self.offsetTimeClass,
             time: time ?? self.time,
             unionArray: unionArray ?? self.unionArray
         )
@@ -105,6 +117,135 @@ enum ComplexUnionArrayEnum: String, Codable {
     case bar = "bar"
 }
 
+// MARK: - LocalDate
+struct LocalDate: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: LocalDate convenience initializers and mutators
+
+extension LocalDate {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(LocalDate.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(
+    ) -> LocalDate {
+        return LocalDate(
+        )
+    }
+
+    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: - OffsetDateTime
+struct OffsetDateTime: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: OffsetDateTime convenience initializers and mutators
+
+extension OffsetDateTime {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(OffsetDateTime.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(
+    ) -> OffsetDateTime {
+        return OffsetDateTime(
+        )
+    }
+
+    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: - OffsetTime
+struct OffsetTime: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: OffsetTime convenience initializers and mutators
+
+extension OffsetTime {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(OffsetTime.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(
+    ) -> OffsetTime {
+        return OffsetTime(
+        )
+    }
+
+    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 168057e..06506b0 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
@@ -226,6 +226,7 @@ enum Enum: String, Codable {
     case enumLeft = "left"
     case enumLet = "let"
     case list = "list"
+    case localDate = "LocalDate"
     case locale = "Locale"
     case lock = "lock"
     case long = "long"
@@ -258,6 +259,8 @@ enum Enum: String, Codable {
     case nullptr = "nullptr"
     case number = "number"
     case object = "object"
+    case offsetDateTime = "OffsetDateTime"
+    case offsetTime = "OffsetTime"
     case objectMapper = "ObjectMapper"
     case of = "of"
     case oneway = "oneway"
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 5f01860..afc64e2 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
@@ -185,6 +185,7 @@ struct TopLevel: Codable {
     let topLevelLeft: UnionLeft?
     let topLevelLet: UnionLet?
     let list: UnionList?
+    let localDate: UnionLocalDate?
     let locale: UnionLocale?
     let lock: UnionLock?
     let long: UnionLong?
@@ -219,6 +220,8 @@ struct TopLevel: Codable {
     let object: UnionObject?
     let objectMapper: UnionObjectMapper?
     let of: UnionOf?
+    let offsetDateTime: UnionOffsetDateTime?
+    let offsetTime: UnionOffsetTime?
     let oneway: UnionOneway?
     let topLevelOpen: UnionOpen?
     let topLevelOperator: UnionOperator?
@@ -526,6 +529,7 @@ struct TopLevel: Codable {
         case topLevelLeft = "left"
         case topLevelLet = "let"
         case list = "list"
+        case localDate = "LocalDate"
         case locale = "Locale"
         case lock = "lock"
         case long = "long"
@@ -560,6 +564,8 @@ struct TopLevel: Codable {
         case object = "object"
         case objectMapper = "ObjectMapper"
         case of = "of"
+        case offsetDateTime = "OffsetDateTime"
+        case offsetTime = "OffsetTime"
         case oneway = "oneway"
         case topLevelOpen = "open"
         case topLevelOperator = "operator"
@@ -887,6 +893,7 @@ extension TopLevel {
         topLevelLeft: UnionLeft?? = nil,
         topLevelLet: UnionLet?? = nil,
         list: UnionList?? = nil,
+        localDate: UnionLocalDate?? = nil,
         locale: UnionLocale?? = nil,
         lock: UnionLock?? = nil,
         long: UnionLong?? = nil,
@@ -921,6 +928,8 @@ extension TopLevel {
         object: UnionObject?? = nil,
         objectMapper: UnionObjectMapper?? = nil,
         of: UnionOf?? = nil,
+        offsetDateTime: UnionOffsetDateTime?? = nil,
+        offsetTime: UnionOffsetTime?? = nil,
         oneway: UnionOneway?? = nil,
         topLevelOpen: UnionOpen?? = nil,
         topLevelOperator: UnionOperator?? = nil,
@@ -1228,6 +1237,7 @@ extension TopLevel {
             topLevelLeft: topLevelLeft ?? self.topLevelLeft,
             topLevelLet: topLevelLet ?? self.topLevelLet,
             list: list ?? self.list,
+            localDate: localDate ?? self.localDate,
             locale: locale ?? self.locale,
             lock: lock ?? self.lock,
             long: long ?? self.long,
@@ -1262,6 +1272,8 @@ extension TopLevel {
             object: object ?? self.object,
             objectMapper: objectMapper ?? self.objectMapper,
             of: of ?? self.of,
+            offsetDateTime: offsetDateTime ?? self.offsetDateTime,
+            offsetTime: offsetTime ?? self.offsetTime,
             oneway: oneway ?? self.oneway,
             topLevelOpen: topLevelOpen ?? self.topLevelOpen,
             topLevelOperator: topLevelOperator ?? self.topLevelOperator,
@@ -10773,6 +10785,77 @@ extension List {
     }
 }
 
+enum UnionLocalDate: Codable {
+    case double(Double)
+    case localDate(LocalDate)
+
+    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(LocalDate.self) {
+            self = .localDate(x)
+            return
+        }
+        throw DecodingError.typeMismatch(UnionLocalDate.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for UnionLocalDate"))
+    }
+
+    func encode(to encoder: Encoder) throws {
+        var container = encoder.singleValueContainer()
+        switch self {
+        case .double(let x):
+            try container.encode(x)
+        case .localDate(let x):
+            try container.encode(x)
+        }
+    }
+}
+
+// MARK: - LocalDate
+struct LocalDate: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: LocalDate convenience initializers and mutators
+
+extension LocalDate {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(LocalDate.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(
+    ) -> LocalDate {
+        return LocalDate(
+        )
+    }
+
+    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 UnionLocale: Codable {
     case double(Double)
     case localeClass(LocaleClass)
@@ -12832,6 +12915,148 @@ extension Of {
     }
 }
 
+enum UnionOffsetDateTime: Codable {
+    case double(Double)
+    case offsetDateTime(OffsetDateTime)
+
+    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(OffsetDateTime.self) {
+            self = .offsetDateTime(x)
+            return
+        }
+        throw DecodingError.typeMismatch(UnionOffsetDateTime.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for UnionOffsetDateTime"))
+    }
+
+    func encode(to encoder: Encoder) throws {
+        var container = encoder.singleValueContainer()
+        switch self {
+        case .double(let x):
+            try container.encode(x)
+        case .offsetDateTime(let x):
+            try container.encode(x)
+        }
+    }
+}
+
+// MARK: - OffsetDateTime
+struct OffsetDateTime: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: OffsetDateTime convenience initializers and mutators
+
+extension OffsetDateTime {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(OffsetDateTime.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(
+    ) -> OffsetDateTime {
+        return OffsetDateTime(
+        )
+    }
+
+    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 UnionOffsetTime: Codable {
+    case double(Double)
+    case offsetTime(OffsetTime)
+
+    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(OffsetTime.self) {
+            self = .offsetTime(x)
+            return
+        }
+        throw DecodingError.typeMismatch(UnionOffsetTime.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for UnionOffsetTime"))
+    }
+
+    func encode(to encoder: Encoder) throws {
+        var container = encoder.singleValueContainer()
+        switch self {
+        case .double(let x):
+            try container.encode(x)
+        case .offsetTime(let x):
+            try container.encode(x)
+        }
+    }
+}
+
+// MARK: - OffsetTime
+struct OffsetTime: Codable {
+    private enum K: String, CodingKey { case unused }
+    init(from decoder: Decoder) throws {
+        _ = try decoder.container(keyedBy: K.self)
+    }
+    init() {
+    }
+}
+
+// MARK: OffsetTime convenience initializers and mutators
+
+extension OffsetTime {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(OffsetTime.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(
+    ) -> OffsetTime {
+        return OffsetTime(
+        )
+    }
+
+    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 UnionOneway: Codable {
     case double(Double)
     case oneway(Oneway)
diff --git a/base/schema-typescript/test/inputs/schema/date-time.schema/default/TopLevel.ts b/head/schema-typescript/test/inputs/schema/date-time.schema/default/TopLevel.ts
index 4427935..bdad9bf 100644
--- a/base/schema-typescript/test/inputs/schema/date-time.schema/default/TopLevel.ts
+++ b/head/schema-typescript/test/inputs/schema/date-time.schema/default/TopLevel.ts
@@ -8,11 +8,14 @@
 // match the expected interface, even if the JSON is valid.
 
 export interface TopLevel {
-    "complex-union-array": ComplexUnionArrayElement[];
-    date:                  Date;
-    "date-time":           Date;
-    time:                  string;
-    "union-array":         string[];
+    "complex-union-array":     ComplexUnionArrayElement[];
+    date:                      Date;
+    "date-time":               Date;
+    "local-date-class"?:       object;
+    "offset-date-time-class"?: object;
+    "offset-time-class"?:      object;
+    time:                      string;
+    "union-array":             string[];
 }
 
 export type ComplexUnionArrayElement = Date | ComplexUnionArrayEnum | number;
@@ -210,6 +213,9 @@ const typeMap: any = {
         { json: "complex-union-array", js: "complex-union-array", typ: a(u(Date, r("ComplexUnionArrayEnum"), i(0))) },
         { json: "date", js: "date", typ: Date },
         { json: "date-time", js: "date-time", typ: Date },
+        { json: "local-date-class", js: "local-date-class", typ: u(undefined, m("any")) },
+        { json: "offset-date-time-class", js: "offset-date-time-class", typ: u(undefined, m("any")) },
+        { json: "offset-time-class", js: "offset-time-class", typ: u(undefined, m("any")) },
         { json: "time", js: "time", typ: "" },
         { json: "union-array", js: "union-array", typ: a("") },
     ], false),
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 a2156ac..5551081 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" | "Serializable" | "self" | "Sendable" | "serialize" | "SerialName" | "KSerializer" | "PrimitiveKind" | "SerialDescriptor" | "SerializerProvider" | "set" | "short" | "signed" | "SimpleModule" | "sizeof" | "stackalloc" | "Standards" | "static" | "static_assert" | "static_cast" | "StdDeserializer" | "StdSerializer" | "strictfp" | "string" | "struct" | "subscript" | "super" | "switch" | "symbol" | "synchronized" | "system" | "template" | "then" | "this" | "thread_local" | "throw" | "throws" | "TimeOnly" | "TimeOnlyConverter" | "TimeZone" | "to_json" | "top_level" | "toString" | "transient" | "True" | "true" | "try" | "Type" | "type" | "typealias" | "typedef" | "typeid" | "typename" | "typeof" | "uint" | "ulong" | "unchecked" | "undefined" | "union" | "UseSerializers" | "unowned" | "unsafe" | "unsigned" | "ushort" | "using" | "Utf8JsonReader" | "Utf8JsonWriter" | "UUID" | "var" | "virtual" | "void" | "volatile" | "wchar_t" | "weak" | "where" | "while" | "willSet" | "with" | "xor" | "xor_eq" | "YES" | "yield" | "dummy";
+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" | "LocalDate" | "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" | "OffsetDateTime" | "OffsetTime" | "ObjectMapper" | "of" | "oneway" | "open" | "operator" | "optional" | "or" | "or_eq" | "out" | "override" | "package" | "params" | "pass" | "port" | "postfix" | "precedence" | "prefix" | "print" | "printf" | "printMembers" | "private" | "protected" | "Protocol" | "protocol" | "public" | "quicktype" | "raise" | "range" | "readonly" | "ref" | "RegExp" | "register" | "reinterpret_cast" | "repeat" | "require" | "required" | "requires" | "restrict" | "retain" | "rethrows" | "return" | "right" | "runtimeType" | "s" | "sbyte" | "sealed" | "SEL" | "select" | "Self" | "Serializable" | "self" | "Sendable" | "serialize" | "SerialName" | "KSerializer" | "PrimitiveKind" | "SerialDescriptor" | "SerializerProvider" | "set" | "short" | "signed" | "SimpleModule" | "sizeof" | "stackalloc" | "Standards" | "static" | "static_assert" | "static_cast" | "StdDeserializer" | "StdSerializer" | "strictfp" | "string" | "struct" | "subscript" | "super" | "switch" | "symbol" | "synchronized" | "system" | "template" | "then" | "this" | "thread_local" | "throw" | "throws" | "TimeOnly" | "TimeOnlyConverter" | "TimeZone" | "to_json" | "top_level" | "toString" | "transient" | "True" | "true" | "try" | "Type" | "type" | "typealias" | "typedef" | "typeid" | "typename" | "typeof" | "uint" | "ulong" | "unchecked" | "undefined" | "union" | "UseSerializers" | "unowned" | "unsafe" | "unsigned" | "ushort" | "using" | "Utf8JsonReader" | "Utf8JsonWriter" | "UUID" | "var" | "virtual" | "void" | "volatile" | "wchar_t" | "weak" | "where" | "while" | "willSet" | "with" | "xor" | "xor_eq" | "YES" | "yield" | "dummy";
 
 // Converts JSON strings to/from your types
 // and asserts the results of JSON.parse at runtime
@@ -381,6 +381,7 @@ const typeMap: any = {
         "left",
         "let",
         "list",
+        "LocalDate",
         "Locale",
         "lock",
         "long",
@@ -413,6 +414,8 @@ const typeMap: any = {
         "nullptr",
         "number",
         "object",
+        "OffsetDateTime",
+        "OffsetTime",
         "ObjectMapper",
         "of",
         "oneway",
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 0674cc9..0bbba13 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
@@ -186,6 +186,7 @@ export interface TopLevel {
     left?:                       UnionLeft;
     let?:                        UnionLet;
     list?:                       UnionList;
+    LocalDate?:                  UnionLocalDate;
     Locale?:                     UnionLocale;
     lock?:                       UnionLock;
     long?:                       UnionLong;
@@ -220,6 +221,8 @@ export interface TopLevel {
     object?:                     UnionObject;
     ObjectMapper?:               UnionObjectMapper;
     of?:                         UnionOf;
+    OffsetDateTime?:             UnionOffsetDateTime;
+    OffsetTime?:                 UnionOffsetTime;
     oneway?:                     UnionOneway;
     open?:                       UnionOpen;
     operator?:                   UnionOperator;
@@ -422,6 +425,8 @@ export type UnionJSONTokenType = object | number;
 
 export type UnionKSerializer = object | number;
 
+export type UnionLocalDate = object | number;
+
 export type UnionLocale = object | number;
 
 export type UnionMapEntry = object | number;
@@ -440,6 +445,10 @@ export type UnionNone = object | number;
 
 export type UnionObjectMapper = object | number;
 
+export type UnionOffsetDateTime = object | number;
+
+export type UnionOffsetTime = object | number;
+
 export type UnionPrimitiveKind = object | number;
 
 export type UnionProtocol = object | number;
@@ -1392,6 +1401,7 @@ const typeMap: any = {
         { json: "left", js: "left", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "let", js: "let", typ: u(undefined, u(m("any"), 3.14)) },
         { json: "list", js: "list", typ: u(undefined, u(m("any"), 3.14)) },
+        { json: "LocalDate", js: "LocalDate", typ: u(undefined, u(m("any"), 3.14)) },
         { 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)) },
@@ -1426,6 +1436,8 @@ const typeMap: any = {
         { 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: "of", js: "of", typ: u(undefined, u(m("any"), 3.14)) },
+        { json: "OffsetDateTime", js: "OffsetDateTime", typ: u(undefined, u(m("any"), 3.14)) },
+        { json: "OffsetTime", js: "OffsetTime", 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)) },
         { json: "operator", js: "operator", typ: u(undefined, u(m("any"), 3.14)) },
diff --git a/base/schema-typescript-effect-schema/test/inputs/schema/date-time.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/schema/date-time.schema/default/TopLevel.ts
index c0de558..b3c44c4 100644
--- a/base/schema-typescript-effect-schema/test/inputs/schema/date-time.schema/default/TopLevel.ts
+++ b/head/schema-typescript-effect-schema/test/inputs/schema/date-time.schema/default/TopLevel.ts
@@ -7,10 +7,22 @@ export const ComplexUnionArrayEnum = S.Literal(
 );
 export type ComplexUnionArrayEnum = S.Schema.Type<typeof ComplexUnionArrayEnum>;
 
+export class OffsetTime extends S.Class<OffsetTime>("OffsetTime")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
+export class OffsetDateTime extends S.Class<OffsetDateTime>("OffsetDateTime")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
+export class LocalDate extends S.Class<LocalDate>("LocalDate")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "complex-union-array": S.Array(S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), ComplexUnionArrayEnum, S.Int)),
     "date": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)),
     "date-time": S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
+    "local-date-class": S.optional(LocalDate),
+    "offset-date-time-class": S.optional(OffsetDateTime),
+    "offset-time-class": S.optional(OffsetTime),
     "time": S.String.pipe(S.pattern(/^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)),
     "union-array": S.Array(S.Union(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/)), S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)), S.String.pipe(S.pattern(/^\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/)))),
 }) {}
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 a65db38..815cd1e 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
@@ -178,6 +178,7 @@ export const Enum = S.Literal(
     "left",
     "let",
     "list",
+    "LocalDate",
     "Locale",
     "lock",
     "long",
@@ -210,6 +211,8 @@ export const Enum = S.Literal(
     "nullptr",
     "number",
     "object",
+    "OffsetDateTime",
+    "OffsetTime",
     "ObjectMapper",
     "of",
     "oneway",
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 a740754..d6e97f8 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
@@ -403,6 +403,12 @@ export class Open extends S.Class<Open>("Open")(S.Struct({}).pipe(S.filter(value
 export class Oneway extends S.Class<Oneway>("Oneway")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
+export class OffsetTime extends S.Class<OffsetTime>("OffsetTime")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
+export class OffsetDateTime extends S.Class<OffsetDateTime>("OffsetDateTime")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
 export class Of extends S.Class<Of>("Of")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
@@ -499,6 +505,9 @@ export class Lock extends S.Class<Lock>("Lock")(S.Struct({}).pipe(S.filter(value
 export class Locale extends S.Class<Locale>("Locale")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
+export class LocalDate extends S.Class<LocalDate>("LocalDate")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
+) {}
+
 export class List extends S.Class<List>("List")(S.Struct({}).pipe(S.filter(value => typeof value === "object" && value !== null && !Array.isArray(value)))
 ) {}
 
@@ -1194,6 +1203,7 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "left": S.optional(S.Union(S.Number, Left)),
     "let": S.optional(S.Union(S.Number, Let)),
     "list": S.optional(S.Union(S.Number, List)),
+    "LocalDate": S.optional(S.Union(S.Number, LocalDate)),
     "Locale": S.optional(S.Union(S.Number, Locale)),
     "lock": S.optional(S.Union(S.Number, Lock)),
     "long": S.optional(S.Union(S.Number, Long)),
@@ -1228,6 +1238,8 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "object": S.optional(S.Union(S.Number, ObjectClass)),
     "ObjectMapper": S.optional(S.Union(S.Number, ObjectMapper)),
     "of": S.optional(S.Union(S.Number, Of)),
+    "OffsetDateTime": S.optional(S.Union(S.Number, OffsetDateTime)),
+    "OffsetTime": S.optional(S.Union(S.Number, OffsetTime)),
     "oneway": S.optional(S.Union(S.Number, Oneway)),
     "open": S.optional(S.Union(S.Number, Open)),
     "operator": S.optional(S.Union(S.Number, Operator)),
diff --git a/base/schema-typescript-zod/test/inputs/schema/date-time.schema/default/TopLevel.ts b/head/schema-typescript-zod/test/inputs/schema/date-time.schema/default/TopLevel.ts
index 7033fc8..9aaffab 100644
--- a/base/schema-typescript-zod/test/inputs/schema/date-time.schema/default/TopLevel.ts
+++ b/head/schema-typescript-zod/test/inputs/schema/date-time.schema/default/TopLevel.ts
@@ -7,10 +7,25 @@ export const ComplexUnionArrayEnumSchema = z.enum([
 ]);
 export type ComplexUnionArrayEnum = z.infer<typeof ComplexUnionArrayEnumSchema>;
 
+export const LocalDateSchema = z.object({
+});
+export type LocalDate = z.infer<typeof LocalDateSchema>;
+
+export const OffsetDateTimeSchema = z.object({
+});
+export type OffsetDateTime = z.infer<typeof OffsetDateTimeSchema>;
+
+export const OffsetTimeSchema = z.object({
+});
+export type OffsetTime = z.infer<typeof OffsetTimeSchema>;
+
 export const TopLevelSchema = z.object({
     "complex-union-array": z.array(z.union([ComplexUnionArrayEnumSchema, z.number().int(), z.string().pipe(z.coerce.date())])),
     "date": z.string(),
     "date-time": z.string().pipe(z.coerce.date()),
+    "local-date-class": LocalDateSchema.optional(),
+    "offset-date-time-class": OffsetDateTimeSchema.optional(),
+    "offset-time-class": OffsetTimeSchema.optional(),
     "time": z.string(),
     "union-array": z.array(z.string()),
 });
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 32cbf29..99614b3 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
@@ -178,6 +178,7 @@ export const EnumSchema = z.enum([
     "left",
     "let",
     "list",
+    "LocalDate",
     "Locale",
     "lock",
     "long",
@@ -210,6 +211,8 @@ export const EnumSchema = z.enum([
     "nullptr",
     "number",
     "object",
+    "OffsetDateTime",
+    "OffsetTime",
     "ObjectMapper",
     "of",
     "oneway",
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 7da5fbe..3a187ef 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
@@ -689,6 +689,10 @@ export const ListSchema = z.object({
 });
 export type List = z.infer<typeof ListSchema>;
 
+export const LocalDateSchema = z.object({
+});
+export type LocalDate = z.infer<typeof LocalDateSchema>;
+
 export const LocaleSchema = z.object({
 });
 export type Locale = z.infer<typeof LocaleSchema>;
@@ -817,6 +821,14 @@ export const OfSchema = z.object({
 });
 export type Of = z.infer<typeof OfSchema>;
 
+export const OffsetDateTimeSchema = z.object({
+});
+export type OffsetDateTime = z.infer<typeof OffsetDateTimeSchema>;
+
+export const OffsetTimeSchema = z.object({
+});
+export type OffsetTime = z.infer<typeof OffsetTimeSchema>;
+
 export const OnewaySchema = z.object({
 });
 export type Oneway = z.infer<typeof OnewaySchema>;
@@ -1532,6 +1544,7 @@ export const TopLevelSchema = z.preprocess(value => typeof value === "object" &&
     "left": z.union([LeftSchema, z.number()]).optional(),
     "let": z.union([LetSchema, z.number()]).optional(),
     "list": z.union([ListSchema, z.number()]).optional(),
+    "LocalDate": z.union([LocalDateSchema, z.number()]).optional(),
     "Locale": z.union([LocaleSchema, z.number()]).optional(),
     "lock": z.union([LockSchema, z.number()]).optional(),
     "long": z.union([LongSchema, z.number()]).optional(),
@@ -1566,6 +1579,8 @@ export const TopLevelSchema = z.preprocess(value => typeof value === "object" &&
     "object": z.union([ObjectClassSchema, z.number()]).optional(),
     "ObjectMapper": z.union([ObjectMapperSchema, z.number()]).optional(),
     "of": z.union([OfSchema, z.number()]).optional(),
+    "OffsetDateTime": z.union([OffsetDateTimeSchema, z.number()]).optional(),
+    "OffsetTime": z.union([OffsetTimeSchema, z.number()]).optional(),
     "oneway": z.union([OnewaySchema, z.number()]).optional(),
     "open": z.union([OpenSchema, z.number()]).optional(),
     "operator": z.union([OperatorSchema, 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 00d6aeb..7d500d7 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
@@ -6347,6 +6347,7 @@ struct Obj3: Codable {
     let jsonWriter: JSONWriter
     let lambda: Lambda
     let list: List
+    let localDate: LocalDate
     let locale: LocaleClass
     let lock: Lock
     let long: Long
@@ -6360,7 +6361,6 @@ struct Obj3: Codable {
     let new: New
     let newtonsoft: Newtonsoft
     let no: No
-    let noexcept: Noexcept
     let obj3Guard: Guard
     let obj3If: If
     let obj3Import: Import
@@ -6414,6 +6414,7 @@ struct Obj3: Codable {
         case jsonWriter = "json_writer"
         case lambda = "lambda"
         case list = "list"
+        case localDate = "LocalDate"
         case locale = "Locale"
         case lock = "lock"
         case long = "long"
@@ -6427,7 +6428,6 @@ struct Obj3: Codable {
         case new = "new"
         case newtonsoft = "newtonsoft"
         case no = "NO"
-        case noexcept = "noexcept"
         case obj3Guard = "guard"
         case obj3If = "if"
         case obj3Import = "import"
@@ -6501,6 +6501,7 @@ extension Obj3 {
         jsonWriter: JSONWriter? = nil,
         lambda: Lambda? = nil,
         list: List? = nil,
+        localDate: LocalDate? = nil,
         locale: LocaleClass? = nil,
         lock: Lock? = nil,
         long: Long? = nil,
@@ -6514,7 +6515,6 @@ extension Obj3 {
         new: New? = nil,
         newtonsoft: Newtonsoft? = nil,
         no: No? = nil,
-        noexcept: Noexcept? = nil,
         obj3Guard: Guard? = nil,
         obj3If: If? = nil,
         obj3Import: Import? = nil,
@@ -6568,6 +6568,7 @@ extension Obj3 {
             jsonWriter: jsonWriter ?? self.jsonWriter,
             lambda: lambda ?? self.lambda,
             list: list ?? self.list,
+            localDate: localDate ?? self.localDate,
             locale: locale ?? self.locale,
             lock: lock ?? self.lock,
             long: long ?? self.long,
@@ -6581,7 +6582,6 @@ extension Obj3 {
             new: new ?? self.new,
             newtonsoft: newtonsoft ?? self.newtonsoft,
             no: no ?? self.no,
-            noexcept: noexcept ?? self.noexcept,
             obj3Guard: obj3Guard ?? self.obj3Guard,
             obj3If: obj3If ?? self.obj3If,
             obj3Import: obj3Import ?? self.obj3Import,
@@ -8106,6 +8106,50 @@ extension List {
     }
 }
 
+// MARK: - LocalDate
+struct LocalDate: Codable {
+    let localDate: Int
+
+    enum CodingKeys: String, CodingKey {
+        case localDate = "LocalDate"
+    }
+}
+
+// MARK: LocalDate convenience initializers and mutators
+
+extension LocalDate {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(LocalDate.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(
+        localDate: Int? = nil
+    ) -> LocalDate {
+        return LocalDate(
+            localDate: localDate ?? self.localDate
+        )
+    }
+
+    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: - LocaleClass
 struct LocaleClass: Codable {
     let locale: Int
@@ -8678,50 +8722,6 @@ extension No {
     }
 }
 
-// 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
@@ -9430,6 +9430,7 @@ extension Nil {
 struct Obj4: Codable {
     let dummy: Int
     let noSuchMethod: NoSuchMethod
+    let noexcept: Noexcept
     let nonatomic: Nonatomic
     let none: None
     let nonlocal: Nonlocal
@@ -9462,6 +9463,8 @@ struct Obj4: Codable {
     let object: Object
     let objectMapper: ObjectMapper
     let of: Of
+    let offsetDateTime: OffsetDateTime
+    let offsetTime: OffsetTime
     let oneway: Oneway
     let or: Or
     let orEq: OrEq
@@ -9490,13 +9493,11 @@ struct Obj4: Codable {
     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 noSuchMethod = "noSuchMethod"
+        case noexcept = "noexcept"
         case nonatomic = "nonatomic"
         case none = "None"
         case nonlocal = "nonlocal"
@@ -9529,6 +9530,8 @@ struct Obj4: Codable {
         case object = "object"
         case objectMapper = "ObjectMapper"
         case of = "of"
+        case offsetDateTime = "OffsetDateTime"
+        case offsetTime = "OffsetTime"
         case oneway = "oneway"
         case or = "or"
         case orEq = "or_eq"
@@ -9557,9 +9560,6 @@ struct Obj4: Codable {
         case runtimeType = "runtimeType"
         case s = "s"
         case sbyte = "sbyte"
-        case sealed = "sealed"
-        case sel = "SEL"
-        case select = "select"
     }
 }
 
@@ -9584,6 +9584,7 @@ extension Obj4 {
     func with(
         dummy: Int? = nil,
         noSuchMethod: NoSuchMethod? = nil,
+        noexcept: Noexcept? = nil,
         nonatomic: Nonatomic? = nil,
         none: None? = nil,
         nonlocal: Nonlocal? = nil,
@@ -9616,6 +9617,8 @@ extension Obj4 {
         object: Object? = nil,
         objectMapper: ObjectMapper? = nil,
         of: Of? = nil,
+        offsetDateTime: OffsetDateTime? = nil,
+        offsetTime: OffsetTime? = nil,
         oneway: Oneway? = nil,
         or: Or? = nil,
         orEq: OrEq? = nil,
@@ -9643,14 +9646,12 @@ extension Obj4 {
         retain: Retain? = nil,
         runtimeType: RuntimeType? = nil,
         s: S? = nil,
-        sbyte: Sbyte? = nil,
-        sealed: Sealed? = nil,
-        sel: Sel? = nil,
-        select: Select? = nil
+        sbyte: Sbyte? = nil
     ) -> Obj4 {
         return Obj4(
             dummy: dummy ?? self.dummy,
             noSuchMethod: noSuchMethod ?? self.noSuchMethod,
+            noexcept: noexcept ?? self.noexcept,
             nonatomic: nonatomic ?? self.nonatomic,
             none: none ?? self.none,
             nonlocal: nonlocal ?? self.nonlocal,
@@ -9683,6 +9684,8 @@ extension Obj4 {
             object: object ?? self.object,
             objectMapper: objectMapper ?? self.objectMapper,
             of: of ?? self.of,
+            offsetDateTime: offsetDateTime ?? self.offsetDateTime,
+            offsetTime: offsetTime ?? self.offsetTime,
             oneway: oneway ?? self.oneway,
             or: or ?? self.or,
             orEq: orEq ?? self.orEq,
@@ -9710,10 +9713,7 @@ extension Obj4 {
             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
+            sbyte: sbyte ?? self.sbyte
         )
     }
 
@@ -9770,6 +9770,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
@@ -11178,6 +11222,94 @@ extension Of {
     }
 }
 
+// MARK: - OffsetDateTime
+struct OffsetDateTime: Codable {
+    let offsetDateTime: Int
+
+    enum CodingKeys: String, CodingKey {
+        case offsetDateTime = "OffsetDateTime"
+    }
+}
+
+// MARK: OffsetDateTime convenience initializers and mutators
+
+extension OffsetDateTime {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(OffsetDateTime.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(
+        offsetDateTime: Int? = nil
+    ) -> OffsetDateTime {
+        return OffsetDateTime(
+            offsetDateTime: offsetDateTime ?? self.offsetDateTime
+        )
+    }
+
+    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: - OffsetTime
+struct OffsetTime: Codable {
+    let offsetTime: Int
+
+    enum CodingKeys: String, CodingKey {
+        case offsetTime = "OffsetTime"
+    }
+}
+
+// MARK: OffsetTime convenience initializers and mutators
+
+extension OffsetTime {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(OffsetTime.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(
+        offsetTime: Int? = nil
+    ) -> OffsetTime {
+        return OffsetTime(
+            offsetTime: offsetTime ?? self.offsetTime
+        )
+    }
+
+    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: - Oneway
 struct Oneway: Codable {
     let oneway: Int
@@ -12410,138 +12542,6 @@ extension Sbyte {
     }
 }
 
-// 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
@@ -12563,6 +12563,9 @@ struct Obj5: Codable {
     let primitiveKind: PrimitiveKind
     let purpleSelf: Obj5Self
     let purpleTrue: TrueClass
+    let sealed: Sealed
+    let sel: Sel
+    let select: Select
     let sendable: Sendable
     let serialDescriptor: SerialDescriptor
     let serialName: SerialName
@@ -12605,10 +12608,7 @@ struct Obj5: Codable {
     let unchecked: Unchecked
     let undefined: Undefined
     let union: Union
-    let unsafe: Unsafe
-    let unsigned: Unsigned
     let useSerializers: UseSerializers
-    let ushort: Ushort
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
@@ -12630,6 +12630,9 @@ struct Obj5: Codable {
         case primitiveKind = "PrimitiveKind"
         case purpleSelf = "self"
         case purpleTrue = "true"
+        case sealed = "sealed"
+        case sel = "SEL"
+        case select = "select"
         case sendable = "Sendable"
         case serialDescriptor = "SerialDescriptor"
         case serialName = "SerialName"
@@ -12672,10 +12675,7 @@ struct Obj5: Codable {
         case unchecked = "unchecked"
         case undefined = "undefined"
         case union = "union"
-        case unsafe = "unsafe"
-        case unsigned = "unsigned"
         case useSerializers = "UseSerializers"
-        case ushort = "ushort"
     }
 }
 
@@ -12717,6 +12717,9 @@ extension Obj5 {
         primitiveKind: PrimitiveKind? = nil,
         purpleSelf: Obj5Self? = nil,
         purpleTrue: TrueClass? = nil,
+        sealed: Sealed? = nil,
+        sel: Sel? = nil,
+        select: Select? = nil,
         sendable: Sendable? = nil,
         serialDescriptor: SerialDescriptor? = nil,
         serialName: SerialName? = nil,
@@ -12759,10 +12762,7 @@ extension Obj5 {
         unchecked: Unchecked? = nil,
         undefined: Undefined? = nil,
         union: Union? = nil,
-        unsafe: Unsafe? = nil,
-        unsigned: Unsigned? = nil,
-        useSerializers: UseSerializers? = nil,
-        ushort: Ushort? = nil
+        useSerializers: UseSerializers? = nil
     ) -> Obj5 {
         return Obj5(
             dummy: dummy ?? self.dummy,
@@ -12784,6 +12784,9 @@ extension Obj5 {
             primitiveKind: primitiveKind ?? self.primitiveKind,
             purpleSelf: purpleSelf ?? self.purpleSelf,
             purpleTrue: purpleTrue ?? self.purpleTrue,
+            sealed: sealed ?? self.sealed,
+            sel: sel ?? self.sel,
+            select: select ?? self.select,
             sendable: sendable ?? self.sendable,
             serialDescriptor: serialDescriptor ?? self.serialDescriptor,
             serialName: serialName ?? self.serialName,
@@ -12826,10 +12829,7 @@ extension Obj5 {
             unchecked: unchecked ?? self.unchecked,
             undefined: undefined ?? self.undefined,
             union: union ?? self.union,
-            unsafe: unsafe ?? self.unsafe,
-            unsigned: unsigned ?? self.unsigned,
-            useSerializers: useSerializers ?? self.useSerializers,
-            ushort: ushort ?? self.ushort
+            useSerializers: useSerializers ?? self.useSerializers
         )
     }
 
@@ -13634,6 +13634,138 @@ extension TrueClass {
     }
 }
 
+// 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: - Sendable
 struct Sendable: Codable {
     let sendable: Int
@@ -15482,94 +15614,6 @@ extension Union {
     }
 }
 
-// MARK: - Unsafe
-struct Unsafe: Codable {
-    let unsafe: Int
-
-    enum CodingKeys: String, CodingKey {
-        case unsafe = "unsafe"
-    }
-}
-
-// MARK: Unsafe convenience initializers and mutators
-
-extension Unsafe {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Unsafe.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(
-        unsafe: Int? = nil
-    ) -> Unsafe {
-        return Unsafe(
-            unsafe: unsafe ?? self.unsafe
-        )
-    }
-
-    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: - Unsigned
-struct Unsigned: Codable {
-    let unsigned: Int
-
-    enum CodingKeys: String, CodingKey {
-        case unsigned = "unsigned"
-    }
-}
-
-// MARK: Unsigned convenience initializers and mutators
-
-extension Unsigned {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Unsigned.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(
-        unsigned: Int? = nil
-    ) -> Unsigned {
-        return Unsigned(
-            unsigned: unsigned ?? self.unsigned
-        )
-    }
-
-    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: - UseSerializers
 struct UseSerializers: Codable {
     let useSerializers: Int
@@ -15614,50 +15658,6 @@ extension UseSerializers {
     }
 }
 
-// MARK: - Ushort
-struct Ushort: Codable {
-    let ushort: Int
-
-    enum CodingKeys: String, CodingKey {
-        case ushort = "ushort"
-    }
-}
-
-// MARK: Ushort convenience initializers and mutators
-
-extension Ushort {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Ushort.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(
-        ushort: Int? = nil
-    ) -> Ushort {
-        return Ushort(
-            ushort: ushort ?? self.ushort
-        )
-    }
-
-    func jsonData() throws -> Data {
-        return try newJSONEncoder().encode(self)
-    }
-
-    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
-        return String(data: try self.jsonData(), encoding: encoding)
-    }
-}
-
 // MARK: - Obj6
 struct Obj6: Codable {
     let dummy: Int
@@ -15666,6 +15666,9 @@ struct Obj6: Codable {
     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
@@ -15687,6 +15690,9 @@ struct Obj6: Codable {
         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"
@@ -15728,6 +15734,9 @@ extension Obj6 {
         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,
@@ -15749,6 +15758,9 @@ extension Obj6 {
             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,
@@ -15994,6 +16006,138 @@ extension WillSet {
     }
 }
 
+// MARK: - Unsafe
+struct Unsafe: Codable {
+    let unsafe: Int
+
+    enum CodingKeys: String, CodingKey {
+        case unsafe = "unsafe"
+    }
+}
+
+// MARK: Unsafe convenience initializers and mutators
+
+extension Unsafe {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Unsafe.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(
+        unsafe: Int? = nil
+    ) -> Unsafe {
+        return Unsafe(
+            unsafe: unsafe ?? self.unsafe
+        )
+    }
+
+    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: - Unsigned
+struct Unsigned: Codable {
+    let unsigned: Int
+
+    enum CodingKeys: String, CodingKey {
+        case unsigned = "unsigned"
+    }
+}
+
+// MARK: Unsigned convenience initializers and mutators
+
+extension Unsigned {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Unsigned.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(
+        unsigned: Int? = nil
+    ) -> Unsigned {
+        return Unsigned(
+            unsigned: unsigned ?? self.unsigned
+        )
+    }
+
+    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: - Ushort
+struct Ushort: Codable {
+    let ushort: Int
+
+    enum CodingKeys: String, CodingKey {
+        case ushort = "ushort"
+    }
+}
+
+// MARK: Ushort convenience initializers and mutators
+
+extension Ushort {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Ushort.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(
+        ushort: Int? = nil
+    ) -> Ushort {
+        return Ushort(
+            ushort: ushort ?? self.ushort
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
 // MARK: - Using
 struct Using: Codable {
     let using: Int
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 f443a99..7d3be7b 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
@@ -7136,6 +7136,7 @@ extension FalseClass {
     let jsonWriter: JSONWriter
     let lambda: Lambda
     let list: List
+    let localDate: LocalDate
     let locale: LocaleClass
     let lock: Lock
     let long: Long
@@ -7149,7 +7150,6 @@ extension FalseClass {
     let new: New
     let newtonsoft: Newtonsoft
     let no: No
-    let noexcept: Noexcept
     let obj3Guard: Guard
     let obj3If: If
     let obj3Import: Import
@@ -7203,6 +7203,7 @@ extension FalseClass {
         case jsonWriter = "json_writer"
         case lambda = "lambda"
         case list = "list"
+        case localDate = "LocalDate"
         case locale = "Locale"
         case lock = "lock"
         case long = "long"
@@ -7216,7 +7217,6 @@ extension FalseClass {
         case new = "new"
         case newtonsoft = "newtonsoft"
         case no = "NO"
-        case noexcept = "noexcept"
         case obj3Guard = "guard"
         case obj3If = "if"
         case obj3Import = "import"
@@ -7235,7 +7235,7 @@ extension FalseClass {
         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, 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, localDate: LocalDate, 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, 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) {
         self.dummy = dummy
         self.hasOwnProperty = hasOwnProperty
         self.hashCode = hashCode
@@ -7271,6 +7271,7 @@ extension FalseClass {
         self.jsonWriter = jsonWriter
         self.lambda = lambda
         self.list = list
+        self.localDate = localDate
         self.locale = locale
         self.lock = lock
         self.long = long
@@ -7284,7 +7285,6 @@ extension FalseClass {
         self.new = new
         self.newtonsoft = newtonsoft
         self.no = no
-        self.noexcept = noexcept
         self.obj3Guard = obj3Guard
         self.obj3If = obj3If
         self.obj3Import = obj3Import
@@ -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, 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, localDate: me.localDate, 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, 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)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -7359,6 +7359,7 @@ extension Obj3 {
         jsonWriter: JSONWriter? = nil,
         lambda: Lambda? = nil,
         list: List? = nil,
+        localDate: LocalDate? = nil,
         locale: LocaleClass? = nil,
         lock: Lock? = nil,
         long: Long? = nil,
@@ -7372,7 +7373,6 @@ extension Obj3 {
         new: New? = nil,
         newtonsoft: Newtonsoft? = nil,
         no: No? = nil,
-        noexcept: Noexcept? = nil,
         obj3Guard: Guard? = nil,
         obj3If: If? = nil,
         obj3Import: Import? = nil,
@@ -7426,6 +7426,7 @@ extension Obj3 {
             jsonWriter: jsonWriter ?? self.jsonWriter,
             lambda: lambda ?? self.lambda,
             list: list ?? self.list,
+            localDate: localDate ?? self.localDate,
             locale: locale ?? self.locale,
             lock: lock ?? self.lock,
             long: long ?? self.long,
@@ -7439,7 +7440,6 @@ extension Obj3 {
             new: new ?? self.new,
             newtonsoft: newtonsoft ?? self.newtonsoft,
             no: no ?? self.no,
-            noexcept: noexcept ?? self.noexcept,
             obj3Guard: obj3Guard ?? self.obj3Guard,
             obj3If: obj3If ?? self.obj3If,
             obj3Import: obj3Import ?? self.obj3Import,
@@ -9134,6 +9134,55 @@ extension List {
     }
 }
 
+// MARK: - LocalDate
+@objcMembers class LocalDate: NSObject, Codable {
+    let localDate: Int
+
+    enum CodingKeys: String, CodingKey {
+        case localDate = "LocalDate"
+    }
+
+    init(localDate: Int) {
+        self.localDate = localDate
+    }
+}
+
+// MARK: LocalDate convenience initializers and mutators
+
+extension LocalDate {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(LocalDate.self, from: data)
+        self.init(localDate: me.localDate)
+    }
+
+    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(
+        localDate: Int? = nil
+    ) -> LocalDate {
+        return LocalDate(
+            localDate: localDate ?? self.localDate
+        )
+    }
+
+    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: - LocaleClass
 @objcMembers class LocaleClass: NSObject, Codable {
     let locale: Int
@@ -9771,55 +9820,6 @@ extension No {
     }
 }
 
-// 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
-        )
-    }
-
-    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
 @objcMembers class Guard: NSObject, Codable {
     let guardGuard: Int
@@ -10608,6 +10608,7 @@ extension Nil {
 @objcMembers class Obj4: NSObject, Codable {
     let dummy: Int
     let noSuchMethod: NoSuchMethod
+    let noexcept: Noexcept
     let nonatomic: Nonatomic
     let none: None
     let nonlocal: Nonlocal
@@ -10641,6 +10642,8 @@ extension Nil {
     let object: Object
     let objectMapper: ObjectMapper
     let of: Of
+    let offsetDateTime: OffsetDateTime
+    let offsetTime: OffsetTime
     let oneway: Oneway
     let or: Or
     let orEq: OrEq
@@ -10668,13 +10671,11 @@ extension Nil {
     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 noSuchMethod = "noSuchMethod"
+        case noexcept = "noexcept"
         case nonatomic = "nonatomic"
         case none = "None"
         case nonlocal = "nonlocal"
@@ -10708,6 +10709,8 @@ extension Nil {
         case object = "object"
         case objectMapper = "ObjectMapper"
         case of = "of"
+        case offsetDateTime = "OffsetDateTime"
+        case offsetTime = "OffsetTime"
         case oneway = "oneway"
         case or = "or"
         case orEq = "or_eq"
@@ -10735,14 +10738,12 @@ extension Nil {
         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, noSuchMethod: NoSuchMethod, noexcept: Noexcept, 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, offsetDateTime: OffsetDateTime, offsetTime: OffsetTime, 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) {
         self.dummy = dummy
         self.noSuchMethod = noSuchMethod
+        self.noexcept = noexcept
         self.nonatomic = nonatomic
         self.none = none
         self.nonlocal = nonlocal
@@ -10776,6 +10777,8 @@ extension Nil {
         self.object = object
         self.objectMapper = objectMapper
         self.of = of
+        self.offsetDateTime = offsetDateTime
+        self.offsetTime = offsetTime
         self.oneway = oneway
         self.or = or
         self.orEq = orEq
@@ -10803,9 +10806,6 @@ extension Nil {
         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, 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, 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, offsetDateTime: me.offsetDateTime, offsetTime: me.offsetTime, 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)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -10831,6 +10831,7 @@ extension Obj4 {
     func with(
         dummy: Int? = nil,
         noSuchMethod: NoSuchMethod? = nil,
+        noexcept: Noexcept? = nil,
         nonatomic: Nonatomic? = nil,
         none: None? = nil,
         nonlocal: Nonlocal? = nil,
@@ -10864,6 +10865,8 @@ extension Obj4 {
         object: Object? = nil,
         objectMapper: ObjectMapper? = nil,
         of: Of? = nil,
+        offsetDateTime: OffsetDateTime? = nil,
+        offsetTime: OffsetTime? = nil,
         oneway: Oneway? = nil,
         or: Or? = nil,
         orEq: OrEq? = nil,
@@ -10890,14 +10893,12 @@ extension Obj4 {
         restrict: Restrict? = nil,
         runtimeType: RuntimeType? = nil,
         s: S? = nil,
-        sbyte: Sbyte? = nil,
-        sealed: Sealed? = nil,
-        sel: Sel? = nil,
-        select: Select? = nil
+        sbyte: Sbyte? = nil
     ) -> Obj4 {
         return Obj4(
             dummy: dummy ?? self.dummy,
             noSuchMethod: noSuchMethod ?? self.noSuchMethod,
+            noexcept: noexcept ?? self.noexcept,
             nonatomic: nonatomic ?? self.nonatomic,
             none: none ?? self.none,
             nonlocal: nonlocal ?? self.nonlocal,
@@ -10931,6 +10932,8 @@ extension Obj4 {
             object: object ?? self.object,
             objectMapper: objectMapper ?? self.objectMapper,
             of: of ?? self.of,
+            offsetDateTime: offsetDateTime ?? self.offsetDateTime,
+            offsetTime: offsetTime ?? self.offsetTime,
             oneway: oneway ?? self.oneway,
             or: or ?? self.or,
             orEq: orEq ?? self.orEq,
@@ -10957,10 +10960,7 @@ extension Obj4 {
             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
+            sbyte: sbyte ?? self.sbyte
         )
     }
 
@@ -11022,6 +11022,55 @@ extension NoSuchMethod {
     }
 }
 
+// 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
+        )
+    }
+
+    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
 @objcMembers class Nonatomic: NSObject, Codable {
     let nonatomic: Int
@@ -12639,6 +12688,104 @@ extension Of {
     }
 }
 
+// MARK: - OffsetDateTime
+@objcMembers class OffsetDateTime: NSObject, Codable {
+    let offsetDateTime: Int
+
+    enum CodingKeys: String, CodingKey {
+        case offsetDateTime = "OffsetDateTime"
+    }
+
+    init(offsetDateTime: Int) {
+        self.offsetDateTime = offsetDateTime
+    }
+}
+
+// MARK: OffsetDateTime convenience initializers and mutators
+
+extension OffsetDateTime {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(OffsetDateTime.self, from: data)
+        self.init(offsetDateTime: me.offsetDateTime)
+    }
+
+    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(
+        offsetDateTime: Int? = nil
+    ) -> OffsetDateTime {
+        return OffsetDateTime(
+            offsetDateTime: offsetDateTime ?? self.offsetDateTime
+        )
+    }
+
+    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: - OffsetTime
+@objcMembers class OffsetTime: NSObject, Codable {
+    let offsetTime: Int
+
+    enum CodingKeys: String, CodingKey {
+        case offsetTime = "OffsetTime"
+    }
+
+    init(offsetTime: Int) {
+        self.offsetTime = offsetTime
+    }
+}
+
+// MARK: OffsetTime convenience initializers and mutators
+
+extension OffsetTime {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(OffsetTime.self, from: data)
+        self.init(offsetTime: me.offsetTime)
+    }
+
+    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(
+        offsetTime: Int? = nil
+    ) -> OffsetTime {
+        return OffsetTime(
+            offsetTime: offsetTime ?? self.offsetTime
+        )
+    }
+
+    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: - Oneway
 @objcMembers class Oneway: NSObject, Codable {
     let oneway: Int
@@ -13962,153 +14109,6 @@ extension Sbyte {
     }
 }
 
-// MARK: - Sealed
-@objcMembers class Sealed: NSObject, Codable {
-    let sealed: Int
-
-    enum CodingKeys: String, CodingKey {
-        case sealed = "sealed"
-    }
-
-    init(sealed: Int) {
-        self.sealed = sealed
-    }
-}
-
-// MARK: Sealed convenience initializers and mutators
-
-extension Sealed {
-    convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Sealed.self, from: data)
-        self.init(sealed: me.sealed)
-    }
-
-    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(
-        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
-@objcMembers class Sel: NSObject, Codable {
-    let sel: Int
-
-    enum CodingKeys: String, CodingKey {
-        case sel = "SEL"
-    }
-
-    init(sel: Int) {
-        self.sel = sel
-    }
-}
-
-// MARK: Sel convenience initializers and mutators
-
-extension Sel {
-    convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Sel.self, from: data)
-        self.init(sel: me.sel)
-    }
-
-    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(
-        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
-@objcMembers class Select: NSObject, Codable {
-    let select: Int
-
-    enum CodingKeys: String, CodingKey {
-        case select = "select"
-    }
-
-    init(select: Int) {
-        self.select = select
-    }
-}
-
-// MARK: Select convenience initializers and mutators
-
-extension Select {
-    convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Select.self, from: data)
-        self.init(select: me.select)
-    }
-
-    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(
-        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
 @objcMembers class Obj5: NSObject, Codable {
     let dummy: Int
@@ -14130,6 +14130,9 @@ extension Select {
     let primitiveKind: PrimitiveKind
     let purpleSelf: Obj5Self
     let purpleTrue: TrueClass
+    let sealed: Sealed
+    let sel: Sel
+    let select: Select
     let sendable: Sendable
     let serialDescriptor: SerialDescriptor
     let serialName: SerialName
@@ -14172,10 +14175,7 @@ extension Select {
     let unchecked: Unchecked
     let undefined: Undefined
     let union: Union
-    let unsafe: Unsafe
-    let unsigned: Unsigned
     let useSerializers: UseSerializers
-    let ushort: Ushort
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
@@ -14197,6 +14197,9 @@ extension Select {
         case primitiveKind = "PrimitiveKind"
         case purpleSelf = "self"
         case purpleTrue = "true"
+        case sealed = "sealed"
+        case sel = "SEL"
+        case select = "select"
         case sendable = "Sendable"
         case serialDescriptor = "SerialDescriptor"
         case serialName = "SerialName"
@@ -14239,13 +14242,10 @@ extension Select {
         case unchecked = "unchecked"
         case undefined = "undefined"
         case union = "union"
-        case unsafe = "unsafe"
-        case unsigned = "unsigned"
         case useSerializers = "UseSerializers"
-        case ushort = "ushort"
     }
 
-    init(dummy: Int, kSerializer: KSerializer, obj5Self: SelfClass, obj5Set: Set, obj5Static: Static, obj5Struct: Struct, obj5Subscript: Subscript, obj5Super: Super, obj5Switch: Switch, obj5Throw: Throw, obj5Throws: Throws, obj5True: True, obj5Try: Try, obj5Type: Obj5Type, obj5Typealias: Typealias, obj5Unowned: Unowned, primitiveKind: PrimitiveKind, purpleSelf: Obj5Self, purpleTrue: TrueClass, sendable: Sendable, serialDescriptor: SerialDescriptor, serialName: SerialName, serializable: Serializable, serialize: Serialize, serializerProvider: SerializerProvider, short: Short, signed: Signed, simpleModule: SimpleModule, sizeof: Sizeof, stackalloc: Stackalloc, standards: Standards, staticAssert: StaticAssert, staticCast: StaticCast, stdDeserializer: StdDeserializer, stdSerializer: StdSerializer, strictfp: Strictfp, string: StringClass, symbol: Symbol, synchronized: Synchronized, system: System, template: Template, then: Then, this: This, threadLocal: ThreadLocal, timeOnly: TimeOnly, timeOnlyConverter: TimeOnlyConverter, timeZone: TimeZoneClass, toJSON: ToJSON, toString: ToString, topLevel: TopLevelClass, transient: Transient, type: TypeClass, typedef: Typedef, typeid: Typeid, typename: Typename, typeof: Typeof, uint: Uint, ulong: Ulong, unchecked: Unchecked, undefined: Undefined, union: Union, unsafe: Unsafe, unsigned: Unsigned, useSerializers: UseSerializers, ushort: Ushort) {
+    init(dummy: Int, kSerializer: KSerializer, obj5Self: SelfClass, obj5Set: Set, obj5Static: Static, obj5Struct: Struct, obj5Subscript: Subscript, obj5Super: Super, obj5Switch: Switch, obj5Throw: Throw, obj5Throws: Throws, obj5True: True, obj5Try: Try, obj5Type: Obj5Type, obj5Typealias: Typealias, obj5Unowned: Unowned, primitiveKind: PrimitiveKind, purpleSelf: Obj5Self, purpleTrue: TrueClass, sealed: Sealed, sel: Sel, select: Select, sendable: Sendable, serialDescriptor: SerialDescriptor, serialName: SerialName, serializable: Serializable, serialize: Serialize, serializerProvider: SerializerProvider, short: Short, signed: Signed, simpleModule: SimpleModule, sizeof: Sizeof, stackalloc: Stackalloc, standards: Standards, staticAssert: StaticAssert, staticCast: StaticCast, stdDeserializer: StdDeserializer, stdSerializer: StdSerializer, strictfp: Strictfp, string: StringClass, symbol: Symbol, synchronized: Synchronized, system: System, template: Template, then: Then, this: This, threadLocal: ThreadLocal, timeOnly: TimeOnly, timeOnlyConverter: TimeOnlyConverter, timeZone: TimeZoneClass, toJSON: ToJSON, toString: ToString, topLevel: TopLevelClass, transient: Transient, type: TypeClass, typedef: Typedef, typeid: Typeid, typename: Typename, typeof: Typeof, uint: Uint, ulong: Ulong, unchecked: Unchecked, undefined: Undefined, union: Union, useSerializers: UseSerializers) {
         self.dummy = dummy
         self.kSerializer = kSerializer
         self.obj5Self = obj5Self
@@ -14265,6 +14265,9 @@ extension Select {
         self.primitiveKind = primitiveKind
         self.purpleSelf = purpleSelf
         self.purpleTrue = purpleTrue
+        self.sealed = sealed
+        self.sel = sel
+        self.select = select
         self.sendable = sendable
         self.serialDescriptor = serialDescriptor
         self.serialName = serialName
@@ -14307,10 +14310,7 @@ extension Select {
         self.unchecked = unchecked
         self.undefined = undefined
         self.union = union
-        self.unsafe = unsafe
-        self.unsigned = unsigned
         self.useSerializers = useSerializers
-        self.ushort = ushort
     }
 }
 
@@ -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, kSerializer: me.kSerializer, obj5Self: me.obj5Self, obj5Set: me.obj5Set, obj5Static: me.obj5Static, obj5Struct: me.obj5Struct, obj5Subscript: me.obj5Subscript, obj5Super: me.obj5Super, obj5Switch: me.obj5Switch, obj5Throw: me.obj5Throw, obj5Throws: me.obj5Throws, obj5True: me.obj5True, obj5Try: me.obj5Try, obj5Type: me.obj5Type, obj5Typealias: me.obj5Typealias, obj5Unowned: me.obj5Unowned, primitiveKind: me.primitiveKind, purpleSelf: me.purpleSelf, purpleTrue: me.purpleTrue, sendable: me.sendable, serialDescriptor: me.serialDescriptor, serialName: me.serialName, serializable: me.serializable, serialize: me.serialize, serializerProvider: me.serializerProvider, short: me.short, signed: me.signed, simpleModule: me.simpleModule, sizeof: me.sizeof, stackalloc: me.stackalloc, standards: me.standards, staticAssert: me.staticAssert, staticCast: me.staticCast, stdDeserializer: me.stdDeserializer, stdSerializer: me.stdSerializer, strictfp: me.strictfp, string: me.string, symbol: me.symbol, synchronized: me.synchronized, system: me.system, template: me.template, then: me.then, this: me.this, threadLocal: me.threadLocal, timeOnly: me.timeOnly, timeOnlyConverter: me.timeOnlyConverter, timeZone: me.timeZone, toJSON: me.toJSON, toString: me.toString, topLevel: me.topLevel, transient: me.transient, type: me.type, typedef: me.typedef, typeid: me.typeid, typename: me.typename, typeof: me.typeof, uint: me.uint, ulong: me.ulong, unchecked: me.unchecked, undefined: me.undefined, union: me.union, unsafe: me.unsafe, unsigned: me.unsigned, useSerializers: me.useSerializers, ushort: me.ushort)
+        self.init(dummy: me.dummy, kSerializer: me.kSerializer, obj5Self: me.obj5Self, obj5Set: me.obj5Set, obj5Static: me.obj5Static, obj5Struct: me.obj5Struct, obj5Subscript: me.obj5Subscript, obj5Super: me.obj5Super, obj5Switch: me.obj5Switch, obj5Throw: me.obj5Throw, obj5Throws: me.obj5Throws, obj5True: me.obj5True, obj5Try: me.obj5Try, obj5Type: me.obj5Type, obj5Typealias: me.obj5Typealias, obj5Unowned: me.obj5Unowned, primitiveKind: me.primitiveKind, purpleSelf: me.purpleSelf, purpleTrue: me.purpleTrue, sealed: me.sealed, sel: me.sel, select: me.select, sendable: me.sendable, serialDescriptor: me.serialDescriptor, serialName: me.serialName, serializable: me.serializable, serialize: me.serialize, serializerProvider: me.serializerProvider, short: me.short, signed: me.signed, simpleModule: me.simpleModule, sizeof: me.sizeof, stackalloc: me.stackalloc, standards: me.standards, staticAssert: me.staticAssert, staticCast: me.staticCast, stdDeserializer: me.stdDeserializer, stdSerializer: me.stdSerializer, strictfp: me.strictfp, string: me.string, symbol: me.symbol, synchronized: me.synchronized, system: me.system, template: me.template, then: me.then, this: me.this, threadLocal: me.threadLocal, timeOnly: me.timeOnly, timeOnlyConverter: me.timeOnlyConverter, timeZone: me.timeZone, toJSON: me.toJSON, toString: me.toString, topLevel: me.topLevel, transient: me.transient, type: me.type, typedef: me.typedef, typeid: me.typeid, typename: me.typename, typeof: me.typeof, uint: me.uint, ulong: me.ulong, unchecked: me.unchecked, undefined: me.undefined, union: me.union, useSerializers: me.useSerializers)
     }
 
     convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -14353,6 +14353,9 @@ extension Obj5 {
         primitiveKind: PrimitiveKind? = nil,
         purpleSelf: Obj5Self? = nil,
         purpleTrue: TrueClass? = nil,
+        sealed: Sealed? = nil,
+        sel: Sel? = nil,
+        select: Select? = nil,
         sendable: Sendable? = nil,
         serialDescriptor: SerialDescriptor? = nil,
         serialName: SerialName? = nil,
@@ -14395,10 +14398,7 @@ extension Obj5 {
         unchecked: Unchecked? = nil,
         undefined: Undefined? = nil,
         union: Union? = nil,
-        unsafe: Unsafe? = nil,
-        unsigned: Unsigned? = nil,
-        useSerializers: UseSerializers? = nil,
-        ushort: Ushort? = nil
+        useSerializers: UseSerializers? = nil
     ) -> Obj5 {
         return Obj5(
             dummy: dummy ?? self.dummy,
@@ -14420,6 +14420,9 @@ extension Obj5 {
             primitiveKind: primitiveKind ?? self.primitiveKind,
             purpleSelf: purpleSelf ?? self.purpleSelf,
             purpleTrue: purpleTrue ?? self.purpleTrue,
+            sealed: sealed ?? self.sealed,
+            sel: sel ?? self.sel,
+            select: select ?? self.select,
             sendable: sendable ?? self.sendable,
             serialDescriptor: serialDescriptor ?? self.serialDescriptor,
             serialName: serialName ?? self.serialName,
@@ -14462,10 +14465,7 @@ extension Obj5 {
             unchecked: unchecked ?? self.unchecked,
             undefined: undefined ?? self.undefined,
             union: union ?? self.union,
-            unsafe: unsafe ?? self.unsafe,
-            unsigned: unsigned ?? self.unsigned,
-            useSerializers: useSerializers ?? self.useSerializers,
-            ushort: ushort ?? self.ushort
+            useSerializers: useSerializers ?? self.useSerializers
         )
     }
 
@@ -15360,25 +15360,25 @@ extension TrueClass {
     }
 }
 
-// MARK: - Sendable
-@objcMembers class Sendable: NSObject, Codable {
-    let sendable: Int
+// MARK: - Sealed
+@objcMembers class Sealed: NSObject, Codable {
+    let sealed: Int
 
     enum CodingKeys: String, CodingKey {
-        case sendable = "Sendable"
+        case sealed = "sealed"
     }
 
-    init(sendable: Int) {
-        self.sendable = sendable
+    init(sealed: Int) {
+        self.sealed = sealed
     }
 }
 
-// MARK: Sendable convenience initializers and mutators
+// MARK: Sealed convenience initializers and mutators
 
-extension Sendable {
+extension Sealed {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Sendable.self, from: data)
-        self.init(sendable: me.sendable)
+        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 +15393,10 @@ extension Sendable {
     }
 
     func with(
-        sendable: Int? = nil
-    ) -> Sendable {
-        return Sendable(
-            sendable: sendable ?? self.sendable
+        sealed: Int? = nil
+    ) -> Sealed {
+        return Sealed(
+            sealed: sealed ?? self.sealed
         )
     }
 
@@ -15409,25 +15409,25 @@ extension Sendable {
     }
 }
 
-// MARK: - SerialDescriptor
-@objcMembers class SerialDescriptor: NSObject, Codable {
-    let serialDescriptor: Int
+// MARK: - Sel
+@objcMembers class Sel: NSObject, Codable {
+    let sel: Int
 
     enum CodingKeys: String, CodingKey {
-        case serialDescriptor = "SerialDescriptor"
+        case sel = "SEL"
     }
 
-    init(serialDescriptor: Int) {
-        self.serialDescriptor = serialDescriptor
+    init(sel: Int) {
+        self.sel = sel
     }
 }
 
-// MARK: SerialDescriptor convenience initializers and mutators
+// MARK: Sel convenience initializers and mutators
 
-extension SerialDescriptor {
+extension Sel {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(SerialDescriptor.self, from: data)
-        self.init(serialDescriptor: me.serialDescriptor)
+        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 +15442,10 @@ extension SerialDescriptor {
     }
 
     func with(
-        serialDescriptor: Int? = nil
-    ) -> SerialDescriptor {
-        return SerialDescriptor(
-            serialDescriptor: serialDescriptor ?? self.serialDescriptor
+        sel: Int? = nil
+    ) -> Sel {
+        return Sel(
+            sel: sel ?? self.sel
         )
     }
 
@@ -15458,25 +15458,25 @@ extension SerialDescriptor {
     }
 }
 
-// MARK: - SerialName
-@objcMembers class SerialName: NSObject, Codable {
-    let serialName: Int
+// MARK: - Select
+@objcMembers class Select: NSObject, Codable {
+    let select: Int
 
     enum CodingKeys: String, CodingKey {
-        case serialName = "SerialName"
+        case select = "select"
     }
 
-    init(serialName: Int) {
-        self.serialName = serialName
+    init(select: Int) {
+        self.select = select
     }
 }
 
-// MARK: SerialName convenience initializers and mutators
+// MARK: Select convenience initializers and mutators
 
-extension SerialName {
+extension Select {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(SerialName.self, from: data)
-        self.init(serialName: me.serialName)
+        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 +15491,10 @@ extension SerialName {
     }
 
     func with(
-        serialName: Int? = nil
-    ) -> SerialName {
-        return SerialName(
-            serialName: serialName ?? self.serialName
+        select: Int? = nil
+    ) -> Select {
+        return Select(
+            select: select ?? self.select
         )
     }
 
@@ -15507,25 +15507,25 @@ extension SerialName {
     }
 }
 
-// MARK: - Serializable
-@objcMembers class Serializable: NSObject, Codable {
-    let serializable: Int
+// MARK: - Sendable
+@objcMembers class Sendable: NSObject, Codable {
+    let sendable: Int
 
     enum CodingKeys: String, CodingKey {
-        case serializable = "Serializable"
+        case sendable = "Sendable"
     }
 
-    init(serializable: Int) {
-        self.serializable = serializable
+    init(sendable: Int) {
+        self.sendable = sendable
     }
 }
 
-// MARK: Serializable convenience initializers and mutators
+// MARK: Sendable convenience initializers and mutators
 
-extension Serializable {
+extension Sendable {
     convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Serializable.self, from: data)
-        self.init(serializable: me.serializable)
+        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,11 +15540,158 @@ extension Serializable {
     }
 
     func with(
-        serializable: Int? = nil
-    ) -> Serializable {
-        return Serializable(
-            serializable: serializable ?? self.serializable
-        )
+        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)
+    }
+}
+
+// MARK: - SerialDescriptor
+@objcMembers class SerialDescriptor: NSObject, Codable {
+    let serialDescriptor: Int
+
+    enum CodingKeys: String, CodingKey {
+        case serialDescriptor = "SerialDescriptor"
+    }
+
+    init(serialDescriptor: Int) {
+        self.serialDescriptor = serialDescriptor
+    }
+}
+
+// MARK: SerialDescriptor convenience initializers and mutators
+
+extension SerialDescriptor {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(SerialDescriptor.self, from: data)
+        self.init(serialDescriptor: me.serialDescriptor)
+    }
+
+    convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    convenience init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        serialDescriptor: Int? = nil
+    ) -> SerialDescriptor {
+        return SerialDescriptor(
+            serialDescriptor: serialDescriptor ?? self.serialDescriptor
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+// MARK: - SerialName
+@objcMembers class SerialName: NSObject, Codable {
+    let serialName: Int
+
+    enum CodingKeys: String, CodingKey {
+        case serialName = "SerialName"
+    }
+
+    init(serialName: Int) {
+        self.serialName = serialName
+    }
+}
+
+// MARK: SerialName convenience initializers and mutators
+
+extension SerialName {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(SerialName.self, from: data)
+        self.init(serialName: me.serialName)
+    }
+
+    convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    convenience init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        serialName: Int? = nil
+    ) -> SerialName {
+        return SerialName(
+            serialName: serialName ?? self.serialName
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+// MARK: - Serializable
+@objcMembers class Serializable: NSObject, Codable {
+    let serializable: Int
+
+    enum CodingKeys: String, CodingKey {
+        case serializable = "Serializable"
+    }
+
+    init(serializable: Int) {
+        self.serializable = serializable
+    }
+}
+
+// MARK: Serializable convenience initializers and mutators
+
+extension Serializable {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(Serializable.self, from: data)
+        self.init(serializable: me.serializable)
+    }
+
+    convenience init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    convenience init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        serializable: Int? = nil
+    ) -> Serializable {
+        return Serializable(
+            serializable: serializable ?? self.serializable
+        )
     }
 
     func jsonData() throws -> Data {
@@ -17418,104 +17565,6 @@ extension Union {
     }
 }
 
-// MARK: - Unsafe
-@objcMembers class Unsafe: NSObject, Codable {
-    let unsafe: Int
-
-    enum CodingKeys: String, CodingKey {
-        case unsafe = "unsafe"
-    }
-
-    init(unsafe: Int) {
-        self.unsafe = unsafe
-    }
-}
-
-// MARK: Unsafe convenience initializers and mutators
-
-extension Unsafe {
-    convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Unsafe.self, from: data)
-        self.init(unsafe: me.unsafe)
-    }
-
-    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(
-        unsafe: Int? = nil
-    ) -> Unsafe {
-        return Unsafe(
-            unsafe: unsafe ?? self.unsafe
-        )
-    }
-
-    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: - Unsigned
-@objcMembers class Unsigned: NSObject, Codable {
-    let unsigned: Int
-
-    enum CodingKeys: String, CodingKey {
-        case unsigned = "unsigned"
-    }
-
-    init(unsigned: Int) {
-        self.unsigned = unsigned
-    }
-}
-
-// MARK: Unsigned convenience initializers and mutators
-
-extension Unsigned {
-    convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Unsigned.self, from: data)
-        self.init(unsigned: me.unsigned)
-    }
-
-    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(
-        unsigned: Int? = nil
-    ) -> Unsigned {
-        return Unsigned(
-            unsigned: unsigned ?? self.unsigned
-        )
-    }
-
-    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: - UseSerializers
 @objcMembers class UseSerializers: NSObject, Codable {
     let useSerializers: Int
@@ -17565,55 +17614,6 @@ extension UseSerializers {
     }
 }
 
-// MARK: - Ushort
-@objcMembers class Ushort: NSObject, Codable {
-    let ushort: Int
-
-    enum CodingKeys: String, CodingKey {
-        case ushort = "ushort"
-    }
-
-    init(ushort: Int) {
-        self.ushort = ushort
-    }
-}
-
-// MARK: Ushort convenience initializers and mutators
-
-extension Ushort {
-    convenience init(data: Data) throws {
-        let me = try newJSONDecoder().decode(Ushort.self, from: data)
-        self.init(ushort: me.ushort)
-    }
-
-    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(
-        ushort: Int? = nil
-    ) -> Ushort {
-        return Ushort(
-            ushort: ushort ?? self.ushort
-        )
-    }
-
-    func jsonData() throws -> Data {
-        return try newJSONEncoder().encode(self)
-    }
-
-    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
-        return String(data: try self.jsonData(), encoding: encoding)
-    }
-}
-
 // MARK: - Obj6
 @objcMembers class Obj6: NSObject, Codable {
     let dummy: Int
@@ -17622,6 +17622,9 @@ extension Ushort {
     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
@@ -17643,6 +17646,9 @@ extension Ushort {
         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"
@@ -17658,13 +17664,16 @@ extension Ushort {
         case yield = "yield"
     }
 
-    init(dummy: Int, obj6Var: Var, obj6Weak: Weak, obj6Where: Where, obj6While: While, obj6WillSet: WillSet, using: Using, utf8JSONReader: Utf8JSONReader, utf8JSONWriter: Utf8JSONWriter, uuid: UUIDClass, virtual: Virtual, void: Void, volatile: Volatile, wcharT: WcharT, with: With, xor: Xor, xorEq: XorEq, yes: Yes, yield: Yield) {
+    init(dummy: Int, 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.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
@@ -17686,7 +17695,7 @@ extension Ushort {
 extension Obj6 {
     convenience init(data: Data) throws {
         let me = try newJSONDecoder().decode(Obj6.self, from: data)
-        self.init(dummy: me.dummy, obj6Var: me.obj6Var, obj6Weak: me.obj6Weak, obj6Where: me.obj6Where, obj6While: me.obj6While, obj6WillSet: me.obj6WillSet, using: me.using, utf8JSONReader: me.utf8JSONReader, utf8JSONWriter: me.utf8JSONWriter, uuid: me.uuid, virtual: me.virtual, void: me.void, volatile: me.volatile, wcharT: me.wcharT, with: me.with, xor: me.xor, xorEq: me.xorEq, yes: me.yes, yield: me.yield)
+        self.init(dummy: me.dummy, 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 {
@@ -17707,6 +17716,9 @@ extension Obj6 {
         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,
@@ -17728,6 +17740,9 @@ extension Obj6 {
             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,
@@ -17998,6 +18013,153 @@ extension WillSet {
     }
 }
 
+// MARK: - Unsafe
+@objcMembers class Unsafe: NSObject, Codable {
+    let unsafe: Int
+
+    enum CodingKeys: String, CodingKey {
+        case unsafe = "unsafe"
+    }
+
+    init(unsafe: Int) {
+        self.unsafe = unsafe
+    }
+}
+
+// MARK: Unsafe convenience initializers and mutators
+
+extension Unsafe {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(Unsafe.self, from: data)
+        self.init(unsafe: me.unsafe)
+    }
+
+    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(
+        unsafe: Int? = nil
+    ) -> Unsafe {
+        return Unsafe(
+            unsafe: unsafe ?? self.unsafe
+        )
+    }
+
+    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: - Unsigned
+@objcMembers class Unsigned: NSObject, Codable {
+    let unsigned: Int
+
+    enum CodingKeys: String, CodingKey {
+        case unsigned = "unsigned"
+    }
+
+    init(unsigned: Int) {
+        self.unsigned = unsigned
+    }
+}
+
+// MARK: Unsigned convenience initializers and mutators
+
+extension Unsigned {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(Unsigned.self, from: data)
+        self.init(unsigned: me.unsigned)
+    }
+
+    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(
+        unsigned: Int? = nil
+    ) -> Unsigned {
+        return Unsigned(
+            unsigned: unsigned ?? self.unsigned
+        )
+    }
+
+    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: - Ushort
+@objcMembers class Ushort: NSObject, Codable {
+    let ushort: Int
+
+    enum CodingKeys: String, CodingKey {
+        case ushort = "ushort"
+    }
+
+    init(ushort: Int) {
+        self.ushort = ushort
+    }
+}
+
+// MARK: Ushort convenience initializers and mutators
+
+extension Ushort {
+    convenience init(data: Data) throws {
+        let me = try newJSONDecoder().decode(Ushort.self, from: data)
+        self.init(ushort: me.ushort)
+    }
+
+    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(
+        ushort: Int? = nil
+    ) -> Ushort {
+        return Ushort(
+            ushort: ushort ?? self.ushort
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
 // MARK: - Using
 @objcMembers class Using: NSObject, Codable {
     let using: Int
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 c98348b..59027b4 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
@@ -7139,6 +7139,7 @@ struct Obj3: Codable, Equatable {
     let jsonWriter: JSONWriter
     let lambda: Lambda
     let list: List
+    let localDate: LocalDate
     let locale: LocaleClass
     let lock: Lock
     let long: Long
@@ -7152,7 +7153,6 @@ struct Obj3: Codable, Equatable {
     let new: New
     let newtonsoft: Newtonsoft
     let no: No
-    let noexcept: Noexcept
     let obj3Guard: Guard
     let obj3If: If
     let obj3Import: Import
@@ -7206,6 +7206,7 @@ struct Obj3: Codable, Equatable {
         case jsonWriter = "json_writer"
         case lambda = "lambda"
         case list = "list"
+        case localDate = "LocalDate"
         case locale = "Locale"
         case lock = "lock"
         case long = "long"
@@ -7219,7 +7220,6 @@ struct Obj3: Codable, Equatable {
         case new = "new"
         case newtonsoft = "newtonsoft"
         case no = "NO"
-        case noexcept = "noexcept"
         case obj3Guard = "guard"
         case obj3If = "if"
         case obj3Import = "import"
@@ -7293,6 +7293,7 @@ extension Obj3 {
         jsonWriter: JSONWriter? = nil,
         lambda: Lambda? = nil,
         list: List? = nil,
+        localDate: LocalDate? = nil,
         locale: LocaleClass? = nil,
         lock: Lock? = nil,
         long: Long? = nil,
@@ -7306,7 +7307,6 @@ extension Obj3 {
         new: New? = nil,
         newtonsoft: Newtonsoft? = nil,
         no: No? = nil,
-        noexcept: Noexcept? = nil,
         obj3Guard: Guard? = nil,
         obj3If: If? = nil,
         obj3Import: Import? = nil,
@@ -7360,6 +7360,7 @@ extension Obj3 {
             jsonWriter: jsonWriter ?? self.jsonWriter,
             lambda: lambda ?? self.lambda,
             list: list ?? self.list,
+            localDate: localDate ?? self.localDate,
             locale: locale ?? self.locale,
             lock: lock ?? self.lock,
             long: long ?? self.long,
@@ -7373,7 +7374,6 @@ extension Obj3 {
             new: new ?? self.new,
             newtonsoft: newtonsoft ?? self.newtonsoft,
             no: no ?? self.no,
-            noexcept: noexcept ?? self.noexcept,
             obj3Guard: obj3Guard ?? self.obj3Guard,
             obj3If: obj3If ?? self.obj3If,
             obj3Import: obj3Import ?? self.obj3Import,
@@ -9108,6 +9108,56 @@ extension List {
 // 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: - LocalDate
+struct LocalDate: Codable, Equatable {
+    let localDate: Int
+
+    enum CodingKeys: String, CodingKey {
+        case localDate = "LocalDate"
+    }
+}
+
+// MARK: LocalDate convenience initializers and mutators
+
+extension LocalDate {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(LocalDate.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(
+        localDate: Int? = nil
+    ) -> LocalDate {
+        return LocalDate(
+            localDate: localDate ?? self.localDate
+        )
+    }
+
+    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: - LocaleClass
 struct LocaleClass: Codable, Equatable {
     let locale: Int
@@ -9758,56 +9808,6 @@ extension No {
 // 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
-        )
-    }
-
-    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: - Guard
 struct Guard: Codable, Equatable {
     let guardGuard: Int
@@ -10612,6 +10612,7 @@ extension Nil {
 struct Obj4: Codable, Equatable {
     let dummy: Int
     let noSuchMethod: NoSuchMethod
+    let noexcept: Noexcept
     let nonatomic: Nonatomic
     let none: None
     let nonlocal: Nonlocal
@@ -10644,6 +10645,8 @@ struct Obj4: Codable, Equatable {
     let object: Object
     let objectMapper: ObjectMapper
     let of: Of
+    let offsetDateTime: OffsetDateTime
+    let offsetTime: OffsetTime
     let oneway: Oneway
     let or: Or
     let orEq: OrEq
@@ -10672,13 +10675,11 @@ struct Obj4: Codable, Equatable {
     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 noSuchMethod = "noSuchMethod"
+        case noexcept = "noexcept"
         case nonatomic = "nonatomic"
         case none = "None"
         case nonlocal = "nonlocal"
@@ -10711,6 +10712,8 @@ struct Obj4: Codable, Equatable {
         case object = "object"
         case objectMapper = "ObjectMapper"
         case of = "of"
+        case offsetDateTime = "OffsetDateTime"
+        case offsetTime = "OffsetTime"
         case oneway = "oneway"
         case or = "or"
         case orEq = "or_eq"
@@ -10739,9 +10742,6 @@ struct Obj4: Codable, Equatable {
         case runtimeType = "runtimeType"
         case s = "s"
         case sbyte = "sbyte"
-        case sealed = "sealed"
-        case sel = "SEL"
-        case select = "select"
     }
 }
 
@@ -10766,6 +10766,7 @@ extension Obj4 {
     func with(
         dummy: Int? = nil,
         noSuchMethod: NoSuchMethod? = nil,
+        noexcept: Noexcept? = nil,
         nonatomic: Nonatomic? = nil,
         none: None? = nil,
         nonlocal: Nonlocal? = nil,
@@ -10798,6 +10799,8 @@ extension Obj4 {
         object: Object? = nil,
         objectMapper: ObjectMapper? = nil,
         of: Of? = nil,
+        offsetDateTime: OffsetDateTime? = nil,
+        offsetTime: OffsetTime? = nil,
         oneway: Oneway? = nil,
         or: Or? = nil,
         orEq: OrEq? = nil,
@@ -10825,14 +10828,12 @@ extension Obj4 {
         retain: Retain? = nil,
         runtimeType: RuntimeType? = nil,
         s: S? = nil,
-        sbyte: Sbyte? = nil,
-        sealed: Sealed? = nil,
-        sel: Sel? = nil,
-        select: Select? = nil
+        sbyte: Sbyte? = nil
     ) -> Obj4 {
         return Obj4(
             dummy: dummy ?? self.dummy,
             noSuchMethod: noSuchMethod ?? self.noSuchMethod,
+            noexcept: noexcept ?? self.noexcept,
             nonatomic: nonatomic ?? self.nonatomic,
             none: none ?? self.none,
             nonlocal: nonlocal ?? self.nonlocal,
@@ -10865,6 +10866,8 @@ extension Obj4 {
             object: object ?? self.object,
             objectMapper: objectMapper ?? self.objectMapper,
             of: of ?? self.of,
+            offsetDateTime: offsetDateTime ?? self.offsetDateTime,
+            offsetTime: offsetTime ?? self.offsetTime,
             oneway: oneway ?? self.oneway,
             or: or ?? self.or,
             orEq: orEq ?? self.orEq,
@@ -10892,10 +10895,7 @@ extension Obj4 {
             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
+            sbyte: sbyte ?? self.sbyte
         )
     }
 
@@ -10964,6 +10964,56 @@ 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: - 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
+        )
+    }
+
+    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: - Nonatomic
 struct Nonatomic: Codable, Equatable {
     let nonatomic: Int
@@ -12564,6 +12614,106 @@ 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: - OffsetDateTime
+struct OffsetDateTime: Codable, Equatable {
+    let offsetDateTime: Int
+
+    enum CodingKeys: String, CodingKey {
+        case offsetDateTime = "OffsetDateTime"
+    }
+}
+
+// MARK: OffsetDateTime convenience initializers and mutators
+
+extension OffsetDateTime {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(OffsetDateTime.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(
+        offsetDateTime: Int? = nil
+    ) -> OffsetDateTime {
+        return OffsetDateTime(
+            offsetDateTime: offsetDateTime ?? self.offsetDateTime
+        )
+    }
+
+    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: - OffsetTime
+struct OffsetTime: Codable, Equatable {
+    let offsetTime: Int
+
+    enum CodingKeys: String, CodingKey {
+        case offsetTime = "OffsetTime"
+    }
+}
+
+// MARK: OffsetTime convenience initializers and mutators
+
+extension OffsetTime {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(OffsetTime.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(
+        offsetTime: Int? = nil
+    ) -> OffsetTime {
+        return OffsetTime(
+            offsetTime: offsetTime ?? self.offsetTime
+        )
+    }
+
+    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: - Oneway
 struct Oneway: Codable, Equatable {
     let oneway: Int
@@ -13964,156 +14114,6 @@ 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
-
-    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)
-    }
-}
-
-//
-// 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: - Sel
-struct Sel: Codable, Equatable {
-    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)
-    }
-}
-
-//
-// 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: - Obj5
 struct Obj5: Codable, Equatable {
     let dummy: Int
@@ -14135,6 +14135,9 @@ struct Obj5: Codable, Equatable {
     let primitiveKind: PrimitiveKind
     let purpleSelf: Obj5Self
     let purpleTrue: TrueClass
+    let sealed: Sealed
+    let sel: Sel
+    let select: Select
     let sendable: Sendable
     let serialDescriptor: SerialDescriptor
     let serialName: SerialName
@@ -14177,10 +14180,7 @@ struct Obj5: Codable, Equatable {
     let unchecked: Unchecked
     let undefined: Undefined
     let union: Union
-    let unsafe: Unsafe
-    let unsigned: Unsigned
     let useSerializers: UseSerializers
-    let ushort: Ushort
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
@@ -14202,6 +14202,9 @@ struct Obj5: Codable, Equatable {
         case primitiveKind = "PrimitiveKind"
         case purpleSelf = "self"
         case purpleTrue = "true"
+        case sealed = "sealed"
+        case sel = "SEL"
+        case select = "select"
         case sendable = "Sendable"
         case serialDescriptor = "SerialDescriptor"
         case serialName = "SerialName"
@@ -14244,10 +14247,7 @@ struct Obj5: Codable, Equatable {
         case unchecked = "unchecked"
         case undefined = "undefined"
         case union = "union"
-        case unsafe = "unsafe"
-        case unsigned = "unsigned"
         case useSerializers = "UseSerializers"
-        case ushort = "ushort"
     }
 }
 
@@ -14289,6 +14289,9 @@ extension Obj5 {
         primitiveKind: PrimitiveKind? = nil,
         purpleSelf: Obj5Self? = nil,
         purpleTrue: TrueClass? = nil,
+        sealed: Sealed? = nil,
+        sel: Sel? = nil,
+        select: Select? = nil,
         sendable: Sendable? = nil,
         serialDescriptor: SerialDescriptor? = nil,
         serialName: SerialName? = nil,
@@ -14331,10 +14334,7 @@ extension Obj5 {
         unchecked: Unchecked? = nil,
         undefined: Undefined? = nil,
         union: Union? = nil,
-        unsafe: Unsafe? = nil,
-        unsigned: Unsigned? = nil,
-        useSerializers: UseSerializers? = nil,
-        ushort: Ushort? = nil
+        useSerializers: UseSerializers? = nil
     ) -> Obj5 {
         return Obj5(
             dummy: dummy ?? self.dummy,
@@ -14356,6 +14356,9 @@ extension Obj5 {
             primitiveKind: primitiveKind ?? self.primitiveKind,
             purpleSelf: purpleSelf ?? self.purpleSelf,
             purpleTrue: purpleTrue ?? self.purpleTrue,
+            sealed: sealed ?? self.sealed,
+            sel: sel ?? self.sel,
+            select: select ?? self.select,
             sendable: sendable ?? self.sendable,
             serialDescriptor: serialDescriptor ?? self.serialDescriptor,
             serialName: serialName ?? self.serialName,
@@ -14398,10 +14401,7 @@ extension Obj5 {
             unchecked: unchecked ?? self.unchecked,
             undefined: undefined ?? self.undefined,
             union: union ?? self.union,
-            unsafe: unsafe ?? self.unsafe,
-            unsigned: unsigned ?? self.unsigned,
-            useSerializers: useSerializers ?? self.useSerializers,
-            ushort: ushort ?? self.ushort
+            useSerializers: useSerializers ?? self.useSerializers
         )
     }
 
@@ -15320,20 +15320,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: - Sealed
+struct Sealed: Codable, Equatable {
+    let sealed: Int
 
     enum CodingKeys: String, CodingKey {
-        case sendable = "Sendable"
+        case sealed = "sealed"
     }
 }
 
-// MARK: Sendable convenience initializers and mutators
+// MARK: Sealed convenience initializers and mutators
 
-extension Sendable {
+extension Sealed {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Sendable.self, from: data)
+        self = try newJSONDecoder().decode(Sealed.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15348,10 +15348,10 @@ extension Sendable {
     }
 
     func with(
-        sendable: Int? = nil
-    ) -> Sendable {
-        return Sendable(
-            sendable: sendable ?? self.sendable
+        sealed: Int? = nil
+    ) -> Sealed {
+        return Sealed(
+            sealed: sealed ?? self.sealed
         )
     }
 
@@ -15370,20 +15370,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: - SerialDescriptor
-struct SerialDescriptor: Codable, Equatable {
-    let serialDescriptor: Int
+// MARK: - Sel
+struct Sel: Codable, Equatable {
+    let sel: Int
 
     enum CodingKeys: String, CodingKey {
-        case serialDescriptor = "SerialDescriptor"
+        case sel = "SEL"
     }
 }
 
-// MARK: SerialDescriptor convenience initializers and mutators
+// MARK: Sel convenience initializers and mutators
 
-extension SerialDescriptor {
+extension Sel {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(SerialDescriptor.self, from: data)
+        self = try newJSONDecoder().decode(Sel.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15398,10 +15398,10 @@ extension SerialDescriptor {
     }
 
     func with(
-        serialDescriptor: Int? = nil
-    ) -> SerialDescriptor {
-        return SerialDescriptor(
-            serialDescriptor: serialDescriptor ?? self.serialDescriptor
+        sel: Int? = nil
+    ) -> Sel {
+        return Sel(
+            sel: sel ?? self.sel
         )
     }
 
@@ -15420,20 +15420,20 @@ extension SerialDescriptor {
 // for types that require the use of JSONAny, nor will the implementation of Hashable be
 // synthesized for types that have collections (such as arrays or dictionaries).
 
-// MARK: - SerialName
-struct SerialName: Codable, Equatable {
-    let serialName: Int
+// MARK: - Select
+struct Select: Codable, Equatable {
+    let select: Int
 
     enum CodingKeys: String, CodingKey {
-        case serialName = "SerialName"
+        case select = "select"
     }
 }
 
-// MARK: SerialName convenience initializers and mutators
+// MARK: Select convenience initializers and mutators
 
-extension SerialName {
+extension Select {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(SerialName.self, from: data)
+        self = try newJSONDecoder().decode(Select.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15448,10 +15448,10 @@ extension SerialName {
     }
 
     func with(
-        serialName: Int? = nil
-    ) -> SerialName {
-        return SerialName(
-            serialName: serialName ?? self.serialName
+        select: Int? = nil
+    ) -> Select {
+        return Select(
+            select: select ?? self.select
         )
     }
 
@@ -15470,20 +15470,20 @@ extension SerialName {
 // for types that require the use of JSONAny, nor will the implementation of Hashable be
 // synthesized for types that have collections (such as arrays or dictionaries).
 
-// MARK: - Serializable
-struct Serializable: Codable, Equatable {
-    let serializable: Int
+// MARK: - Sendable
+struct Sendable: Codable, Equatable {
+    let sendable: Int
 
     enum CodingKeys: String, CodingKey {
-        case serializable = "Serializable"
+        case sendable = "Sendable"
     }
 }
 
-// MARK: Serializable convenience initializers and mutators
+// MARK: Sendable convenience initializers and mutators
 
-extension Serializable {
+extension Sendable {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Serializable.self, from: data)
+        self = try newJSONDecoder().decode(Sendable.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15498,10 +15498,10 @@ extension Serializable {
     }
 
     func with(
-        serializable: Int? = nil
-    ) -> Serializable {
-        return Serializable(
-            serializable: serializable ?? self.serializable
+        sendable: Int? = nil
+    ) -> Sendable {
+        return Sendable(
+            sendable: sendable ?? self.sendable
         )
     }
 
@@ -15520,20 +15520,20 @@ extension Serializable {
 // 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: - SerialDescriptor
+struct SerialDescriptor: Codable, Equatable {
+    let serialDescriptor: Int
 
     enum CodingKeys: String, CodingKey {
-        case serialize = "serialize"
+        case serialDescriptor = "SerialDescriptor"
     }
 }
 
-// MARK: Serialize convenience initializers and mutators
+// MARK: SerialDescriptor convenience initializers and mutators
 
-extension Serialize {
+extension SerialDescriptor {
     init(data: Data) throws {
-        self = try newJSONDecoder().decode(Serialize.self, from: data)
+        self = try newJSONDecoder().decode(SerialDescriptor.self, from: data)
     }
 
     init(_ json: String, using encoding: String.Encoding = .utf8) throws {
@@ -15548,7 +15548,157 @@ extension Serialize {
     }
 
     func with(
-        serialize: Int? = nil
+        serialDescriptor: Int? = nil
+    ) -> SerialDescriptor {
+        return SerialDescriptor(
+            serialDescriptor: serialDescriptor ?? self.serialDescriptor
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+//
+// Hashable or Equatable:
+// The compiler will not be able to synthesize the implementation of Hashable or Equatable
+// for types that require the use of JSONAny, nor will the implementation of Hashable be
+// synthesized for types that have collections (such as arrays or dictionaries).
+
+// MARK: - SerialName
+struct SerialName: Codable, Equatable {
+    let serialName: Int
+
+    enum CodingKeys: String, CodingKey {
+        case serialName = "SerialName"
+    }
+}
+
+// MARK: SerialName convenience initializers and mutators
+
+extension SerialName {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(SerialName.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        serialName: Int? = nil
+    ) -> SerialName {
+        return SerialName(
+            serialName: serialName ?? self.serialName
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+//
+// Hashable or Equatable:
+// The compiler will not be able to synthesize the implementation of Hashable or Equatable
+// for types that require the use of JSONAny, nor will the implementation of Hashable be
+// synthesized for types that have collections (such as arrays or dictionaries).
+
+// MARK: - Serializable
+struct Serializable: Codable, Equatable {
+    let serializable: Int
+
+    enum CodingKeys: String, CodingKey {
+        case serializable = "Serializable"
+    }
+}
+
+// MARK: Serializable convenience initializers and mutators
+
+extension Serializable {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Serializable.self, from: data)
+    }
+
+    init(_ json: String, using encoding: String.Encoding = .utf8) throws {
+        guard let data = json.data(using: encoding) else {
+            throw NSError(domain: "JSONDecoding", code: 0, userInfo: nil)
+        }
+        try self.init(data: data)
+    }
+
+    init(fromURL url: URL) throws {
+        try self.init(data: try Data(contentsOf: url))
+    }
+
+    func with(
+        serializable: Int? = nil
+    ) -> Serializable {
+        return Serializable(
+            serializable: serializable ?? self.serializable
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+//
+// Hashable or Equatable:
+// The compiler will not be able to synthesize the implementation of Hashable or Equatable
+// for types that require the use of JSONAny, nor will the implementation of Hashable be
+// synthesized for types that have collections (such as arrays or dictionaries).
+
+// MARK: - Serialize
+struct Serialize: Codable, Equatable {
+    let serialize: Int
+
+    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
@@ -17420,106 +17570,6 @@ 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
-
-    enum CodingKeys: String, CodingKey {
-        case unsafe = "unsafe"
-    }
-}
-
-// MARK: Unsafe convenience initializers and mutators
-
-extension Unsafe {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Unsafe.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(
-        unsafe: Int? = nil
-    ) -> Unsafe {
-        return Unsafe(
-            unsafe: unsafe ?? self.unsafe
-        )
-    }
-
-    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: - Unsigned
-struct Unsigned: Codable, Equatable {
-    let unsigned: Int
-
-    enum CodingKeys: String, CodingKey {
-        case unsigned = "unsigned"
-    }
-}
-
-// MARK: Unsigned convenience initializers and mutators
-
-extension Unsigned {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Unsigned.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(
-        unsigned: Int? = nil
-    ) -> Unsigned {
-        return Unsigned(
-            unsigned: unsigned ?? self.unsigned
-        )
-    }
-
-    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: - UseSerializers
 struct UseSerializers: Codable, Equatable {
     let useSerializers: Int
@@ -17570,56 +17620,6 @@ extension UseSerializers {
 // 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
-
-    enum CodingKeys: String, CodingKey {
-        case ushort = "ushort"
-    }
-}
-
-// MARK: Ushort convenience initializers and mutators
-
-extension Ushort {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Ushort.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(
-        ushort: Int? = nil
-    ) -> Ushort {
-        return Ushort(
-            ushort: ushort ?? self.ushort
-        )
-    }
-
-    func jsonData() throws -> Data {
-        return try newJSONEncoder().encode(self)
-    }
-
-    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
-        return String(data: try self.jsonData(), encoding: encoding)
-    }
-}
-
-//
-// Hashable or Equatable:
-// The compiler will not be able to synthesize the implementation of Hashable or Equatable
-// for types that require the use of JSONAny, nor will the implementation of Hashable be
-// synthesized for types that have collections (such as arrays or dictionaries).
-
 // MARK: - Obj6
 struct Obj6: Codable, Equatable {
     let dummy: Int
@@ -17628,6 +17628,9 @@ struct Obj6: Codable, Equatable {
     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
@@ -17649,6 +17652,9 @@ struct Obj6: Codable, Equatable {
         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"
@@ -17690,6 +17696,9 @@ extension Obj6 {
         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,
@@ -17711,6 +17720,9 @@ extension Obj6 {
             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,
@@ -17992,6 +18004,156 @@ extension WillSet {
 // 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
+
+    enum CodingKeys: String, CodingKey {
+        case unsafe = "unsafe"
+    }
+}
+
+// MARK: Unsafe convenience initializers and mutators
+
+extension Unsafe {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Unsafe.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(
+        unsafe: Int? = nil
+    ) -> Unsafe {
+        return Unsafe(
+            unsafe: unsafe ?? self.unsafe
+        )
+    }
+
+    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: - Unsigned
+struct Unsigned: Codable, Equatable {
+    let unsigned: Int
+
+    enum CodingKeys: String, CodingKey {
+        case unsigned = "unsigned"
+    }
+}
+
+// MARK: Unsigned convenience initializers and mutators
+
+extension Unsigned {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Unsigned.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(
+        unsigned: Int? = nil
+    ) -> Unsigned {
+        return Unsigned(
+            unsigned: unsigned ?? self.unsigned
+        )
+    }
+
+    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: - Ushort
+struct Ushort: Codable, Equatable {
+    let ushort: Int
+
+    enum CodingKeys: String, CodingKey {
+        case ushort = "ushort"
+    }
+}
+
+// MARK: Ushort convenience initializers and mutators
+
+extension Ushort {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Ushort.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(
+        ushort: Int? = nil
+    ) -> Ushort {
+        return Ushort(
+            ushort: ushort ?? self.ushort
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
+//
+// Hashable or Equatable:
+// The compiler will not be able to synthesize the implementation of Hashable or Equatable
+// for types that require the use of JSONAny, nor will the implementation of Hashable be
+// synthesized for types that have collections (such as arrays or dictionaries).
+
 // MARK: - Using
 struct Using: Codable, Equatable {
     let using: Int
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 6194419..dc007d2 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
@@ -6347,6 +6347,7 @@ struct Obj3: Codable, Sendable {
     let jsonWriter: JSONWriter
     let lambda: Lambda
     let list: List
+    let localDate: LocalDate
     let locale: LocaleClass
     let lock: Lock
     let long: Long
@@ -6360,7 +6361,6 @@ struct Obj3: Codable, Sendable {
     let new: New
     let newtonsoft: Newtonsoft
     let no: No
-    let noexcept: Noexcept
     let obj3Guard: Guard
     let obj3If: If
     let obj3Import: Import
@@ -6414,6 +6414,7 @@ struct Obj3: Codable, Sendable {
         case jsonWriter = "json_writer"
         case lambda = "lambda"
         case list = "list"
+        case localDate = "LocalDate"
         case locale = "Locale"
         case lock = "lock"
         case long = "long"
@@ -6427,7 +6428,6 @@ struct Obj3: Codable, Sendable {
         case new = "new"
         case newtonsoft = "newtonsoft"
         case no = "NO"
-        case noexcept = "noexcept"
         case obj3Guard = "guard"
         case obj3If = "if"
         case obj3Import = "import"
@@ -6501,6 +6501,7 @@ extension Obj3 {
         jsonWriter: JSONWriter? = nil,
         lambda: Lambda? = nil,
         list: List? = nil,
+        localDate: LocalDate? = nil,
         locale: LocaleClass? = nil,
         lock: Lock? = nil,
         long: Long? = nil,
@@ -6514,7 +6515,6 @@ extension Obj3 {
         new: New? = nil,
         newtonsoft: Newtonsoft? = nil,
         no: No? = nil,
-        noexcept: Noexcept? = nil,
         obj3Guard: Guard? = nil,
         obj3If: If? = nil,
         obj3Import: Import? = nil,
@@ -6568,6 +6568,7 @@ extension Obj3 {
             jsonWriter: jsonWriter ?? self.jsonWriter,
             lambda: lambda ?? self.lambda,
             list: list ?? self.list,
+            localDate: localDate ?? self.localDate,
             locale: locale ?? self.locale,
             lock: lock ?? self.lock,
             long: long ?? self.long,
@@ -6581,7 +6582,6 @@ extension Obj3 {
             new: new ?? self.new,
             newtonsoft: newtonsoft ?? self.newtonsoft,
             no: no ?? self.no,
-            noexcept: noexcept ?? self.noexcept,
             obj3Guard: obj3Guard ?? self.obj3Guard,
             obj3If: obj3If ?? self.obj3If,
             obj3Import: obj3Import ?? self.obj3Import,
@@ -8106,6 +8106,50 @@ extension List {
     }
 }
 
+// MARK: - LocalDate
+struct LocalDate: Codable, Sendable {
+    let localDate: Int
+
+    enum CodingKeys: String, CodingKey {
+        case localDate = "LocalDate"
+    }
+}
+
+// MARK: LocalDate convenience initializers and mutators
+
+extension LocalDate {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(LocalDate.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(
+        localDate: Int? = nil
+    ) -> LocalDate {
+        return LocalDate(
+            localDate: localDate ?? self.localDate
+        )
+    }
+
+    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: - LocaleClass
 struct LocaleClass: Codable, Sendable {
     let locale: Int
@@ -8678,50 +8722,6 @@ extension No {
     }
 }
 
-// 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
@@ -9430,6 +9430,7 @@ extension Nil {
 struct Obj4: Codable, Sendable {
     let dummy: Int
     let noSuchMethod: NoSuchMethod
+    let noexcept: Noexcept
     let nonatomic: Nonatomic
     let none: None
     let nonlocal: Nonlocal
@@ -9462,6 +9463,8 @@ struct Obj4: Codable, Sendable {
     let object: Object
     let objectMapper: ObjectMapper
     let of: Of
+    let offsetDateTime: OffsetDateTime
+    let offsetTime: OffsetTime
     let oneway: Oneway
     let or: Or
     let orEq: OrEq
@@ -9490,13 +9493,11 @@ struct Obj4: Codable, Sendable {
     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 noSuchMethod = "noSuchMethod"
+        case noexcept = "noexcept"
         case nonatomic = "nonatomic"
         case none = "None"
         case nonlocal = "nonlocal"
@@ -9529,6 +9530,8 @@ struct Obj4: Codable, Sendable {
         case object = "object"
         case objectMapper = "ObjectMapper"
         case of = "of"
+        case offsetDateTime = "OffsetDateTime"
+        case offsetTime = "OffsetTime"
         case oneway = "oneway"
         case or = "or"
         case orEq = "or_eq"
@@ -9557,9 +9560,6 @@ struct Obj4: Codable, Sendable {
         case runtimeType = "runtimeType"
         case s = "s"
         case sbyte = "sbyte"
-        case sealed = "sealed"
-        case sel = "SEL"
-        case select = "select"
     }
 }
 
@@ -9584,6 +9584,7 @@ extension Obj4 {
     func with(
         dummy: Int? = nil,
         noSuchMethod: NoSuchMethod? = nil,
+        noexcept: Noexcept? = nil,
         nonatomic: Nonatomic? = nil,
         none: None? = nil,
         nonlocal: Nonlocal? = nil,
@@ -9616,6 +9617,8 @@ extension Obj4 {
         object: Object? = nil,
         objectMapper: ObjectMapper? = nil,
         of: Of? = nil,
+        offsetDateTime: OffsetDateTime? = nil,
+        offsetTime: OffsetTime? = nil,
         oneway: Oneway? = nil,
         or: Or? = nil,
         orEq: OrEq? = nil,
@@ -9643,14 +9646,12 @@ extension Obj4 {
         retain: Retain? = nil,
         runtimeType: RuntimeType? = nil,
         s: S? = nil,
-        sbyte: Sbyte? = nil,
-        sealed: Sealed? = nil,
-        sel: Sel? = nil,
-        select: Select? = nil
+        sbyte: Sbyte? = nil
     ) -> Obj4 {
         return Obj4(
             dummy: dummy ?? self.dummy,
             noSuchMethod: noSuchMethod ?? self.noSuchMethod,
+            noexcept: noexcept ?? self.noexcept,
             nonatomic: nonatomic ?? self.nonatomic,
             none: none ?? self.none,
             nonlocal: nonlocal ?? self.nonlocal,
@@ -9683,6 +9684,8 @@ extension Obj4 {
             object: object ?? self.object,
             objectMapper: objectMapper ?? self.objectMapper,
             of: of ?? self.of,
+            offsetDateTime: offsetDateTime ?? self.offsetDateTime,
+            offsetTime: offsetTime ?? self.offsetTime,
             oneway: oneway ?? self.oneway,
             or: or ?? self.or,
             orEq: orEq ?? self.orEq,
@@ -9710,10 +9713,7 @@ extension Obj4 {
             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
+            sbyte: sbyte ?? self.sbyte
         )
     }
 
@@ -9770,6 +9770,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
@@ -11178,6 +11222,94 @@ extension Of {
     }
 }
 
+// MARK: - OffsetDateTime
+struct OffsetDateTime: Codable, Sendable {
+    let offsetDateTime: Int
+
+    enum CodingKeys: String, CodingKey {
+        case offsetDateTime = "OffsetDateTime"
+    }
+}
+
+// MARK: OffsetDateTime convenience initializers and mutators
+
+extension OffsetDateTime {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(OffsetDateTime.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(
+        offsetDateTime: Int? = nil
+    ) -> OffsetDateTime {
+        return OffsetDateTime(
+            offsetDateTime: offsetDateTime ?? self.offsetDateTime
+        )
+    }
+
+    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: - OffsetTime
+struct OffsetTime: Codable, Sendable {
+    let offsetTime: Int
+
+    enum CodingKeys: String, CodingKey {
+        case offsetTime = "OffsetTime"
+    }
+}
+
+// MARK: OffsetTime convenience initializers and mutators
+
+extension OffsetTime {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(OffsetTime.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(
+        offsetTime: Int? = nil
+    ) -> OffsetTime {
+        return OffsetTime(
+            offsetTime: offsetTime ?? self.offsetTime
+        )
+    }
+
+    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: - Oneway
 struct Oneway: Codable, Sendable {
     let oneway: Int
@@ -12410,138 +12542,6 @@ extension Sbyte {
     }
 }
 
-// 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
@@ -12563,6 +12563,9 @@ struct Obj5: Codable, Sendable {
     let primitiveKind: PrimitiveKind
     let purpleSelf: Obj5Self
     let purpleTrue: TrueClass
+    let sealed: Sealed
+    let sel: Sel
+    let select: Select
     let sendable: SendableClass
     let serialDescriptor: SerialDescriptor
     let serialName: SerialName
@@ -12605,10 +12608,7 @@ struct Obj5: Codable, Sendable {
     let unchecked: Unchecked
     let undefined: Undefined
     let union: Union
-    let unsafe: Unsafe
-    let unsigned: Unsigned
     let useSerializers: UseSerializers
-    let ushort: Ushort
 
     enum CodingKeys: String, CodingKey {
         case dummy = "dummy"
@@ -12630,6 +12630,9 @@ struct Obj5: Codable, Sendable {
         case primitiveKind = "PrimitiveKind"
         case purpleSelf = "self"
         case purpleTrue = "true"
+        case sealed = "sealed"
+        case sel = "SEL"
+        case select = "select"
         case sendable = "Sendable"
         case serialDescriptor = "SerialDescriptor"
         case serialName = "SerialName"
@@ -12672,10 +12675,7 @@ struct Obj5: Codable, Sendable {
         case unchecked = "unchecked"
         case undefined = "undefined"
         case union = "union"
-        case unsafe = "unsafe"
-        case unsigned = "unsigned"
         case useSerializers = "UseSerializers"
-        case ushort = "ushort"
     }
 }
 
@@ -12717,6 +12717,9 @@ extension Obj5 {
         primitiveKind: PrimitiveKind? = nil,
         purpleSelf: Obj5Self? = nil,
         purpleTrue: TrueClass? = nil,
+        sealed: Sealed? = nil,
+        sel: Sel? = nil,
+        select: Select? = nil,
         sendable: SendableClass? = nil,
         serialDescriptor: SerialDescriptor? = nil,
         serialName: SerialName? = nil,
@@ -12759,10 +12762,7 @@ extension Obj5 {
         unchecked: Unchecked? = nil,
         undefined: Undefined? = nil,
         union: Union? = nil,
-        unsafe: Unsafe? = nil,
-        unsigned: Unsigned? = nil,
-        useSerializers: UseSerializers? = nil,
-        ushort: Ushort? = nil
+        useSerializers: UseSerializers? = nil
     ) -> Obj5 {
         return Obj5(
             dummy: dummy ?? self.dummy,
@@ -12784,6 +12784,9 @@ extension Obj5 {
             primitiveKind: primitiveKind ?? self.primitiveKind,
             purpleSelf: purpleSelf ?? self.purpleSelf,
             purpleTrue: purpleTrue ?? self.purpleTrue,
+            sealed: sealed ?? self.sealed,
+            sel: sel ?? self.sel,
+            select: select ?? self.select,
             sendable: sendable ?? self.sendable,
             serialDescriptor: serialDescriptor ?? self.serialDescriptor,
             serialName: serialName ?? self.serialName,
@@ -12826,10 +12829,7 @@ extension Obj5 {
             unchecked: unchecked ?? self.unchecked,
             undefined: undefined ?? self.undefined,
             union: union ?? self.union,
-            unsafe: unsafe ?? self.unsafe,
-            unsigned: unsigned ?? self.unsigned,
-            useSerializers: useSerializers ?? self.useSerializers,
-            ushort: ushort ?? self.ushort
+            useSerializers: useSerializers ?? self.useSerializers
         )
     }
 
@@ -13634,6 +13634,138 @@ extension TrueClass {
     }
 }
 
+// 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: - SendableClass
 struct SendableClass: Codable, Sendable {
     let sendable: Int
@@ -15482,94 +15614,6 @@ extension Union {
     }
 }
 
-// MARK: - Unsafe
-struct Unsafe: Codable, Sendable {
-    let unsafe: Int
-
-    enum CodingKeys: String, CodingKey {
-        case unsafe = "unsafe"
-    }
-}
-
-// MARK: Unsafe convenience initializers and mutators
-
-extension Unsafe {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Unsafe.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(
-        unsafe: Int? = nil
-    ) -> Unsafe {
-        return Unsafe(
-            unsafe: unsafe ?? self.unsafe
-        )
-    }
-
-    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: - Unsigned
-struct Unsigned: Codable, Sendable {
-    let unsigned: Int
-
-    enum CodingKeys: String, CodingKey {
-        case unsigned = "unsigned"
-    }
-}
-
-// MARK: Unsigned convenience initializers and mutators
-
-extension Unsigned {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Unsigned.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(
-        unsigned: Int? = nil
-    ) -> Unsigned {
-        return Unsigned(
-            unsigned: unsigned ?? self.unsigned
-        )
-    }
-
-    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: - UseSerializers
 struct UseSerializers: Codable, Sendable {
     let useSerializers: Int
@@ -15614,50 +15658,6 @@ extension UseSerializers {
     }
 }
 
-// MARK: - Ushort
-struct Ushort: Codable, Sendable {
-    let ushort: Int
-
-    enum CodingKeys: String, CodingKey {
-        case ushort = "ushort"
-    }
-}
-
-// MARK: Ushort convenience initializers and mutators
-
-extension Ushort {
-    init(data: Data) throws {
-        self = try newJSONDecoder().decode(Ushort.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(
-        ushort: Int? = nil
-    ) -> Ushort {
-        return Ushort(
-            ushort: ushort ?? self.ushort
-        )
-    }
-
-    func jsonData() throws -> Data {
-        return try newJSONEncoder().encode(self)
-    }
-
-    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
-        return String(data: try self.jsonData(), encoding: encoding)
-    }
-}
-
 // MARK: - Obj6
 struct Obj6: Codable, Sendable {
     let dummy: Int
@@ -15666,6 +15666,9 @@ struct Obj6: Codable, Sendable {
     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
@@ -15687,6 +15690,9 @@ struct Obj6: Codable, Sendable {
         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"
@@ -15728,6 +15734,9 @@ extension Obj6 {
         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,
@@ -15749,6 +15758,9 @@ extension Obj6 {
             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,
@@ -15994,6 +16006,138 @@ extension WillSet {
     }
 }
 
+// MARK: - Unsafe
+struct Unsafe: Codable, Sendable {
+    let unsafe: Int
+
+    enum CodingKeys: String, CodingKey {
+        case unsafe = "unsafe"
+    }
+}
+
+// MARK: Unsafe convenience initializers and mutators
+
+extension Unsafe {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Unsafe.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(
+        unsafe: Int? = nil
+    ) -> Unsafe {
+        return Unsafe(
+            unsafe: unsafe ?? self.unsafe
+        )
+    }
+
+    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: - Unsigned
+struct Unsigned: Codable, Sendable {
+    let unsigned: Int
+
+    enum CodingKeys: String, CodingKey {
+        case unsigned = "unsigned"
+    }
+}
+
+// MARK: Unsigned convenience initializers and mutators
+
+extension Unsigned {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Unsigned.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(
+        unsigned: Int? = nil
+    ) -> Unsigned {
+        return Unsigned(
+            unsigned: unsigned ?? self.unsigned
+        )
+    }
+
+    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: - Ushort
+struct Ushort: Codable, Sendable {
+    let ushort: Int
+
+    enum CodingKeys: String, CodingKey {
+        case ushort = "ushort"
+    }
+}
+
+// MARK: Ushort convenience initializers and mutators
+
+extension Ushort {
+    init(data: Data) throws {
+        self = try newJSONDecoder().decode(Ushort.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(
+        ushort: Int? = nil
+    ) -> Ushort {
+        return Ushort(
+            ushort: ushort ?? self.ushort
+        )
+    }
+
+    func jsonData() throws -> Data {
+        return try newJSONEncoder().encode(self)
+    }
+
+    func jsonString(encoding: String.Encoding = .utf8) throws -> String? {
+        return String(data: try self.jsonData(), encoding: encoding)
+    }
+}
+
 // MARK: - Using
 struct Using: Codable, Sendable {
     let using: Int
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 a7d34bb..0fd0202 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
@@ -683,6 +683,7 @@ export interface Obj3 {
     JsonParser:                 JSONParser;
     JsonReader:                 JSONReader;
     JsonTokenType:              JSONTokenType;
+    LocalDate:                  LocalDate;
     Locale:                     Locale;
     MapEntry:                   MapEntry;
     NO:                         No;
@@ -732,7 +733,6 @@ export interface Obj3 {
     new:                        New;
     newtonsoft:                 Newtonsoft;
     nil:                        Nil;
-    noexcept:                   Noexcept;
 }
 
 export interface Hashable {
@@ -795,6 +795,10 @@ export interface JSONTokenType {
     JsonTokenType: number;
 }
 
+export interface LocalDate {
+    LocalDate: number;
+}
+
 export interface Locale {
     Locale: number;
 }
@@ -987,10 +991,6 @@ export interface Nil {
     nil: number;
 }
 
-export interface Noexcept {
-    noexcept: number;
-}
-
 export interface Obj4 {
     NSError:          NSError;
     NSObject:         NSObject;
@@ -998,11 +998,13 @@ export interface Obj4 {
     NULL:             Null;
     None:             None;
     ObjectMapper:     ObjectMapper;
+    OffsetDateTime:   OffsetDateTime;
+    OffsetTime:       OffsetTime;
     Protocol:         Protocol;
     RegExp:           RegExp;
-    SEL:              Sel;
     dummy:            number;
     noSuchMethod:     NoSuchMethod;
+    noexcept:         Noexcept;
     nonatomic:        Nonatomic;
     none:             NoneClass;
     nonlocal:         Nonlocal;
@@ -1055,8 +1057,6 @@ export interface Obj4 {
     runtimeType:      RuntimeType;
     s:                S;
     sbyte:            Sbyte;
-    sealed:           Sealed;
-    select:           Select;
 }
 
 export interface NSError {
@@ -1083,6 +1083,14 @@ export interface ObjectMapper {
     ObjectMapper: number;
 }
 
+export interface OffsetDateTime {
+    OffsetDateTime: number;
+}
+
+export interface OffsetTime {
+    OffsetTime: number;
+}
+
 export interface Protocol {
     Protocol: number;
 }
@@ -1091,14 +1099,14 @@ export interface RegExp {
     RegExp: string;
 }
 
-export interface Sel {
-    SEL: number;
-}
-
 export interface NoSuchMethod {
     noSuchMethod: number;
 }
 
+export interface Noexcept {
+    noexcept: number;
+}
+
 export interface Nonatomic {
     nonatomic: number;
 }
@@ -1307,17 +1315,10 @@ export interface Sbyte {
     sbyte: number;
 }
 
-export interface Sealed {
-    sealed: number;
-}
-
-export interface Select {
-    select: number;
-}
-
 export interface Obj5 {
     KSerializer:        KSerializer;
     PrimitiveKind:      PrimitiveKind;
+    SEL:                Sel;
     Self:               Self;
     Sendable:           Sendable;
     SerialDescriptor:   SerialDescriptor;
@@ -1335,6 +1336,8 @@ export interface Obj5 {
     Type:               Type;
     UseSerializers:     UseSerializers;
     dummy:              number;
+    sealed:             Sealed;
+    select:             Select;
     self:               SelfClass;
     serialize:          Serialize;
     set:                Set;
@@ -1378,9 +1381,6 @@ export interface Obj5 {
     undefined:          Undefined;
     union:              Union;
     unowned:            Unowned;
-    unsafe:             Unsafe;
-    unsigned:           Unsigned;
-    ushort:             Ushort;
 }
 
 export interface KSerializer {
@@ -1391,6 +1391,10 @@ export interface PrimitiveKind {
     PrimitiveKind: number;
 }
 
+export interface Sel {
+    SEL: number;
+}
+
 export interface Self {
     Self: number;
 }
@@ -1455,6 +1459,14 @@ export interface UseSerializers {
     UseSerializers: number;
 }
 
+export interface Sealed {
+    sealed: number;
+}
+
+export interface Select {
+    select: number;
+}
+
 export interface SelfClass {
     self: number;
 }
@@ -1627,24 +1639,15 @@ export interface Unowned {
     unowned: number;
 }
 
-export interface Unsafe {
-    unsafe: number;
-}
-
-export interface Unsigned {
-    unsigned: number;
-}
-
-export interface Ushort {
-    ushort: number;
-}
-
 export interface Obj6 {
     UUID:           UUID;
     Utf8JsonReader: Utf8JSONReader;
     Utf8JsonWriter: Utf8JSONWriter;
     YES:            Yes;
     dummy:          number;
+    unsafe:         Unsafe;
+    unsigned:       Unsigned;
+    ushort:         Ushort;
     using:          Using;
     var:            Var;
     virtual:        Virtual;
@@ -1677,6 +1680,18 @@ export interface Yes {
     YES: number;
 }
 
+export interface Unsafe {
+    unsafe: number;
+}
+
+export interface Unsigned {
+    unsigned: number;
+}
+
+export interface Ushort {
+    ushort: number;
+}
+
 export interface Using {
     using: number;
 }
@@ -2464,6 +2479,7 @@ const typeMap: any = {
         { json: "JsonParser", js: "JsonParser", typ: r("JSONParser") },
         { json: "JsonReader", js: "JsonReader", typ: r("JSONReader") },
         { json: "JsonTokenType", js: "JsonTokenType", typ: r("JSONTokenType") },
+        { json: "LocalDate", js: "LocalDate", typ: r("LocalDate") },
         { json: "Locale", js: "Locale", typ: r("Locale") },
         { json: "MapEntry", js: "MapEntry", typ: r("MapEntry") },
         { json: "NO", js: "NO", typ: r("No") },
@@ -2513,7 +2529,6 @@ const typeMap: any = {
         { 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) },
@@ -2560,6 +2575,9 @@ const typeMap: any = {
     "JSONTokenType": o([
         { json: "JsonTokenType", js: "JsonTokenType", typ: i(0) },
     ], false),
+    "LocalDate": o([
+        { json: "LocalDate", js: "LocalDate", typ: i(0) },
+    ], false),
     "Locale": o([
         { json: "Locale", js: "Locale", typ: i(0) },
     ], false),
@@ -2704,9 +2722,6 @@ const typeMap: any = {
     "Nil": o([
         { json: "nil", js: "nil", typ: i(0) },
     ], false),
-    "Noexcept": o([
-        { json: "noexcept", js: "noexcept", typ: i(0) },
-    ], false),
     "Obj4": o([
         { json: "NSError", js: "NSError", typ: r("NSError") },
         { json: "NSObject", js: "NSObject", typ: r("NSObject") },
@@ -2714,11 +2729,13 @@ const typeMap: any = {
         { json: "NULL", js: "NULL", typ: r("Null") },
         { json: "None", js: "None", typ: r("None") },
         { json: "ObjectMapper", js: "ObjectMapper", typ: r("ObjectMapper") },
+        { json: "OffsetDateTime", js: "OffsetDateTime", typ: r("OffsetDateTime") },
+        { json: "OffsetTime", js: "OffsetTime", typ: r("OffsetTime") },
         { 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: "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") },
@@ -2771,8 +2788,6 @@ const typeMap: any = {
         { 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),
     "NSError": o([
         { json: "NSError", js: "NSError", typ: i(0) },
@@ -2792,18 +2807,24 @@ const typeMap: any = {
     "ObjectMapper": o([
         { json: "ObjectMapper", js: "ObjectMapper", typ: i(0) },
     ], false),
+    "OffsetDateTime": o([
+        { json: "OffsetDateTime", js: "OffsetDateTime", typ: i(0) },
+    ], false),
+    "OffsetTime": o([
+        { json: "OffsetTime", js: "OffsetTime", 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) },
-    ], 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),
@@ -2960,15 +2981,10 @@ const typeMap: any = {
     "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: "KSerializer", js: "KSerializer", typ: r("KSerializer") },
         { json: "PrimitiveKind", js: "PrimitiveKind", typ: r("PrimitiveKind") },
+        { json: "SEL", js: "SEL", typ: r("Sel") },
         { json: "Self", js: "Self", typ: r("Self") },
         { json: "Sendable", js: "Sendable", typ: r("Sendable") },
         { json: "SerialDescriptor", js: "SerialDescriptor", typ: r("SerialDescriptor") },
@@ -2986,6 +3002,8 @@ const typeMap: any = {
         { json: "Type", js: "Type", typ: r("Type") },
         { json: "UseSerializers", js: "UseSerializers", typ: r("UseSerializers") },
         { json: "dummy", js: "dummy", typ: i(0) },
+        { 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") },
@@ -3029,9 +3047,6 @@ const typeMap: any = {
         { 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") },
     ], false),
     "KSerializer": o([
         { json: "KSerializer", js: "KSerializer", typ: i(0) },
@@ -3039,6 +3054,9 @@ const typeMap: any = {
     "PrimitiveKind": o([
         { json: "PrimitiveKind", js: "PrimitiveKind", typ: i(0) },
     ], false),
+    "Sel": o([
+        { json: "SEL", js: "SEL", typ: i(0) },
+    ], false),
     "Self": o([
         { json: "Self", js: "Self", typ: i(0) },
     ], false),
@@ -3087,6 +3105,12 @@ const typeMap: any = {
     "UseSerializers": o([
         { json: "UseSerializers", js: "UseSerializers", 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) },
     ], false),
@@ -3216,21 +3240,15 @@ const typeMap: any = {
     "Unowned": o([
         { json: "unowned", js: "unowned", typ: i(0) },
     ], false),
-    "Unsafe": o([
-        { json: "unsafe", js: "unsafe", typ: i(0) },
-    ], false),
-    "Unsigned": o([
-        { json: "unsigned", js: "unsigned", typ: i(0) },
-    ], false),
-    "Ushort": o([
-        { json: "ushort", js: "ushort", 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: "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") },
@@ -3258,6 +3276,15 @@ const typeMap: any = {
     "Yes": o([
         { json: "YES", js: "YES", typ: i(0) },
     ], false),
+    "Unsafe": o([
+        { json: "unsafe", js: "unsafe", typ: i(0) },
+    ], false),
+    "Unsigned": o([
+        { json: "unsigned", js: "unsigned", typ: i(0) },
+    ], false),
+    "Ushort": o([
+        { json: "ushort", js: "ushort", typ: i(0) },
+    ], false),
     "Using": o([
         { json: "using", js: "using", 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 abeb673..3b687ff 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
@@ -683,6 +683,7 @@ export type Obj3 = {
     JsonParser:                 JSONParser;
     JsonReader:                 JSONReader;
     JsonTokenType:              JSONTokenType;
+    LocalDate:                  LocalDate;
     Locale:                     Locale;
     MapEntry:                   MapEntry;
     NO:                         No;
@@ -732,7 +733,6 @@ export type Obj3 = {
     new:                        New;
     newtonsoft:                 Newtonsoft;
     nil:                        Nil;
-    noexcept:                   Noexcept;
 }
 
 export type Hashable = {
@@ -795,6 +795,10 @@ export type JSONTokenType = {
     JsonTokenType: number;
 }
 
+export type LocalDate = {
+    LocalDate: number;
+}
+
 export type Locale = {
     Locale: number;
 }
@@ -987,10 +991,6 @@ export type Nil = {
     nil: number;
 }
 
-export type Noexcept = {
-    noexcept: number;
-}
-
 export type Obj4 = {
     NSError:          NSError;
     NSObject:         NSObject;
@@ -998,11 +998,13 @@ export type Obj4 = {
     NULL:             Null;
     None:             None;
     ObjectMapper:     ObjectMapper;
+    OffsetDateTime:   OffsetDateTime;
+    OffsetTime:       OffsetTime;
     Protocol:         Protocol;
     RegExp:           RegExp;
-    SEL:              Sel;
     dummy:            number;
     noSuchMethod:     NoSuchMethod;
+    noexcept:         Noexcept;
     nonatomic:        Nonatomic;
     none:             NoneClass;
     nonlocal:         Nonlocal;
@@ -1055,8 +1057,6 @@ export type Obj4 = {
     runtimeType:      RuntimeType;
     s:                S;
     sbyte:            Sbyte;
-    sealed:           Sealed;
-    select:           Select;
 }
 
 export type NSError = {
@@ -1083,6 +1083,14 @@ export type ObjectMapper = {
     ObjectMapper: number;
 }
 
+export type OffsetDateTime = {
+    OffsetDateTime: number;
+}
+
+export type OffsetTime = {
+    OffsetTime: number;
+}
+
 export type Protocol = {
     Protocol: number;
 }
@@ -1091,14 +1099,14 @@ export type RegExp = {
     RegExp: string;
 }
 
-export type Sel = {
-    SEL: number;
-}
-
 export type NoSuchMethod = {
     noSuchMethod: number;
 }
 
+export type Noexcept = {
+    noexcept: number;
+}
+
 export type Nonatomic = {
     nonatomic: number;
 }
@@ -1307,17 +1315,10 @@ export type Sbyte = {
     sbyte: number;
 }
 
-export type Sealed = {
-    sealed: number;
-}
-
-export type Select = {
-    select: number;
-}
-
 export type Obj5 = {
     KSerializer:        KSerializer;
     PrimitiveKind:      PrimitiveKind;
+    SEL:                Sel;
     Self:               Self;
     Sendable:           Sendable;
     SerialDescriptor:   SerialDescriptor;
@@ -1335,6 +1336,8 @@ export type Obj5 = {
     Type:               Type;
     UseSerializers:     UseSerializers;
     dummy:              number;
+    sealed:             Sealed;
+    select:             Select;
     self:               SelfClass;
     serialize:          Serialize;
     set:                Set;
@@ -1378,9 +1381,6 @@ export type Obj5 = {
     undefined:          Undefined;
     union:              Union;
     unowned:            Unowned;
-    unsafe:             Unsafe;
-    unsigned:           Unsigned;
-    ushort:             Ushort;
 }
 
 export type KSerializer = {
@@ -1391,6 +1391,10 @@ export type PrimitiveKind = {
     PrimitiveKind: number;
 }
 
+export type Sel = {
+    SEL: number;
+}
+
 export type Self = {
     Self: number;
 }
@@ -1455,6 +1459,14 @@ export type UseSerializers = {
     UseSerializers: number;
 }
 
+export type Sealed = {
+    sealed: number;
+}
+
+export type Select = {
+    select: number;
+}
+
 export type SelfClass = {
     self: number;
 }
@@ -1627,24 +1639,15 @@ export type Unowned = {
     unowned: number;
 }
 
-export type Unsafe = {
-    unsafe: number;
-}
-
-export type Unsigned = {
-    unsigned: number;
-}
-
-export type Ushort = {
-    ushort: number;
-}
-
 export type Obj6 = {
     UUID:           UUID;
     Utf8JsonReader: Utf8JSONReader;
     Utf8JsonWriter: Utf8JSONWriter;
     YES:            Yes;
     dummy:          number;
+    unsafe:         Unsafe;
+    unsigned:       Unsigned;
+    ushort:         Ushort;
     using:          Using;
     var:            Var;
     virtual:        Virtual;
@@ -1677,6 +1680,18 @@ export type Yes = {
     YES: number;
 }
 
+export type Unsafe = {
+    unsafe: number;
+}
+
+export type Unsigned = {
+    unsigned: number;
+}
+
+export type Ushort = {
+    ushort: number;
+}
+
 export type Using = {
     using: number;
 }
@@ -2464,6 +2479,7 @@ const typeMap: any = {
         { json: "JsonParser", js: "JsonParser", typ: r("JSONParser") },
         { json: "JsonReader", js: "JsonReader", typ: r("JSONReader") },
         { json: "JsonTokenType", js: "JsonTokenType", typ: r("JSONTokenType") },
+        { json: "LocalDate", js: "LocalDate", typ: r("LocalDate") },
         { json: "Locale", js: "Locale", typ: r("Locale") },
         { json: "MapEntry", js: "MapEntry", typ: r("MapEntry") },
         { json: "NO", js: "NO", typ: r("No") },
@@ -2513,7 +2529,6 @@ const typeMap: any = {
         { 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) },
@@ -2560,6 +2575,9 @@ const typeMap: any = {
     "JSONTokenType": o([
         { json: "JsonTokenType", js: "JsonTokenType", typ: i(0) },
     ], false),
+    "LocalDate": o([
+        { json: "LocalDate", js: "LocalDate", typ: i(0) },
+    ], false),
     "Locale": o([
         { json: "Locale", js: "Locale", typ: i(0) },
     ], false),
@@ -2704,9 +2722,6 @@ const typeMap: any = {
     "Nil": o([
         { json: "nil", js: "nil", typ: i(0) },
     ], false),
-    "Noexcept": o([
-        { json: "noexcept", js: "noexcept", typ: i(0) },
-    ], false),
     "Obj4": o([
         { json: "NSError", js: "NSError", typ: r("NSError") },
         { json: "NSObject", js: "NSObject", typ: r("NSObject") },
@@ -2714,11 +2729,13 @@ const typeMap: any = {
         { json: "NULL", js: "NULL", typ: r("Null") },
         { json: "None", js: "None", typ: r("None") },
         { json: "ObjectMapper", js: "ObjectMapper", typ: r("ObjectMapper") },
+        { json: "OffsetDateTime", js: "OffsetDateTime", typ: r("OffsetDateTime") },
+        { json: "OffsetTime", js: "OffsetTime", typ: r("OffsetTime") },
         { 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: "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") },
@@ -2771,8 +2788,6 @@ const typeMap: any = {
         { 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),
     "NSError": o([
         { json: "NSError", js: "NSError", typ: i(0) },
@@ -2792,18 +2807,24 @@ const typeMap: any = {
     "ObjectMapper": o([
         { json: "ObjectMapper", js: "ObjectMapper", typ: i(0) },
     ], false),
+    "OffsetDateTime": o([
+        { json: "OffsetDateTime", js: "OffsetDateTime", typ: i(0) },
+    ], false),
+    "OffsetTime": o([
+        { json: "OffsetTime", js: "OffsetTime", 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) },
-    ], 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),
@@ -2960,15 +2981,10 @@ const typeMap: any = {
     "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: "KSerializer", js: "KSerializer", typ: r("KSerializer") },
         { json: "PrimitiveKind", js: "PrimitiveKind", typ: r("PrimitiveKind") },
+        { json: "SEL", js: "SEL", typ: r("Sel") },
         { json: "Self", js: "Self", typ: r("Self") },
         { json: "Sendable", js: "Sendable", typ: r("Sendable") },
         { json: "SerialDescriptor", js: "SerialDescriptor", typ: r("SerialDescriptor") },
@@ -2986,6 +3002,8 @@ const typeMap: any = {
         { json: "Type", js: "Type", typ: r("Type") },
         { json: "UseSerializers", js: "UseSerializers", typ: r("UseSerializers") },
         { json: "dummy", js: "dummy", typ: i(0) },
+        { 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") },
@@ -3029,9 +3047,6 @@ const typeMap: any = {
         { 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") },
     ], false),
     "KSerializer": o([
         { json: "KSerializer", js: "KSerializer", typ: i(0) },
@@ -3039,6 +3054,9 @@ const typeMap: any = {
     "PrimitiveKind": o([
         { json: "PrimitiveKind", js: "PrimitiveKind", typ: i(0) },
     ], false),
+    "Sel": o([
+        { json: "SEL", js: "SEL", typ: i(0) },
+    ], false),
     "Self": o([
         { json: "Self", js: "Self", typ: i(0) },
     ], false),
@@ -3087,6 +3105,12 @@ const typeMap: any = {
     "UseSerializers": o([
         { json: "UseSerializers", js: "UseSerializers", 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) },
     ], false),
@@ -3216,21 +3240,15 @@ const typeMap: any = {
     "Unowned": o([
         { json: "unowned", js: "unowned", typ: i(0) },
     ], false),
-    "Unsafe": o([
-        { json: "unsafe", js: "unsafe", typ: i(0) },
-    ], false),
-    "Unsigned": o([
-        { json: "unsigned", js: "unsigned", typ: i(0) },
-    ], false),
-    "Ushort": o([
-        { json: "ushort", js: "ushort", 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: "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") },
@@ -3258,6 +3276,15 @@ const typeMap: any = {
     "Yes": o([
         { json: "YES", js: "YES", typ: i(0) },
     ], false),
+    "Unsafe": o([
+        { json: "unsafe", js: "unsafe", typ: i(0) },
+    ], false),
+    "Unsigned": o([
+        { json: "unsigned", js: "unsigned", typ: i(0) },
+    ], false),
+    "Ushort": o([
+        { json: "ushort", js: "ushort", typ: i(0) },
+    ], false),
     "Using": o([
         { json: "using", js: "using", 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 cd9445d..640f7ea 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
@@ -79,8 +79,23 @@ export class Using extends S.Class<Using>("Using")({
     "using": S.Int,
 }) {}
 
+export class Ushort extends S.Class<Ushort>("Ushort")({
+    "ushort": S.Int,
+}) {}
+
+export class Unsigned extends S.Class<Unsigned>("Unsigned")({
+    "unsigned": S.Int,
+}) {}
+
+export class Unsafe extends S.Class<Unsafe>("Unsafe")({
+    "unsafe": S.Int,
+}) {}
+
 export class Obj6 extends S.Class<Obj6>("Obj6")({
     "dummy": S.Int,
+    "unsafe": Unsafe,
+    "unsigned": Unsigned,
+    "ushort": Ushort,
     "using": Using,
     "Utf8JsonReader": Utf8JsonReader,
     "Utf8JsonWriter": Utf8JsonWriter,
@@ -101,22 +116,10 @@ export class Obj6 extends S.Class<Obj6>("Obj6")({
     "yield": Yield,
 }) {}
 
-export class Ushort extends S.Class<Ushort>("Ushort")({
-    "ushort": S.Int,
-}) {}
-
 export class UseSerializers extends S.Class<UseSerializers>("UseSerializers")({
     "UseSerializers": S.Int,
 }) {}
 
-export class Unsigned extends S.Class<Unsigned>("Unsigned")({
-    "unsigned": S.Int,
-}) {}
-
-export class Unsafe extends S.Class<Unsafe>("Unsafe")({
-    "unsafe": S.Int,
-}) {}
-
 export class Unowned extends S.Class<Unowned>("Unowned")({
     "unowned": S.Int,
 }) {}
@@ -338,6 +341,18 @@ 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 PrimitiveKind extends S.Class<PrimitiveKind>("PrimitiveKind")({
     "PrimitiveKind": S.Int,
 }) {}
@@ -365,6 +380,9 @@ export class Obj5 extends S.Class<Obj5>("Obj5")({
     "true": TrueClass,
     "type": TypeClass,
     "PrimitiveKind": PrimitiveKind,
+    "sealed": Sealed,
+    "SEL": Sel,
+    "select": Select,
     "Self": Self,
     "Sendable": Sendable,
     "SerialDescriptor": SerialDescriptor,
@@ -420,25 +438,10 @@ export class Obj5 extends S.Class<Obj5>("Obj5")({
     "undefined": Undefined,
     "union": Union,
     "unowned": Unowned,
-    "unsafe": Unsafe,
-    "unsigned": Unsigned,
     "UseSerializers": UseSerializers,
-    "ushort": Ushort,
 }) {}
 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,
 }) {}
@@ -607,6 +610,14 @@ export class Oneway extends S.Class<Oneway>("Oneway")({
     "oneway": S.Int,
 }) {}
 
+export class OffsetTime extends S.Class<OffsetTime>("OffsetTime")({
+    "OffsetTime": S.Int,
+}) {}
+
+export class OffsetDateTime extends S.Class<OffsetDateTime>("OffsetDateTime")({
+    "OffsetDateTime": S.Int,
+}) {}
+
 export class Of extends S.Class<Of>("Of")({
     "of": S.Int,
 }) {}
@@ -679,6 +690,10 @@ 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,
 }) {}
@@ -686,6 +701,7 @@ export class NoSuchMethod extends S.Class<NoSuchMethod>("NoSuchMethod")({
 export class Obj4 extends S.Class<Obj4>("Obj4")({
     "dummy": S.Int,
     "noSuchMethod": NoSuchMethod,
+    "noexcept": Noexcept,
     "nonatomic": Nonatomic,
     "None": None,
     "nonlocal": Nonlocal,
@@ -704,6 +720,8 @@ export class Obj4 extends S.Class<Obj4>("Obj4")({
     "object": ObjectClass,
     "ObjectMapper": ObjectMapper,
     "of": Of,
+    "OffsetDateTime": OffsetDateTime,
+    "OffsetTime": OffsetTime,
     "oneway": Oneway,
     "open": Open,
     "operator": Operator,
@@ -746,13 +764,6 @@ export class Obj4 extends S.Class<Obj4>("Obj4")({
     "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")({
@@ -815,6 +826,10 @@ export class Locale extends S.Class<Locale>("Locale")({
     "Locale": S.Int,
 }) {}
 
+export class LocalDate extends S.Class<LocalDate>("LocalDate")({
+    "LocalDate": S.Int,
+}) {}
+
 export class List extends S.Class<List>("List")({
     "list": S.Int,
 }) {}
@@ -1057,6 +1072,7 @@ export class Obj3 extends S.Class<Obj3>("Obj3")({
     "left": Left,
     "let": Let,
     "list": List,
+    "LocalDate": LocalDate,
     "Locale": Locale,
     "lock": Lock,
     "long": Long,
@@ -1072,7 +1088,6 @@ export class Obj3 extends S.Class<Obj3>("Obj3")({
     "newtonsoft": Newtonsoft,
     "nil": Nil,
     "NO": No,
-    "noexcept": Noexcept,
 }) {}
 
 export class FalseClass extends S.Class<FalseClass>("FalseClass")({
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 2c30235..d752c8b 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
@@ -887,6 +887,11 @@ export const ListSchema = z.object({
 });
 export type List = z.infer<typeof ListSchema>;
 
+export const LocalDateSchema = z.object({
+    "LocalDate": z.number().int(),
+});
+export type LocalDate = z.infer<typeof LocalDateSchema>;
+
 export const LocaleSchema = z.object({
     "Locale": z.number().int(),
 });
@@ -962,16 +967,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(),
 });
@@ -1062,6 +1067,16 @@ export const OfSchema = z.object({
 });
 export type Of = z.infer<typeof OfSchema>;
 
+export const OffsetDateTimeSchema = z.object({
+    "OffsetDateTime": z.number().int(),
+});
+export type OffsetDateTime = z.infer<typeof OffsetDateTimeSchema>;
+
+export const OffsetTimeSchema = z.object({
+    "OffsetTime": z.number().int(),
+});
+export type OffsetTime = z.infer<typeof OffsetTimeSchema>;
+
 export const OnewaySchema = z.object({
     "oneway": z.number().int(),
 });
@@ -1272,21 +1287,6 @@ export const SbyteSchema = z.object({
 });
 export type Sbyte = z.infer<typeof SbyteSchema>;
 
-export const SealedSchema = z.object({
-    "sealed": z.number().int(),
-});
-export type Sealed = z.infer<typeof SealedSchema>;
-
-export const SelSchema = z.object({
-    "SEL": z.number().int(),
-});
-export type Sel = z.infer<typeof SelSchema>;
-
-export const SelectSchema = z.object({
-    "select": z.number().int(),
-});
-export type Select = z.infer<typeof SelectSchema>;
-
 export const KSerializerSchema = z.object({
     "KSerializer": z.number().int(),
 });
@@ -1312,6 +1312,21 @@ export const PrimitiveKindSchema = z.object({
 });
 export type PrimitiveKind = z.infer<typeof PrimitiveKindSchema>;
 
+export const SealedSchema = z.object({
+    "sealed": z.number().int(),
+});
+export type Sealed = z.infer<typeof SealedSchema>;
+
+export const SelSchema = z.object({
+    "SEL": z.number().int(),
+});
+export type Sel = z.infer<typeof SelSchema>;
+
+export const SelectSchema = z.object({
+    "select": z.number().int(),
+});
+export type Select = z.infer<typeof SelectSchema>;
+
 export const SelfSchema = z.object({
     "Self": z.number().int(),
 });
@@ -1587,6 +1602,11 @@ export const UnownedSchema = z.object({
 });
 export type Unowned = z.infer<typeof UnownedSchema>;
 
+export const UseSerializersSchema = z.object({
+    "UseSerializers": z.number().int(),
+});
+export type UseSerializers = z.infer<typeof UseSerializersSchema>;
+
 export const UnsafeSchema = z.object({
     "unsafe": z.number().int(),
 });
@@ -1597,11 +1617,6 @@ export const UnsignedSchema = z.object({
 });
 export type Unsigned = z.infer<typeof UnsignedSchema>;
 
-export const UseSerializersSchema = z.object({
-    "UseSerializers": z.number().int(),
-});
-export type UseSerializers = z.infer<typeof UseSerializersSchema>;
-
 export const UshortSchema = z.object({
     "ushort": z.number().int(),
 });
@@ -1885,6 +1900,7 @@ export const Obj3Schema = z.object({
     "left": LeftSchema,
     "let": LetSchema,
     "list": ListSchema,
+    "LocalDate": LocalDateSchema,
     "Locale": LocaleSchema,
     "lock": LockSchema,
     "long": LongSchema,
@@ -1900,13 +1916,13 @@ export const Obj3Schema = z.object({
     "newtonsoft": NewtonsoftSchema,
     "nil": NilSchema,
     "NO": NoSchema,
-    "noexcept": NoexceptSchema,
 });
 export type Obj3 = z.infer<typeof Obj3Schema>;
 
 export const Obj4Schema = z.object({
     "dummy": z.number().int(),
     "noSuchMethod": NoSuchMethodSchema,
+    "noexcept": NoexceptSchema,
     "nonatomic": NonatomicSchema,
     "None": NoneSchema,
     "nonlocal": NonlocalSchema,
@@ -1925,6 +1941,8 @@ export const Obj4Schema = z.object({
     "object": ObjectClassSchema,
     "ObjectMapper": ObjectMapperSchema,
     "of": OfSchema,
+    "OffsetDateTime": OffsetDateTimeSchema,
+    "OffsetTime": OffsetTimeSchema,
     "oneway": OnewaySchema,
     "open": OpenSchema,
     "operator": OperatorSchema,
@@ -1967,9 +1985,6 @@ export const Obj4Schema = z.object({
     "runtimeType": RuntimeTypeSchema,
     "s": SSchema,
     "sbyte": SbyteSchema,
-    "sealed": SealedSchema,
-    "SEL": SelSchema,
-    "select": SelectSchema,
 });
 export type Obj4 = z.infer<typeof Obj4Schema>;
 
@@ -1980,6 +1995,9 @@ export const Obj5Schema = z.object({
     "true": TrueClassSchema,
     "type": TypeClassSchema,
     "PrimitiveKind": PrimitiveKindSchema,
+    "sealed": SealedSchema,
+    "SEL": SelSchema,
+    "select": SelectSchema,
     "Self": SelfSchema,
     "Sendable": SendableSchema,
     "SerialDescriptor": SerialDescriptorSchema,
@@ -2035,15 +2053,15 @@ export const Obj5Schema = z.object({
     "undefined": UndefinedSchema,
     "union": UnionSchema,
     "unowned": UnownedSchema,
-    "unsafe": UnsafeSchema,
-    "unsigned": UnsignedSchema,
     "UseSerializers": UseSerializersSchema,
-    "ushort": UshortSchema,
 });
 export type Obj5 = z.infer<typeof Obj5Schema>;
 
 export const Obj6Schema = z.object({
     "dummy": z.number().int(),
+    "unsafe": UnsafeSchema,
+    "unsigned": UnsignedSchema,
+    "ushort": UshortSchema,
     "using": UsingSchema,
     "Utf8JsonReader": Utf8JsonReaderSchema,
     "Utf8JsonWriter": Utf8JsonWriterSchema,
